From b65bddc1b3b76f5e9cd82bcd7cef23712d2d847f Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 10 Aug 2020 02:30:25 +0200 Subject: [PATCH 001/127] multi-vfo --- src/dsp/demodulator.h | 8 +- src/main.cpp | 2 + src/main_window.cpp | 89 +++++++++++----- src/vfo_manager.h | 5 + src/waterfall.cpp | 233 ++++++++++++++++++++++++++++-------------- src/waterfall.h | 54 +++++++--- 6 files changed, 268 insertions(+), 123 deletions(-) create mode 100644 src/vfo_manager.h diff --git a/src/dsp/demodulator.h b/src/dsp/demodulator.h index 30600de1..059faedf 100644 --- a/src/dsp/demodulator.h +++ b/src/dsp/demodulator.h @@ -14,15 +14,13 @@ #define FAST_ATAN2_COEF2 3.0f * FAST_ATAN2_COEF1 inline float fast_arctan2(float y, float x) { - float abs_y = fabs(y)+1e-10; + float abs_y = fabs(y) + (1e-10); float r, angle; - if (x>=0) - { + if (x>=0) { r = (x - abs_y) / (x + abs_y); angle = FAST_ATAN2_COEF1 - FAST_ATAN2_COEF1 * r; } - else - { + else { r = (x + abs_y) / (abs_y - x); angle = FAST_ATAN2_COEF2 - FAST_ATAN2_COEF1 * r; } diff --git a/src/main.cpp b/src/main.cpp index 29c7323a..8902e10f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -78,6 +78,8 @@ int main() { //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 2"); //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 3"); + + spdlog::info("Ready."); // Main loop diff --git a/src/main_window.cpp b/src/main_window.cpp index b70f9e21..38e1f1d9 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -40,8 +40,20 @@ void windowInit() { int sampleRate = 8000000; wtf.setBandwidth(sampleRate); wtf.setCenterFrequency(90500000); - wtf.setVFOBandwidth(200000); - wtf.setVFOOffset(0); + // wtf.setVFOBandwidth(200000); + // wtf.setVFOOffset(0); + + wtf.vfos["Radio"] = new ImGui::WaterfallVFO; + wtf.vfos["Radio"]->setReference(ImGui::WaterfallVFO::REF_CENTER); + wtf.vfos["Radio"]->setBandwidth(200000); + wtf.vfos["Radio"]->setOffset(0); + + wtf.vfos["Radio 2"] = new ImGui::WaterfallVFO; + wtf.vfos["Radio 2"]->setReference(ImGui::WaterfallVFO::REF_CENTER); + wtf.vfos["Radio 2"]->setBandwidth(200000); + wtf.vfos["Radio 2"]->setOffset(300000); + + wtf.selectedVFO = "Radio"; fSel.init(); fSel.setFrequency(90500000); @@ -71,14 +83,20 @@ int sampleRate = 1000000; bool playing = false; watcher dcbias(false, false); watcher bandPlanEnabled(true, false); +bool selectedVFOChanged = false; void setVFO(float freq) { - float currentOff = wtf.getVFOOfset(); - float currentTune = wtf.getCenterFrequency() + currentOff; + if (wtf.selectedVFO == "") { + return; + } + ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; + + float currentOff = vfo->centerOffset; + float currentTune = wtf.getCenterFrequency() + vfo->generalOffset; float delta = freq - currentTune; float newVFO = currentOff + delta; - float vfoBW = wtf.getVFOBandwidth(); + float vfoBW = vfo->bandwidth; float vfoBottom = newVFO - (vfoBW / 2.0f); float vfoTop = newVFO + (vfoBW / 2.0f); @@ -95,7 +113,7 @@ void setVFO(float freq) { // VFO still fints in the view if (vfoBottom > viewBottom && vfoTop < viewTop) { sigPath.setVFOFrequency(newVFO); - wtf.setVFOOffset(newVFO); + vfo->setCenterOffset(newVFO); return; } @@ -104,7 +122,7 @@ void setVFO(float freq) { wtf.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); sigPath.setVFOFrequency(newVFOOffset); - wtf.setVFOOffset(newVFOOffset); + vfo->setCenterOffset(newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); return; @@ -115,7 +133,7 @@ void setVFO(float freq) { wtf.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); sigPath.setVFOFrequency(newVFOOffset); - wtf.setVFOOffset(newVFOOffset); + vfo->setCenterOffset(newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); return; @@ -128,7 +146,7 @@ void setVFO(float freq) { float newViewTop = newViewOff + (viewBW / 2.0f); if (newViewBottom > bottom) { - wtf.setVFOOffset(newVFO); + vfo->setCenterOffset(newVFO); wtf.setViewOffset(newViewOff); sigPath.setVFOFrequency(newVFO); return; @@ -137,7 +155,7 @@ void setVFO(float freq) { wtf.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); sigPath.setVFOFrequency(newVFOOffset); - wtf.setVFOOffset(newVFOOffset); + vfo->setCenterOffset(newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); } @@ -147,7 +165,7 @@ void setVFO(float freq) { float newViewTop = newViewOff + (viewBW / 2.0f); if (newViewTop < top) { - wtf.setVFOOffset(newVFO); + vfo->setCenterOffset(newVFO); wtf.setViewOffset(newViewOff); sigPath.setVFOFrequency(newVFO); return; @@ -156,13 +174,20 @@ void setVFO(float freq) { wtf.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); sigPath.setVFOFrequency(newVFOOffset); - wtf.setVFOOffset(newVFOOffset); + vfo->setCenterOffset(newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); } } void drawWindow() { + ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; + + if (selectedVFOChanged) { + selectedVFOChanged = false; + fSel.setFrequency(vfo->generalOffset + wtf.getCenterFrequency()); + } + if (fSel.frequencyChanged) { fSel.frequencyChanged = false; setVFO(fSel.frequency); @@ -171,12 +196,12 @@ void drawWindow() { if (wtf.centerFreqMoved) { wtf.centerFreqMoved = false; soapy.setFrequency(wtf.getCenterFrequency()); - fSel.setFrequency(wtf.getCenterFrequency() + wtf.getVFOOfset()); + fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); } if (wtf.vfoFreqChanged) { wtf.vfoFreqChanged = false; - sigPath.setVFOFrequency(wtf.getVFOOfset()); - fSel.setFrequency(wtf.getCenterFrequency() + wtf.getVFOOfset()); + sigPath.setVFOFrequency(vfo->centerOffset); + fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); } if (volume.changed()) { @@ -303,42 +328,41 @@ void drawWindow() { ImGui::Columns(4, "RadioModeColumns", false); if (ImGui::RadioButton("NFM", demod == 0) && demod != 0) { sigPath.setDemodulator(SignalPath::DEMOD_NFM); demod = 0; - wtf.setVFOBandwidth(12500); - wtf.setVFOReference(ImGui::WaterFall::REF_CENTER); + vfo->setBandwidth(12500); + vfo->setReference(ImGui::WaterFall::REF_CENTER); } if (ImGui::RadioButton("WFM", demod == 1) && demod != 1) { sigPath.setDemodulator(SignalPath::DEMOD_FM); demod = 1; - wtf.setVFOBandwidth(200000); - wtf.setVFOReference(ImGui::WaterFall::REF_CENTER); + vfo->setBandwidth(200000); + vfo->setReference(ImGui::WaterFall::REF_CENTER); } ImGui::NextColumn(); if (ImGui::RadioButton("AM", demod == 2) && demod != 2) { sigPath.setDemodulator(SignalPath::DEMOD_AM); demod = 2; - wtf.setVFOBandwidth(12500); - wtf.setVFOReference(ImGui::WaterFall::REF_CENTER); + vfo->setBandwidth(12500); + vfo->setReference(ImGui::WaterFall::REF_CENTER); } if (ImGui::RadioButton("DSB", demod == 3) && demod != 3) { demod = 3; }; ImGui::NextColumn(); if (ImGui::RadioButton("USB", demod == 4) && demod != 4) { sigPath.setDemodulator(SignalPath::DEMOD_USB); demod = 4; - wtf.setVFOBandwidth(3000); - wtf.setVFOReference(ImGui::WaterFall::REF_LOWER); + vfo->setBandwidth(3000); + vfo->setReference(ImGui::WaterFall::REF_LOWER); } if (ImGui::RadioButton("CW", demod == 5) && demod != 5) { demod = 5; }; ImGui::NextColumn(); if (ImGui::RadioButton("LSB", demod == 6) && demod != 6) { sigPath.setDemodulator(SignalPath::DEMOD_LSB); demod = 6; - wtf.setVFOBandwidth(3000); - wtf.setVFOReference(ImGui::WaterFall::REF_UPPER); + vfo->setBandwidth(3000); + vfo->setReference(ImGui::WaterFall::REF_UPPER); } if (ImGui::RadioButton("RAW", demod == 7) && demod != 7) { demod = 7; }; ImGui::Columns(1, "EndRadioModeColumns", false); - //ImGui::InputInt("Frequency (kHz)", &freq); ImGui::Checkbox("DC Bias Removal", &dcbias.val); ImGui::EndGroup(); @@ -363,6 +387,17 @@ void drawWindow() { if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); + ImGui::Text("Center Frequency: %.1f FPS", wtf.getCenterFrequency()); + + if (ImGui::Button("Radio##__sdsd__")) { + wtf.selectedVFO = "Radio"; + selectedVFOChanged = true; + } + ImGui::SameLine(); + if (ImGui::Button("Radio 2")) { + wtf.selectedVFO = "Radio 2"; + selectedVFOChanged = true; + } } ImGui::EndChild(); @@ -391,7 +426,7 @@ void drawWindow() { if (bw.changed()) { wtf.setViewBandwidth(bw.val); - wtf.setViewOffset(wtf.getVFOOfset()); + wtf.setViewOffset(vfo->centerOffset); } wtf.setFFTMin(fftMin); diff --git a/src/vfo_manager.h b/src/vfo_manager.h new file mode 100644 index 00000000..20f8807d --- /dev/null +++ b/src/vfo_manager.h @@ -0,0 +1,5 @@ +#pragma once + +namespace vfoman { + +}; \ No newline at end of file diff --git a/src/waterfall.cpp b/src/waterfall.cpp index ab2124c7..0664985c 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -173,38 +173,35 @@ namespace ImGui { ImVec2(widgetPos.x + 50 + dataWidth, widgetPos.y + fftHeight + 51 + waterfallHeight)); } - void WaterFall::drawVFO() { - float width = (vfoBandwidth / viewBandwidth) * (float)dataWidth; - int center = roundf((((vfoOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); - int left; - int right; + void WaterFall::drawVFOs() { + for (auto const& [name, vfo] : vfos) { + if (vfo->redrawRequired) { + vfo->redrawRequired = false; + vfo->updateDrawingVars(viewBandwidth, dataWidth, viewOffset, widgetPos, fftHeight); + } + vfo->draw(window, name == selectedVFO); + } + } + void WaterFall::processInputs() { ImVec2 mousePos = ImGui::GetMousePos(); ImVec2 drag = ImGui::GetMouseDragDelta(ImGuiMouseButton_Left); ImVec2 dragOrigin(mousePos.x - drag.x, mousePos.y - drag.y); + if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { + spdlog::info("Clicked!"); + } + bool freqDrag = ImGui::IsMouseDragging(ImGuiMouseButton_Left) && IS_IN_AREA(dragOrigin, freqAreaMin, freqAreaMax); - if (ImGui::IsMouseDown(ImGuiMouseButton_Left) && IS_IN_AREA(mousePos, fftAreaMin, fftAreaMax) && !freqDrag) { - int refCenter = mousePos.x - (widgetPos.x + 50); - if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { - vfoOffset = ((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset; - center = refCenter; - } - vfoFreqChanged = true; - } - - // if (vfoRef == REF_CENTER) { - // left = center - (width / 2.0f) + 1; - // right = center + (width / 2.0f) + 1; - // } - // if (vfoRef == REF_LOWER) { - // left = center; - // right = center + width + 1; - // } - // if (vfoRef == REF_UPPER) { - // left = center; - // right = center - width + 1; + // TODO: Process VFO drag + + // if (ImGui::IsMouseDown(ImGuiMouseButton_Left) && IS_IN_AREA(mousePos, fftAreaMin, fftAreaMax) && !freqDrag) { + // int refCenter = mousePos.x - (widgetPos.x + 50); + // if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { + // vfoOffset = ((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset; + // } + // vfoFreqChanged = true; // } if (freqDrag) { @@ -234,35 +231,6 @@ namespace ImGui { else { lastDrag = 0; } - - left = center - (width / 2.0f) + 1; - right = center + (width / 2.0f) + 1; - - if ((left < 0 && right < 0) || (left >= dataWidth && right >= dataWidth)) { - return; - } - left = std::clamp(left, 0, dataWidth - 1); - right = std::clamp(right, 0, dataWidth - 1); - window->DrawList->AddRectFilled(ImVec2(widgetPos.x + 50 + left, widgetPos.y + 10), - ImVec2(widgetPos.x + 50 + right, widgetPos.y + fftHeight + 10), IM_COL32(255, 255, 255, 50)); - if (center >= 0 && center < dataWidth) { - if (vfoRef == REF_CENTER) { - window->DrawList->AddLine(ImVec2(widgetPos.x + 50 + center, widgetPos.y + 9), - ImVec2(widgetPos.x + 50 + center, widgetPos.y + fftHeight + 9), - IM_COL32(255, 0, 0, 255), 1.0f); - } - else if (vfoRef == REF_LOWER) { - window->DrawList->AddLine(ImVec2(widgetPos.x + 50 + left, widgetPos.y + 9), - ImVec2(widgetPos.x + 50 + left, widgetPos.y + fftHeight + 9), - IM_COL32(255, 0, 0, 255), 1.0f); - } - else if (vfoRef == REF_UPPER) { - window->DrawList->AddLine(ImVec2(widgetPos.x + 50 + right, widgetPos.y + 9), - ImVec2(widgetPos.x + 50 + right, widgetPos.y + fftHeight + 9), - IM_COL32(255, 0, 0, 255), 1.0f); - } - - } } void WaterFall::updateWaterfallFb() { @@ -382,6 +350,7 @@ namespace ImGui { vRange = 10.0f; updateWaterfallFb(); + updateAllVFOs(); } void WaterFall::draw() { @@ -408,9 +377,11 @@ namespace ImGui { window->DrawList->AddRect(widgetPos, widgetEndPos, IM_COL32( 50, 50, 50, 255 )); window->DrawList->AddLine(ImVec2(widgetPos.x, widgetPos.y + fftHeight + 50), ImVec2(widgetPos.x + widgetSize.x, widgetPos.y + fftHeight + 50), IM_COL32(50, 50, 50, 255), 1.0f); + processInputs(); + drawFFT(); drawWaterfall(); - drawVFO(); + drawVFOs(); if (bandplan != NULL) { drawBandPlan(); } @@ -475,6 +446,7 @@ namespace ImGui { centerFreq = freq; lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0f); upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); + updateAllVFOs(); } float WaterFall::getCenterFrequency() { @@ -485,35 +457,13 @@ namespace ImGui { float currentRatio = viewBandwidth / wholeBandwidth; wholeBandwidth = bandWidth; setViewBandwidth(bandWidth * currentRatio); + updateAllVFOs(); } float WaterFall::getBandwidth() { return wholeBandwidth; } - void WaterFall::setVFOOffset(float offset) { - vfoOffset = offset; - } - - float WaterFall::getVFOOfset() { - return vfoOffset; - } - - void WaterFall::setVFOBandwidth(float bandwidth) { - vfoBandwidth = bandwidth; - } - - float WaterFall::getVFOBandwidth() { - return vfoBandwidth; - } - - void WaterFall::setVFOReference(int ref) { - if (ref < 0 || ref >= _REF_COUNT) { - return; - } - vfoRef = ref; - } - void WaterFall::setViewBandwidth(float bandWidth) { if (bandWidth == viewBandwidth) { return; @@ -531,6 +481,7 @@ namespace ImGui { upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); range = findBestRange(bandWidth, maxHSteps); updateWaterfallFb(); + updateAllVFOs(); } float WaterFall::getViewBandwidth() { @@ -551,6 +502,7 @@ namespace ImGui { lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0f); upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); updateWaterfallFb(); + updateAllVFOs(); } float WaterFall::getViewOffset() { @@ -598,5 +550,130 @@ namespace ImGui { float WaterFall::getWaterfallMax() { return waterfallMax; } + + void WaterFall::updateAllVFOs() { + for (auto const& [name, vfo] : vfos) { + vfo->updateDrawingVars(viewBandwidth, dataWidth, viewOffset, widgetPos, fftHeight); + } + } + + void WaterfallVFO::setOffset(float offset) { + generalOffset = offset; + if (reference == REF_CENTER) { + centerOffset = offset; + lowerOffset = offset - (bandwidth / 2.0f); + upperOffset = offset + (bandwidth / 2.0f); + } + else if (reference == REF_LOWER) { + lowerOffset = offset; + centerOffset = offset + (bandwidth / 2.0f); + upperOffset = offset + bandwidth; + } + else if (reference == REF_UPPER) { + upperOffset = offset; + centerOffset = offset - (bandwidth / 2.0f); + lowerOffset = offset - bandwidth; + } + centerOffsetChanged = true; + upperOffsetChanged = true; + lowerOffsetChanged = true; + redrawRequired = true; + } + + void WaterfallVFO::setCenterOffset(float offset) { + if (reference == REF_CENTER) { + generalOffset = offset; + } + else if (reference == REF_LOWER) { + generalOffset = offset - (bandwidth / 2.0f); + } + else if (reference == REF_UPPER) { + generalOffset = offset + (bandwidth / 2.0f); + } + centerOffset = offset; + lowerOffset = offset - (bandwidth / 2.0f); + upperOffset = offset + (bandwidth / 2.0f); + centerOffsetChanged = true; + upperOffsetChanged = true; + lowerOffsetChanged = true; + redrawRequired = true; + } + + void WaterfallVFO::setBandwidth(float bw) { + if (bandwidth == bw || bw < 0) { + return; + } + bandwidth = bw; + if (reference == REF_CENTER) { + lowerOffset = centerOffset - (bandwidth / 2.0f); + upperOffset = centerOffset + (bandwidth / 2.0f); + } + else if (reference == REF_LOWER) { + centerOffset = lowerOffset + (bandwidth / 2.0f); + upperOffset = lowerOffset + bandwidth; + centerOffsetChanged; + } + else if (reference == REF_UPPER) { + centerOffset = upperOffset - (bandwidth / 2.0f); + lowerOffset = upperOffset - bandwidth; + centerOffsetChanged; + } + redrawRequired = true; + } + + void WaterfallVFO::setReference(int ref) { + if (reference == ref || ref < 0 || ref >= _REF_COUNT) { + return; + } + reference = ref; + if (reference == REF_CENTER) { + setOffset(centerOffset); + } + else if (reference == REF_LOWER) { + setOffset(lowerOffset); + } + else if (reference == REF_UPPER) { + setOffset(upperOffset); + } + } + + void WaterfallVFO::updateDrawingVars(float viewBandwidth, float dataWidth, float viewOffset, ImVec2 widgetPos, int fftHeight) { + float width = (bandwidth / viewBandwidth) * (float)dataWidth; + int center = roundf((((centerOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); + int left = roundf((((lowerOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); + int right = roundf((((upperOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); + + if (left >= 0 && left < dataWidth && reference == REF_LOWER) { + lineMin = ImVec2(widgetPos.x + 50 + left, widgetPos.y + 9); + lineMax = ImVec2(widgetPos.x + 50 + left, widgetPos.y + fftHeight + 9); + lineVisible = true; + } + else if (center >= 0 && center < dataWidth && reference == REF_CENTER) { + lineMin = ImVec2(widgetPos.x + 50 + center, widgetPos.y + 9); + lineMax = ImVec2(widgetPos.x + 50 + center, widgetPos.y + fftHeight + 9); + lineVisible = true; + } + else if (right >= 0 && right < dataWidth && reference == REF_UPPER) { + lineMin = ImVec2(widgetPos.x + 50 + right, widgetPos.y + 9); + lineMax = ImVec2(widgetPos.x + 50 + right, widgetPos.y + fftHeight + 9); + lineVisible = true; + } + else { + lineVisible = false; + } + + left = std::clamp(left, 0, dataWidth - 1); + right = std::clamp(right, 0, dataWidth - 1); + + rectMin = ImVec2(widgetPos.x + 50 + left, widgetPos.y + 10); + rectMax = ImVec2(widgetPos.x + 51 + right, widgetPos.y + fftHeight + 10); + } + + void WaterfallVFO::draw(ImGuiWindow* window, bool selected) { + window->DrawList->AddRectFilled(rectMin, rectMax, IM_COL32(255, 255, 255, 50)); + if (lineVisible) { + window->DrawList->AddLine(lineMin, lineMax, selected ? IM_COL32(255, 0, 0, 255) : IM_COL32(255, 255, 0, 255)); + } + }; }; diff --git a/src/waterfall.h b/src/waterfall.h index 4edd907c..6729838b 100644 --- a/src/waterfall.h +++ b/src/waterfall.h @@ -12,6 +12,41 @@ namespace ImGui { + class WaterfallVFO { + public: + void setOffset(float offset); + void setCenterOffset(float offset); + void setBandwidth(float bw); + void setReference(int ref); + void updateDrawingVars(float viewBandwidth, float dataWidth, float viewOffset, ImVec2 widgetPos, int fftHeight); + void draw(ImGuiWindow* window, bool selected); + + enum { + REF_LOWER, + REF_CENTER, + REF_UPPER, + _REF_COUNT + }; + + float generalOffset; + float centerOffset; + float lowerOffset; + float upperOffset; + float bandwidth; + int reference = REF_CENTER; + + ImVec2 rectMin; + ImVec2 rectMax; + ImVec2 lineMin; + ImVec2 lineMax; + + bool centerOffsetChanged = false; + bool lowerOffsetChanged = false; + bool upperOffsetChanged = false; + bool redrawRequired = true; + bool lineVisible = true; + }; + class WaterFall { public: WaterFall(); @@ -27,14 +62,6 @@ namespace ImGui { void setBandwidth(float bandWidth); float getBandwidth(); - void setVFOOffset(float offset); - float getVFOOfset(); - - void setVFOBandwidth(float bandwidth); - float getVFOBandwidth(); - - void setVFOReference(int ref); - void setViewBandwidth(float bandWidth); float getViewBandwidth(); @@ -63,6 +90,9 @@ namespace ImGui { bool bandplanEnabled = false; bandplan::BandPlan_t* bandplan = NULL; + std::map vfos; + std::string selectedVFO; + enum { REF_LOWER, REF_CENTER, @@ -74,12 +104,14 @@ namespace ImGui { private: void drawWaterfall(); void drawFFT(); - void drawVFO(); + void drawVFOs(); void drawBandPlan(); + void processInputs(); void onPositionChange(); void onResize(); void updateWaterfallFb(); void updateWaterfallTexture(); + void updateAllVFOs(); bool waterfallUpdate = false; @@ -129,10 +161,6 @@ namespace ImGui { float centerFreq; float wholeBandwidth; - // VFO - float vfoOffset; - float vfoBandwidth; - // Ranges float fftMin; float fftMax; From cdea80f8c56020e85b193c0a8c48cd60ff2340aa Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 11 Aug 2020 18:33:42 +0200 Subject: [PATCH 002/127] modules --- CMakeLists.txt | 1 + modules/radio/CMakeLists.txt | 55 +++++++++++++ modules/radio/src/main.cpp | 79 ++++++++++++++++++ modules/radio/src/path.cpp | 114 ++++++++++++++++++++++++++ modules/radio/src/path.h | 54 +++++++++++++ src/dsp/routing.h | 92 +++++++++++++++++++++ src/dsp/source.h | 1 + src/dsp/vfo.h | 1 + src/main.cpp | 5 +- src/main_window.cpp | 125 ++++++----------------------- src/main_window.h | 1 + src/module.cpp | 36 ++++++++- src/module.h | 29 ++++++- src/signal_path.cpp | 150 +++++++++++------------------------ src/signal_path.h | 37 +++------ src/vfo_manager.cpp | 97 ++++++++++++++++++++++ src/vfo_manager.h | 21 ++++- src/waterfall.cpp | 49 +++++++++--- src/waterfall.h | 3 + 19 files changed, 706 insertions(+), 244 deletions(-) create mode 100644 modules/radio/CMakeLists.txt create mode 100644 modules/radio/src/main.cpp create mode 100644 modules/radio/src/path.cpp create mode 100644 modules/radio/src/path.h create mode 100644 src/vfo_manager.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 68cc9415..6feea033 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ else() link_libraries(portaudio) link_libraries(X11) link_libraries(Xxf86vm) + link_libraries(DL) endif (MSVC) link_libraries(volk) diff --git a/modules/radio/CMakeLists.txt b/modules/radio/CMakeLists.txt new file mode 100644 index 00000000..1543b210 --- /dev/null +++ b/modules/radio/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.9) +project(radio) + +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") + link_directories(radio "C:/Program Files/PothosSDR/lib/") + include_directories(radio "C:/Program Files/PothosSDR/include/volk/") + include_directories(radio "C:/Program Files/PothosSDR/include/") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") + include_directories(radio "/usr/include/volk") + link_libraries(pthread) + link_libraries(GL) + link_libraries(GLEW) + link_libraries(glfw) + link_libraries(fftw3) + link_libraries(fftw3f) + link_libraries(portaudio) + link_libraries(X11) + link_libraries(Xxf86vm) +endif (MSVC) + +link_libraries(volk) +link_libraries(SoapySDR) + +# Main code +include_directories(radio "src/") +include_directories(radio "../../src/") +include_directories(radio "../../src/imgui") +file(GLOB SRC "src/*.cpp") +file(GLOB IMGUI "../../src/imgui/*.cpp") +add_library(radio SHARED ${SRC} ${IMGUI}) +set_target_properties(radio PROPERTIES OUTPUT_NAME radio) + +if (MSVC) + # Glew + find_package(GLEW REQUIRED) + target_link_libraries(radio PRIVATE GLEW::GLEW) + + # GLFW3 + find_package(glfw3 CONFIG REQUIRED) + target_link_libraries(radio PRIVATE glfw) + + # FFTW3 + find_package(FFTW3 CONFIG REQUIRED) + target_link_libraries(radio PRIVATE FFTW3::fftw3) + find_package(FFTW3f CONFIG REQUIRED) + target_link_libraries(radio PRIVATE FFTW3::fftw3f) + + # PortAudio + find_package(portaudio CONFIG REQUIRED) + target_link_libraries(radio PRIVATE portaudio portaudio_static) +endif (MSVC) + +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/modules/radio/src/main.cpp b/modules/radio/src/main.cpp new file mode 100644 index 00000000..34a97367 --- /dev/null +++ b/modules/radio/src/main.cpp @@ -0,0 +1,79 @@ +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + +mod::API_t* API; + +struct RadioContext_t { + std::string name; + int demod = 1; + SigPath sigPath; +}; + +MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { + API = _API; + RadioContext_t* ctx = new RadioContext_t; + ctx->name = _name; + ctx->sigPath.init(_name, 200000, 1000, API->registerVFO(_name, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000)); + ctx->sigPath.start(); + ImGui::SetCurrentContext(imctx); + return ctx; +} + +MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { + ImGui::BeginGroup(); + + ImGui::Columns(4, CONCAT("RadioModeColumns##_", ctx->name), false); + if (ImGui::RadioButton(CONCAT("NFM##_", ctx->name), ctx->demod == 0) && ctx->demod != 0) { + ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM); + ctx->demod = 0; + API->setVFOBandwidth(ctx->name, 12500); + // vfo->setReference(ImGui::WaterFall::REF_CENTER); + } + if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { + ctx->sigPath.setDemodulator(SigPath::DEMOD_FM); + ctx->demod = 1; + API->setVFOBandwidth(ctx->name, 200000); + // vfo->setReference(ImGui::WaterFall::REF_CENTER); + } + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { + ctx->sigPath.setDemodulator(SigPath::DEMOD_AM); + ctx->demod = 2; + API->setVFOBandwidth(ctx->name, 12500); + // vfo->setReference(ImGui::WaterFall::REF_CENTER); + } + if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { ctx->demod = 3; }; + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("USB##_", ctx->name), ctx->demod == 4) && ctx->demod != 4) { + ctx->sigPath.setDemodulator(SigPath::DEMOD_USB); + ctx->demod = 4; + API->setVFOBandwidth(ctx->name, 3000); + // vfo->setReference(ImGui::WaterFall::REF_LOWER); + } + if (ImGui::RadioButton(CONCAT("CW##_", ctx->name), ctx->demod == 5) && ctx->demod != 5) { ctx->demod = 5; }; + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("LSB##_", ctx->name), ctx->demod == 6) && ctx->demod != 6) { + ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB); + ctx->demod = 6; + API->setVFOBandwidth(ctx->name, 3000); + // vfo->setReference(ImGui::WaterFall::REF_UPPER); + } + if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { ctx->demod = 7; }; + ImGui::Columns(1, CONCAT("EndRadioModeColumns##_", ctx->name), false); + + ImGui::EndGroup(); +} + +MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { + if (eventId == mod::EVENT_STREAM_PARAM_CHANGED) { + ctx->sigPath.updateBlockSize(); + } +} + +MOD_EXPORT void _STOP_(RadioContext_t* ctx) { + API->removeVFO(ctx->name); + delete ctx; +} \ No newline at end of file diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp new file mode 100644 index 00000000..afa3dee7 --- /dev/null +++ b/modules/radio/src/path.cpp @@ -0,0 +1,114 @@ +#include + +SigPath::SigPath() { + +} + +void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input) { + this->sampleRate = sampleRate; + this->blockSize = blockSize; + this->vfoName = vfoName; + + _demod = DEMOD_FM; + + // TODO: Set default VFO options + + demod.init(input, 100000, 200000, 800); + amDemod.init(input, 50); + ssbDemod.init(input, 6000, 3000, 22); + + audioResamp.init(&demod.output, 200000, 48000, 800); + audio.init(&audioResamp.output, 64); +} + +void SigPath::setSampleRate(float sampleRate) { + this->sampleRate = sampleRate; + + // Reset the demodulator and audio systems + setDemodulator(_demod); +} + +void SigPath::setVolume(float volume) { + audio.setVolume(volume); +} + +void SigPath::setDemodulator(int demId) { + if (demId < 0 || demId >= _DEMOD_COUNT) { + return; + } + + audioResamp.stop(); + + // Stop current demodulator + if (_demod == DEMOD_FM) { + demod.stop(); + } + else if (_demod == DEMOD_NFM) { + demod.stop(); + } + else if (_demod == DEMOD_AM) { + amDemod.stop(); + } + else if (_demod == DEMOD_USB) { + ssbDemod.stop(); + } + else if (_demod == DEMOD_LSB) { + ssbDemod.stop(); + } + _demod = demId; + + // Set input of the audio resampler + if (demId == DEMOD_FM) { + API->setVFOSampleRate(vfoName, 200000, 200000); + demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + demod.setSampleRate(200000); + demod.setDeviation(100000); + audioResamp.setInput(&demod.output); + audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName)); + demod.start(); + } + if (demId == DEMOD_NFM) { + API->setVFOSampleRate(vfoName, 12500, 12500); + demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + demod.setSampleRate(12500); + demod.setDeviation(6250); + audioResamp.setInput(&demod.output); + audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName)); + demod.start(); + } + else if (demId == DEMOD_AM) { + API->setVFOSampleRate(vfoName, 12500, 12500); + amDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + audioResamp.setInput(&amDemod.output); + audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName)); + amDemod.start(); + } + else if (demId == DEMOD_USB) { + API->setVFOSampleRate(vfoName, 6000, 3000); + ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + ssbDemod.setMode(dsp::SSBDemod::MODE_USB); + audioResamp.setInput(&ssbDemod.output); + audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName)); + ssbDemod.start(); + } + else if (demId == DEMOD_LSB) { + API->setVFOSampleRate(vfoName, 6000, 3000); + ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); + audioResamp.setInput(&ssbDemod.output); + audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName)); + ssbDemod.start(); + } + + audioResamp.start(); +} + +void SigPath::updateBlockSize() { + setDemodulator(_demod); +} + +void SigPath::start() { + demod.start(); + audioResamp.start(); + audio.start(); +} \ No newline at end of file diff --git a/modules/radio/src/path.h b/modules/radio/src/path.h new file mode 100644 index 00000000..e85088cd --- /dev/null +++ b/modules/radio/src/path.h @@ -0,0 +1,54 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class SigPath { +public: + SigPath(); + void init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input); + void start(); + void setSampleRate(float sampleRate); + + void setVFOFrequency(long frequency); + void setVolume(float volume); + + void updateBlockSize(); + + void setDemodulator(int demod); + + enum { + DEMOD_FM, + DEMOD_NFM, + DEMOD_AM, + DEMOD_USB, + DEMOD_LSB, + _DEMOD_COUNT + }; + +private: + dsp::stream input; + + // Demodulators + dsp::FMDemodulator demod; + dsp::AMDemodulator amDemod; + dsp::SSBDemod ssbDemod; + + // Audio output + dsp::FloatFIRResampler audioResamp; + io::AudioSink audio; + + std::string vfoName; + + float sampleRate; + int blockSize; + int _demod; +}; \ No newline at end of file diff --git a/src/dsp/routing.h b/src/dsp/routing.h index 05797b2e..7555d00b 100644 --- a/src/dsp/routing.h +++ b/src/dsp/routing.h @@ -75,4 +75,96 @@ namespace dsp { std::thread _workerThread; bool running = false; }; + + class DynamicSplitter { + public: + DynamicSplitter() { + + } + + DynamicSplitter(stream* input, int bufferSize) { + _in = input; + _bufferSize = bufferSize; + } + + void init(stream* input, int bufferSize) { + _in = input; + _bufferSize = bufferSize; + } + + void start() { + if (running) { + return; + } + _workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + _in->stopReader(); + int outputCount = outputs.size(); + for (int i = 0; i < outputCount; i++) { + outputs[i]->stopWriter(); + } + _workerThread.join(); + _in->clearReadStop(); + for (int i = 0; i < outputCount; i++) { + outputs[i]->clearWriteStop(); + } + running = false; + } + + void setBlockSize(int blockSize) { + if (running) { + return; + } + _bufferSize = blockSize; + int outputCount = outputs.size(); + for (int i = 0; i < outputCount; i++) { + outputs[i]->setMaxLatency(blockSize * 2); + } + } + + void bind(stream* stream) { + if (running) { + return; + } + outputs.push_back(stream); + } + + void unbind(stream* stream) { + if (running) { + return; + } + int outputCount = outputs.size(); + for (int i = 0; i < outputCount; i++) { + if (outputs[i] == stream) { + outputs.erase(outputs.begin() + i); + break; + } + } + } + + private: + static void _worker(DynamicSplitter* _this) { + complex_t* buf = new complex_t[_this->_bufferSize]; + int outputCount = _this->outputs.size(); + while (true) { + if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; + for (int i = 0; i < outputCount; i++) { + if (_this->outputs[i]->write(buf, _this->_bufferSize) < 0) { break; }; + } + } + delete[] buf; + } + + stream* _in; + int _bufferSize; + std::thread _workerThread; + bool running = false; + std::vector*> outputs; + }; }; \ No newline at end of file diff --git a/src/dsp/source.h b/src/dsp/source.h index faf7e7ce..5d9531f0 100644 --- a/src/dsp/source.h +++ b/src/dsp/source.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace dsp { class SineSource { diff --git a/src/dsp/vfo.h b/src/dsp/vfo.h index fe0bd803..bbcf7e03 100644 --- a/src/dsp/vfo.h +++ b/src/dsp/vfo.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace dsp { class VFO { diff --git a/src/main.cpp b/src/main.cpp index 8902e10f..c2dc095f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -74,11 +74,12 @@ int main() { bandplan::loadColorTable("band_colors.json"); spdlog::info("Loading test module"); - //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 1"); + mod::initAPI(); + mod::loadModule("../modules/radio/build/Release/radio.dll", "Radio 1"); + mod::loadModule("../modules/radio/build/Release/radio.dll", "Radio 2"); //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 2"); //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 3"); - spdlog::info("Ready."); diff --git a/src/main_window.cpp b/src/main_window.cpp index 38e1f1d9..57653b1c 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -36,24 +36,12 @@ void fftHandler(dsp::complex_t* samples) { _data.clear(); } +dsp::NullSink sink; + void windowInit() { int sampleRate = 8000000; wtf.setBandwidth(sampleRate); wtf.setCenterFrequency(90500000); - // wtf.setVFOBandwidth(200000); - // wtf.setVFOOffset(0); - - wtf.vfos["Radio"] = new ImGui::WaterfallVFO; - wtf.vfos["Radio"]->setReference(ImGui::WaterfallVFO::REF_CENTER); - wtf.vfos["Radio"]->setBandwidth(200000); - wtf.vfos["Radio"]->setOffset(0); - - wtf.vfos["Radio 2"] = new ImGui::WaterfallVFO; - wtf.vfos["Radio 2"]->setReference(ImGui::WaterfallVFO::REF_CENTER); - wtf.vfos["Radio 2"]->setBandwidth(200000); - wtf.vfos["Radio 2"]->setOffset(300000); - - wtf.selectedVFO = "Radio"; fSel.init(); fSel.setFrequency(90500000); @@ -65,6 +53,8 @@ void windowInit() { sigPath.init(sampleRate, 20, fftSize, &soapy.output, (dsp::complex_t*)fft_in, fftHandler); sigPath.start(); + vfoman::init(&wtf, &sigPath); + uiGains = new float[1]; } @@ -83,12 +73,8 @@ int sampleRate = 1000000; bool playing = false; watcher dcbias(false, false); watcher bandPlanEnabled(true, false); -bool selectedVFOChanged = false; void setVFO(float freq) { - if (wtf.selectedVFO == "") { - return; - } ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; float currentOff = vfo->centerOffset; @@ -112,8 +98,7 @@ void setVFO(float freq) { // VFO still fints in the view if (vfoBottom > viewBottom && vfoTop < viewTop) { - sigPath.setVFOFrequency(newVFO); - vfo->setCenterOffset(newVFO); + vfoman::setCenterOffset(wtf.selectedVFO, newVFO); return; } @@ -121,8 +106,7 @@ void setVFO(float freq) { if (vfoBottom < bottom) { wtf.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); - sigPath.setVFOFrequency(newVFOOffset); - vfo->setCenterOffset(newVFOOffset); + vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); return; @@ -132,8 +116,7 @@ void setVFO(float freq) { if (vfoTop > top) { wtf.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); - sigPath.setVFOFrequency(newVFOOffset); - vfo->setCenterOffset(newVFOOffset); + vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); return; @@ -146,16 +129,14 @@ void setVFO(float freq) { float newViewTop = newViewOff + (viewBW / 2.0f); if (newViewBottom > bottom) { - vfo->setCenterOffset(newVFO); wtf.setViewOffset(newViewOff); - sigPath.setVFOFrequency(newVFO); + vfoman::setCenterOffset(wtf.selectedVFO, newVFO); return; } wtf.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); - sigPath.setVFOFrequency(newVFOOffset); - vfo->setCenterOffset(newVFOOffset); + vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); } @@ -165,32 +146,43 @@ void setVFO(float freq) { float newViewTop = newViewOff + (viewBW / 2.0f); if (newViewTop < top) { - vfo->setCenterOffset(newVFO); wtf.setViewOffset(newViewOff); - sigPath.setVFOFrequency(newVFO); + vfoman::setCenterOffset(wtf.selectedVFO, newVFO); return; } wtf.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); - sigPath.setVFOFrequency(newVFOOffset); - vfo->setCenterOffset(newVFOOffset); + vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); wtf.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); } } void drawWindow() { + if (wtf.selectedVFO == "" && wtf.vfos.size() > 0) { + wtf.selectFirstVFO(); + } + ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; - if (selectedVFOChanged) { - selectedVFOChanged = false; + if (vfo->centerOffsetChanged) { + fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); + } + + vfoman::updateFromWaterfall(); + + if (wtf.selectedVFOChanged) { + wtf.selectedVFOChanged = false; fSel.setFrequency(vfo->generalOffset + wtf.getCenterFrequency()); } if (fSel.frequencyChanged) { fSel.frequencyChanged = false; setVFO(fSel.frequency); + vfo->centerOffsetChanged = false; + vfo->lowerOffsetChanged = false; + vfo->upperOffsetChanged = false; } if (wtf.centerFreqMoved) { @@ -198,15 +190,6 @@ void drawWindow() { soapy.setFrequency(wtf.getCenterFrequency()); fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); } - if (wtf.vfoFreqChanged) { - wtf.vfoFreqChanged = false; - sigPath.setVFOFrequency(vfo->centerOffset); - fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); - } - - if (volume.changed()) { - sigPath.setVolume(volume.val); - } if (devId.changed() && soapy.devList.size() > 0) { spdlog::info("Changed input device: {0}", devId.val); @@ -320,52 +303,6 @@ void drawWindow() { mod = mod::modules[mod::moduleNames[i]]; mod._DRAW_MENU_(mod.ctx); } - } - - if (ImGui::CollapsingHeader("Radio")) { - ImGui::BeginGroup(); - - ImGui::Columns(4, "RadioModeColumns", false); - if (ImGui::RadioButton("NFM", demod == 0) && demod != 0) { - sigPath.setDemodulator(SignalPath::DEMOD_NFM); demod = 0; - vfo->setBandwidth(12500); - vfo->setReference(ImGui::WaterFall::REF_CENTER); - } - if (ImGui::RadioButton("WFM", demod == 1) && demod != 1) { - sigPath.setDemodulator(SignalPath::DEMOD_FM); - demod = 1; - vfo->setBandwidth(200000); - vfo->setReference(ImGui::WaterFall::REF_CENTER); - } - ImGui::NextColumn(); - if (ImGui::RadioButton("AM", demod == 2) && demod != 2) { - sigPath.setDemodulator(SignalPath::DEMOD_AM); - demod = 2; - vfo->setBandwidth(12500); - vfo->setReference(ImGui::WaterFall::REF_CENTER); - } - if (ImGui::RadioButton("DSB", demod == 3) && demod != 3) { demod = 3; }; - ImGui::NextColumn(); - if (ImGui::RadioButton("USB", demod == 4) && demod != 4) { - sigPath.setDemodulator(SignalPath::DEMOD_USB); - demod = 4; - vfo->setBandwidth(3000); - vfo->setReference(ImGui::WaterFall::REF_LOWER); - } - if (ImGui::RadioButton("CW", demod == 5) && demod != 5) { demod = 5; }; - ImGui::NextColumn(); - if (ImGui::RadioButton("LSB", demod == 6) && demod != 6) { - sigPath.setDemodulator(SignalPath::DEMOD_LSB); - demod = 6; - vfo->setBandwidth(3000); - vfo->setReference(ImGui::WaterFall::REF_UPPER); - } - if (ImGui::RadioButton("RAW", demod == 7) && demod != 7) { demod = 7; }; - ImGui::Columns(1, "EndRadioModeColumns", false); - - ImGui::Checkbox("DC Bias Removal", &dcbias.val); - - ImGui::EndGroup(); } ImGui::CollapsingHeader("Audio"); @@ -388,16 +325,6 @@ void drawWindow() { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); ImGui::Text("Center Frequency: %.1f FPS", wtf.getCenterFrequency()); - - if (ImGui::Button("Radio##__sdsd__")) { - wtf.selectedVFO = "Radio"; - selectedVFOChanged = true; - } - ImGui::SameLine(); - if (ImGui::Button("Radio 2")) { - wtf.selectedVFO = "Radio 2"; - selectedVFOChanged = true; - } } ImGui::EndChild(); diff --git a/src/main_window.h b/src/main_window.h index 63be64d3..e7617d55 100644 --- a/src/main_window.h +++ b/src/main_window.h @@ -22,6 +22,7 @@ #include #include #include +#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground diff --git a/src/module.cpp b/src/module.cpp index 704790ec..515ae0fb 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -1,10 +1,22 @@ #include +#include namespace mod { API_t API; std::map modules; std::vector moduleNames; + void initAPI() { + API.registerVFO = vfoman::create; + API.setVFOOffset = vfoman::setOffset; + API.setVFOCenterOffset = vfoman::setCenterOffset; + API.setVFOBandwidth = vfoman::setBandwidth; + API.setVFOSampleRate = vfoman::setSampleRate; + API.getVFOOutputBlockSize = vfoman::getOutputBlockSize; + API.setVFOReference = vfoman::setReference; + API.removeVFO = vfoman::remove; + } + void loadModule(std::string path, std::string name) { if (!std::filesystem::exists(path)) { spdlog::error("{0} does not exist", path); @@ -23,9 +35,18 @@ namespace mod { } mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))GetProcAddress(mod.inst, "_INIT_"); mod._DRAW_MENU_ = (void(*)(void*))GetProcAddress(mod.inst, "_DRAW_MENU_"); + mod._HANDLE_EVENT_ = (void(*)(void*, int))GetProcAddress(mod.inst, "_HANDLE_EVENT_"); mod._STOP_ = (void(*)(void*))GetProcAddress(mod.inst, "_STOP_"); #else - // Linux function here + mod.inst = dlopen(path.c_str(), RTLD_LAZY); + if (mod.inst == NULL) { + spdlog::error("Couldn't load {0}.", name); + return; + } + mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))dlsym(mod.inst, "_INIT_"); + mod._DRAW_MENU_ = (void(*)(void*))dlsym(mod.inst, "_DRAW_MENU_"); + mod._HANDLE_EVENT_ = (void(*)(void*, int))dlsym(mod.inst, "_HANDLE_EVENT_"); + mod._STOP_ = (void(*)(void*))dlsym(mod.inst, "_STOP_"); #endif if (mod._INIT_ == NULL) { spdlog::error("Couldn't load {0} because it's missing _INIT_.", name); @@ -35,6 +56,10 @@ namespace mod { spdlog::error("Couldn't load {0} because it's missing _DRAW_MENU_.", name); return; } + if (mod._HANDLE_EVENT_ == NULL) { + spdlog::error("Couldn't load {0} because it's missing _HANDLE_EVENT_.", name); + return; + } if (mod._STOP_ == NULL) { spdlog::error("Couldn't load {0} because it's missing _STOP_.", name); return; @@ -46,5 +71,14 @@ namespace mod { modules[name] = mod; moduleNames.push_back(name); } + + void broadcastEvent(int eventId) { + if (eventId < 0 || eventId >= _EVENT_COUNT) { + return; + } + for (auto const& [name, mod] : modules) { + mod._HANDLE_EVENT_(mod.ctx, eventId); + } + } }; diff --git a/src/module.h b/src/module.h index 46f4ca36..2c9231a1 100644 --- a/src/module.h +++ b/src/module.h @@ -5,18 +5,40 @@ #include #include #include +#include +#include #ifdef _WIN32 #include #define MOD_EXPORT extern "C" \ __declspec(dllexport) #else +#include #define MOD_EXPORT extern "C" #endif namespace mod { struct API_t { + dsp::stream* (*registerVFO)(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); + void (*setVFOOffset)(std::string name, float offset); + void (*setVFOCenterOffset)(std::string name, float offset); + void (*setVFOBandwidth)(std::string name, float bandwidth); + void (*setVFOSampleRate)(std::string name, float sampleRate, float bandwidth); + int (*getVFOOutputBlockSize)(std::string name); + void (*setVFOReference)(std::string name, int ref); + void (*removeVFO)(std::string name); + enum { + REF_LOWER, + REF_CENTER, + REF_UPPER, + _REF_COUNT + }; + }; + + enum { + EVENT_STREAM_PARAM_CHANGED, + _EVENT_COUNT }; struct Module_t { @@ -27,12 +49,17 @@ namespace mod { #endif void* (*_INIT_)(API_t*, ImGuiContext*, std::string); void (*_DRAW_MENU_)(void*); + void (*_HANDLE_EVENT_)(void*, int); void (*_STOP_)(void*); void* ctx; }; + void initAPI(); void loadModule(std::string path, std::string name); + void broadcastEvent(int eventId); extern std::map modules; extern std::vector moduleNames; -}; \ No newline at end of file +}; + +extern mod::API_t* API; \ No newline at end of file diff --git a/src/signal_path.cpp b/src/signal_path.cpp index f3d2a237..777dcb3a 100644 --- a/src/signal_path.cpp +++ b/src/signal_path.cpp @@ -8,8 +8,7 @@ void SignalPath::init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream this->sampleRate = sampleRate; this->fftRate = fftRate; this->fftSize = fftSize; - - _demod = DEMOD_FM; + inputBlockSize = sampleRate / 200.0f; dcBiasRemover.init(input, 32000); dcBiasRemover.bypass = true; @@ -18,120 +17,41 @@ void SignalPath::init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream fftBlockDec.init(&split.output_a, (sampleRate / fftRate) - fftSize, fftSize); fftHandlerSink.init(&fftBlockDec.output, fftBuffer, fftSize, fftHandler); - mainVFO.init(&split.output_b, sampleRate, 200000, 200000, 0, 32000); - - demod.init(mainVFO.output, 100000, 200000, 800); - amDemod.init(mainVFO.output, 50); - ssbDemod.init(mainVFO.output, 6000, 3000, 22); - - audioResamp.init(&demod.output, 200000, 48000, 800); - audio.init(&audioResamp.output, 64); + dynSplit.init(&split.output_b, 32000); } void SignalPath::setSampleRate(float sampleRate) { + this->sampleRate = sampleRate; + inputBlockSize = sampleRate / 200.0f; + dcBiasRemover.stop(); split.stop(); fftBlockDec.stop(); fftHandlerSink.stop(); + dynSplit.stop(); - demod.stop(); - amDemod.stop(); - audioResamp.stop(); - - int inputBlockSize = sampleRate / 200.0f; + for (auto const& [name, vfo] : vfos) { + vfo.vfo->stop(); + } dcBiasRemover.setBlockSize(inputBlockSize); split.setBlockSize(inputBlockSize); int skip = (sampleRate / fftRate) - fftSize; fftBlockDec.setSkip(skip); - mainVFO.setInputSampleRate(sampleRate, inputBlockSize); + dynSplit.setBlockSize(inputBlockSize); - // // Reset the modulator and audio systems - setDemodulator(_demod); + mod::broadcastEvent(mod::EVENT_STREAM_PARAM_CHANGED); + + for (auto const& [name, vfo] : vfos) { + vfo.vfo->setInputSampleRate(sampleRate, inputBlockSize); + vfo.vfo->start(); + } fftHandlerSink.start(); fftBlockDec.start(); split.start(); dcBiasRemover.start(); -} - -void SignalPath::setVFOFrequency(long frequency) { - mainVFO.setOffset(frequency); -} - -void SignalPath::setVolume(float volume) { - audio.setVolume(volume); -} - -void SignalPath::setDemodulator(int demId) { - if (demId < 0 || demId >= _DEMOD_COUNT) { - return; - } - - audioResamp.stop(); - - // Stop current demodulator - if (_demod == DEMOD_FM) { - demod.stop(); - } - else if (_demod == DEMOD_NFM) { - demod.stop(); - } - else if (_demod == DEMOD_AM) { - amDemod.stop(); - } - else if (_demod == DEMOD_USB) { - ssbDemod.stop(); - } - else if (_demod == DEMOD_LSB) { - ssbDemod.stop(); - } - _demod = demId; - - // Set input of the audio resampler - if (demId == DEMOD_FM) { - mainVFO.setOutputSampleRate(200000, 200000); - demod.setBlockSize(mainVFO.getOutputBlockSize()); - demod.setSampleRate(200000); - demod.setDeviation(100000); - audioResamp.setInput(&demod.output); - audioResamp.setInputSampleRate(200000, mainVFO.getOutputBlockSize()); - demod.start(); - } - if (demId == DEMOD_NFM) { - mainVFO.setOutputSampleRate(12500, 12500); - demod.setBlockSize(mainVFO.getOutputBlockSize()); - demod.setSampleRate(12500); - demod.setDeviation(6250); - audioResamp.setInput(&demod.output); - audioResamp.setInputSampleRate(12500, mainVFO.getOutputBlockSize()); - demod.start(); - } - else if (demId == DEMOD_AM) { - mainVFO.setOutputSampleRate(12500, 12500); - amDemod.setBlockSize(mainVFO.getOutputBlockSize()); - audioResamp.setInput(&amDemod.output); - audioResamp.setInputSampleRate(12500, mainVFO.getOutputBlockSize()); - amDemod.start(); - } - else if (demId == DEMOD_USB) { - mainVFO.setOutputSampleRate(6000, 3000); - ssbDemod.setBlockSize(mainVFO.getOutputBlockSize()); - ssbDemod.setMode(dsp::SSBDemod::MODE_USB); - audioResamp.setInput(&ssbDemod.output); - audioResamp.setInputSampleRate(6000, mainVFO.getOutputBlockSize()); - ssbDemod.start(); - } - else if (demId == DEMOD_LSB) { - mainVFO.setOutputSampleRate(6000, 3000); - ssbDemod.setBlockSize(mainVFO.getOutputBlockSize()); - ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); - audioResamp.setInput(&ssbDemod.output); - audioResamp.setInputSampleRate(6000, mainVFO.getOutputBlockSize()); - ssbDemod.start(); - } - - audioResamp.start(); + dynSplit.start(); } void SignalPath::start() { @@ -141,13 +61,39 @@ void SignalPath::start() { fftBlockDec.start(); fftHandlerSink.start(); - mainVFO.start(); - demod.start(); - - audioResamp.start(); - audio.start(); + dynSplit.start(); } void SignalPath::setDCBiasCorrection(bool enabled) { dcBiasRemover.bypass = !enabled; +} + +dsp::VFO* SignalPath::addVFO(std::string name, float outSampleRate, float bandwidth, float offset) { + if (vfos.find(name) != vfos.end()) { + return NULL; + } + dynSplit.stop(); + VFO_t vfo; + vfo.inputStream = new dsp::stream(inputBlockSize * 2); + dynSplit.bind(vfo.inputStream); + vfo.vfo = new dsp::VFO(); + vfo.vfo->init(vfo.inputStream, sampleRate, outSampleRate, bandwidth, offset, inputBlockSize); + vfo.vfo->start(); + vfos[name] = vfo; + dynSplit.start(); + return vfo.vfo; +} + +void SignalPath::removeVFO(std::string name) { + if (vfos.find(name) == vfos.end()) { + return; + } + dynSplit.stop(); + VFO_t vfo = vfos[name]; + vfo.vfo->stop(); + dynSplit.unbind(vfo.inputStream); + delete vfo.vfo; + delete vfo.inputStream; + dynSplit.start(); + vfos.erase(name); } \ No newline at end of file diff --git a/src/signal_path.h b/src/signal_path.h index a587c059..b7998f45 100644 --- a/src/signal_path.h +++ b/src/signal_path.h @@ -9,6 +9,8 @@ #include #include #include +#include +#include class SignalPath { public: @@ -18,22 +20,15 @@ public: void setSampleRate(float sampleRate); void setDCBiasCorrection(bool enabled); void setFFTRate(float rate); - - void setVFOFrequency(long frequency); - void setVolume(float volume); - - void setDemodulator(int demod); - - enum { - DEMOD_FM, - DEMOD_NFM, - DEMOD_AM, - DEMOD_USB, - DEMOD_LSB, - _DEMOD_COUNT - }; + dsp::VFO* addVFO(std::string name, float outSampleRate, float bandwidth, float offset); + void removeVFO(std::string name); private: + struct VFO_t { + dsp::stream* inputStream; + dsp::VFO* vfo; + }; + dsp::DCBiasRemover dcBiasRemover; dsp::Splitter split; @@ -42,19 +37,11 @@ private: dsp::HandlerSink fftHandlerSink; // VFO - dsp::VFO mainVFO; - - // Demodulators - dsp::FMDemodulator demod; - dsp::AMDemodulator amDemod; - dsp::SSBDemod ssbDemod; - - // Audio output - dsp::FloatFIRResampler audioResamp; - io::AudioSink audio; + dsp::DynamicSplitter dynSplit; + std::map vfos; float sampleRate; float fftRate; int fftSize; - int _demod; + int inputBlockSize; }; \ No newline at end of file diff --git a/src/vfo_manager.cpp b/src/vfo_manager.cpp new file mode 100644 index 00000000..498eb9fe --- /dev/null +++ b/src/vfo_manager.cpp @@ -0,0 +1,97 @@ +#include + +namespace vfoman { + std::map vfos; + ImGui::WaterFall* _wtf; + SignalPath* _sigPath; + + void init(ImGui::WaterFall* wtf, SignalPath* sigPath) { + _wtf = wtf; + _sigPath = sigPath; + } + + dsp::stream* create(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { + if (vfos.find(name) != vfos.end()) { + spdlog::warn("Tried to add VFO with an already existing name: {0}", name); + return NULL; + } + spdlog::info("Creating new VFO '{0}'", name); + VFO_t vfo; + vfo.dspVFO = _sigPath->addVFO(name, sampleRate, bandwidth, offset); + vfo.wtfVFO = new ImGui::WaterfallVFO; + vfo.wtfVFO->setReference(reference); + vfo.wtfVFO->setBandwidth(bandwidth); + vfo.wtfVFO->setOffset(offset); + _wtf->vfos[name] = vfo.wtfVFO; + vfos[name] = vfo; + return vfo.dspVFO->output; + } + + void setOffset(std::string name, float offset) { + if (vfos.find(name) == vfos.end()) { + return; + } + VFO_t vfo = vfos[name]; + vfo.wtfVFO->setOffset(offset); + vfo.dspVFO->setOffset(vfo.wtfVFO->centerOffset); + } + + void setCenterOffset(std::string name, float offset) { + if (vfos.find(name) == vfos.end()) { + return; + } + VFO_t vfo = vfos[name]; + vfo.wtfVFO->setCenterOffset(offset); + vfo.dspVFO->setOffset(offset); + } + + void setBandwidth(std::string name, float bandwidth) { + if (vfos.find(name) == vfos.end()) { + return; + } + VFO_t vfo = vfos[name]; + vfo.wtfVFO->setBandwidth(bandwidth); + vfo.dspVFO->setBandwidth(bandwidth); + } + + void setSampleRate(std::string name, float sampleRate, float bandwidth) { + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name].dspVFO->setOutputSampleRate(sampleRate, bandwidth); + } + + void setReference(std::string name, int ref){ + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name].wtfVFO->setReference(ref); + } + + int getOutputBlockSize(std::string name) { + if (vfos.find(name) == vfos.end()) { + return -1; + } + return vfos[name].dspVFO->getOutputBlockSize(); + } + + void remove(std::string name) { + if (vfos.find(name) == vfos.end()) { + return; + } + VFO_t vfo = vfos[name]; + _wtf->vfos.erase(name); + _sigPath->removeVFO(name); + delete vfo.wtfVFO; + vfos.erase(name); + } + + void updateFromWaterfall() { + for (auto const& [name, vfo] : vfos) { + if (vfo.wtfVFO->centerOffsetChanged) { + vfo.wtfVFO->centerOffsetChanged = false; + vfo.dspVFO->setOffset(vfo.wtfVFO->centerOffset); + } + } + } +}; \ No newline at end of file diff --git a/src/vfo_manager.h b/src/vfo_manager.h index 20f8807d..6656db84 100644 --- a/src/vfo_manager.h +++ b/src/vfo_manager.h @@ -1,5 +1,24 @@ #pragma once +#include +#include +#include namespace vfoman { - + struct VFO_t { + dsp::VFO* dspVFO; + ImGui::WaterfallVFO* wtfVFO; + }; + + void init(ImGui::WaterFall* wtf, SignalPath* sigPath); + + dsp::stream* create(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); + void setOffset(std::string name, float offset); + void setCenterOffset(std::string name, float offset); + void setBandwidth(std::string name, float bandwidth); + void setSampleRate(std::string name, float sampleRate, float bandwidth); + void setReference(std::string name, int ref); + int getOutputBlockSize(std::string name); + void remove(std::string name); + + void updateFromWaterfall(); }; \ No newline at end of file diff --git a/src/waterfall.cpp b/src/waterfall.cpp index 0664985c..10b4f63e 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -183,28 +183,51 @@ namespace ImGui { } } + void WaterFall::selectFirstVFO() { + for (auto const& [name, vfo] : vfos) { + selectedVFO = name; + return; + } + } + void WaterFall::processInputs() { + WaterfallVFO* vfo = vfos[selectedVFO]; ImVec2 mousePos = ImGui::GetMousePos(); ImVec2 drag = ImGui::GetMouseDragDelta(ImGuiMouseButton_Left); ImVec2 dragOrigin(mousePos.x - drag.x, mousePos.y - drag.y); + bool draging = ImGui::IsMouseDragging(ImGuiMouseButton_Left); + bool mouseInFreq = IS_IN_AREA(dragOrigin, freqAreaMin, freqAreaMax); + bool mouseInFFT = IS_IN_AREA(dragOrigin, fftAreaMin, fftAreaMax); + // If mouse was clicked on a VFO, select VFO and return + // If mouse was clicked but not on a VFO, move selected VFO to position if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { - spdlog::info("Clicked!"); + for (auto const& [name, _vfo] : vfos) { + if (name == selectedVFO) { + continue; + } + if (IS_IN_AREA(mousePos, _vfo->rectMin, _vfo->rectMax)) { + selectedVFO = name; + selectedVFOChanged = true; + return; + } + } + int refCenter = mousePos.x - (widgetPos.x + 50); + if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { + vfo->setOffset(((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset); + } } - bool freqDrag = ImGui::IsMouseDragging(ImGuiMouseButton_Left) && IS_IN_AREA(dragOrigin, freqAreaMin, freqAreaMax); + // Draging VFO + if (draging && mouseInFFT) { + int refCenter = mousePos.x - (widgetPos.x + 50); + if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { + vfo->setOffset(((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset); + } + } - // TODO: Process VFO drag - - // if (ImGui::IsMouseDown(ImGuiMouseButton_Left) && IS_IN_AREA(mousePos, fftAreaMin, fftAreaMax) && !freqDrag) { - // int refCenter = mousePos.x - (widgetPos.x + 50); - // if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { - // vfoOffset = ((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset; - // } - // vfoFreqChanged = true; - // } - - if (freqDrag) { + // Dragon frequency scale + if (draging && mouseInFreq) { float deltax = drag.x - lastDrag; lastDrag = drag.x; float viewDelta = deltax * (viewBandwidth / (float)dataWidth); diff --git a/src/waterfall.h b/src/waterfall.h index 6729838b..defee9f4 100644 --- a/src/waterfall.h +++ b/src/waterfall.h @@ -85,6 +85,8 @@ namespace ImGui { void autoRange(); + void selectFirstVFO(); + bool centerFreqMoved = false; bool vfoFreqChanged = false; bool bandplanEnabled = false; @@ -92,6 +94,7 @@ namespace ImGui { std::map vfos; std::string selectedVFO; + bool selectedVFOChanged = false; enum { REF_LOWER, From 31a95031e4fb749fd1cf57cfca56e244f38193f3 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Wed, 12 Aug 2020 16:43:44 +0200 Subject: [PATCH 003/127] Full module system --- CMakeLists.txt | 2 +- module_list.json | 3 +++ modules/radio/src/main.cpp | 39 ++++++++++++++++++++++++++++----- modules/radio/src/path.cpp | 5 +++++ modules/radio/src/path.h | 5 ++++- readme.md | 3 ++- src/audio.cpp | 1 + src/audio.h | 6 ++++++ src/io/audio.h | 44 +++++++++++++++++++++++++++++++++++--- src/main.cpp | 8 ------- src/main_window.cpp | 27 +++++++++++++++++++---- src/main_window.h | 4 +++- src/module.cpp | 43 ++++++++++++++++++++++++++++++++++--- src/module.h | 10 ++++++++- src/waterfall.cpp | 11 ++-------- 15 files changed, 174 insertions(+), 37 deletions(-) create mode 100644 module_list.json create mode 100644 src/audio.cpp create mode 100644 src/audio.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6feea033..ff30aecc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ else() link_libraries(portaudio) link_libraries(X11) link_libraries(Xxf86vm) - link_libraries(DL) + link_libraries(dl) endif (MSVC) link_libraries(volk) diff --git a/module_list.json b/module_list.json new file mode 100644 index 00000000..96a6dd79 --- /dev/null +++ b/module_list.json @@ -0,0 +1,3 @@ +{ + "Radio": "../modules/radio/build/Release/radio.dll" +} \ No newline at end of file diff --git a/modules/radio/src/main.cpp b/modules/radio/src/main.cpp index 34a97367..847938cf 100644 --- a/modules/radio/src/main.cpp +++ b/modules/radio/src/main.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) @@ -10,6 +11,8 @@ struct RadioContext_t { std::string name; int demod = 1; SigPath sigPath; + watcher volume; + watcher audioDevice; }; MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { @@ -18,10 +21,26 @@ MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name ctx->name = _name; ctx->sigPath.init(_name, 200000, 1000, API->registerVFO(_name, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000)); ctx->sigPath.start(); + ctx->volume.val = 1.0f; + ctx->volume.markAsChanged(); + API->bindVolumeVariable(&ctx->volume.val); + ctx->audioDevice.val = ctx->sigPath.audio.getDeviceId(); + ctx->audioDevice.changed(); // clear change ImGui::SetCurrentContext(imctx); return ctx; } +MOD_EXPORT void _NEW_FRAME_(RadioContext_t* ctx) { + if (ctx->volume.changed()) { + ctx->sigPath.setVolume(ctx->volume.val); + } + if (ctx->audioDevice.changed()) { + ctx->sigPath.audio.stop(); + ctx->sigPath.audio.setDevice(ctx->audioDevice.val); + ctx->sigPath.audio.start(); + } +} + MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ImGui::BeginGroup(); @@ -30,20 +49,20 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM); ctx->demod = 0; API->setVFOBandwidth(ctx->name, 12500); - // vfo->setReference(ImGui::WaterFall::REF_CENTER); + API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { ctx->sigPath.setDemodulator(SigPath::DEMOD_FM); ctx->demod = 1; API->setVFOBandwidth(ctx->name, 200000); - // vfo->setReference(ImGui::WaterFall::REF_CENTER); + API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } ImGui::NextColumn(); if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { ctx->sigPath.setDemodulator(SigPath::DEMOD_AM); ctx->demod = 2; API->setVFOBandwidth(ctx->name, 12500); - // vfo->setReference(ImGui::WaterFall::REF_CENTER); + API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { ctx->demod = 3; }; ImGui::NextColumn(); @@ -51,7 +70,7 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->sigPath.setDemodulator(SigPath::DEMOD_USB); ctx->demod = 4; API->setVFOBandwidth(ctx->name, 3000); - // vfo->setReference(ImGui::WaterFall::REF_LOWER); + API->setVFOReference(ctx->name, mod::API_t::REF_LOWER); } if (ImGui::RadioButton(CONCAT("CW##_", ctx->name), ctx->demod == 5) && ctx->demod != 5) { ctx->demod = 5; }; ImGui::NextColumn(); @@ -59,18 +78,28 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB); ctx->demod = 6; API->setVFOBandwidth(ctx->name, 3000); - // vfo->setReference(ImGui::WaterFall::REF_UPPER); + API->setVFOReference(ctx->name, mod::API_t::REF_UPPER); } if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { ctx->demod = 7; }; ImGui::Columns(1, CONCAT("EndRadioModeColumns##_", ctx->name), false); ImGui::EndGroup(); + + ImGui::PushItemWidth(ImGui::GetWindowSize().x); + ImGui::Combo(CONCAT("##_audio_dev_", ctx->name), &ctx->audioDevice.val, ctx->sigPath.audio.devTxtList.c_str()); + ImGui::PopItemWidth(); } MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { + // INSTEAD OF EVENTS, REGISTER HANDLER WHEN CREATING VFO if (eventId == mod::EVENT_STREAM_PARAM_CHANGED) { ctx->sigPath.updateBlockSize(); } + else if (eventId == mod::EVENT_SELECTED_VFO_CHANGED) { + if (API->getSelectedVFOName() == ctx->name) { + API->bindVolumeVariable(&ctx->volume.val); + } + } } MOD_EXPORT void _STOP_(RadioContext_t* ctx) { diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index afa3dee7..5fffa4ee 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -111,4 +111,9 @@ void SigPath::start() { demod.start(); audioResamp.start(); audio.start(); +} + +void SigPath::DEBUG_TEST() { + audio.stop(); + audio.start(); } \ No newline at end of file diff --git a/modules/radio/src/path.h b/modules/radio/src/path.h index e85088cd..0d83762a 100644 --- a/modules/radio/src/path.h +++ b/modules/radio/src/path.h @@ -25,6 +25,10 @@ public: void setDemodulator(int demod); + void DEBUG_TEST(); + + io::AudioSink audio; + enum { DEMOD_FM, DEMOD_NFM, @@ -44,7 +48,6 @@ private: // Audio output dsp::FloatFIRResampler audioResamp; - io::AudioSink audio; std::string vfoName; diff --git a/readme.md b/readme.md index 065124ec..d4f5cef2 100644 --- a/readme.md +++ b/readme.md @@ -80,4 +80,5 @@ I will soon publish a contributing.md listing the code style to use. * [aosync](https://github.com/aosync) * [Benjamin Kyd](https://github.com/benkyd) * [Tobias Mädel](https://github.com/Manawyrm) -* [Raov](https://twitter.com/raov_birbtog) \ No newline at end of file +* [Raov](https://twitter.com/raov_birbtog) +* [SignalsEverywhere](https://signalseverywhere.com/) \ No newline at end of file diff --git a/src/audio.cpp b/src/audio.cpp new file mode 100644 index 00000000..f7432479 --- /dev/null +++ b/src/audio.cpp @@ -0,0 +1 @@ +#include \ No newline at end of file diff --git a/src/audio.h b/src/audio.h new file mode 100644 index 00000000..7f063699 --- /dev/null +++ b/src/audio.h @@ -0,0 +1,6 @@ +#pragma once +#include + +namespace audio { + void registerStream(dsp::stream* stream, std::string name, std::string vfoName); +}; \ No newline at end of file diff --git a/src/io/audio.h b/src/io/audio.h index 784d73e7..01aa1892 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -27,6 +27,16 @@ namespace io { buffer = new float[_bufferSize * 2]; _volume = 1.0f; Pa_Initialize(); + + devTxtList = ""; + int devCount = Pa_GetDeviceCount(); + const PaDeviceInfo *deviceInfo; + for(int i = 0; i < devCount; i++) { + deviceInfo = Pa_GetDeviceInfo(i); + devTxtList += deviceInfo->name; + devTxtList += '\0'; + } + devIndex = Pa_GetDefaultOutputDevice(); } void setVolume(float volume) { @@ -34,11 +44,14 @@ namespace io { } void start() { + if (running) { + return; + } PaStreamParameters outputParams; outputParams.channelCount = 2; outputParams.sampleFormat = paFloat32; outputParams.hostApiSpecificStreamInfo = NULL; - outputParams.device = Pa_GetDefaultOutputDevice(); + outputParams.device = devIndex; outputParams.suggestedLatency = Pa_GetDeviceInfo(outputParams.device)->defaultLowOutputLatency; PaError err = Pa_OpenStream(&stream, NULL, &outputParams, 48000.0f, _bufferSize, paClipOff, _callback, this); if (err != 0) { @@ -51,18 +64,41 @@ namespace io { return; } spdlog::info("Audio device open."); + running = true; } void stop() { + if (!running) { + return; + } + Pa_StopStream(stream); Pa_CloseStream(stream); + running = false; } void setBlockSize(int blockSize) { - stop(); + if (running) { + return; + } _bufferSize = blockSize; - start(); } + void setDevice(int id) { + if (devIndex == id) { + return; + } + if (running) { + return; + } + devIndex = id; + } + + int getDeviceId() { + return devIndex; + } + + std::string devTxtList; + private: static int _callback(const void *input, void *output, @@ -81,10 +117,12 @@ namespace io { return 0; } + int devIndex; int _bufferSize; dsp::stream* _input; float* buffer; float _volume; PaStream *stream; + bool running = false; }; }; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index c2dc095f..507bab9a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -73,14 +73,6 @@ int main() { spdlog::info("Loading band plans color table"); bandplan::loadColorTable("band_colors.json"); - spdlog::info("Loading test module"); - mod::initAPI(); - mod::loadModule("../modules/radio/build/Release/radio.dll", "Radio 1"); - mod::loadModule("../modules/radio/build/Release/radio.dll", "Radio 2"); - //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 2"); - //mod::loadModule("../modules/demo/build/Release/demo.dll", "Demo Module 3"); - - spdlog::info("Ready."); // Main loop diff --git a/src/main_window.cpp b/src/main_window.cpp index 57653b1c..a20eaca2 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -56,6 +56,10 @@ void windowInit() { vfoman::init(&wtf, &sigPath); uiGains = new float[1]; + + spdlog::info("Loading modules"); + mod::initAPI(&wtf); + mod::loadFromList("module_list.json"); } watcher devId(0, true); @@ -64,7 +68,8 @@ watcher bandplanId(0, true); watcher freq(90500000L); int demod = 1; watcher vfoFreq(92000000.0f); -watcher volume(1.0f); +float dummyVolume = 1.0f; +float* volume = &dummyVolume; float fftMin = -70.0f; float fftMax = 0.0f; watcher offset(0.0f, true); @@ -175,6 +180,7 @@ void drawWindow() { if (wtf.selectedVFOChanged) { wtf.selectedVFOChanged = false; fSel.setFrequency(vfo->generalOffset + wtf.getCenterFrequency()); + mod::broadcastEvent(mod::EVENT_SELECTED_VFO_CHANGED); } if (fSel.frequencyChanged) { @@ -233,6 +239,13 @@ void drawWindow() { int width = vMax.x - vMin.x; int height = vMax.y - vMin.y; + int modCount = mod::moduleNames.size(); + mod::Module_t mod; + for (int i = 0; i < modCount; i++) { + mod = mod::modules[mod::moduleNames[i]]; + mod._NEW_FRAME_(mod.ctx); + } + // To Bar if (playing) { if (ImGui::ImageButton(icons::STOP_RAW, ImVec2(30, 30))) { @@ -252,7 +265,7 @@ void drawWindow() { ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 8); ImGui::SetNextItemWidth(200); - ImGui::SliderFloat("##_2_", &volume.val, 0.0f, 1.0f, ""); + ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, ""); ImGui::SameLine(); @@ -296,8 +309,6 @@ void drawWindow() { } } - int modCount = mod::moduleNames.size(); - mod::Module_t mod; for (int i = 0; i < modCount; i++) { if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str())) { mod = mod::modules[mod::moduleNames[i]]; @@ -360,4 +371,12 @@ void drawWindow() { wtf.setFFTMax(fftMax); wtf.setWaterfallMin(fftMin); wtf.setWaterfallMax(fftMax); +} + +void bindVolumeVariable(float* vol) { + volume = vol; +} + +void unbindVolumeVariable() { + volume = &dummyVolume; } \ No newline at end of file diff --git a/src/main_window.h b/src/main_window.h index e7617d55..2cf7d24e 100644 --- a/src/main_window.h +++ b/src/main_window.h @@ -27,4 +27,6 @@ #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground void windowInit(); -void drawWindow(); \ No newline at end of file +void drawWindow(); +void bindVolumeVariable(float* vol); +void unbindVolumeVariable(); \ No newline at end of file diff --git a/src/module.cpp b/src/module.cpp index 515ae0fb..d19c150b 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -1,12 +1,19 @@ #include #include +#include namespace mod { API_t API; std::map modules; std::vector moduleNames; + ImGui::WaterFall* _wtf; - void initAPI() { + std::string api_getSelectedVFOName() { + return _wtf->selectedVFO; + } + + void initAPI(ImGui::WaterFall* wtf) { + _wtf = wtf; API.registerVFO = vfoman::create; API.setVFOOffset = vfoman::setOffset; API.setVFOCenterOffset = vfoman::setCenterOffset; @@ -15,6 +22,9 @@ namespace mod { API.getVFOOutputBlockSize = vfoman::getOutputBlockSize; API.setVFOReference = vfoman::setReference; API.removeVFO = vfoman::remove; + API.getSelectedVFOName = api_getSelectedVFOName; + API.bindVolumeVariable = bindVolumeVariable; + API.unbindVolumeVariable = unbindVolumeVariable; } void loadModule(std::string path, std::string name) { @@ -33,7 +43,8 @@ namespace mod { spdlog::error("Couldn't load {0}.", name); return; } - mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))GetProcAddress(mod.inst, "_INIT_"); + mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))GetProcAddress(mod.inst, "_INIT_"); + mod._NEW_FRAME_ = (void(*)(void*))GetProcAddress(mod.inst, "_NEW_FRAME_"); mod._DRAW_MENU_ = (void(*)(void*))GetProcAddress(mod.inst, "_DRAW_MENU_"); mod._HANDLE_EVENT_ = (void(*)(void*, int))GetProcAddress(mod.inst, "_HANDLE_EVENT_"); mod._STOP_ = (void(*)(void*))GetProcAddress(mod.inst, "_STOP_"); @@ -43,7 +54,8 @@ namespace mod { spdlog::error("Couldn't load {0}.", name); return; } - mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))dlsym(mod.inst, "_INIT_"); + mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))dlsym(mod.inst, "_INIT_"); + mod._NEW_FRAME_ = (void(*)(void*))dlsym(mod.inst, "_NEW_FRAME_"); mod._DRAW_MENU_ = (void(*)(void*))dlsym(mod.inst, "_DRAW_MENU_"); mod._HANDLE_EVENT_ = (void(*)(void*, int))dlsym(mod.inst, "_HANDLE_EVENT_"); mod._STOP_ = (void(*)(void*))dlsym(mod.inst, "_STOP_"); @@ -52,6 +64,10 @@ namespace mod { spdlog::error("Couldn't load {0} because it's missing _INIT_.", name); return; } + if (mod._NEW_FRAME_ == NULL) { + spdlog::error("Couldn't load {0} because it's missing _NEW_FRAME_.", name); + return; + } if (mod._DRAW_MENU_ == NULL) { spdlog::error("Couldn't load {0} because it's missing _DRAW_MENU_.", name); return; @@ -80,5 +96,26 @@ namespace mod { mod._HANDLE_EVENT_(mod.ctx, eventId); } } + + void loadFromList(std::string path) { + if (!std::filesystem::exists(path)) { + spdlog::error("Module list file does not exist"); + return; + } + if (!std::filesystem::is_regular_file(path)) { + spdlog::error("Module list file isn't a file..."); + return; + } + std::ifstream file(path.c_str()); + json data; + data << file; + file.close(); + + std::map list = data.get>(); + for (auto const& [name, file] : list) { + spdlog::info("Loading {0} ({1})", name, file); + loadModule(file, name); + } + } }; diff --git a/src/module.h b/src/module.h index 2c9231a1..ff57504a 100644 --- a/src/module.h +++ b/src/module.h @@ -7,6 +7,8 @@ #include #include #include +#include +#include #ifdef _WIN32 #include @@ -27,6 +29,9 @@ namespace mod { int (*getVFOOutputBlockSize)(std::string name); void (*setVFOReference)(std::string name, int ref); void (*removeVFO)(std::string name); + std::string (*getSelectedVFOName)(void); + void (*bindVolumeVariable)(float* vol); + void (*unbindVolumeVariable)(void); enum { REF_LOWER, @@ -38,6 +43,7 @@ namespace mod { enum { EVENT_STREAM_PARAM_CHANGED, + EVENT_SELECTED_VFO_CHANGED, _EVENT_COUNT }; @@ -49,14 +55,16 @@ namespace mod { #endif void* (*_INIT_)(API_t*, ImGuiContext*, std::string); void (*_DRAW_MENU_)(void*); + void (*_NEW_FRAME_)(void*); void (*_HANDLE_EVENT_)(void*, int); void (*_STOP_)(void*); void* ctx; }; - void initAPI(); + void initAPI(ImGui::WaterFall* wtf); void loadModule(std::string path, std::string name); void broadcastEvent(int eventId); + void loadFromList(std::string path); extern std::map modules; extern std::vector moduleNames; diff --git a/src/waterfall.cpp b/src/waterfall.cpp index 10b4f63e..4f91e2cc 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -649,15 +649,8 @@ namespace ImGui { return; } reference = ref; - if (reference == REF_CENTER) { - setOffset(centerOffset); - } - else if (reference == REF_LOWER) { - setOffset(lowerOffset); - } - else if (reference == REF_UPPER) { - setOffset(upperOffset); - } + setOffset(generalOffset); + } void WaterfallVFO::updateDrawingVars(float viewBandwidth, float dataWidth, float viewOffset, ImVec2 widgetPos, int fftHeight) { From eadaf3ce6be9687a691cc78f583e657addc8d140 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 03:39:05 +0200 Subject: [PATCH 004/127] a LOT of new stuff --- CMakeLists.txt | 6 + config.json | 5 + modules/radio/src/main.cpp | 42 +- modules/radio/src/path.cpp | 24 +- modules/radio/src/path.h | 7 +- readme.md | 2 +- res/icons/logo.png | Bin 39771 -> 0 bytes res/icons/play.png | Bin 0 -> 2676 bytes res/icons/sdrpp.ico | Bin 0 -> 33891 bytes res/icons/sdrpp.png | Bin 0 -> 21113 bytes res/icons/stop.png | Bin 0 -> 1733 bytes src/audio.cpp | 259 +++- src/audio.h | 61 +- src/config.cpp | 53 + src/config.h | 20 + src/dsp/resampling.h | 54 +- src/dsp/routing.h | 151 +- src/dsp/types.h | 5 + src/icons.cpp | 4 +- src/imgui/imgui_widgets.cpp | 1 + src/imgui/stb_image_resize.h | 2631 ++++++++++++++++++++++++++++++++++ src/io/audio.h | 233 ++- src/io/soapy.h | 15 +- src/main.cpp | 49 +- src/main_window.cpp | 461 +++++- src/main_window.h | 3 + src/module.cpp | 17 + src/module.h | 12 + src/signal_path.h | 2 +- src/style.h | 9 + src/styles.cpp | 28 + src/styles.h | 16 - src/waterfall.cpp | 20 +- win32/resources.rc | 1 + 34 files changed, 3988 insertions(+), 203 deletions(-) create mode 100644 config.json delete mode 100644 res/icons/logo.png create mode 100644 res/icons/play.png create mode 100644 res/icons/sdrpp.ico create mode 100644 res/icons/sdrpp.png create mode 100644 res/icons/stop.png create mode 100644 src/config.cpp create mode 100644 src/config.h create mode 100644 src/imgui/stb_image_resize.h create mode 100644 src/style.h create mode 100644 src/styles.cpp delete mode 100644 src/styles.h create mode 100644 win32/resources.rc diff --git a/CMakeLists.txt b/CMakeLists.txt index ff30aecc..635dbbc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,12 @@ include_directories(sdrpp "src/") include_directories(sdrpp "src/imgui") file(GLOB SRC "src/*.cpp") file(GLOB IMGUI "src/imgui/*.cpp") + +# If on windows, set the executable icon +if (MSVC) + set(SRC ${SRC} "win32/resources.rc") +endif (MSVC) + add_executable(sdrpp ${SRC} ${IMGUI}) if (MSVC) diff --git a/config.json b/config.json new file mode 100644 index 00000000..cdec8436 --- /dev/null +++ b/config.json @@ -0,0 +1,5 @@ +{ + "frequency": 90500000, + "source": "", + "sourceSettings": {} +} \ No newline at end of file diff --git a/modules/radio/src/main.cpp b/modules/radio/src/main.cpp index 847938cf..ee97cbd7 100644 --- a/modules/radio/src/main.cpp +++ b/modules/radio/src/main.cpp @@ -11,8 +11,8 @@ struct RadioContext_t { std::string name; int demod = 1; SigPath sigPath; - watcher volume; - watcher audioDevice; + // watcher volume; + // watcher audioDevice; }; MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { @@ -21,24 +21,24 @@ MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name ctx->name = _name; ctx->sigPath.init(_name, 200000, 1000, API->registerVFO(_name, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000)); ctx->sigPath.start(); - ctx->volume.val = 1.0f; - ctx->volume.markAsChanged(); - API->bindVolumeVariable(&ctx->volume.val); - ctx->audioDevice.val = ctx->sigPath.audio.getDeviceId(); - ctx->audioDevice.changed(); // clear change + // ctx->volume.val = 1.0f; + // ctx->volume.markAsChanged(); + // API->bindVolumeVariable(&ctx->volume.val); + // ctx->audioDevice.val = ctx->sigPath.audio.getDeviceId(); + // ctx->audioDevice.changed(); // clear change ImGui::SetCurrentContext(imctx); return ctx; } MOD_EXPORT void _NEW_FRAME_(RadioContext_t* ctx) { - if (ctx->volume.changed()) { - ctx->sigPath.setVolume(ctx->volume.val); - } - if (ctx->audioDevice.changed()) { - ctx->sigPath.audio.stop(); - ctx->sigPath.audio.setDevice(ctx->audioDevice.val); - ctx->sigPath.audio.start(); - } + // if (ctx->volume.changed()) { + // ctx->sigPath.setVolume(ctx->volume.val); + // } + // if (ctx->audioDevice.changed()) { + // ctx->sigPath.audio.stop(); + // ctx->sigPath.audio.setDevice(ctx->audioDevice.val); + // ctx->sigPath.audio.start(); + // } } MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { @@ -85,9 +85,9 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ImGui::EndGroup(); - ImGui::PushItemWidth(ImGui::GetWindowSize().x); - ImGui::Combo(CONCAT("##_audio_dev_", ctx->name), &ctx->audioDevice.val, ctx->sigPath.audio.devTxtList.c_str()); - ImGui::PopItemWidth(); + // ImGui::PushItemWidth(ImGui::GetWindowSize().x); + // ImGui::Combo(CONCAT("##_audio_dev_", ctx->name), &ctx->audioDevice.val, ctx->sigPath.audio.devTxtList.c_str()); + // ImGui::PopItemWidth(); } MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { @@ -96,9 +96,9 @@ MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { ctx->sigPath.updateBlockSize(); } else if (eventId == mod::EVENT_SELECTED_VFO_CHANGED) { - if (API->getSelectedVFOName() == ctx->name) { - API->bindVolumeVariable(&ctx->volume.val); - } + // if (API->getSelectedVFOName() == ctx->name) { + // API->bindVolumeVariable(&ctx->volume.val); + // } } } diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index 5fffa4ee..7efa4fdc 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -4,6 +4,14 @@ SigPath::SigPath() { } +int SigPath::sampleRateChangeHandler(void* ctx, float sampleRate) { + SigPath* _this = (SigPath*)ctx; + _this->audioResamp.stop(); + _this->audioResamp.setOutputSampleRate(sampleRate, sampleRate / 2.0f, sampleRate / 2.0f); + _this->audioResamp.start(); + return _this->audioResamp.getOutputBlockSize(); +} + void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input) { this->sampleRate = sampleRate; this->blockSize = blockSize; @@ -18,7 +26,8 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: ssbDemod.init(input, 6000, 3000, 22); audioResamp.init(&demod.output, 200000, 48000, 800); - audio.init(&audioResamp.output, 64); + API->registerMonoStream(&audioResamp.output, vfoName, vfoName, sampleRateChangeHandler, this); + API->setBlockSize(vfoName, audioResamp.getOutputBlockSize()); } void SigPath::setSampleRate(float sampleRate) { @@ -28,10 +37,6 @@ void SigPath::setSampleRate(float sampleRate) { setDemodulator(_demod); } -void SigPath::setVolume(float volume) { - audio.setVolume(volume); -} - void SigPath::setDemodulator(int demId) { if (demId < 0 || demId >= _DEMOD_COUNT) { return; @@ -64,7 +69,7 @@ void SigPath::setDemodulator(int demId) { demod.setSampleRate(200000); demod.setDeviation(100000); audioResamp.setInput(&demod.output); - audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName)); + audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName), 15000, 15000); demod.start(); } if (demId == DEMOD_NFM) { @@ -110,10 +115,5 @@ void SigPath::updateBlockSize() { void SigPath::start() { demod.start(); audioResamp.start(); - audio.start(); -} - -void SigPath::DEBUG_TEST() { - audio.stop(); - audio.start(); + API->startStream(vfoName); } \ No newline at end of file diff --git a/modules/radio/src/path.h b/modules/radio/src/path.h index 0d83762a..164c436e 100644 --- a/modules/radio/src/path.h +++ b/modules/radio/src/path.h @@ -19,16 +19,11 @@ public: void setSampleRate(float sampleRate); void setVFOFrequency(long frequency); - void setVolume(float volume); void updateBlockSize(); void setDemodulator(int demod); - void DEBUG_TEST(); - - io::AudioSink audio; - enum { DEMOD_FM, DEMOD_NFM, @@ -39,6 +34,8 @@ public: }; private: + static int sampleRateChangeHandler(void* ctx, float sampleRate); + dsp::stream input; // Demodulators diff --git a/readme.md b/readme.md index d4f5cef2..f89f0243 100644 --- a/readme.md +++ b/readme.md @@ -71,7 +71,7 @@ I will soon publish a contributing.md listing the code style to use. # Credits ## Libaries used * [SoapySDR (PothosWare)](https://github.com/pothosware/SoapySDR) -* [ImGui (ocornut)](https://github.com/ocornut/imgui) +* [Dear ImGui (ocornut)](https://github.com/ocornut/imgui) * [spdlog (gabime)](https://github.com/gabime/spdlog) * [json (nlohmann)](https://github.com/nlohmann/json) * [portaudio (PortAudio community)](http://www.portaudio.com/) diff --git a/res/icons/logo.png b/res/icons/logo.png deleted file mode 100644 index 6b4ec18aa0abeab6f93dc5aaea7da53e32f53a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39771 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 XtI<(`?WCPCfJ0ecU9Mc_{ipu{K{O=K diff --git a/res/icons/play.png b/res/icons/play.png new file mode 100644 index 0000000000000000000000000000000000000000..93684dd27ba610dd5c696e7c813c087b4760bbd1 GIT binary patch literal 2676 zcmd^A|5uae75}{N8^Q~kCK0NbDQ^%YXt86{R8FD3uL1=sD#zI+X>koUR*%R8XHRu= zFd&|+}97A#^s(^GA75OwRYI~}jz3VtQs85xRajSYy!Izgmh4#D009esXyZ_fQZ z_jB*feeS*0#mnkdWS@3ESPqzL$1jJ?)<}O~fweexkvdzhP@$Y~0 z%kw90IX2atTX?JJ2JX!J$LyuYuX?wO{kb}oimUB-w7RC8BkP~qNqew%MC<-Lo${V9 zglWzPr}D(8CEKbptwhYR1th~X? zK&!(l;%m)8af2BFH6y)CCNHS4n)qJi@$zXk##g|%-;DJn$mjZH@Es;m2${YGP=4-* zTf;!Gaq?6ZO4e!cS{y1qH6v{)ls^(UgMo`^j`QelH{hTVcCid~O_2M^cQ8xvhtiRfYw#Aa{BhpA0mgR!fyE#%j!{nF8e%Khg>S z*BP}$k#tjhc{~Es{U}%tbdq)ri_EJA#Kgd^Dnm*#padwu0!>*Cft58>MhFTBlB|j2~&t~HSl&|9*jckg6n=Qi+DUj!SnU-C^ z=fp>kv6%S&M_$(Y(YhGuB9mAKTS_(ZBo_BC8Sspp<@<4)gvF0HNW4d43gCxanss5oqv|D}Rb?#EREM{QhMK9K#jL7KzDPW7D4Lk@eHVvV~G8eQbK30&esi*+S@WN%+`o$~rh;G7Aj*L;sNJl}S*7 zMH2@p;>6&Hm$q%w84!*-+tfO}Yl_N0CB9`-jMbuC^vn=Ag zr@Zd|_27y(r^20lKzvBrpIO9>RJe;>+G#5Ic6fwELwaNJ;dY^!LVCSn{4VjF=;+eE z$HP6vB4*PYdc8GN8ciWRzjeISGzoPLR|FbQvbQ8$L7i}>a^xbdm5xhY+FfJ3uH!;b z%h@2`FPg~ML9g<6BNtOx>?OtnF)$h|Vxy8TODT!Y%<3rYReH6iI4B#MtE}`MJ>)2f z-gjVN&*kkZzVSv-%UB_wtshU)Q8S$H(w^t3MJ!^ZMQkNuUA+rCre{y+8l#YKrB_=> zXuL&Cp*H7rL~Usl5^{Vmu}E zW=XiXo?5$dB&Tv>p%j?!5*OGR{I_BJs6H|WJOa%DABjU#;QPcQ7^s*}dWZJhONZ~n zD?;}dG<8hPRRI%&k#nIP-|{$dqf1*tbvkh^sJ-K0_q4OhpG}GGi7^H;WjVZrLSaC4;70#R!)}<@|1VjJs%~!FWK7490pw zSFu<_jGyV~L3@PES{IVkF0o?nBzV_8j{aDOmVF+<`YM#CbeWprX5T>cl0m((u|25W zUCPK$izcK@7WX!fa7i(!r>C(y74~e4sB3beG~FfE?To_L8Be*BG{bLpX^$l%u&uc& z(wv>-_asI2BSrPS4S~v3rbY8Ou43~DRh zkCHzxn!sDM5qk-xjacmw0*hIBZb=wfV|-m~_5`wQ=(ygi9ZaF!+FTXct+!f3j9LfB zcLUK0m-1!D-J$4&4p!Qd>Wr-A{pUhVWM>m&WM`B2fNBxzIQbts58LvegEd1MnFR zg*}`7@P@&_d49csC*~GxW3YjL+;Dy#gTDD|-+I8gL-ztu^B92eg8-oCO?ZC|t~(t6 zR0M$eF#wWI0DzugE_#*2z~$_U_hTa2Be?BfDz|y!2E3hc$9S$+dpN80co&* zz!Ku%gAW=*4}l9GU%)%}CLiFpGmh|E84Tz)!w0~h9P|b42A4jhfRY%9Go*8;2?k_B zJO`6j1JL{ofC@LP>>wGM_aOnR44y6nUAYFEv_k!VODimomLWb1 zaQ`B`jHMaWF&hvD+BfS+C&Om|--FL^zfE?+{n`%q-Q4E& z9>|TC!|Fci`eNV>^~0n;HJEq8fHJ6m;>0%fWv>~8=L`Ax<@M%%UY^<13kbsM0szb3 zV1s?xI^di4Hmv?%_rwK}FLVLTz*m5o000A3HSWX)(0TO;Bpt^GZo4qRZ4Uz}^=a6C0Al#yz83HVE8v}Yx;o1>z;2DL^9PEYo3+cED zX<`579v~f_2WM-t0YmQ)P^iuTeSuJh5zSyLSHlAyhe&{Q=tB_l0`d*f-3tT0+G0Sw zI0i%uVZb+d#sF_PKRR2G?t7txm7izNlmTu37;wpR1hYP5K(_8R=m})o@ z1YD^~04G1a0b~BOn`6dd5-3Ueany^TXJ5fy~(={W7ro2_ejR&&GP`x8JD6C zn0f}l^JlQ{J3fo|Fd$h915za585<@8*n0am&+eb*E>zq+chEWmpzM`gg18|bKa+!U zy#hdQ33e}{eP>eg7_fBrfy~77o9lq{4Bo~CkB;C2&1*_PCpQq<7GzjCSc0$%;N0H( z;TbH40X`fUka`^2JkD@#bbckn`8U=8=qrUXLW=Dh^4|$ge9Fh}6SLv~5D(X6RpbSv zBOe31!`nePw0&wcFaXg3t;-9}T@24?SGaGIB_Yi{839N=x2XrqoZGBP{n&??uK@5jeE_LOY`_oBhxQ^cbhsF=}d39U(k8=^Edy>-v~aEA1r^N?(&8FMeF-l=Gy$`_va&; z3)$=g5cj$exF&@6zdS#h8=b+wKi|EeO@?TVbp5|hldbce`8$k%%|7|#wf(S9ezk}G z)6d8b+Xb66Y{(D9UdRFb<$`O38wVo=TM=xFu>CuH`77Td7zh@ExdprJKMEJg8j@$! z{#=F;OoT(>e;oD`R;cHp-pPPx^WV4K5$uKkD15Z$Ox5r94b*vWZf?@ykNNtag^gff z;j3-xainVBnEpNZe??yY@tB|ajn3YTpWx@g^`pLjED!$}&L7bb!A5=>^ii?4Jkp_6 zUU2>Byn$CO)ODy2+4*Qp7{{N(fpZ~S1Dz3TNbmnFyWh_obWZ%RnYZYjXR^ufHF)-; zm;~~9w=Q({p+58uovmf}ew+8F`H^jod~?&c53y&UZh0gqj6J@I2ZTNE3~f<$=%Y(- zo`tnq&@O=X0v1Qa|$i|VD-q~*?&l;?!9)v!lLgR z0e1?$z`^z=KsdULwSB(%Qf%%MBo}a=QWfYg?8X3nC21g>p9RBYF!qIH?z=1wS#HK_ z5HCJLKjjbM=YQY-aL)83ML;8fa z@QKt0#AC}?e`ea3aud#XJcjRV+T+Lv>%a9KhiF~^-unXZ!5?csqO~BJ9)htWv~C1@ z3zkOZQ!wGb{l_y}8}fmWFZ2-lTqusV>_Y^QO-L}h0=#nWVC^{UTEF9f;$eQA7?1#c zD6~(o?+^{YH?%hGchP`&WD$g>8~g?fen0e(;djqyf9JuNl;>UyKznS<&KwD#2gmCR z0bSoHD2bN*-8aZDsetw_;=@~|O+V!aeh`Q77y4M(C?>fT6aDcXtzoOdwIiRxYaa$= z$w8Syw(izDIM2H%QLJAn*;w*>yy15!zKVPW^MZaCj16Mj1Nb)_@AvW+mJi6US;X4D-{*kek3d-n zg8m=!m%qY&GV*9AR+mu?PW_JOTd+TA|Mo44iy|Kr`6n#~-}@7!HvQ}`xtqQSDzLjCc0!A8|nJIv@_8bTHrn`m8}cka3O(xbDUU zs(P1!((6bt{*ZQ4jvy>FcN63>+Aj|vpWj2B9?rk1SD#6JmtVM!zk80uIbI}P!1{bd zBTGQNG9J8+lLhtAPeXBxvxP}moq_b$6OnD89?}`{2E}2JuZ?5`(Fpm{TRI)Z#wTo{ zAL9k-v~~7nssCn2u8_v)xd_r3`Em$;BJ{P#AbubP>V=jR*q(33d+SiEJ zs3G}zr4QrPqX5i}z%~p3@?*Cy6dyx<=-mQbB#LW6Il#&^yd&TCht0Cpk6?VCAH~&? zp29wF!T$9g0Ao2QE);%X({3)b{LPL+@pxoQqjzY`BPi3qe*f=2BfPg7(tSVMk;sll zeOvF*{ojT6_rCvi|Nqa~(SPg%AowWuw+M|OBnP>Mn=5vq{|=1*jc*Z-2v>yj7Ty1R zul{eW=U>~42gebsT#BYkT^CZXC+n1i*L(vYob?AB>rx{rdCO827j1(03?*@~`Jk{{3~8 zI>9_z0|3b1+G@kK0H8X6pRWbz^liQ0x})z9QpJ|bTR z_G4>=w*01F$05D)?_8*^0_F97p7)RB3ieI;QGt}?OV}K*T2&&jhBahGvBx%JJU@Q} zab1S-85Ea6{&&VH7-xWaUX(BYk;~oNfA9nLXD6Hm>|Z*u_`*s_@HY*v zL#p8|Xbd|9dT(yVCsEu1#TtHXDCUD=A1L;PT|?xd&0N9rGXQM0XR-jG{rdCuCGWTQ zTjNlUAyyFLiUS58G6L1ABy6k~(G`n7#634o4qFd^`mlJT`*+&^xT7^ex9{Au$Kdf% zJZxMF;f-+JqCL8!XVj0@hUz0nVO$yu2kFb78;nVT68oRAhdE#F?11I&k^@ z^WV`I@dL#YIXYT5`yt-=qpR4Mu3mWrHkOU{z*Y`{{{3fgL-r_ehj_X}{5&9@sBQz* zCZgC+rYww29ofVm)$yP;#EZfB9;zAGlBF$~MY#RN^LNgN6d08T1DvsqAM{0WDHQue z@mnn2A?`?~e6lUU&?AP;crsicil4NEa01h8PoSfI8hAk5QFA>)0gBa#zzoD~D~5t} z5R!Ye78EB(yg&`@hadGP|0Mn>mV|J^?n#IvilreLDvuTeD({m4?$~C|0>#mhp2600 zK|Fr!4G0g_p%h-gg>r#|rTr~w4shs2Ita;t@q;aVw(gM5C?1Jo&Zxc#;g90pC|-qK z=hnEtLVq|9ib10IIHED>&>XgQ2jyFk?4UdY>gR521n(o@9{B}tEN&2=W`oW6B&zT7 z79az>FEg<5MAq)!-)ele@Y=e=@7jzu^95*Mpx7#^hx#E$Sp2`s|5jeGF8nuoKwP>X z?*f9&?|;NHJzm)WRKK%@C&C@!fat!}_d9w*98irFihXb4&~AbYg0f6tP1qcEUR1L+ z?!V(tzen{gNT;Ij<3zvbwcxy1c&L^)TN8kn8t|^QSVJ#< z{xTMuBlx8cI|qchm3KigY80ARN)p??C?}=09D-IIQIkg>s1I zLp6WDJD-2T0qsqsUl8up1CyKi;4QxVH13ahy@mUN%Vtg*(F^5eyWx5JJKVSCf%8VZ z(8J~l5T9?pee`$viSjdB`2uui{4N&;=R`K6|4VbMjzqfNHs5_S{=Eh7=R2hFAFTn& zE2`Z?XDG@^l&k!r_kNxO{*8F3`!4c_ev3}i{$n1%u_(rmY&|58DA!W0@e>XZF47~6 zy@OcVqjL%67yoc?LfocZ7KHhqT}N7Q#h&Se~{|Sh%~oy0JOM zKZA?%u*fz-^P^lWmbY-O&LDQ|?=z6xpgPxI^PxXz4RJ(spt{2!eFzuWkMg=G*NEmu zHKT);-*JaHV(TNG45k^S;F`Q$A)5J!|#MLH4j@CW{|AMMu&I2W>65O1-%682-qApQ0aVjbu= zF1HK4H*FNS7tpzY&YwS813HJXIu*$%T!Y;iPC#GXj6D;T;O}F8myiDmcjRy6L-|8; zjm010w*ebE7g4?u^`Z7Rdkf+Jk8CZ-qv40B?z8|)N3@@1U=8Yz->@JaZs7v&sD3r! z1QCP>Z4wCc+674PH^ZWBpO2V~~&c;+YbV%XtdSPQXwsjDH(?L8y4cUz7_fN4ZTOQw+3m2`nJ~e2-cZ*z;$Bz1>a%icI)m2pMRB~Ka17CZ;;K4>hH1p8La{N zKIjg03%32#M?A6s?z*XghX;O-58B(<_8rG9eU9olw(`8F56KLoJGK@a(eK420IIwJ zsC@8StMGue!)3qsl~7&r&tuTv=(|_fV7?q5>thFJ7y;V8u}$26^-19xkPUb@-wj(k z->CcDR{aTIgx?l@kxoIsr9$$wB_F6J9Q{5E)%v2A3Q)d zANpM!I_tJ-SCCFZdIZ(mAY2h$5&aSVAxEJt2IU=lUjHQ9=xkaShD3VicQ~SXQTu5vKXlfA zkp4gB+}cOK-na1h^^WlRwf#Eg&z@0zM{V%t??BOSK~bv?1Yq#}@8y5I8NLhp{W$a; z%E_a;_&=Nff203bI{lIU|1o0`*J!X+KL8EV|I_sw2!GTNAO6qP&%8zTKzJC8GrIrRDwYuN|8HE* zXqk}CZ_ypn{ej|nS#lCa68J=ZT2AKTCKGTl#DuWtsztH^1|#+Ow9K(fHtk;vZEY?$ zH7$WQ>#7=Y%Dp(a3?Uw_r%PjaJujQ&1h(gUNt5%Mbsp{knq?p zn=5!3xVNMQ14w;vcwOqHd8x>S3#5`1$u4(Fb9};&!12SqCVf;9|1s{obGV0Vua;>i zZNewgT{s~)-1svt%)1DQ$v=}F+;KmEB8K_^4v91Q+w(DWpL{M7ZfGT}-i#*iB(o<8 zA(NS3eayMzey~9gdk=Y!mfXj;W+~FZ%)0nnB}R+T^kmrLhj^6(xE@S-=WNKA@GMed zI`)jLnw>5oG9GiHULrg~mw|6*u)}M&E0HkS8p+aj3lnKA+GE|0Z&uT!m~8M>eQpnM z?(pjQv@I1c3jbAutVztG6sMaM^AgRpgZ8D2sjIPy5raFY@p}BF)y;yWryS3aIEhbF zH4LawNV=8U^RwsTE8yLMnU`R&jdQImpncHWS)$eYnc{)NUfY-WX0AD`Se)r;00-Tq zXl>|52UYywXKOajEiS9hO2HR#>FJF)*S5V?I?$_ffRKi+hc13%e}tt)OFyL}^D?Q9 z9ADpA>?=n2LK5FqLw=k6)r@@ql_H?E&+r{g}_}tqTJZVYX zV!4lfSjfxTI7+I`JbmZ08XVc0!G6uIGtY^W*7-BBWP0zCw*RGAMSRz9OXuecl;7sj zz1=y`7W?g*><$t)1}ZrQw*FPpk0Prs3OH&dtg**qi4UmBsd*&jyrh%fW4`@hk8JGD z3DtnCsF77R=g=x%%@ah2Fl=tR+D8~TXIleS?-7v2?&uaKl5yQ>caGf1$U|8rW9oeD zYwinjp&*@{fjNL}f_k1_xu=9-I!N5y)+a9!6Jcs&j#uEgGw0z&GALH~Oj$Rq&u7Rs zMwh#nW)SP8kKR7!`XNk_jM>7OnKZy7wIf~efIG!e=_rB_=j-jUiev)EUAEEb=O1=E zesr!X8&h^)0#cNE$0=3kcy0gVaJ6nSq#tmSpEj~{itKq4Kxv-AK#%ztcn zB3Ny^-lafQk2|*>M!55{#Z{p*30y1E;2?(FBCxk2qUSSvGk*qgNT}&r&LO(jw#+{A z0o~MO?UB>L>xx}u_{L;jE+>n*oQ+Rsh_g+so7v&-NFgv~A5wYu)kP82Jt<=PXa=V&$kyc*7XGvRC(5W|972B41TZh(^s;8b?Si(y5 z3q_}?Np1`om5YeKW#wf3+pmQFvW^(nfZb1(nN;7|TI$i=cpagg8*ZxYh2v`dr8Vt5 z%?Xp8OqL-JGFRXG9Ap<*+wsj$v^4D|acupl)u&IiXD{24RI2j|e-`#zpWiOh6m=$? z@2X~1^@q1Yg1Jnh?Xj^GV=1wDI9JqTQt+;x7vWImauwdijr&x0mmp3b&2I4qeqKYp zGNu4tW_SNbc-d|DBoDm99K%a74`j6UTIOU@d;BV@?Y%k!tK%a%J5uG8)jpHc&O_AM zd8N-L<(_5;`Y$SI)T}6ZA26dvI*0ke_{^(#>b7DOama zuH|OsT|a!NwyNhKt_%ODNlNSl6*G@Zh3N7VS)0lsfq5P)obDx!^G4U5EAHAxdLDR& z&s$lR(Mv_sFa=@TpK(kWs%a$O=BC50-Fa!}QN{^EiVt|!@~&E1QcI6qs-+#6I_E@h zh@aDTtyryy-cjtI?q~a;PJiwGoF|FvCm(h8u3JL4E3#rOcJt76zh6yyk@$tSx!CLN zVnuqIdzoF&h|cn>7XG|kA$`e0-eKbV*%yvTsubC;){{)po!C8~A(kIga4AfL{iSw; zyxjR9#`9|UC+Nu=*bgp^g#@EkJg`mBRBDYs3RW_^Xu@Z z?N`Oa_Dy?9V-D4r+obQw_oeAICf)?YwP-|Aot~%WafPiFH6j}rlO+i*WKz-kPPVC#?26g>0>dxoovg1m87MCK z^=OvfnN0lmWImSs=6A+c<^6zXL*k9|If)Ewf~W3&vo>>yWc%PCiLW}%!+c+5NK~xn zQl7Ymr=Levva`eBz8!Bx?&BI0US`JgrtRCFFr1ZsfPhNT=Mv_4V@P6}nFcJAHf)85|q4Q3d004usmqDx9#471Z7ta3*a}&;y`9A_tjj9kA7pJh1)4`vU5uoC}V8W zg*+?ENgH$b9T3C+nif#38dc3OZU3epGZ$k_wVl$E?!>8uL8ADQ>K(7I-3WM&%YH73 zfZ>QhQ>#h7M8+iXM9MbJ%RPb|YsH1;+3A;E1fW#c*1cE~6uP$7aeF_wMxBvsO48l7 zq9l0faKT(5X-ppVtJFXob3F2M_g(cvEXm^ym(uXplrTj&Zn9_g1qeiGrWNdZ!NZkt zm%3A+v2|QjV|qTf*LroEsoyoNAb&zVJ<8d&2|HC@d*9LSmEbp1?B~=v^XEmn4j0D` z+fvC@wh!er+!L5p2N#XP$aY7)#OKXgyKAt)b9r}68i8Qi!`jDPKBq!@wqs;6rcQfI zEBJKOr4QNbX_FQ&YGyt4pH9i^?isoOR+b8hV_pynZdhxRN>ybFHJ4Rb_ZVerjkkpy zz}p=Yckb@R`dx-JAH<9-_(Q0yotrG5SX>?>!c$+W%S-B|=1`L`)c^xuKInJ6%`CoCfigG1&ElMA9_*ZOc?jn z?_23azFNRSSC749SAiS-Q0EEDLXX8Rs}C>dO7^Zv+Mm&$Wn_pD+VfJO?z4?`5Y=VOts&f*-7k+b{xNRlcrFgh_qL9QkE7SH+glIiSD5+0z zds5J=)bUy89XQAD+sLxiY2I?GJD*kJN-)M)_8KHb4}3WnS3)!Kq-NcjYQ|OXqo|pT z-jw4Zb0Xy;9NN@ik)|`-@PptPYFQiiZ(Mru2`J@DKViB;`h#KpO`flT$BpH z6Sbh)6Q{FcueM)}+J^tN)l$AV-}tdU=6M&P^}@5sje{}o8P1)P-4k@v__Ou9`XLh8 zMtrDpkM8y*BNeO3$Y_-D;HNe<8>f(J7CS{+pdL_mpXaKqgVIh_T-%pLG)9cA6WZ2Q zy3xH4dx!~Agif}7eX>pV>!DB0B(>*9#%8+orSw@?ySP%Q6+#J~4qF%c`Y?w!wKVTh zVn6BZgX>SUFm-Q4SZ(#jk*O0k&V+$|i{Iv|J>*E!$vW*xKT+{pRhVb!h!Ysjv}uU> z;*oC`ZhCSiU(DyQ0jWJKL>HPT6&1|;g^E1a25@I+NKTWaJn48`SE#nrD%(#j`T zMzzRZ_R-k*uR0#-Ume)LgTNq)0GeKBn6j4Z-j6TWJs59O5(;v!Rpp!rHd?ChrAWx* z@(Np!@nWi&ZvLh~L)~yj`7`yC`1IbyhhRTXY=F64$6%$Y%ky@*qT-b+UK9xgrCPquP94q<|H~tZk{Fo;p({{{w7~#{Gy(M zn^VVR_Qv}yweGyxdP3hVdP!y{-)Yv4po#l|vW0e5_k*O>xo+5LnG*E{KBghY^ezap zMlRqB`Pg(UEzgr|$mRqtpBN3cjaySVA`*QHY~;p~^CTzd)(o>uYh=yw>K%F!_S-K+JmsgcZo+T)Pe1mA7TFsu9!?N_h7H$57xO-ADITDpFZQNP?zMwEcRYL5E-RN z@mXQuYoL(gmxnUvZ*$&?ou4t}p6))R_j<}OI=)0MDLV1J#K!AqN9-PQH-2F|XOSvs z?B-wnB&|GbEcWFW)lieFL9@Ja*thnenW4-;yvlk#8Cd^^oL;rNB6yb z*-;a78N=w~D^fisa`t__(w=eMVA^{cO?*p}3x;YA+MG%47x6fjBzDKtFqAZpwcSV! zQ#dZi(soN$_#$g%16!AjvF)RyrBnGb7GbFt0>*DTg%*XZ#Ny-MuisVikYAm*@p&lX zFDtrRk0w5=*W$f&(dh>YuC^^zF0`~eFG))>QprR!*X8)`#&BItOGNvZtAks)< z&BW)AdqsnKEpN`r#$f6`v+)NKqeE^VeNUdq$Twir>R8*u_82^wv8KpaRSY|-Q^a~q zMwQ<0R@-OaVjNvvA2XWZBF*Y59;Pow4oI64i@>NnUm5C{M2^4%Kf&2i(>K6kG%7+!{F}{pncN30L06bl@79 z&n7#~4*1A=X6LRrN#LB!$>TnxT9a~3E9PTAanX?oK0&{rDxr{+Mkk$VVv9=UtQ8lb z*Eip5?%&H=(VscpJDM_0)q1BjDctWt(7I@cdLjAQ0vDM#Je=|Vu_9jYKRdV9mPIBN2Q36r*%T_{MMtM((w_e6va>Qx#;46=|#yj1O#j@_qp#hrFULjK4 z<X+IV5BIH$RfQY~ja!y0O zbXQ}`gf+-wR)4nl(u^}Bx~2STk^JJN#W<1kL^mFl95=Y)yuW;pc&ET*i+e#@L|7y} zW%v7rLn$KlyruS*>Bi4E-g>$?&=D6Ld*h z!DDm6OM@HAJt>J>AA^Mc=*FsT`HJszIaIahUa8Qi(5n z_W-B>rS_wZj13BcyA=e9w~;TN9rAhbwm#tU>0yoWVwz95@g6*UW@~aWVTH;%`E09>>C-%g3CsLZFqNp5iO#_>P>7$JKy450ehv_G}@Go<$Q#lf6<}Vl5-5ksmYuUcN zzJ7dZJ^s^m)*8Fg0tp)G0EuH(+Zv3w?PR(?u7qnDTxEXB>9Mqf?EF16TSQk}A5FG>}{%}lQ5tliwS!J=Z*$xD`%)fqvWQ~U`Ei{GFv*L$DC zjm1<1YyBgJOI-_W7h4$2YDH+Pm=`p{*GNTL_^X&dW}dd5Y510qEmC%elC!g`BCFtX zwOpsM=DuC7^4cH5*;97RTg2eVmu){{BFV2Dx*&^O$;T0C;g{`vv@{|t;tPy zeiPJUTV>)djUQJ$VX*ytI9}U!yKA;YuSAo0%ym}889FUxl1@}w^M~+WU7=t5{Fa=> z{0;3@LJ3(M;V++_D@pPQI6-fNyH4X7s8V=aKU8mTz3RW5Y?_tlR@`LxbyR$&k>ArR zs5ILAd=4kheB>>AvsKCml+XIzAFgn7hQE84%dzegDZriX)h@F3+^7MndsVUlKHNDR2kQ_Cp2<;wy>hx;Dnfa`z0&yz^QY~ zyJs&7j?!(k`{A>8ZjenyziE#kZT6@nKdIiEUCXU>E>KqICH?XCD%Ots(WXoli&kp^ zIyy*UFYf@uaR55j(yhHs$j_>?Ayt7eLD04(6{Y6Q+k8t&Efh<3cYuev}-R0 zoa%8ee{CbipD8z7+;6*(E{oGTaYRqjC%p7z!bRyjb~LhKFI59pSdaSc*C?y;6FBQy1<6_j-Ie1T9!8xBKx$l!ISNg*NL)zWc&i)sS z0=6rak}fZfP#mwPT3eWIvAH{S;`Uu;LW){#{H(E>M1d@u1kIBIk}7xK@+|67nP-ax z^0B<aE&L4j zf`$*XdF@1`h?w^GWLO>Lx%TpKl4f$+{fLl@%_@fzyHaJJOZL$W(v9CHpg)|vp@Jb+ zyPOkCjE@Kh_DeMgtbLwVl4-x9s-A}*oH(1DFO`8H zCDezX|5AA1UJNFn^8V>(yq&q3=ZBSJH1{9do3yw(jpt5iyUk5pYMAw6>GPG1RovQa z4$GxbuC_>J3ZH5&BFyu0k3Jh&d0wi{Q=x0iTUZGU5`Cog}r zQvFnBl3+{c?9G?&MejEy>9-eJ7v1k?Xb70cGtk_Zi+?w}xRTuN)d$8ggQz9R>eH!l zE*_TAd&I72UG6>~e4lM%SrUlcD$E;}!9+%8*m++XcoX3$m^ZwbRQ7n$^LE>d%h0wS z4|_>$$3;0Td94U{5B<~K{&I$zcQms!r>~YVUSzK+xT00-OqDfg(>tV@b4*YIx9HKj zo#}_A+(`$Z^`Ypkx5rd@v?$N|sc)LX%Bi4=$K)QF!~9|isZF{C4mz@w4PE^*<+yqt zc5*z}W;_x6tkIV+-mvQV@dYYr(gwPotGfLqgHOz6iu$-rjb5Hj>XB~3Wvpg;^&q-t zgCdiH#ar%eMdNHDtd^z(p~?Tv{S zkrkg^CG<}Q&o3{g(FrN_FJ|Q2eI@eod8CwT+f>H0F8o(dc`lk)*n6HGTdj|wx)@Gt z`a~UeYFhC}t9u{B3Jfh0$;gyWxb0Vj5v+F{CDqF-2g8ZIQ}YI`JF^@J(C z3HH}LX1O>YL9#^S&Nwcgj({)&dzae$aSk8QVtPia`zvT z(xFkT53B7z>3{3Z&5*cPT%(QyTOlxBIv~uYXah7%dFjQdI_=0SFUM9&Mmtbg>ef>nLa;u zXmnL@fjo$GxwmVo_x5(g9lQP96uZ_#$*SY@HT>0I}cZgccKCmsoHO#+NX z=_!NKa)y-!XI6jiBeqYuUmx$EC*!G8e?RRR_(mT1CJoQtm*`IVm{!Kq5WVzt-O5aq zXFPS$a*%w!=3}s0oPqRPDL)5yl{027IeyH|=b;SiP99<5ki@CzB*6^eh6&e%&nJ|T z7?}kM426f^OT@oHN8cT_#0P^o_50Qg+XK}uXZw6;=ASKImtb8o$}cjK((;Y5EG;x{p?u8hl5sNy%<{w4TbL&_=RW98QT!Z%+ORm2^azU*etF5-K* zqa*)YH%v!OG6EBgAj7MyOm$z2t$Uc4S$H1aS)ad=Z+~moy6r%Vhh2)%IYUSk2M1by z)rca$)%~m8^=)#gLJk6E?|LgTLmcm%JoWLSE^Xx;r;EF&ExD7)wgm!m7(5#qwk&>U zB$2a@U!dWL_t82%zJ^w3Qg%RWrep3!QM+RpAwwIlmc*xeN5{^7Xm$y6Yg`q%p%+d2 zhKg~!E~R1v|EXxDqZrlhmEKxfvFir68YURzF`3&eZfPhsC#$^vqNu*lj#TE<{73V+ z6Jbl=XemcXNomas_TA4X)r`sJtn92iwX1HKRM6&Q(Kyvc^3KpcrtM}$xxn@W?SxrK zRs3rQp9hB~XQw>cL}3U!fKoy0WX?8Gel-*ZSMBOg>#62eb6(gu(}vc|W)f3QMQS?B@;w-y*L8LK_%^^xujf{M5=Rf$u6u;W z3@c|9wJ6A6uoStoX?@esy?tu6P}zz}s&(~&SU#CxAEqu zt~@RxP|@PDB&T`g%N9-;7w0!q8j;UHZ>JhOT3qb7XK{ykdj5HhVz?EX60HX}v{bUS z9`UcQ8mk)&6tbBz%PP-N@2{L1pG{Xk#F|(>HK<*N@5NL}_*EqOvILCxic78^HP{>a znjniZWu7_kg6v~$6{3l?BfDZtFYK;K4S97B`gwP1^ek0&D9}n&yAWCmKRA3^g??g5 zF)C}scR?&afpno}j-~shXlqQIh-WU%=l(`Ey&FD$^lry)cd#<*%LdPsXUo=1QGRkx zHnQbUPI30kOC`JC(n%g;pDSW_X*-sL$xWO2av$njoO;Q7?8P+08w zAaJ$zxmOW*QODME>#URWyE=yu!WREEN~y4UXK05kjHz`hP2=8)+%}|)!DTQgymPjZbe?h5UG@`U! z+>%Ge+j&V}O*`w^v1o=XD*aCO&V>DXlv#IcFG3L=XE+lyBnn(~ z8Eaega6hrp=h8brMR3^P*ME$I&#cuz4L{yrm76tj|HPo2k|5Nd3*)m>7rw}}tE-CW ziFh}(gskttt#w&z+N!yFK0Vf>jmkXLc83C;#PPx?O&`W`u`yKvJqBn4&5ak>SL04o z!!x8cq|DxY?BHy8{Dq^=gh7K2Kx212UrOeAQ-T$vN1~~b+;!^jSo9n{PSyo(pYD1_ zU~g9Gum37EbQmT9b~kw}jF^o)lq50Wc|`HH#MK$5z95+Q3Wq<<@7#Xegn`!9=T4Bf z@hzwkuDnjh#q4BNJ9d4EQ!wI+Og>jf3*31H_uB4b$9j>WB4(%|z)&zK@;t<9ZQ$Qw|K2N7we^lA~ zq-m4IeqGaZ!$i1OA}&PSU@FNe>)zMU^?aOndmlx^B#EKP9mltk_ku5D==k9#Oh{yZ zpdr9_WWLPX2Unf=5_6LpzD%Gkp-yj>S?{~a%lDscvr~;Memt?0<-F8DLN|Bu!%8bD zQ;TsD5svV#rr|lfW$shHE(|JRLiLpg@R`k6-7de*6P?G?V2Ba)4mW;~FVf6=u;)qd zHCjv+O*3S$V*BHo-4e$r*H7Ol@HwB7){v>{);X-Ka$Fv_e4qWAY(d@^o`LR~P962z zqyXyq&cZuAx--~-DJS(riEV$;2U03jvH$%~iDhWJYT8#s` zg)67zSh@;@3%c528n6cFud6NUnp%6@QYe`%uvt29S*K^{VLux@(NcUevt6I3_?r?r zwIiwdx>1M#vpC@jbtkLMOMI_d?P|VyZG#31O)VSmIieB!3p<*IW{TN14r@EG*`;F& z@Y=10NQ&Nk+t)b2r*$KOS%jFaD6WnTb8%aIeA#6oY5P4k`aDZPjlq_6uEX=Wjx^J& zkJ2-4f4qK0WB=C?_5cT3EBgaypO2+cT(RfEr`0R z6`pz2aU$A2$d#n|#96-Gf*jTgHZEp9t3g_&TB_ldfo}dG`H{gLJkcSOsh>&$VO<&=7_V@OuKTr@6fhF2b4UBt5skC!Zk z)?#+IzzGmYi+i5g<iSLu5_nDg z=B^*TYEOM#B|4B+OB}^*UtXMigYwuWiX^7aouuklYB8?CE{;M#wRzJXRoE?qvW4>2oG8a96|5A1tpUy(5 zv&^cRGZU}Qsj$qJd7GXzngh=(mWJ7(0pc+duzx82#<7vB9(29Cg<^^G-@S)9jx3pi zXuYO1%z!h$#r6d%mWJ{te3m2TZeeD(NO#ZHgpbYVB+ooGz9*6Jj6cVn*YJ!;Y~f|x zuIpLWW)3d*4Qjs8OSkE?uD#%noAjTSm3hxzy!3WpiBgWhIU6JOJi7GrQX#LE42NK^ z!QDPnXhU|Sq))4FQ=M8-9`i~Lp!-6fK}>1;;AFWwzoNN;pU5Gc@N)-UK3J@iUUjZy zKXCATT&&tbmo8OYmPtj{u4TLpTX`*~JZH7G6s>>r?J33l5 zCA=weCC5ANYFCVN=^ke+WRPEJdS&MHh+3_-dCWenCZvrneAh>pQO;d`{i*u`&M%Lu z&Ts^6XK7l#wQrZU?7aMB*9?q&aSnx%x^TN%Bon{7Ic-))d2uPQF@BVdwY9$nCk+$O zA_?o(V9`V96V;KH1W0l|8taEUl|MG~y}VOslQ!wbr81Eg{$b#?!$A4t6`UR>s`=@;& zz*|e&*mjQ?CAr~*CnIkI6K2^tn)^xxS3+)FDCb87%*~rwF_lFuyzO<}-_+7(lJ8XO zuk;_IBqVSSxLK)??Kc38P??q9`+>oYs5qq4Rf5?lMD7~f^V8~T1-fo^N*dh^bx*VB zSK3vyr0?nzkY4OgD&mSNBiFlSdt>MV{=*Brii7$huQfJ&&q|-XOg2UDw_oykV|BNwzB;Zu?vVb$AjJp0X5femlS9JN*@&Wp%~^=mq;uIs(yjn*<# z?shX`+?!Ckwr{=tz4fO9@PCPfmKHDX41V5&lkQiKa;CbQG&JkJeBGulHJBwk`-KE! zZkGzFd%11N1HZk6h<6nZWO@i=tVT^SpC7o>AadP z|GP@^>C40;BUu-2?{a%{hNHav%vtsjbqr4SE9rV=HQd64_rkrDi<7HL4XXm}X6Brj zHmd?ytA&J;Iw3AzgVMFFBQ!WGbXz77r}2m0+p9-jdsas#VeAcqh?puZn=&Zn$Wo5# zOVhiN_zle`s+X}tL?!c^hfh4#CpUqu78?(V9n zFTebZ?TDB$)4ayF2qPAk#+#HAt|l{{7O={a^}T~vRg~0ZKf5&J%G5-v zTfa$r;(+n!4Q@ua4hP%H)9F;lH4C2MoPT`!7}>U<#FtIiC-%&4bJUZV=qB%w3Q+U8 zix+iRG^tA%*tX!O#a6~#!c9sk}%rt4qzE!HGWnZMD&&|zQ6@tcNwzP>mz%07Mm zOuC3+(VmI4fqit}(jKJP>bA#qijQgSb#K=ET$-!OpEwXPq<@*r&a07(?)+{A#_K7u z1v|!StBNgM?|<13)MW>=Ua|!%-CbOqdX!e@&pJslarDZP-gf<4{;jSt3t3E$k^JA- z(LD4J#{HLG-*?xNs_r^(s!JWsxQzT9olGO*s3MuD)ZC3PA62?a1V&Bp7C#ZdG?vJx zBQ80#Ez>2VDND(Yyf7t`onJbzs5ud9r2X=ZCxx-@rGcX`nrCpUU34apRE{j|7;&0) z|10T}clfQvH$<9EYjDnDOq+$87N|nQ10+crP949R)w#d5Fi}lG>ubJKuB<6f7*p(6 zeCM#rWog;)qq27NOxCKxS8Z8*D6U30nPuRn(3fc7Bop6maq1ad->E_^N6F~(fO9A) z#dH{2VlJU3Q#8hRPF+2P^Z#l)(|9P`w~x<^!5Cv7%hz# zMbIm0265Lpg<^nu9lE~=KuAp?2Eh%Xs>lCG1hodqtkjCCeJa2HSg{0vkZc#l`@fhb zR2BkV&W1m-}O6)IgN*8{0+$6)v2hTtf?A?85WO{ zjYTUx+?|adX1<&TFjHNlRGIM^8Zj2z`Vzv(RDH;A*NYvjT3~U zW1O5{UXdmXiS9(`c>LNq-^~`;(HY#U3o~(LiA4LmK!`MNp{W{*-G@zxI{|bH>`iFd zS>ZvrFIR-mvg$9VJ^N~JQJPoKXs^}$=Wo9fa(eHqb9v_&!P`edPaV5^vUwy%lkDwK zw$sE5DM=8}IH|eD?i>%?&ThxOpEZa9tqS7_ms7uu>AyCQd1m?aEH5FZPedaLTbks6 zfi;G*dj15yzkbi4XM1s|6goAO^2NcX?bBb^)jJ^3rr^2b&}Ylz%XzUhMb}Q(w?i0D zBenTlqw``Lxp4#hwVia0EF_IibKR<;vCi91>m5tMhb8lpAdv9a1$l;y@#4o$uEuMB z*t0>zJw61#r;RdN3g+8Io92fU-PV>0{3qM=M#?f!18%O3;?tQWZN;wABy< zu+%K;^>{55#=NC$b$@Q;eEv{NOSz6I_Hu3MXgg?@osHaOuHh;x2%?wjmS3P6OiJ8l zU%Zgsq%MlR*_zptA0sT3{xYCL06aQ|K5wx57zHS2y+FWt^$kKAmNqup{7l&N0wOo# zQ^>6WV|SjY*CuJV!v5UIT#fhBURoFmfCsyP$T)8dM{B@_1!elpQ~DP6Egd~yzJq8# z?d@fV_41gFS4s3T(O!m+z`TDffQG5gX=RdqPb4>_xcH>*A5qI7)!(dJfz;c1f2qCi z6%<bMl)5yQil7jd|D5-B*89t;;fi1%kLXb5HN5f28Q=BB5hXq zMDCxKMZi@j^WOoK1e1zcLb@G=EE!SWQy9~YQI``pPw8hC7Yl4AOtTO3)+H@$!oFH# z3ZB!xV!8o2P1T5SgLb#A6j2ZUmZ0lqXAP{DEqLx|yZc~9cD3mDWbV(Q)i{WuJ5#h6 z>D96}@F&A^d{P`<2wyLr6X1XNeBnFT?M^u~|BB~s)@aZ9N-Ee1bZX5T*;|W;`yDCA zVUF6$$pd#8oDLc4+B9^Y8-5Z}Xa3ZPsSDo)_xO_OR%)G^m-dQXgKW;ur0vhgeniag05`ilc?(7!ZTBvG_B@%$F z#<~tOgf%NIi0FR0H@Z@xe+qN^>I*r@z#g(B-kxw}v_jV#C4LKA+w|M-!X@r4A0E9} z*xKYg*j>+z+i%NvAqRtx66k`mA9Sm%q(=Mn6VsYnid`6B=QA%B-!rxj?-vKLp^WYx zi+|KMlr=YwP)&6{5ypwPpe6%H`@R~1BiIN};jguQku{Kqp*(d^C42>q0}V$|)ZsDv z_&A+Q3}f@N3gXKxVBB-gvj5`QZP;|38%cGGHsKE7+bl>PQJYaOU1^gxVIWsQMFiY_ zhF~Zg6U0W}>FVwx`RQD)-rteIa$Ql1O>c{>8N5oaD|{#s8i_P`xAs7s?TT?u{*#eJ z2Jm0WA1vx&Ex4;Wd&2k^qIs!d8l!1n*fiuE1i70pBem+bGQ6oD7j@ z&Plc6D^_9i_i74I;<|6?I`2)U4G5j_@~9ZR`27!OEYr@T#X5D4cezG z=^5!aBESqWoq6A~^}pP_^rG60$E`9Wjir`x&F+@B3~&hC zl58tG26(+6)ol^-s-NU!_$Q4<5bcBN0g;!;MF$ck;u%?)PnMW|3j8|b$%nwuhG0RI$|Cx;xHqwvxPhkPXEy-fI5-)NC{f+GzCME14z)$ z0miAqSMxFPhvNM-rhCAxp(^}kx2yD|5;TUIT5rBx^Ag){v}X;Z_B^gwsle|LVY5FT z4f4mflQ9|%8z%7TAEeJm6~pv8`WG{Kn6}^VGyzn)#_L`zv^zog4TF4SA@cP0x)9>} zciVG|q8g~d(z?>WEK*yR)PWN85&MIb{4FWpdB6DWAzYWiW95-LzEkG&bbt7scFv5A zipmRLDiy@M%W|W9pCE2~&-fu#ve$3cHQ|JEl~2t1^DfiemBKd)^!OYenx@(ND(GFl zU;2AzXmDhM_rzT@a7drBx0gsp_98yF^qJKS41R)omU-tQZAYsNyZee7&w87Z=5%d9 zs|cyV3FFvc@OiPqXssfz(BM?=ack?orbzo)NSoj1u#5GTp5g(83&SPpV)-qZh;q__ z(%6`}{kww*1{=YmsTgPH)icW+)5Y2L)Opda@jzqq4D-c+W1P6`1 z&Pp10@D%f7(c#x|*={yGBBxo@ci&;V$5sGjw>}{66|?sgZLV1X@iqvn4n%Kk5a^g^$cen0B$YQF01tMs;X=$<2y#}<)#?B5g4Ud16l)cW1u2f94HEcP4T^-xD2 z!Yhx?9qSOkt7PUpQR;=7I3aWUu-^%*Ag498lo?z)*x)*hkQ~LqbsV|kh2z9tq4zKI-F#c-kKNXyc0p@&O;O=d?y|W3`9fM1 zkOvrjr0>S9v~Mk3RbCI-69Bi?(-p`Dwq}$3Gmq^L0l{z$qdPVPv++<~yoToccqq<| zFU9@8%ZUG5b$kOl!6pKpXfdpXb`8FdM#2p&*BU@seS*n=5(>}a!mEF+1mslRia|&z z;@{`0x4|D0{xvT@$n=7RSVs#1r!;aM#Eix1<%?QY@OUdhlDY7I9p3;X%T#v!Uy#ob z+CIT7y$MIiREMIanUR?(*wW`}vvV8^g^rbT^M)j{NRMV-Cb9a`me-*3^w0RYDMZ0o z@2K&UX{dz{D6O|AUae2?iC&Ps5_!lg#oT90w%06T83gjqh4*r7<^k^;2sL6ePZ3Ou z2cQ5U4?#wjvaSskoM@k5*}2wlyJ!{#*>cL_qXFytv`oPBl{X)V?sn4~nRij&TK#R|HO5*rT;e zVlj2(oz{E#MH`Ytuk4=+OYnC(y)>Q7v-G9y#aja_P>0hcNfKsQHeOxO2K_OML-N(a zqC!7QS5|Ccp$_0dZg6V-Wq0Qy` zg@vQlr8oxYOIVH0l|aRY$>EDOk(ZPEjZ5NVhMi91z|V1xb);kY*L0>W2DzY*P%fcs znI1Hkb-a2kp6Fc;T-Pc5b;+P`>jBHxc%{A2o^82{@&>u>wF#;O$gqJwr$XNMBqSl3 zHGM|_opMExP_IIB(|ETVaqkxo(+8OtnCrjRb4~aU D`>Ge= literal 0 HcmV?d00001 diff --git a/res/icons/sdrpp.png b/res/icons/sdrpp.png new file mode 100644 index 0000000000000000000000000000000000000000..03cf61838dddb018ecb2e3cb51ece291b80101a1 GIT binary patch literal 21113 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 literal 0 HcmV?d00001 diff --git a/res/icons/stop.png b/res/icons/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..366651bfe3b40d24bf528215c918febd65552bb9 GIT binary patch literal 1733 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+UdOTemLn`LHy|z*Ckb}Sh zhk1o8f2Vf^UuIBzb}VB%Q|qp~K(!+V{7CR+|4@6paL+R7hV1BU+vU<0*Ue-PWXfG; zJdpbKGUJ^0cCri%f95eVG$=4LFgOAOvWbU*fkl#mfy0P_K_G>JLE!`ggTsVT1*73G unjS{;1tsOff?TVH%Wp0-j*!y#!})uKFE~_KzJ+W9`PkFd&t;ucLK6U2*S@v@ literal 0 HcmV?d00001 diff --git a/src/audio.cpp b/src/audio.cpp index f7432479..f7727ab6 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -1 +1,258 @@ -#include \ No newline at end of file +#include + +namespace audio { + std::map streams; + + float registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx) { + AudioStream_t* astr = new AudioStream_t; + astr->type = STREAM_TYPE_MONO; + astr->ctx = ctx; + astr->audio = new io::AudioSink; + astr->audio->init(1); + astr->deviceId = astr->audio->getDeviceId(); + float sampleRate = astr->audio->devices[astr->deviceId].sampleRates[0]; + int blockSize = sampleRate / 200; // default block size + astr->monoAudioStream = new dsp::stream(blockSize * 2); + astr->audio->setBlockSize(blockSize); + astr->audio->setStreamType(io::AudioSink::MONO); + astr->audio->setMonoInput(astr->monoAudioStream); + astr->audio->setSampleRate(sampleRate); + astr->blockSize = blockSize; + astr->sampleRate = sampleRate; + astr->monoStream = stream; + astr->sampleRateChangeHandler = sampleRateChangeHandler; + astr->monoDynSplit = new dsp::DynamicSplitter(stream, blockSize); + astr->monoDynSplit->bind(astr->monoAudioStream); + astr->running = false; + astr->volume = 1.0f; + astr->sampleRateId = 0; + astr->vfoName = vfoName; + streams[name] = astr; + return sampleRate; + } + + float registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx) { + AudioStream_t* astr = new AudioStream_t; + astr->type = STREAM_TYPE_STEREO; + astr->ctx = ctx; + astr->audio = new io::AudioSink; + astr->audio->init(1); + float sampleRate = astr->audio->devices[astr->audio->getDeviceId()].sampleRates[0]; + int blockSize = sampleRate / 200; // default block size + astr->stereoAudioStream = new dsp::stream(blockSize * 2); + astr->audio->setBlockSize(blockSize); + astr->audio->setStreamType(io::AudioSink::STEREO); + astr->audio->setStereoInput(astr->stereoAudioStream); + astr->audio->setSampleRate(sampleRate); + astr->blockSize = blockSize; + astr->sampleRate = sampleRate; + astr->stereoStream = stream; + astr->sampleRateChangeHandler = sampleRateChangeHandler; + astr->stereoDynSplit = new dsp::DynamicSplitter(stream, blockSize); + astr->stereoDynSplit->bind(astr->stereoAudioStream); + astr->running = false; + streams[name] = astr; + astr->vfoName = vfoName; + return sampleRate; + } + + void startStream(std::string name) { + AudioStream_t* astr = streams[name]; + if (astr->running) { + return; + } + if (astr->type == STREAM_TYPE_MONO) { + astr->monoDynSplit->start(); + } + else { + astr->stereoDynSplit->start(); + } + astr->audio->start(); + astr->running = true; + } + + void stopStream(std::string name) { + AudioStream_t* astr = streams[name]; + if (!astr->running) { + return; + } + if (astr->type == STREAM_TYPE_MONO) { + astr->monoDynSplit->stop(); + } + else { + astr->stereoDynSplit->stop(); + } + astr->audio->stop(); + astr->running = false; + } + + void removeStream(std::string name) { + AudioStream_t* astr = streams[name]; + stopStream(name); + for (int i = 0; i < astr->boundStreams.size(); i++) { + astr->boundStreams[i].streamRemovedHandler(astr->ctx); + } + delete astr->monoDynSplit; + } + + dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx) { + AudioStream_t* astr = streams[name]; + BoundStream_t bstr; + bstr.type = STREAM_TYPE_MONO; + bstr.ctx = ctx; + bstr.streamRemovedHandler = streamRemovedHandler; + bstr.sampleRateChangeHandler = sampleRateChangeHandler; + if (astr->type == STREAM_TYPE_MONO) { + bstr.monoStream = new dsp::stream(astr->blockSize * 2); + astr->monoDynSplit->bind(bstr.monoStream); + return bstr.monoStream; + } + bstr.stereoStream = new dsp::stream(astr->blockSize * 2); + bstr.s2m = new dsp::StereoToMono(bstr.stereoStream, astr->blockSize * 2); + bstr.monoStream = &bstr.s2m->output; + astr->stereoDynSplit->bind(bstr.stereoStream); + bstr.s2m->start(); + return bstr.monoStream; + } + + dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx) { + AudioStream_t* astr = streams[name]; + BoundStream_t bstr; + bstr.type = STREAM_TYPE_STEREO; + bstr.ctx = ctx; + bstr.streamRemovedHandler = streamRemovedHandler; + bstr.sampleRateChangeHandler = sampleRateChangeHandler; + if (astr->type == STREAM_TYPE_STEREO) { + bstr.stereoStream = new dsp::stream(astr->blockSize * 2); + astr->stereoDynSplit->bind(bstr.stereoStream); + return bstr.stereoStream; + } + bstr.monoStream = new dsp::stream(astr->blockSize * 2); + bstr.m2s = new dsp::MonoToStereo(bstr.monoStream, astr->blockSize * 2); + bstr.stereoStream = &bstr.m2s->output; + astr->monoDynSplit->bind(bstr.monoStream); + bstr.m2s->start(); + } + + void setBlockSize(std::string name, int blockSize) { + AudioStream_t* astr = streams[name]; + if (astr->running) { + return; + } + if (astr->type == STREAM_TYPE_MONO) { + astr->monoDynSplit->setBlockSize(blockSize); + for (int i = 0; i < astr->boundStreams.size(); i++) { + BoundStream_t bstr = astr->boundStreams[i]; + bstr.monoStream->setMaxLatency(blockSize * 2); + if (bstr.type == STREAM_TYPE_STEREO) { + bstr.m2s->stop(); + bstr.m2s->setBlockSize(blockSize); + bstr.m2s->start(); + } + } + astr->blockSize = blockSize; + return; + } + astr->monoDynSplit->setBlockSize(blockSize); + for (int i = 0; i < astr->boundStreams.size(); i++) { + BoundStream_t bstr = astr->boundStreams[i]; + bstr.stereoStream->setMaxLatency(blockSize * 2); + if (bstr.type == STREAM_TYPE_MONO) { + bstr.s2m->stop(); + bstr.s2m->setBlockSize(blockSize); + bstr.s2m->start(); + } + } + astr->blockSize = blockSize; + } + + void unbindFromStreamMono(std::string name, dsp::stream* stream) { + AudioStream_t* astr = streams[name]; + for (int i = 0; i < astr->boundStreams.size(); i++) { + BoundStream_t bstr = astr->boundStreams[i]; + if (bstr.monoStream != stream) { + continue; + } + if (astr->type == STREAM_TYPE_STEREO) { + bstr.s2m->stop(); + delete bstr.s2m; + } + delete stream; + return; + } + } + + void unbindFromStreamStereo(std::string name, dsp::stream* stream) { + AudioStream_t* astr = streams[name]; + for (int i = 0; i < astr->boundStreams.size(); i++) { + BoundStream_t bstr = astr->boundStreams[i]; + if (bstr.stereoStream != stream) { + continue; + } + if (astr->type == STREAM_TYPE_MONO) { + bstr.s2m->stop(); + delete bstr.m2s; + } + delete stream; + return; + } + } + + std::string getNameFromVFO(std::string vfoName) { + for (auto const& [name, stream] : streams) { + if (stream->vfoName == vfoName) { + return name; + } + } + return ""; + } + + void setSampleRate(std::string name, float sampleRate) { + AudioStream_t* astr = streams[name]; + if (astr->running) { + return; + } + int blockSize = astr->sampleRateChangeHandler(astr->ctx, sampleRate); + astr->audio->setSampleRate(sampleRate); + astr->audio->setBlockSize(blockSize); + if (astr->type == STREAM_TYPE_MONO) { + astr->monoDynSplit->setBlockSize(blockSize); + for (int i = 0; i < astr->boundStreams.size(); i++) { + BoundStream_t bstr = astr->boundStreams[i]; + if (bstr.type == STREAM_TYPE_STEREO) { + bstr.m2s->stop(); + bstr.m2s->setBlockSize(blockSize); + bstr.sampleRateChangeHandler(bstr.ctx, sampleRate, blockSize); + bstr.m2s->start(); + continue; + } + bstr.sampleRateChangeHandler(bstr.ctx, sampleRate, blockSize); + } + } + else { + astr->stereoDynSplit->setBlockSize(blockSize); + for (int i = 0; i < astr->boundStreams.size(); i++) { + BoundStream_t bstr = astr->boundStreams[i]; + if (bstr.type == STREAM_TYPE_MONO) { + bstr.s2m->stop(); + bstr.s2m->setBlockSize(blockSize); + bstr.sampleRateChangeHandler(bstr.ctx, sampleRate, blockSize); + bstr.s2m->start(); + continue; + } + bstr.sampleRateChangeHandler(bstr.ctx, sampleRate, blockSize); + } + } + } + + void setAudioDevice(std::string name, int deviceId, float sampleRate) { + AudioStream_t* astr = streams[name]; + if (astr->running) { + return; + } + astr->deviceId = deviceId; + astr->audio->setDevice(deviceId); + setSampleRate(name, sampleRate); + } +}; + diff --git a/src/audio.h b/src/audio.h index 7f063699..c9de6c3c 100644 --- a/src/audio.h +++ b/src/audio.h @@ -1,6 +1,63 @@ #pragma once #include +#include +#include +#include +#include namespace audio { - void registerStream(dsp::stream* stream, std::string name, std::string vfoName); -}; \ No newline at end of file + enum { + STREAM_TYPE_MONO, + STREAM_TYPE_STEREO, + _STREAM_TYPE_COUNT + }; + + struct BoundStream_t { + dsp::stream* monoStream; + dsp::stream* stereoStream; + dsp::StereoToMono* s2m; + dsp::MonoToStereo* m2s; + void (*streamRemovedHandler)(void* ctx); + void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize); + void* ctx; + int type; + }; + + struct AudioStream_t { + io::AudioSink* audio; + dsp::stream* monoAudioStream; + dsp::stream* stereoAudioStream; + std::vector boundStreams; + dsp::stream* monoStream; + dsp::DynamicSplitter* monoDynSplit; + dsp::stream* stereoStream; + dsp::DynamicSplitter* stereoDynSplit; + int (*sampleRateChangeHandler)(void* ctx, float sampleRate); + float sampleRate; + int blockSize; + int type; + bool running = false; + float volume; + int sampleRateId; + int deviceId; + void* ctx; + std::string vfoName; + }; + + extern std::map streams; + + float registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); + float registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); + void startStream(std::string name); + void stopStream(std::string name); + void removeStream(std::string name); + dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); + dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); + void setBlockSize(std::string name, int blockSize); + void unbindFromStreamMono(std::string name, dsp::stream* stream); + void unbindFromStreamStereo(std::string name, dsp::stream* stream); + std::string getNameFromVFO(std::string vfoName); + void setSampleRate(std::string name, float sampleRate); + void setAudioDevice(std::string name, int deviceId, float sampleRate); +}; + diff --git a/src/config.cpp b/src/config.cpp new file mode 100644 index 00000000..1766fe38 --- /dev/null +++ b/src/config.cpp @@ -0,0 +1,53 @@ +#include + +namespace config { + bool configModified = false; + json config; + bool autoSaveRunning = false; + std::string _path; + std::thread _workerThread; + + void _autoSaveWorker() { + while (autoSaveRunning) { + if (configModified) { + configModified = false; + std::ofstream file(_path.c_str()); + file << std::setw(4) << config; + file.close(); + spdlog::info("Config saved"); + } + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + } + } + + void load(std::string path) { + if (!std::filesystem::exists(path)) { + spdlog::error("Config file does not exist"); + return; + } + if (!std::filesystem::is_regular_file(path)) { + spdlog::error("Config file isn't a file..."); + return; + } + _path = path; + std::ifstream file(path.c_str()); + config << file; + file.close(); + } + + void startAutoSave() { + if (autoSaveRunning) { + return; + } + autoSaveRunning = true; + _workerThread = std::thread(_autoSaveWorker); + } + + void stopAutoSave() { + if (!autoSaveRunning) { + return; + } + autoSaveRunning = false; + _workerThread.join(); + } +}; \ No newline at end of file diff --git a/src/config.h b/src/config.h new file mode 100644 index 00000000..4dd3292b --- /dev/null +++ b/src/config.h @@ -0,0 +1,20 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include + +using nlohmann::json; + +namespace config { + void load(std::string path); + void startAutoSave(); + void stopAutoSave(); + + extern bool configModified; + extern json config; +}; \ No newline at end of file diff --git a/src/dsp/resampling.h b/src/dsp/resampling.h index e284e58e..49978709 100644 --- a/src/dsp/resampling.h +++ b/src/dsp/resampling.h @@ -312,9 +312,17 @@ namespace dsp { int inCount = _this->_blockSize; int outCount = _this->outputBlockSize; - - float* taps = _this->_taps.data(); + + int interp = _this->_interp; + int decim = _this->_decim; + float correction = interp;//(float)sqrt((float)interp); + int tapCount = _this->_taps.size(); + float* taps = new float[tapCount]; + for (int i = 0; i < tapCount; i++) { + taps[i] = _this->_taps[i] * correction; + } + complex_t* delayBuf = new complex_t[tapCount]; complex_t* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; @@ -322,11 +330,6 @@ namespace dsp { complex_t* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; int moveSize = std::min(inCount, tapCount - inCount) * sizeof(complex_t); int inSize = inCount * sizeof(complex_t); - - int interp = _this->_interp; - int decim = _this->_decim; - - float correction = (float)sqrt((float)interp); int afterInterp = inCount * interp; int outIndex = 0; @@ -335,12 +338,9 @@ namespace dsp { for (int i = 0; outIndex < outCount; i += decim) { outBuf[outIndex].i = 0; outBuf[outIndex].q = 0; - for (int j = 0; j < tapCount; j++) { - if ((i - j) % interp != 0) { - continue; - } - outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j] * correction; - outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j] * correction; + for (int j = i % interp; j < tapCount; j += interp) { + outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j]; + outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j]; } outIndex++; } @@ -358,6 +358,7 @@ namespace dsp { delete[] inBuf; delete[] outBuf; delete[] delayBuf; + delete[] taps; } std::thread _workerThread; @@ -500,9 +501,17 @@ namespace dsp { int inCount = _this->_blockSize; int outCount = _this->outputBlockSize; + + int interp = _this->_interp; + int decim = _this->_decim; + float correction = interp;//(float)sqrt((float)interp); - float* taps = _this->_taps.data(); int tapCount = _this->_taps.size(); + float* taps = new float[tapCount]; + for (int i = 0; i < tapCount; i++) { + taps[i] = _this->_taps[i] * correction; + } + float* delayBuf = new float[tapCount]; float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; @@ -510,26 +519,23 @@ namespace dsp { float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); int inSize = inCount * sizeof(float); - - int interp = _this->_interp; - int decim = _this->_decim; - - float correction = (float)sqrt((float)interp); int afterInterp = inCount * interp; int outIndex = 0; while (true) { if (_this->_input->read(inBuf, inCount) < 0) { break; }; + + for (int i = 0; outIndex < outCount; i += decim) { outBuf[outIndex] = 0; - for (int j = 0; j < tapCount; j++) { - if ((i - j) % interp != 0) { - continue; - } - outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j] * correction; + for (int j = (i % interp); j < tapCount; j += interp) { + outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j]; } outIndex++; } + + + outIndex = 0; if (tapCount > inCount) { memmove(delayBuf, delayBufEnd, moveSize); diff --git a/src/dsp/routing.h b/src/dsp/routing.h index 7555d00b..b8be1913 100644 --- a/src/dsp/routing.h +++ b/src/dsp/routing.h @@ -76,18 +76,19 @@ namespace dsp { bool running = false; }; + template class DynamicSplitter { public: DynamicSplitter() { } - DynamicSplitter(stream* input, int bufferSize) { + DynamicSplitter(stream* input, int bufferSize) { _in = input; _bufferSize = bufferSize; } - void init(stream* input, int bufferSize) { + void init(stream* input, int bufferSize) { _in = input; _bufferSize = bufferSize; } @@ -128,14 +129,14 @@ namespace dsp { } } - void bind(stream* stream) { + void bind(stream* stream) { if (running) { return; } outputs.push_back(stream); } - void unbind(stream* stream) { + void unbind(stream* stream) { if (running) { return; } @@ -150,7 +151,7 @@ namespace dsp { private: static void _worker(DynamicSplitter* _this) { - complex_t* buf = new complex_t[_this->_bufferSize]; + T* buf = new T[_this->_bufferSize]; int outputCount = _this->outputs.size(); while (true) { if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; @@ -161,10 +162,146 @@ namespace dsp { delete[] buf; } - stream* _in; + stream* _in; + int _bufferSize; + std::thread _workerThread; + bool running = false; + std::vector*> outputs; + }; + + + class MonoToStereo { + public: + MonoToStereo() { + + } + + MonoToStereo(stream* input, int bufferSize) { + _in = input; + _bufferSize = bufferSize; + } + + void init(stream* input, int bufferSize) { + _in = input; + _bufferSize = bufferSize; + } + + void start() { + if (running) { + return; + } + _workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + _in->stopReader(); + output.stopWriter(); + _workerThread.join(); + _in->clearReadStop(); + output.clearWriteStop(); + running = false; + } + + void setBlockSize(int blockSize) { + if (running) { + return; + } + _bufferSize = blockSize; + output.setMaxLatency(blockSize * 2); + } + + stream output; + + private: + static void _worker(MonoToStereo* _this) { + float* inBuf = new float[_this->_bufferSize]; + StereoFloat_t* outBuf = new StereoFloat_t[_this->_bufferSize]; + while (true) { + if (_this->_in->read(inBuf, _this->_bufferSize) < 0) { break; }; + for (int i = 0; i < _this->_bufferSize; i++) { + outBuf[i].l = inBuf[i]; + outBuf[i].r = inBuf[i]; + } + if (_this->output.write(outBuf, _this->_bufferSize) < 0) { break; }; + } + delete[] inBuf; + delete[] outBuf; + } + + stream* _in; + int _bufferSize; + std::thread _workerThread; + bool running = false; + }; + + class StereoToMono { + public: + StereoToMono() { + + } + + StereoToMono(stream* input, int bufferSize) { + _in = input; + _bufferSize = bufferSize; + } + + void init(stream* input, int bufferSize) { + _in = input; + _bufferSize = bufferSize; + } + + void start() { + if (running) { + return; + } + _workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + _in->stopReader(); + output.stopWriter(); + _workerThread.join(); + _in->clearReadStop(); + output.clearWriteStop(); + running = false; + } + + void setBlockSize(int blockSize) { + if (running) { + return; + } + _bufferSize = blockSize; + output.setMaxLatency(blockSize * 2); + } + + stream output; + + private: + static void _worker(StereoToMono* _this) { + StereoFloat_t* inBuf = new StereoFloat_t[_this->_bufferSize]; + float* outBuf = new float[_this->_bufferSize]; + while (true) { + if (_this->_in->read(inBuf, _this->_bufferSize) < 0) { break; }; + for (int i = 0; i < _this->_bufferSize; i++) { + outBuf[i] = (inBuf[i].l + inBuf[i].r) / 2.0f; + } + if (_this->output.write(outBuf, _this->_bufferSize) < 0) { break; }; + } + delete[] inBuf; + delete[] outBuf; + } + + stream* _in; int _bufferSize; std::thread _workerThread; bool running = false; - std::vector*> outputs; }; }; \ No newline at end of file diff --git a/src/dsp/types.h b/src/dsp/types.h index bc7347f9..09b4430f 100644 --- a/src/dsp/types.h +++ b/src/dsp/types.h @@ -5,4 +5,9 @@ namespace dsp { float q; float i; }; + + struct StereoFloat_t { + float l; + float r; + }; }; \ No newline at end of file diff --git a/src/icons.cpp b/src/icons.cpp index 3a77362a..8d60fd6a 100644 --- a/src/icons.cpp +++ b/src/icons.cpp @@ -25,7 +25,9 @@ namespace icons { } void load() { - LOGO = (ImTextureID)loadTexture("res/icons/logo.png"); + LOGO = (ImTextureID)loadTexture("res/icons/sdrpp.png"); + PLAY = (ImTextureID)loadTexture("res/icons/play.png"); + STOP = (ImTextureID)loadTexture("res/icons/stop.png"); PLAY_RAW = (ImTextureID)loadTexture("res/icons/play_raw.png"); STOP_RAW = (ImTextureID)loadTexture("res/icons/stop_raw.png"); } diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index 7d5bc5cf..6961d80b 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -2640,6 +2640,7 @@ bool ImGui::SliderScalar(const char* label, ImGuiDataType data_type, void* p_dat // Slider behavior ImRect grab_bb; + const bool value_changed = SliderBehavior(frame_bb, id, data_type, p_data, p_min, p_max, format, power, ImGuiSliderFlags_None, &grab_bb); if (value_changed) MarkItemEdited(id); diff --git a/src/imgui/stb_image_resize.h b/src/imgui/stb_image_resize.h new file mode 100644 index 00000000..42a8efb1 --- /dev/null +++ b/src/imgui/stb_image_resize.h @@ -0,0 +1,2631 @@ +/* stb_image_resize - v0.96 - public domain image resizing + by Jorge L Rodriguez (@VinoBS) - 2014 + http://github.com/nothings/stb + + Written with emphasis on usability, portability, and efficiency. (No + SIMD or threads, so it be easily outperformed by libs that use those.) + Only scaling and translation is supported, no rotations or shears. + Easy API downsamples w/Mitchell filter, upsamples w/cubic interpolation. + + COMPILING & LINKING + In one C/C++ file that #includes this file, do this: + #define STB_IMAGE_RESIZE_IMPLEMENTATION + before the #include. That will create the implementation in that file. + + QUICKSTART + stbir_resize_uint8( input_pixels , in_w , in_h , 0, + output_pixels, out_w, out_h, 0, num_channels) + stbir_resize_float(...) + stbir_resize_uint8_srgb( input_pixels , in_w , in_h , 0, + output_pixels, out_w, out_h, 0, + num_channels , alpha_chan , 0) + stbir_resize_uint8_srgb_edgemode( + input_pixels , in_w , in_h , 0, + output_pixels, out_w, out_h, 0, + num_channels , alpha_chan , 0, STBIR_EDGE_CLAMP) + // WRAP/REFLECT/ZERO + + FULL API + See the "header file" section of the source for API documentation. + + ADDITIONAL DOCUMENTATION + + SRGB & FLOATING POINT REPRESENTATION + The sRGB functions presume IEEE floating point. If you do not have + IEEE floating point, define STBIR_NON_IEEE_FLOAT. This will use + a slower implementation. + + MEMORY ALLOCATION + The resize functions here perform a single memory allocation using + malloc. To control the memory allocation, before the #include that + triggers the implementation, do: + + #define STBIR_MALLOC(size,context) ... + #define STBIR_FREE(ptr,context) ... + + Each resize function makes exactly one call to malloc/free, so to use + temp memory, store the temp memory in the context and return that. + + ASSERT + Define STBIR_ASSERT(boolval) to override assert() and not use assert.h + + OPTIMIZATION + Define STBIR_SATURATE_INT to compute clamp values in-range using + integer operations instead of float operations. This may be faster + on some platforms. + + DEFAULT FILTERS + For functions which don't provide explicit control over what filters + to use, you can change the compile-time defaults with + + #define STBIR_DEFAULT_FILTER_UPSAMPLE STBIR_FILTER_something + #define STBIR_DEFAULT_FILTER_DOWNSAMPLE STBIR_FILTER_something + + See stbir_filter in the header-file section for the list of filters. + + NEW FILTERS + A number of 1D filter kernels are used. For a list of + supported filters see the stbir_filter enum. To add a new filter, + write a filter function and add it to stbir__filter_info_table. + + PROGRESS + For interactive use with slow resize operations, you can install + a progress-report callback: + + #define STBIR_PROGRESS_REPORT(val) some_func(val) + + The parameter val is a float which goes from 0 to 1 as progress is made. + + For example: + + static void my_progress_report(float progress); + #define STBIR_PROGRESS_REPORT(val) my_progress_report(val) + + #define STB_IMAGE_RESIZE_IMPLEMENTATION + #include "stb_image_resize.h" + + static void my_progress_report(float progress) + { + printf("Progress: %f%%\n", progress*100); + } + + MAX CHANNELS + If your image has more than 64 channels, define STBIR_MAX_CHANNELS + to the max you'll have. + + ALPHA CHANNEL + Most of the resizing functions provide the ability to control how + the alpha channel of an image is processed. The important things + to know about this: + + 1. The best mathematically-behaved version of alpha to use is + called "premultiplied alpha", in which the other color channels + have had the alpha value multiplied in. If you use premultiplied + alpha, linear filtering (such as image resampling done by this + library, or performed in texture units on GPUs) does the "right + thing". While premultiplied alpha is standard in the movie CGI + industry, it is still uncommon in the videogame/real-time world. + + If you linearly filter non-premultiplied alpha, strange effects + occur. (For example, the 50/50 average of 99% transparent bright green + and 1% transparent black produces 50% transparent dark green when + non-premultiplied, whereas premultiplied it produces 50% + transparent near-black. The former introduces green energy + that doesn't exist in the source image.) + + 2. Artists should not edit premultiplied-alpha images; artists + want non-premultiplied alpha images. Thus, art tools generally output + non-premultiplied alpha images. + + 3. You will get best results in most cases by converting images + to premultiplied alpha before processing them mathematically. + + 4. If you pass the flag STBIR_FLAG_ALPHA_PREMULTIPLIED, the + resizer does not do anything special for the alpha channel; + it is resampled identically to other channels. This produces + the correct results for premultiplied-alpha images, but produces + less-than-ideal results for non-premultiplied-alpha images. + + 5. If you do not pass the flag STBIR_FLAG_ALPHA_PREMULTIPLIED, + then the resizer weights the contribution of input pixels + based on their alpha values, or, equivalently, it multiplies + the alpha value into the color channels, resamples, then divides + by the resultant alpha value. Input pixels which have alpha=0 do + not contribute at all to output pixels unless _all_ of the input + pixels affecting that output pixel have alpha=0, in which case + the result for that pixel is the same as it would be without + STBIR_FLAG_ALPHA_PREMULTIPLIED. However, this is only true for + input images in integer formats. For input images in float format, + input pixels with alpha=0 have no effect, and output pixels + which have alpha=0 will be 0 in all channels. (For float images, + you can manually achieve the same result by adding a tiny epsilon + value to the alpha channel of every image, and then subtracting + or clamping it at the end.) + + 6. You can suppress the behavior described in #5 and make + all-0-alpha pixels have 0 in all channels by #defining + STBIR_NO_ALPHA_EPSILON. + + 7. You can separately control whether the alpha channel is + interpreted as linear or affected by the colorspace. By default + it is linear; you almost never want to apply the colorspace. + (For example, graphics hardware does not apply sRGB conversion + to the alpha channel.) + + CONTRIBUTORS + Jorge L Rodriguez: Implementation + Sean Barrett: API design, optimizations + Aras Pranckevicius: bugfix + Nathan Reed: warning fixes + + REVISIONS + 0.97 (2020-02-02) fixed warning + 0.96 (2019-03-04) fixed warnings + 0.95 (2017-07-23) fixed warnings + 0.94 (2017-03-18) fixed warnings + 0.93 (2017-03-03) fixed bug with certain combinations of heights + 0.92 (2017-01-02) fix integer overflow on large (>2GB) images + 0.91 (2016-04-02) fix warnings; fix handling of subpixel regions + 0.90 (2014-09-17) first released version + + LICENSE + See end of file for license information. + + TODO + Don't decode all of the image data when only processing a partial tile + Don't use full-width decode buffers when only processing a partial tile + When processing wide images, break processing into tiles so data fits in L1 cache + Installable filters? + Resize that respects alpha test coverage + (Reference code: FloatImage::alphaTestCoverage and FloatImage::scaleAlphaToCoverage: + https://code.google.com/p/nvidia-texture-tools/source/browse/trunk/src/nvimage/FloatImage.cpp ) +*/ + +#ifndef STBIR_INCLUDE_STB_IMAGE_RESIZE_H +#define STBIR_INCLUDE_STB_IMAGE_RESIZE_H + +#ifdef _MSC_VER +typedef unsigned char stbir_uint8; +typedef unsigned short stbir_uint16; +typedef unsigned int stbir_uint32; +#else +#include +typedef uint8_t stbir_uint8; +typedef uint16_t stbir_uint16; +typedef uint32_t stbir_uint32; +#endif + +#ifndef STBIRDEF +#ifdef STB_IMAGE_RESIZE_STATIC +#define STBIRDEF static +#else +#ifdef __cplusplus +#define STBIRDEF extern "C" +#else +#define STBIRDEF extern +#endif +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// Easy-to-use API: +// +// * "input pixels" points to an array of image data with 'num_channels' channels (e.g. RGB=3, RGBA=4) +// * input_w is input image width (x-axis), input_h is input image height (y-axis) +// * stride is the offset between successive rows of image data in memory, in bytes. you can +// specify 0 to mean packed continuously in memory +// * alpha channel is treated identically to other channels. +// * colorspace is linear or sRGB as specified by function name +// * returned result is 1 for success or 0 in case of an error. +// #define STBIR_ASSERT() to trigger an assert on parameter validation errors. +// * Memory required grows approximately linearly with input and output size, but with +// discontinuities at input_w == output_w and input_h == output_h. +// * These functions use a "default" resampling filter defined at compile time. To change the filter, +// you can change the compile-time defaults by #defining STBIR_DEFAULT_FILTER_UPSAMPLE +// and STBIR_DEFAULT_FILTER_DOWNSAMPLE, or you can use the medium-complexity API. + +STBIRDEF int stbir_resize_uint8( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels); + +STBIRDEF int stbir_resize_float( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels); + + +// The following functions interpret image data as gamma-corrected sRGB. +// Specify STBIR_ALPHA_CHANNEL_NONE if you have no alpha channel, +// or otherwise provide the index of the alpha channel. Flags value +// of 0 will probably do the right thing if you're not sure what +// the flags mean. + +#define STBIR_ALPHA_CHANNEL_NONE -1 + +// Set this flag if your texture has premultiplied alpha. Otherwise, stbir will +// use alpha-weighted resampling (effectively premultiplying, resampling, +// then unpremultiplying). +#define STBIR_FLAG_ALPHA_PREMULTIPLIED (1 << 0) +// The specified alpha channel should be handled as gamma-corrected value even +// when doing sRGB operations. +#define STBIR_FLAG_ALPHA_USES_COLORSPACE (1 << 1) + +STBIRDEF int stbir_resize_uint8_srgb(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags); + + +typedef enum +{ + STBIR_EDGE_CLAMP = 1, + STBIR_EDGE_REFLECT = 2, + STBIR_EDGE_WRAP = 3, + STBIR_EDGE_ZERO = 4, +} stbir_edge; + +// This function adds the ability to specify how requests to sample off the edge of the image are handled. +STBIRDEF int stbir_resize_uint8_srgb_edgemode(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode); + +////////////////////////////////////////////////////////////////////////////// +// +// Medium-complexity API +// +// This extends the easy-to-use API as follows: +// +// * Alpha-channel can be processed separately +// * If alpha_channel is not STBIR_ALPHA_CHANNEL_NONE +// * Alpha channel will not be gamma corrected (unless flags&STBIR_FLAG_GAMMA_CORRECT) +// * Filters will be weighted by alpha channel (unless flags&STBIR_FLAG_ALPHA_PREMULTIPLIED) +// * Filter can be selected explicitly +// * uint16 image type +// * sRGB colorspace available for all types +// * context parameter for passing to STBIR_MALLOC + +typedef enum +{ + STBIR_FILTER_DEFAULT = 0, // use same filter type that easy-to-use API chooses + STBIR_FILTER_BOX = 1, // A trapezoid w/1-pixel wide ramps, same result as box for integer scale ratios + STBIR_FILTER_TRIANGLE = 2, // On upsampling, produces same results as bilinear texture filtering + STBIR_FILTER_CUBICBSPLINE = 3, // The cubic b-spline (aka Mitchell-Netrevalli with B=1,C=0), gaussian-esque + STBIR_FILTER_CATMULLROM = 4, // An interpolating cubic spline + STBIR_FILTER_MITCHELL = 5, // Mitchell-Netrevalli filter with B=1/3, C=1/3 +} stbir_filter; + +typedef enum +{ + STBIR_COLORSPACE_LINEAR, + STBIR_COLORSPACE_SRGB, + + STBIR_MAX_COLORSPACES, +} stbir_colorspace; + +// The following functions are all identical except for the type of the image data + +STBIRDEF int stbir_resize_uint8_generic( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context); + +STBIRDEF int stbir_resize_uint16_generic(const stbir_uint16 *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + stbir_uint16 *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context); + +STBIRDEF int stbir_resize_float_generic( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context); + + + +////////////////////////////////////////////////////////////////////////////// +// +// Full-complexity API +// +// This extends the medium API as follows: +// +// * uint32 image type +// * not typesafe +// * separate filter types for each axis +// * separate edge modes for each axis +// * can specify scale explicitly for subpixel correctness +// * can specify image source tile using texture coordinates + +typedef enum +{ + STBIR_TYPE_UINT8 , + STBIR_TYPE_UINT16, + STBIR_TYPE_UINT32, + STBIR_TYPE_FLOAT , + + STBIR_MAX_TYPES +} stbir_datatype; + +STBIRDEF int stbir_resize( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context); + +STBIRDEF int stbir_resize_subpixel(const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float x_scale, float y_scale, + float x_offset, float y_offset); + +STBIRDEF int stbir_resize_region( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float s0, float t0, float s1, float t1); +// (s0, t0) & (s1, t1) are the top-left and bottom right corner (uv addressing style: [0, 1]x[0, 1]) of a region of the input image to use. + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBIR_INCLUDE_STB_IMAGE_RESIZE_H + + + + + +#ifdef STB_IMAGE_RESIZE_IMPLEMENTATION + +#ifndef STBIR_ASSERT +#include +#define STBIR_ASSERT(x) assert(x) +#endif + +// For memset +#include + +#include + +#ifndef STBIR_MALLOC +#include +// use comma operator to evaluate c, to avoid "unused parameter" warnings +#define STBIR_MALLOC(size,c) ((void)(c), malloc(size)) +#define STBIR_FREE(ptr,c) ((void)(c), free(ptr)) +#endif + +#ifndef _MSC_VER +#ifdef __cplusplus +#define stbir__inline inline +#else +#define stbir__inline +#endif +#else +#define stbir__inline __forceinline +#endif + + +// should produce compiler error if size is wrong +typedef unsigned char stbir__validate_uint32[sizeof(stbir_uint32) == 4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBIR__NOTUSED(v) (void)(v) +#else +#define STBIR__NOTUSED(v) (void)sizeof(v) +#endif + +#define STBIR__ARRAY_SIZE(a) (sizeof((a))/sizeof((a)[0])) + +#ifndef STBIR_DEFAULT_FILTER_UPSAMPLE +#define STBIR_DEFAULT_FILTER_UPSAMPLE STBIR_FILTER_CATMULLROM +#endif + +#ifndef STBIR_DEFAULT_FILTER_DOWNSAMPLE +#define STBIR_DEFAULT_FILTER_DOWNSAMPLE STBIR_FILTER_MITCHELL +#endif + +#ifndef STBIR_PROGRESS_REPORT +#define STBIR_PROGRESS_REPORT(float_0_to_1) +#endif + +#ifndef STBIR_MAX_CHANNELS +#define STBIR_MAX_CHANNELS 64 +#endif + +#if STBIR_MAX_CHANNELS > 65536 +#error "Too many channels; STBIR_MAX_CHANNELS must be no more than 65536." +// because we store the indices in 16-bit variables +#endif + +// This value is added to alpha just before premultiplication to avoid +// zeroing out color values. It is equivalent to 2^-80. If you don't want +// that behavior (it may interfere if you have floating point images with +// very small alpha values) then you can define STBIR_NO_ALPHA_EPSILON to +// disable it. +#ifndef STBIR_ALPHA_EPSILON +#define STBIR_ALPHA_EPSILON ((float)1 / (1 << 20) / (1 << 20) / (1 << 20) / (1 << 20)) +#endif + + + +#ifdef _MSC_VER +#define STBIR__UNUSED_PARAM(v) (void)(v) +#else +#define STBIR__UNUSED_PARAM(v) (void)sizeof(v) +#endif + +// must match stbir_datatype +static unsigned char stbir__type_size[] = { + 1, // STBIR_TYPE_UINT8 + 2, // STBIR_TYPE_UINT16 + 4, // STBIR_TYPE_UINT32 + 4, // STBIR_TYPE_FLOAT +}; + +// Kernel function centered at 0 +typedef float (stbir__kernel_fn)(float x, float scale); +typedef float (stbir__support_fn)(float scale); + +typedef struct +{ + stbir__kernel_fn* kernel; + stbir__support_fn* support; +} stbir__filter_info; + +// When upsampling, the contributors are which source pixels contribute. +// When downsampling, the contributors are which destination pixels are contributed to. +typedef struct +{ + int n0; // First contributing pixel + int n1; // Last contributing pixel +} stbir__contributors; + +typedef struct +{ + const void* input_data; + int input_w; + int input_h; + int input_stride_bytes; + + void* output_data; + int output_w; + int output_h; + int output_stride_bytes; + + float s0, t0, s1, t1; + + float horizontal_shift; // Units: output pixels + float vertical_shift; // Units: output pixels + float horizontal_scale; + float vertical_scale; + + int channels; + int alpha_channel; + stbir_uint32 flags; + stbir_datatype type; + stbir_filter horizontal_filter; + stbir_filter vertical_filter; + stbir_edge edge_horizontal; + stbir_edge edge_vertical; + stbir_colorspace colorspace; + + stbir__contributors* horizontal_contributors; + float* horizontal_coefficients; + + stbir__contributors* vertical_contributors; + float* vertical_coefficients; + + int decode_buffer_pixels; + float* decode_buffer; + + float* horizontal_buffer; + + // cache these because ceil/floor are inexplicably showing up in profile + int horizontal_coefficient_width; + int vertical_coefficient_width; + int horizontal_filter_pixel_width; + int vertical_filter_pixel_width; + int horizontal_filter_pixel_margin; + int vertical_filter_pixel_margin; + int horizontal_num_contributors; + int vertical_num_contributors; + + int ring_buffer_length_bytes; // The length of an individual entry in the ring buffer. The total number of ring buffers is stbir__get_filter_pixel_width(filter) + int ring_buffer_num_entries; // Total number of entries in the ring buffer. + int ring_buffer_first_scanline; + int ring_buffer_last_scanline; + int ring_buffer_begin_index; // first_scanline is at this index in the ring buffer + float* ring_buffer; + + float* encode_buffer; // A temporary buffer to store floats so we don't lose precision while we do multiply-adds. + + int horizontal_contributors_size; + int horizontal_coefficients_size; + int vertical_contributors_size; + int vertical_coefficients_size; + int decode_buffer_size; + int horizontal_buffer_size; + int ring_buffer_size; + int encode_buffer_size; +} stbir__info; + + +static const float stbir__max_uint8_as_float = 255.0f; +static const float stbir__max_uint16_as_float = 65535.0f; +static const double stbir__max_uint32_as_float = 4294967295.0; + + +static stbir__inline int stbir__min(int a, int b) +{ + return a < b ? a : b; +} + +static stbir__inline float stbir__saturate(float x) +{ + if (x < 0) + return 0; + + if (x > 1) + return 1; + + return x; +} + +#ifdef STBIR_SATURATE_INT +static stbir__inline stbir_uint8 stbir__saturate8(int x) +{ + if ((unsigned int) x <= 255) + return x; + + if (x < 0) + return 0; + + return 255; +} + +static stbir__inline stbir_uint16 stbir__saturate16(int x) +{ + if ((unsigned int) x <= 65535) + return x; + + if (x < 0) + return 0; + + return 65535; +} +#endif + +static float stbir__srgb_uchar_to_linear_float[256] = { + 0.000000f, 0.000304f, 0.000607f, 0.000911f, 0.001214f, 0.001518f, 0.001821f, 0.002125f, 0.002428f, 0.002732f, 0.003035f, + 0.003347f, 0.003677f, 0.004025f, 0.004391f, 0.004777f, 0.005182f, 0.005605f, 0.006049f, 0.006512f, 0.006995f, 0.007499f, + 0.008023f, 0.008568f, 0.009134f, 0.009721f, 0.010330f, 0.010960f, 0.011612f, 0.012286f, 0.012983f, 0.013702f, 0.014444f, + 0.015209f, 0.015996f, 0.016807f, 0.017642f, 0.018500f, 0.019382f, 0.020289f, 0.021219f, 0.022174f, 0.023153f, 0.024158f, + 0.025187f, 0.026241f, 0.027321f, 0.028426f, 0.029557f, 0.030713f, 0.031896f, 0.033105f, 0.034340f, 0.035601f, 0.036889f, + 0.038204f, 0.039546f, 0.040915f, 0.042311f, 0.043735f, 0.045186f, 0.046665f, 0.048172f, 0.049707f, 0.051269f, 0.052861f, + 0.054480f, 0.056128f, 0.057805f, 0.059511f, 0.061246f, 0.063010f, 0.064803f, 0.066626f, 0.068478f, 0.070360f, 0.072272f, + 0.074214f, 0.076185f, 0.078187f, 0.080220f, 0.082283f, 0.084376f, 0.086500f, 0.088656f, 0.090842f, 0.093059f, 0.095307f, + 0.097587f, 0.099899f, 0.102242f, 0.104616f, 0.107023f, 0.109462f, 0.111932f, 0.114435f, 0.116971f, 0.119538f, 0.122139f, + 0.124772f, 0.127438f, 0.130136f, 0.132868f, 0.135633f, 0.138432f, 0.141263f, 0.144128f, 0.147027f, 0.149960f, 0.152926f, + 0.155926f, 0.158961f, 0.162029f, 0.165132f, 0.168269f, 0.171441f, 0.174647f, 0.177888f, 0.181164f, 0.184475f, 0.187821f, + 0.191202f, 0.194618f, 0.198069f, 0.201556f, 0.205079f, 0.208637f, 0.212231f, 0.215861f, 0.219526f, 0.223228f, 0.226966f, + 0.230740f, 0.234551f, 0.238398f, 0.242281f, 0.246201f, 0.250158f, 0.254152f, 0.258183f, 0.262251f, 0.266356f, 0.270498f, + 0.274677f, 0.278894f, 0.283149f, 0.287441f, 0.291771f, 0.296138f, 0.300544f, 0.304987f, 0.309469f, 0.313989f, 0.318547f, + 0.323143f, 0.327778f, 0.332452f, 0.337164f, 0.341914f, 0.346704f, 0.351533f, 0.356400f, 0.361307f, 0.366253f, 0.371238f, + 0.376262f, 0.381326f, 0.386430f, 0.391573f, 0.396755f, 0.401978f, 0.407240f, 0.412543f, 0.417885f, 0.423268f, 0.428691f, + 0.434154f, 0.439657f, 0.445201f, 0.450786f, 0.456411f, 0.462077f, 0.467784f, 0.473532f, 0.479320f, 0.485150f, 0.491021f, + 0.496933f, 0.502887f, 0.508881f, 0.514918f, 0.520996f, 0.527115f, 0.533276f, 0.539480f, 0.545725f, 0.552011f, 0.558340f, + 0.564712f, 0.571125f, 0.577581f, 0.584078f, 0.590619f, 0.597202f, 0.603827f, 0.610496f, 0.617207f, 0.623960f, 0.630757f, + 0.637597f, 0.644480f, 0.651406f, 0.658375f, 0.665387f, 0.672443f, 0.679543f, 0.686685f, 0.693872f, 0.701102f, 0.708376f, + 0.715694f, 0.723055f, 0.730461f, 0.737911f, 0.745404f, 0.752942f, 0.760525f, 0.768151f, 0.775822f, 0.783538f, 0.791298f, + 0.799103f, 0.806952f, 0.814847f, 0.822786f, 0.830770f, 0.838799f, 0.846873f, 0.854993f, 0.863157f, 0.871367f, 0.879622f, + 0.887923f, 0.896269f, 0.904661f, 0.913099f, 0.921582f, 0.930111f, 0.938686f, 0.947307f, 0.955974f, 0.964686f, 0.973445f, + 0.982251f, 0.991102f, 1.0f +}; + +static float stbir__srgb_to_linear(float f) +{ + if (f <= 0.04045f) + return f / 12.92f; + else + return (float)pow((f + 0.055f) / 1.055f, 2.4f); +} + +static float stbir__linear_to_srgb(float f) +{ + if (f <= 0.0031308f) + return f * 12.92f; + else + return 1.055f * (float)pow(f, 1 / 2.4f) - 0.055f; +} + +#ifndef STBIR_NON_IEEE_FLOAT +// From https://gist.github.com/rygorous/2203834 + +typedef union +{ + stbir_uint32 u; + float f; +} stbir__FP32; + +static const stbir_uint32 fp32_to_srgb8_tab4[104] = { + 0x0073000d, 0x007a000d, 0x0080000d, 0x0087000d, 0x008d000d, 0x0094000d, 0x009a000d, 0x00a1000d, + 0x00a7001a, 0x00b4001a, 0x00c1001a, 0x00ce001a, 0x00da001a, 0x00e7001a, 0x00f4001a, 0x0101001a, + 0x010e0033, 0x01280033, 0x01410033, 0x015b0033, 0x01750033, 0x018f0033, 0x01a80033, 0x01c20033, + 0x01dc0067, 0x020f0067, 0x02430067, 0x02760067, 0x02aa0067, 0x02dd0067, 0x03110067, 0x03440067, + 0x037800ce, 0x03df00ce, 0x044600ce, 0x04ad00ce, 0x051400ce, 0x057b00c5, 0x05dd00bc, 0x063b00b5, + 0x06970158, 0x07420142, 0x07e30130, 0x087b0120, 0x090b0112, 0x09940106, 0x0a1700fc, 0x0a9500f2, + 0x0b0f01cb, 0x0bf401ae, 0x0ccb0195, 0x0d950180, 0x0e56016e, 0x0f0d015e, 0x0fbc0150, 0x10630143, + 0x11070264, 0x1238023e, 0x1357021d, 0x14660201, 0x156601e9, 0x165a01d3, 0x174401c0, 0x182401af, + 0x18fe0331, 0x1a9602fe, 0x1c1502d2, 0x1d7e02ad, 0x1ed4028d, 0x201a0270, 0x21520256, 0x227d0240, + 0x239f0443, 0x25c003fe, 0x27bf03c4, 0x29a10392, 0x2b6a0367, 0x2d1d0341, 0x2ebe031f, 0x304d0300, + 0x31d105b0, 0x34a80555, 0x37520507, 0x39d504c5, 0x3c37048b, 0x3e7c0458, 0x40a8042a, 0x42bd0401, + 0x44c20798, 0x488e071e, 0x4c1c06b6, 0x4f76065d, 0x52a50610, 0x55ac05cc, 0x5892058f, 0x5b590559, + 0x5e0c0a23, 0x631c0980, 0x67db08f6, 0x6c55087f, 0x70940818, 0x74a007bd, 0x787d076c, 0x7c330723, +}; + +static stbir_uint8 stbir__linear_to_srgb_uchar(float in) +{ + static const stbir__FP32 almostone = { 0x3f7fffff }; // 1-eps + static const stbir__FP32 minval = { (127-13) << 23 }; + stbir_uint32 tab,bias,scale,t; + stbir__FP32 f; + + // Clamp to [2^(-13), 1-eps]; these two values map to 0 and 1, respectively. + // The tests are carefully written so that NaNs map to 0, same as in the reference + // implementation. + if (!(in > minval.f)) // written this way to catch NaNs + in = minval.f; + if (in > almostone.f) + in = almostone.f; + + // Do the table lookup and unpack bias, scale + f.f = in; + tab = fp32_to_srgb8_tab4[(f.u - minval.u) >> 20]; + bias = (tab >> 16) << 9; + scale = tab & 0xffff; + + // Grab next-highest mantissa bits and perform linear interpolation + t = (f.u >> 12) & 0xff; + return (unsigned char) ((bias + scale*t) >> 16); +} + +#else +// sRGB transition values, scaled by 1<<28 +static int stbir__srgb_offset_to_linear_scaled[256] = +{ + 0, 40738, 122216, 203693, 285170, 366648, 448125, 529603, + 611080, 692557, 774035, 855852, 942009, 1033024, 1128971, 1229926, + 1335959, 1447142, 1563542, 1685229, 1812268, 1944725, 2082664, 2226148, + 2375238, 2529996, 2690481, 2856753, 3028870, 3206888, 3390865, 3580856, + 3776916, 3979100, 4187460, 4402049, 4622919, 4850123, 5083710, 5323731, + 5570236, 5823273, 6082892, 6349140, 6622065, 6901714, 7188133, 7481369, + 7781466, 8088471, 8402427, 8723380, 9051372, 9386448, 9728650, 10078021, + 10434603, 10798439, 11169569, 11548036, 11933879, 12327139, 12727857, 13136073, + 13551826, 13975156, 14406100, 14844697, 15290987, 15745007, 16206795, 16676389, + 17153826, 17639142, 18132374, 18633560, 19142734, 19659934, 20185196, 20718552, + 21260042, 21809696, 22367554, 22933648, 23508010, 24090680, 24681686, 25281066, + 25888850, 26505076, 27129772, 27762974, 28404716, 29055026, 29713942, 30381490, + 31057708, 31742624, 32436272, 33138682, 33849884, 34569912, 35298800, 36036568, + 36783260, 37538896, 38303512, 39077136, 39859796, 40651528, 41452360, 42262316, + 43081432, 43909732, 44747252, 45594016, 46450052, 47315392, 48190064, 49074096, + 49967516, 50870356, 51782636, 52704392, 53635648, 54576432, 55526772, 56486700, + 57456236, 58435408, 59424248, 60422780, 61431036, 62449032, 63476804, 64514376, + 65561776, 66619028, 67686160, 68763192, 69850160, 70947088, 72053992, 73170912, + 74297864, 75434880, 76581976, 77739184, 78906536, 80084040, 81271736, 82469648, + 83677792, 84896192, 86124888, 87363888, 88613232, 89872928, 91143016, 92423512, + 93714432, 95015816, 96327688, 97650056, 98982952, 100326408, 101680440, 103045072, + 104420320, 105806224, 107202800, 108610064, 110028048, 111456776, 112896264, 114346544, + 115807632, 117279552, 118762328, 120255976, 121760536, 123276016, 124802440, 126339832, + 127888216, 129447616, 131018048, 132599544, 134192112, 135795792, 137410592, 139036528, + 140673648, 142321952, 143981456, 145652208, 147334208, 149027488, 150732064, 152447968, + 154175200, 155913792, 157663776, 159425168, 161197984, 162982240, 164777968, 166585184, + 168403904, 170234160, 172075968, 173929344, 175794320, 177670896, 179559120, 181458992, + 183370528, 185293776, 187228736, 189175424, 191133888, 193104112, 195086128, 197079968, + 199085648, 201103184, 203132592, 205173888, 207227120, 209292272, 211369392, 213458480, + 215559568, 217672656, 219797792, 221934976, 224084240, 226245600, 228419056, 230604656, + 232802400, 235012320, 237234432, 239468736, 241715280, 243974080, 246245120, 248528464, + 250824112, 253132064, 255452368, 257785040, 260130080, 262487520, 264857376, 267239664, +}; + +static stbir_uint8 stbir__linear_to_srgb_uchar(float f) +{ + int x = (int) (f * (1 << 28)); // has headroom so you don't need to clamp + int v = 0; + int i; + + // Refine the guess with a short binary search. + i = v + 128; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 64; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 32; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 16; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 8; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 4; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 2; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 1; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + + return (stbir_uint8) v; +} +#endif + +static float stbir__filter_trapezoid(float x, float scale) +{ + float halfscale = scale / 2; + float t = 0.5f + halfscale; + STBIR_ASSERT(scale <= 1); + + x = (float)fabs(x); + + if (x >= t) + return 0; + else + { + float r = 0.5f - halfscale; + if (x <= r) + return 1; + else + return (t - x) / scale; + } +} + +static float stbir__support_trapezoid(float scale) +{ + STBIR_ASSERT(scale <= 1); + return 0.5f + scale / 2; +} + +static float stbir__filter_triangle(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x <= 1.0f) + return 1 - x; + else + return 0; +} + +static float stbir__filter_cubic(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x < 1.0f) + return (4 + x*x*(3*x - 6))/6; + else if (x < 2.0f) + return (8 + x*(-12 + x*(6 - x)))/6; + + return (0.0f); +} + +static float stbir__filter_catmullrom(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x < 1.0f) + return 1 - x*x*(2.5f - 1.5f*x); + else if (x < 2.0f) + return 2 - x*(4 + x*(0.5f*x - 2.5f)); + + return (0.0f); +} + +static float stbir__filter_mitchell(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x < 1.0f) + return (16 + x*x*(21 * x - 36))/18; + else if (x < 2.0f) + return (32 + x*(-60 + x*(36 - 7*x)))/18; + + return (0.0f); +} + +static float stbir__support_zero(float s) +{ + STBIR__UNUSED_PARAM(s); + return 0; +} + +static float stbir__support_one(float s) +{ + STBIR__UNUSED_PARAM(s); + return 1; +} + +static float stbir__support_two(float s) +{ + STBIR__UNUSED_PARAM(s); + return 2; +} + +static stbir__filter_info stbir__filter_info_table[] = { + { NULL, stbir__support_zero }, + { stbir__filter_trapezoid, stbir__support_trapezoid }, + { stbir__filter_triangle, stbir__support_one }, + { stbir__filter_cubic, stbir__support_two }, + { stbir__filter_catmullrom, stbir__support_two }, + { stbir__filter_mitchell, stbir__support_two }, +}; + +stbir__inline static int stbir__use_upsampling(float ratio) +{ + return ratio > 1; +} + +stbir__inline static int stbir__use_width_upsampling(stbir__info* stbir_info) +{ + return stbir__use_upsampling(stbir_info->horizontal_scale); +} + +stbir__inline static int stbir__use_height_upsampling(stbir__info* stbir_info) +{ + return stbir__use_upsampling(stbir_info->vertical_scale); +} + +// This is the maximum number of input samples that can affect an output sample +// with the given filter +static int stbir__get_filter_pixel_width(stbir_filter filter, float scale) +{ + STBIR_ASSERT(filter != 0); + STBIR_ASSERT(filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); + + if (stbir__use_upsampling(scale)) + return (int)ceil(stbir__filter_info_table[filter].support(1/scale) * 2); + else + return (int)ceil(stbir__filter_info_table[filter].support(scale) * 2 / scale); +} + +// This is how much to expand buffers to account for filters seeking outside +// the image boundaries. +static int stbir__get_filter_pixel_margin(stbir_filter filter, float scale) +{ + return stbir__get_filter_pixel_width(filter, scale) / 2; +} + +static int stbir__get_coefficient_width(stbir_filter filter, float scale) +{ + if (stbir__use_upsampling(scale)) + return (int)ceil(stbir__filter_info_table[filter].support(1 / scale) * 2); + else + return (int)ceil(stbir__filter_info_table[filter].support(scale) * 2); +} + +static int stbir__get_contributors(float scale, stbir_filter filter, int input_size, int output_size) +{ + if (stbir__use_upsampling(scale)) + return output_size; + else + return (input_size + stbir__get_filter_pixel_margin(filter, scale) * 2); +} + +static int stbir__get_total_horizontal_coefficients(stbir__info* info) +{ + return info->horizontal_num_contributors + * stbir__get_coefficient_width (info->horizontal_filter, info->horizontal_scale); +} + +static int stbir__get_total_vertical_coefficients(stbir__info* info) +{ + return info->vertical_num_contributors + * stbir__get_coefficient_width (info->vertical_filter, info->vertical_scale); +} + +static stbir__contributors* stbir__get_contributor(stbir__contributors* contributors, int n) +{ + return &contributors[n]; +} + +// For perf reasons this code is duplicated in stbir__resample_horizontal_upsample/downsample, +// if you change it here change it there too. +static float* stbir__get_coefficient(float* coefficients, stbir_filter filter, float scale, int n, int c) +{ + int width = stbir__get_coefficient_width(filter, scale); + return &coefficients[width*n + c]; +} + +static int stbir__edge_wrap_slow(stbir_edge edge, int n, int max) +{ + switch (edge) + { + case STBIR_EDGE_ZERO: + return 0; // we'll decode the wrong pixel here, and then overwrite with 0s later + + case STBIR_EDGE_CLAMP: + if (n < 0) + return 0; + + if (n >= max) + return max - 1; + + return n; // NOTREACHED + + case STBIR_EDGE_REFLECT: + { + if (n < 0) + { + if (n < max) + return -n; + else + return max - 1; + } + + if (n >= max) + { + int max2 = max * 2; + if (n >= max2) + return 0; + else + return max2 - n - 1; + } + + return n; // NOTREACHED + } + + case STBIR_EDGE_WRAP: + if (n >= 0) + return (n % max); + else + { + int m = (-n) % max; + + if (m != 0) + m = max - m; + + return (m); + } + // NOTREACHED + + default: + STBIR_ASSERT(!"Unimplemented edge type"); + return 0; + } +} + +stbir__inline static int stbir__edge_wrap(stbir_edge edge, int n, int max) +{ + // avoid per-pixel switch + if (n >= 0 && n < max) + return n; + return stbir__edge_wrap_slow(edge, n, max); +} + +// What input pixels contribute to this output pixel? +static void stbir__calculate_sample_range_upsample(int n, float out_filter_radius, float scale_ratio, float out_shift, int* in_first_pixel, int* in_last_pixel, float* in_center_of_out) +{ + float out_pixel_center = (float)n + 0.5f; + float out_pixel_influence_lowerbound = out_pixel_center - out_filter_radius; + float out_pixel_influence_upperbound = out_pixel_center + out_filter_radius; + + float in_pixel_influence_lowerbound = (out_pixel_influence_lowerbound + out_shift) / scale_ratio; + float in_pixel_influence_upperbound = (out_pixel_influence_upperbound + out_shift) / scale_ratio; + + *in_center_of_out = (out_pixel_center + out_shift) / scale_ratio; + *in_first_pixel = (int)(floor(in_pixel_influence_lowerbound + 0.5)); + *in_last_pixel = (int)(floor(in_pixel_influence_upperbound - 0.5)); +} + +// What output pixels does this input pixel contribute to? +static void stbir__calculate_sample_range_downsample(int n, float in_pixels_radius, float scale_ratio, float out_shift, int* out_first_pixel, int* out_last_pixel, float* out_center_of_in) +{ + float in_pixel_center = (float)n + 0.5f; + float in_pixel_influence_lowerbound = in_pixel_center - in_pixels_radius; + float in_pixel_influence_upperbound = in_pixel_center + in_pixels_radius; + + float out_pixel_influence_lowerbound = in_pixel_influence_lowerbound * scale_ratio - out_shift; + float out_pixel_influence_upperbound = in_pixel_influence_upperbound * scale_ratio - out_shift; + + *out_center_of_in = in_pixel_center * scale_ratio - out_shift; + *out_first_pixel = (int)(floor(out_pixel_influence_lowerbound + 0.5)); + *out_last_pixel = (int)(floor(out_pixel_influence_upperbound - 0.5)); +} + +static void stbir__calculate_coefficients_upsample(stbir_filter filter, float scale, int in_first_pixel, int in_last_pixel, float in_center_of_out, stbir__contributors* contributor, float* coefficient_group) +{ + int i; + float total_filter = 0; + float filter_scale; + + STBIR_ASSERT(in_last_pixel - in_first_pixel <= (int)ceil(stbir__filter_info_table[filter].support(1/scale) * 2)); // Taken directly from stbir__get_coefficient_width() which we can't call because we don't know if we're horizontal or vertical. + + contributor->n0 = in_first_pixel; + contributor->n1 = in_last_pixel; + + STBIR_ASSERT(contributor->n1 >= contributor->n0); + + for (i = 0; i <= in_last_pixel - in_first_pixel; i++) + { + float in_pixel_center = (float)(i + in_first_pixel) + 0.5f; + coefficient_group[i] = stbir__filter_info_table[filter].kernel(in_center_of_out - in_pixel_center, 1 / scale); + + // If the coefficient is zero, skip it. (Don't do the <0 check here, we want the influence of those outside pixels.) + if (i == 0 && !coefficient_group[i]) + { + contributor->n0 = ++in_first_pixel; + i--; + continue; + } + + total_filter += coefficient_group[i]; + } + + STBIR_ASSERT(stbir__filter_info_table[filter].kernel((float)(in_last_pixel + 1) + 0.5f - in_center_of_out, 1/scale) == 0); + + STBIR_ASSERT(total_filter > 0.9); + STBIR_ASSERT(total_filter < 1.1f); // Make sure it's not way off. + + // Make sure the sum of all coefficients is 1. + filter_scale = 1 / total_filter; + + for (i = 0; i <= in_last_pixel - in_first_pixel; i++) + coefficient_group[i] *= filter_scale; + + for (i = in_last_pixel - in_first_pixel; i >= 0; i--) + { + if (coefficient_group[i]) + break; + + // This line has no weight. We can skip it. + contributor->n1 = contributor->n0 + i - 1; + } +} + +static void stbir__calculate_coefficients_downsample(stbir_filter filter, float scale_ratio, int out_first_pixel, int out_last_pixel, float out_center_of_in, stbir__contributors* contributor, float* coefficient_group) +{ + int i; + + STBIR_ASSERT(out_last_pixel - out_first_pixel <= (int)ceil(stbir__filter_info_table[filter].support(scale_ratio) * 2)); // Taken directly from stbir__get_coefficient_width() which we can't call because we don't know if we're horizontal or vertical. + + contributor->n0 = out_first_pixel; + contributor->n1 = out_last_pixel; + + STBIR_ASSERT(contributor->n1 >= contributor->n0); + + for (i = 0; i <= out_last_pixel - out_first_pixel; i++) + { + float out_pixel_center = (float)(i + out_first_pixel) + 0.5f; + float x = out_pixel_center - out_center_of_in; + coefficient_group[i] = stbir__filter_info_table[filter].kernel(x, scale_ratio) * scale_ratio; + } + + STBIR_ASSERT(stbir__filter_info_table[filter].kernel((float)(out_last_pixel + 1) + 0.5f - out_center_of_in, scale_ratio) == 0); + + for (i = out_last_pixel - out_first_pixel; i >= 0; i--) + { + if (coefficient_group[i]) + break; + + // This line has no weight. We can skip it. + contributor->n1 = contributor->n0 + i - 1; + } +} + +static void stbir__normalize_downsample_coefficients(stbir__contributors* contributors, float* coefficients, stbir_filter filter, float scale_ratio, int input_size, int output_size) +{ + int num_contributors = stbir__get_contributors(scale_ratio, filter, input_size, output_size); + int num_coefficients = stbir__get_coefficient_width(filter, scale_ratio); + int i, j; + int skip; + + for (i = 0; i < output_size; i++) + { + float scale; + float total = 0; + + for (j = 0; j < num_contributors; j++) + { + if (i >= contributors[j].n0 && i <= contributors[j].n1) + { + float coefficient = *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i - contributors[j].n0); + total += coefficient; + } + else if (i < contributors[j].n0) + break; + } + + STBIR_ASSERT(total > 0.9f); + STBIR_ASSERT(total < 1.1f); + + scale = 1 / total; + + for (j = 0; j < num_contributors; j++) + { + if (i >= contributors[j].n0 && i <= contributors[j].n1) + *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i - contributors[j].n0) *= scale; + else if (i < contributors[j].n0) + break; + } + } + + // Optimize: Skip zero coefficients and contributions outside of image bounds. + // Do this after normalizing because normalization depends on the n0/n1 values. + for (j = 0; j < num_contributors; j++) + { + int range, max, width; + + skip = 0; + while (*stbir__get_coefficient(coefficients, filter, scale_ratio, j, skip) == 0) + skip++; + + contributors[j].n0 += skip; + + while (contributors[j].n0 < 0) + { + contributors[j].n0++; + skip++; + } + + range = contributors[j].n1 - contributors[j].n0 + 1; + max = stbir__min(num_coefficients, range); + + width = stbir__get_coefficient_width(filter, scale_ratio); + for (i = 0; i < max; i++) + { + if (i + skip >= width) + break; + + *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i) = *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i + skip); + } + + continue; + } + + // Using min to avoid writing into invalid pixels. + for (i = 0; i < num_contributors; i++) + contributors[i].n1 = stbir__min(contributors[i].n1, output_size - 1); +} + +// Each scan line uses the same kernel values so we should calculate the kernel +// values once and then we can use them for every scan line. +static void stbir__calculate_filters(stbir__contributors* contributors, float* coefficients, stbir_filter filter, float scale_ratio, float shift, int input_size, int output_size) +{ + int n; + int total_contributors = stbir__get_contributors(scale_ratio, filter, input_size, output_size); + + if (stbir__use_upsampling(scale_ratio)) + { + float out_pixels_radius = stbir__filter_info_table[filter].support(1 / scale_ratio) * scale_ratio; + + // Looping through out pixels + for (n = 0; n < total_contributors; n++) + { + float in_center_of_out; // Center of the current out pixel in the in pixel space + int in_first_pixel, in_last_pixel; + + stbir__calculate_sample_range_upsample(n, out_pixels_radius, scale_ratio, shift, &in_first_pixel, &in_last_pixel, &in_center_of_out); + + stbir__calculate_coefficients_upsample(filter, scale_ratio, in_first_pixel, in_last_pixel, in_center_of_out, stbir__get_contributor(contributors, n), stbir__get_coefficient(coefficients, filter, scale_ratio, n, 0)); + } + } + else + { + float in_pixels_radius = stbir__filter_info_table[filter].support(scale_ratio) / scale_ratio; + + // Looping through in pixels + for (n = 0; n < total_contributors; n++) + { + float out_center_of_in; // Center of the current out pixel in the in pixel space + int out_first_pixel, out_last_pixel; + int n_adjusted = n - stbir__get_filter_pixel_margin(filter, scale_ratio); + + stbir__calculate_sample_range_downsample(n_adjusted, in_pixels_radius, scale_ratio, shift, &out_first_pixel, &out_last_pixel, &out_center_of_in); + + stbir__calculate_coefficients_downsample(filter, scale_ratio, out_first_pixel, out_last_pixel, out_center_of_in, stbir__get_contributor(contributors, n), stbir__get_coefficient(coefficients, filter, scale_ratio, n, 0)); + } + + stbir__normalize_downsample_coefficients(contributors, coefficients, filter, scale_ratio, input_size, output_size); + } +} + +static float* stbir__get_decode_buffer(stbir__info* stbir_info) +{ + // The 0 index of the decode buffer starts after the margin. This makes + // it okay to use negative indexes on the decode buffer. + return &stbir_info->decode_buffer[stbir_info->horizontal_filter_pixel_margin * stbir_info->channels]; +} + +#define STBIR__DECODE(type, colorspace) ((int)(type) * (STBIR_MAX_COLORSPACES) + (int)(colorspace)) + +static void stbir__decode_scanline(stbir__info* stbir_info, int n) +{ + int c; + int channels = stbir_info->channels; + int alpha_channel = stbir_info->alpha_channel; + int type = stbir_info->type; + int colorspace = stbir_info->colorspace; + int input_w = stbir_info->input_w; + size_t input_stride_bytes = stbir_info->input_stride_bytes; + float* decode_buffer = stbir__get_decode_buffer(stbir_info); + stbir_edge edge_horizontal = stbir_info->edge_horizontal; + stbir_edge edge_vertical = stbir_info->edge_vertical; + size_t in_buffer_row_offset = stbir__edge_wrap(edge_vertical, n, stbir_info->input_h) * input_stride_bytes; + const void* input_data = (char *) stbir_info->input_data + in_buffer_row_offset; + int max_x = input_w + stbir_info->horizontal_filter_pixel_margin; + int decode = STBIR__DECODE(type, colorspace); + + int x = -stbir_info->horizontal_filter_pixel_margin; + + // special handling for STBIR_EDGE_ZERO because it needs to return an item that doesn't appear in the input, + // and we want to avoid paying overhead on every pixel if not STBIR_EDGE_ZERO + if (edge_vertical == STBIR_EDGE_ZERO && (n < 0 || n >= stbir_info->input_h)) + { + for (; x < max_x; x++) + for (c = 0; c < channels; c++) + decode_buffer[x*channels + c] = 0; + return; + } + + switch (decode) + { + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = ((float)((const unsigned char*)input_data)[input_pixel_index + c]) / stbir__max_uint8_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_uchar_to_linear_float[((const unsigned char*)input_data)[input_pixel_index + c]]; + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = ((float)((const unsigned char*)input_data)[input_pixel_index + alpha_channel]) / stbir__max_uint8_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = ((float)((const unsigned short*)input_data)[input_pixel_index + c]) / stbir__max_uint16_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_to_linear(((float)((const unsigned short*)input_data)[input_pixel_index + c]) / stbir__max_uint16_as_float); + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = ((float)((const unsigned short*)input_data)[input_pixel_index + alpha_channel]) / stbir__max_uint16_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = (float)(((double)((const unsigned int*)input_data)[input_pixel_index + c]) / stbir__max_uint32_as_float); + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_to_linear((float)(((double)((const unsigned int*)input_data)[input_pixel_index + c]) / stbir__max_uint32_as_float)); + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = (float)(((double)((const unsigned int*)input_data)[input_pixel_index + alpha_channel]) / stbir__max_uint32_as_float); + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = ((const float*)input_data)[input_pixel_index + c]; + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_to_linear(((const float*)input_data)[input_pixel_index + c]); + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = ((const float*)input_data)[input_pixel_index + alpha_channel]; + } + + break; + + default: + STBIR_ASSERT(!"Unknown type/colorspace/channels combination."); + break; + } + + if (!(stbir_info->flags & STBIR_FLAG_ALPHA_PREMULTIPLIED)) + { + for (x = -stbir_info->horizontal_filter_pixel_margin; x < max_x; x++) + { + int decode_pixel_index = x * channels; + + // If the alpha value is 0 it will clobber the color values. Make sure it's not. + float alpha = decode_buffer[decode_pixel_index + alpha_channel]; +#ifndef STBIR_NO_ALPHA_EPSILON + if (stbir_info->type != STBIR_TYPE_FLOAT) { + alpha += STBIR_ALPHA_EPSILON; + decode_buffer[decode_pixel_index + alpha_channel] = alpha; + } +#endif + for (c = 0; c < channels; c++) + { + if (c == alpha_channel) + continue; + + decode_buffer[decode_pixel_index + c] *= alpha; + } + } + } + + if (edge_horizontal == STBIR_EDGE_ZERO) + { + for (x = -stbir_info->horizontal_filter_pixel_margin; x < 0; x++) + { + for (c = 0; c < channels; c++) + decode_buffer[x*channels + c] = 0; + } + for (x = input_w; x < max_x; x++) + { + for (c = 0; c < channels; c++) + decode_buffer[x*channels + c] = 0; + } + } +} + +static float* stbir__get_ring_buffer_entry(float* ring_buffer, int index, int ring_buffer_length) +{ + return &ring_buffer[index * ring_buffer_length]; +} + +static float* stbir__add_empty_ring_buffer_entry(stbir__info* stbir_info, int n) +{ + int ring_buffer_index; + float* ring_buffer; + + stbir_info->ring_buffer_last_scanline = n; + + if (stbir_info->ring_buffer_begin_index < 0) + { + ring_buffer_index = stbir_info->ring_buffer_begin_index = 0; + stbir_info->ring_buffer_first_scanline = n; + } + else + { + ring_buffer_index = (stbir_info->ring_buffer_begin_index + (stbir_info->ring_buffer_last_scanline - stbir_info->ring_buffer_first_scanline)) % stbir_info->ring_buffer_num_entries; + STBIR_ASSERT(ring_buffer_index != stbir_info->ring_buffer_begin_index); + } + + ring_buffer = stbir__get_ring_buffer_entry(stbir_info->ring_buffer, ring_buffer_index, stbir_info->ring_buffer_length_bytes / sizeof(float)); + memset(ring_buffer, 0, stbir_info->ring_buffer_length_bytes); + + return ring_buffer; +} + + +static void stbir__resample_horizontal_upsample(stbir__info* stbir_info, float* output_buffer) +{ + int x, k; + int output_w = stbir_info->output_w; + int channels = stbir_info->channels; + float* decode_buffer = stbir__get_decode_buffer(stbir_info); + stbir__contributors* horizontal_contributors = stbir_info->horizontal_contributors; + float* horizontal_coefficients = stbir_info->horizontal_coefficients; + int coefficient_width = stbir_info->horizontal_coefficient_width; + + for (x = 0; x < output_w; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int out_pixel_index = x * channels; + int coefficient_group = coefficient_width * x; + int coefficient_counter = 0; + + STBIR_ASSERT(n1 >= n0); + STBIR_ASSERT(n0 >= -stbir_info->horizontal_filter_pixel_margin); + STBIR_ASSERT(n1 >= -stbir_info->horizontal_filter_pixel_margin); + STBIR_ASSERT(n0 < stbir_info->input_w + stbir_info->horizontal_filter_pixel_margin); + STBIR_ASSERT(n1 < stbir_info->input_w + stbir_info->horizontal_filter_pixel_margin); + + switch (channels) { + case 1: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 1; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + } + break; + case 2: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 2; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + } + break; + case 3: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 3; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + } + break; + case 4: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 4; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + output_buffer[out_pixel_index + 3] += decode_buffer[in_pixel_index + 3] * coefficient; + } + break; + default: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * channels; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + int c; + STBIR_ASSERT(coefficient != 0); + for (c = 0; c < channels; c++) + output_buffer[out_pixel_index + c] += decode_buffer[in_pixel_index + c] * coefficient; + } + break; + } + } +} + +static void stbir__resample_horizontal_downsample(stbir__info* stbir_info, float* output_buffer) +{ + int x, k; + int input_w = stbir_info->input_w; + int channels = stbir_info->channels; + float* decode_buffer = stbir__get_decode_buffer(stbir_info); + stbir__contributors* horizontal_contributors = stbir_info->horizontal_contributors; + float* horizontal_coefficients = stbir_info->horizontal_coefficients; + int coefficient_width = stbir_info->horizontal_coefficient_width; + int filter_pixel_margin = stbir_info->horizontal_filter_pixel_margin; + int max_x = input_w + filter_pixel_margin * 2; + + STBIR_ASSERT(!stbir__use_width_upsampling(stbir_info)); + + switch (channels) { + case 1: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 1; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 1; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + } + } + break; + + case 2: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 2; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 2; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + } + } + break; + + case 3: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 3; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 3; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + } + } + break; + + case 4: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 4; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 4; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + output_buffer[out_pixel_index + 3] += decode_buffer[in_pixel_index + 3] * coefficient; + } + } + break; + + default: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * channels; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int c; + int out_pixel_index = k * channels; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + STBIR_ASSERT(coefficient != 0); + for (c = 0; c < channels; c++) + output_buffer[out_pixel_index + c] += decode_buffer[in_pixel_index + c] * coefficient; + } + } + break; + } +} + +static void stbir__decode_and_resample_upsample(stbir__info* stbir_info, int n) +{ + // Decode the nth scanline from the source image into the decode buffer. + stbir__decode_scanline(stbir_info, n); + + // Now resample it into the ring buffer. + if (stbir__use_width_upsampling(stbir_info)) + stbir__resample_horizontal_upsample(stbir_info, stbir__add_empty_ring_buffer_entry(stbir_info, n)); + else + stbir__resample_horizontal_downsample(stbir_info, stbir__add_empty_ring_buffer_entry(stbir_info, n)); + + // Now it's sitting in the ring buffer ready to be used as source for the vertical sampling. +} + +static void stbir__decode_and_resample_downsample(stbir__info* stbir_info, int n) +{ + // Decode the nth scanline from the source image into the decode buffer. + stbir__decode_scanline(stbir_info, n); + + memset(stbir_info->horizontal_buffer, 0, stbir_info->output_w * stbir_info->channels * sizeof(float)); + + // Now resample it into the horizontal buffer. + if (stbir__use_width_upsampling(stbir_info)) + stbir__resample_horizontal_upsample(stbir_info, stbir_info->horizontal_buffer); + else + stbir__resample_horizontal_downsample(stbir_info, stbir_info->horizontal_buffer); + + // Now it's sitting in the horizontal buffer ready to be distributed into the ring buffers. +} + +// Get the specified scan line from the ring buffer. +static float* stbir__get_ring_buffer_scanline(int get_scanline, float* ring_buffer, int begin_index, int first_scanline, int ring_buffer_num_entries, int ring_buffer_length) +{ + int ring_buffer_index = (begin_index + (get_scanline - first_scanline)) % ring_buffer_num_entries; + return stbir__get_ring_buffer_entry(ring_buffer, ring_buffer_index, ring_buffer_length); +} + + +static void stbir__encode_scanline(stbir__info* stbir_info, int num_pixels, void *output_buffer, float *encode_buffer, int channels, int alpha_channel, int decode) +{ + int x; + int n; + int num_nonalpha; + stbir_uint16 nonalpha[STBIR_MAX_CHANNELS]; + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_PREMULTIPLIED)) + { + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + float alpha = encode_buffer[pixel_index + alpha_channel]; + float reciprocal_alpha = alpha ? 1.0f / alpha : 0; + + // unrolling this produced a 1% slowdown upscaling a large RGBA linear-space image on my machine - stb + for (n = 0; n < channels; n++) + if (n != alpha_channel) + encode_buffer[pixel_index + n] *= reciprocal_alpha; + + // We added in a small epsilon to prevent the color channel from being deleted with zero alpha. + // Because we only add it for integer types, it will automatically be discarded on integer + // conversion, so we don't need to subtract it back out (which would be problematic for + // numeric precision reasons). + } + } + + // build a table of all channels that need colorspace correction, so + // we don't perform colorspace correction on channels that don't need it. + for (x = 0, num_nonalpha = 0; x < channels; ++x) + { + if (x != alpha_channel || (stbir_info->flags & STBIR_FLAG_ALPHA_USES_COLORSPACE)) + { + nonalpha[num_nonalpha++] = (stbir_uint16)x; + } + } + + #define STBIR__ROUND_INT(f) ((int) ((f)+0.5)) + #define STBIR__ROUND_UINT(f) ((stbir_uint32) ((f)+0.5)) + + #ifdef STBIR__SATURATE_INT + #define STBIR__ENCODE_LINEAR8(f) stbir__saturate8 (STBIR__ROUND_INT((f) * stbir__max_uint8_as_float )) + #define STBIR__ENCODE_LINEAR16(f) stbir__saturate16(STBIR__ROUND_INT((f) * stbir__max_uint16_as_float)) + #else + #define STBIR__ENCODE_LINEAR8(f) (unsigned char ) STBIR__ROUND_INT(stbir__saturate(f) * stbir__max_uint8_as_float ) + #define STBIR__ENCODE_LINEAR16(f) (unsigned short) STBIR__ROUND_INT(stbir__saturate(f) * stbir__max_uint16_as_float) + #endif + + switch (decode) + { + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((unsigned char*)output_buffer)[index] = STBIR__ENCODE_LINEAR8(encode_buffer[index]); + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((unsigned char*)output_buffer)[index] = stbir__linear_to_srgb_uchar(encode_buffer[index]); + } + + if (!(stbir_info->flags & STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((unsigned char *)output_buffer)[pixel_index + alpha_channel] = STBIR__ENCODE_LINEAR8(encode_buffer[pixel_index+alpha_channel]); + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((unsigned short*)output_buffer)[index] = STBIR__ENCODE_LINEAR16(encode_buffer[index]); + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((unsigned short*)output_buffer)[index] = (unsigned short)STBIR__ROUND_INT(stbir__linear_to_srgb(stbir__saturate(encode_buffer[index])) * stbir__max_uint16_as_float); + } + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((unsigned short*)output_buffer)[pixel_index + alpha_channel] = STBIR__ENCODE_LINEAR16(encode_buffer[pixel_index + alpha_channel]); + } + + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((unsigned int*)output_buffer)[index] = (unsigned int)STBIR__ROUND_UINT(((double)stbir__saturate(encode_buffer[index])) * stbir__max_uint32_as_float); + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((unsigned int*)output_buffer)[index] = (unsigned int)STBIR__ROUND_UINT(((double)stbir__linear_to_srgb(stbir__saturate(encode_buffer[index]))) * stbir__max_uint32_as_float); + } + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((unsigned int*)output_buffer)[pixel_index + alpha_channel] = (unsigned int)STBIR__ROUND_INT(((double)stbir__saturate(encode_buffer[pixel_index + alpha_channel])) * stbir__max_uint32_as_float); + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((float*)output_buffer)[index] = encode_buffer[index]; + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((float*)output_buffer)[index] = stbir__linear_to_srgb(encode_buffer[index]); + } + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((float*)output_buffer)[pixel_index + alpha_channel] = encode_buffer[pixel_index + alpha_channel]; + } + break; + + default: + STBIR_ASSERT(!"Unknown type/colorspace/channels combination."); + break; + } +} + +static void stbir__resample_vertical_upsample(stbir__info* stbir_info, int n) +{ + int x, k; + int output_w = stbir_info->output_w; + stbir__contributors* vertical_contributors = stbir_info->vertical_contributors; + float* vertical_coefficients = stbir_info->vertical_coefficients; + int channels = stbir_info->channels; + int alpha_channel = stbir_info->alpha_channel; + int type = stbir_info->type; + int colorspace = stbir_info->colorspace; + int ring_buffer_entries = stbir_info->ring_buffer_num_entries; + void* output_data = stbir_info->output_data; + float* encode_buffer = stbir_info->encode_buffer; + int decode = STBIR__DECODE(type, colorspace); + int coefficient_width = stbir_info->vertical_coefficient_width; + int coefficient_counter; + int contributor = n; + + float* ring_buffer = stbir_info->ring_buffer; + int ring_buffer_begin_index = stbir_info->ring_buffer_begin_index; + int ring_buffer_first_scanline = stbir_info->ring_buffer_first_scanline; + int ring_buffer_length = stbir_info->ring_buffer_length_bytes/sizeof(float); + + int n0,n1, output_row_start; + int coefficient_group = coefficient_width * contributor; + + n0 = vertical_contributors[contributor].n0; + n1 = vertical_contributors[contributor].n1; + + output_row_start = n * stbir_info->output_stride_bytes; + + STBIR_ASSERT(stbir__use_height_upsampling(stbir_info)); + + memset(encode_buffer, 0, output_w * sizeof(float) * channels); + + // I tried reblocking this for better cache usage of encode_buffer + // (using x_outer, k, x_inner), but it lost speed. -- stb + + coefficient_counter = 0; + switch (channels) { + case 1: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 1; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + } + } + break; + case 2: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 2; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + encode_buffer[in_pixel_index + 1] += ring_buffer_entry[in_pixel_index + 1] * coefficient; + } + } + break; + case 3: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 3; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + encode_buffer[in_pixel_index + 1] += ring_buffer_entry[in_pixel_index + 1] * coefficient; + encode_buffer[in_pixel_index + 2] += ring_buffer_entry[in_pixel_index + 2] * coefficient; + } + } + break; + case 4: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 4; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + encode_buffer[in_pixel_index + 1] += ring_buffer_entry[in_pixel_index + 1] * coefficient; + encode_buffer[in_pixel_index + 2] += ring_buffer_entry[in_pixel_index + 2] * coefficient; + encode_buffer[in_pixel_index + 3] += ring_buffer_entry[in_pixel_index + 3] * coefficient; + } + } + break; + default: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * channels; + int c; + for (c = 0; c < channels; c++) + encode_buffer[in_pixel_index + c] += ring_buffer_entry[in_pixel_index + c] * coefficient; + } + } + break; + } + stbir__encode_scanline(stbir_info, output_w, (char *) output_data + output_row_start, encode_buffer, channels, alpha_channel, decode); +} + +static void stbir__resample_vertical_downsample(stbir__info* stbir_info, int n) +{ + int x, k; + int output_w = stbir_info->output_w; + stbir__contributors* vertical_contributors = stbir_info->vertical_contributors; + float* vertical_coefficients = stbir_info->vertical_coefficients; + int channels = stbir_info->channels; + int ring_buffer_entries = stbir_info->ring_buffer_num_entries; + float* horizontal_buffer = stbir_info->horizontal_buffer; + int coefficient_width = stbir_info->vertical_coefficient_width; + int contributor = n + stbir_info->vertical_filter_pixel_margin; + + float* ring_buffer = stbir_info->ring_buffer; + int ring_buffer_begin_index = stbir_info->ring_buffer_begin_index; + int ring_buffer_first_scanline = stbir_info->ring_buffer_first_scanline; + int ring_buffer_length = stbir_info->ring_buffer_length_bytes/sizeof(float); + int n0,n1; + + n0 = vertical_contributors[contributor].n0; + n1 = vertical_contributors[contributor].n1; + + STBIR_ASSERT(!stbir__use_height_upsampling(stbir_info)); + + for (k = n0; k <= n1; k++) + { + int coefficient_index = k - n0; + int coefficient_group = coefficient_width * contributor; + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + + switch (channels) { + case 1: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 1; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + } + break; + case 2: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 2; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + ring_buffer_entry[in_pixel_index + 1] += horizontal_buffer[in_pixel_index + 1] * coefficient; + } + break; + case 3: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 3; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + ring_buffer_entry[in_pixel_index + 1] += horizontal_buffer[in_pixel_index + 1] * coefficient; + ring_buffer_entry[in_pixel_index + 2] += horizontal_buffer[in_pixel_index + 2] * coefficient; + } + break; + case 4: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 4; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + ring_buffer_entry[in_pixel_index + 1] += horizontal_buffer[in_pixel_index + 1] * coefficient; + ring_buffer_entry[in_pixel_index + 2] += horizontal_buffer[in_pixel_index + 2] * coefficient; + ring_buffer_entry[in_pixel_index + 3] += horizontal_buffer[in_pixel_index + 3] * coefficient; + } + break; + default: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * channels; + + int c; + for (c = 0; c < channels; c++) + ring_buffer_entry[in_pixel_index + c] += horizontal_buffer[in_pixel_index + c] * coefficient; + } + break; + } + } +} + +static void stbir__buffer_loop_upsample(stbir__info* stbir_info) +{ + int y; + float scale_ratio = stbir_info->vertical_scale; + float out_scanlines_radius = stbir__filter_info_table[stbir_info->vertical_filter].support(1/scale_ratio) * scale_ratio; + + STBIR_ASSERT(stbir__use_height_upsampling(stbir_info)); + + for (y = 0; y < stbir_info->output_h; y++) + { + float in_center_of_out = 0; // Center of the current out scanline in the in scanline space + int in_first_scanline = 0, in_last_scanline = 0; + + stbir__calculate_sample_range_upsample(y, out_scanlines_radius, scale_ratio, stbir_info->vertical_shift, &in_first_scanline, &in_last_scanline, &in_center_of_out); + + STBIR_ASSERT(in_last_scanline - in_first_scanline + 1 <= stbir_info->ring_buffer_num_entries); + + if (stbir_info->ring_buffer_begin_index >= 0) + { + // Get rid of whatever we don't need anymore. + while (in_first_scanline > stbir_info->ring_buffer_first_scanline) + { + if (stbir_info->ring_buffer_first_scanline == stbir_info->ring_buffer_last_scanline) + { + // We just popped the last scanline off the ring buffer. + // Reset it to the empty state. + stbir_info->ring_buffer_begin_index = -1; + stbir_info->ring_buffer_first_scanline = 0; + stbir_info->ring_buffer_last_scanline = 0; + break; + } + else + { + stbir_info->ring_buffer_first_scanline++; + stbir_info->ring_buffer_begin_index = (stbir_info->ring_buffer_begin_index + 1) % stbir_info->ring_buffer_num_entries; + } + } + } + + // Load in new ones. + if (stbir_info->ring_buffer_begin_index < 0) + stbir__decode_and_resample_upsample(stbir_info, in_first_scanline); + + while (in_last_scanline > stbir_info->ring_buffer_last_scanline) + stbir__decode_and_resample_upsample(stbir_info, stbir_info->ring_buffer_last_scanline + 1); + + // Now all buffers should be ready to write a row of vertical sampling. + stbir__resample_vertical_upsample(stbir_info, y); + + STBIR_PROGRESS_REPORT((float)y / stbir_info->output_h); + } +} + +static void stbir__empty_ring_buffer(stbir__info* stbir_info, int first_necessary_scanline) +{ + int output_stride_bytes = stbir_info->output_stride_bytes; + int channels = stbir_info->channels; + int alpha_channel = stbir_info->alpha_channel; + int type = stbir_info->type; + int colorspace = stbir_info->colorspace; + int output_w = stbir_info->output_w; + void* output_data = stbir_info->output_data; + int decode = STBIR__DECODE(type, colorspace); + + float* ring_buffer = stbir_info->ring_buffer; + int ring_buffer_length = stbir_info->ring_buffer_length_bytes/sizeof(float); + + if (stbir_info->ring_buffer_begin_index >= 0) + { + // Get rid of whatever we don't need anymore. + while (first_necessary_scanline > stbir_info->ring_buffer_first_scanline) + { + if (stbir_info->ring_buffer_first_scanline >= 0 && stbir_info->ring_buffer_first_scanline < stbir_info->output_h) + { + int output_row_start = stbir_info->ring_buffer_first_scanline * output_stride_bytes; + float* ring_buffer_entry = stbir__get_ring_buffer_entry(ring_buffer, stbir_info->ring_buffer_begin_index, ring_buffer_length); + stbir__encode_scanline(stbir_info, output_w, (char *) output_data + output_row_start, ring_buffer_entry, channels, alpha_channel, decode); + STBIR_PROGRESS_REPORT((float)stbir_info->ring_buffer_first_scanline / stbir_info->output_h); + } + + if (stbir_info->ring_buffer_first_scanline == stbir_info->ring_buffer_last_scanline) + { + // We just popped the last scanline off the ring buffer. + // Reset it to the empty state. + stbir_info->ring_buffer_begin_index = -1; + stbir_info->ring_buffer_first_scanline = 0; + stbir_info->ring_buffer_last_scanline = 0; + break; + } + else + { + stbir_info->ring_buffer_first_scanline++; + stbir_info->ring_buffer_begin_index = (stbir_info->ring_buffer_begin_index + 1) % stbir_info->ring_buffer_num_entries; + } + } + } +} + +static void stbir__buffer_loop_downsample(stbir__info* stbir_info) +{ + int y; + float scale_ratio = stbir_info->vertical_scale; + int output_h = stbir_info->output_h; + float in_pixels_radius = stbir__filter_info_table[stbir_info->vertical_filter].support(scale_ratio) / scale_ratio; + int pixel_margin = stbir_info->vertical_filter_pixel_margin; + int max_y = stbir_info->input_h + pixel_margin; + + STBIR_ASSERT(!stbir__use_height_upsampling(stbir_info)); + + for (y = -pixel_margin; y < max_y; y++) + { + float out_center_of_in; // Center of the current out scanline in the in scanline space + int out_first_scanline, out_last_scanline; + + stbir__calculate_sample_range_downsample(y, in_pixels_radius, scale_ratio, stbir_info->vertical_shift, &out_first_scanline, &out_last_scanline, &out_center_of_in); + + STBIR_ASSERT(out_last_scanline - out_first_scanline + 1 <= stbir_info->ring_buffer_num_entries); + + if (out_last_scanline < 0 || out_first_scanline >= output_h) + continue; + + stbir__empty_ring_buffer(stbir_info, out_first_scanline); + + stbir__decode_and_resample_downsample(stbir_info, y); + + // Load in new ones. + if (stbir_info->ring_buffer_begin_index < 0) + stbir__add_empty_ring_buffer_entry(stbir_info, out_first_scanline); + + while (out_last_scanline > stbir_info->ring_buffer_last_scanline) + stbir__add_empty_ring_buffer_entry(stbir_info, stbir_info->ring_buffer_last_scanline + 1); + + // Now the horizontal buffer is ready to write to all ring buffer rows. + stbir__resample_vertical_downsample(stbir_info, y); + } + + stbir__empty_ring_buffer(stbir_info, stbir_info->output_h); +} + +static void stbir__setup(stbir__info *info, int input_w, int input_h, int output_w, int output_h, int channels) +{ + info->input_w = input_w; + info->input_h = input_h; + info->output_w = output_w; + info->output_h = output_h; + info->channels = channels; +} + +static void stbir__calculate_transform(stbir__info *info, float s0, float t0, float s1, float t1, float *transform) +{ + info->s0 = s0; + info->t0 = t0; + info->s1 = s1; + info->t1 = t1; + + if (transform) + { + info->horizontal_scale = transform[0]; + info->vertical_scale = transform[1]; + info->horizontal_shift = transform[2]; + info->vertical_shift = transform[3]; + } + else + { + info->horizontal_scale = ((float)info->output_w / info->input_w) / (s1 - s0); + info->vertical_scale = ((float)info->output_h / info->input_h) / (t1 - t0); + + info->horizontal_shift = s0 * info->output_w / (s1 - s0); + info->vertical_shift = t0 * info->output_h / (t1 - t0); + } +} + +static void stbir__choose_filter(stbir__info *info, stbir_filter h_filter, stbir_filter v_filter) +{ + if (h_filter == 0) + h_filter = stbir__use_upsampling(info->horizontal_scale) ? STBIR_DEFAULT_FILTER_UPSAMPLE : STBIR_DEFAULT_FILTER_DOWNSAMPLE; + if (v_filter == 0) + v_filter = stbir__use_upsampling(info->vertical_scale) ? STBIR_DEFAULT_FILTER_UPSAMPLE : STBIR_DEFAULT_FILTER_DOWNSAMPLE; + info->horizontal_filter = h_filter; + info->vertical_filter = v_filter; +} + +static stbir_uint32 stbir__calculate_memory(stbir__info *info) +{ + int pixel_margin = stbir__get_filter_pixel_margin(info->horizontal_filter, info->horizontal_scale); + int filter_height = stbir__get_filter_pixel_width(info->vertical_filter, info->vertical_scale); + + info->horizontal_num_contributors = stbir__get_contributors(info->horizontal_scale, info->horizontal_filter, info->input_w, info->output_w); + info->vertical_num_contributors = stbir__get_contributors(info->vertical_scale , info->vertical_filter , info->input_h, info->output_h); + + // One extra entry because floating point precision problems sometimes cause an extra to be necessary. + info->ring_buffer_num_entries = filter_height + 1; + + info->horizontal_contributors_size = info->horizontal_num_contributors * sizeof(stbir__contributors); + info->horizontal_coefficients_size = stbir__get_total_horizontal_coefficients(info) * sizeof(float); + info->vertical_contributors_size = info->vertical_num_contributors * sizeof(stbir__contributors); + info->vertical_coefficients_size = stbir__get_total_vertical_coefficients(info) * sizeof(float); + info->decode_buffer_size = (info->input_w + pixel_margin * 2) * info->channels * sizeof(float); + info->horizontal_buffer_size = info->output_w * info->channels * sizeof(float); + info->ring_buffer_size = info->output_w * info->channels * info->ring_buffer_num_entries * sizeof(float); + info->encode_buffer_size = info->output_w * info->channels * sizeof(float); + + STBIR_ASSERT(info->horizontal_filter != 0); + STBIR_ASSERT(info->horizontal_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); // this now happens too late + STBIR_ASSERT(info->vertical_filter != 0); + STBIR_ASSERT(info->vertical_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); // this now happens too late + + if (stbir__use_height_upsampling(info)) + // The horizontal buffer is for when we're downsampling the height and we + // can't output the result of sampling the decode buffer directly into the + // ring buffers. + info->horizontal_buffer_size = 0; + else + // The encode buffer is to retain precision in the height upsampling method + // and isn't used when height downsampling. + info->encode_buffer_size = 0; + + return info->horizontal_contributors_size + info->horizontal_coefficients_size + + info->vertical_contributors_size + info->vertical_coefficients_size + + info->decode_buffer_size + info->horizontal_buffer_size + + info->ring_buffer_size + info->encode_buffer_size; +} + +static int stbir__resize_allocated(stbir__info *info, + const void* input_data, int input_stride_in_bytes, + void* output_data, int output_stride_in_bytes, + int alpha_channel, stbir_uint32 flags, stbir_datatype type, + stbir_edge edge_horizontal, stbir_edge edge_vertical, stbir_colorspace colorspace, + void* tempmem, size_t tempmem_size_in_bytes) +{ + size_t memory_required = stbir__calculate_memory(info); + + int width_stride_input = input_stride_in_bytes ? input_stride_in_bytes : info->channels * info->input_w * stbir__type_size[type]; + int width_stride_output = output_stride_in_bytes ? output_stride_in_bytes : info->channels * info->output_w * stbir__type_size[type]; + +#ifdef STBIR_DEBUG_OVERWRITE_TEST +#define OVERWRITE_ARRAY_SIZE 8 + unsigned char overwrite_output_before_pre[OVERWRITE_ARRAY_SIZE]; + unsigned char overwrite_tempmem_before_pre[OVERWRITE_ARRAY_SIZE]; + unsigned char overwrite_output_after_pre[OVERWRITE_ARRAY_SIZE]; + unsigned char overwrite_tempmem_after_pre[OVERWRITE_ARRAY_SIZE]; + + size_t begin_forbidden = width_stride_output * (info->output_h - 1) + info->output_w * info->channels * stbir__type_size[type]; + memcpy(overwrite_output_before_pre, &((unsigned char*)output_data)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE); + memcpy(overwrite_output_after_pre, &((unsigned char*)output_data)[begin_forbidden], OVERWRITE_ARRAY_SIZE); + memcpy(overwrite_tempmem_before_pre, &((unsigned char*)tempmem)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE); + memcpy(overwrite_tempmem_after_pre, &((unsigned char*)tempmem)[tempmem_size_in_bytes], OVERWRITE_ARRAY_SIZE); +#endif + + STBIR_ASSERT(info->channels >= 0); + STBIR_ASSERT(info->channels <= STBIR_MAX_CHANNELS); + + if (info->channels < 0 || info->channels > STBIR_MAX_CHANNELS) + return 0; + + STBIR_ASSERT(info->horizontal_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); + STBIR_ASSERT(info->vertical_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); + + if (info->horizontal_filter >= STBIR__ARRAY_SIZE(stbir__filter_info_table)) + return 0; + if (info->vertical_filter >= STBIR__ARRAY_SIZE(stbir__filter_info_table)) + return 0; + + if (alpha_channel < 0) + flags |= STBIR_FLAG_ALPHA_USES_COLORSPACE | STBIR_FLAG_ALPHA_PREMULTIPLIED; + + if (!(flags&STBIR_FLAG_ALPHA_USES_COLORSPACE) || !(flags&STBIR_FLAG_ALPHA_PREMULTIPLIED)) { + STBIR_ASSERT(alpha_channel >= 0 && alpha_channel < info->channels); + } + + if (alpha_channel >= info->channels) + return 0; + + STBIR_ASSERT(tempmem); + + if (!tempmem) + return 0; + + STBIR_ASSERT(tempmem_size_in_bytes >= memory_required); + + if (tempmem_size_in_bytes < memory_required) + return 0; + + memset(tempmem, 0, tempmem_size_in_bytes); + + info->input_data = input_data; + info->input_stride_bytes = width_stride_input; + + info->output_data = output_data; + info->output_stride_bytes = width_stride_output; + + info->alpha_channel = alpha_channel; + info->flags = flags; + info->type = type; + info->edge_horizontal = edge_horizontal; + info->edge_vertical = edge_vertical; + info->colorspace = colorspace; + + info->horizontal_coefficient_width = stbir__get_coefficient_width (info->horizontal_filter, info->horizontal_scale); + info->vertical_coefficient_width = stbir__get_coefficient_width (info->vertical_filter , info->vertical_scale ); + info->horizontal_filter_pixel_width = stbir__get_filter_pixel_width (info->horizontal_filter, info->horizontal_scale); + info->vertical_filter_pixel_width = stbir__get_filter_pixel_width (info->vertical_filter , info->vertical_scale ); + info->horizontal_filter_pixel_margin = stbir__get_filter_pixel_margin(info->horizontal_filter, info->horizontal_scale); + info->vertical_filter_pixel_margin = stbir__get_filter_pixel_margin(info->vertical_filter , info->vertical_scale ); + + info->ring_buffer_length_bytes = info->output_w * info->channels * sizeof(float); + info->decode_buffer_pixels = info->input_w + info->horizontal_filter_pixel_margin * 2; + +#define STBIR__NEXT_MEMPTR(current, newtype) (newtype*)(((unsigned char*)current) + current##_size) + + info->horizontal_contributors = (stbir__contributors *) tempmem; + info->horizontal_coefficients = STBIR__NEXT_MEMPTR(info->horizontal_contributors, float); + info->vertical_contributors = STBIR__NEXT_MEMPTR(info->horizontal_coefficients, stbir__contributors); + info->vertical_coefficients = STBIR__NEXT_MEMPTR(info->vertical_contributors, float); + info->decode_buffer = STBIR__NEXT_MEMPTR(info->vertical_coefficients, float); + + if (stbir__use_height_upsampling(info)) + { + info->horizontal_buffer = NULL; + info->ring_buffer = STBIR__NEXT_MEMPTR(info->decode_buffer, float); + info->encode_buffer = STBIR__NEXT_MEMPTR(info->ring_buffer, float); + + STBIR_ASSERT((size_t)STBIR__NEXT_MEMPTR(info->encode_buffer, unsigned char) == (size_t)tempmem + tempmem_size_in_bytes); + } + else + { + info->horizontal_buffer = STBIR__NEXT_MEMPTR(info->decode_buffer, float); + info->ring_buffer = STBIR__NEXT_MEMPTR(info->horizontal_buffer, float); + info->encode_buffer = NULL; + + STBIR_ASSERT((size_t)STBIR__NEXT_MEMPTR(info->ring_buffer, unsigned char) == (size_t)tempmem + tempmem_size_in_bytes); + } + +#undef STBIR__NEXT_MEMPTR + + // This signals that the ring buffer is empty + info->ring_buffer_begin_index = -1; + + stbir__calculate_filters(info->horizontal_contributors, info->horizontal_coefficients, info->horizontal_filter, info->horizontal_scale, info->horizontal_shift, info->input_w, info->output_w); + stbir__calculate_filters(info->vertical_contributors, info->vertical_coefficients, info->vertical_filter, info->vertical_scale, info->vertical_shift, info->input_h, info->output_h); + + STBIR_PROGRESS_REPORT(0); + + if (stbir__use_height_upsampling(info)) + stbir__buffer_loop_upsample(info); + else + stbir__buffer_loop_downsample(info); + + STBIR_PROGRESS_REPORT(1); + +#ifdef STBIR_DEBUG_OVERWRITE_TEST + STBIR_ASSERT(memcmp(overwrite_output_before_pre, &((unsigned char*)output_data)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE) == 0); + STBIR_ASSERT(memcmp(overwrite_output_after_pre, &((unsigned char*)output_data)[begin_forbidden], OVERWRITE_ARRAY_SIZE) == 0); + STBIR_ASSERT(memcmp(overwrite_tempmem_before_pre, &((unsigned char*)tempmem)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE) == 0); + STBIR_ASSERT(memcmp(overwrite_tempmem_after_pre, &((unsigned char*)tempmem)[tempmem_size_in_bytes], OVERWRITE_ARRAY_SIZE) == 0); +#endif + + return 1; +} + + +static int stbir__resize_arbitrary( + void *alloc_context, + const void* input_data, int input_w, int input_h, int input_stride_in_bytes, + void* output_data, int output_w, int output_h, int output_stride_in_bytes, + float s0, float t0, float s1, float t1, float *transform, + int channels, int alpha_channel, stbir_uint32 flags, stbir_datatype type, + stbir_filter h_filter, stbir_filter v_filter, + stbir_edge edge_horizontal, stbir_edge edge_vertical, stbir_colorspace colorspace) +{ + stbir__info info; + int result; + size_t memory_required; + void* extra_memory; + + stbir__setup(&info, input_w, input_h, output_w, output_h, channels); + stbir__calculate_transform(&info, s0,t0,s1,t1,transform); + stbir__choose_filter(&info, h_filter, v_filter); + memory_required = stbir__calculate_memory(&info); + extra_memory = STBIR_MALLOC(memory_required, alloc_context); + + if (!extra_memory) + return 0; + + result = stbir__resize_allocated(&info, input_data, input_stride_in_bytes, + output_data, output_stride_in_bytes, + alpha_channel, flags, type, + edge_horizontal, edge_vertical, + colorspace, extra_memory, memory_required); + + STBIR_FREE(extra_memory, alloc_context); + + return result; +} + +STBIRDEF int stbir_resize_uint8( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,-1,0, STBIR_TYPE_UINT8, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_LINEAR); +} + +STBIRDEF int stbir_resize_float( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,-1,0, STBIR_TYPE_FLOAT, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_LINEAR); +} + +STBIRDEF int stbir_resize_uint8_srgb(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT8, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB); +} + +STBIRDEF int stbir_resize_uint8_srgb_edgemode(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT8, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + edge_wrap_mode, edge_wrap_mode, STBIR_COLORSPACE_SRGB); +} + +STBIRDEF int stbir_resize_uint8_generic( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT8, filter, filter, + edge_wrap_mode, edge_wrap_mode, space); +} + +STBIRDEF int stbir_resize_uint16_generic(const stbir_uint16 *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + stbir_uint16 *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT16, filter, filter, + edge_wrap_mode, edge_wrap_mode, space); +} + + +STBIRDEF int stbir_resize_float_generic( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_FLOAT, filter, filter, + edge_wrap_mode, edge_wrap_mode, space); +} + + +STBIRDEF int stbir_resize( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, datatype, filter_horizontal, filter_vertical, + edge_mode_horizontal, edge_mode_vertical, space); +} + + +STBIRDEF int stbir_resize_subpixel(const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float x_scale, float y_scale, + float x_offset, float y_offset) +{ + float transform[4]; + transform[0] = x_scale; + transform[1] = y_scale; + transform[2] = x_offset; + transform[3] = y_offset; + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,transform,num_channels,alpha_channel,flags, datatype, filter_horizontal, filter_vertical, + edge_mode_horizontal, edge_mode_vertical, space); +} + +STBIRDEF int stbir_resize_region( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float s0, float t0, float s1, float t1) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + s0,t0,s1,t1,NULL,num_channels,alpha_channel,flags, datatype, filter_horizontal, filter_vertical, + edge_mode_horizontal, edge_mode_vertical, space); +} + +#endif // STB_IMAGE_RESIZE_IMPLEMENTATION + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/src/io/audio.h b/src/io/audio.h index 01aa1892..6e2b77a3 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -9,34 +9,128 @@ namespace io { class AudioSink { public: + enum { + MONO, + STEREO, + _TYPE_COUNT + }; + + struct AudioDevice_t { + std::string name; + int index; + int channels; + std::vector sampleRates; + std::string txtSampleRates; + }; + AudioSink() { } - AudioSink(dsp::stream* in, int bufferSize) { + AudioSink(int bufferSize) { _bufferSize = bufferSize; - _input = in; - buffer = new float[_bufferSize * 2]; - _volume = 1.0f; - Pa_Initialize(); - } - - void init(dsp::stream* in, int bufferSize) { - _bufferSize = bufferSize; - _input = in; - buffer = new float[_bufferSize * 2]; + monoBuffer = new float[_bufferSize]; + stereoBuffer = new dsp::StereoFloat_t[_bufferSize]; _volume = 1.0f; Pa_Initialize(); devTxtList = ""; int devCount = Pa_GetDeviceCount(); + devIndex = Pa_GetDefaultOutputDevice(); const PaDeviceInfo *deviceInfo; + PaStreamParameters outputParams; + outputParams.sampleFormat = paFloat32; + outputParams.hostApiSpecificStreamInfo = NULL; for(int i = 0; i < devCount; i++) { deviceInfo = Pa_GetDeviceInfo(i); + if (deviceInfo->maxOutputChannels < 1) { + continue; + } + AudioDevice_t dev; + dev.name = deviceInfo->name; + dev.index = i; + dev.channels = std::min(deviceInfo->maxOutputChannels, 2); + dev.sampleRates.clear(); + dev.txtSampleRates = ""; + for (int j = 0; j < 6; j++) { + outputParams.channelCount = dev.channels; + outputParams.device = dev.index; + outputParams.suggestedLatency = deviceInfo->defaultLowOutputLatency; + PaError err = Pa_IsFormatSupported(NULL, &outputParams, POSSIBLE_SAMP_RATE[j]); + if (err != paFormatIsSupported) { + continue; + } + dev.sampleRates.push_back(POSSIBLE_SAMP_RATE[j]); + dev.txtSampleRates += std::to_string((int)POSSIBLE_SAMP_RATE[j]); + dev.txtSampleRates += '\0'; + } + if (dev.sampleRates.size() == 0) { + continue; + } + if (i == devIndex) { + devListIndex = devices.size(); + } + devices.push_back(dev); devTxtList += deviceInfo->name; devTxtList += '\0'; } + } + + void init(int bufferSize) { + _bufferSize = bufferSize; + monoBuffer = new float[_bufferSize]; + stereoBuffer = new dsp::StereoFloat_t[_bufferSize]; + _volume = 1.0f; + Pa_Initialize(); + + devTxtList = ""; + int devCount = Pa_GetDeviceCount(); devIndex = Pa_GetDefaultOutputDevice(); + const PaDeviceInfo *deviceInfo; + PaStreamParameters outputParams; + outputParams.sampleFormat = paFloat32; + outputParams.hostApiSpecificStreamInfo = NULL; + for(int i = 0; i < devCount; i++) { + deviceInfo = Pa_GetDeviceInfo(i); + if (deviceInfo->maxOutputChannels < 1) { + continue; + } + AudioDevice_t dev; + dev.name = deviceInfo->name; + dev.index = i; + dev.channels = std::min(deviceInfo->maxOutputChannels, 2); + dev.sampleRates.clear(); + dev.txtSampleRates = ""; + for (int j = 0; j < 6; j++) { + outputParams.channelCount = dev.channels; + outputParams.device = dev.index; + outputParams.suggestedLatency = deviceInfo->defaultLowOutputLatency; + PaError err = Pa_IsFormatSupported(NULL, &outputParams, POSSIBLE_SAMP_RATE[j]); + if (err != paFormatIsSupported) { + continue; + } + dev.sampleRates.push_back(POSSIBLE_SAMP_RATE[j]); + dev.txtSampleRates += std::to_string((int)POSSIBLE_SAMP_RATE[j]); + dev.txtSampleRates += '\0'; + } + if (dev.sampleRates.size() == 0) { + continue; + } + if (i == devIndex) { + devListIndex = devices.size(); + } + devices.push_back(dev); + devTxtList += deviceInfo->name; + devTxtList += '\0'; + } + } + + void setMonoInput(dsp::stream* input) { + _monoInput = input; + } + + void setStereoInput(dsp::stream* input) { + _stereoInput = input; } void setVolume(float volume) { @@ -47,13 +141,25 @@ namespace io { if (running) { return; } + const PaDeviceInfo *deviceInfo; + AudioDevice_t dev = devices[devListIndex]; PaStreamParameters outputParams; + deviceInfo = Pa_GetDeviceInfo(dev.index); outputParams.channelCount = 2; outputParams.sampleFormat = paFloat32; outputParams.hostApiSpecificStreamInfo = NULL; - outputParams.device = devIndex; + outputParams.device = dev.index; outputParams.suggestedLatency = Pa_GetDeviceInfo(outputParams.device)->defaultLowOutputLatency; - PaError err = Pa_OpenStream(&stream, NULL, &outputParams, 48000.0f, _bufferSize, paClipOff, _callback, this); + PaError err; + if (streamType == MONO) { + err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, NULL, + (dev.channels == 2) ? _mono_to_stereo_callback : _mono_to_mono_callback, this); + } + else { + err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, NULL, + (dev.channels == 2) ? _stereo_to_stereo_callback : _stereo_to_mono_callback, this); + } + if (err != 0) { spdlog::error("Error while opening audio stream: ({0}) => {1}", err, Pa_GetErrorText(err)); return; @@ -81,47 +187,128 @@ namespace io { return; } _bufferSize = blockSize; + delete[] monoBuffer; + delete[] stereoBuffer; + monoBuffer = new float[_bufferSize]; + stereoBuffer = new dsp::StereoFloat_t[_bufferSize]; + } + + void setSampleRate(float sampleRate) { + _sampleRate = sampleRate; } void setDevice(int id) { - if (devIndex == id) { + if (devListIndex == id) { return; } if (running) { return; } - devIndex = id; + devListIndex = id; + devIndex = devices[id].index; } int getDeviceId() { - return devIndex; + return devListIndex; + } + + void setStreamType(int type) { + streamType = type; } std::string devTxtList; + std::vector devices; private: - static int _callback(const void *input, + static int _mono_to_mono_callback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; - _this->_input->read(_this->buffer, frameCount); + _this->_monoInput->read(_this->monoBuffer, frameCount); float vol = powf(_this->_volume, 2); for (int i = 0; i < frameCount; i++) { - outbuf[(i * 2) + 0] = _this->buffer[i] * vol; - outbuf[(i * 2) + 1] = _this->buffer[i] * vol; + outbuf[i] = _this->monoBuffer[i] * vol; } return 0; } + static int _stereo_to_stereo_callback(const void *input, + void *output, + unsigned long frameCount, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, void *userData ) { + AudioSink* _this = (AudioSink*)userData; + dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; + _this->_stereoInput->read(_this->stereoBuffer, frameCount); + + // Note: Calculate the power in the UI instead of here + + float vol = powf(_this->_volume, 2); + for (int i = 0; i < frameCount; i++) { + outbuf[i].l = _this->stereoBuffer[i].l * vol; + outbuf[i].r = _this->stereoBuffer[i].r * vol; + } + return 0; + } + + static int _mono_to_stereo_callback(const void *input, + void *output, + unsigned long frameCount, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, void *userData ) { + AudioSink* _this = (AudioSink*)userData; + dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; + _this->_monoInput->read(_this->monoBuffer, frameCount); + + float vol = powf(_this->_volume, 2); + for (int i = 0; i < frameCount; i++) { + outbuf[i].l = _this->monoBuffer[i] * vol; + outbuf[i].r = _this->monoBuffer[i] * vol; + } + return 0; + } + + static int _stereo_to_mono_callback(const void *input, + void *output, + unsigned long frameCount, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, void *userData ) { + AudioSink* _this = (AudioSink*)userData; + float* outbuf = (float*)output; + _this->_stereoInput->read(_this->stereoBuffer, frameCount); + + // Note: Calculate the power in the UI instead of here + + float vol = powf(_this->_volume, 2); + for (int i = 0; i < frameCount; i++) { + outbuf[i] = ((_this->stereoBuffer[i].l + _this->stereoBuffer[i].r) / 2.0f) * vol; + } + return 0; + } + + float POSSIBLE_SAMP_RATE[6] = { + 48000.0f, + 44100.0f, + 24000.0f, + 22050.0f, + 12000.0f, + 11025.0f + }; + + int streamType; int devIndex; + int devListIndex; + float _sampleRate; int _bufferSize; - dsp::stream* _input; - float* buffer; - float _volume; + dsp::stream* _monoInput; + dsp::stream* _stereoInput; + float* monoBuffer; + dsp::StereoFloat_t* stereoBuffer; + float _volume = 1.0f; PaStream *stream; bool running = false; }; diff --git a/src/io/soapy.h b/src/io/soapy.h index cf481868..16ddb7ac 100644 --- a/src/io/soapy.h +++ b/src/io/soapy.h @@ -52,6 +52,7 @@ namespace io { devList = SoapySDR::Device::enumerate(); txtDevList = ""; + devNameList.clear(); if (devList.size() == 0) { txtDevList += '\0'; return; @@ -59,6 +60,7 @@ namespace io { for (int i = 0; i < devList.size(); i++) { txtDevList += devList[i]["label"]; txtDevList += '\0'; + devNameList.push_back(devList[i]["label"]); } } @@ -74,6 +76,7 @@ namespace io { txtSampleRateList += std::to_string((int)sampleRates[i]); txtSampleRateList += '\0'; } + _sampleRate = sampleRates[0]; gainList = dev->listGains(SOAPY_SDR_RX, 0); gainRanges.clear(); @@ -84,7 +87,11 @@ namespace io { currentGains = new float[gainList.size()]; for (int i = 0; i < gainList.size(); i++) { gainRanges.push_back(dev->getGainRange(SOAPY_SDR_RX, 0, gainList[i])); - currentGains[i] = dev->getGain(SOAPY_SDR_RX, 0, gainList[i]); + SoapySDR::Range rng = dev->getGainRange(SOAPY_SDR_RX, 0, gainList[i]); + + spdlog::info("{0}: {1} -> {2} (Step: {3})", gainList[i], rng.minimum(), rng.maximum(), rng.step()); + + currentGains[i] = rng.minimum(); } } @@ -109,8 +116,14 @@ namespace io { return running; } + float getSampleRate() { + return _sampleRate; + } + SoapySDR::KwargsList devList; + std::vector devNameList; std::string txtDevList; + std::vector sampleRates; std::string txtSampleRateList; diff --git a/src/main.cpp b/src/main.cpp index 507bab9a..6c290b6c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,12 +5,17 @@ #include #include #include -#include +#include #include #include #include #include #include +#include +#include + +#define STB_IMAGE_RESIZE_IMPLEMENTATION +#include #ifdef _WIN32 #include @@ -37,6 +42,7 @@ int main() { glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac + // Create window with graphics context GLFWwindow* window = glfwCreateWindow(1280, 720, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); @@ -45,6 +51,33 @@ int main() { glfwMakeContextCurrent(window); glfwSwapInterval(1); // Enable vsync + // Load app icon + GLFWimage icons[10]; + icons[0].pixels = stbi_load("res/icons/sdrpp.png", &icons[0].width, &icons[0].height, 0, 4); + icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; + icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; + icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; + icons[4].pixels = (unsigned char*)malloc(48 * 48 * 4); icons[4].width = icons[4].height = 48; + icons[5].pixels = (unsigned char*)malloc(64 * 64 * 4); icons[5].width = icons[5].height = 64; + icons[6].pixels = (unsigned char*)malloc(96 * 96 * 4); icons[6].width = icons[6].height = 96; + icons[7].pixels = (unsigned char*)malloc(128 * 128 * 4); icons[7].width = icons[7].height = 128; + icons[8].pixels = (unsigned char*)malloc(196 * 196 * 4); icons[8].width = icons[8].height = 196; + icons[9].pixels = (unsigned char*)malloc(256 * 256 * 4); icons[9].width = icons[9].height = 256; + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[1].pixels, 16, 16, 16 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[2].pixels, 24, 24, 24 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[3].pixels, 32, 32, 32 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[4].pixels, 48, 48, 48 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[5].pixels, 64, 64, 64 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[6].pixels, 96, 96, 96 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[7].pixels, 128, 128, 128 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[8].pixels, 196, 196, 196 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[9].pixels, 256, 256, 256 * 4, 4); + glfwSetWindowIcon(window, 10, icons); + stbi_image_free(icons[0].pixels); + for (int i = 1; i < 10; i++) { + free(icons[i].pixels); + } + if (glewInit() != GLEW_OK) { spdlog::error("Failed to initialize OpenGL loader!"); return 1; @@ -60,9 +93,12 @@ int main() { ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init("#version 150"); - setImguiStyle(io); + // Load config + spdlog::info("Loading config"); + config::load("config.json"); + config::startAutoSave(); - windowInit(); + style::setDefaultStyle(); spdlog::info("Loading icons"); icons::load(); @@ -73,6 +109,8 @@ int main() { spdlog::info("Loading band plans color table"); bandplan::loadColorTable("band_colors.json"); + windowInit(); + spdlog::info("Ready."); // Main loop @@ -88,12 +126,9 @@ int main() { glfwGetWindowSize(window, &wwidth, &wheight); ImGui::SetNextWindowPos(ImVec2(0, 0)); ImGui::SetNextWindowSize(ImVec2(wwidth, wheight)); - ImGui::Begin("Main", NULL, WINDOW_FLAGS); - + drawWindow(); - ImGui::End(); - // Rendering ImGui::Render(); int display_w, display_h; diff --git a/src/main_window.cpp b/src/main_window.cpp index a20eaca2..ed48f9de 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -9,6 +9,7 @@ fftwf_plan p; float* tempData; float* uiGains; char buf[1024]; +ImFont* bigFont; int fftSize = 8192 * 8; @@ -37,14 +38,68 @@ void fftHandler(dsp::complex_t* samples) { } dsp::NullSink sink; +int devId = 0; +int srId = 0; +watcher bandplanId(0, true); +watcher freq(90500000L); +int demod = 1; +watcher vfoFreq(92000000.0f); +float dummyVolume = 1.0f; +float* volume = &dummyVolume; +float fftMin = -70.0f; +float fftMax = 0.0f; +watcher offset(0.0f, true); +watcher bw(8000000.0f, true); +int sampleRate = 8000000; +bool playing = false; +watcher dcbias(false, false); +watcher bandPlanEnabled(true, false); +bool showCredits = false; +std::string audioStreamName = ""; +std::string sourceName = ""; + +void saveCurrentSource() { + int i = 0; + for (std::string gainName : soapy.gainList) { + config::config["sourceSettings"][sourceName]["gains"][gainName] = uiGains[i]; + i++; + } + config::config["sourceSettings"][sourceName]["sampleRate"] = soapy.sampleRates[srId]; +} + +void loadSourceConfig(std::string name) { + json sourceSettings = config::config["sourceSettings"][name]; + + // Set sample rate + + spdlog::warn("Type {0}", sourceSettings.contains("sampleRate")); + + sampleRate = sourceSettings["sampleRate"]; + + sigPath.setSampleRate(sampleRate); + soapy.setSampleRate(sampleRate); + auto _srIt = std::find(soapy.sampleRates.begin(), soapy.sampleRates.end(), sampleRate); + srId = std::distance(soapy.sampleRates.begin(), _srIt); + spdlog::warn("sr {0}", srId); + + // Set gains + delete uiGains; + uiGains = new float[soapy.gainList.size()]; + int i = 0; + for (std::string gainName : soapy.gainList) { + uiGains[i] = sourceSettings["gains"][gainName]; + soapy.setGain(i, uiGains[i]); + i++; + } + + // Update GUI + wtf.setBandwidth(sampleRate); + wtf.setViewBandwidth(sampleRate); + bw.val = sampleRate; +} void windowInit() { - int sampleRate = 8000000; - wtf.setBandwidth(sampleRate); - wtf.setCenterFrequency(90500000); - fSel.init(); - fSel.setFrequency(90500000); fft_in = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); fft_out = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); @@ -60,24 +115,92 @@ void windowInit() { spdlog::info("Loading modules"); mod::initAPI(&wtf); mod::loadFromList("module_list.json"); -} -watcher devId(0, true); -watcher srId(0, true); -watcher bandplanId(0, true); -watcher freq(90500000L); -int demod = 1; -watcher vfoFreq(92000000.0f); -float dummyVolume = 1.0f; -float* volume = &dummyVolume; -float fftMin = -70.0f; -float fftMax = 0.0f; -watcher offset(0.0f, true); -watcher bw(8000000.0f, true); -int sampleRate = 1000000; -bool playing = false; -watcher dcbias(false, false); -watcher bandPlanEnabled(true, false); + bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 128.0f); + + // Load last source configuration + uint64_t frequency = config::config["frequency"]; + sourceName = config::config["source"]; + auto _sourceIt = std::find(soapy.devNameList.begin(), soapy.devNameList.end(), sourceName); + if (_sourceIt != soapy.devNameList.end() && config::config["sourceSettings"].contains(sourceName)) { + json sourceSettings = config::config["sourceSettings"][sourceName]; + devId = std::distance(soapy.devNameList.begin(), _sourceIt); + soapy.setDevice(soapy.devList[devId]); + loadSourceConfig(sourceName); + } + else { + int i = 0; + bool settingsFound = false; + for (std::string devName : soapy.devNameList) { + if (config::config["sourceSettings"].contains(devName)) { + sourceName = devName; + settingsFound = true; + devId = i; + soapy.setDevice(soapy.devList[i]); + loadSourceConfig(sourceName); + break; + } + i++; + } + if (!settingsFound) { + sampleRate = soapy.getSampleRate(); + } + // Search for the first source in the list to have a config + // If no pre-defined source, selected default device + } + + // Load last band plan configuration + + // TODO: Save/load config for audio streams + window size/fullscreen + + + // Update UI settings + fftMin = config::config["min"]; + fftMax = config::config["max"]; + wtf.setFFTMin(fftMin); + wtf.setWaterfallMin(fftMin); + wtf.setFFTMax(fftMax); + wtf.setWaterfallMax(fftMax); + + bandPlanEnabled.val = config::config["bandPlanEnabled"]; + bandPlanEnabled.markAsChanged(); + + std::string bandPlanName = config::config["bandPlan"]; + auto _bandplanIt = bandplan::bandplans.find(bandPlanName); + if (_bandplanIt != bandplan::bandplans.end()) { + bandplanId.val = std::distance(bandplan::bandplans.begin(), bandplan::bandplans.find(bandPlanName)); + spdlog::warn("{0} => {1}", bandplanId.val, bandPlanName); + + if (bandPlanEnabled.val) { + wtf.bandplan = &bandplan::bandplans[bandPlanName]; + } + else { + wtf.bandplan = NULL; + } + } + else { + bandplanId.val = 0; + } + bandplanId.markAsChanged(); + + + fSel.setFrequency(frequency); + fSel.frequencyChanged = false; + soapy.setFrequency(frequency); + wtf.setCenterFrequency(frequency); + wtf.setBandwidth(sampleRate); + wtf.setViewBandwidth(sampleRate); + bw.val = sampleRate; + wtf.vfoFreqChanged = false; + wtf.centerFreqMoved = false; + wtf.selectFirstVFO(); + + + audioStreamName = audio::getNameFromVFO(wtf.selectedVFO); + if (audioStreamName != "") { + volume = &audio::streams[audioStreamName]->volume; + } +} void setVFO(float freq) { ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; @@ -165,14 +288,15 @@ void setVFO(float freq) { } void drawWindow() { - if (wtf.selectedVFO == "" && wtf.vfos.size() > 0) { - wtf.selectFirstVFO(); - } + ImGui::Begin("Main", NULL, WINDOW_FLAGS); ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; if (vfo->centerOffsetChanged) { fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); + fSel.frequencyChanged = false; + config::config["frequency"] = fSel.frequency; + config::configModified = true; } vfoman::updateFromWaterfall(); @@ -180,7 +304,14 @@ void drawWindow() { if (wtf.selectedVFOChanged) { wtf.selectedVFOChanged = false; fSel.setFrequency(vfo->generalOffset + wtf.getCenterFrequency()); + fSel.frequencyChanged = false; mod::broadcastEvent(mod::EVENT_SELECTED_VFO_CHANGED); + audioStreamName = audio::getNameFromVFO(wtf.selectedVFO); + if (audioStreamName != "") { + volume = &audio::streams[audioStreamName]->volume; + } + config::config["frequency"] = fSel.frequency; + config::configModified = true; } if (fSel.frequencyChanged) { @@ -189,36 +320,16 @@ void drawWindow() { vfo->centerOffsetChanged = false; vfo->lowerOffsetChanged = false; vfo->upperOffsetChanged = false; + config::config["frequency"] = fSel.frequency; + config::configModified = true; } if (wtf.centerFreqMoved) { wtf.centerFreqMoved = false; soapy.setFrequency(wtf.getCenterFrequency()); fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); - } - - if (devId.changed() && soapy.devList.size() > 0) { - spdlog::info("Changed input device: {0}", devId.val); - soapy.setDevice(soapy.devList[devId.val]); - srId.markAsChanged(); - if (soapy.gainList.size() == 0) { - return; - } - delete[] uiGains; - uiGains = new float[soapy.gainList.size()]; - for (int i = 0; i < soapy.gainList.size(); i++) { - uiGains[i] = soapy.currentGains[i]; - } - } - - if (srId.changed() && soapy.devList.size() > 0) { - spdlog::info("Changed sample rate: {0}", srId.val); - sampleRate = soapy.sampleRates[srId.val]; - soapy.setSampleRate(sampleRate); - wtf.setBandwidth(sampleRate); - wtf.setViewBandwidth(sampleRate); - sigPath.setSampleRate(sampleRate); - bw.val = sampleRate; + config::config["frequency"] = fSel.frequency; + config::configModified = true; } if (dcbias.changed()) { @@ -248,13 +359,13 @@ void drawWindow() { // To Bar if (playing) { - if (ImGui::ImageButton(icons::STOP_RAW, ImVec2(30, 30))) { + if (ImGui::ImageButton(icons::STOP, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0)) { soapy.stop(); playing = false; } } else { - if (ImGui::ImageButton(icons::PLAY_RAW, ImVec2(30, 30)) && soapy.devList.size() > 0) { + if (ImGui::ImageButton(icons::PLAY, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0) && soapy.devList.size() > 0) { soapy.start(); soapy.setFrequency(wtf.getCenterFrequency()); playing = true; @@ -265,12 +376,31 @@ void drawWindow() { ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 8); ImGui::SetNextItemWidth(200); - ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, ""); + if (ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, "")) { + if (audioStreamName != "") { + audio::streams[audioStreamName]->audio->setVolume(*volume); + } + } ImGui::SameLine(); fSel.draw(); + ImGui::SameLine(); + + // Logo button + ImGui::SetCursorPosX(ImGui::GetWindowSize().x - 48); + ImGui::SetCursorPosY(10); + if (ImGui::ImageButton(icons::LOGO, ImVec2(32, 32), ImVec2(0, 0), ImVec2(1, 1), 0)) { + showCredits = true; + } + if (ImGui::IsMouseDown(ImGuiMouseButton_Left)) { + showCredits = false; + } + if (ImGui::IsKeyPressed(GLFW_KEY_ESCAPE)) { + showCredits = false; + } + ImGui::Columns(3, "WindowColumns", false); ImVec2 winSize = ImGui::GetWindowSize(); ImGui::SetColumnWidth(0, 300); @@ -279,88 +409,223 @@ void drawWindow() { // Left Column ImGui::BeginChild("Left Column"); + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - if (ImGui::CollapsingHeader("Source")) { - ImGui::PushItemWidth(ImGui::GetWindowSize().x); - ImGui::Combo("##_0_", &devId.val, soapy.txtDevList.c_str()); + if (ImGui::CollapsingHeader("Source", ImGuiTreeNodeFlags_DefaultOpen)) { + if (playing) { style::beginDisabled(); }; + + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str())) { + spdlog::info("Changed input device: {0}", devId); + sourceName = soapy.devNameList[devId]; + soapy.setDevice(soapy.devList[devId]); + if (soapy.gainList.size() == 0) { + return; + } + delete[] uiGains; + uiGains = new float[soapy.gainList.size()]; + for (int i = 0; i < soapy.gainList.size(); i++) { + uiGains[i] = soapy.currentGains[i]; + } + + if (config::config["sourceSettings"].contains(sourceName)) { + loadSourceConfig(sourceName); + } + else { + srId = 0; + sampleRate = soapy.getSampleRate(); + bw.val = sampleRate; + wtf.setBandwidth(sampleRate); + wtf.setViewBandwidth(sampleRate); + sigPath.setSampleRate(sampleRate); + for (int i = 0; i < soapy.gainList.size(); i++) { + uiGains[i] = soapy.gainRanges[i].minimum(); + } + } + setVFO(fSel.frequency); + config::config["source"] = sourceName; + config::configModified = true; + } ImGui::PopItemWidth(); - if (!playing) { - ImGui::Combo("##_1_", &srId.val, soapy.txtSampleRateList.c_str()); - } - else { - ImGui::Text("%.0f Samples/s", soapy.sampleRates[srId.val]); + if (ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str())) { + spdlog::info("Changed sample rate: {0}", srId); + sampleRate = soapy.sampleRates[srId]; + soapy.setSampleRate(sampleRate); + wtf.setBandwidth(sampleRate); + wtf.setViewBandwidth(sampleRate); + sigPath.setSampleRate(sampleRate); + bw.val = sampleRate; + + if (!config::config["sourceSettings"].contains(sourceName)) { + saveCurrentSource(); + } + config::config["sourceSettings"][sourceName]["sampleRate"] = sampleRate; + config::configModified = true; } ImGui::SameLine(); - if (ImGui::Button("Refresh")) { + if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { soapy.refresh(); } + if (playing) { style::endDisabled(); }; + + float maxTextLength = 0; + float txtLen = 0; + char buf[100]; + + // Calculate the spacing + for (int i = 0; i < soapy.gainList.size(); i++) { + sprintf(buf, "%s gain", soapy.gainList[i].c_str()); + txtLen = ImGui::CalcTextSize(buf).x; + if (txtLen > maxTextLength) { + maxTextLength = txtLen; + } + } + for (int i = 0; i < soapy.gainList.size(); i++) { ImGui::Text("%s gain", soapy.gainList[i].c_str()); ImGui::SameLine(); sprintf(buf, "##_gain_slide_%d_", i); - ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum()); + + ImGui::SetCursorPosX(maxTextLength + 5); + ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); + if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { + soapy.setGain(i, uiGains[i]); + config::config["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; + config::configModified = true; + } + ImGui::PopItemWidth(); if (uiGains[i] != soapy.currentGains[i]) { - soapy.setGain(i, uiGains[i]); + } } + + ImGui::Spacing(); } for (int i = 0; i < modCount; i++) { - if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str())) { + if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { mod = mod::modules[mod::moduleNames[i]]; mod._DRAW_MENU_(mod.ctx); + ImGui::Spacing(); } } - ImGui::CollapsingHeader("Audio"); - if (ImGui::CollapsingHeader("Band Plan")) { - ImGui::PushItemWidth(ImGui::GetWindowSize().x); - ImGui::Combo("##_4_", &bandplanId.val, bandplan::bandplanNameTxt.c_str()); + if (ImGui::CollapsingHeader("Audio", ImGuiTreeNodeFlags_DefaultOpen)) { + int count = 0; + int maxCount = audio::streams.size(); + for (auto const& [name, stream] : audio::streams) { + int deviceId; + float vol = 1.0f; + deviceId = stream->audio->getDeviceId(); + + ImGui::SetCursorPosX((menuColumnWidth / 2.0f) - (ImGui::CalcTextSize(name.c_str()).x / 2.0f)); + ImGui::Text(name.c_str()); + + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { + audio::stopStream(name); + audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); + audio::startStream(name); + stream->sampleRateId = 0; + } + if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { + audio::stopStream(name); + audio::setSampleRate(name, stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]); + audio::startStream(name); + } + if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { + stream->audio->setVolume(stream->volume); + } + ImGui::PopItemWidth(); + count++; + if (count < maxCount) { + ImGui::Spacing(); + ImGui::Separator(); + } + ImGui::Spacing(); + } + ImGui::Spacing(); + } + + if (ImGui::CollapsingHeader("Band Plan", ImGuiTreeNodeFlags_DefaultOpen)) { + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo("##_4_", &bandplanId.val, bandplan::bandplanNameTxt.c_str())) { + config::config["bandPlan"] = bandplan::bandplanNames[bandplanId.val]; + config::configModified = true; + } ImGui::PopItemWidth(); - ImGui::Checkbox("Enabled", &bandPlanEnabled.val); + if (ImGui::Checkbox("Enabled", &bandPlanEnabled.val)) { + config::config["bandPlanEnabled"] = bandPlanEnabled.val; + config::configModified = true; + } bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; ImGui::Text("Country: %s (%s)", plan.countryName, plan.countryCode); ImGui::Text("Author: %s", plan.authorName); + ImGui::Spacing(); } - ImGui::CollapsingHeader("Display"); + if (ImGui::CollapsingHeader("Display")) { + ImGui::Spacing(); + } - ImGui::CollapsingHeader("Recording"); + if (ImGui::CollapsingHeader("Recording")) { + ImGui::Spacing(); + } if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); - ImGui::Text("Center Frequency: %.1f FPS", wtf.getCenterFrequency()); + ImGui::Text("Center Frequency: %.0f Hz", wtf.getCenterFrequency()); + + ImGui::Spacing(); } ImGui::EndChild(); // Right Column + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0)); ImGui::NextColumn(); - ImGui::BeginChild("Waterfall"); + wtf.draw(); + ImGui::EndChild(); + ImGui::PopStyleVar(); ImGui::NextColumn(); + ImGui::BeginChild("WaterfallControls"); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Zoom").x / 2.0f)); ImGui::Text("Zoom"); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw.val, sampleRate, 1000.0f, ""); ImGui::NewLine(); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Max").x / 2.0f)); ImGui::Text("Max"); - ImGui::VSliderFloat("##_8_", ImVec2(20.0f, 150.0f), &fftMax, 0.0f, -100.0f, ""); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); + if (ImGui::VSliderFloat("##_8_", ImVec2(20.0f, 150.0f), &fftMax, 0.0f, -100.0f, "")) { + config::config["max"] = fftMax; + config::configModified = true; + } ImGui::NewLine(); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Min").x / 2.0f)); ImGui::Text("Min"); - ImGui::VSliderFloat("##_9_", ImVec2(20.0f, 150.0f), &fftMin, 0.0f, -100.0f, ""); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); + if (ImGui::VSliderFloat("##_9_", ImVec2(20.0f, 150.0f), &fftMin, 0.0f, -100.0f, "")) { + config::config["min"] = fftMin; + config::configModified = true; + } + + ImGui::EndChild(); if (bw.changed()) { wtf.setViewBandwidth(bw.val); @@ -371,6 +636,52 @@ void drawWindow() { wtf.setFFTMax(fftMax); wtf.setWaterfallMin(fftMin); wtf.setWaterfallMax(fftMax); + + ImGui::End(); + + if (showCredits) { + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 20.0f)); + ImGui::OpenPopup("Credits"); + ImGui::BeginPopupModal("Credits", NULL, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove); + + ImGui::PushFont(bigFont); + ImGui::Text("SDR++ "); + ImGui::PopFont(); + ImGui::SameLine(); + ImGui::Image(icons::LOGO, ImVec2(128, 128)); + ImGui::Spacing(); + ImGui::Spacing(); + ImGui::Spacing(); + + ImGui::Text("This software is brought to you by\n\n"); + + ImGui::Columns(3, "CreditColumns", true); + + // Contributors + ImGui::Text("Contributors"); + ImGui::BulletText("Ryzerth (Creator)"); + ImGui::BulletText("aosync"); + ImGui::BulletText("Benjamin Kyd"); + ImGui::BulletText("Tobias Mädel"); + ImGui::BulletText("Raov"); + + // Libraries + ImGui::NextColumn(); + ImGui::Text("Libraries"); + ImGui::BulletText("SoapySDR (PothosWare)"); + ImGui::BulletText("Dear ImGui (ocornut)"); + ImGui::BulletText("spdlog (gabime)"); + ImGui::BulletText("json (nlohmann)"); + ImGui::BulletText("portaudio (PA Comm.)"); + + // Patrons + ImGui::NextColumn(); + ImGui::Text("Patrons"); + ImGui::BulletText("SignalsEverywhere"); + + ImGui::EndPopup(); + ImGui::PopStyleVar(1); + } } void bindVolumeVariable(float* vol) { diff --git a/src/main_window.h b/src/main_window.h index 2cf7d24e..2b7fe923 100644 --- a/src/main_window.h +++ b/src/main_window.h @@ -23,6 +23,9 @@ #include #include #include +#include +#include +#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground diff --git a/src/module.cpp b/src/module.cpp index d19c150b..ef0fe3e9 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -1,6 +1,7 @@ #include #include #include +#include namespace mod { API_t API; @@ -14,6 +15,8 @@ namespace mod { void initAPI(ImGui::WaterFall* wtf) { _wtf = wtf; + + // VFO Manager API.registerVFO = vfoman::create; API.setVFOOffset = vfoman::setOffset; API.setVFOCenterOffset = vfoman::setCenterOffset; @@ -22,9 +25,23 @@ namespace mod { API.getVFOOutputBlockSize = vfoman::getOutputBlockSize; API.setVFOReference = vfoman::setReference; API.removeVFO = vfoman::remove; + + // GUI API.getSelectedVFOName = api_getSelectedVFOName; API.bindVolumeVariable = bindVolumeVariable; API.unbindVolumeVariable = unbindVolumeVariable; + + // Audio + API.registerMonoStream = audio::registerMonoStream; + API.registerStereoStream = audio::registerStereoStream; + API.startStream = audio::startStream; + API.stopStream = audio::stopStream; + API.removeStream = audio::removeStream; + API.bindToStreamMono = audio::bindToStreamMono; + API.bindToStreamStereo = audio::bindToStreamStereo; + API.setBlockSize = audio::setBlockSize; + API.unbindFromStreamMono = audio::unbindFromStreamMono; + API.unbindFromStreamStereo = audio::unbindFromStreamStereo; } void loadModule(std::string path, std::string name) { diff --git a/src/module.h b/src/module.h index ff57504a..2bde0855 100644 --- a/src/module.h +++ b/src/module.h @@ -29,10 +29,22 @@ namespace mod { int (*getVFOOutputBlockSize)(std::string name); void (*setVFOReference)(std::string name, int ref); void (*removeVFO)(std::string name); + std::string (*getSelectedVFOName)(void); void (*bindVolumeVariable)(float* vol); void (*unbindVolumeVariable)(void); + float (*registerMonoStream)(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); + float (*registerStereoStream)(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); + void (*startStream)(std::string name); + void (*stopStream)(std::string name); + void (*removeStream)(std::string name); + dsp::stream* (*bindToStreamMono)(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); + dsp::stream* (*bindToStreamStereo)(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); + void (*setBlockSize)(std::string name, int blockSize); + void (*unbindFromStreamMono)(std::string name, dsp::stream* stream); + void (*unbindFromStreamStereo)(std::string name, dsp::stream* stream); + enum { REF_LOWER, REF_CENTER, diff --git a/src/signal_path.h b/src/signal_path.h index b7998f45..929adb18 100644 --- a/src/signal_path.h +++ b/src/signal_path.h @@ -37,7 +37,7 @@ private: dsp::HandlerSink fftHandlerSink; // VFO - dsp::DynamicSplitter dynSplit; + dsp::DynamicSplitter dynSplit; std::map vfos; float sampleRate; diff --git a/src/style.h b/src/style.h new file mode 100644 index 00000000..3ce378ad --- /dev/null +++ b/src/style.h @@ -0,0 +1,9 @@ +#pragma once +#include +#include + +namespace style { + void setDefaultStyle(); + void beginDisabled(); + void endDisabled(); +} \ No newline at end of file diff --git a/src/styles.cpp b/src/styles.cpp new file mode 100644 index 00000000..6eb344f4 --- /dev/null +++ b/src/styles.cpp @@ -0,0 +1,28 @@ +#include + +namespace style { + void setDefaultStyle() { + ImGui::GetStyle().WindowRounding = 0.0f; + ImGui::GetStyle().ChildRounding = 0.0f; + ImGui::GetStyle().FrameRounding = 0.0f; + ImGui::GetStyle().GrabRounding = 0.0f; + ImGui::GetStyle().PopupRounding = 0.0f; + ImGui::GetStyle().ScrollbarRounding = 0.0f; + + ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 16.0f); + + ImGui::StyleColorsDark(); + //ImGui::StyleColorsLight(); + } + + void beginDisabled() { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.5f, 0.5f, 0.5f, 0.5f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.35f, 0.35f, 0.35f, 0.35f)); + } + + void endDisabled() { + ImGui::PopItemFlag(); + ImGui::PopStyleColor(2); + } +} \ No newline at end of file diff --git a/src/styles.h b/src/styles.h deleted file mode 100644 index b3ba260e..00000000 --- a/src/styles.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once -#include - -void setImguiStyle(ImGuiIO& io) { - ImGui::GetStyle().WindowRounding = 0.0f; - ImGui::GetStyle().ChildRounding = 0.0f; - ImGui::GetStyle().FrameRounding = 0.0f; - ImGui::GetStyle().GrabRounding = 0.0f; - ImGui::GetStyle().PopupRounding = 0.0f; - ImGui::GetStyle().ScrollbarRounding = 0.0f; - - io.Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 16.0f); - - ImGui::StyleColorsDark(); - //ImGui::StyleColorsLight(); -} \ No newline at end of file diff --git a/src/waterfall.cpp b/src/waterfall.cpp index 4f91e2cc..9fe05569 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -195,13 +195,19 @@ namespace ImGui { ImVec2 mousePos = ImGui::GetMousePos(); ImVec2 drag = ImGui::GetMouseDragDelta(ImGuiMouseButton_Left); ImVec2 dragOrigin(mousePos.x - drag.x, mousePos.y - drag.y); - bool draging = ImGui::IsMouseDragging(ImGuiMouseButton_Left); + + bool mouseHovered, mouseHeld; + bool mouseClicked = ImGui::ButtonBehavior(ImRect(fftAreaMin, fftAreaMax), ImGuiID("WaterfallID"), &mouseHovered, &mouseHeld, + ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_PressedOnClick); + + bool draging = ImGui::IsMouseDragging(ImGuiMouseButton_Left) && ImGui::IsWindowFocused(); bool mouseInFreq = IS_IN_AREA(dragOrigin, freqAreaMin, freqAreaMax); bool mouseInFFT = IS_IN_AREA(dragOrigin, fftAreaMin, fftAreaMax); + // If mouse was clicked on a VFO, select VFO and return // If mouse was clicked but not on a VFO, move selected VFO to position - if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { + if (mouseClicked) { for (auto const& [name, _vfo] : vfos) { if (name == selectedVFO) { continue; @@ -264,9 +270,11 @@ namespace ImGui { float* tempData = new float[dataWidth]; float pixel; float dataRange = waterfallMax - waterfallMin; + int size; for (int i = 0; i < count; i++) { - drawDataSize = (viewBandwidth / wholeBandwidth) * rawFFTs[i].size(); - drawDataStart = (((float)rawFFTs[i].size() / 2.0f) * (offsetRatio + 1)) - (drawDataSize / 2); + size = rawFFTs[i].size(); + drawDataSize = (viewBandwidth / wholeBandwidth) * size; + drawDataStart = (((float)size / 2.0f) * (offsetRatio + 1)) - (drawDataSize / 2); doZoom(drawDataStart, drawDataSize, dataWidth, rawFFTs[i], tempData); for (int j = 0; j < dataWidth; j++) { pixel = (std::clamp(tempData[j], waterfallMin, waterfallMax) - waterfallMin) / dataRange; @@ -365,8 +373,8 @@ namespace ImGui { freqAreaMin = ImVec2(widgetPos.x + 50, widgetPos.y + fftHeight + 11); freqAreaMax = ImVec2(widgetPos.x + dataWidth + 50, widgetPos.y + fftHeight + 50); - maxHSteps = dataWidth / 50; - maxVSteps = fftHeight / 15; + maxHSteps = dataWidth / (ImGui::CalcTextSize("000.000").x + 10); + maxVSteps = fftHeight / (ImGui::CalcTextSize("000.000").y); range = findBestRange(viewBandwidth, maxHSteps); vRange = findBestRange(fftMax - fftMin, maxVSteps); diff --git a/win32/resources.rc b/win32/resources.rc new file mode 100644 index 00000000..6e89f0fc --- /dev/null +++ b/win32/resources.rc @@ -0,0 +1 @@ +IDR_MAINFRAME ICON "../res/icons/sdrpp.ico" \ No newline at end of file From 9830337103219b8e15dc6df2f95094016e58c8fb Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 14:26:22 +0200 Subject: [PATCH 005/127] small fixes --- CMakeLists.txt | 1 + config.json | 6 +++++- src/main_window.cpp | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 635dbbc9..305c0537 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ if (MSVC) include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/") include_directories(sdrpp "C:/Program Files/PothosSDR/include/") else() + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") include_directories(sdrpp "/usr/include/volk") link_libraries(pthread) diff --git a/config.json b/config.json index cdec8436..2d62f53f 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,9 @@ { - "frequency": 90500000, + "bandPlan": "General", + "bandPlanEnabled": true, + "frequency": 98000000, + "max": 0.0, + "min": -70.0, "source": "", "sourceSettings": {} } \ No newline at end of file diff --git a/src/main_window.cpp b/src/main_window.cpp index ed48f9de..35e6273f 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -152,6 +152,13 @@ void windowInit() { // Load last band plan configuration // TODO: Save/load config for audio streams + window size/fullscreen + // Also add a loading screen + // And a module add/remove/change order menu + // get rid of watchers and use if() instead + // Add squelsh + // Bandwidth ajustment + // DSB / CW and RAW modes; + // Write a recorder // Update UI settings From c4f49203a188f4d61c48400742426e38cb3d2681 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 17:36:48 +0200 Subject: [PATCH 006/127] testing on linux --- src/io/audio.h | 10 +++++ src/main_window.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 103 insertions(+), 5 deletions(-) diff --git a/src/io/audio.h b/src/io/audio.h index 6e2b77a3..0d42c3ac 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -69,8 +69,10 @@ namespace io { } if (i == devIndex) { devListIndex = devices.size(); + defaultDev = devListIndex; } devices.push_back(dev); + deviceNames.push_back(deviceInfo->name); devTxtList += deviceInfo->name; devTxtList += '\0'; } @@ -118,8 +120,10 @@ namespace io { } if (i == devIndex) { devListIndex = devices.size(); + defaultDev = devListIndex; } devices.push_back(dev); + deviceNames.push_back(deviceInfo->name); devTxtList += deviceInfo->name; devTxtList += '\0'; } @@ -208,6 +212,10 @@ namespace io { devIndex = devices[id].index; } + void setToDefault() { + setDevice(defaultDev); + } + int getDeviceId() { return devListIndex; } @@ -218,6 +226,7 @@ namespace io { std::string devTxtList; std::vector devices; + std::vector deviceNames; private: static int _mono_to_mono_callback(const void *input, @@ -302,6 +311,7 @@ namespace io { int streamType; int devIndex; int devListIndex; + int defaultDev; float _sampleRate; int _bufferSize; dsp::stream* _monoInput; diff --git a/src/main_window.cpp b/src/main_window.cpp index 35e6273f..37371492 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -76,17 +76,30 @@ void loadSourceConfig(std::string name) { sampleRate = sourceSettings["sampleRate"]; + + auto _srIt = std::find(soapy.sampleRates.begin(), soapy.sampleRates.end(), sampleRate); + // If the sample rate isn't valid, set to minimum + if (_srIt == soapy.sampleRates.end()) { + srId = 0; + sampleRate = soapy.sampleRates[0]; + } + else { + srId = std::distance(soapy.sampleRates.begin(), _srIt); + } sigPath.setSampleRate(sampleRate); soapy.setSampleRate(sampleRate); - auto _srIt = std::find(soapy.sampleRates.begin(), soapy.sampleRates.end(), sampleRate); - srId = std::distance(soapy.sampleRates.begin(), _srIt); - spdlog::warn("sr {0}", srId); // Set gains delete uiGains; uiGains = new float[soapy.gainList.size()]; int i = 0; for (std::string gainName : soapy.gainList) { + // If gain doesn't exist in config, set it to the minimum value + if (!sourceSettings["gains"].contains(gainName)) { + uiGains[i] = soapy.gainRanges[i].minimum(); + soapy.setGain(i, uiGains[i]); + continue; + } uiGains[i] = sourceSettings["gains"][gainName]; soapy.setGain(i, uiGains[i]); i++; @@ -98,6 +111,42 @@ void loadSourceConfig(std::string name) { bw.val = sampleRate; } +void loadAudioConfig(std::string name) { + json audioSettings = config::config["audio"][name]; + std::string devName = audioSettings["device"]; + auto _devIt = std::find(audio::streams[name]->audio->deviceNames.begin(), audio::streams[name]->audio->deviceNames.end(), devName); + + // If audio device doesn't exist anymore + if (_devIt == audio::streams[name]->audio->deviceNames.end()) { + audio::streams[name]->audio->setToDefault(); + int deviceId = audio::streams[name]->audio->getDeviceId(); + audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[0]); + audio::streams[name]->sampleRateId = 0; + audio::streams[name]->volume = audioSettings["volume"]; + audio::streams[name]->audio->setVolume(audio::streams[name]->volume); + return; + } + int deviceId = std::distance(audio::streams[name]->audio->deviceNames.begin(), _devIt); + float sr = audioSettings["sampleRate"]; + auto _srIt = std::find(audio::streams[name]->audio->devices[deviceId].sampleRates.begin(), audio::streams[name]->audio->devices[deviceId].sampleRates.end(), sr); + + // If sample rate doesn't exist anymore + if (_srIt == audio::streams[name]->audio->devices[deviceId].sampleRates.end()) { + audio::streams[name]->sampleRateId = 0; + audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[0]); + audio::streams[name]->volume = audioSettings["volume"]; + audio::streams[name]->audio->setVolume(audio::streams[name]->volume); + return; + } + + int samplerateId = std::distance(audio::streams[name]->audio->devices[deviceId].sampleRates.begin(), _srIt); + audio::streams[name]->sampleRateId = samplerateId; + audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[samplerateId]); + audio::streams[name]->deviceId = deviceId; + audio::streams[name]->volume = audioSettings["volume"]; + audio::streams[name]->audio->setVolume(audio::streams[name]->volume); +} + void windowInit() { fSel.init(); @@ -202,6 +251,16 @@ void windowInit() { wtf.centerFreqMoved = false; wtf.selectFirstVFO(); + for (auto [name, stream] : audio::streams) { + if (config::config["audio"].contains(name)) { + bool running = audio::streams[name]->running; + audio::stopStream(name); + loadAudioConfig(name); + if (running) { + audio::startStream(name); + } + } + } audioStreamName = audio::getNameFromVFO(wtf.selectedVFO); if (audioStreamName != "") { @@ -534,19 +593,48 @@ void drawWindow() { ImGui::Text(name.c_str()); ImGui::PushItemWidth(menuColumnWidth); + bool running = stream->running; if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { audio::stopStream(name); audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); - audio::startStream(name); + if (running) { + audio::startStream(name); + } stream->sampleRateId = 0; + + // Create config if it doesn't exist + if (!config::config["audio"].contains(name)) { + config::config["audio"][name]["volume"] = stream->volume; + } + config::config["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; + config::config["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; + config::configModified = true; } if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { audio::stopStream(name); audio::setSampleRate(name, stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]); - audio::startStream(name); + if (running) { + audio::startStream(name); + } + + // Create config if it doesn't exist + if (!config::config["audio"].contains(name)) { + config::config["audio"][name]["volume"] = stream->volume; + config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; + } + config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + config::configModified = true; } if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { stream->audio->setVolume(stream->volume); + + // Create config if it doesn't exist + if (!config::config["audio"].contains(name)) { + config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; + config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + } + config::config["audio"][name]["volume"] = stream->volume; + config::configModified = true; } ImGui::PopItemWidth(); count++; From 19e07eb767004d06e04b2bd2eac296ebe595e122 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 17:56:12 +0200 Subject: [PATCH 007/127] Fixed gain memory error --- CMakeLists.txt | 4 ++-- src/main_window.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 305c0537..17d42566 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ if (MSVC) include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/") include_directories(sdrpp "C:/Program Files/PothosSDR/include/") else() - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpremissive -fsanitize=address -g") + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpremissive") include_directories(sdrpp "/usr/include/volk") link_libraries(pthread) link_libraries(GL) diff --git a/src/main_window.cpp b/src/main_window.cpp index 37371492..2c600ee7 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -159,7 +159,7 @@ void windowInit() { vfoman::init(&wtf, &sigPath); - uiGains = new float[1]; + uiGains = new float[soapy.gainList.size()]; spdlog::info("Loading modules"); mod::initAPI(&wtf); From 03dc5d204250709ade0eed460f0340bc19a0b054 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:06:21 +0200 Subject: [PATCH 008/127] Fixed SoapySDR trying to set gain on no device --- CMakeLists.txt | 4 ++-- src/io/soapy.h | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17d42566..11daabd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ if (MSVC) include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/") include_directories(sdrpp "C:/Program Files/PothosSDR/include/") else() - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpremissive -fsanitize=address -g") - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpremissive") + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") include_directories(sdrpp "/usr/include/volk") link_libraries(pthread) link_libraries(GL) diff --git a/src/io/soapy.h b/src/io/soapy.h index 16ddb7ac..3be8f102 100644 --- a/src/io/soapy.h +++ b/src/io/soapy.h @@ -15,6 +15,7 @@ namespace io { currentGains = new float[1]; refresh(); if (devList.size() == 0) { + dev = NULL; return; } setDevice(devList[0]); @@ -96,7 +97,7 @@ namespace io { } void setSampleRate(float sampleRate) { - if (running) { + if (running || dev == NULL) { return; } _sampleRate = sampleRate; @@ -104,10 +105,16 @@ namespace io { } void setFrequency(float freq) { + if (dev == NULL) { + return; + } dev->setFrequency(SOAPY_SDR_RX, 0, freq); } void setGain(int gainId, float gain) { + if (dev == NULL) { + return; + } currentGains[gainId] = gain; dev->setGain(SOAPY_SDR_RX, 0, gainList[gainId], gain); } From b2191c5d2cfbedda9ccfc9095170a0e1c880be77 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:18:10 +0200 Subject: [PATCH 009/127] Fixed delete[] in soapy.h --- src/main_window.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index 2c600ee7..f494af54 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -70,12 +70,7 @@ void saveCurrentSource() { void loadSourceConfig(std::string name) { json sourceSettings = config::config["sourceSettings"][name]; - // Set sample rate - - spdlog::warn("Type {0}", sourceSettings.contains("sampleRate")); - sampleRate = sourceSettings["sampleRate"]; - auto _srIt = std::find(soapy.sampleRates.begin(), soapy.sampleRates.end(), sampleRate); // If the sample rate isn't valid, set to minimum @@ -90,7 +85,7 @@ void loadSourceConfig(std::string name) { soapy.setSampleRate(sampleRate); // Set gains - delete uiGains; + delete[] uiGains; uiGains = new float[soapy.gainList.size()]; int i = 0; for (std::string gainName : soapy.gainList) { @@ -531,8 +526,15 @@ void drawWindow() { } ImGui::SameLine(); + bool noDevice = (soapy.devList.size() == 0); if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { soapy.refresh(); + if (noDevice && soapy.devList.size() > 0) { + soapy.setDevice(soapy.devList[0]); + if (config::config["sourceSettings"][soapy.devNameList[0]]) { + loadSourceConfig(soapy.devNameList[0]); + } + } } if (playing) { style::endDisabled(); }; @@ -563,10 +565,6 @@ void drawWindow() { config::configModified = true; } ImGui::PopItemWidth(); - - if (uiGains[i] != soapy.currentGains[i]) { - - } } ImGui::Spacing(); From cff59873292e1f65eb37335836cff0f12402416f Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:22:22 +0200 Subject: [PATCH 010/127] Fixed delete[] in soapy.h --- src/main_window.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index f494af54..a8137106 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -530,9 +530,10 @@ void drawWindow() { if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { soapy.refresh(); if (noDevice && soapy.devList.size() > 0) { + sourceName = soapy.devNameList[0]; soapy.setDevice(soapy.devList[0]); - if (config::config["sourceSettings"][soapy.devNameList[0]]) { - loadSourceConfig(soapy.devNameList[0]); + if (config::config["sourceSettings"][sourceName]) { + loadSourceConfig(sourceName); } } } From e50ed1b960f6445c20a7072f47683182db35bcb1 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:30:40 +0200 Subject: [PATCH 011/127] bruh --- src/io/audio.h | 4 ++-- src/main_window.cpp | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/io/audio.h b/src/io/audio.h index 0d42c3ac..c07eb5b4 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -156,11 +156,11 @@ namespace io { outputParams.suggestedLatency = Pa_GetDeviceInfo(outputParams.device)->defaultLowOutputLatency; PaError err; if (streamType == MONO) { - err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, NULL, + err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, 0, (dev.channels == 2) ? _mono_to_stereo_callback : _mono_to_mono_callback, this); } else { - err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, NULL, + err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, 0, (dev.channels == 2) ? _stereo_to_stereo_callback : _stereo_to_mono_callback, this); } diff --git a/src/main_window.cpp b/src/main_window.cpp index a8137106..85331a76 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -480,14 +480,6 @@ void drawWindow() { spdlog::info("Changed input device: {0}", devId); sourceName = soapy.devNameList[devId]; soapy.setDevice(soapy.devList[devId]); - if (soapy.gainList.size() == 0) { - return; - } - delete[] uiGains; - uiGains = new float[soapy.gainList.size()]; - for (int i = 0; i < soapy.gainList.size(); i++) { - uiGains[i] = soapy.currentGains[i]; - } if (config::config["sourceSettings"].contains(sourceName)) { loadSourceConfig(sourceName); @@ -499,8 +491,13 @@ void drawWindow() { wtf.setBandwidth(sampleRate); wtf.setViewBandwidth(sampleRate); sigPath.setSampleRate(sampleRate); - for (int i = 0; i < soapy.gainList.size(); i++) { - uiGains[i] = soapy.gainRanges[i].minimum(); + + if (soapy.gainList.size() >= 0) { + delete[] uiGains; + uiGains = new float[soapy.gainList.size()]; + for (int i = 0; i < soapy.gainList.size(); i++) { + uiGains[i] = soapy.currentGains[i]; + } } } setVFO(fSel.frequency); @@ -594,12 +591,16 @@ void drawWindow() { ImGui::PushItemWidth(menuColumnWidth); bool running = stream->running; if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { + spdlog::warn("Stopping audio stream"); audio::stopStream(name); + spdlog::warn("Setting device"); audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); if (running) { + spdlog::warn("Starting stream"); audio::startStream(name); } stream->sampleRateId = 0; + spdlog::warn("Done, saving config"); // Create config if it doesn't exist if (!config::config["audio"].contains(name)) { From e44d20bdbcda3e46733922c5792b128fe674bbb6 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:46:30 +0200 Subject: [PATCH 012/127] bruh --- src/audio.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/audio.cpp b/src/audio.cpp index f7727ab6..9eb1e01c 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -77,12 +77,16 @@ namespace audio { return; } if (astr->type == STREAM_TYPE_MONO) { + spdlog::warn("=> Stopping monoDynSplit"); astr->monoDynSplit->stop(); } else { + spdlog::warn("=> Stopping stereoDynSplit"); astr->stereoDynSplit->stop(); } + spdlog::warn("=> Stopping audio"); astr->audio->stop(); + spdlog::warn("=> Done"); astr->running = false; } From 6717c43fc234c100dfc9396354d8505cce4757e4 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:51:20 +0200 Subject: [PATCH 013/127] bruh --- src/audio.cpp | 1 + src/io/audio.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/audio.cpp b/src/audio.cpp index 9eb1e01c..de96637b 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -136,6 +136,7 @@ namespace audio { bstr.stereoStream = &bstr.m2s->output; astr->monoDynSplit->bind(bstr.monoStream); bstr.m2s->start(); + return bstr.stereoStream; } void setBlockSize(std::string name, int blockSize) { diff --git a/src/io/audio.h b/src/io/audio.h index c07eb5b4..172aec80 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -181,8 +181,11 @@ namespace io { if (!running) { return; } + spdlog::warn("==> Pa_StopStream"); Pa_StopStream(stream); + spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); + spdlog::warn("==> Done"); running = false; } From 1cecc78c0c43595aa2247755bd22aa212679aa4c Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 18:57:50 +0200 Subject: [PATCH 014/127] bruh --- src/io/audio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/io/audio.h b/src/io/audio.h index 172aec80..1913bfd2 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -182,7 +182,7 @@ namespace io { return; } spdlog::warn("==> Pa_StopStream"); - Pa_StopStream(stream); + Pa_AbortStream(stream); spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); spdlog::warn("==> Done"); From 11913ab683f6080d3ed063461caa06619f8182f6 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 19:01:59 +0200 Subject: [PATCH 015/127] bruh --- src/io/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/io/audio.h b/src/io/audio.h index 1913bfd2..fcfc8dc4 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -181,8 +181,8 @@ namespace io { if (!running) { return; } - spdlog::warn("==> Pa_StopStream"); - Pa_AbortStream(stream); + // spdlog::warn("==> Pa_StopStream"); + // Pa_AbortStream(stream); spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); spdlog::warn("==> Done"); From f08515420e6c22247029cc144dfafbb7d1c328ac Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 19:07:17 +0200 Subject: [PATCH 016/127] bruh --- src/io/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/io/audio.h b/src/io/audio.h index fcfc8dc4..1913bfd2 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -181,8 +181,8 @@ namespace io { if (!running) { return; } - // spdlog::warn("==> Pa_StopStream"); - // Pa_AbortStream(stream); + spdlog::warn("==> Pa_StopStream"); + Pa_AbortStream(stream); spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); spdlog::warn("==> Done"); From dbe811b47aa141af3077c9370c67985cb7efa00d Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 19:28:14 +0200 Subject: [PATCH 017/127] bruh --- src/io/audio.h | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/io/audio.h b/src/io/audio.h index 1913bfd2..a20964bf 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -181,11 +181,23 @@ namespace io { if (!running) { return; } - spdlog::warn("==> Pa_StopStream"); + if (streamType == MONO) { + _monoInput->stopReader(); + } + else { + _stereoInput->stopReader(); + } + spdlog::warn("==> Pa_AbortStream"); Pa_AbortStream(stream); spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); spdlog::warn("==> Done"); + if (streamType == MONO) { + _monoInput->clearReadStop(); + } + else { + _stereoInput->clearReadStop(); + } running = false; } @@ -239,7 +251,9 @@ namespace io { PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; - _this->_monoInput->read(_this->monoBuffer, frameCount); + if (_this->_monoInput->read(_this->monoBuffer, frameCount) < 0) { + return 0; + } float vol = powf(_this->_volume, 2); for (int i = 0; i < frameCount; i++) { @@ -255,7 +269,9 @@ namespace io { PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; - _this->_stereoInput->read(_this->stereoBuffer, frameCount); + if (_this->_stereoInput->read(_this->stereoBuffer, frameCount) < 0) { + return 0; + } // Note: Calculate the power in the UI instead of here @@ -274,7 +290,9 @@ namespace io { PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; - _this->_monoInput->read(_this->monoBuffer, frameCount); + if (_this->_monoInput->read(_this->monoBuffer, frameCount) < 0) { + return 0; + } float vol = powf(_this->_volume, 2); for (int i = 0; i < frameCount; i++) { @@ -291,7 +309,9 @@ namespace io { PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; - _this->_stereoInput->read(_this->stereoBuffer, frameCount); + if (_this->_stereoInput->read(_this->stereoBuffer, frameCount) < 0) { + return 0; + } // Note: Calculate the power in the UI instead of here From 53ec38766af293f12e36bba228850d53d544ffa9 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 16 Aug 2020 19:34:53 +0200 Subject: [PATCH 018/127] bruh --- src/io/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/io/audio.h b/src/io/audio.h index a20964bf..7f24a02f 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -187,8 +187,8 @@ namespace io { else { _stereoInput->stopReader(); } - spdlog::warn("==> Pa_AbortStream"); - Pa_AbortStream(stream); + spdlog::warn("==> Pa_StopStream"); + Pa_StopStream(stream); spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); spdlog::warn("==> Done"); From b56aab8f74e53740a896c1d813812f71f94126ca Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 17 Aug 2020 02:39:56 +0200 Subject: [PATCH 019/127] new styles --- src/frequency_select.cpp | 7 +++-- src/io/audio.h | 4 +++ src/main.cpp | 5 +-- src/main_window.cpp | 13 ++++++-- src/style.h | 1 + src/styles.cpp | 67 ++++++++++++++++++++++++++++++++++++++-- src/waterfall.cpp | 25 ++++++++++----- 7 files changed, 105 insertions(+), 17 deletions(-) diff --git a/src/frequency_select.cpp b/src/frequency_select.cpp index dd228723..424ef32b 100644 --- a/src/frequency_select.cpp +++ b/src/frequency_select.cpp @@ -84,6 +84,9 @@ void FrequencySelect::draw() { onResize(); } + ImU32 disabledColor = ImGui::GetColorU32(ImGuiCol_Text, 0.3f); + ImU32 textColor = ImGui::GetColorU32(ImGuiCol_Text); + int commaOffset = 0; bool zeros = true; for (int i = 0; i < 12; i++) { @@ -92,11 +95,11 @@ void FrequencySelect::draw() { } sprintf(buf, "%d", digits[i]); window->DrawList->AddText(ImVec2(widgetPos.x + (i * 22) + commaOffset, widgetPos.y), - zeros ? IM_COL32(90, 90, 90, 255) : IM_COL32(255, 255, 255, 255), buf); + zeros ? disabledColor : textColor, buf); if ((i + 1) % 3 == 0 && i < 11) { commaOffset += 12; window->DrawList->AddText(ImVec2(widgetPos.x + (i * 22) + commaOffset + 10, widgetPos.y), - zeros ? IM_COL32(90, 90, 90, 255) : IM_COL32(255, 255, 255, 255), "."); + zeros ? disabledColor : textColor, "."); } } diff --git a/src/io/audio.h b/src/io/audio.h index 7f24a02f..d6c520ff 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -252,6 +252,7 @@ namespace io { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; if (_this->_monoInput->read(_this->monoBuffer, frameCount) < 0) { + memset(outbuf, 0, sizeof(float) * frameCount); return 0; } @@ -270,6 +271,7 @@ namespace io { AudioSink* _this = (AudioSink*)userData; dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; if (_this->_stereoInput->read(_this->stereoBuffer, frameCount) < 0) { + memset(outbuf, 0, sizeof(dsp::StereoFloat_t) * frameCount); return 0; } @@ -291,6 +293,7 @@ namespace io { AudioSink* _this = (AudioSink*)userData; dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; if (_this->_monoInput->read(_this->monoBuffer, frameCount) < 0) { + memset(outbuf, 0, sizeof(dsp::StereoFloat_t) * frameCount); return 0; } @@ -310,6 +313,7 @@ namespace io { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; if (_this->_stereoInput->read(_this->stereoBuffer, frameCount) < 0) { + memset(outbuf, 0, sizeof(float) * frameCount); return 0; } diff --git a/src/main.cpp b/src/main.cpp index 6c290b6c..33a96f66 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -83,6 +83,7 @@ int main() { return 1; } + // Setup Dear ImGui context IMGUI_CHECKVERSION(); ImGui::CreateContext(); @@ -98,7 +99,7 @@ int main() { config::load("config.json"); config::startAutoSave(); - style::setDefaultStyle(); + style::setDarkStyle(); spdlog::info("Loading icons"); icons::load(); @@ -135,7 +136,7 @@ int main() { glfwGetFramebufferSize(window, &display_w, &display_h); glViewport(0, 0, display_w, display_h); glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); - //glClearColor(0.90f, 0.90f, 0.90f, 1.0f); + //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); diff --git a/src/main_window.cpp b/src/main_window.cpp index 85331a76..47131243 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -195,7 +195,7 @@ void windowInit() { // Load last band plan configuration - // TODO: Save/load config for audio streams + window size/fullscreen + // TODO: Save/load config window size/fullscreen // Also add a loading screen // And a module add/remove/change order menu // get rid of watchers and use if() instead @@ -203,7 +203,11 @@ void windowInit() { // Bandwidth ajustment // DSB / CW and RAW modes; // Write a recorder - + // Adjustable "snap to grid" for each VFO + // Bring VFO to a visible plane when changing sample rate if it's smaller + // Fix invalid values on the min/max sliders + // Possibility to resize waterfall and menu + // Have a proper root directory // Update UI settings fftMin = config::config["min"]; @@ -685,13 +689,14 @@ void drawWindow() { // Right Column ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0)); ImGui::NextColumn(); + ImGui::PopStyleVar(); + ImGui::BeginChild("Waterfall"); wtf.draw(); ImGui::EndChild(); - ImGui::PopStyleVar(); ImGui::NextColumn(); ImGui::BeginChild("WaterfallControls"); @@ -706,6 +711,7 @@ void drawWindow() { ImGui::Text("Max"); ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); if (ImGui::VSliderFloat("##_8_", ImVec2(20.0f, 150.0f), &fftMax, 0.0f, -100.0f, "")) { + fftMax = std::max(fftMax, fftMin + 10); config::config["max"] = fftMax; config::configModified = true; } @@ -716,6 +722,7 @@ void drawWindow() { ImGui::Text("Min"); ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); if (ImGui::VSliderFloat("##_9_", ImVec2(20.0f, 150.0f), &fftMin, 0.0f, -100.0f, "")) { + fftMin = std::min(fftMax - 10, fftMin); config::config["min"] = fftMin; config::configModified = true; } diff --git a/src/style.h b/src/style.h index 3ce378ad..ae35e414 100644 --- a/src/style.h +++ b/src/style.h @@ -4,6 +4,7 @@ namespace style { void setDefaultStyle(); + void setDarkStyle(); void beginDisabled(); void endDisabled(); } \ No newline at end of file diff --git a/src/styles.cpp b/src/styles.cpp index 6eb344f4..342d6b13 100644 --- a/src/styles.cpp +++ b/src/styles.cpp @@ -15,14 +15,75 @@ namespace style { //ImGui::StyleColorsLight(); } + void setDarkStyle() { + ImGui::GetStyle().WindowRounding = 0.0f; + ImGui::GetStyle().ChildRounding = 0.0f; + ImGui::GetStyle().FrameRounding = 0.0f; + ImGui::GetStyle().GrabRounding = 0.0f; + ImGui::GetStyle().PopupRounding = 0.0f; + ImGui::GetStyle().ScrollbarRounding = 0.0f; + + ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 16.0f); + + ImGui::StyleColorsDark(); + + auto& style = ImGui::GetStyle(); + + ImVec4* colors = style.Colors; + + colors[ImGuiCol_Text] = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); + colors[ImGuiCol_TextDisabled] = ImVec4(0.50f, 0.50f, 0.50f, 1.00f); + colors[ImGuiCol_WindowBg] = ImVec4(0.06f, 0.06f, 0.06f, 0.94f); + colors[ImGuiCol_ChildBg] = ImVec4(1.00f, 1.00f, 1.00f, 0.00f); + colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.08f, 0.94f); + colors[ImGuiCol_Border] = ImVec4(0.43f, 0.43f, 0.50f, 0.50f); + colors[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_FrameBg] = ImVec4(0.20f, 0.21f, 0.22f, 0.54f); + colors[ImGuiCol_FrameBgHovered] = ImVec4(0.20f, 0.21f, 0.22f, 0.54f); + colors[ImGuiCol_FrameBgActive] = ImVec4(0.20f, 0.21f, 0.22f, 0.54f); + colors[ImGuiCol_TitleBg] = ImVec4(0.04f, 0.04f, 0.04f, 1.00f); + colors[ImGuiCol_TitleBgActive] = ImVec4(0.29f, 0.29f, 0.29f, 1.00f); + colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.00f, 0.00f, 0.00f, 0.51f); + colors[ImGuiCol_MenuBarBg] = ImVec4(0.14f, 0.14f, 0.14f, 1.00f); + colors[ImGuiCol_ScrollbarBg] = ImVec4(0.02f, 0.02f, 0.02f, 0.53f); + colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.31f, 0.31f, 0.31f, 1.00f); + colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.41f, 0.41f, 0.41f, 1.00f); + colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.51f, 0.51f, 0.51f, 1.00f); + colors[ImGuiCol_CheckMark] = ImVec4(0.24f, 0.52f, 0.88f, 1.00f); + colors[ImGuiCol_SliderGrab] = ImVec4(0.24f, 0.52f, 0.88f, 1.00f); + colors[ImGuiCol_SliderGrabActive] = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); + colors[ImGuiCol_Button] = ImVec4(0.44f, 0.44f, 0.44f, 0.40f); + colors[ImGuiCol_ButtonHovered] = ImVec4(0.44f, 0.44f, 0.44f, 0.45f); + colors[ImGuiCol_ButtonActive] = ImVec4(0.44f, 0.44f, 0.44f, 0.40f); + colors[ImGuiCol_Header] = ImVec4(0.63f, 0.63f, 0.70f, 0.31f); + colors[ImGuiCol_HeaderHovered] = ImVec4(0.63f, 0.63f, 0.70f, 0.40f); + colors[ImGuiCol_HeaderActive] = ImVec4(0.63f, 0.63f, 0.70f, 0.31f); + colors[ImGuiCol_Separator] = ImVec4(0.43f, 0.43f, 0.50f, 0.50f); + colors[ImGuiCol_SeparatorHovered] = ImVec4(0.72f, 0.72f, 0.72f, 0.78f); + colors[ImGuiCol_SeparatorActive] = ImVec4(0.51f, 0.51f, 0.51f, 1.00f); + colors[ImGuiCol_ResizeGrip] = ImVec4(0.91f, 0.91f, 0.91f, 0.25f); + colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.81f, 0.81f, 0.81f, 0.67f); + colors[ImGuiCol_ResizeGripActive] = ImVec4(0.46f, 0.46f, 0.46f, 0.95f); + colors[ImGuiCol_PlotLines] = ImVec4(0.4f, 0.9f, 1.0f, 1.00f); + colors[ImGuiCol_PlotLinesHovered] = ImVec4(1.00f, 0.43f, 0.35f, 1.00f); + colors[ImGuiCol_PlotHistogram] = ImVec4(0.73f, 0.60f, 0.15f, 1.00f); + colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00f, 0.60f, 0.00f, 1.00f); + colors[ImGuiCol_TextSelectedBg] = ImVec4(0.87f, 0.87f, 0.87f, 0.35f); + colors[ImGuiCol_ModalWindowDarkening] = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); + colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 0.90f); + colors[ImGuiCol_NavHighlight] = ImVec4(0.60f, 0.60f, 0.60f, 1.00f); + colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f); + } + void beginDisabled() { ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.5f, 0.5f, 0.5f, 0.5f)); - ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.35f, 0.35f, 0.35f, 0.35f)); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.44f, 0.44f, 0.44f, 0.15f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.20f, 0.21f, 0.22f, 0.30f)); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 0.65f)); } void endDisabled() { ImGui::PopItemFlag(); - ImGui::PopStyleColor(2); + ImGui::PopStyleColor(3); } } \ No newline at end of file diff --git a/src/waterfall.cpp b/src/waterfall.cpp index 9fe05569..4cf9e376 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -106,7 +106,9 @@ namespace ImGui { float vertRange = fftMax - fftMin; float scaleFactor = fftHeight / vertRange; char buf[100]; - + + ImU32 trace = ImGui::GetColorU32(ImGuiCol_PlotLines); + ImU32 shadow = ImGui::GetColorU32(ImGuiCol_PlotLines, 0.2); // Vertical scale for (float line = startLine; line > fftMin; line -= vRange) { @@ -145,11 +147,9 @@ namespace ImGui { aPos = std::clamp(aPos, widgetPos.y + 10, widgetPos.y + fftHeight + 10); bPos = std::clamp(bPos, widgetPos.y + 10, widgetPos.y + fftHeight + 10); window->DrawList->AddLine(ImVec2(widgetPos.x + 49 + i, roundf(aPos)), - ImVec2(widgetPos.x + 50 + i, roundf(bPos)), - IM_COL32(0, 255, 255, 255), 1.0f); + ImVec2(widgetPos.x + 50 + i, roundf(bPos)), trace, 1.0f); window->DrawList->AddLine(ImVec2(widgetPos.x + 50 + i, roundf(bPos)), - ImVec2(widgetPos.x + 50 + i, widgetPos.y + fftHeight + 10), - IM_COL32(0, 255, 255, 50), 1.0f); + ImVec2(widgetPos.x + 50 + i, widgetPos.y + fftHeight + 10), shadow, 1.0f); } // X Axis @@ -361,6 +361,7 @@ namespace ImGui { waterfallHeight = widgetSize.y - fftHeight - 52; delete[] latestFFT; delete[] waterfallFb; + latestFFT = new float[dataWidth]; waterfallFb = new uint32_t[dataWidth * waterfallHeight]; memset(waterfallFb, 0, dataWidth * waterfallHeight * sizeof(uint32_t)); @@ -387,14 +388,24 @@ namespace ImGui { void WaterFall::draw() { buf_mtx.lock(); window = GetCurrentWindow(); + + // Fix for weird ImGui bug + ImVec2 tmpWidgetEndPos = ImGui::GetWindowContentRegionMax(); + if (tmpWidgetEndPos.x < 100 || tmpWidgetEndPos.y < fftHeight + 100) { + buf_mtx.unlock(); + return; + } + widgetPos = ImGui::GetWindowContentRegionMin(); - widgetEndPos = ImGui::GetWindowContentRegionMax(); + widgetEndPos = tmpWidgetEndPos; widgetPos.x += window->Pos.x; widgetPos.y += window->Pos.y; - widgetEndPos.x += window->Pos.x; + widgetEndPos.x += window->Pos.x - 4; // Padding widgetEndPos.y += window->Pos.y; widgetSize = ImVec2(widgetEndPos.x - widgetPos.x, widgetEndPos.y - widgetPos.y); + + if (widgetPos.x != lastWidgetPos.x || widgetPos.y != lastWidgetPos.y) { lastWidgetPos = widgetPos; onPositionChange(); From 649be86cb6eb63710055920bffd63013bf4c37ed Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 18 Aug 2020 00:56:51 +0200 Subject: [PATCH 020/127] added a recorder module --- modules/recorder/CMakeLists.txt | 55 +++++++++++++ modules/recorder/src/main.cpp | 138 ++++++++++++++++++++++++++++++++ modules/recorder/src/wav.h | 62 ++++++++++++++ src/audio.cpp | 52 +++++++++++- src/audio.h | 1 + src/dsp/routing.h | 5 +- src/main.cpp | 3 + src/main_window.cpp | 8 +- src/module.cpp | 1 + src/module.h | 1 + src/{styles.cpp => style.cpp} | 0 11 files changed, 318 insertions(+), 8 deletions(-) create mode 100644 modules/recorder/CMakeLists.txt create mode 100644 modules/recorder/src/main.cpp create mode 100644 modules/recorder/src/wav.h rename src/{styles.cpp => style.cpp} (100%) diff --git a/modules/recorder/CMakeLists.txt b/modules/recorder/CMakeLists.txt new file mode 100644 index 00000000..e55e9f0d --- /dev/null +++ b/modules/recorder/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.9) +project(recorder) + +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") + link_directories(recorder "C:/Program Files/PothosSDR/lib/") + include_directories(recorder "C:/Program Files/PothosSDR/include/volk/") + include_directories(recorder "C:/Program Files/PothosSDR/include/") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") + include_directories(recorder "/usr/include/volk") + link_libraries(pthread) + link_libraries(GL) + link_libraries(GLEW) + link_libraries(glfw) + link_libraries(fftw3) + link_libraries(fftw3f) + link_libraries(portaudio) + link_libraries(X11) + link_libraries(Xxf86vm) +endif (MSVC) + +link_libraries(volk) +link_libraries(SoapySDR) + +# Main code +include_directories(recorder "src/") +include_directories(recorder "../../src/") +include_directories(recorder "../../src/imgui") +file(GLOB SRC "src/*.cpp") +file(GLOB IMGUI "../../src/imgui/*.cpp") +add_library(recorder SHARED ${SRC} ${IMGUI}) +set_target_properties(recorder PROPERTIES OUTPUT_NAME recorder) + +if (MSVC) + # Glew + find_package(GLEW REQUIRED) + target_link_libraries(recorder PRIVATE GLEW::GLEW) + + # GLFW3 + find_package(glfw3 CONFIG REQUIRED) + target_link_libraries(recorder PRIVATE glfw) + + # FFTW3 + find_package(FFTW3 CONFIG REQUIRED) + target_link_libraries(recorder PRIVATE FFTW3::fftw3) + find_package(FFTW3f CONFIG REQUIRED) + target_link_libraries(recorder PRIVATE FFTW3::fftw3f) + + # PortAudio + find_package(portaudio CONFIG REQUIRED) + target_link_libraries(recorder PRIVATE portaudio portaudio_static) +endif (MSVC) + +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/modules/recorder/src/main.cpp b/modules/recorder/src/main.cpp new file mode 100644 index 00000000..7c4f1757 --- /dev/null +++ b/modules/recorder/src/main.cpp @@ -0,0 +1,138 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + +mod::API_t* API; + +struct RecorderContext_t { + std::string name; + dsp::stream* stream; + WavWriter* writer; + std::thread workerThread; + bool recording; + time_t startTime; + std::string lastNameList; + std::string selectedStreamName; + int selectedStreamId; +}; + +void _writeWorker(RecorderContext_t* ctx) { + dsp::StereoFloat_t* floatBuf = new dsp::StereoFloat_t[1024]; + int16_t* sampleBuf = new int16_t[2048]; + while (true) { + if (ctx->stream->read(floatBuf, 1024) < 0) { + break; + } + for (int i = 0; i < 1024; i++) { + sampleBuf[(i * 2) + 0] = floatBuf[i].l * 0x7FFF; + sampleBuf[(i * 2) + 1] = floatBuf[i].r * 0x7FFF; + } + ctx->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); + } + delete[] floatBuf; + delete[] sampleBuf; +} + +std::string genFileName(std::string prefix) { + time_t now = time(0); + tm *ltm = localtime(&now); + char buf[1024]; + sprintf(buf, "%02d-%02d-%02d_%02d-%02d-%02d.wav", ltm->tm_hour, ltm->tm_min, ltm->tm_sec, ltm->tm_mday, ltm->tm_mon + 1, ltm->tm_year + 1900); + return prefix + buf; +} + +void streamRemovedHandler(void* ctx) { + +} + +void sampleRateChanged(void* ctx, float sampleRate, int blockSize) { + +} + +MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { + API = _API; + RecorderContext_t* ctx = new RecorderContext_t; + ctx->recording = false; + ImGui::SetCurrentContext(imctx); + return ctx; +} + +MOD_EXPORT void _NEW_FRAME_(RecorderContext_t* ctx) { + +} + +MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + + std::vector streamNames = API->getStreamNameList(); + std::string nameList; + for (std::string name : streamNames) { + nameList += name; + nameList += '\0'; + } + + if (ctx->lastNameList != nameList) { + ctx->lastNameList = nameList; + + } + + ImGui::PushItemWidth(menuColumnWidth); + if (!ctx->recording) { + ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str()); + } + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.44f, 0.44f, 0.44f, 0.15f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.20f, 0.21f, 0.22f, 0.30f)); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 0.65f)); + ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str()); + ImGui::PopItemFlag(); + ImGui::PopStyleColor(3); + } + + if (!ctx->recording) { + if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { + ctx->writer = new WavWriter("recordings/" + genFileName("audio_"), 16, 2, 48000); + ctx->stream = API->bindToStreamStereo("Radio", streamRemovedHandler, sampleRateChanged, ctx); + ctx->workerThread = std::thread(_writeWorker, ctx); + ctx->recording = true; + ctx->startTime = time(0); + } + ImGui::TextColored(ImGui::GetStyleColorVec4(ImGuiCol_Text), "Idle --:--:--"); + } + else { + if (ImGui::Button("Stop", ImVec2(menuColumnWidth, 0))) { + ctx->stream->stopReader(); + ctx->workerThread.join(); + ctx->stream->clearReadStop(); + API->unbindFromStreamStereo("Radio", ctx->stream); + ctx->writer->close(); + delete ctx->writer; + ctx->recording = false; + } + time_t diff = time(0) - ctx->startTime; + tm *dtm = gmtime(&diff); + ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); + } +} + +MOD_EXPORT void _HANDLE_EVENT_(RecorderContext_t* ctx, int eventId) { + // INSTEAD OF EVENTS, REGISTER HANDLER WHEN CREATING VFO + if (eventId == mod::EVENT_STREAM_PARAM_CHANGED) { + + } + else if (eventId == mod::EVENT_SELECTED_VFO_CHANGED) { + + } +} + +MOD_EXPORT void _STOP_(RecorderContext_t* ctx) { + +} \ No newline at end of file diff --git a/modules/recorder/src/wav.h b/modules/recorder/src/wav.h new file mode 100644 index 00000000..7bf9ac8a --- /dev/null +++ b/modules/recorder/src/wav.h @@ -0,0 +1,62 @@ +#pragma once +#include +#include + +#define WAV_SIGNATURE "RIFF" +#define WAV_TYPE "WAVE" +#define WAV_FORMAT_MARK "fmt " +#define WAV_DATA_MARK "data" +#define WAV_SAMPLE_TYPE_PCM 1 + +class WavWriter { +public: + WavWriter(std::string path, uint16_t bitDepth, uint16_t channelCount, uint32_t sampleRate) { + file = std::ofstream(path.c_str(), std::ios::binary); + memcpy(hdr.signature, WAV_SIGNATURE, 4); + memcpy(hdr.fileType, WAV_TYPE, 4); + memcpy(hdr.formatMarker, WAV_FORMAT_MARK, 4); + memcpy(hdr.dataMarker, WAV_DATA_MARK, 4); + hdr.formatHeaderLength = 16; + hdr.sampleType = WAV_SAMPLE_TYPE_PCM; + hdr.channelCount = channelCount; + hdr.sampleRate = sampleRate; + hdr.bytesPerSecond = (bitDepth / 8) * channelCount * sampleRate; + hdr.bytesPerSample = (bitDepth / 8) * channelCount; + hdr.bitDepth = bitDepth; + file.write((char*)&hdr, sizeof(WavHeader_t)); + } + + void writeSamples(void* data, size_t size) { + file.write((char*)data, size); + bytesWritten += size; + } + + void close() { + hdr.fileSize = bytesWritten + sizeof(WavHeader_t) - 8; + hdr.dataSize = bytesWritten; + file.seekp(0); + file.write((char*)&hdr, sizeof(WavHeader_t)); + file.close(); + } + +private: + struct WavHeader_t { + char signature[4]; // "RIFF" + uint32_t fileSize; // data bytes + sizeof(WavHeader_t) - 8 + char fileType[4]; // "WAVE" + char formatMarker[4]; // "fmt " + uint32_t formatHeaderLength; // Always 16 + uint16_t sampleType; // PCM (1) + uint16_t channelCount; + uint32_t sampleRate; + uint32_t bytesPerSecond; + uint16_t bytesPerSample; + uint16_t bitDepth; + char dataMarker[4]; // "data" + uint32_t dataSize; + }; + + std::ofstream file; + size_t bytesWritten = 0; + WavHeader_t hdr; +}; \ No newline at end of file diff --git a/src/audio.cpp b/src/audio.cpp index de96637b..65eb3c45 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -108,14 +108,24 @@ namespace audio { bstr.sampleRateChangeHandler = sampleRateChangeHandler; if (astr->type == STREAM_TYPE_MONO) { bstr.monoStream = new dsp::stream(astr->blockSize * 2); + astr->monoDynSplit->stop(); astr->monoDynSplit->bind(bstr.monoStream); + if (astr->running) { + astr->monoDynSplit->start(); + } + astr->boundStreams.push_back(bstr); return bstr.monoStream; } bstr.stereoStream = new dsp::stream(astr->blockSize * 2); bstr.s2m = new dsp::StereoToMono(bstr.stereoStream, astr->blockSize * 2); bstr.monoStream = &bstr.s2m->output; + astr->stereoDynSplit->stop(); astr->stereoDynSplit->bind(bstr.stereoStream); + if (astr->running) { + astr->stereoDynSplit->start(); + } bstr.s2m->start(); + astr->boundStreams.push_back(bstr); return bstr.monoStream; } @@ -128,14 +138,24 @@ namespace audio { bstr.sampleRateChangeHandler = sampleRateChangeHandler; if (astr->type == STREAM_TYPE_STEREO) { bstr.stereoStream = new dsp::stream(astr->blockSize * 2); + astr->stereoDynSplit->stop(); astr->stereoDynSplit->bind(bstr.stereoStream); + if (astr->running) { + astr->stereoDynSplit->start(); + } + astr->boundStreams.push_back(bstr); return bstr.stereoStream; } bstr.monoStream = new dsp::stream(astr->blockSize * 2); bstr.m2s = new dsp::MonoToStereo(bstr.monoStream, astr->blockSize * 2); bstr.stereoStream = &bstr.m2s->output; + astr->monoDynSplit->stop(); astr->monoDynSplit->bind(bstr.monoStream); + if (astr->running) { + astr->monoDynSplit->start(); + } bstr.m2s->start(); + astr->boundStreams.push_back(bstr); return bstr.stereoStream; } @@ -179,8 +199,19 @@ namespace audio { continue; } if (astr->type == STREAM_TYPE_STEREO) { + astr->stereoDynSplit->stop(); + astr->stereoDynSplit->unbind(bstr.stereoStream); + if (astr->running) { + astr->stereoDynSplit->start(); + } bstr.s2m->stop(); delete bstr.s2m; + return; + } + astr->monoDynSplit->stop(); + astr->monoDynSplit->unbind(bstr.monoStream); + if (astr->running) { + astr->monoDynSplit->start(); } delete stream; return; @@ -195,8 +226,19 @@ namespace audio { continue; } if (astr->type == STREAM_TYPE_MONO) { - bstr.s2m->stop(); + astr->monoDynSplit->stop(); + astr->monoDynSplit->unbind(bstr.monoStream); + if (astr->running) { + astr->monoDynSplit->start(); + } + bstr.m2s->stop(); delete bstr.m2s; + return; + } + astr->stereoDynSplit->stop(); + astr->stereoDynSplit->unbind(bstr.stereoStream); + if (astr->running) { + astr->stereoDynSplit->start(); } delete stream; return; @@ -259,5 +301,13 @@ namespace audio { astr->audio->setDevice(deviceId); setSampleRate(name, sampleRate); } + + std::vector getStreamNameList() { + std::vector list; + for (auto [name, stream] : streams) { + list.push_back(name); + } + return list; + } }; diff --git a/src/audio.h b/src/audio.h index c9de6c3c..8f8fe9a8 100644 --- a/src/audio.h +++ b/src/audio.h @@ -59,5 +59,6 @@ namespace audio { std::string getNameFromVFO(std::string vfoName); void setSampleRate(std::string name, float sampleRate); void setAudioDevice(std::string name, int deviceId, float sampleRate); + std::vector getStreamNameList(); }; diff --git a/src/dsp/routing.h b/src/dsp/routing.h index b8be1913..5c4a955c 100644 --- a/src/dsp/routing.h +++ b/src/dsp/routing.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace dsp { class Splitter { @@ -144,7 +145,7 @@ namespace dsp { for (int i = 0; i < outputCount; i++) { if (outputs[i] == stream) { outputs.erase(outputs.begin() + i); - break; + return; } } } @@ -179,11 +180,13 @@ namespace dsp { MonoToStereo(stream* input, int bufferSize) { _in = input; _bufferSize = bufferSize; + output.init(bufferSize * 2); } void init(stream* input, int bufferSize) { _in = input; _bufferSize = bufferSize; + output.init(bufferSize * 2); } void start() { diff --git a/src/main.cpp b/src/main.cpp index 33a96f66..1ef2450f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -123,6 +123,9 @@ int main() { ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); + + + int wwidth, wheight; glfwGetWindowSize(window, &wwidth, &wheight); ImGui::SetNextWindowPos(ImVec2(0, 0)); diff --git a/src/main_window.cpp b/src/main_window.cpp index 47131243..4ae7d31e 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -204,10 +204,10 @@ void windowInit() { // DSB / CW and RAW modes; // Write a recorder // Adjustable "snap to grid" for each VFO - // Bring VFO to a visible plane when changing sample rate if it's smaller - // Fix invalid values on the min/max sliders + // Bring VFO to a visible place when changing sample rate if it's smaller // Possibility to resize waterfall and menu // Have a proper root directory + // Switch to double for all frequecies and bandwidth // Update UI settings fftMin = config::config["min"]; @@ -672,10 +672,6 @@ void drawWindow() { ImGui::Spacing(); } - if (ImGui::CollapsingHeader("Recording")) { - ImGui::Spacing(); - } - if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); diff --git a/src/module.cpp b/src/module.cpp index ef0fe3e9..2ea8be18 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -42,6 +42,7 @@ namespace mod { API.setBlockSize = audio::setBlockSize; API.unbindFromStreamMono = audio::unbindFromStreamMono; API.unbindFromStreamStereo = audio::unbindFromStreamStereo; + API.getStreamNameList = audio::getStreamNameList; } void loadModule(std::string path, std::string name) { diff --git a/src/module.h b/src/module.h index 2bde0855..d5b16193 100644 --- a/src/module.h +++ b/src/module.h @@ -44,6 +44,7 @@ namespace mod { void (*setBlockSize)(std::string name, int blockSize); void (*unbindFromStreamMono)(std::string name, dsp::stream* stream); void (*unbindFromStreamStereo)(std::string name, dsp::stream* stream); + std::vector (*getStreamNameList)(void); enum { REF_LOWER, diff --git a/src/styles.cpp b/src/style.cpp similarity index 100% rename from src/styles.cpp rename to src/style.cpp From 709627a738ac3917b3f32da809d174b6ee03c09a Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 20 Aug 2020 18:29:23 +0200 Subject: [PATCH 021/127] New stuff lmao --- CMakeLists.txt | 2 + modules/radio/src/main.cpp | 41 ++----- modules/radio/src/path.cpp | 62 ++++++++-- modules/radio/src/path.h | 7 +- modules/recorder/src/main.cpp | 35 +++++- src/dsp/demodulator.h | 102 +++++++++++++++++ src/dsp/filter.h | 114 ++++++++++++++++++- src/dsp/resampling.h | 208 ++++++++++++++++++++++++++++++++++ src/frequency_select.cpp | 6 +- src/frequency_select.h | 5 +- src/main.cpp | 66 ++++++++--- src/main_window.cpp | 78 ++++++++++--- src/vfo_manager.cpp | 4 +- src/waterfall.cpp | 117 +++++++++++++++---- src/waterfall.h | 11 ++ 15 files changed, 750 insertions(+), 108 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 11daabd7..58be071e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ if (MSVC) link_directories(sdrpp "C:/Program Files/PothosSDR/lib/") include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/") include_directories(sdrpp "C:/Program Files/PothosSDR/include/") + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) else() set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") @@ -37,6 +38,7 @@ if (MSVC) endif (MSVC) add_executable(sdrpp ${SRC} ${IMGUI}) +# add_library(sdrpp ${SRC} ${IMGUI}) if (MSVC) # Glew diff --git a/modules/radio/src/main.cpp b/modules/radio/src/main.cpp index ee97cbd7..29caf395 100644 --- a/modules/radio/src/main.cpp +++ b/modules/radio/src/main.cpp @@ -11,8 +11,6 @@ struct RadioContext_t { std::string name; int demod = 1; SigPath sigPath; - // watcher volume; - // watcher audioDevice; }; MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { @@ -21,24 +19,12 @@ MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name ctx->name = _name; ctx->sigPath.init(_name, 200000, 1000, API->registerVFO(_name, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000)); ctx->sigPath.start(); - // ctx->volume.val = 1.0f; - // ctx->volume.markAsChanged(); - // API->bindVolumeVariable(&ctx->volume.val); - // ctx->audioDevice.val = ctx->sigPath.audio.getDeviceId(); - // ctx->audioDevice.changed(); // clear change ImGui::SetCurrentContext(imctx); return ctx; } MOD_EXPORT void _NEW_FRAME_(RadioContext_t* ctx) { - // if (ctx->volume.changed()) { - // ctx->sigPath.setVolume(ctx->volume.val); - // } - // if (ctx->audioDevice.changed()) { - // ctx->sigPath.audio.stop(); - // ctx->sigPath.audio.setDevice(ctx->audioDevice.val); - // ctx->sigPath.audio.start(); - // } + } MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { @@ -48,28 +34,28 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { if (ImGui::RadioButton(CONCAT("NFM##_", ctx->name), ctx->demod == 0) && ctx->demod != 0) { ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM); ctx->demod = 0; - API->setVFOBandwidth(ctx->name, 12500); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { ctx->sigPath.setDemodulator(SigPath::DEMOD_FM); ctx->demod = 1; - API->setVFOBandwidth(ctx->name, 200000); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } ImGui::NextColumn(); if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { ctx->sigPath.setDemodulator(SigPath::DEMOD_AM); ctx->demod = 2; - API->setVFOBandwidth(ctx->name, 12500); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } - if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { ctx->demod = 3; }; + if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { + ctx->sigPath.setDemodulator(SigPath::DEMOD_DSB); + ctx->demod = 3; + API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); + } ImGui::NextColumn(); if (ImGui::RadioButton(CONCAT("USB##_", ctx->name), ctx->demod == 4) && ctx->demod != 4) { ctx->sigPath.setDemodulator(SigPath::DEMOD_USB); ctx->demod = 4; - API->setVFOBandwidth(ctx->name, 3000); API->setVFOReference(ctx->name, mod::API_t::REF_LOWER); } if (ImGui::RadioButton(CONCAT("CW##_", ctx->name), ctx->demod == 5) && ctx->demod != 5) { ctx->demod = 5; }; @@ -77,7 +63,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { if (ImGui::RadioButton(CONCAT("LSB##_", ctx->name), ctx->demod == 6) && ctx->demod != 6) { ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB); ctx->demod = 6; - API->setVFOBandwidth(ctx->name, 3000); API->setVFOReference(ctx->name, mod::API_t::REF_UPPER); } if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { ctx->demod = 7; }; @@ -85,21 +70,11 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ImGui::EndGroup(); - // ImGui::PushItemWidth(ImGui::GetWindowSize().x); - // ImGui::Combo(CONCAT("##_audio_dev_", ctx->name), &ctx->audioDevice.val, ctx->sigPath.audio.devTxtList.c_str()); - // ImGui::PopItemWidth(); + ImGui::Checkbox(CONCAT("Deemphasis##_", ctx->name), &ctx->sigPath.deemp.bypass); } MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { - // INSTEAD OF EVENTS, REGISTER HANDLER WHEN CREATING VFO - if (eventId == mod::EVENT_STREAM_PARAM_CHANGED) { - ctx->sigPath.updateBlockSize(); - } - else if (eventId == mod::EVENT_SELECTED_VFO_CHANGED) { - // if (API->getSelectedVFOName() == ctx->name) { - // API->bindVolumeVariable(&ctx->volume.val); - // } - } + } MOD_EXPORT void _STOP_(RadioContext_t* ctx) { diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index 7efa4fdc..2dbb99b2 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -6,9 +6,16 @@ SigPath::SigPath() { int SigPath::sampleRateChangeHandler(void* ctx, float sampleRate) { SigPath* _this = (SigPath*)ctx; + _this->outputSampleRate = sampleRate; _this->audioResamp.stop(); - _this->audioResamp.setOutputSampleRate(sampleRate, sampleRate / 2.0f, sampleRate / 2.0f); + _this->deemp.stop(); + float bw = std::min(_this->bandwidth, sampleRate / 2.0f); + spdlog::warn("New bandwidth: {0}", bw); + _this->audioResamp.setOutputSampleRate(sampleRate, bw, bw); + _this->deemp.setBlockSize(_this->audioResamp.getOutputBlockSize()); + _this->deemp.setSamplerate(sampleRate); _this->audioResamp.start(); + _this->deemp.start(); return _this->audioResamp.getOutputBlockSize(); } @@ -18,6 +25,7 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: this->vfoName = vfoName; _demod = DEMOD_FM; + bandwidth = 200000; // TODO: Set default VFO options @@ -26,8 +34,11 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: ssbDemod.init(input, 6000, 3000, 22); audioResamp.init(&demod.output, 200000, 48000, 800); - API->registerMonoStream(&audioResamp.output, vfoName, vfoName, sampleRateChangeHandler, this); + deemp.init(&audioResamp.output, 800, 50e-6, 48000); + outputSampleRate = API->registerMonoStream(&deemp.output, vfoName, vfoName, sampleRateChangeHandler, this); API->setBlockSize(vfoName, audioResamp.getOutputBlockSize()); + + setDemodulator(_demod); } void SigPath::setSampleRate(float sampleRate) { @@ -43,6 +54,7 @@ void SigPath::setDemodulator(int demId) { } audioResamp.stop(); + deemp.stop(); // Stop current demodulator if (_demod == DEMOD_FM) { @@ -65,47 +77,76 @@ void SigPath::setDemodulator(int demId) { // Set input of the audio resampler if (demId == DEMOD_FM) { API->setVFOSampleRate(vfoName, 200000, 200000); + bandwidth = 15000; demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); demod.setSampleRate(200000); demod.setDeviation(100000); audioResamp.setInput(&demod.output); - audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName), 15000, 15000); + float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + deemp.bypass = false; demod.start(); } if (demId == DEMOD_NFM) { - API->setVFOSampleRate(vfoName, 12500, 12500); + API->setVFOSampleRate(vfoName, 16000, 16000); + bandwidth = 8000; demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); - demod.setSampleRate(12500); - demod.setDeviation(6250); + demod.setSampleRate(16000); + demod.setDeviation(8000); audioResamp.setInput(&demod.output); - audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName)); + float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(16000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + deemp.bypass = true; demod.start(); } else if (demId == DEMOD_AM) { API->setVFOSampleRate(vfoName, 12500, 12500); + bandwidth = 6250; amDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); audioResamp.setInput(&amDemod.output); - audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName)); + float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + deemp.bypass = true; amDemod.start(); } else if (demId == DEMOD_USB) { API->setVFOSampleRate(vfoName, 6000, 3000); + bandwidth = 3000; ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); ssbDemod.setMode(dsp::SSBDemod::MODE_USB); audioResamp.setInput(&ssbDemod.output); - audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName)); + float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + deemp.bypass = true; ssbDemod.start(); } else if (demId == DEMOD_LSB) { API->setVFOSampleRate(vfoName, 6000, 3000); + bandwidth = 3000; ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); audioResamp.setInput(&ssbDemod.output); - audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName)); + float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + deemp.bypass = true; + ssbDemod.start(); + } + else if (demId == DEMOD_DSB) { + API->setVFOSampleRate(vfoName, 6000, 6000); + bandwidth = 3000; + ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + ssbDemod.setMode(dsp::SSBDemod::MODE_DSB); + audioResamp.setInput(&ssbDemod.output); + float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + deemp.bypass = true; ssbDemod.start(); } + deemp.setBlockSize(audioResamp.getOutputBlockSize()); + audioResamp.start(); + deemp.start(); } void SigPath::updateBlockSize() { @@ -115,5 +156,6 @@ void SigPath::updateBlockSize() { void SigPath::start() { demod.start(); audioResamp.start(); + deemp.start(); API->startStream(vfoName); } \ No newline at end of file diff --git a/modules/radio/src/path.h b/modules/radio/src/path.h index 164c436e..f28f32e2 100644 --- a/modules/radio/src/path.h +++ b/modules/radio/src/path.h @@ -18,7 +18,7 @@ public: void start(); void setSampleRate(float sampleRate); - void setVFOFrequency(long frequency); + void setVFOFrequency(uint64_t frequency); void updateBlockSize(); @@ -30,9 +30,12 @@ public: DEMOD_AM, DEMOD_USB, DEMOD_LSB, + DEMOD_DSB, _DEMOD_COUNT }; + dsp::FMDeemphasis deemp; + private: static int sampleRateChangeHandler(void* ctx, float sampleRate); @@ -49,6 +52,8 @@ private: std::string vfoName; float sampleRate; + float bandwidth; + float outputSampleRate; int blockSize; int _demod; }; \ No newline at end of file diff --git a/modules/recorder/src/main.cpp b/modules/recorder/src/main.cpp index 7c4f1757..950620ea 100644 --- a/modules/recorder/src/main.cpp +++ b/modules/recorder/src/main.cpp @@ -21,6 +21,8 @@ struct RecorderContext_t { std::string lastNameList; std::string selectedStreamName; int selectedStreamId; + uint64_t samplesWritten; + float sampleRate; }; void _writeWorker(RecorderContext_t* ctx) { @@ -34,6 +36,7 @@ void _writeWorker(RecorderContext_t* ctx) { sampleBuf[(i * 2) + 0] = floatBuf[i].l * 0x7FFF; sampleBuf[(i * 2) + 1] = floatBuf[i].r * 0x7FFF; } + ctx->samplesWritten += 1024; ctx->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); } delete[] floatBuf; @@ -60,6 +63,9 @@ MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name API = _API; RecorderContext_t* ctx = new RecorderContext_t; ctx->recording = false; + ctx->selectedStreamName = ""; + ctx->selectedStreamId = 0; + ctx->lastNameList = ""; ImGui::SetCurrentContext(imctx); return ctx; } @@ -78,14 +84,30 @@ MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { nameList += '\0'; } + if (nameList == "") { + ImGui::Text("No audio stream available"); + return; + } + if (ctx->lastNameList != nameList) { ctx->lastNameList = nameList; - + auto _nameIt = std::find(streamNames.begin(), streamNames.end(), ctx->selectedStreamName); + if (_nameIt == streamNames.end()) { + // TODO: verify if there even is a stream + ctx->selectedStreamId = 0; + ctx->selectedStreamName = streamNames[ctx->selectedStreamId]; + } + else { + ctx->selectedStreamId = std::distance(streamNames.begin(), _nameIt); + ctx->selectedStreamName = streamNames[ctx->selectedStreamId]; + } } ImGui::PushItemWidth(menuColumnWidth); if (!ctx->recording) { - ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str()); + if (ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str())) { + ctx->selectedStreamName = nameList[ctx->selectedStreamId]; + } } else { ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); @@ -99,8 +121,10 @@ MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { if (!ctx->recording) { if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { + ctx->samplesWritten = 0; + ctx->sampleRate = 48000; ctx->writer = new WavWriter("recordings/" + genFileName("audio_"), 16, 2, 48000); - ctx->stream = API->bindToStreamStereo("Radio", streamRemovedHandler, sampleRateChanged, ctx); + ctx->stream = API->bindToStreamStereo(ctx->selectedStreamName, streamRemovedHandler, sampleRateChanged, ctx); ctx->workerThread = std::thread(_writeWorker, ctx); ctx->recording = true; ctx->startTime = time(0); @@ -112,12 +136,13 @@ MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { ctx->stream->stopReader(); ctx->workerThread.join(); ctx->stream->clearReadStop(); - API->unbindFromStreamStereo("Radio", ctx->stream); + API->unbindFromStreamStereo(ctx->selectedStreamName, ctx->stream); ctx->writer->close(); delete ctx->writer; ctx->recording = false; } - time_t diff = time(0) - ctx->startTime; + uint64_t seconds = ctx->samplesWritten / (uint64_t)ctx->sampleRate; + time_t diff = seconds; tm *dtm = gmtime(&diff); ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); } diff --git a/src/dsp/demodulator.h b/src/dsp/demodulator.h index 059faedf..7d5f4353 100644 --- a/src/dsp/demodulator.h +++ b/src/dsp/demodulator.h @@ -260,6 +260,9 @@ namespace dsp { else if (mode == MODE_LSB) { lo.setFrequency(-_bandWidth / 2.0f); } + else if (mode == MODE_LSB) { + lo.setFrequency(0); + } } stream output; @@ -267,6 +270,7 @@ namespace dsp { enum { MODE_USB, MODE_LSB, + MODE_DSB, _MODE_COUNT }; @@ -309,4 +313,102 @@ namespace dsp { int _mode; bool running = false; }; + + + + + + // class CWDemod { + // public: + // CWDemod() { + + // } + + // void init(stream* input, float sampleRate, float bandWidth, int blockSize) { + // _blockSize = blockSize; + // _bandWidth = bandWidth; + // _mode = MODE_USB; + // output.init(blockSize * 2); + // lo.init(bandWidth / 2.0f, sampleRate, blockSize); + // mixer.init(input, &lo.output, blockSize); + // lo.start(); + // } + + // void start() { + // mixer.start(); + // _workerThread = std::thread(_worker, this); + // running = true; + // } + + // void stop() { + // mixer.stop(); + // mixer.output.stopReader(); + // output.stopWriter(); + // _workerThread.join(); + // mixer.output.clearReadStop(); + // output.clearWriteStop(); + // running = false; + // } + + // void setBlockSize(int blockSize) { + // if (running) { + // return; + // } + // _blockSize = blockSize; + // } + + // void setMode(int mode) { + // if (mode < 0 && mode >= _MODE_COUNT) { + // return; + // } + // _mode = mode; + // if (mode == MODE_USB) { + // lo.setFrequency(_bandWidth / 2.0f); + // } + // else if (mode == MODE_LSB) { + // lo.setFrequency(-_bandWidth / 2.0f); + // } + // } + + // stream output; + + // private: + // static void _worker(CWDemod* _this) { + // complex_t* inBuf = new complex_t[_this->_blockSize]; + // float* outBuf = new float[_this->_blockSize]; + + // float min, max, factor; + + // while (true) { + // if (_this->mixer.output.read(inBuf, _this->_blockSize) < 0) { break; }; + // min = INFINITY; + // max = -INFINITY; + // for (int i = 0; i < _this->_blockSize; i++) { + // outBuf[i] = inBuf[i].q; + // if (inBuf[i].q < min) { + // min = inBuf[i].q; + // } + // if (inBuf[i].q > max) { + // max = inBuf[i].q; + // } + // } + // factor = (max - min) / 2; + // for (int i = 0; i < _this->_blockSize; i++) { + // outBuf[i] /= factor; + // } + // if (_this->output.write(outBuf, _this->_blockSize) < 0) { break; }; + // } + + // delete[] inBuf; + // delete[] outBuf; + // } + + // std::thread _workerThread; + // SineSource lo; + // Multiplier mixer; + // int _blockSize; + // float _bandWidth; + // int _mode; + // bool running = false; + // }; }; \ No newline at end of file diff --git a/src/dsp/filter.h b/src/dsp/filter.h index 250404e2..eab22535 100644 --- a/src/dsp/filter.h +++ b/src/dsp/filter.h @@ -4,11 +4,12 @@ #include #include #include +#include #define GET_FROM_RIGHT_BUF(buffer, delayLine, delayLineSz, n) (((n) < 0) ? delayLine[(delayLineSz) + (n)] : buffer[(n)]) namespace dsp { - inline void BlackmanWindow(std::vector& taps, float sampleRate, float cutoff, float transWidth) { + inline void BlackmanWindow(std::vector& taps, float sampleRate, float cutoff, float transWidth, int addedTaps = 0) { taps.clear(); float fc = cutoff / sampleRate; @@ -16,7 +17,7 @@ namespace dsp { fc = 1.0f; } - int _M = 4.0f / (transWidth / sampleRate); + int _M = (4.0f / (transWidth / sampleRate)) + (float)addedTaps; if (_M < 4) { _M = 4; } @@ -377,4 +378,113 @@ namespace dsp { float* _taps; bool running; }; + + class FMDeemphasis { + public: + FMDeemphasis() { + + } + + FMDeemphasis(stream* input, int bufferSize, float tau, float sampleRate) : output(bufferSize * 2) { + _in = input; + _bufferSize = bufferSize; + bypass = false; + _tau = tau; + _sampleRate = sampleRate; + } + + void init(stream* input, int bufferSize, float tau, float sampleRate) { + output.init(bufferSize * 2); + _in = input; + _bufferSize = bufferSize; + bypass = false; + _tau = tau; + _sampleRate = sampleRate; + } + + void start() { + if (running) { + return; + } + _workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + _in->stopReader(); + output.stopWriter(); + _workerThread.join(); + _in->clearReadStop(); + output.clearWriteStop(); + running = false; + } + + void setBlockSize(int blockSize) { + if (running) { + return; + } + _bufferSize = blockSize; + output.setMaxLatency(blockSize * 2); + } + + void setSamplerate(float sampleRate) { + if (running) { + return; + } + _sampleRate = sampleRate; + } + + void setTau(float tau) { + if (running) { + return; + } + _tau = tau; + } + + stream output; + bool bypass; + + private: + static void _worker(FMDeemphasis* _this) { + float* inBuf = new float[_this->_bufferSize]; + float* outBuf = new float[_this->_bufferSize]; + int count = _this->_bufferSize; + float lastOut = 0.0f; + float dt = 1.0f / _this->_sampleRate; + float alpha = dt / (_this->_tau + dt); + + spdlog::warn("Deemp filter started: {0}, {1}", _this->_tau * 1000000.0, _this->_sampleRate); + + while (true) { + if (_this->_in->read(inBuf, count) < 0) { break; }; + if (_this->bypass) { + if (_this->output.write(inBuf, count) < 0) { break; }; + continue; + } + + if (isnan(lastOut)) { + lastOut = 0.0f; + } + outBuf[0] = (alpha * inBuf[0]) + ((1-alpha) * lastOut); + for (int i = 1; i < count; i++) { + outBuf[i] = (alpha * inBuf[i]) + ((1 - alpha) * outBuf[i - 1]); + } + lastOut = outBuf[count - 1]; + + if (_this->output.write(outBuf, count) < 0) { break; }; + } + delete[] inBuf; + delete[] outBuf; + } + + stream* _in; + int _bufferSize; + std::thread _workerThread; + bool running = false; + float _sampleRate; + float _tau; + }; }; \ No newline at end of file diff --git a/src/dsp/resampling.h b/src/dsp/resampling.h index 49978709..f5ce64bc 100644 --- a/src/dsp/resampling.h +++ b/src/dsp/resampling.h @@ -564,4 +564,212 @@ namespace dsp { int _blockSize; bool running = false; }; + + + + + + + + + + + + + + + + + class FloatPolyphaseFIRResampler { + public: + FloatPolyphaseFIRResampler() { + + } + + void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { + _input = in; + _outputSampleRate = outputSampleRate; + _inputSampleRate = inputSampleRate; + int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); + _interp = outputSampleRate / _gcd; + _decim = inputSampleRate / _gcd; + _blockSize = blockSize; + outputBlockSize = (blockSize * _interp) / _decim; + output.init(outputBlockSize * 2); + + float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + if (passBand > 0.0f && transWidth > 0.0f) { + dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + } + else { + dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); + } + } + + void start() { + if (running) { + return; + } + _workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + _input->stopReader(); + output.stopWriter(); + _workerThread.join(); + _input->clearReadStop(); + output.clearWriteStop(); + running = false; + } + + void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { + stop(); + _inputSampleRate = inputSampleRate; + int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); + _interp = _outputSampleRate / _gcd; + _decim = inputSampleRate / _gcd; + + float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + if (passBand > 0.0f && transWidth > 0.0f) { + dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + } + else { + dsp::BlackmanWindow(_taps,_outputSampleRate, cutoff, cutoff, _interp - 1); + } + + if (blockSize > 0) { + _blockSize = blockSize; + } + outputBlockSize = (blockSize * _interp) / _decim; + output.setMaxLatency(outputBlockSize * 2); + start(); + } + + void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { + stop(); + _outputSampleRate = outputSampleRate; + int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); + _interp = outputSampleRate / _gcd; + _decim = _inputSampleRate / _gcd; + outputBlockSize = (_blockSize * _interp) / _decim; + output.setMaxLatency(outputBlockSize * 2); + + float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + if (passBand > 0.0f && transWidth > 0.0f) { + dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + } + else { + dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); + } + + start(); + } + + void setFilterParams(float passBand, float transWidth) { + stop(); + dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + start(); + } + + void setBlockSize(int blockSize) { + stop(); + _blockSize = blockSize; + outputBlockSize = (_blockSize * _interp) / _decim; + output.setMaxLatency(outputBlockSize * 2); + start(); + } + + void setInput(stream* input) { + if (running) { + return; + } + _input = input; + } + + int getOutputBlockSize() { + return outputBlockSize; + } + + stream output; + + private: + static void _worker(FloatPolyphaseFIRResampler* _this) { + float* inBuf = new float[_this->_blockSize]; + float* outBuf = new float[_this->outputBlockSize]; + + int inCount = _this->_blockSize; + int outCount = _this->outputBlockSize; + + int interp = _this->_interp; + int decim = _this->_decim; + float correction = interp;//(float)sqrt((float)interp); + + int tapCount = _this->_taps.size(); + float* taps = new float[tapCount]; + for (int i = 0; i < tapCount; i++) { + taps[i] = _this->_taps[i] * correction; + } + + float* delayBuf = new float[tapCount]; + + float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; + int delaySize = tapCount * sizeof(float); + float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; + int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); + int inSize = inCount * sizeof(float); + + int afterInterp = inCount * interp; + int outIndex = 0; + + tapCount -= interp - 1; + + while (true) { + if (_this->_input->read(inBuf, inCount) < 0) { break; }; + + + for (int i = 0; i < outCount; i++) { + outBuf[i] = 0; + int filterId = (i * decim) % interp; + int inputId = (i * decim) / interp; + for (int j = 0; j < tapCount; j++) { + outBuf[i] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, inputId - j) * taps[j + filterId]; + } + } + + + + + + + if (tapCount > inCount) { + memmove(delayBuf, delayBufEnd, moveSize); + memcpy(delayBufEnd, delayStart, inSize); + } + else { + memcpy(delayBuf, delayStart, delaySize); + } + + if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; + } + delete[] inBuf; + delete[] outBuf; + delete[] delayBuf; + } + + std::thread _workerThread; + + stream* _input; + std::vector _taps; + int _interp; + int _decim; + int outputBlockSize; + float _outputSampleRate; + float _inputSampleRate; + int _blockSize; + bool running = false; + }; }; \ No newline at end of file diff --git a/src/frequency_select.cpp b/src/frequency_select.cpp index 424ef32b..2115a62c 100644 --- a/src/frequency_select.cpp +++ b/src/frequency_select.cpp @@ -141,7 +141,7 @@ void FrequencySelect::draw() { } } - long freq = 0; + uint64_t freq = 0; for (int i = 0; i < 12; i++) { freq += digits[i] * pow(10, 11 - i); } @@ -151,9 +151,9 @@ void FrequencySelect::draw() { ImGui::NewLine(); } -void FrequencySelect::setFrequency(long freq) { +void FrequencySelect::setFrequency(uint64_t freq) { int i = 11; - for (long f = freq; i >= 0; i--) { + for (uint64_t f = freq; i >= 0; i--) { digits[i] = f % 10; f -= digits[i]; f /= 10; diff --git a/src/frequency_select.h b/src/frequency_select.h index b96bbd31..ebbe9bae 100644 --- a/src/frequency_select.h +++ b/src/frequency_select.h @@ -1,15 +1,16 @@ #pragma once #include #include +#include class FrequencySelect { public: FrequencySelect(); void init(); void draw(); - void setFrequency(long freq); + void setFrequency(uint64_t freq); - long frequency; + uint64_t frequency; bool frequencyChanged = false; private: diff --git a/src/main.cpp b/src/main.cpp index 1ef2450f..8d62635f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,10 +21,21 @@ #include #endif +bool maximized = false; + static void glfw_error_callback(int error, const char* description) { spdlog::error("Glfw Error {0}: {1}", error, description); } +static void maximized_callback(GLFWwindow* window, int n) { + if (n == GLFW_TRUE) { + maximized = true; + } + else { + maximized = false; + } +} + int main() { #ifdef _WIN32 //FreeConsole(); @@ -32,6 +43,11 @@ int main() { spdlog::info("SDR++ v" VERSION_STR); + // Load config + spdlog::info("Loading config"); + config::load("config.json"); + config::startAutoSave(); + // Setup window glfwSetErrorCallback(glfw_error_callback); if (!glfwInit()) { @@ -43,14 +59,23 @@ int main() { glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac + int winWidth = config::config["windowSize"]["w"]; + int winHeight = config::config["windowSize"]["h"]; + maximized = config::config["maximized"]; // Create window with graphics context - GLFWwindow* window = glfwCreateWindow(1280, 720, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); + GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); if (window == NULL) return 1; glfwMakeContextCurrent(window); glfwSwapInterval(1); // Enable vsync + if (maximized) { + glfwMaximizeWindow(window); + } + + glfwSetWindowMaximizeCallback(window, maximized_callback); + // Load app icon GLFWimage icons[10]; icons[0].pixels = stbi_load("res/icons/sdrpp.png", &icons[0].width, &icons[0].height, 0, 4); @@ -94,11 +119,6 @@ int main() { ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init("#version 150"); - // Load config - spdlog::info("Loading config"); - config::load("config.json"); - config::startAutoSave(); - style::setDarkStyle(); spdlog::info("Loading icons"); @@ -114,6 +134,8 @@ int main() { spdlog::info("Ready."); + bool _maximized = maximized; + // Main loop while (!glfwWindowShouldClose(window)) { glfwPollEvents(); @@ -123,15 +145,31 @@ int main() { ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); - - + if (_maximized != maximized) { + _maximized = maximized; + config::config["maximized"]= _maximized; + config::configModified = true; + if (!maximized) { + glfwSetWindowSize(window, config::config["windowSize"]["w"], config::config["windowSize"]["h"]); + } + } - int wwidth, wheight; - glfwGetWindowSize(window, &wwidth, &wheight); - ImGui::SetNextWindowPos(ImVec2(0, 0)); - ImGui::SetNextWindowSize(ImVec2(wwidth, wheight)); - - drawWindow(); + int _winWidth, _winHeight; + glfwGetWindowSize(window, &_winWidth, &_winHeight); + + if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { + winWidth = _winWidth; + winHeight = _winHeight; + config::config["windowSize"]["w"] = winWidth; + config::config["windowSize"]["h"] = winHeight; + config::configModified = true; + } + + if (winWidth > 0 && winHeight > 0) { + ImGui::SetNextWindowPos(ImVec2(0, 0)); + ImGui::SetNextWindowSize(ImVec2(_winWidth, _winHeight)); + drawWindow(); + } // Rendering ImGui::Render(); diff --git a/src/main_window.cpp b/src/main_window.cpp index 4ae7d31e..3dacf205 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -41,7 +41,7 @@ dsp::NullSink sink; int devId = 0; int srId = 0; watcher bandplanId(0, true); -watcher freq(90500000L); +watcher freq(90500000Ui64); int demod = 1; watcher vfoFreq(92000000.0f); float dummyVolume = 1.0f; @@ -57,6 +57,11 @@ watcher bandPlanEnabled(true, false); bool showCredits = false; std::string audioStreamName = ""; std::string sourceName = ""; +int menuWidth = 300; +bool grabbingMenu = false; +int newWidth = 300; +bool showWaterfall = true; +int fftHeight = 300; void saveCurrentSource() { int i = 0; @@ -188,25 +193,23 @@ void windowInit() { } if (!settingsFound) { sampleRate = soapy.getSampleRate(); + sigPath.setSampleRate(sampleRate); } // Search for the first source in the list to have a config // If no pre-defined source, selected default device } - // Load last band plan configuration - - // TODO: Save/load config window size/fullscreen // Also add a loading screen - // And a module add/remove/change order menu - // get rid of watchers and use if() instead + // Adjustable "snap to grid" for each VFO + // Finish the recorder module // Add squelsh // Bandwidth ajustment // DSB / CW and RAW modes; - // Write a recorder - // Adjustable "snap to grid" for each VFO // Bring VFO to a visible place when changing sample rate if it's smaller - // Possibility to resize waterfall and menu // Have a proper root directory + + // And a module add/remove/change order menu + // get rid of watchers and use if() instead // Switch to double for all frequecies and bandwidth // Update UI settings @@ -265,6 +268,17 @@ void windowInit() { if (audioStreamName != "") { volume = &audio::streams[audioStreamName]->volume; } + + menuWidth = config::config["menuWidth"]; + newWidth = menuWidth; + + showWaterfall = config::config["showWaterfall"]; + if (!showWaterfall) { + wtf.hideWaterfall(); + } + + fftHeight = config::config["fftHeight"]; + wtf.setFFTHeight(fftHeight); } void setVFO(float freq) { @@ -409,6 +423,13 @@ void drawWindow() { wtf.bandplan = bandPlanEnabled.val ? &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]] : NULL; } + int _fftHeight = wtf.getFFTHeight(); + if (fftHeight != _fftHeight) { + fftHeight = _fftHeight; + config::config["fftHeight"] = fftHeight; + config::configModified = true; + } + ImVec2 vMin = ImGui::GetWindowContentRegionMin(); ImVec2 vMax = ImGui::GetWindowContentRegionMax(); @@ -466,10 +487,36 @@ void drawWindow() { showCredits = false; } - ImGui::Columns(3, "WindowColumns", false); + // Handle menu resize + float curY = ImGui::GetCursorPosY(); ImVec2 winSize = ImGui::GetWindowSize(); - ImGui::SetColumnWidth(0, 300); - ImGui::SetColumnWidth(1, winSize.x - 300 - 60); + ImVec2 mousePos = ImGui::GetMousePos(); + bool click = ImGui::IsMouseClicked(ImGuiMouseButton_Left); + bool down = ImGui::IsMouseDown(ImGuiMouseButton_Left); + if (grabbingMenu) { + newWidth = mousePos.x; + newWidth = std::clamp(newWidth, 250, winSize.x - 250); + ImGui::GetForegroundDrawList()->AddLine(ImVec2(newWidth, curY), ImVec2(newWidth, winSize.y - 10), ImGui::GetColorU32(ImGuiCol_SeparatorActive)); + } + if (mousePos.x >= newWidth - 2 && mousePos.x <= newWidth + 2 && mousePos.y > curY) { + ImGui::SetMouseCursor(ImGuiMouseCursor_ResizeEW); + if (click) { + grabbingMenu = true; + } + } + else { + ImGui::SetMouseCursor(ImGuiMouseCursor_Arrow); + } + if(!down && grabbingMenu) { + grabbingMenu = false; + menuWidth = newWidth; + config::config["menuWidth"] = menuWidth; + config::configModified = true; + } + + ImGui::Columns(3, "WindowColumns", false); + ImGui::SetColumnWidth(0, menuWidth); + ImGui::SetColumnWidth(1, winSize.x - menuWidth - 60); ImGui::SetColumnWidth(2, 60); // Left Column @@ -668,7 +715,10 @@ void drawWindow() { ImGui::Spacing(); } - if (ImGui::CollapsingHeader("Display")) { + if (ImGui::CollapsingHeader("Display", ImGuiTreeNodeFlags_DefaultOpen)) { + if (ImGui::Checkbox("Show waterfall", &showWaterfall)) { + showWaterfall ? wtf.showWaterfall() : wtf.hideWaterfall(); + } ImGui::Spacing(); } @@ -693,6 +743,7 @@ void drawWindow() { ImGui::EndChild(); + ImGui::NextColumn(); ImGui::BeginChild("WaterfallControls"); @@ -735,6 +786,7 @@ void drawWindow() { wtf.setWaterfallMin(fftMin); wtf.setWaterfallMax(fftMax); + ImGui::End(); if (showCredits) { diff --git a/src/vfo_manager.cpp b/src/vfo_manager.cpp index 498eb9fe..fc23a34a 100644 --- a/src/vfo_manager.cpp +++ b/src/vfo_manager.cpp @@ -58,7 +58,9 @@ namespace vfoman { if (vfos.find(name) == vfos.end()) { return; } - vfos[name].dspVFO->setOutputSampleRate(sampleRate, bandwidth); + VFO_t vfo = vfos[name]; + vfo.dspVFO->setOutputSampleRate(sampleRate, bandwidth); + vfo.wtfVFO->setBandwidth(bandwidth); } void setReference(std::string name, int ref){ diff --git a/src/waterfall.cpp b/src/waterfall.cpp index 4cf9e376..3057cf31 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -83,7 +83,9 @@ namespace ImGui { fftMax = 0.0f; waterfallMin = -70.0f; waterfallMax = 0.0f; - fftHeight = 250; + FFTAreaHeight = 300; + newFFTAreaHeight = FFTAreaHeight; + fftHeight = FFTAreaHeight - 50; dataWidth = 600; lastWidgetPos.x = 0; lastWidgetPos.y = 0; @@ -113,8 +115,8 @@ namespace ImGui { // Vertical scale for (float line = startLine; line > fftMin; line -= vRange) { float yPos = widgetPos.y + fftHeight + 10 - ((line - fftMin) * scaleFactor); - window->DrawList->AddLine(ImVec2(widgetPos.x + 50, roundf(yPos)), - ImVec2(widgetPos.x + dataWidth + 50, roundf(yPos)), + window->DrawList->AddLine(ImVec2(roundf(widgetPos.x + 50), roundf(yPos)), + ImVec2(roundf(widgetPos.x + dataWidth + 50), roundf(yPos)), IM_COL32(50, 50, 50, 255), 1.0f); sprintf(buf, "%d", (int)line); ImVec2 txtSz = ImGui::CalcTextSize(buf); @@ -263,6 +265,9 @@ namespace ImGui { } void WaterFall::updateWaterfallFb() { + if (!waterfallVisible) { + return; + } float offsetRatio = viewOffset / (wholeBandwidth / 2.0f); int drawDataSize; int drawDataStart; @@ -357,14 +362,31 @@ namespace ImGui { } void WaterFall::onResize() { + // return if widget is too small + if (widgetSize.x < 100 || widgetSize.y < 100) { + return; + } + + if (waterfallVisible) { + FFTAreaHeight = std::min(FFTAreaHeight, widgetSize.y - 50); + fftHeight = FFTAreaHeight - 50; + waterfallHeight = widgetSize.y - fftHeight - 52; + } + else { + fftHeight = widgetSize.y - 50; + } dataWidth = widgetSize.x - 60.0f; - waterfallHeight = widgetSize.y - fftHeight - 52; delete[] latestFFT; - delete[] waterfallFb; + + if (waterfallVisible) { + delete[] waterfallFb; + } latestFFT = new float[dataWidth]; - waterfallFb = new uint32_t[dataWidth * waterfallHeight]; - memset(waterfallFb, 0, dataWidth * waterfallHeight * sizeof(uint32_t)); + if (waterfallVisible) { + waterfallFb = new uint32_t[dataWidth * waterfallHeight]; + memset(waterfallFb, 0, dataWidth * waterfallHeight * sizeof(uint32_t)); + } for (int i = 0; i < dataWidth; i++) { latestFFT[i] = -1000.0f; // Hide everything } @@ -389,15 +411,8 @@ namespace ImGui { buf_mtx.lock(); window = GetCurrentWindow(); - // Fix for weird ImGui bug - ImVec2 tmpWidgetEndPos = ImGui::GetWindowContentRegionMax(); - if (tmpWidgetEndPos.x < 100 || tmpWidgetEndPos.y < fftHeight + 100) { - buf_mtx.unlock(); - return; - } - widgetPos = ImGui::GetWindowContentRegionMin(); - widgetEndPos = tmpWidgetEndPos; + widgetEndPos = ImGui::GetWindowContentRegionMax(); widgetPos.x += window->Pos.x; widgetPos.y += window->Pos.y; widgetEndPos.x += window->Pos.x - 4; // Padding @@ -422,12 +437,44 @@ namespace ImGui { processInputs(); drawFFT(); - drawWaterfall(); + if (waterfallVisible) { + drawWaterfall(); + } drawVFOs(); if (bandplan != NULL) { drawBandPlan(); } + if (!waterfallVisible) { + buf_mtx.unlock(); + return; + } + + // Handle fft resize + ImVec2 winSize = ImGui::GetWindowSize(); + ImVec2 mousePos = ImGui::GetMousePos(); + mousePos.x -= widgetPos.x; + mousePos.y -= widgetPos.y; + bool click = ImGui::IsMouseClicked(ImGuiMouseButton_Left); + bool down = ImGui::IsMouseDown(ImGuiMouseButton_Left); + if (draggingFW) { + newFFTAreaHeight = mousePos.y; + newFFTAreaHeight = std::clamp(newFFTAreaHeight, 150, widgetSize.y - 50); + ImGui::GetForegroundDrawList()->AddLine(ImVec2(widgetPos.x, newFFTAreaHeight + widgetPos.y), ImVec2(widgetEndPos.x, newFFTAreaHeight + widgetPos.y), + ImGui::GetColorU32(ImGuiCol_SeparatorActive)); + } + if (mousePos.y >= newFFTAreaHeight - 2 && mousePos.y <= newFFTAreaHeight + 2 && mousePos.x > 0 && mousePos.x < widgetSize.x) { + ImGui::SetMouseCursor(ImGuiMouseCursor_ResizeNS); + if (click) { + draggingFW = true; + } + } + if(!down && draggingFW) { + draggingFW = false; + FFTAreaHeight = newFFTAreaHeight; + onResize(); + } + buf_mtx.unlock(); } @@ -443,15 +490,18 @@ namespace ImGui { rawFFTs.resize(waterfallHeight); } - memmove(&waterfallFb[dataWidth], waterfallFb, dataWidth * (waterfallHeight - 1) * sizeof(uint32_t)); - float pixel; - float dataRange = waterfallMax - waterfallMin; - for (int j = 0; j < dataWidth; j++) { - pixel = (std::clamp(latestFFT[j], waterfallMin, waterfallMax) - waterfallMin) / dataRange; - int id = (int)(pixel * (WATERFALL_RESOLUTION - 1)); - waterfallFb[j] = waterfallPallet[id]; + if (waterfallVisible) { + memmove(&waterfallFb[dataWidth], waterfallFb, dataWidth * (waterfallHeight - 1) * sizeof(uint32_t)); + float pixel; + float dataRange = waterfallMax - waterfallMin; + for (int j = 0; j < dataWidth; j++) { + pixel = (std::clamp(latestFFT[j], waterfallMin, waterfallMax) - waterfallMin) / dataRange; + int id = (int)(pixel * (WATERFALL_RESOLUTION - 1)); + waterfallFb[j] = waterfallPallet[id]; + } + waterfallUpdate = true; } - waterfallUpdate = true; + buf_mtx.unlock(); } @@ -710,5 +760,24 @@ namespace ImGui { window->DrawList->AddLine(lineMin, lineMax, selected ? IM_COL32(255, 0, 0, 255) : IM_COL32(255, 255, 0, 255)); } }; + + void WaterFall::showWaterfall() { + waterfallVisible = true; + onResize(); + } + + void WaterFall::hideWaterfall() { + waterfallVisible = false; + onResize(); + } + + void WaterFall::setFFTHeight(int height) { + FFTAreaHeight = height; + onResize(); + } + + int WaterFall::getFFTHeight() { + return FFTAreaHeight; + } }; diff --git a/src/waterfall.h b/src/waterfall.h index defee9f4..ef7e0051 100644 --- a/src/waterfall.h +++ b/src/waterfall.h @@ -87,6 +87,12 @@ namespace ImGui { void selectFirstVFO(); + void showWaterfall(); + void hideWaterfall(); + + void setFFTHeight(int height); + int getFFTHeight(); + bool centerFreqMoved = false; bool vfoFreqChanged = false; bool bandplanEnabled = false; @@ -175,5 +181,10 @@ namespace ImGui { uint32_t* waterfallFb; + bool draggingFW = false; + int FFTAreaHeight; + int newFFTAreaHeight; + + bool waterfallVisible = true; }; }; \ No newline at end of file From aa2caa67ad5fadadd87a6cd90c37223353ca48d1 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 21 Aug 2020 15:34:50 +0200 Subject: [PATCH 022/127] New stuff ++ --- modules/radio/src/main.cpp | 79 +++++-- modules/radio/src/path.cpp | 118 ++++++++--- modules/radio/src/path.h | 17 +- modules/recorder/src/main.cpp | 2 +- res/icons/menu.png | Bin 0 -> 1813 bytes res/icons/menu_raw.png | Bin 0 -> 1710 bytes src/audio.cpp | 4 - src/dsp/demodulator.h | 10 + src/dsp/filter.h | 5 +- src/frequency_select.cpp | 5 +- src/icons.cpp | 6 +- src/icons.h | 3 +- src/io/audio.h | 3 - src/main.cpp | 21 ++ src/main_window.cpp | 381 ++++++++++++++++++---------------- src/waterfall.cpp | 5 +- 16 files changed, 407 insertions(+), 252 deletions(-) create mode 100644 res/icons/menu.png create mode 100644 res/icons/menu_raw.png diff --git a/modules/radio/src/main.cpp b/modules/radio/src/main.cpp index 29caf395..61e091c9 100644 --- a/modules/radio/src/main.cpp +++ b/modules/radio/src/main.cpp @@ -3,13 +3,18 @@ #include #include -#define CONCAT(a, b) ((std::string(a) + b).c_str()) +#define CONCAT(a, b) ((std::string(a) + b).c_str()) +#define DEEMP_LIST "50µS\00075µS\000none\000" mod::API_t* API; struct RadioContext_t { std::string name; int demod = 1; + int deemp = 0; + int bandWidth; + int bandWidthMin; + int bandWidthMax; SigPath sigPath; }; @@ -17,6 +22,9 @@ MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name API = _API; RadioContext_t* ctx = new RadioContext_t; ctx->name = _name; + ctx->bandWidth = 200000; + ctx->bandWidthMin = 100000; + ctx->bandWidthMax = 200000; ctx->sigPath.init(_name, 200000, 1000, API->registerVFO(_name, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000)); ctx->sigPath.start(); ImGui::SetCurrentContext(imctx); @@ -28,41 +36,63 @@ MOD_EXPORT void _NEW_FRAME_(RadioContext_t* ctx) { } MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + ImGui::BeginGroup(); + // TODO: Change VFO ref in signal path + ImGui::Columns(4, CONCAT("RadioModeColumns##_", ctx->name), false); if (ImGui::RadioButton(CONCAT("NFM##_", ctx->name), ctx->demod == 0) && ctx->demod != 0) { - ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM); - ctx->demod = 0; + ctx->demod = 0; + ctx->bandWidth = 16000; + ctx->bandWidthMin = 8000; + ctx->bandWidthMax = 16000; + ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } - if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { - ctx->sigPath.setDemodulator(SigPath::DEMOD_FM); - ctx->demod = 1; + if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { + ctx->demod = 1; + ctx->bandWidth = 200000; + ctx->bandWidthMin = 100000; + ctx->bandWidthMax = 200000; + ctx->sigPath.setDemodulator(SigPath::DEMOD_FM, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } ImGui::NextColumn(); - if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { - ctx->sigPath.setDemodulator(SigPath::DEMOD_AM); - ctx->demod = 2; + if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { + ctx->demod = 2; + ctx->bandWidth = 12500; + ctx->bandWidthMin = 6250; + ctx->bandWidthMax = 12500; + ctx->sigPath.setDemodulator(SigPath::DEMOD_AM, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } - if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { - ctx->sigPath.setDemodulator(SigPath::DEMOD_DSB); - ctx->demod = 3; + if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { + ctx->demod = 3; + ctx->bandWidth = 6000; + ctx->bandWidthMin = 3000; + ctx->bandWidthMax = 6000; + ctx->sigPath.setDemodulator(SigPath::DEMOD_DSB, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } ImGui::NextColumn(); - if (ImGui::RadioButton(CONCAT("USB##_", ctx->name), ctx->demod == 4) && ctx->demod != 4) { - ctx->sigPath.setDemodulator(SigPath::DEMOD_USB); - ctx->demod = 4; + if (ImGui::RadioButton(CONCAT("USB##_", ctx->name), ctx->demod == 4) && ctx->demod != 4) { + ctx->demod = 4; + ctx->bandWidth = 3000; + ctx->bandWidthMin = 1500; + ctx->bandWidthMax = 3000; + ctx->sigPath.setDemodulator(SigPath::DEMOD_USB, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_LOWER); } if (ImGui::RadioButton(CONCAT("CW##_", ctx->name), ctx->demod == 5) && ctx->demod != 5) { ctx->demod = 5; }; ImGui::NextColumn(); if (ImGui::RadioButton(CONCAT("LSB##_", ctx->name), ctx->demod == 6) && ctx->demod != 6) { - ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB); ctx->demod = 6; + ctx->bandWidth = 3000; + ctx->bandWidthMin = 1500; + ctx->bandWidthMax = 3000; + ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_UPPER); } if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { ctx->demod = 7; }; @@ -70,7 +100,22 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ImGui::EndGroup(); - ImGui::Checkbox(CONCAT("Deemphasis##_", ctx->name), &ctx->sigPath.deemp.bypass); + ImGui::Text("WFM Deemphasis"); + ImGui::SameLine(); + ImGui::PushItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); + if (ImGui::Combo(CONCAT("##_deemp_select_", ctx->name), &ctx->deemp, DEEMP_LIST)) { + ctx->sigPath.setDeemphasis(ctx->deemp); + } + ImGui::PopItemWidth(); + + ImGui::Text("Bandwidth"); + ImGui::SameLine(); + ImGui::PushItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); + if (ImGui::InputInt(CONCAT("##_bw_select_", ctx->name), &ctx->bandWidth, 100, 1000)) { + ctx->bandWidth = std::clamp(ctx->bandWidth, ctx->bandWidthMin, ctx->bandWidthMax); + ctx->sigPath.setBandwidth(ctx->bandWidth); + } + ImGui::PopItemWidth(); } MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index 2dbb99b2..4338980b 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -10,7 +10,6 @@ int SigPath::sampleRateChangeHandler(void* ctx, float sampleRate) { _this->audioResamp.stop(); _this->deemp.stop(); float bw = std::min(_this->bandwidth, sampleRate / 2.0f); - spdlog::warn("New bandwidth: {0}", bw); _this->audioResamp.setOutputSampleRate(sampleRate, bw, bw); _this->deemp.setBlockSize(_this->audioResamp.getOutputBlockSize()); _this->deemp.setSamplerate(sampleRate); @@ -25,6 +24,7 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: this->vfoName = vfoName; _demod = DEMOD_FM; + _deemp = DEEMP_50US; bandwidth = 200000; // TODO: Set default VFO options @@ -38,17 +38,17 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: outputSampleRate = API->registerMonoStream(&deemp.output, vfoName, vfoName, sampleRateChangeHandler, this); API->setBlockSize(vfoName, audioResamp.getOutputBlockSize()); - setDemodulator(_demod); + setDemodulator(_demod, bandwidth); } void SigPath::setSampleRate(float sampleRate) { this->sampleRate = sampleRate; // Reset the demodulator and audio systems - setDemodulator(_demod); + setDemodulator(_demod, bandwidth); } -void SigPath::setDemodulator(int demId) { +void SigPath::setDemodulator(int demId, float bandWidth) { if (demId < 0 || demId >= _DEMOD_COUNT) { return; } @@ -56,6 +56,8 @@ void SigPath::setDemodulator(int demId) { audioResamp.stop(); deemp.stop(); + bandwidth = bandWidth; + // Stop current demodulator if (_demod == DEMOD_FM) { demod.stop(); @@ -72,76 +74,80 @@ void SigPath::setDemodulator(int demId) { else if (_demod == DEMOD_LSB) { ssbDemod.stop(); } + else if (_demod == DEMOD_DSB) { + ssbDemod.stop(); + } + else { + spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (stop)"); + } _demod = demId; // Set input of the audio resampler + // TODO: Set bandwidth from argument if (demId == DEMOD_FM) { - API->setVFOSampleRate(vfoName, 200000, 200000); - bandwidth = 15000; + API->setVFOSampleRate(vfoName, 200000, bandwidth); demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); demod.setSampleRate(200000); - demod.setDeviation(100000); + demod.setDeviation(bandwidth / 2.0f); audioResamp.setInput(&demod.output); - float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); - deemp.bypass = false; + deemp.bypass = (_deemp == DEEMP_NONE); demod.start(); } if (demId == DEMOD_NFM) { - API->setVFOSampleRate(vfoName, 16000, 16000); - bandwidth = 8000; + API->setVFOSampleRate(vfoName, 16000, bandwidth); demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); demod.setSampleRate(16000); - demod.setDeviation(8000); + demod.setDeviation(bandwidth / 2.0f); audioResamp.setInput(&demod.output); - float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(16000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); deemp.bypass = true; demod.start(); } else if (demId == DEMOD_AM) { - API->setVFOSampleRate(vfoName, 12500, 12500); - bandwidth = 6250; + API->setVFOSampleRate(vfoName, 12500, bandwidth); amDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); audioResamp.setInput(&amDemod.output); - float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); deemp.bypass = true; amDemod.start(); } else if (demId == DEMOD_USB) { - API->setVFOSampleRate(vfoName, 6000, 3000); - bandwidth = 3000; + API->setVFOSampleRate(vfoName, 6000, bandwidth); ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); ssbDemod.setMode(dsp::SSBDemod::MODE_USB); audioResamp.setInput(&ssbDemod.output); - float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); deemp.bypass = true; ssbDemod.start(); } else if (demId == DEMOD_LSB) { - API->setVFOSampleRate(vfoName, 6000, 3000); - bandwidth = 3000; + API->setVFOSampleRate(vfoName, 6000, bandwidth); ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); audioResamp.setInput(&ssbDemod.output); - float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); deemp.bypass = true; ssbDemod.start(); } else if (demId == DEMOD_DSB) { - API->setVFOSampleRate(vfoName, 6000, 6000); - bandwidth = 3000; + API->setVFOSampleRate(vfoName, 6000, bandwidth); ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); ssbDemod.setMode(dsp::SSBDemod::MODE_DSB); audioResamp.setInput(&ssbDemod.output); - float audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); deemp.bypass = true; ssbDemod.start(); } + else { + spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (start)"); + } deemp.setBlockSize(audioResamp.getOutputBlockSize()); @@ -150,7 +156,67 @@ void SigPath::setDemodulator(int demId) { } void SigPath::updateBlockSize() { - setDemodulator(_demod); + setDemodulator(_demod, bandwidth); +} + +void SigPath::setDeemphasis(int deemph) { + _deemp = deemph; + deemp.stop(); + if (_deemp == DEEMP_NONE) { + deemp.bypass = true; + } + else if (_deemp == DEEMP_50US) { + deemp.bypass = false; + deemp.setTau(50e-6); + } + else if (_deemp == DEEMP_75US) { + deemp.bypass = false; + deemp.setTau(75e-6); + } + deemp.start(); +} + +void SigPath::setBandwidth(float bandWidth) { + bandwidth = bandWidth; + API->setVFOBandwidth(vfoName, bandwidth); + if (_demod == DEMOD_FM) { + demod.stop(); + demod.setDeviation(bandwidth / 2.0f); + demod.start(); + } + else if (_demod == DEMOD_NFM) { + demod.stop(); + demod.setDeviation(bandwidth / 2.0f); + demod.start(); + } + else if (_demod == DEMOD_AM) { + // Notbing to change + } + else if (_demod == DEMOD_USB) { + ssbDemod.stop(); + ssbDemod.setBandwidth(bandwidth); + ssbDemod.start(); + } + else if (_demod == DEMOD_LSB) { + ssbDemod.stop(); + ssbDemod.setBandwidth(bandwidth); + ssbDemod.start(); + } + else if (_demod == DEMOD_DSB) { + ssbDemod.stop(); + ssbDemod.setBandwidth(bandwidth); + ssbDemod.start(); + } + else { + spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setBandwidth"); + } + float _audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + if (audioBw != _audioBw) { + audioBw = _audioBw; + audioResamp.stop(); + audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.start(); + } } void SigPath::start() { diff --git a/modules/radio/src/path.h b/modules/radio/src/path.h index f28f32e2..cac98247 100644 --- a/modules/radio/src/path.h +++ b/modules/radio/src/path.h @@ -17,12 +17,11 @@ public: void init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input); void start(); void setSampleRate(float sampleRate); - void setVFOFrequency(uint64_t frequency); - void updateBlockSize(); - - void setDemodulator(int demod); + void setDemodulator(int demod, float bandWidth); + void setDeemphasis(int deemph); + void setBandwidth(float bandWidth); enum { DEMOD_FM, @@ -34,6 +33,14 @@ public: _DEMOD_COUNT }; + enum { + DEEMP_50US, + DEEMP_75US, + DEEMP_NONE, + _DEEMP_COUNT + }; + + dsp::FMDeemphasis deemp; private: @@ -56,4 +63,6 @@ private: float outputSampleRate; int blockSize; int _demod; + int _deemp; + float audioBw; }; \ No newline at end of file diff --git a/modules/recorder/src/main.cpp b/modules/recorder/src/main.cpp index 950620ea..3bd4655b 100644 --- a/modules/recorder/src/main.cpp +++ b/modules/recorder/src/main.cpp @@ -106,7 +106,7 @@ MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { ImGui::PushItemWidth(menuColumnWidth); if (!ctx->recording) { if (ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str())) { - ctx->selectedStreamName = nameList[ctx->selectedStreamId]; + ctx->selectedStreamName = streamNames[ctx->selectedStreamId]; } } else { diff --git a/res/icons/menu.png b/res/icons/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..317cfdee929bc626c40a7b17f544b3a7461c2a69 GIT binary patch literal 1813 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+U?s&R5hE&XXdvoK&+YSP* z2ct!OjQ%@t%6mDeg%=-q-S?pS^Qvdh*?}5H3TUX0xXk=x-|Jm=m!%u3qqFxeH{WpG z(6%8r?lN=3ZL8(%8}844$;fcvzd8ehf(HYG!vqF~1_ee221j7%HnA`;uy8Uka0oFl z2&fD-1q+g^7;ewG%*^m(@3k)s``+(b_mcC#*|kq?Z03p&Wq%PDJIB8;Z2RHE&ye@t z*0y0U%Yov(%h(yVm-_K1*y|6~7{%-J3!qee4w#nz#AR18+%J#4{)Oeivuj0i^UiS( z^`wl~Pwqe*(}SJx{5^koCiWLIRtvY3H^?=T269?xHq!oa}h?CIhdQW5v|^1)7KMu8&^&*y)+=gxTM z(9H`0qRn3zf!c-?X!!q`LEn^r&FYK?Ybq0BU76F*GQZZ6vdET;2)}qB^7DaRU2NxO zv0n={DY#~{Vcnv}&CeQ3MS16pY9T7bXpt7~e;JK2+9lZ07#nJtpB6DjGc)&p{rQJ6 X-Qu=LY4f5xAX_|L{an^LB{Ts5%F7nA literal 0 HcmV?d00001 diff --git a/src/audio.cpp b/src/audio.cpp index 65eb3c45..18acf105 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -77,16 +77,12 @@ namespace audio { return; } if (astr->type == STREAM_TYPE_MONO) { - spdlog::warn("=> Stopping monoDynSplit"); astr->monoDynSplit->stop(); } else { - spdlog::warn("=> Stopping stereoDynSplit"); astr->stereoDynSplit->stop(); } - spdlog::warn("=> Stopping audio"); astr->audio->stop(); - spdlog::warn("=> Done"); astr->running = false; } diff --git a/src/dsp/demodulator.h b/src/dsp/demodulator.h index 7d5f4353..5c865590 100644 --- a/src/dsp/demodulator.h +++ b/src/dsp/demodulator.h @@ -265,6 +265,16 @@ namespace dsp { } } + void setBandwidth(float bandwidth) { + _bandWidth = bandwidth; + if (_mode == MODE_USB) { + lo.setFrequency(_bandWidth / 2.0f); + } + else if (_mode == MODE_LSB) { + lo.setFrequency(-_bandWidth / 2.0f); + } + } + stream output; enum { diff --git a/src/dsp/filter.h b/src/dsp/filter.h index eab22535..52eda276 100644 --- a/src/dsp/filter.h +++ b/src/dsp/filter.h @@ -25,8 +25,9 @@ namespace dsp { if (_M % 2 == 0) { _M++; } float M = _M; float sum = 0.0f; + float val; for (int i = 0; i < _M; i++) { - float val = (sin(2.0f * M_PI * fc * ((float)i - (M / 2))) / ((float)i - (M / 2))) * (0.42f - (0.5f * cos(2.0f * M_PI / M)) + (0.8f * cos(4.0f * M_PI / M))); + val = (sin(2.0f * M_PI * fc * ((float)i - (M / 2))) / ((float)i - (M / 2))) * (0.42f - (0.5f * cos(2.0f * M_PI / M)) + (0.8f * cos(4.0f * M_PI / M))); taps.push_back(val); sum += val; } @@ -456,8 +457,6 @@ namespace dsp { float dt = 1.0f / _this->_sampleRate; float alpha = dt / (_this->_tau + dt); - spdlog::warn("Deemp filter started: {0}, {1}", _this->_tau * 1000000.0, _this->_sampleRate); - while (true) { if (_this->_in->read(inBuf, count) < 0) { break; }; if (_this->bypass) { diff --git a/src/frequency_select.cpp b/src/frequency_select.cpp index 2115a62c..fbbc3c4f 100644 --- a/src/frequency_select.cpp +++ b/src/frequency_select.cpp @@ -67,9 +67,10 @@ void FrequencySelect::draw() { window = ImGui::GetCurrentWindow(); widgetPos = ImGui::GetWindowContentRegionMin(); widgetEndPos = ImGui::GetWindowContentRegionMax(); - widgetPos.x += window->Pos.x + 255; + ImVec2 cursorPos = ImGui::GetCursorPos(); + widgetPos.x += window->Pos.x + cursorPos.x; widgetPos.y += window->Pos.y - 3; - widgetEndPos.x += window->Pos.x + 255; + widgetEndPos.x += window->Pos.x + cursorPos.x; widgetEndPos.y += window->Pos.y - 3; widgetSize = ImVec2(widgetEndPos.x - widgetPos.x, widgetEndPos.y - widgetPos.y); diff --git a/src/icons.cpp b/src/icons.cpp index 8d60fd6a..d1a93520 100644 --- a/src/icons.cpp +++ b/src/icons.cpp @@ -7,8 +7,7 @@ namespace icons { ImTextureID LOGO; ImTextureID PLAY; ImTextureID STOP; - ImTextureID PLAY_RAW; - ImTextureID STOP_RAW; + ImTextureID MENU; GLuint loadTexture(char* path) { int w,h,n; @@ -28,7 +27,6 @@ namespace icons { LOGO = (ImTextureID)loadTexture("res/icons/sdrpp.png"); PLAY = (ImTextureID)loadTexture("res/icons/play.png"); STOP = (ImTextureID)loadTexture("res/icons/stop.png"); - PLAY_RAW = (ImTextureID)loadTexture("res/icons/play_raw.png"); - STOP_RAW = (ImTextureID)loadTexture("res/icons/stop_raw.png"); + MENU = (ImTextureID)loadTexture("res/icons/menu.png"); } } \ No newline at end of file diff --git a/src/icons.h b/src/icons.h index 92dca23d..2f886d23 100644 --- a/src/icons.h +++ b/src/icons.h @@ -7,8 +7,7 @@ namespace icons { extern ImTextureID LOGO; extern ImTextureID PLAY; extern ImTextureID STOP; - extern ImTextureID PLAY_RAW; - extern ImTextureID STOP_RAW; + extern ImTextureID MENU; GLuint loadTexture(char* path); void load(); diff --git a/src/io/audio.h b/src/io/audio.h index d6c520ff..6527e45f 100644 --- a/src/io/audio.h +++ b/src/io/audio.h @@ -187,11 +187,8 @@ namespace io { else { _stereoInput->stopReader(); } - spdlog::warn("==> Pa_StopStream"); Pa_StopStream(stream); - spdlog::warn("==> Pa_CloseStream"); Pa_CloseStream(stream); - spdlog::warn("==> Done"); if (streamType == MONO) { _monoInput->clearReadStop(); } diff --git a/src/main.cpp b/src/main.cpp index 8d62635f..a77d9c1d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,6 +22,7 @@ #endif bool maximized = false; +bool fullScreen = false; static void glfw_error_callback(int error, const char* description) { spdlog::error("Glfw Error {0}: {1}", error, description); @@ -64,6 +65,7 @@ int main() { maximized = config::config["maximized"]; // Create window with graphics context + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); if (window == NULL) return 1; @@ -135,6 +137,7 @@ int main() { spdlog::info("Ready."); bool _maximized = maximized; + int fsWidth, fsHeight, fsPosX, fsPosY; // Main loop while (!glfwWindowShouldClose(window)) { @@ -154,9 +157,27 @@ int main() { } } + + int _winWidth, _winHeight; glfwGetWindowSize(window, &_winWidth, &_winHeight); + if (ImGui::IsKeyPressed(GLFW_KEY_F11)) { + fullScreen = !fullScreen; + if (fullScreen) { + spdlog::info("Fullscreen: ON"); + fsWidth = _winWidth; + fsHeight = _winHeight; + glfwGetWindowPos(window, &fsPosX, &fsPosY); + const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, 0); + } + else { + spdlog::info("Fullscreen: OFF"); + glfwSetWindowMonitor(window, nullptr, fsPosX, fsPosY, fsWidth, fsHeight, 0); + } + } + if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { winWidth = _winWidth; winHeight = _winHeight; diff --git a/src/main_window.cpp b/src/main_window.cpp index 3dacf205..63d8f601 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -62,6 +62,7 @@ bool grabbingMenu = false; int newWidth = 300; bool showWaterfall = true; int fftHeight = 300; +bool showMenu = true; void saveCurrentSource() { int i = 0; @@ -227,7 +228,6 @@ void windowInit() { auto _bandplanIt = bandplan::bandplans.find(bandPlanName); if (_bandplanIt != bandplan::bandplans.end()) { bandplanId.val = std::distance(bandplan::bandplans.begin(), bandplan::bandplans.find(bandPlanName)); - spdlog::warn("{0} => {1}", bandplanId.val, bandPlanName); if (bandPlanEnabled.val) { wtf.bandplan = &bandplan::bandplans[bandPlanName]; @@ -444,6 +444,12 @@ void drawWindow() { } // To Bar + if (ImGui::ImageButton(icons::MENU, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0)) { + showMenu = !showMenu; + } + + ImGui::SameLine(); + if (playing) { if (ImGui::ImageButton(icons::STOP, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0)) { soapy.stop(); @@ -465,6 +471,8 @@ void drawWindow() { if (ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, "")) { if (audioStreamName != "") { audio::streams[audioStreamName]->audio->setVolume(*volume); + config::config["audio"][audioStreamName]["volume"] = *volume; + config::configModified = true; } } @@ -514,224 +522,229 @@ void drawWindow() { config::configModified = true; } - ImGui::Columns(3, "WindowColumns", false); - ImGui::SetColumnWidth(0, menuWidth); - ImGui::SetColumnWidth(1, winSize.x - menuWidth - 60); - ImGui::SetColumnWidth(2, 60); - // Left Column - ImGui::BeginChild("Left Column"); - float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - if (ImGui::CollapsingHeader("Source", ImGuiTreeNodeFlags_DefaultOpen)) { - if (playing) { style::beginDisabled(); }; + if (showMenu) { + ImGui::Columns(3, "WindowColumns", false); + ImGui::SetColumnWidth(0, menuWidth); + ImGui::SetColumnWidth(1, winSize.x - menuWidth - 60); + ImGui::SetColumnWidth(2, 60); + ImGui::BeginChild("Left Column"); + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - ImGui::PushItemWidth(menuColumnWidth); - if (ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str())) { - spdlog::info("Changed input device: {0}", devId); - sourceName = soapy.devNameList[devId]; - soapy.setDevice(soapy.devList[devId]); + if (ImGui::CollapsingHeader("Source", ImGuiTreeNodeFlags_DefaultOpen)) { + if (playing) { style::beginDisabled(); }; - if (config::config["sourceSettings"].contains(sourceName)) { - loadSourceConfig(sourceName); + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str())) { + spdlog::info("Changed input device: {0}", devId); + sourceName = soapy.devNameList[devId]; + soapy.setDevice(soapy.devList[devId]); + + if (config::config["sourceSettings"].contains(sourceName)) { + loadSourceConfig(sourceName); + } + else { + srId = 0; + sampleRate = soapy.getSampleRate(); + bw.val = sampleRate; + wtf.setBandwidth(sampleRate); + wtf.setViewBandwidth(sampleRate); + sigPath.setSampleRate(sampleRate); + + if (soapy.gainList.size() >= 0) { + delete[] uiGains; + uiGains = new float[soapy.gainList.size()]; + for (int i = 0; i < soapy.gainList.size(); i++) { + uiGains[i] = soapy.currentGains[i]; + } + } + } + setVFO(fSel.frequency); + config::config["source"] = sourceName; + config::configModified = true; } - else { - srId = 0; - sampleRate = soapy.getSampleRate(); - bw.val = sampleRate; + ImGui::PopItemWidth(); + + if (ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str())) { + spdlog::info("Changed sample rate: {0}", srId); + sampleRate = soapy.sampleRates[srId]; + soapy.setSampleRate(sampleRate); wtf.setBandwidth(sampleRate); wtf.setViewBandwidth(sampleRate); sigPath.setSampleRate(sampleRate); + bw.val = sampleRate; - if (soapy.gainList.size() >= 0) { - delete[] uiGains; - uiGains = new float[soapy.gainList.size()]; - for (int i = 0; i < soapy.gainList.size(); i++) { - uiGains[i] = soapy.currentGains[i]; + if (!config::config["sourceSettings"].contains(sourceName)) { + saveCurrentSource(); + } + config::config["sourceSettings"][sourceName]["sampleRate"] = sampleRate; + config::configModified = true; + } + + ImGui::SameLine(); + bool noDevice = (soapy.devList.size() == 0); + if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { + soapy.refresh(); + if (noDevice && soapy.devList.size() > 0) { + sourceName = soapy.devNameList[0]; + soapy.setDevice(soapy.devList[0]); + if (config::config["sourceSettings"][sourceName]) { + loadSourceConfig(sourceName); } } } - setVFO(fSel.frequency); - config::config["source"] = sourceName; - config::configModified = true; - } - ImGui::PopItemWidth(); - if (ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str())) { - spdlog::info("Changed sample rate: {0}", srId); - sampleRate = soapy.sampleRates[srId]; - soapy.setSampleRate(sampleRate); - wtf.setBandwidth(sampleRate); - wtf.setViewBandwidth(sampleRate); - sigPath.setSampleRate(sampleRate); - bw.val = sampleRate; + if (playing) { style::endDisabled(); }; - if (!config::config["sourceSettings"].contains(sourceName)) { - saveCurrentSource(); - } - config::config["sourceSettings"][sourceName]["sampleRate"] = sampleRate; - config::configModified = true; - } + float maxTextLength = 0; + float txtLen = 0; + char buf[100]; - ImGui::SameLine(); - bool noDevice = (soapy.devList.size() == 0); - if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { - soapy.refresh(); - if (noDevice && soapy.devList.size() > 0) { - sourceName = soapy.devNameList[0]; - soapy.setDevice(soapy.devList[0]); - if (config::config["sourceSettings"][sourceName]) { - loadSourceConfig(sourceName); + // Calculate the spacing + for (int i = 0; i < soapy.gainList.size(); i++) { + sprintf(buf, "%s gain", soapy.gainList[i].c_str()); + txtLen = ImGui::CalcTextSize(buf).x; + if (txtLen > maxTextLength) { + maxTextLength = txtLen; } } - } - if (playing) { style::endDisabled(); }; + for (int i = 0; i < soapy.gainList.size(); i++) { + ImGui::Text("%s gain", soapy.gainList[i].c_str()); + ImGui::SameLine(); + sprintf(buf, "##_gain_slide_%d_", i); - float maxTextLength = 0; - float txtLen = 0; - char buf[100]; - - // Calculate the spacing - for (int i = 0; i < soapy.gainList.size(); i++) { - sprintf(buf, "%s gain", soapy.gainList[i].c_str()); - txtLen = ImGui::CalcTextSize(buf).x; - if (txtLen > maxTextLength) { - maxTextLength = txtLen; + ImGui::SetCursorPosX(maxTextLength + 5); + ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); + if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { + soapy.setGain(i, uiGains[i]); + config::config["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; + config::configModified = true; + } + ImGui::PopItemWidth(); } - } - for (int i = 0; i < soapy.gainList.size(); i++) { - ImGui::Text("%s gain", soapy.gainList[i].c_str()); - ImGui::SameLine(); - sprintf(buf, "##_gain_slide_%d_", i); - - ImGui::SetCursorPosX(maxTextLength + 5); - ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); - if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { - soapy.setGain(i, uiGains[i]); - config::config["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; - config::configModified = true; - } - ImGui::PopItemWidth(); - } - - ImGui::Spacing(); - } - - for (int i = 0; i < modCount; i++) { - if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { - mod = mod::modules[mod::moduleNames[i]]; - mod._DRAW_MENU_(mod.ctx); ImGui::Spacing(); } - } - - if (ImGui::CollapsingHeader("Audio", ImGuiTreeNodeFlags_DefaultOpen)) { - int count = 0; - int maxCount = audio::streams.size(); - for (auto const& [name, stream] : audio::streams) { - int deviceId; - float vol = 1.0f; - deviceId = stream->audio->getDeviceId(); - - ImGui::SetCursorPosX((menuColumnWidth / 2.0f) - (ImGui::CalcTextSize(name.c_str()).x / 2.0f)); - ImGui::Text(name.c_str()); - - ImGui::PushItemWidth(menuColumnWidth); - bool running = stream->running; - if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { - spdlog::warn("Stopping audio stream"); - audio::stopStream(name); - spdlog::warn("Setting device"); - audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); - if (running) { - spdlog::warn("Starting stream"); - audio::startStream(name); - } - stream->sampleRateId = 0; - spdlog::warn("Done, saving config"); - - // Create config if it doesn't exist - if (!config::config["audio"].contains(name)) { - config::config["audio"][name]["volume"] = stream->volume; - } - config::config["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; - config::config["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; - config::configModified = true; - } - if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { - audio::stopStream(name); - audio::setSampleRate(name, stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]); - if (running) { - audio::startStream(name); - } - - // Create config if it doesn't exist - if (!config::config["audio"].contains(name)) { - config::config["audio"][name]["volume"] = stream->volume; - config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; - } - config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; - config::configModified = true; - } - if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { - stream->audio->setVolume(stream->volume); - - // Create config if it doesn't exist - if (!config::config["audio"].contains(name)) { - config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; - config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; - } - config::config["audio"][name]["volume"] = stream->volume; - config::configModified = true; - } - ImGui::PopItemWidth(); - count++; - if (count < maxCount) { + for (int i = 0; i < modCount; i++) { + if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { + mod = mod::modules[mod::moduleNames[i]]; + mod._DRAW_MENU_(mod.ctx); + ImGui::Spacing(); + } + } + + + if (ImGui::CollapsingHeader("Audio", ImGuiTreeNodeFlags_DefaultOpen)) { + int count = 0; + int maxCount = audio::streams.size(); + for (auto const& [name, stream] : audio::streams) { + int deviceId; + float vol = 1.0f; + deviceId = stream->audio->getDeviceId(); + + ImGui::SetCursorPosX((menuColumnWidth / 2.0f) - (ImGui::CalcTextSize(name.c_str()).x / 2.0f)); + ImGui::Text(name.c_str()); + + ImGui::PushItemWidth(menuColumnWidth); + bool running = stream->running; + if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { + audio::stopStream(name); + audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); + if (running) { + audio::startStream(name); + } + stream->sampleRateId = 0; + + // Create config if it doesn't exist + if (!config::config["audio"].contains(name)) { + config::config["audio"][name]["volume"] = stream->volume; + } + config::config["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; + config::config["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; + config::configModified = true; + } + if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { + audio::stopStream(name); + audio::setSampleRate(name, stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]); + if (running) { + audio::startStream(name); + } + + // Create config if it doesn't exist + if (!config::config["audio"].contains(name)) { + config::config["audio"][name]["volume"] = stream->volume; + config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; + } + config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + config::configModified = true; + } + if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { + stream->audio->setVolume(stream->volume); + + // Create config if it doesn't exist + if (!config::config["audio"].contains(name)) { + config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; + config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + } + config::config["audio"][name]["volume"] = stream->volume; + config::configModified = true; + } + ImGui::PopItemWidth(); + count++; + if (count < maxCount) { + ImGui::Spacing(); + ImGui::Separator(); + } ImGui::Spacing(); - ImGui::Separator(); } ImGui::Spacing(); } - ImGui::Spacing(); - } - if (ImGui::CollapsingHeader("Band Plan", ImGuiTreeNodeFlags_DefaultOpen)) { - ImGui::PushItemWidth(menuColumnWidth); - if (ImGui::Combo("##_4_", &bandplanId.val, bandplan::bandplanNameTxt.c_str())) { - config::config["bandPlan"] = bandplan::bandplanNames[bandplanId.val]; - config::configModified = true; + if (ImGui::CollapsingHeader("Band Plan", ImGuiTreeNodeFlags_DefaultOpen)) { + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo("##_4_", &bandplanId.val, bandplan::bandplanNameTxt.c_str())) { + config::config["bandPlan"] = bandplan::bandplanNames[bandplanId.val]; + config::configModified = true; + } + ImGui::PopItemWidth(); + if (ImGui::Checkbox("Enabled", &bandPlanEnabled.val)) { + config::config["bandPlanEnabled"] = bandPlanEnabled.val; + config::configModified = true; + } + bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; + ImGui::Text("Country: %s (%s)", plan.countryName, plan.countryCode); + ImGui::Text("Author: %s", plan.authorName); + ImGui::Spacing(); + } + + if (ImGui::CollapsingHeader("Display", ImGuiTreeNodeFlags_DefaultOpen)) { + if (ImGui::Checkbox("Show waterfall", &showWaterfall)) { + showWaterfall ? wtf.showWaterfall() : wtf.hideWaterfall(); + } + ImGui::Spacing(); } - ImGui::PopItemWidth(); - if (ImGui::Checkbox("Enabled", &bandPlanEnabled.val)) { - config::config["bandPlanEnabled"] = bandPlanEnabled.val; - config::configModified = true; + + if(ImGui::CollapsingHeader("Debug")) { + ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); + ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); + ImGui::Text("Center Frequency: %.0f Hz", wtf.getCenterFrequency()); + + ImGui::Spacing(); } - bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; - ImGui::Text("Country: %s (%s)", plan.countryName, plan.countryCode); - ImGui::Text("Author: %s", plan.authorName); - ImGui::Spacing(); - } - if (ImGui::CollapsingHeader("Display", ImGuiTreeNodeFlags_DefaultOpen)) { - if (ImGui::Checkbox("Show waterfall", &showWaterfall)) { - showWaterfall ? wtf.showWaterfall() : wtf.hideWaterfall(); - } - ImGui::Spacing(); + ImGui::EndChild(); } - - if(ImGui::CollapsingHeader("Debug")) { - ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); - ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); - ImGui::Text("Center Frequency: %.0f Hz", wtf.getCenterFrequency()); - - ImGui::Spacing(); + else { + // When hiding the menu bar + ImGui::Columns(3, "WindowColumns", false); + ImGui::SetColumnWidth(0, 8); + ImGui::SetColumnWidth(1, winSize.x - 8 - 60); + ImGui::SetColumnWidth(2, 60); } - ImGui::EndChild(); - // Right Column ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0)); ImGui::NextColumn(); diff --git a/src/waterfall.cpp b/src/waterfall.cpp index 3057cf31..d590f780 100644 --- a/src/waterfall.cpp +++ b/src/waterfall.cpp @@ -703,12 +703,12 @@ namespace ImGui { else if (reference == REF_LOWER) { centerOffset = lowerOffset + (bandwidth / 2.0f); upperOffset = lowerOffset + bandwidth; - centerOffsetChanged; + centerOffsetChanged = true; } else if (reference == REF_UPPER) { centerOffset = upperOffset - (bandwidth / 2.0f); lowerOffset = upperOffset - bandwidth; - centerOffsetChanged; + centerOffsetChanged = true; } redrawRequired = true; } @@ -773,6 +773,7 @@ namespace ImGui { void WaterFall::setFFTHeight(int height) { FFTAreaHeight = height; + newFFTAreaHeight = height; onResize(); } From 78086a79f491678e4ab2fbce6d38da873a711875 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 21 Aug 2020 15:37:34 +0200 Subject: [PATCH 023/127] New stuff +++ --- src/main_window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index 63d8f601..d67015bb 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -41,7 +41,7 @@ dsp::NullSink sink; int devId = 0; int srId = 0; watcher bandplanId(0, true); -watcher freq(90500000Ui64); +watcher freq(90500000); int demod = 1; watcher vfoFreq(92000000.0f); float dummyVolume = 1.0f; From d82260d4d4ba8a896275fc9e845e2c3382f326f0 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 21 Aug 2020 15:38:27 +0200 Subject: [PATCH 024/127] New stuff ++++ --- src/main_window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index d67015bb..cdce8786 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -41,7 +41,7 @@ dsp::NullSink sink; int devId = 0; int srId = 0; watcher bandplanId(0, true); -watcher freq(90500000); +watcher freq((uint64_t)90500000); int demod = 1; watcher vfoFreq(92000000.0f); float dummyVolume = 1.0f; From 27731f376aaaf6aa11badf75dae602685b72988c Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 21 Aug 2020 15:47:19 +0200 Subject: [PATCH 025/127] fixed default config file --- config.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index 2d62f53f..e2017a54 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,18 @@ { + "audio": {}, "bandPlan": "General", "bandPlanEnabled": true, - "frequency": 98000000, + "fftHeight": 300, + "frequency": 99000000, "max": 0.0, + "maximized": false, + "menuWidth": 300, "min": -70.0, + "showWaterfall": true, "source": "", - "sourceSettings": {} + "sourceSettings": {}, + "windowSize": { + "h": 720, + "w": 1280 + } } \ No newline at end of file From bf6210721ddf2ae8011def45a9197ac4c0e7665d Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 21 Aug 2020 17:11:12 +0200 Subject: [PATCH 026/127] Fixed config not saved properly --- src/main_window.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index cdce8786..01075a26 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -148,6 +148,12 @@ void loadAudioConfig(std::string name) { audio::streams[name]->audio->setVolume(audio::streams[name]->volume); } +void saveAudioConfig(std::string name) { + config::config["audio"][name]["device"] = audio::streams[name]->audio->deviceNames[audio::streams[name]->deviceId]; + config::config["audio"][name]["volume"] = audio::streams[name]->volume; + config::config["audio"][name]["sampleRate"] = audio::streams[name]->sampleRate; +} + void windowInit() { fSel.init(); @@ -193,6 +199,9 @@ void windowInit() { i++; } if (!settingsFound) { + if (soapy.devNameList.size() > 0) { + sourceName = soapy.devNameList[0]; + } sampleRate = soapy.getSampleRate(); sigPath.setSampleRate(sampleRate); } @@ -209,6 +218,10 @@ void windowInit() { // Bring VFO to a visible place when changing sample rate if it's smaller // Have a proper root directory + // Fix issue of source name not set when source was not selected manually + // Generate entire source config before saving a source property + // ^ same for audio devices + // And a module add/remove/change order menu // get rid of watchers and use if() instead // Switch to double for all frequecies and bandwidth @@ -470,6 +483,9 @@ void drawWindow() { ImGui::SetNextItemWidth(200); if (ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, "")) { if (audioStreamName != "") { + if (!config::config["audio"].contains(audioStreamName)) { + saveAudioConfig(audioStreamName); + } audio::streams[audioStreamName]->audio->setVolume(*volume); config::config["audio"][audioStreamName]["volume"] = *volume; config::configModified = true; @@ -619,6 +635,9 @@ void drawWindow() { ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { soapy.setGain(i, uiGains[i]); + if (!config::config["sourceSettings"].contains(sourceName)) { + saveCurrentSource(); + } config::config["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; config::configModified = true; } @@ -660,7 +679,7 @@ void drawWindow() { // Create config if it doesn't exist if (!config::config["audio"].contains(name)) { - config::config["audio"][name]["volume"] = stream->volume; + saveAudioConfig(name); } config::config["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; config::config["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; @@ -675,8 +694,7 @@ void drawWindow() { // Create config if it doesn't exist if (!config::config["audio"].contains(name)) { - config::config["audio"][name]["volume"] = stream->volume; - config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; + saveAudioConfig(name); } config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; config::configModified = true; @@ -686,8 +704,7 @@ void drawWindow() { // Create config if it doesn't exist if (!config::config["audio"].contains(name)) { - config::config["audio"][name]["device"] = stream->audio->deviceNames[deviceId]; - config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + saveAudioConfig(name); } config::config["audio"][name]["volume"] = stream->volume; config::configModified = true; @@ -731,7 +748,7 @@ void drawWindow() { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); ImGui::Text("Center Frequency: %.0f Hz", wtf.getCenterFrequency()); - + ImGui::Text("Source name: %s", sourceName.c_str()); ImGui::Spacing(); } From 7190acfe9e0a988e5f11af4ec0c7b22f442603f5 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 21 Aug 2020 17:12:48 +0200 Subject: [PATCH 027/127] Fixed band plan name not appearing correctly --- src/main_window.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main_window.cpp b/src/main_window.cpp index 01075a26..90c42032 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -732,8 +732,8 @@ void drawWindow() { config::configModified = true; } bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; - ImGui::Text("Country: %s (%s)", plan.countryName, plan.countryCode); - ImGui::Text("Author: %s", plan.authorName); + ImGui::Text("Country: %s (%s)", plan.countryName.c_str(), plan.countryCode.c_str()); + ImGui::Text("Author: %s", plan.authorName.c_str()); ImGui::Spacing(); } From 70c2ef36f5844370aad36c3d8369903733628ce1 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Sat, 29 Aug 2020 12:25:15 +0800 Subject: [PATCH 028/127] Freq can be zero In Zero-IF scenerio, freq can be zero. --- src/dsp/source.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dsp/source.h b/src/dsp/source.h index 5d9531f0..2e4ec42b 100644 --- a/src/dsp/source.h +++ b/src/dsp/source.h @@ -16,7 +16,7 @@ namespace dsp { _blockSize = blockSize; _sampleRate = sampleRate; _frequency = frequency; - _phasorSpeed = (2 * 3.1415926535) / (sampleRate / frequency); + _phasorSpeed = (2 * 3.1415926535 * frequency) / sampleRate; _phase = 0; } @@ -25,7 +25,7 @@ namespace dsp { _sampleRate = sampleRate; _blockSize = blockSize; _frequency = frequency; - _phasorSpeed = (2 * 3.1415926535) / (sampleRate / frequency); + _phasorSpeed = (2 * 3.1415926535 * frequency) / sampleRate; _phase = 0; } @@ -61,7 +61,7 @@ namespace dsp { void setSampleRate(float sampleRate) { _sampleRate = sampleRate; - _phasorSpeed = (2 * 3.1415926535) / (sampleRate / _frequency); + _phasorSpeed = (2 * 3.1415926535 * _frequency) / sampleRate; } stream output; From acf3fe0297147c80fd5a5576cb7793602abbe982 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Sat, 29 Aug 2020 12:20:34 +0800 Subject: [PATCH 029/127] Add a missing else to shutdown a warning message --- modules/radio/src/path.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index 4338980b..bff30903 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -95,7 +95,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { deemp.bypass = (_deemp == DEEMP_NONE); demod.start(); } - if (demId == DEMOD_NFM) { + else if (demId == DEMOD_NFM) { API->setVFOSampleRate(vfoName, 16000, bandwidth); demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); demod.setSampleRate(16000); From 39a65b51fb79ac219a53b4c22ab13ef7a8b26c75 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Tue, 25 Aug 2020 23:30:41 +0800 Subject: [PATCH 030/127] optimize DecimatingFIRFilter --- src/dsp/filter.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dsp/filter.h b/src/dsp/filter.h index 52eda276..7ccb0227 100644 --- a/src/dsp/filter.h +++ b/src/dsp/filter.h @@ -185,11 +185,11 @@ namespace dsp { if (i < t) { outBuf[id].i += tap * delayBuf[delayOff + i].i; outBuf[id].q += tap * delayBuf[delayOff + i].q; - id++; - continue; } - outBuf[id].i += tap * inBuf[i - t].i; - outBuf[id].q += tap * inBuf[i - t].q; + else { + outBuf[id].i += tap * inBuf[i - t].i; + outBuf[id].q += tap * inBuf[i - t].q; + } id++; } } From c0825dbeebf53e7c013b03e19524d0e6d1ede5c4 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 6 Sep 2020 15:39:09 +0200 Subject: [PATCH 031/127] Push before merge --- .gitignore | 4 ++- CMakeLists.txt | 10 ++---- module_list.json | 3 -- modules/demo/CMakeLists.txt | 2 +- modules/demo/src/main.cpp | 28 ++++++++++++----- modules/radio/CMakeLists.txt | 2 +- modules/recorder/CMakeLists.txt | 2 +- prepare_root.bat | 3 ++ prepare_root.sh | 2 ++ res/icons/menu_raw.png | Bin 1710 -> 0 bytes res/icons/play_raw.png | Bin 3688 -> 0 bytes res/icons/stop.png | Bin 1733 -> 0 bytes res/icons/stop_raw.png | Bin 2271 -> 0 bytes band_colors.json => root/band_colors.json | 0 {bandplans => root/bandplans}/general.json | 0 {bandplans => root/bandplans}/germany.json | 0 {bandplans => root/bandplans}/russia.json | 0 config.json => root/config.json | 34 ++++++++++----------- root/module_list.json | 4 +++ root/modules/.gitkeep | 0 root/recordings/.gitkeep | 0 {res => root/res}/fonts/Roboto-Medium.ttf | Bin {res => root/res}/icons/menu.png | Bin {res => root/res}/icons/play.png | Bin {res => root/res}/icons/sdrpp.ico | Bin {res => root/res}/icons/sdrpp.png | Bin root/sdrpp.zip | Bin 0 -> 1545494 bytes src/config.cpp | 9 ++++++ src/config.h | 2 ++ src/icons.cpp | 12 ++++---- src/icons.h | 1 + src/io/soapy.h | 2 ++ src/main.cpp | 14 ++++++--- src/main_window.cpp | 11 +++---- win32/resources.rc | 2 +- 35 files changed, 90 insertions(+), 57 deletions(-) delete mode 100644 module_list.json create mode 100644 prepare_root.bat create mode 100644 prepare_root.sh delete mode 100644 res/icons/menu_raw.png delete mode 100644 res/icons/play_raw.png delete mode 100644 res/icons/stop.png delete mode 100644 res/icons/stop_raw.png rename band_colors.json => root/band_colors.json (100%) rename {bandplans => root/bandplans}/general.json (100%) rename {bandplans => root/bandplans}/germany.json (100%) rename {bandplans => root/bandplans}/russia.json (100%) rename config.json => root/config.json (95%) create mode 100644 root/module_list.json create mode 100644 root/modules/.gitkeep create mode 100644 root/recordings/.gitkeep rename {res => root/res}/fonts/Roboto-Medium.ttf (100%) rename {res => root/res}/icons/menu.png (100%) rename {res => root/res}/icons/play.png (100%) rename {res => root/res}/icons/sdrpp.ico (100%) rename {res => root/res}/icons/sdrpp.png (100%) create mode 100644 root/sdrpp.zip diff --git a/.gitignore b/.gitignore index 67e50798..12cbce30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build/ .vscode/ -*.old \ No newline at end of file +*.old +*.dll +*.exe \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 58be071e..9b95e1d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 3.9) project(sdrpp) +add_subdirectory("modules/radio") +add_subdirectory("modules/recorder") + if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") link_directories(sdrpp "C:/Program Files/PothosSDR/lib/") @@ -38,7 +41,6 @@ if (MSVC) endif (MSVC) add_executable(sdrpp ${SRC} ${IMGUI}) -# add_library(sdrpp ${SRC} ${IMGUI}) if (MSVC) # Glew @@ -60,10 +62,4 @@ if (MSVC) target_link_libraries(sdrpp PRIVATE portaudio portaudio_static) endif (MSVC) -# # Copy resource directories -# if (!MSVC) -# add_custom_command(TARGET sdrpp POST_BUILD COMMAND cmake -E copy_directory ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/res) -# add_custom_command(TARGET sdrpp POST_BUILD COMMAND cmake -E copy_directory ${CMAKE_SOURCE_DIR}/bandplans ${CMAKE_BINARY_DIR}/bandplans) -# endif (MSVC) - # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/module_list.json b/module_list.json deleted file mode 100644 index 96a6dd79..00000000 --- a/module_list.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Radio": "../modules/radio/build/Release/radio.dll" -} \ No newline at end of file diff --git a/modules/demo/CMakeLists.txt b/modules/demo/CMakeLists.txt index 1b8ac869..25e29d07 100644 --- a/modules/demo/CMakeLists.txt +++ b/modules/demo/CMakeLists.txt @@ -30,7 +30,7 @@ include_directories(demo "../../src/imgui") file(GLOB SRC "src/*.cpp") file(GLOB IMGUI "../../src/imgui/*.cpp") add_library(demo SHARED ${SRC} ${IMGUI}) -set_target_properties(demo PROPERTIES OUTPUT_NAME demo) +set_target_properties(demo PROPERTIES PREFIX "") if (MSVC) # Glew diff --git a/modules/demo/src/main.cpp b/modules/demo/src/main.cpp index f6892fe0..d22f6377 100644 --- a/modules/demo/src/main.cpp +++ b/modules/demo/src/main.cpp @@ -1,26 +1,38 @@ #include #include +#include +#include +#include +#include +#include +#include mod::API_t* API; -struct DemoContext_t { +struct ExampleContext_t { std::string name; }; MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { API = _API; - DemoContext_t* ctx = new DemoContext_t; + ExampleContext_t* ctx = new ExampleContext_t; ctx->name = _name; ImGui::SetCurrentContext(imctx); return ctx; } -MOD_EXPORT void _DRAW_MENU_(DemoContext_t* ctx) { - char buf[100]; - sprintf(buf, "I'm %s", ctx->name.c_str()); - ImGui::Button(buf); +MOD_EXPORT void _NEW_FRAME_(ExampleContext_t* ctx) { + } -MOD_EXPORT void _STOP_(DemoContext_t* ctx) { - delete ctx; +MOD_EXPORT void _DRAW_MENU_(ExampleContext_t* ctx) { + ImGui::Text("Demo!"); +} + +MOD_EXPORT void _HANDLE_EVENT_(ExampleContext_t* ctx, int eventId) { + +} + +MOD_EXPORT void _STOP_(ExampleContext_t* ctx) { + } \ No newline at end of file diff --git a/modules/radio/CMakeLists.txt b/modules/radio/CMakeLists.txt index 1543b210..fb00414f 100644 --- a/modules/radio/CMakeLists.txt +++ b/modules/radio/CMakeLists.txt @@ -30,7 +30,7 @@ include_directories(radio "../../src/imgui") file(GLOB SRC "src/*.cpp") file(GLOB IMGUI "../../src/imgui/*.cpp") add_library(radio SHARED ${SRC} ${IMGUI}) -set_target_properties(radio PROPERTIES OUTPUT_NAME radio) +set_target_properties(radio PROPERTIES PREFIX "") if (MSVC) # Glew diff --git a/modules/recorder/CMakeLists.txt b/modules/recorder/CMakeLists.txt index e55e9f0d..32791d6e 100644 --- a/modules/recorder/CMakeLists.txt +++ b/modules/recorder/CMakeLists.txt @@ -30,7 +30,7 @@ include_directories(recorder "../../src/imgui") file(GLOB SRC "src/*.cpp") file(GLOB IMGUI "../../src/imgui/*.cpp") add_library(recorder SHARED ${SRC} ${IMGUI}) -set_target_properties(recorder PROPERTIES OUTPUT_NAME recorder) +set_target_properties(recorder PROPERTIES PREFIX "") if (MSVC) # Glew diff --git a/prepare_root.bat b/prepare_root.bat new file mode 100644 index 00000000..b78a1ee3 --- /dev/null +++ b/prepare_root.bat @@ -0,0 +1,3 @@ +echo OFF +copy /b/v/y build\modules\radio\Release\radio.dll root\modules\radio.dll +copy /b/v/y build\modules\recorder\Release\recorder.dll root\modules\recorder.dll diff --git a/prepare_root.sh b/prepare_root.sh new file mode 100644 index 00000000..6f19402b --- /dev/null +++ b/prepare_root.sh @@ -0,0 +1,2 @@ +cp modules/radio/build/radio.so root/modules/radio.so +cp modules/recorder/build/recorder.so root/modules/recorder.so \ No newline at end of file diff --git a/res/icons/menu_raw.png b/res/icons/menu_raw.png deleted file mode 100644 index f1c132e0242570b14b2c4b95c0868c95b69858ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1710 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&t&wwUqN(AjMc5RtvY3H^?=T269?xHq!oa}h?CIhdQW5v|^1)7KMu8&^&*y)+=gxTM z(9H`0qRn3zf!c-?X!!q`LEn^r&FYK?Ybq0BU76F*GQZZ6vdET;2)}qB^7DaRU2NxO zv0n={DY#~{Vcnv}&CeQ3MS16pY9T7bXpt7~e;JK2+9lZ07#nJtpB6DjGc)&p{rQJ6 X-Qu=LY4f5xAX_|L{an^LB{Ts5%F7nA diff --git a/res/icons/play_raw.png b/res/icons/play_raw.png deleted file mode 100644 index 61bfb8bcaf54925274ca344ed4c1ee90064a1f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3688 zcmeHK{a4fH6@QWlfg++ZM9Z5>tJ`#8XQ@L7$b1D(H3}w#cf@*@Z7Rg3IZ1)Q*9}Ea z8Bm>|Vx)F>ghYcjRbn8JBTn1e0_*l@UkJpvfw2oz_%0Y4*}eV%e?gm6LR55Vpzs{?9csFFrKNCt`1dr`FzV^WG z_EK4vbYbl$Jy#F1&(7y0HOT(Jdw#onY9&#K;<%*au^;)aKAK$4sUfzapAXR*lp-g1q%{}Z35(}YD8rSh`+rW8Hs$Il1f={Q(lR#pRMOUxg$X+K! zOOqELsCSw;s~bR*!!F^}Lx3|^JZDG%c=hIL^O?<%guHE?(6%t{#u0<0DZ=ppG&23V zB-BHHO|W$97nXzZS1#h9K)VcIpxpr4auM>2T0MHb9S4B`Nv^;J77yT(b_m z26GaF9lu4u3O1L?LBIq$&dGodjpR}x_b#+^aQ&shJDVtL9|G6b~n1 znf9tB+13tQ(>y9s`%iv^R$EmUm@2fA8%li=UIQzu-cn$@0I7Vr${_MB`#Gp0((G#- zD

TEzT|u4ns<^%sp?i77*S@vnPH4Hrq1P^NUuaAalt$K24rL0gR3cDeZ^BC*c=p3UeNNbQFM(63Q1nzs^8XWccaJ6w!8?Z4y_ zo!JUV-{jigUHd+|RXJTf{^%x>c5^g;M^(F1O^V^<*SWI2k-PBZTa;`gvmVk+eX)^g z$5K4S>=g4C=-g}GOt09n6xWhu-63nSymVQ2sOAblH5exu;lw z;Ga?5;Q%a4cF85o#RgfjRkim&M5GgX(cDn%qH%{kFB3D+SuO3CH-S;SQY9~Z*~ME< z{>u z*y+=HSJVLR_30K@WIsf$x#$WXt3a=r!`EhXEvds8GbeQR(3+@~8;N^&w$=5svCGis z37u2GDZm1{vhC519CVcFMRUq>AWBKIMP&OIs)nR)U(HdppBW~pJ;d=C*9r`!+;AY< zW!^SRlGgndA&XzG0gjtrfQX!`ZY053_ zCYjuK3@$Q1ZLTiVhPUU0QY9vQM7r&)CiC#RilWa+IMUYi7!QZZT&h|@@RnC! z>gD1zKd7N`q!WTZD56V9XDSE+s^)7alUNEy4|ViP%H zz`fGyDJMuPU!`kfnd8ufT&qV+LV={sZ?jq=fRR2xogD<{=)s?;nwWvdZ=TTi1u0;X zkF1h3h3z^Bny(Fgb8(Cwd`^dbGSTanQ^{QorO&<+&U^L|oTAZnu88G)xumNkk@#B@&wPak021jlIhan}99^K^9j(R7+Oj^qRFeE;oq;8^#xU(0j^)AQ)37yXas h56xch!=`EOx&Jl9Y;3AZf`5l3b+dSral@`Z{~rN>A`Som diff --git a/res/icons/stop.png b/res/icons/stop.png deleted file mode 100644 index 366651bfe3b40d24bf528215c918febd65552bb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1733 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+UdOTemLn`LHy|z*Ckb}Sh zhk1o8f2Vf^UuIBzb}VB%Q|qp~K(!+V{7CR+|4@6paL+R7hV1BU+vU<0*Ue-PWXfG; zJdpbKGUJ^0cCri%f95eVG$=4LFgOAOvWbU*fkl#mfy0P_K_G>JLE!`ggTsVT1*73G unjS{;1tsOff?TVH%Wp0-j*!y#!})uKFE~_KzJ+W9`PkFd&t;ucLK6U2*S@v@ diff --git a/res/icons/stop_raw.png b/res/icons/stop_raw.png deleted file mode 100644 index 7d22d91e742daa2b979932e0fc56a14131223094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2271 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn2Dage(c!@6@aFM%AEbVpxD z28NCO+Pnv;&qr}t2F{C2y?F~b|BMLkWj&uJ1pQ-Fs zR}fp~wyD7XU{_@JTVn=?6JO^sICL;DG$=4KFgOD3ZDIkM&k58o#K0h+!oZ;5!NA}! zVN}5o4~JRCzaxKk?Tyv^Fn{Ln$_JK@JIqop1FO8sYN>cSWn9O56XUxsHr dJ7M!Re*Rd_-*MZ_=K>og44$rjF6*2UngCW4`UC&~ diff --git a/band_colors.json b/root/band_colors.json similarity index 100% rename from band_colors.json rename to root/band_colors.json diff --git a/bandplans/general.json b/root/bandplans/general.json similarity index 100% rename from bandplans/general.json rename to root/bandplans/general.json diff --git a/bandplans/germany.json b/root/bandplans/germany.json similarity index 100% rename from bandplans/germany.json rename to root/bandplans/germany.json diff --git a/bandplans/russia.json b/root/bandplans/russia.json similarity index 100% rename from bandplans/russia.json rename to root/bandplans/russia.json diff --git a/config.json b/root/config.json similarity index 95% rename from config.json rename to root/config.json index e2017a54..38300a17 100644 --- a/config.json +++ b/root/config.json @@ -1,18 +1,18 @@ -{ - "audio": {}, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 99000000, - "max": 0.0, - "maximized": false, - "menuWidth": 300, - "min": -70.0, - "showWaterfall": true, - "source": "", - "sourceSettings": {}, - "windowSize": { - "h": 720, - "w": 1280 - } +{ + "audio": {}, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 300, + "frequency": 99000000, + "max": 0.0, + "maximized": false, + "menuWidth": 300, + "min": -70.0, + "showWaterfall": true, + "source": "", + "sourceSettings": {}, + "windowSize": { + "h": 720, + "w": 1280 + } } \ No newline at end of file diff --git a/root/module_list.json b/root/module_list.json new file mode 100644 index 00000000..f7d192fd --- /dev/null +++ b/root/module_list.json @@ -0,0 +1,4 @@ +{ + "Radio": "./modules/radio.dll", + "Recorder": "./modules/recorder.dll" +} \ No newline at end of file diff --git a/root/modules/.gitkeep b/root/modules/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/root/recordings/.gitkeep b/root/recordings/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/res/fonts/Roboto-Medium.ttf b/root/res/fonts/Roboto-Medium.ttf similarity index 100% rename from res/fonts/Roboto-Medium.ttf rename to root/res/fonts/Roboto-Medium.ttf diff --git a/res/icons/menu.png b/root/res/icons/menu.png similarity index 100% rename from res/icons/menu.png rename to root/res/icons/menu.png diff --git a/res/icons/play.png b/root/res/icons/play.png similarity index 100% rename from res/icons/play.png rename to root/res/icons/play.png diff --git a/res/icons/sdrpp.ico b/root/res/icons/sdrpp.ico similarity index 100% rename from res/icons/sdrpp.ico rename to root/res/icons/sdrpp.ico diff --git a/res/icons/sdrpp.png b/root/res/icons/sdrpp.png similarity index 100% rename from res/icons/sdrpp.png rename to root/res/icons/sdrpp.png diff --git a/root/sdrpp.zip b/root/sdrpp.zip new file mode 100644 index 0000000000000000000000000000000000000000..b3e65f4b2c3ec66afb54e3521a5e3233170aae59 GIT binary patch literal 1545494 zcmV(*K;FMlO9KQH0000809OkZQ7hHUkTd`Q08jt`01yBG0Bvt%b!=r{Y-w|JE^2dc zZmZ@}00O0;#FWf@B`XCbJ^kGLl+v8kV*MhJkX}koj*<>kO=@y}QA%nNnlh*;SS432 z08mQ<1QY-O00;mqlFCp?vmN0WD*^xjHUt0-0001RZ*p{Db!2I8E@W(M+**Bf6jhdg z-PIi$LZ}W9i2{>WTMY!6XoJFJvXg>DUPDL1$3Q?Akj55P2UzGvPaL3 zbJpXTJ+sGIJ?^eEa+rt?^hbtt5@bkl7(QI(+YaF)CJ+MxwfDZN?yl~95dYmi=k~37 zb>IE?-COs)>gw{PJBdIDF##zGA$3Ikl#oGu41|ox+cSdf8v6OYbq3ex_byz$W}|KW zhIP+vc;**2_cLqPuJhVfK5N_HTWedh)>b-qf$bOTRy{j8D{GitQ}Me!w(>J4p8Qdq z>OL;dJIDE)yyt;0{{5W1Tb$3%yTo~UUOT@&J1@rh+`P+t?%W^E0{*LyX6Iew{K>r2 zoVz%mzs9{9^{0nWQAWtBUk)K}4LP+eKGs3*vt=4bj3#G|ggj~BWA*n8+?PRAM63o|Gj!P2?mP zvo#20A?g294c9FO{fI!KrvBw8d!OCp1%C3hQFRDoPm{M1vSRXvRnK^zA*3eLz;%-0 zz+*;LAXz&llT|T79>4%is?MuIx?FJbdR36x)mX`cSd6A#`j*cxl@>~byoCenO&ohN zvA5jh4I4MO2~n}D*5oGjCHL$L>)eE6iI@@#g3wED2Kj&fq4Lvq3zfZg>tgD^SVG;$ zoUDU2Q+6YC$`rf&b3$A!>Y?J=lOFMfvosJCx32_f_Zaxx5|}!zcBWEvTzvf|jQD#@ z;;UVFP#hLa#3=4K4=3UTuf0&5P-VAy#C63Nt{TY$PzcpqhA2^g^rjMo(TD3{)LHAC zCN2(^vPfw`(Bl-hhU+jP9&zJQ3!X+i;@S=|uY`C!9x-n__aBCuYG)Wd;`&C?C2sxN zCC>v-Z#TQ-B^_}7XP2A}r%^by(pqPUN1XORi%0A_0`sE&u!+y}h+ll+5s%D!8z+Lb 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

$J$ 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 r1X_S{~+Ic^x0>CRR zM$Gu-{G@&vtQyui`osT&xMn(xRM4H;e5hG2*{e?KXpgi5AKN!X@D;B%HzhX(<#r~5Qqx*!~%|LS2Ozj`cp?Tve9~dcD$5R@Ol^Rs#P2DQ? zQ|Gn&<8@w6J7S-U)qfw5csg(rPl9TGH-L^m{=;PACoC%6=shS_R}M(r%J0Oj{QK~_ zbm(QimB+r3#I*;jj+QSEo^X^uIOZ908CQNE)KoSop$_|!@c{n|4u9db0J|(L0qXJ` zRXE7aiyQUK=h5Q=dyGf+Wg1!BHds(?kLJhHY0GzRJUu%xT>G7Uln;Q$9blP%7}O7? zT*^3%W8VNUEI@dk<*wzIC_eOvjtNbPbVx zESKz2tnW(hPnN)9Z`l>W6IQlE^ft21rE98FWV&IeVf=N`i(2PS?fqk@^CQhslGX)J z2ut2*eUa{FZr3wcglwQN>`&{b6|X^mw~od`0Y9i`N4>0zypYPQF2KH!_{GSLcqNA9 zk=K1}$y^y-j$Si{`}!-tLJI0u_MXBp@|AZN+5(~j0yIxV9~F3(Y9}+fBds4HFeCRS z$lQ#Xw;7o!9!z3<`PRSTBKTTIxl>^uVNQ%u#D2gQ|8S?SmxipeI@3;f5~I-v6!szE zbqVIIqMUSp9QYqHM>_1)n4Mo?Y>nbVsD%BnMqx>^n}p1Qfm{%Sl!=}nTn_5R5G?Gn zBN>yrzu^op5Y6`p(%YOioKAU1xq%)T@Nr&}Fhc!ii=uCm(61}`H^Y7ETx1X#R~7lh z4E|Vt%C!rl^qprfSMJ9T=y_-8Ky^97GX<`EdmK`l6`L^O+{ z22vC~JW(Bm6fl*p@rvt}laeawrINeuf%)R}uq3XJh&k_wIopnimxaak($OR0ZFTUk z89rjt5pmX*BjSu&__y_lSWGdZG16Q}ItsZvc$OKpJwJ88r{ldpLHcn-K!_tSuP+3; z&KQ9%alN_E`pp2w(ns|ctUmSh?N2)6>XRV1z3=wh;ZsT<2&5na8K*~J&>15z2y#36 zM!*4|2KRx$U^y7c##3vtstwN!+=oSVKCbN4RCEntQmor$*L#4aBw+Z7#9j*juk{kY zr~NhHxBvuE>u!VNgMYRWukYC#A ztdmYa6E^kTjBN?XR!b)!^T|G%Q7xT>FP*)=R7;&$x5cRY7k$;OpK0B?xUMe>R+|Bc z`P7=tSaZ_pT5Ubknyrvo=(E)Ve6gKcw+-t~IbGe!XIghMWVZKNw;jF=IJNEpz&8%g z+d`MY+fSH?xBq2M;O%vi1$n!>Tf+Z4-NGFMAX_h_Eu=~c)-Sb(PoTbd1xk1yhM?-c zwuH{P_l+Uv+`qmK?d-T`?%%ZYVqa?0t0hwz;DnmDLGj5l`%=TMnIxV)t)ZO5PQ>=VANc`Ra}>Gfhzn2`zH%(_Lqdk zbzWB&cAA4~hDr;oGaTYN;R5Wx?80iV!>q8{nRFk)aWij|58cSHeM-q8+^DnGqD#8W zVAuk6K^v>Fl}O{P+v-%=LOzottx&E@LVd5xylkrC+8e-gV0~vmooeCyEUp_6P;az& zS-1eIA4ts-JXX9}ET|bplC?SVwEz_9gm(!NV((paF*Hmbl+_{&Rg7&!N1%1ko`ULW z=jgZ9^|+6~n-M5Eq_8$$UK4PYn&ANqOx9-duQyaJ=-rqcBw8+-NK5K?J=oI0{nnO> z_g-!W77nOIGn-2p!zqDzpDQt{Z{Qt`ev3kE^$#8}RIc$DS^$1N1ZR@}7P zL>V9_eCpf`pZ38^XES_iN`_R(+}Rk9&y1m&#rv8C__G`S{Hzv`SU#Z*aPm6ZIVlR- ztw_XiF=(GxEwC#kO#${XG~gU@UFucTONDCc0J&tB1ij{i1UxB-Xo9y| zxE4|s_j^mH$gYq5YUr776drURkx9rmZ4HVnds!OpAU5#uJd zDQwFI(ivUAq$JsTLUFcio0oP zfx`AAZo)1V693?cq7GwaW%r5tY(k~ z575#UoY1}E+8RrRGu6auEHA*1wC5Nwq5&70P_?^k(jrl2WH4yl#;TKpiyWr15iG>F z534cJy=7^Z!YUg1<{^`F08dO;^x0W*Nv&e0x4LcrmOV}E@|Vo3QrIyN#(s7fwGxN7 zr|Y>ZyDj)WZ`bvnx=gRUR^QdTVS+l2aEA2wRQ(vKjnQif+DL@<#3|7FEMc$b8mH;> zDwEs|t*>)x$bwfAwX3GZ{1;qGPqe>IRz-$!mWak#dL(8hl~BW%M|HhF=X~P2T3$oG zwsR`?E6`y4zRiDeFHZX>JyS*K_B4JjKn+U-d3pE6x_ghFmP}YX^g=CO$e-H>iCo=x z3NP-4gtwmNp1Nnx{Nz#$=tY*M=snGke~NtSU1ofkBN=` z?eqkX*~#sidP9d;uq&e3q~V(+w$0TT@;l4C`7cv%mW@CZ@+H<7Y_*p?5Nu5@vq`RP zVwgReHIrhE{H3@c?r2MS|Y=4;2ir(C}}zrki| z{WV>iu$Dh3k?`lB?O08|k8SdWhIm7R z7f%uki)+z2SS{`6K2~NUr{A;v6n0Fke1h`4kDa*zL{^NLJP0(>9(U#Pfihz77Vfkx z7m8I)CU?(soiem$m6u=~M3qon`(1#2ImYWOD;vu;x9|0rw1Iww-ooMEW}GXn-;=*M zTwsuo%-x`nDAuE-_O*h<_qGNxHf+fc3j4l${_M{G$5Zm-$vkc_R~;?SA&(e;UVuBh z=8jW4u6#3e+&;`tjx_3zqoWS7x*Ag4?GoE8{yvOESxEOP$i0y+uI(a69k(ptlq)8( z-HbWL088SHu#T#u%X~5?;y&-Rt0)dVV%)r$bmFxUgtuIwd1MfVcM?#*2i`#?H|khgr?cYHbalhFGm)gea3c9 z3lE=Gp5ZNzV9Rnz4@b0QsAvvybWzlS&76ZSh(8xAhhVqIScJ^vf=irp?d3%V+`bK~ z0eJK$gvW(s|8uBsJTRL`sBkwsdnfC<8|0`Y1~!u~PrPo8tb}eM{eD(2mo&@P_qCVZ zHdFLo-Wwts2>G$}WiTkCGZegqub16$#zdNWsDC0=`^Wmpu%~OuT9h?KKK2F1AI^u~ z!CKBYD&MYH-vcE$rJ8(nE2=OE6q_ZS9VERGdpO`aq*z;t!b~&;VwEbYvg-#I^6k3y4Y|tMgUuUv`;XQWq%M;&*|bn~{t0 zgrWX)s0-G$=zuUaT~=>21G_B$QnK#%x%NoG%@(iw+a+&PxLUcYsVqs)ymy|B4{9>9 z#i5Re67$Dah0F7iB?D{|teG!IOjz?N@pkR-&x0|5q-xm`u+}N$FVbs-y~6vj=la|Y zWtl$ikOqW~!nSF3BeBUX3fmN&0+J)D(!luQUL3*Ke}C!-j=sTf#SZV|+r4k~xE1@O zwnjbH6MS#t1MR1Nkb>g+FbK|wmJ)2a;O<5|!`M)0zp%2s71q?p1@wn^fwh@(*kH_D z0RLB?)gvGM@XT8xtru8#N&Iv5RC7-t)l)5}dNYgPx1SrgZ`zj!{1ZY>j9HYs8yBP| zs1+9>3sZdWHQ(xb+#r?pDgvB8CZW`&Sc=@r-tuh%lsIPlaw4SE4W?JEfRv zW9O<(^a2Evg<#J5wuedsU{IZ)%O28OrWIy0L87|^U0aUUwu@Dd0?@Z;+YYbjUL7|X zk9ghnONSe%qwJrQgNEaLIO-ve`bO2sjISysg{M>+hV#z&~}wu)of<+eAu2}N1lOp1&}a0Z_1 zl>3RGH>>A8VL$tj;#jQsW)6j4us!-zaxA{UXGn**VHAmd&|T>D8Nv>>clKlHNJ9{y}VS&&&Yz}f>KhbNS- zdE125s%YflZU@al5evHftU;?7jqbJ@WbS-qzVW6`qX>}NPvKp*w#(M<{I2%$*8|qC z6xSyTnxQ`HXRkW*3GtVm9%|AXPMLmRbr#X@%g$o@ea1PPeru?qX!!Vc4tWGYN?^!@ zI+8axO*ht0oSL@zPsR!K3i)F2u?}26;T0+FDk~>%H~!>G8*rDKbOH7qcZ-5c0bG3H zd_qbJs(9M7qipC*eA#dXW0}5>1nU()Libi?lUv&FaEEK7IeuOwm+Ue;?Tzt1mMyM+ z7oFWig2x<7zK~us8?kOpqy#qj)LRC@B>A&y>aeQ81HUnC4DQ*ZOfl;2+l_F0JTvV zp>~Wf1xvy~K)i1sX~hUl()Jj zs}k~*hTbTAo=%mI4G>qZH2g`h+KX?x$zO+M zhz1j^S#mX9EQ*l!wGe3$R(y)j1Djc`xNdi(14Lvv@~M4b?VgTtXg9m`;%-CS1beQM zMr&=UHzZ7=OiR9#)QM&(G*E9)FyxOe)}-ih+a^wVDjF>@HxlYyy7^zyj*apT(Y}BTvwBVL%`iwel}pX=WA(1p~DxNngL}hZ@@uOhpS5- zKU>x>zM<4+>eiQTno8auD8$QLXEVsLT;fUFi@!GHm@nJQ-sILlz%9EJ)`s#pH^2`0 zRa@>qZ6-albdHUm)o??dFXT)Aq0`DF=*OxJwv?HLdIAF)HGRt&WwI?{$! zLZvFMnl_-ucUW}T&ZVSj&V_&pMh2nJ;s`$qNS~=x7MC?17SlmYVwH0mV8x0h;ddUn zNe$iAp*ORD$rW&z10BFc=Mn&1-p@k-__oMfeW!CFw~$2VPoV%N3kxv@a>!@L6-vkl zs>l0ue}Q5aYYT!nA)|NhvP^c9i3eD6-DIbL)>jbI!o%iLe1K^xkd4E8*+n$Gk;0_C z&bs}!nYZ@P7||?X&Ptm}%xOI$-hv0NQE~d`;xyavw{1Xh3rG6HXEev>_?v{!KJm)B z`<;-Uc@u%%3SiQ%<>2-M=w0x;hnk0FJF5_ny8CmCj9*j{@@ePr0%!n|mL7ke)r~_! z{r{?>`X79=Z+aYlgVUqyjqWDB_XelO?l%m2lvigEG{HzmA#rlKmtuWQ==yefXRayBX&G+R`L%g?JfoBv_P zageVK{H~K+vgLzBg(=cH)+|qhWNLi2knia6!e`WK;Q3+?Sz|H{;clI!2Si!>?jLi^iQ7cx1NNUa|Zf zQ~6D()u6~)qXcyaceSNX$yUU|_vGO6e8+r2W>Y{@d>~hLe+$FgFBWXpE_K;Vv=8I{ zVg9W$`$T5fBe1eJWX6Fh?vMONX!HNaW0{U75dp`sA`Ao?gYRM z+K$TzuqeB~TQEJEvgl7TTkeSdY0)H`lro!1%cYPfb)-3B z8}ccuoUQ$AO(*&G$u~#E*#V9DqZD;ItexuR6~{4>)cm0Vc7KN)ti4om z)yu&!Ja$}gf3luA{SKHB(5LLTLu_Onu~1eEJqUarZY#`2(N#B$L>F?#?KA82%-|g~ zi-0DP12dahV$H#?g|gY8gO-iMKf{B^&1C?4CguZ$SC#BiMMttM`f3l0Bk?RHr!JnH zgvpF2N)@mcujnv~PlVBIDsOjXSQfoon7L;W0gK={5vF$Yw~W!mP`~jYE9GFMMVuFk z71p6OcXg7#E~IB^gNLqdCX*(f*8~az^uVNi(P0wP3$sOs>=4s2Np{GPRphP^CIK5w zlJjTju%ZIYRJR|lXJXkfq;2En7YO&ScF_K8zx1V{7S{;P)2mnssSVKu<94^w!sK5 z=1BKD=V`N#oY0}msuK@^pjX7lY$=bW{ffObHk(3^yhD~6iw5U4Nuft@xhRFm z0bn%UMQ#GEwNJNiB$L)Hff72R%G<55upH4W;@Suu@2{Xp$m-B)T)2LADb9d(vAq%O zjO^)&-i1q~+2nhFkyEyYy@dY}ujr7FO7E>m2F)iY?B(-46CyB|zy1cDF6A_O*@9HB zwY~k5BR=uAM!cM$9yBBm>C>TCxw&)bc^VR+n}{P`rQs`%0M-VeK;OeqSLP+4;KJ)H zXD(JfEV`Ut?{sG4>&1JQ+q&0V)Ab|bW%?0GEIujbG#rsoC`;lDG^#4}h_{3f!@R%lCT2$rdE9knGY6vCALXsk3Pq@7bKX+#3#d`mn3WFd!XZN+LQUX$^9qn z#-%B|2DB$*LF{a|w(OVP>lalvb60{P7UKkOh)PQAoe=FGL`4_59<)ZDZhw6n;X_*% zaW1IM+fAqbLCy!M)!N4w+f1?AmOsN=W|@F~Lb2Cs{)|S$Vh+$7{?5Vx2073(Vh(hY zn8SMv%fy7Ttd%;6@JF+S&ZTX7|Dpqlyf z<;f<_e!z#=@3zmEBI_RG%!h1T!jw>s@@C+D~0z*KwT z`*Qkz%;2{=?OFKFp4>|+^~koW-3xteHTI!<-?BU}Tlr3Wzd&*~md#-+F{d8U!y(G` zbo<-b&mjWf-naaNs@-CUBE9ZG6LR}NGH0Ctd{__M7Y;p3QRr7=ZqAAKRy8fU*c)2U z`RKjSv&2Wk8+bjW9;~ONzqzPFRTya0=`UH?CvUAxlrhVPV@DA#BgX-hTcEnZr&QCVL^Z*o?P~_Gs3WA0xu7|3R$Oi{e;aJNAFL#aDI1zHL-O zi&s1F62-fio}}Q7Hut?wv1Vpx&#~KM)Z%C*n@$$*!jkMO+U13gy`&9O^(wPj(JKQz0=#}4>I zbN1pTLRX78Vjk+~qthQmtDjDB#KH|QvV5UrDRjFaR=-7qbe_YnUOsa%i2?a3g~6yE zQB)1h+JVFJG436>BqB#z1RA{Ae%40w#rj1s`n=+8O{HrlvD7P6;mT6+myIAXYQ>pN zI4o(+0PjsYEIZPZs`T>nB=L&ygPG-L>6;~en-scI4t^`VjYAP<+sbMR)!kzdU1!aWE7}#7C)=?yCRAz zJgfvYE7`uI-Fxba(lr3E11g7#>!CJ{+|xx7&e>v4Jx;8`D)^f&tirPp_m*X?Vh)}l z?_YQ+muK+NAv_Tyw!}oe$+}hFihHF}Xo|4t6Phv-CyQSGXV@lh$OAJ*kwXs2_Nh1B zoMPQKv3gS0)T+_m2m@#;#2H3Yy&0{o(0#@LM5&US3 zW)GZF<~nCjWZv)W@L1+7s@gAB3ILTWNMa7CPdHQIG(}gF-o%RtfbKKSA~S!wJbFK9 zCO8WX{u?p1WAuUhZKg!~x1-|BqsY`hKo5vHU3^M{_Y?T14(FW?{1Y}Nr%l>L=kv+w zFw8ypsrU$fZxe5+$H{4vW;vgfp}n$d`{;pW6X37eIkMQn_1cHSP|q0|_M$t|1|%AW zNP9|AQ!7b@1`^^bG6#kh%3bmMxH4x`v3&K@+mna_uq$W44w0 z)71!MJ7kdUa5vfNxMm1XC%F!Z} z+Dk)u^?AA!D*I0Gg+_fRuC0??N9B@_<);FwvvQ%wua28{f3j&36TU-=mP+C;>&2Of zLNV?zG;mm9Nw25z^#+}npIEjNC2%fECe1Tfo+2PQsN z4=KfDLh+75mtC_pDTfq3bSR}h9+)~5FRW6SGK;*T;tq8&YLT;1mCM$Caw$#zljNt_q}kZxOw%qh z(!6<1@H6g7v}I{yi|yi-JH;m>RZV3!HYq#mV3THP?U%#`e(D4QlNV--Qz0WiqT}j= zjTJhhLjbtnv zP%$j;8|-;u!U-!GfI229mQgE?zg;+GembAFn(DQi&b9GI(zTGabQTHAkWdgKKr*T| z(qat-J9tH?MjPPKU}ARvbpY&R=Kyu4Vwf}RP+WzyLd!-<>xuwX`>D-J#8%rVme zlVaS3@vEb%CCHviQH9Xmd5YH^S!$D5IJ!(?yKoz3CjQC6KSEwOdIx;Me92F@A7i!A z8{7BdL&Q}J3ca^BS^(b`r6Y`F$k@I&dX*~a(UFj_#Hk7cyzcN4gmRwb3hRy049t!1 z10fd{vO*!ovGkYhl~mzDzqs~e))}x4b+&)vhlb>PRj11f>+vjZ=Pi``5gi-WP$0Qa zit4CLpjE?UHG{4$6CGS%`PeoT_ZbhDuEEF?DKa~r7gpHzBQGh|-DDB0wVud8hf>Mn zO4C_qPGw>4-cj> zoO$&h(4giksr^It9bWGCmvn~aI&*N=$(^JMZ}E6W>UhUQRoFoLOI7+p!F^)M{cH=M zS9Tlz8Hs;vJ|I{Ld`)2uPq&`{9*Eu~fsVoI@C`e{i#;J#>5D}7iKR9l+Y}w;RSWg# z6#(v1uPU4;xjU8+n4w-*gM=LcnJHl)W`t5!Jj?~s`SNxvC2bVF1Pw8zV5dWT2zgdg zZ_-uaGBT$hc|LHrC7_O7g{)=WDv$9y^B)-CcXx`x*GZ4u-b+IibB2}wC+g9gF;+)5 zXl@N*^g!(|>F~SiWi=oKTy@5MXPEeuld`HfKtV^N?^1DgqpaTODHZQ%lt8f*XGSnf zn|NEDm|pM-UZaE@_|^FGJ^vCu^-Bl;(%kb4Pi#@#4NHOy`v@;1DU@S4r2*P~7^-nIo& zCw@<3@jC(`mQ;9<&E_ zlo7T_XWs$Gbhdw_lr#j?)Q4Fm2_MPYfF3sTfi*yFSXH{l;OlbE*SF#ySDdeZ+JmpB zvCaLmwU=%Fud_99b+A)da-YJQ6t%oFPy!q^?4N}v^ni6M_FoF}8>KAW0jJfvULm4Xq7_a#jlRO z2I|Io1F9lm+)q~dFv5`l5ENPRIRYX8c#9E(`5g63vy=~y(>M&|Ma0kP?)(U8T~2g} zny)v+q^fm?&)P{H;qA4r6`Fu0h2 zTdHd6Bs|E<&D))D-{*+9Ou+@H2R9g0C7a8w2+A$s7zciCA(7+ZvWsL8rfNJj+%uKS zIZtzUDo+4;)x6}bT_4bmE5-)o?k(S$Aq-Dn$y(CejX(&S&TRTE^XuFV7j<=J6iMRay`E!g2E8kYYdJ$ z53yUuDqN+|cnnQ*<`@!jp2T+G@R)&rF2_Ft#>t1TsWeX5VW=kRM-}M^yt)pf%0+4U z!2E-7q)4nS>QWcz(MtecwmRxOch?dGa<;2o-w{oRZ1^?+azJhiYX@9^ps;e4q;b~= z*fBr*6vjbeX+r<|Ox+z&?-j2M&qs$44bii3sfU|VTXD@=tKBw;mYeCxGWzofHV8`a z8*};FemrLcG|^5v7sZhWEv0ivF^~0xmvL3Khj<$bRJ#rcCW-5XNeL)m9Tva!UB7iZ z41FS@PLqs>=#Cv)^MYYNo!u%7F#7m}oy<>;Pl28cxa5%J4LB^ZVk z+^$lw_8qf0?cGwb7@lu?uT;FH_Aqoih(N)C`TEaOfcI^M^dHHDf>*fgM>1uBgwFQk zRmACZFXJG(qsax?>POj{ObpvCTmOkIS8p(Lk}1~r{m^z2P3kD3TL7BxIts$=37Kt2 zyLeZVVm%@UTLl^KQR^rwLK5>jPKwi;P=y2`e^?eT3m*m^|lhBi!YgygM| z93c}D&@l1K_kDf&o_UA#EJ9i)IT2b7ZCQGK!1X>(3rgfu3zx(1$?RRlwQGthoLj&I zGoQSK-q=Vd$!7E;WKTKfEy@goN3w1=2Vi@J4w?A#;i$4?zVhh!>a)Xt(C5}A%HOTP58;{n$JCGxoihFQS+S?L;y z2_qBuq8@wVG(x$_j(aZYJ`)IK5Xj$|%ilUhAZMdM_Q)~iAug4BNaKqQWfSVQ)}vHr z0_%YUiRA!ry>*LX{f@{<;u+xU4MgT{@r?1WT7Paey8I5hWTgkxn+2);6Ohdy>Anb* zY$KUIMa}pX0!xs`|Hitw;WVPS;lHtfI7$nMGKK9%9p2UCS5s-I`_&9%sPBL=q^Nb~FfdFrVLj|~`bI>T=7oRv`4e`U$ zs{){I0)aqXinIW0)T3D{N))yomxQuw2Xv1kWT7P?mT!w|OMH;}t<3@Jc4OM~S-&6( zOZv|E;CwuBK@c_@J+iEU+9 z#<#McGq$o{;U6%nO?S;^vFcXbP+x=lkL@2w?sr7hZ{|@;5Xs4^llZ_;;k@iPE*TF# zYNJD22M>|d2_q1lYLC1VpQibbDHyO1mxVYE~r3RJRkBG&%Kp4cA=wb~y z3oQZJaBHVb@qA_X`(*>k$a97nGMfEr0ZdsQU3NE=rSWw1&y+3+e!OEg5tJfKmBbm| zhw+dk9eyCc8S|f&@Kt!27R(RhGM>C9x%Vu2)Q_I(jE3RbeFR^-145uttx7-zyV!(| zrGsICuh@AZpS4r5eh))Uv3`Tg7NUVzm5K-9vz&5_%)vK^w}tXWteVKYZ_!mOlDLW4 zzRzFM#P=}!+re}{L;bOIG+wnXPAL45TvCSxiC_CGEw9+rXfm049AiAaK`{N|b-^_K zO~K>|3npi+VA{G_Fum0vnC3JIrfo5Q0Eyex!EZe5?i{kny3fxJ^Ns2|fW`05Vuf>= zQY@Fe-iRWIoAGn|MJBwG%kiDVDxV26^q>xzsTg*j@)aeQ)Jp6f(55QP`cMx%r>I%8<2y(*&)BW8@7?25{qamyt= z%!c82=svW(I(k-KxFHxbIgvvI4!OMA*v3zwUTi~OW}DY!xLvZu}gTrhyU(9sax%jlu)0&0kXEe1(iTTT$HB%&@^cd=%BGY`ho*+Lc(9 zLT75?DhtKT&?l=SX{rgZO#yVq5cRSzed=`Ukpj`-tul#M)IXS9ZWD8MM3coFSmEB* zh(qoK47tUm$1XO;o8oTnHQpw|c$0L+9qu*W0`A7LvtV2d=BeJ`Nl1pjklT#8)4RV3 zLHHyDV`B{l(vl~=jJFX6-qK5qaR$qlg!+39vOP;a_gRm@ysB6a;!0Djx{w^&%*E5b zmb@@V#%o%3Azd|)+?&dirK7%Sma+kQZD|M{k6HAvXs9agIUw{=-gIsc4Z^5p) zi*GZeIYTy}@G>(fs+r%c!eEH^2!WDazP$Y~sXmUq)~z3a`k|0#Ka3m@P$!<0+4~B) zUD~ebk;%pq1E9`0DPDQxe(2G9?9qlJ;;nT@#2FF11aMd^Mw{7ib%72U&-w9u7KA69 z0X#EiwD*}2JGN(L3--4{A?f|(?u~bNz+Jo4uas=X-F;cj2u@a0uL7{=_5-z6NQ7Eg zEtnNO3^0~#jREvo_bJxnFe{=1Qn3o-v9^9~=cD6OJKxg0LA7CoJG?D%o64Oiu3Cv! z1dhvZfp@ff!7+M)3EfDMH?&_6N8H|7Ag=fNbH$uG$y)0#3FCN51$Mq2rmb6XU4>f* zIdvF=N=50?5YbZQ$k!PXt9deaR*Fen*NpBh*ESQJs{u%)HF?DWQWtj~ zHrP@BXTbjC-vRsMFcUy2!H8gh3%IxP1%ltbbLs7g)W$et{{wZ!(01=!@&}R$FwnNFY$zZw7$Z`eM!c|`DyPUZ`>ICLelQ?r#CD9gBS{B3j7BdB8 zw6Rq*)-5o;^A5&__Y~DR*jUft1~rZET{ON6`1sZ=3fl^N4P&9|wBx(hz$|i@JcSl? z^*6wKW$b^1_l9WccZk;}4DncQkmt2_?r{>Mf&|=KmQIpOK>cY7sKR6z-i)?Kn)(~y zwFv{9!<0fMB^b8QGN#GO$E9M0b=4=l2VTeFJvXT#I!9OHNcro-*GU{J5WV zn?1;qit9bYrcP!%V=QU#FJL${rH`J(9-L82y(j~MA)F~@r3hz`QxYhv{Y)@P^(WosvA%U6*t%PhPP z=2{H4?0PuPmcw>G9B0eSl$8cIZhzR|#%;#K=zl)U?dj5vKaBQboH6f@_t$@wKVLc8 zgFm5dz@CSZu{cv<1A(dj)(3z7%Ls}JQ&oRiJGYoYVV?uM?2RJgujs_Dh z8Gkwk>a_tsO)$a(Vl=lSFu=fSiANC5SH}(mp zyFW12i@|Sl@XlbP-$u63YTDJ4lTBpml^Q`qvPN!5mDJP1%k~W9*UtK0AiKnbJ6iyc z?m8}v!}~OlY%*-rvc;T3F}Q6U?uB@S#6c` zq3=fB`9|IG^_^^|WgQv8hl(A3c1#YRr8fo1bhozlYK(XzGa#L-N+^&B)Q?CXta| zgZ9c{0TpAp`p_K+W#y|HmihZ1u5E6?PoA&F0{K zweH@#Acatxs$Ki^~8DJiyAuiY0OFCTqR?)DfRp?5{FO z`X;g^J-*~m25m74x|q|Gbu#c&JDHIkg53C5^O` zq|!mBS53g>$!=WqI`_w7&5_uq+ialzRJTFp!16?G3Ll?!@9v{quN?be-AD7AgjAQ+Q+Loi}qcnsft z?9O%p8XuX+8}D@;0Q|jUFmRjbhrj(*`b-<~gv1U*)#z$3hhh!>-Na9B?TPV}RN)$T zL{x)x?q$1q;_2yJ&?aEED~)Ubes3RHf%u)|7WqypL=j ztEC;$B9f97#)jz{W5blLq%gj5iZ>Nv7b&<9eZ$E;;uwbb@O`hbU(~@v!mPsBE$C72 zp%3w4-0B<1S?x~R;=0&4oox&@cIaUk|Hm(OEVr3ljsB7*MV*qGU?1m@f?>4IkU;aU z#fNnGH=_e4Ku@Xo)4lL-7ySF6R1)*Yd{`cw^H>%wr-jYv&_&Xl0>I6#W?XNN zu}iE;68&~5WDihel&{U@t@4UZEwnwEXj|RS{$sYxR*-os12Ogp^-0MhKl{MX?pw(I z!Xs+mJr9`*?OyE|1j%1g2WmwHlk940k-y}Cgu#*SbUJXeqVgLX9Xp7XlLX^ox`oFA ztb7Eu7aR-wl90*vORP>}d)oKQA;AeldLbY;ucv%eN|tPfKXW$=7_7+MDXtzt#~-z_ zs})ev{Ux8t`sRQ->f!GDCqoprU!hG1)Q;qm1_ksLg>92vjj*D6NKq%8jGr}wnk1{K z#vxR#;@T3hMnLJo>oV$4uDIva^3#bKUdPEJVsXJqvJ*s41CW*qE4tzoNJ)uj!uv!8 zxW|WoW~8RW>qI+RBihk|i9+qXq_{s>I#w>(DXYRc3gQIQq6=?2Srk|8L^ai}FzDbq z?#=*D=Zj%onQkc10N_i>s$---nZkx8ljnJ~UV}bhvoK^3bQFx%g;tQK5-k1nFp@Sz zUOfb-;@%|I{1G+o8*E00$TsQ_yet%H5hQlP?`l+n5&NW)Ss$4ul}!6ckli0Fe~^d? z4RL{!(4 zK>U+_1K;jMj{dW?Q^7Er5l6uNp;&Vls+o@o2J%ec$g8P0%8>&W!oG>)L-*SB(xV>F6$* zfh9BIHQtbg#LL1uQ<3L-)jJeR5A80Ujis}@>vdwiP9S}*OzXb^XwBi?yZmQF9P|hy z6w0n0$hUr=Pe}tX0IW6ej0dW8$US-=Yb@v>1B!T!6Hk(HZXDmi@H!X}O{Mk6>#?p* zrLMjf`SdRqqpP38fGuo^(+)`B7OyG5BGC1IS6E?fit7i(6`8D#%3+%gc|WNnHEEJM zHc2kI9XOy>c5f9|kEVI8uKQM;So02vnmP~^05}7!O;;K@5_>;&#Tw-A0md1aDWPfN z4F5Gfo90l2gnTr7yK`aJPsFZw++a7x1VKXl4;_>&Gl zbkA?=vPOm%y{&uE;D|3vNq(fq1iIa93_*cbq+EcA7m(ey9y0DfnNA&f4nljzfF8ro;j#A?E)E&U74y=<*T+a917#a-c$kXXMaV*MIVR@{4*eG=nVfw(o5MDZ-=9CX0Y$N83L zD$cxe@S7sGf~!AU{3UnzVTN6ZI=Ael94j(rkzqa#b9<4$K;JDLGf@@J z^_RTockPCbUqQxQY*WCs%WvJI@VOWPro`9@xq`Un3klDx8x-0AapBB#HBPJSg8(|0 zzQl&}O`TuOcoUmI6Q(-J4l*-feK+8$1Id|S--0|kSfTM*%Y6|Me-{gn5Z67zH3DMq zV*ew2kUk>9u{am%sZ+ijK~|z z9F>ueC?NCksq7H}1biVr-uVa)(;yUzH44ZRu)f=4wDKTYe(T3Q^*Jnmt}!1Os=;R7 zvLl9Cu%o+8=fLZS_&ST)<@hO3<((sjhR`hLY{G9DSQ2+OizB@4Sn`fkc>fIF@8m^q zvGW=g)YrC%IeYM1Di*yV1A%e+V9^;_y=zTXXb$~G%=sR^-#rw*x8nDaSo}ViJ&O zr``cxD`Jukh#(oh#w37DeZR5w2@Cf37V7(7S&Y6MkE7*ID z@g6D0?)`xG0A-tMH^9YvnS;aD?MVPP33{pydTJj6ar7XL3=?BG8~fg1FNNZ06_IMw zD6XzB7(U|>BtAYt-3c9lDJhCEZ-Nxq8eA;E0 zn8R>7lie^0iZx@7={jvU`q`4W=iMc-0Obs(Mwp9>a2}qC@u+U1#jmmS^|KWSjoqE? zWuZ4{>H9P}wy|#Uv%izU&C}$_gFRAhER1FLcihKdkL)F#F``7G77WJ_n&q7BW6rR| zykUV>%Kp$$C&jZU>GZl=#MPJE=ptj^_UWZ|kz!HW+gA1WpN@+Q3hdePGo z+u43X64&m5)h?<;GzSllt*K8~jEBQi}yTAkc*+WikV` zefmiSR>ClDQH8;oDV2sUt(W4$#cMy=b9#lPtUYmZ#VkU?sw?+Zmj}K2bz$-^jSYqtRM5`?R9AWH5X&x4t26w zJPfYAbrU-LLBF=I;{&$KBVfDO``v9Y|9BhBz1m>zvkk2nw;*oYFoYHmJLDde#QI~T z>>h8Y#l?IYTzHlq=)`iN*z@4Zz>^xwg`-f$1%d2{<-%#rgKGj$Ml2W3Y%;D5<*ZmP zoXkA9AoL71a@kQz%D5(!vt#}2#9X*6^f)O?4rW3B4{{FBD3`}1OxMW>K~yn<01W*A zclY|ff(wt-3Ypa_uu607>O~R^ikU7Yk_0sK^Z{{t7|Udw%&0HIty|0qeGxYONMHPy zx#54Z2YQnqCnHX^TVquFo|JxJI}gOTL$QWAH}{}e;-Kt-KLF%ge|uVAGR4WWWWni4 zbHRU|Kl>jmXozwd4E9Ml%w5fL;z)O#I?{2QO42te!Oeo#eJ89;R&^ZbhG|*xH59k6 z?C-um_rth?ySv=wFPQ;iJybz^14rZ%#qVPU#jy65*l%8@3HCMeUBO=5OFysCZZjI1 zO01v=L-$DRAu?pFqz!0=6=dP(dGL9zxb_2Yh&#Uk8SQ~Z69)WH*h4J_kRqkzA)G*H z5+?8BCAEHWZN$g!j0hB=dsGAf<&ZBZv_?m(#MzMXPHn_q!Nj)vOSYm_aWjA?f0_Je6H_|{SUzM3WaTZ8UseRcTngH+&l%M z7lGFB5HQ>Tx@&X7Nck9 zS^DW&(%=65?rk*vce?j$=Arw6>AY zJqAQauj$j#bNYnQv?r19YmxAsCWG+prUb%sf_oC_-OgR*^^&o|sWe|QPhpLUdUJyC zM4aQZ^8dWZM7reoT@8TBYM=|JNql>(r>OiQkpjbrxF0buYTr9C2=JYLE6j!LF{fr& zzBKa)dbt?J4t+;?(c`Q(s#%Zu!tHTKg5vWSvp255iURC_gaHq~mf1e7>tE>A)BDja5g>QzdcTsI$ej3+&?BHpcJaRO#h|AbITBtWjLMI9puXA;-O4 zzeW6>XrA6nB*s3LpGZ@drOMzLiaG zqIeG6@D{JE=O#z#a!HVz9_*5>5w2vpe6z!3dQ_U!?~{bW&<&$ttQvF^HPO7RodvtN!^!sP;T&552mq_mN&~r+X-{zP@uxE z23`?!d=;RftuY)``&6H$R9xc0}zRrNVy^W{~RZ5jZ6EG^S96aur zZ$*dW>QKA1A(g1U6(qQe;6%ElSlK*Pg(N z=rVVYW{ZwwF};ee0Xn8Q#B`MmT0-|a=$p?n;(RuE8t~baEyQOT-F%k8`Rx0tF+R)C zUbrU4XP7}qU^Ij8fZzOT)#sG(IEuU<~4EEW<3Ae*-0X{7z*G`EJTv>0FJ z0$)CN3SVaS!IuwA)5fh6Oa@b5kv3jnV0JLIKX6T zsKOb^!7;`OrJ<_LNYFFQl*@sMI6GwVTsU(yRGEwfJ#&8-=5k^pE@XI=!>TOGfz zs_~#a9)bVnBW_+p!vqiuX+GsNg-OoAe{<-!s?1DL!{BM2@kB0OG;xs0s0WJL&HYsu zs|Kr`ZB&qDRFGwg0jo_*0G4$|z>Gjcx!DG=>^QLUII!O30C-Mc!1Kcfuv`OJZX8%n zB4+t#gqg|Afq4vIo;a}msR_X3Gi#;+%%EM)>^QJhiNK1_3^NM{X3#FDA`VPS1UBc4 zfH|xj*d_zmrZ}+g2PObpcxIRh9GF47oNhk*^FWl5RS5016xxCV(R{7R7K5h!=VLg1 z{0_PIZ5{)1pq|-!9As0l&Os5559*msFm^zlEY<8ANGJKrRIZZ@@1>J?alQCo&`Ayq z=;9h)>%UTXB%NHGTA`+&QBBY!6!x#p&V)4(g{P+p0Ed{g0YhtRYhhjj!JP9ivq=lS zZ#MnIj1gx-bF#GZm#hfr3IL>yfV|qM0g&hV_0*6YqakSsvTtpVht}?+DSbC(2sA~z z?_v1!;X10~-5Yroga5~>_@}*FgFE}KzGv1Hnpso&o>^1kGiwnbr~Ob%Giyrs%$mYy z)~j!f&8#WfFtX$BF6!zI{nx^^#*hYr-=JlSTd zM!)!K+8^PIxNfiZ>7%+{eQP#`vJ=-i>P>>5dF*(1MpgrI^-Ugs$R}%^Z*}Sw<6eX! zrh3~H_%VxBRx5@nwcP@5mErPB{$Z}S1@H@$%h9$ygyb*Jfed3HQ4Wp17Je{*`sl0Z zy}Sh@ioJ-N;56j?p}%rXG;_dYBx)7vkD@8Ao7Pi@o3uO`D9_IKv%m6iF?D|SFK*}m zCT56-3Y*!>zB}0I0Hv0)@Q7jW_lg+icOUh$`hZwaul?{A61;qd;yyb6=7fl0uR)7i zWR@hm_m++CGfDEi&)3yPyDi(aHqVJ|N7%W4%zdk64N z7?v3=e%03kRJhm<<0R>EUGI(*c2h28le4w!oJieUa}6pOZO3}&U!|xwnbE4-;P7(- zY`GB|tRcqX;z}18W9`)5eG#va9PB~v%%}Xe?(Uf6F%)lY<0G_|`Z?a{VtavuX5Rwq zv_J9G*?zw8dh8LrRj|(LXN^Yaup7`x_0{-iC_Z%XCOezr6p`l}I*{?(f{>6r)H1(;noj>Nr_rmxMW%CK08X22EW?wtW+M|`ZV zdRQquX&|liV?FbxqXJ*W zPCJSW(c}f$l#4zt*!xTtmoo9@b#K(w^hkzFw6UxDUYLs3B z#U%4=DD(UwUvc$KMRI7KT}ykd6EiPUXhY%wfT6v{%P%&{zr@Q|_b6XoeN%-W%WvP< zsn^>sfpX@mqsu1y;Ew|Iw*!?>K{H|GIG=;o4Qjxl?I^e4jUnGAc*}x^Kx5u+ab}o2 zv!?s-BqA_WYlTeO_oIP?*N?ZrWa%?;wiEQs(jQ6yZJcsKGBj0lsn z18-|(9{<)@dg_@^!lQP4tC<>NS!?Br@1gGn{^0q6gjJTf4yK>hKOUp~oX~=p zk9Gl!VeRMtVMV3#v$bYkYVZ%pNZ-(%Og?4ih3QfjZEhQTNsR9;$;{YmVtj82=H?1B zzu1}wbFRE%6AlaM*4yJzRB=Dwj`qh6v_8(l;T zyIs6;*iX~R``Gi&S4pi&e}+yXK>onLv2sOrrI3$N8yUdQ)o2@u!UGY5P z{65BfW_z_a4uNtPx(&Y9%iNL<;|j;aHFw8*%q8_O7VlB!u}aYf-HhP1X*nn!tuPIs zS5qE=4wpxGleJd3t(K#1eK`+j^;qSORTBVnHz9 zlacT@v;nErDIQt9Ia~9>%NmMYOvEg67IOk|dzT*ZH5KTl@=J}iat!1^ip+z7?u&Ba zU%u!ti|L+h(V>7ME<@4{poL33t|qJnia?we71M8nhXTM>7kPR{);N89Pi)_8g|%rf zT@r6!9GM|>7n&M5_q!81a>WD>`~#{?fQlzT=?Syp-yHZi&uDZpHhOkqXwPliPUT;j zokN^9*e9-QL=6nXmfvXCs%SPYwEIB`WD}skc)P-i>=h4!##tn@l!`_0Fc|&eF*BYk zvBrvppg0~v+15ER?Pi1yY zW&;34zw3|^>9P<(@p58^MSe}^|6MP;YsJd7v^ZP{6rJFRn>ow3cV(@tD+ zQcvJ7PfuD9m**R_kns-eAwL_SxOOS8z4RjecbUR!<@T@r?6?xqEvV2(wCnv=7yw2z zS*F<0Q!(ahl_SS3bfr?eUbZ$X8#ss;QxtczSSjK}tNzriu*r^oO2}*rP?PQFXtm*vrK$3zvb#|h z$8XU_|6VZROqC_83on&}U$ww!?C5T1^kO~pZyE?*%!B=*3BSjgA~B044_NaJ>c2^< zu-vbXZIDEV&xCHx55rTy0e{n{z^rsLjK?Ip!uvt_Ra{t*y$Y~N*##5?7~Q+cj>BTQ z0)r`n1|DQ~mmU2udOJSk82Rf?pFb!1ArKUJWI`5?iSOQr1*~E^y7ifa1!MmpHSeo4M@6Y5SPG@xqJfKMP6` zcSH>S#6l+Wyt$zXBrfx54)KR3Ly=^^yRlqE{h8t~gD6XmUgWC`mpPQsRrJ|j4k9}@ zny!TIb5MfpC>Jn5qs+!bp^qyTW`Sn^XHw`2p)FJGekR-fst0;?0OCMZs4x>(M3QB9u^sV~A+1>souh>8(H#8j&MF@y zhZ0f;V|?iDS1WL3y_5y=2YO1j!=uS~lv%pW3LL17z)!4FOotjn1-w?-4#GZEWJej_ zii#e6#kQyM_=AxA2bx&;Gwxht`^tybd$P=ZRa|V3KESbNX!nW=)#7XvbA@&+g1_DQ z`LoP!aA4Vxgg^abnuM4}2XhqdBjtAq%;&ZlM)<)wN7Y3R)8H-uzwH3Oby=}Y3UwZWH*%$ zmko!tN~ka#2u<1m6S?$?S$oZa+t>B2{~&HMBe||u)S_(Mc6&=YsaJ)?&@T*c(mW8n z*NEK%ItBp1Yb>B?Eik}fGzrd6z!{DUI0KDq zsQ99}d_U->LPLIiNbNR^%1EhDsZ?L|bbl z{h0>O`-r{vx`!bDGNJC`2RdQVF$nuIR~}<8gJw=AJXiC)1;S_E8W?-ugA{5#>jX7DG>8_Zq(K^54>zB>?e@C=gZ%Pfhu$y0th)Y; z`6aJI@1I}BUw_8@5^dK{;g{s=PvMt4^%IHw^2K%kHorX7uJ`7bd)xI>_=R0}3cuu( z_rou@U-xhFOV?4o2fuuKRR3{)nSs;M|2=-$avFZQZQL32OYn63GGyEt^NYLVRDOAX z>?!;*s+kp@%~AkY{}2Iv#_%Rc4^#+-CQzH`Ds1VlhmxZkZkNRUR!H93TJg zlRE2Ye?K}153aE3qbMcv-36XXz04-F^I)=NGab>lK^r2{Vfs{s`Ao7qxBMDx-*df~ zU7Uo0gihHG;f+fYOD|mYJAa>jT;r@GgOz-|H8*>Kz zcXO=&uKm&eEBpRbBDbzag^;@N*}l54EuV%@{^|P}U6Zx(ixw7xE7AOpdYN0evI0ceQEPP~RjGQ^4O7z#^Eh>|Nh zT-K@MGhXZ4ls&T!=EJG-if`zQnc0R|;*l1fqdhuk_CEB$BZUh0qVUdE)WW^Ae`ukj zL<-~wT$UF``-yA{VG^3U1{p0EzZPL(m@r?UYm=eE4e+}VfHmXCZ0(8~oQ3?jeLfI> zXKUM-K;D8_4QIu?ZQ5UcO(#)^;>WO+(JmX|We&#;91V4T2J zz`~bY9?RB9uM-&K_$7YW(#J^)YDM_jkjK-FYrGW}-XF6QWifQ?BYIM-Tj!C#k_cTG z!t*9N^uWWlFx}<3&m*qeNcS||^-BkUgcU2#r%vY4?fJ28+KR6P>Ta~MmDL(2+PLC- zv5^%`A&-+113JQEMm9f8bS)=QSn#;`GDYh%!sg?Pj0OOnQgJytd_ey`!Nu8R#WKl` zSQg2wkoG5wF<%knqQKhL2Lsr6C80ilT`$T3X2!bODc_x-p33+aIR|c6O|1=fq4vxDbHO9E3gloYAx6dCzj|9RpfI z=dLk&={ciw$tI)g1MJ-Pc;|-u?Oe*f`dQw&*f#CPR-z34R(+Na{|{2ywVqq&V&y7Cas&Uq$|}2?#g&w#3LrMd zZl-a$LZ^N8t3cVfRBi~<#O&TFi{l%$nks%!G03mVmny*nElNo0h@P!yip_L9p_dIr zUF5DRJRWNFhX(p#MK@6uMBMZ9vw?ovL>z)g(7#K?=?-_k>f$G@Mf{{yJCJ%(C;cI2 z%7CgNvkg9BurrMDyrZ}Q8oEjj-3NVtA7s2QOTF0wKiTjP`0GB8+#tz#p6aQ-518)0 zBKTJf|7OF#g>nOVn=wAmkwbr{?hE~$FHQdb6#wD6+TUN`Kg2LAB4qcxW-l0>^X>y^jTH7&mti1FKi-Z5xtFh9ft%gOp)}xO{ZPOC~7A?`W2N4+C3B~9>WZq3Uw9e*-owf2` z+JFJe2SDK*AV74eUnNsNXoPm`V?0Nrn7li+)H_UcFOlYG^#4xNGy4ByWpw;nbbH;Y z`WT8rHbAawD!Wx?Qyub#*ohh*oVI`cBS%kuCK;B4jWFx-qo?!m-09he1XEtvQ0|9IQZU%sW6 zW*fa6Ac?Vh9=vJ)SV#<>gU|oTpZ5yzd_RA##^;~IbMS3+h+r6{!3PZPp_TJYFW~dt z{J9vP$M9!6K3~qCpTaTYT1+2wN#z~*;O;q z^OS|!o(Je52bqN16SRgOKntyctz^md=vKj$$S>4a!Hphnj(809wt1KZI*Si%SS@Hb z52EhMvKUJSi-1Mmez{>~OzO#@+ZR^f4r60V5pvNunN6SFi-r2+?s9|{S&n+! z?M3hpB!Gnu z%{_T~0$yN@m>tUyUzZ%Z2Zr-K4mz@Se_Xy+X3t`cI70C!L40ie(UWTsyM>0>-3tKW z@dVWPS3-F&&XF^y(zR4UXl*h7p?ZMX2aGdmj&hU*)AQrR&;Bvu--wMd6Wn`qxx{Ih zkk8GUr#L*-_kuK<-~bVXvZwV*JnER@cugjpX7T9PhC4Uvob^j_z@#_gFo>H5!6JwB zlVg?P^3nBX^G1g$HasRRJ$2#x&%0>hE3QihhOkr5k2RNrk}$uPp4y1kews=_OQ%8lG##j<$hUwzd}VT_V=_qFO9ADm(zMbZoB@m?Ea{1 z2yPpp{mwYbwh%3@JyDMz^;5F6!s%x=x!lQoexG2{MjtqyV1Paiw_Lad`nJzenMEZw z81@);RddN3Z7!&Jx7Gbu@qhl3Gs1uAB|nP)=X(MF$9JCW2miw-e*}NO(~dz*;_B%} z5_oe^l>$pFeme<$Kx7a&16C@()nZ=IA(zimUn%6@8AZTpU?{#)?&8tsHXmK=C;JtHOHZ zVh`y7-TPU3=DtmW=@fnB1DV|zAJCJ2bUt?i$A6GE1TiB0+Syd~T`h*_<_;x?5)6V+% zxQ;_1UR}$NSGV(leyST%d#XN5rlC0hmX#yDflT+=arV6s=d{r_q~<`b94&mnxG3uW zxcpO@UBGz;i@5dxVr|_vUTl&vQ|<$S#t|D%ZQH8l8Mq~LiDq|U^1?>7JwUC&`tt>Ac{_rUSty1=V&&2X0T)`ms)Z`G9XmR8JOP-;P0<%;DeSXb zd#!(NqP;%uD`$nD_J8&r5pT17djO@$W<-hNMwN7IpgXheU(vq0EP6Jh5n>%E9~H05 z*q~Sd;0C^5M#CSTW1Ey><7v9eZ}jzx-pd{v(DBbr2FmAUb%;^FDFBr55gmRi8~|Qq5ZD=!#nq& z;Af=5S9B-8c@JJYc^wzLv9EKwzdno5g19`ETn+BcVqkL~9wsXtRXRV>z)G&>`5ln| z-g|`Zctt$qGhQIaZ}FAL6MzSe~w+sXL=phz+1b|B9eL z`nh0&uVq6Fe8hX=9nU(WgN@WT@18W9TlsSkSR-y=+q3?S4znyMa_U^ zcrZ+EG*iO`s*ohPBg@A4T#W(r(%WLyUVj)`{wTRGs^=lHUA5MTYZrOlXS89j3K+qk7iQR|;>r?B6lN9l^m_U^nb@aS`YA=X52ordQ?#&8g;t|Sw3;B7o3n(gO4 zbAj_wxGjuDsnZtCr{e+~g16s#s=a^On3g0{o$=a_zA}Pr#9=&^lXc!Q&={|YjVGMX zc51>gV?LXlt>qWR=d&H!iTh&n*%6%2lH*evC@OQffnW~(o#WuTOv41anZ+e5ooC3b zR=KBnVS<>JPjOWu;zkoly5Odq*6RCE1NroI6v;;UNos~CaZ&W6FuVlg_pkT09?UXa zN~71NZ0@zGg>ELlYV32{c6@2Th%UO4BN{2_(j~SHO5O`8+Tr^VSmt6UQYrA9Huz0E8iN9XIoi6r zPtuvOyRB>_GTFM_Cv>v;ww?Sq$%JO#VtSex5cG!@IOK*x<2HJp%pQ+#ZH$sxV9uHC zP(Ha4cPOvAS1|dutXdeW{tADTE~U(A$d4vePghe?R`sI%$D;%3ZXznSR# z$Q3_A=j;`obU3}xTYYia`N>G#yP%9e^s*Bjap3%tWu@SPHFR5#00uyW?iJqd>rm()(Dv{Lum*eNMk45MhS*G{-q3=4K<^T)rFy}&+Fdshir-%TBPcGd z=+ptb_l6O6Z(o!Qz5ZLym;bnkdi^E%(VjSgH&Q{nOIz|2=*pEhP>wbDY4M34Wr#VK zbB1`uL!8^1Nu+!b>eSwxMtF|@F+AU0PIz814DZ%wK0DHDx;FE-@V7h*(0&9TM8LHg z9;!2g@Hcu6)KCO$2dVQZ^%wA0yW;QYxGrr9^r<`Th7Xf?dGCiwyu2G8Kz_pC==I_{ zTk8HKEPpYj4u`*$;j%06_7RM?p}@tFPi?X_^J;k1?rMX{FRdL4$RS(Bg@~nX`v*y; zYi&&*7`43pfl#LB`fS>g)QUz5!d(LkH{F(-+qJwI=>^fA8{~~vUzbQ!b9S?J^ znRa%Q-g7qsJ{GOtuz@PYlXm>!TzWpPx)o9JxDi#w0#nF2oe=|j5TSu7`9CY@(8Wf#D28UAXrW<}l@R55P; z-Xy&2Zo6l15|6z5*AoH?2}#Up(#%&_Ocmq)^ZaBJp$C{QA7bO^5kefbei0&kV;J>| z45CfwmOTLNfA1XNufKd{rTh3B=oa}ON5PC#b_0A|G|EeU%vt6G^c1eQRgEGQ!>q62 zUKG=Af&|ELGyRzLqB+oWH^7Vb*gTvO(niCxp1Jn#f~nrN4FJ(#)FaYr@_SiuKJyka^mOT_8B$(RdufOMNlOTSVeI;P>Q8yuHTeO;;3 zpvf$9kkIsHK{KkSAVw0ClJcFjMz#Q$(f1M!zeD7Xo;`db3?l~Ju+`OAl zY0NehP?1?Wvxk1gPpUJIiUc`|`K}P^XbvtPU=TzykDE}!3s{-4Q=l)jY?lQwJ?B#ByU#D{(qrj%N(VOAzI~i}1OCmj zm7WDvkGsmks2*fkl$#Z;ixd~StCrwu+2 zow-P&Z(DU*59DR%tmHT1M+O=>iVqe7 zoqS>Vlj$3btUIf=RQzQV_l$tnFjqDn!KM{GkSSidi<`30Zm>8$!YMp59I}19C&{FZ z0F0n)+Aet6IE-%$_%@+QCjgVgS(^dS66Z7mCv%_@c|V4F{Mw|D+2m!7d`x6>>CU#2 z6xXg_YB902MSGGEWS~)%x{RCLfZhD7RLK&5jm*CYYuzSZ*>HarKOdeC0}-t(9QC%x zKwg-m$v~f5De-9eZJzwm%OSPwCT2Tl4{3P6PNQ+~Sw=FJ zG8s0~Fj=N00S=mZve_6Wm%p>1hWN&)T^LXIsB^aarl+hVdq0OAKU2{3vEG4Nqa68-FocNygT?L zu@rgxnxBJkZ}7cv4o9IH^MnG=`PBf-S}-Qnn_5os^7I^;mXYZYUd=}$w*U7!RPX5lq3G%Iujn1^<7 zuhviK%r*;3$R*9lhq%BLaH#@XSd|Osi?{G#^(MeCtsLK*JtROMNg>90aWL@8K_xDl zfBh~e-~-7fQ%pRc{|Xn+r7l`lPPvFw{GPh~i#r69_OI~-dJ6|V1wsEBKyRc@V;$O< zp9&^k58e@LSbIVj*PUITY$XZYgEdh;YfqFRYkrrGE54L=GxproF5Yuzxv1yn42k!g znNrdQ4dgxdt8KjJc4E&hox^)Bi}&2ol>hObd+B{$uNXILq?a`HU6~lR+II70UejT5 zWJY5svt(yd%%?~>tQFJFLO!c%D#Ks^w#!D6q5-Oe#NH8a*{iQ<15{Y%6}-?E^lJ+c zafsy|C*LG#XYC|Sd6SX6q>Cq?+(F4{!@ZPz)1N8X_5~$p{@zaG5Hh^#NJd8^Hg7XX z!tW-;d;hULG%?$>{bQ&n=h~?!t0249IHAv3_O98zXW5-{?^)KB)IG~aJh55!QuJvx ze*%fA!W};%rhYXadEqlLVPb6~at3*e^TaJsT>Fo!(9UGPSoIfTSX&^6^t|h+hFU{O6Dt{+Y1*#O;R7?f z&w=^$2^=(;mK?8%4@=xV81;I5EViOP;2lR~wj~pp&xh7&cZ`qs#uEp~E3sG=g{h%p zq1{v#*O=JLd`RxO6y@BUv$&kQYds-$ehv=MqfmP)qKNnSYbDkN_}fs)EQ2ME99(i% z77QfetohaeBR^}@)hgPAX&>cv!5X3oXE%(ljuQFtn3=MyEuUt_S~frf^aj)uFU3k4 zW!DxtSeMPG+1u;o$T6E-(jexv$?nMf)qYp4k98@4LI6ovZK3t|=mjY@?5qE`WpcGY02HlX9MzLPQBJ~ zDXL5jn&Skm15y7nvKX2yja;;moF&-tCqsa2mO;tr;bp(9W^91p-P%=7uHXKK>$fv< zXf0s-AT60kwM!~j%ZK8nTF$g=tDn_tld|a~NgiW|!FkG7ftp zV5zKKcd1|slpOT2F9WzOkZGZ90X#A3zWR(ONw-^*_+a zCceEQR&MRm^&VR+zY_Q*J!6Zdyuz=dqs`2d>u7`JCFp%^-TIyzEI0%F`eI{)McKqR zSY+B(P z!ULLfV}z}FXh2P-8SXl<(mjy0&?6WD<@=uJadL2BK1kz*&@_(+?<_LAzvS+DIH8=~ zOArTUYhA!bAmKpLQlx26v}Z-M0WcdX!R0s+?Zk4T)_#e=wcbHT(J9-6Y@9h1JarD% zivG}D3+0BYn2DUY&U0rq%u@BfIi~*~dw&8RRh9gY!`J9#0_n7$3Y`P6QQNvfU+$d;xNX@F}R=Ty@d!$o&WiXKO-`kk?U)#81WS2J1{xcyb zOrFtBY9lhUU7s|&R#>X9oeQfR-#D^wPs>%RDoy|AhA_En^FF_;>kvNi@bRF)Tk`Oe zyc`{Iz+)38>y<-fgX^nmWrWs8;?}M}3+Q+E#wt?q4%fQe+!k|XJ*}N-A8xYcMeAa9TwB)RMoJLXd@bkiTa0@kw`a@p5)**R`jQ1?|epv+d1s z7APK~$U_=jl$4Jpe~>=YQto`-@6g~_0CEIfAzNfp99#%H+2En zKThlluwVX77GJ0ZB@-sA9gx zcXn-8<{e!JY~KRB9!Y-g2rrd?m}#kemfaCcwHjFJymmPInS8!6l6BLgxKb{WeSkzxzZJaqW&8dp?`Kw2p6@uOYD<@ zi)b+uX++D;-9r}iZnmpk(Q!%Zw4`-f(mJ(F=Ow-EPgv6ZsYPZcJ^Z|UlvAzQQR||} zjtxhQHG9*Z)2-QSC?>K*V~714k}sneCGaxEr3KYBDRObal%PKTY-@PsTHY{L?w?rx ziTA939tO=DujNkiRmg2aVpWi6?ZDL?p`zA+ie+d1--Zf*K^LgF^-o=)V&26(lp7B* zRMelOK3J~q3>7yuc7TfaVWe5cM1rq5Yz2KUB>2Z>gS~rk8#4(%dn1mSgzu7TU(J-KKRM~0I1~7UFTTM? zqIoFbjyk@K%cJOPWsv@Pf(GgHfndWXfAKa_7A)Z_ZEc5YNj`C$VpCrXvIK~>QBS@M zJ-hJ)dUn@WEKW0j4Hut<;t##b#b1v(_=SrfjN<1~@yg1?+bLx&R#ZWG7ft)v$K5{X zQvL7aQNs^ZubEm@z%5Fgcswq2&we*r^hB$)NVpqdtxo>Ou^^w6{A>+DFP86I`ewl{ zw|q~aZ&)_c2lKa>%=7#C8Bsq8GR&{R&X9gyy@{G?!I|j1y zofg9m)Fbl#_goHy@gC^i-zP~gM^Z|{O>muy`9H@R=Hs-ap9r70dNKUH$-{Xa4QJ|G zJP@%6UifbgzNmai_qX_ES>mgNZ9F~oJKIdAwuE5v+D9QbvwkO)IpQ3v$U*I*`Ov4m zDe&{C$fq&eu$dy8f5G)M9kR!jFR|b}ep?H!+&AdY0ZiM>%crz|rd_N+rc(b0K7|?nGRT;Ajch~7u)HEteTD-(AoZ_?dkkkWx5b0D+ z?}HYprm(DQvvZ@HeeZRrYqs|+ZuXgI_Fd-~%{FyycEMSE`#z-N7l>lSK6;{KvqNp( z3~lP8cJakzYUjr5WtW0c>G=z;@%5F=@GsbJMKwk50bbj2A2~jD5DHh4Vy^%y`ZfOZd7KU%pmDOx z?rhU{OzSdE7oQmu8W&}#>}POe^b36IYd^ta_r9-n^uc>N?^ ze4N+d6NlqaTk-n`m9Y&Nqo*jD-g>!=(Zg^4kH%={XpGU7hcQM4w{TYyKcW^ZmnVKq z&V7Bn=avr%kk8~z0z0pPyv?yI5zux8?gx(XJSD!!;ZGo3f8-mWcSjl#)QRgk-lkgh z1^?m8>%@aAxEISQLht{zgbh2!VUHv1g|8%Rqok`v*hSw;*hP}ggRq~dJpF+}T*TXs zu{6iq%&8ucRz`zahCwB4LEc&L>dU`jtl%P8)7Nb`3x3U^FNc4qQ@l|9UP@{O`kGM}EEJCk|MLfKgId3;h3-gdf7cK>WMm zuN40`@J|=N4*%UK>})CQCj|76!rI`!5s`a}%#744Xp9|7dPoc?JtP>EZb%EIiwKbe zW*R1lN8~!)nh1KjH4*%z2$AztH9u=7$=akpJj}{gWmB;UrW=CC73&~}EZV=vHl0$Q z+t7hUM~W+4tm@9K9fi{CoH*~*?wrluD^%^)czxOi5S(#Yd!fV?iky9!{99^s`TioB zo#S0TWlu6ItNTK!>JBmIy-HtdGhUy4;8a$sy`5F-J(oiJQ*QR8-rf{LpK}q^o#N$b zE{A*eLaEcGE-Fylk(+&2Z|`{>`Tu5qfYZWh_p4eXO6>~`?wq*4nq#+lFJ{SY7YBLv zww>+LBsOs&=aailD4j?Z)f>U&e1BN1T&?&)Y#%2cH~?YLSJGhQPQQ4N z)ubgZSRQB68XkicXSGDfyOQ(qt_cQVx$a+}jGGO6`Umfo3-c9hyxRUQ9xAdxx=BoC z)td}?VNiHZI+3x|TDjcG+0GyRsuj_`hGoHXfe_UN8){2z??bctWV9({zw$0$|5Gqk*<%8sO8Ys7ftmGr}VtlYwkkEdDf z%BY{ox1D{*m5h_qy3=+@X_WMKyK?z~`{L+u!%AH;4o-=45;fOmrQa>|*RUo=Ms4(F zyE621cmjkn9~=XNda@)Q(E4AkrTu^1b8fW7BtZ_^Td~*xe8e6&*cqRG$V4g`Gl)RaogV17w zY4Y?WZ;Vg&YJ`j z?%2Yh(0GDDq3Oh_K;hXFok2mP5PjaiX!3&rHRpu#V2_g!bzk>#9QHB784lP`FQi|> zF7!(%hquIXld;h)G#Ojr67dK=;oZ_?>~$;!BA8Cq3=F6V0#Y@>p!T|0)+g06=SIS< zhmPklu{CE8PJj*Zk^4XJQ;yq%^)z&5`m+=1f&BA)Pi=of8S)Nw$t1E4ms8z7D zfsovhqwFK?qvWk>8MXSX*Nvx3P9hDCP;cYDVfyA+8_|(}xCnFsYzOI6-!)ht1xxk( zc)s)a=4(DcEY;7UWLZJ`JE8()c8lA0PiuL$CAW5V9rT$jok!ar^IZJSI_w;x`Dg`C zG$g%BT{-oh-*px4@fXzTYqlSQ_&}?w&2C{Gvx%#}r)trN#!5!@pj-=?#E+y|{wQ`OK8T52(*W27V0dIHx-W&NXUU#*! zIaSR$=-ov1z&LxIa7eC2O&3R1Peg3u#oq%IigNXY=L|{eB+9B(&jpB<4D}2eTI%Ur z{uVlH@}8~w6LNh+OI2-Xs@m{ntmZbS`fivkz1y`1^!u|Ni*KetwWO?6|2IXr{noh@ zDK|gTNjrG4buO*gl&*hLa}1}bvuM(^?RrAV@t_oZKMKC*S#DmyK3N`HB&UC6%;7B; z291QHQJL1R+c_;OnZNo`OuhwtHHxHUv`%s->3yH=I0=1GMGvV$vrqC>cD9b#9AzDG znn89oN30`GjFFdR*u9y+j9NrFlZ0nqBlMcKrp63TVW`|6JT<)GA6BH2T0|+ za2(mMQZH}5F9uK) zuu_=!2dU!tca-R zLu%-?MyhyeLI}cAk@t+JkMVuz7tGrC{k4>#>z4~cV|?sefv&Hg3Pab9zlWgf^KYY| ztKq4R(A7YZ`YTU$g)Zg(EhmD(ju58Y|Hg@6@KjJX?;j^%SnrJrrpa?h-oi&D|Kzj= zwc>|%Az4no5<-gSuvWu@E#MP;%dCvX&tdQN0yOypfX{8KLx^#Kez}DanAQepxDe4mCG9hbQFLnmyZcD_urQwLhm)QKh2ra>GVtXD-A+4o@x+D9lOtXW9 zQ`Kj&@7H_jjFx!ZBx14WIkRB=F4kt|7dFamJ0MIaaZa5wr>+}ge=7Ppqk_daLJy^m8d zE`1KSO@fBz%8iPevr|>_q4>dU7*YDYVLi#ET)#y>JW!-OYe7-WxJ!+yWQ!(K2~4W3gGYS*6#R;4e-wXj&?>` zAXDQ(W@J0Er}g%Z?reYeIQF~kc&JSq-bb|IiSgYVQ{CFM%z~Vg1#EmbpqJ&d;^a{U zIfti=z!+&)O~!YojPEcWn<(SPDc6fN>6>x? znR7_Fe>m1qgs^*4)x0${=FP9E>>?i@O@Oz%#_V=Qz9VCHBFlqy_L0Ez^vlF#_WYKp*{0GWQ{=F*?rAYhk0DS$aBYZh)4Dh=7w}aPu2N!n%z-xS4Z^ic-?{Z^odtN2aj3*e{o|xh2 z2yM<9x8GSq-T%XUg0;Tqb%3?CAy^yr62scs{|&6A#0ab%%z4v*-lWKTiE`x7<&FQbUt5?pT3nxDLL!- ztgL5Knl8oJ95SWZHVUC)95W6P(N;8ba3pQJ3L2eZm6^3VkE#z@X5P%kGuzHKinStl zl-*1%_Nv{$-(#Pot;D)mtsL_B(L6de4u+iYkvx{yE^(&~WQlF0Fa)-zQ!2M5v9&$# z6aw2p2Wv#; zgQafAZozTRIa}j5Q*Y{NboQt*s@7pm{f9b!6Iel$OZh=D=Ak07ZFAu z@N18a`ad56^(Z?s7|Q$Dl^q+0=S(wPV@KBt&H=@I%~h;1gwN6A?c>IbZ3-qI6#Y_e z?Nd4~y8L%PMbwdy-m$x%2~kIvmak^jBse+x3W7@Ycq>1Pg>@CI+XCOz9S4=U&h2{I z>--*LJ7pqVQ9!4{9@DJ6=V?3KIqjZ)An}!zSi)zxdVZ4zg6c!4 z!_N%_~E!0@BU8-y!U^Th?<1?LxnEqJW z9g@#}fDq1)Eh4{L;LlHSX~R?W&;E84GGr+(Uw*1fJI7^cr5`NjQ4+ddgJ}s*D*pagz^4@s0aJ+xN^ptJb9-y z+h5QP<%`Y!O(C28Km8$Mvp=5*hc{RUz#B7i2$gpu)av#VUFdTXs&;}qdOw8DysCHP_xh0ot&vk2gg%o@kqkG#r?0F;mhV-8nbnCe2d!J&_D>c`F z@u>7?AqVIm8w!1gvqAjdw+(8l?*Qf2O-7yO;2e|56rKy0c8$yOGv-47tQnPG;MNX? zX2N?Bh8jbz+devWY8?olK|ntVgUOSrf5_>0d{k|7r|}t41AUA&9mZ$7YN%uUj1Tr> zw?iPy?a#|~4a!gVoCynfM940j4uP=z)YP^F7}xL*PtnhR40S%2#|x#F1$kPzdN>kO92f zv&NaeE2nRV!2y&DhJs6hwC>LogXN60#x`})Cm3P1WxCls{bgI3vGu#1ge~u|@hb}S z@*gj=)Y3W32yfAc88QCEn|5GN+ouou`!Nm)okIsvxSsZR;q#QtC}pW(ezs$onXRu) zk2bemFbyv+&u)&h@OvDX^Jh+CEp&|e#>MM>a`?pf5WfXZoQI;S2UMDVwsOiBi*H=oxyk2uX>zkE z(qtvvWG@x2*Y^xHx%p#h@~aPVlX>*Cc<^$IsIk~AIyW{n(ELJb)gZ8tZcX7OJ^-eu z{>ug6Ww-#mf?HoK##oA6zG*gB;Cj|9WUswCtXSSYjyB7Qf8}j`?O((9d|mZJvZc+D zVY@{B$!Y6pOBId(vHr(HTWSV<1%3kYLYVd9H-EzM*!i71XSY&S%SwT~0aqoJWHT)O zx~Orsh#Vuu_jPGMlXEFf4Fl6uLagcajiW&c5Z626os^uhPxo!uAr{~r;=e3NiW zh^e@^^BdQ;#Lf^?ViAa;QZIOfirN`_0&n7^sNS!en=LqKZ_yi$fr>BKqO7#2zG0j- zowH6w)-$L<272~+*HVU`Xw2|-xtmbyKbiF01_L?Y(~VCb+d{x~9fe+6E^6iw`_spsVO(G|x5=b>5k4tdu}xBMh)O z?-t#XW(CZK1`vZuN6Md!BhT;cz+yP@Jb95Z!|kCN?w(-0g20JqCZBl9&EXS|q93vF z3&w39@DU?`laHg;xr|o7^$Zq@E({4pucGN*CDK7~N3OCfD_ix|{ElKI0dA93^^FaL zH+to_Z1m7kuU|rqrkyR-opZ-`O7*Pcyko51zzA^LHiE(A9;XE7*M9(BK%u|a8Jzo^ z(HWfoX$ph$@V|k7ZV4g5QmQ~-)15_Rb;f{+_q64~5|MSQveFjru^}ZD>UizQWp1By zmEJHA1r=mqvmDt^Y=hJ@`7tKbrA^ItX)~iOc!B7DVlv~gMdIueXV2tleZpbvwVSY4 zD$i5wmPH}#wL5$ufRu^nTvgkkKeh~5N)g)l(+jPpJwsWl;c>(C&SRqI{%tnc1gbXP zU@n@NQ}TtUHz=%ImIZ?}^)NVv-F2hhI2Xlk2_~<;%POLf$*<1=;eF#Imv0`Fe(H1I z!OlHj6o8IMQ(4=P+3B~NgA1YJ-{l`y=!9DLcC5XADD~~7m`H`qF+o+ruy{6p4?`oq z47cyzc>1%6HHhl4CqQbf-yP#mu*Ix*{Jz0n zUZ3f#H9NG%>TTYSDW$#Hd|BI76QlSwzd1L7(noIJJxeX54u%z8-eV$EC2!;sy}gbp?7Hy6Tk=~L9+Zyi|LzM4 z8%62ct_F@eE7*+fp5+cg)TISn;`_Iq31 zl~C?#s1@vor>=cp;DaMuiiGi>8~OZ6E=_)ax9@J6{JUxL3+gfVbbuJyLgP@cr&L4r zG1Tee{Ypb8^~V>T3Kn_>ldrssS66>H`g<1ua^DsDR#Xnds7?Pk^~K$g?5Wzu5HX)k znJm7*%8$ehCVNkVv#tgjn9r`{LaU{IAByzNlQa9-Qe2~i&)Of}KgQ8XtQj4GEJYxzL5@Ul#6p?IuI2e?Q?ZNk48V@v}%~kRlYbCI{D%V*% zjeO1y<^H!$2AM&#&m8!ETla{Nb?}tgHKLO6b6lLMg;chTO3L{RI90V^i#N$eu@^;&xBf$Q4`TLkx0{rJ%P}Wp7e&mC)~-LXM{67_pmZwf`zWw@A9=ndPtmuyQ*zf>MVN;|x6acBYcv1WBNPUCC%vYHCHy=zYlWod4C!R?{>h;1Wk}!AAErq}w>l^eoL}cU`!+ij`W!uh_EAOOyn@cR zqo8}>J4Ak`?|qyVxPM3Z>oC#vxJ@_=G#rx1w!e#~DzpnJb{x63AXhN>0kf`s^Ps{U zTa}#|HC?EbQ?j$i>4Q?3(+NsmB&Oy%52HnT>vPQI{7#nnnRp$-WVNAOSNUzqb+7#s zHoOn`x7M3w3?WkRe0oQNmJUejgw1J`EkDdQikj=fd#n9&E zFE~fPvu9Y3_G0qdS&2_yeLy6*q9+O|pmD#{6disS!u_!WoA}6@fg$CStUuYc@K})h zzd6xrs%*D96z4u?^&wBZ9a_OCTlwruP2RMSe(aHb!B*FQNema=(@5j_ipg=BkRETb z!PYH!fuW71471Mx@%c<7&nI|BL_uZjZqXk`-S4uMD2P-Q5P)r>jqE#Y62e1xJgv^) zk}c#@{yaAPrWIVn^#A$1M*zY*ZV=Sv3#(Ww?eD6f7Cd+4EwCFy^nDAh2)Q(f{YeY0 zh!o(zk7zB9`1%ALOAO7m}XkSqY2Ad17)=zqNod^SzW!|9%o9wh|QKPdvUJ@;6gixM9NQ5kUnv@)~rMlG_BFG$0s+SxODJ7z6`9mk^7glyD&k4RV*j zros{-R+N4)P+4{l7;1@sMAHUez}K-0^$*sc2r`-|gzj=1>^)%}wI@x)U-;YB{vXEi`3Em3d@IC^<=xlv zqqT*qww$e#?P@u7zx!~%`<%MpeZu{Ia1CC#Uc&wE6X|y!>GxmOg!{>j%q@0Ar^zsX#CT(Ob0nKGiaiVqnau7zPzu_9u zr8k_(2z4noj*sS`2OeWO{-?vdy%@v%*E6kroMyYH{^Y;CW#v;fTR!zCp4S-18ph?l z>5-Exr}SzKb2g^FC5Dblp(nY4pz>;pFVD6p)%_EIVshhMS}TidhGjL~{vi)l#4$nJ z{Z$C+UG}$6@+j%Wm2iBMVFBuRLC$|XBUJ6GxfLMR&Mzg$tz9*`BF+@0pXa2F5BOU| zJaevyXDYBC=FVyIcGp|eLgJZ$R9DUk@B3JnVL>1YQL4_A9z)S5_23Hhz|(#*B+1&l zN)#_{5lNc^b)4!9q`I;F!1JbL~ze_7MQZj8^d=gmz_sBBf~)x5VO;m00>q&XbP07wKxle?)Sh;c4?n7 z9~ms;KEg6SOR-t(YYm1mEk|#ATd7+Mx+=FQ?wliTCI5)apC4ixUmju_8zyI9)pe!9 zR$Y~*HM=#X^?H89eRwQ*sOk8N(U$(PcHA7TbKF1CF zxGbN-{M54FiF^)Ao97%>?th=R)3&gDj$89CEP#9t)dKk(XST~fGAy4n67o6is1ESj zOl`bj+ zf!R-Z05q?LG;IZ;Y$#E zr4|UVYOTK5dm8xxyp=JuCHaYu2`qQs1vmu+CeFwAo;F4rf14dAJJ;wj0;x}Zj4DUk zfW4IaACs%Q_TPXCyXh;5+G+c9Fu7-u0QL1BV+9S#m<@z+aVC8g^#1`G<_oI#dM+%; zIqvBb0^|=d8NJd9G)Ec~bm=o+gtY2_*o+;#{}*qe^%nbwnPCNQ`af=AG*I&ck3e)n8EMYX?t?lFH}fSdADs#(O3H#?4>~H z-hHY@uzxY;W$m;BSRaVUHeSUY4)6F;8#KS!6yA+8|?*y=`E1Bx9HF|lv)sPRM#9sB%69lJTRkI=`6}3zui5}%s1KTBUzmZ} zp7t4@KwnCMcP{UrngNW}GuR$-a?IPt{`J@h!|)K5 zpbs`9_mD@X#mP-UI}8wQ(XaY*$NB}O<&g0d&!&X% z4&op*9(-OJZAxf~M|34DW0<;cB_()guWU2_`H4;ATtHF2*eZ|g6O_OgJCi>2NB0_A zgJzPgp*HqT4-Ce56DVQ)8cLG&FmEV7yvl{2kHRMyh1XKy*zB{V+?`O2vhFE9hwjja z-38O_CDQd@uNE0SM@>00;<1N z?WjKUfgo=48CSr-tBIv)u!hXH91FryVqPKr6)Cp-R3#}dmyTwcO42Y2%MTkJuFX${ zgrCT6pxnxJnd2kx*+0S1Jn_`I68N6PqgGJRH2b2%8{X(#w(=R2uj*4ysoKz#G5pxxEM{TN z$Af-eM{re(zY|DiSgc8 zYE+w5n%P73-4u`Vc+#pyv*39*fLrvFOAW)@?DAdCW@Neb@(L6C+C5gu)QDWpJ>zbyyi&o8|C$^^fL#6slEUQ% z)5N9OZBiO$sY`Vp8`Y){FzRV%;t~DOdmBOj;U)4ho7{cxWuyNLbzcArl;UC^C3`Mb zwLoOOjghlsnwpbm^Il-2Y-;-!B1U~F-oh{gJ!NeNK)E1+E2pmq%6_?I%GkwNmkwa9lld##D0tX-J z)99qAwIANz))RD+OWUO1&LIsy^@T~5SR$F*tV~a@#pVqo?Fe^+P*!s?y#qUr#_a%} z&8!Y)1m^vHedN(#P;`#ioAcu#h152lsWT5X&c+3X+VcI2Jlt2Esz`^jG7v7)+_lUz zT)w{eFhR_z(eZ?z}!IPOh!0L`R74!8B1# z*P;r4j>T4UZA4bFJzai!?U#{azPZ65-OLx<)N0&lr=l3qN9V=|>lhnBas6<>p^|(K zp@SzNB$Ygqm(V)o5K$OOvHbMXLgvG?$ve+pF!SJq?2?q4nxS0#% z!-^lEJ%>$$MB_vnmOoAn4@)UOwrQ|y0A7Bn=}x0F-Gi)X2NktIYF?X~tE^lD8DeKn z^X%@dh4Lb^7!wA5GM+-a#(;Eu*pNzkm?<877a2)G`5Z-3!MXLSKa|#;mP`G`bXG}f z9v@9gXSL+G8pxHa0D@b>cQaGv6v{Heg#;BTNLPe(xH70>D5RlQpjQQx1-l9Pke;YA zW(Gy!sNsMNpQJ~N#Cn8b3igS@V?le)p;<}%y!K&3zItP@(1zvM3&v=TY@9qJ8N}{` z+$;USxMRVE7{k&SnXDv>$dHxuppPMnVQQu!KQ_Lp?W0W*`bzAjh9$+mjDYlWe+}Iv zDZI6PLR%Yk%&a6i7rAm;m8vq{S-cCJS$hrqlWTGN?paGmf`D+{?^&i)*Dw*9M^Ncp z2FAs?r(#?z)8{SGoCvL~`g!zghaX!}wJOEBRjUPt<#wwmlPdA}Ow>-D8aEV2?*AGu)J z=Gs8sn?V(2%i8ZqpGVo#|Ag)7A62U7^75OUmYKCTbe?D1?wj>>j7@JL0_?ib>#bq` zRnJo%#Jq3dmffAnX7=gmX6Sj^m|J^ys(u+FwJ&nB@9ph*m5|<=jF(;UHd4_yF zT*+Ut^7ZH!{1vR{uSwWue6dI5>xLBmIw)V8viNJSe9gIvzrK?%+j;!;rF@q`RgP3y1Fl?+#+8~ui>xt@^#xF{%Vr1g#DcF9r|K856M5glD6XnTl$tK1F=8+ zIb`A6gzb>uI}$K#WujbE{XXS59t`>abKZ%NUs<_Bzxu%OVAU>#wNDd$e=H0e=ca0P7>o4BJYximfyv4&1&sMQzTTI6*5mzwuQsvW(T@CK0&-;et&4 zyaL>(Z_z799SiQcHBN+Vq-8J<^h4h9kfz~yBRHhUnH37FN}dGPv5Ll#KS2fUA+5E# z-kYQS3zcab8}{@#)L{0cYSruLdq{%Gw8R_hzs=fq@em9A-PZJgKHYN~+N_mdn=3cQ zv?Wy5pR{YAL#NlHP1V~xJ^gvX7Y{?gs`_Kdh8v?8+;==!c`U|ru72@R?Bt0zK4WE) zFdHI5dp3aN!VNKDXb`%6X+D3L#Hu$6Y2RKFOn&rQF?r}8xm--TP}rH*@@w5CYKdy4 z3~x;0yY9p#p)mhLh13w=h{VUiH4G--pUr|nXH3G4ymtTssqp3Gzc8456(Y6RX-~(Q z-ZIO+;r4m)&^(RY6o-H4b^77&Ew~8vOtIH-5)`1d>Ic3$9=h&DHD_>1E&APW8&)EA z1d~T)vm(_v6xG&KY95;sOkR5p(!#E2^?J`WEGcC}4FlX-s2MHxpslSB`h<>Cx9tAH z7*_XbX$dCB4HE6l1?BoiKOoh)gg_|XpjIU&Y818d89E|C_MH{k5W2FLmiiTVxTMJQKnX6D%fqw);xjB*UgUtI+JX zf>mvb(5pT#R9HwSg)Bs-&A~!Y93yKD4c}0t6QIya zh+u3fn9Z3YRje6mRyiy?EOX4Ymg)D*=^#q`>OPPk;Fd5I5V}i`{mT+r2St$QVOA-N zMPmQ=Pfd0E=cMWf4;>2{NP_!f;0-y)*{azeZHY00Lj3joIV&xl4}{b^Dw@Tr*}`_J zUUUHKZVs&SOtewH-I85rh5M>@HPj_cJy-PYBT!iR3{rclQE&LQT7mY1tMYxtouj*z zeBI@Dh6D<(IE6sL9Y0yZkI`N0Mc>JPPZdTNseX5ebPxaqw){FKY zhlvvg%|b)yBsB(ThDxUez!C;TLQRm{h$9ADz>!_rTj(43PDS4!yaPSw$o}i;=o?Ne z^u2x}1du&v82~BZHT*{yA0AoGTBZMH!on?BqVL?w@8%Zjg*SoqFAK)484F00H3ddV zk)ey$#@~LEaZcRxvjyjcbW7wG;QDObM?3x>PP8DoixwUa?)i-J6;ubkXY0@I=X%~W>dC^SJX%ow zjkmY%lc;S`QF|amP*A;>V(*sNAB@BM_n7tnrOscn0O|~eY-iS)UMgR|FTcZ^REkaPf$Z`eUh5FOfLMKYjNR+c5k5oy!e4x!PulXp|~{mOmaNQ2Eu>;YTUfW{<0#^ zl-fpnHH=Ptxgw9%cHUHUl-KiJZduQNbjwYrC>szE2l{I@MKq-(?ql4>Zx6kX zD01_Yw{Gs77Tgb(@@1HhXqIkmzjIdAd+4-&1xLr@HZ!v=$>sa2jRRD^%`CO?V<+u% zxy|G&r2qf@<^Sydvj61&FWz4=*C&_t$nxzafFe8k>QbJ&Zqa|~&KT#_LaRx?=rc=% z|K-*`b@_(Hhwn69fxK1#J)X(9d{a{jv?HNA&HWVD61mg72n=&DI$gfJ`U2muI^$aN z_r|rR9=X=MPHq&p=szxyYrSVUF6veTxFeE;hI8PDybCE;cj67n_?geO>F5o6ReY ziuOfrHv1YupYh_^&NrKF^QGzXbo2{Z)S;Wr^BG}`3F#Kbjb-N!Y|7>ZJVz1hZvW|?t;Imo!soMe3Wi_Vi;z=?4l$;G%{^xJMURc#%hJ#xPw z_vZB-@6C_Medbrc?LL#{-{0{*bBq44|2N!c-V(acyaqj6(qS|r7n-@ae7rq$`IwMq zZ+4{N`f**G7gw4}6`zSZUTbdG&+_B#`un)qJZ0gbtIb@!`>BdPSJfWoO!^IRSWm3}d)l+sQ>^_^y#zHN zC})F1+vZS)ZnbM0>>ud(*~7_DK+le8Dc+fbitSpfQ){p**Ecwn>l>*tj{fyt%CzBw z-A$*}-(s-2kGvJbFxil9ip%0%rRMoYegR{ zDw%R?S3%K*|JE3Nkz_E%$Y-s57UI?067esF|6%dRTO`>Z<+I56yjeb%(x?7s@$Z9w z9Q?jjD$Ef27t~r&f1#E0P!o#Cr=KIqcSxunFQ4hLu<|bcQuupGNiEEyTQDIGCAG$K zPj;|QhgBvHi;v^5lsFE{R($>!G)48QuTrjjE6c<|8I^1JhS)=gq@Dfv zy6ZkTs$b*D?fx+aN8?F9@e%yP%Jf$8r1O2xp2m-&w#U%@*5tHQKK4QmPU{ys<9?=U zvxUF8}W=QGdQA$t3>TGj_2r~319+j0#i78o0T2guFM&<2$Qdwjoi zG}v9}GBm*q=DSa@wkqp$4O(+@+9c6*G=5wY@9$$$a6i8!%x;*d{H2P?WT(q?BV8vrUrsTvkXE^BeC}3K{#! zL8S<#?LDXrXdt4|O{>^H$*eeaIzJzt=urOhzEc^q9+u>P64m~(Ll(dicfYAR{mk5f zhuu4xYyvhwvEsXP9lUE2EqACz)+`OT3caPF*~Sz@u!=f{zk|Zn1gJP%HD| zVFKgYHXCm5<&3dWzsEty9Ht?P0y)3TdYbJeWYX^laQNQl?GPLn!)8J;qzqOV8qr_j zJA9{-@jlyHNS$^KM547oM|nbM%^`w3*NT4C2LsduNBnW>MSzDsqhTGM)rNIde}=gsUe?OJ8%So?_BH(2*RJV#{$81moC6M} z;6T=T+AbUrgL3UY{8__)EcU}Y?24;JEopH32L#lTMz?=3k0gXTd%8>BlQ(M2K~psi z+-|3~$%%JAAL;RQh@(Y#HdW2-5`8s8FJU|S?=qcV4BqkN$U!bOyb14l>yys-!Z<&c zJj5^gv?E3@p#>q62LPH7Qq{v>h59}B6ZE@AlDDeb0%^t$Wz->MR8Ze>m`TQ3T(Xw0 zE#epCC7fER1}4j@=jVOx)>$_f_|@aChCMNa&JtX~h8z4=KV~l)o{IiTKwdQCXZpDU zp5q9@%YzxPt?^eIdQDIM7#2r`mFV=(iB!s z#^%p#lEugK9~O>bE{n z;I}^L&e=V^yE~^*seA^_*4k(x@=1NX4sU`CCnZFvx{3y zVXhxIZnPtQA2qr+Qtjg;`w;mv)nfL(23*WM@tp0mFC|2SRvE=V#9C$^2IkG#KI{9o z_)uB{lD<<7z59m3{Xc&UfO?RD#jVx53D{Ftn?lD5ySCNd{{tY}33hFd;@V)>KCl!0 zRI;8Lx0!D;hWf3anFPGDvE`T)SED^=tGd|bPau+-_UA^dj!Ay&dq%Q>keB=?7M(Ne z8*I~SyU4dYv=h$$$IEA?67G4N>78Ne`XiexAw3A&$g9ol#lcmP;5G0Dy%RZnVkG<- zNv^D%npz#4dk$f1FCFr3Ne|Iz<0-!F1I~5zCJSTpGmWg1=zA>&tnCaVXvvd(7(}=m(c%~1b0cj-EZv$C14o6<~EDFB*01AzZ2TgVfjvb(pyO6_$U0s#rXS5r#qC*o&M$LP-6haZu8l~W zq~GwZg|FiY^2I7&Nqt)^;)R}>NdBd5QhK_+#PAh?1Qb#bSHq&#BT6)H%${l6ET#zkkiwhR$Xh!RPYqa!4sDW+ z7N@E~w6=&(x|5t(s;u#v94+9yjWjsvG5E{%K1qt_=$Q@d&JaXjjE9~ zN^38@^BSG|jjT~xpN*FHI;~OFSflT8(h=W;*64rq?*rl9UP>+Kcef0}&PcGW#W)tO zjf5R1ulep24t_Nf{GULF75ZLig)WOEX(X=`OS9yp9MmSzY?URcnwk7fkMcipW?BBOsp? zB7d1eRyAEO-pdEnyF>UPoakdp#6;P(lES5Gu`gTzRocxCO$!(Fe$W=qf|aDVoy*kS zxm{}0_y530=6|VB5;>W5=4}opm$2u3gS9X@T9#7{UhKR;jvZak>nTh%MK7UDqWOwC z(0m@D!aMG}2R2*Sdd<`2=nP-q~MVAC8QgZ6-JmMVf+znHY$ViL^~ZXpD|iW>z|kW9zGrYV(ZOt@5z$TKZ%5$^BxEe11q#d!h`Do<$dh^13B+01@C16 z>$%zqPfX!b7e`Wlgp|Yj^dHtMXIP4|^6m?jf?+9?e!b#4A{b*YV~ny8JEoj6v^8=u zqt*dq>4Z2Ig-l7&s-J)IE;^g+;c8$pWiz7woR6$@e#7DOo)L>Z1j zsm%2WA51UYWHCj~qtU1Dx|ma)zK?9=(|28raSGLzv#(t*+QTdSMu2)a0iTgCIENSW zz)+~)z#H3j>p9_N9!}2%>OHu$87qx*btW(6J)VuS1Loes+up5oOp|vptA&qv0IRjs zt?kG0Y=V-0P)R?ELqN#LPiFYN_%PbmE69}GUHasP zXs+|Ph6vYrn)rDo{F(f#O=sR`3gpM<4pmJ0-6*+aczo7gx7Oero&vaJi9OZVZDJrl zl?e9neN^AQ3BG%K>2p2=Pz1j)jzg&CyyWrh&c%k=V>I3s|wVUGAK{wev zJyhSdYNb6szO4tCjfMJwD~|?Ow}QF+%6f~Tw@s-!$z!T!O6!-@Gy4>SAOQ;`fTcfQ z5I>uU{U`jsm-+PT*C0pfd%4_fr(B#`aTZ$9 z$mKYj;|}^WyEYHAs-%BGh`P$KcCa0^?W3hUrW<{%ZWH?K>6e9nkv#42N^_7~wUj6J`~641oD zF9lr*mfu2C$hvs=*}^I9nT`k%m97$my~ z+(diedV*s5?Sp4p1-^+1PT#~{`s<%q*p&YSm;YVBiOV++yCD~856lD6V46+&n&)8! zn%%xtKr4Zox)_NFEuh~Aj0LnUvVe@`?8p!X1)NbFM3G~@Z&-o;@0BcYk7x5i5 z0+cKgZd{97YxFI`f!^qauLcdE!d?KF2WmV<%iO*fz`>;O$(Zl2cG4*LpO|1Z`Vh#I z_B}v_=lK(^Q+*cSus&2?$*_2|bXcgRRB}nG+gC#EE9s^GlZrv5YXrkK%cBBVI#3V) z!sj@LkMBNcpY|CnR7VUnvdX9;IJdogi<5nAhs9 z3^}XUS#d%=03d4N75EUupWMC+!3o=oH;JRH?Eg{!w#nN9!zU78D$<&Y{}0~vodr8vY(L0 z(Ennt-K#RE?-mJBH-8el;~JFPS`H}VwoX)TYoy?Lp#4HKymTF!G|Yg&nSHW?k;$c5 zpBTtXMQ3Lw_-6Lf*K8;1#`gw_Cu-NntZ$l8uEwd@s#|!h27K)DJa`5rz1*R2ptB1_bPQ0}9AdmIa*T2V?Rv z`{8zkqwm@dd%%$aE}u2cPN!6YTUQA)-5T&223j^W4BI=qh$5d;~h%+2Ks9RI6TNrb@}~3 z*#sIs(Whxw(zjC9jpXiNE!emD|JyL5G!#QXQ^$nkr8 zB>2(QQO9q)gew$2XSF5FU*+@n-Ko*kbol&zC8cZI$ho_(?nq7NtnN%r_d^>dgQUV4 zJVa5uPs=AGGC8v|MSbkUs55x;Y4~J9QMY~=p{OU;MfiVpAd_VzMn-}ktTQO;oJd$% z9f)tCsDB>`{$pK-GkA084BkJI68xW4Q4_XsRhVD${;H1rlGDuB{j0+KlF_R=&X=~T^L))%WifHv!*jL7 zXsE;TqkdMTQH84_LmCqa9<<6BQhjAO?BZ3CA>AGc?z!sJL%Ji9q-`bG8b2uyz76Z~ zlhaDI_gIB^XATC--nV@dIiKg=G7^hP%sly@65{@Qmo_+!Z`30M{eY0ZDY37<;;z%v z^VT#X=9Q{g7N-_F>(zJ3mD&CnxjrcklkhZx`t%bJ_WB5V5c=!}$;EF4QYR`?cf?Or zl{ro2e2-)DTxrm=&3XOI`p!4Q-T&cDCMU7)>u^YY0bCdX+G zQ@!I0G$zLheQNU{RN?C10D}_M^>ZAwh_nqZtwH)fDBEKTHmX6qE{=EQw9MMu_PYYf zqn0$%B5P3nH^saAH|kTj5}{GaF?1l=rBp36MVe6cc`#VH286OnsorZcg=y=nAwX3mUT>kyg$)`|%E|El=;fHa5w!!mU*dEUaI0;k1=@8Dro z&~r`b&@*#I4?O($jl2uR>H17z1v2fOfn5P+rNhm?u12Q9dJ zren!n0}8P^IOk6gd@xp+7}Kl-MW|0a(_}K%ELdrqgjTBep5bFonx)>CmsY-p50D(* z(^uIZ!{L>$m?LX8m>_ltDqF1Kl|$**Y_b~k7O1Q_ldUG*o5VG}@vIeBr=ZKw%B5(_ zh8@A6T=`w~3X%vl*n3ukvw4b6x|l5v8yawvpCWvE%4akH7MU# zxx^}?FaS6rlZAwb#dn~eY%cBY6r!I}UE0j_Q_xW3_V^M_rc>}=JFs4<@yu?ezQ;bo zHpBKP>HE=XoC9#elyhYHYQ{32@v6o$BF*+xKp10)(aXaSHhH1_Tg#2fwi=D$vW!gRaC^$%fmoi&a|bo4F1BNn zZi^Iqj}!|Lzvk)+D=Hlvi5)Jn5c<>4mrCnmLzN;mIb2QoI}rFYd2*>Xy;E&Jyc*&E zzRKl6Qc!>YT`o@#m&YYgY-*frv=j7m4|s+PYS-d*SO?s`4# zt}`PQ&gTl}GyW*13Mt;yJkQu&=krSS_GCYAZF>?;VKG+ErD0LnQ@qFfU+Gs+s#T(4 z%HLtQ(W(KZ-Xvf3B*81rJ`!XAl((0!I#w#`!&Q z1{y1F0XM~0y)G7snNDzMey+;t@cGkuEUS6X?_UkN0ki_q2}CYjoVCqqSs$e@MB=rC zRyEk@@VWZ9a$0BY$y%=ueJ9v?UKVjZ)xz7_30}%A89?1K?o?wZ9 zAIoNi+2W_*h(mU5)22;b?Cne_pOFedEu}h-B}obMvB(Pmx=jDq3QLq3i)_^&d-(ce zQD!XMY1#UdFNdMGmAvl?th&>3wU71jk+>Bv%Z+euvm;G4>0=`?|3HjCHhH3z>n{XP zR$ex%{^aSGi6+cc{n$$un6yxw`>GF7zRmidC|~(3D$IL{Vb5X&gbdN9iz1~D4yE#Z zfw;mbn-<63um}%Gu3HNLCMctkM7u2T&0wQqDD;uYJ2orZXDq*?d8)M<#1zZk*)FLfB= zqmh_vUg9CX`Sw!{ajyZPAzu7qry&l$7#iY>CN7K`-=;{>pT2n7@%`uPoyYf{NWN!Z zl<^(hZoMQuO4drycM9uXP^p z6EB4G4O}YYz3l}V?;l^lc$ak@?|&VO8t+mb@A6+A?4dV$CL{y&~-ya)CRjd$JioyNQG3#T6Mub+?bKb}ABc&}O3 zdA$9ReCwW<@&42EGTw7g_u2_v$NRFQQR7|2GAd6S33{(3!io#?4O8wBtSO z)z0I6ek9+B=VZJOJS*ef6V=a6?=;x;?NRtTwK+dK8eiWc@H|=OXs1$rGiIX#-{$Zj zm#WN1sr+~7_7fwWLgP{J8AduEBOR2Hu6{P$x|Pp%8fj-F?jO%~80ox7O!>1s(%Lwy zTxE6`>9LoDM*7QVI*qjYY-pqhOpM59M2)v4Qb(U>PdnbbUJ;cZq4D0L|NEJ6zHgqf zFn8kqXJoveKqJ-|_yi|&oYC3-)8WXF^N|-LKBg(^J&ZmS&%*o~Q#a4cp_Hkfx7s$yQ@(hlTHl91cd#_WuL?|8nOgvaZV#+4OV-|3BRs|3~7!e7Yn4kHiF?=820L zdrJJD7RLWicgFuup9cR&ik|%R>GA)|UGV=?5&ZwOf&ZT}@c&b%!~ehh5AlC%%&+4A zm%8Bp&%5CNNHhIUb;kdZxW7Kt5&uVGMm@#j{q&eq;{S`n_ z{QqJX{2$4;Zi#{aml*gTb+2uS>5Bhz0rFsT!#AS2R( zp{Q9H+0A(un)P0hs7ob^hC?e$r17~n??O{^rPR?;31F!HFn+9hkUhSlPHlMk z$#6yQK8fCIo%tEQNQ%dw?AXe`M4~DriuoDCrIlP&CAR>LRpr@AsNEeK4AqXWoB1`D zUhXi{IWKn4XtAD^x;oj=l9Q@G=j5m#!%^MBQ4dH|z58T zn^s$7@Y46Jr>~CVm#L5Z5cX?*MG5*a^7)F=^*nZS^&ECRdKSBxdVh8&>j&Rwj$86G zH?W$KZ>|wdVKD8gYJ3->FMrc)qJwVt3u8?B&mZ7S8(VM-rH*CIYw3yg)CDC8!Ex+U zZ4|h%2;SUO3N=Y+CWVe1&7rx!l+G69^d^w?NQTB;<~vS4pg?Lw)e4@ZWI8*I%iQCOz<@FMGro^>M+|LrX+hmHguXdlrrAV13z9^0Ty~Nr0tA(Oxa1Y9% z{(_uLN!3eI6>?y$JVQtvFDY{+$shTvcA>0gT;di<`6N#zSA?sjS5 z5{bJ+^6itjcFDI~;=Y%BKq_c%3`1q+mZ*1Uykh5cd1L(o^SDeQ&Fj|Tr@OCGb9{YcaAr^RW^CJ- z*qYe3?TKyM$;1=e#v9w2Xky#8{YIPL{&#D?ZPl&n`{CBP-RE{ar@QYt&!gaNzMl&x zvY)s4FWBPwM6lPDKE0W)I9}qB>gX2@aJXkiT6lt1R2X3b3-8QmSOC_I?tqcEk4F>8 zttred7uZaFYSAVJucE<;Wn;r(+Y+r%rK$BIoJUmiZd>uLG#gOGcf_eKU?_g5l+Y+6 zSceQ(ihh4(X2(b`3n@+0nYdLsatQj(*$qt##shN0cQ;H zJ`is(5fKi|RrA}qJ?b)?87$AC1_XQR;V)2rZd7k4jBmJk))E>!wsM>+8bEU=k-7y0 zWoF-Uv_3UgP9{Tlef+%(8SwfffGk^1yRXnq0>$X&#@RHL_6O)btaxF!e@uzjsbCH^ zFFIyzRp~;TutlT%L-sVh>Zf(VGD`PVb+Nj6Q@($wq+Ghy6%C`4W==4j`@*9G+Uwv5 zW#zAVMHs1iK--?R1o9eM{9~`H$*KW*soVVv_hANo8^8uUhl)`;IOh?WM)1kC^NEVy zC8jyfHPC5)C>!Grof7{nB>p+UaY@{!K7$V!3D!}yc*p-qW-5Fk6A|Y*5HTTo#1TI$HhN@$@e+*jN`;#k&r4&&5x71Q$V+w7KH0|fCFuQy z(+AI+)$>tmQuqpIy4UXGrN8ahYH7ve;2}l!BkMP$+5S>^Oc!sw+fRn05$}bOd^(7L zWGBOYG`?oJj7{L-MsuzV1kEJLA!XpnS$Dt9TL3s&y&ttmW-YCG9dQ2 zx|NE4w9~TSo&}b`{(iM^53R{kL=9ca!(|s}%o5f;&f5!}49H!ABVJH(RIq zDuNg)np57;++NuJv)oTY_*`pW>VZGkRAD1j%>yrd*!%*m$6sSFT|(lX=ApypC{zrc z<2Y$@cxhhALSJ_|^D(mH?7p)(TCPRv!x7um^OnhqNSnIx@YF@d=lf3AKDr;EW_sgd zhb>Tez0P``_}#gE(?x~39BEMTP@PZDCpl%O*U_^dk9uEpANu0oFNpx2?-iRpi#wf|}qnC9{Nxnjm2Xu#&)xQ{MeO89$g#vbvp zedCqR&%Q7w_tWU*xY+D?H2eu{=#*tapJT3O_}s!GLYF$K%PL^={xGtr|KDdOo^n0Q z!Biw41yV^KwW%dJan7I7RyH^SZ3E_oC1k?hxg{4$<8JSXghybu=n`Gh`G*FM202_fC>tmZe5Y|fu24OTpaNGkt;RBphVF!W?FO!}HB1Bo1o=I@T20HR9i zScAm&cF+$ZUf;nHMS6zEg&sgpmw?)&UZ=&5g;Zuv@mAGh5fV~C5pe2s@obguRwg9ysHq`1 zjiLVlw>~Yz@ZdC;p&pyLR8iA-$(5YqKPXQ&=J|eR0h?z5 zhetmg3%durab?a+Sei6WNW4MDhlmWA!ZoS8O+wRx?tlXQMV z)at&lh!PWY^#%38(^^6(77{&&%HZo6zvhT>A4t78cUGBH&Gh(7m-bED)jvvmF?>}a z3A_i;(HX#RmX38kr_hp90EAxGF<-BEqqwh2N3~jI61_~VU znTGzmB+k~}>1BglN*jbgPySOcBWM@B^}>*&MKX*y$z^ZpIyAuTG4-75Qt7ylGV>E-Ws0{@f0*xL$< zy@I!T^lAIdn~oJc_H6e$78j&>E#FYHk40 zT=%)J27XwFeV8Y5>e_mwei(FS4N-D@Q`uy*O#G3bQ6GzP(OmP3;e<$z3sve_!w<_b zP}_-;359yj5*ST{QOwJ zp43^}mnSiGa>IEw^amk;1cIrVE5vSF66d9DA2-N-=d z-JhRoJ{UcUJ_8@}osmGhMV~J|P-16hw?&*2HByLXu zf{a(*F;e!|XJ4|XyHl8DQYw!wZi zG5pS+C49JfVC&P|G=2`g*HEZq8IbVqZ*ziEzJy z4>u!F5H_+-iE+^zq%w7V9L~hHyW1-rGD1w!+J|sS73#TKquI0x;<*|JE6|RGorowU zzf59>Fv>?SSRktPl6w1OP{a7SdZe;p4-S?X>B!33OW|O_*+WKIGKg#+7{)0K^M_GC zHC}zNK9F{>Ef0ykgxFN zXBah=?;S$&ExYiPUsk-mS$KEvkIYOQo1m1I7y9ok#TIe|@H3P>o)gA%{>s4cM*z(} zk|+Q#2R`$$Do+>|+`Z2MEkO3LK9qZNiF{|s%=VE{{G<8~2C|w1Y>Dpd4aG@aHnY61 z^cS15lzlI|CW94MImY~Jqb6fJv1oN1trJreRVF@Af`Hv~bOr6R;qR%si;_B2H76Rf zo?88um`}866Nhgk0rVgE3cM*xVVKv)+!cL!}20F&w#O~&iyZ+^B4JSnZL5`Va( zZ(qsgWcU(~%-B)*WsUfQs{71)*L;{fzz38bop1;bpQ+P6spnkjkDb|a7zcN&J3LDH z`OR}q3u{1a)?#=qeXk4=B3S9~JcppIBCAR!$ww*(wI`(LG!;g%x4yRKfi_U~)}iO$*j9%3VEM))cW z_Jz3KVJptl4?gMHmLHChVvD^!gwv}utU<99HL}|#;!tAYHpts$14ml=%+%yEEvoAY zZZIqQkb5-Mlq$c}n;rohe0bmZEg_{QAEl#F!j#z=sRIA!I?d)8TnZQa^w{2gA3mVU}( zOE$w;$T8ah7XS1rS7)ERqc&K@!*s_R8C@5Db0c*uq4B+Df$>38R&}8mK78 zro_3>2O#uoDDYyO{Y0VeW*F~ZG^bt`jc+`@T+dq(5=OwuC-ecOePAxD!maQ1zTu>9 zh~5{9{KT>#5FQitH6AX|)_D?8C$H{UR=H{D&v?mq$i6YJScz78) zN0iU@0?ISVE$?kd`0wAV)Zvq0d@K|b8N6Hp`O;53nKb!!U;p|+3QQ32_$%>##c~*x zM1*Dcq*w`FuRXJOw5D=RJeB!c6$FZ0_k(mzYHlJz(wbZS4Tu2L*K65_+ycGNK?qM1 zK7ONrbFk>@_e$UV@DgEHub!Q!3kEx?PqhWAfhCxwgdf(Rmu`L5t2ifivu4FmHl{Q6a5dfAEuj^ zrN8c00a)|8N3KbstLGDGeNd9LBJw$+K23YO&u8GUFDsppAe_kfu1g#d9K_#Ab>=yt zPaU4tF&wqnCt#8~E$!I7D5GN35)KW*2|Ktw|#3|jHX zistfVG+~qr^@dMpBqUj$p|U+#D|Wi@k%rlJx-{bmkTmwgp!vyKC1a~ycoq;gZlL|i z2Vzq>`5`;039^Nct$3Qs;#gBg`ePCN!Z!#`fLtclZtxvQPjeU7}XLs>3ksw^Lvniw}PmNH? zg_@I;*4Mw1ECNx*+F5hdBOqq}41Ei_%$-|;!}DNRL=(M*a{q7&P}bV(S^oPKag8qm z18e+T+piYm+xc)2`c+TuCM>r%nBV1*>T~jf@pyxNjnD2= zhMGzrS-&$qaPOvTx`a4x;RCeTk(%!L6dH`WBPQBlwMK1m)PzA{q|VLV0A@e1Xvu@Q zsBO>tg1c)Ug>P4xyMMZSep-dK1x&9({kd}NaYk@VvD)`ui0pj1chFWUi{0+=wGhKo z;BSGm+XOHUrY|s;{J1-zS+TgtpaH{yO2>38&_4f9GIOl|`o4M6@K9KIpM#)P*T9H7 z*NQ_tYygK`dyER^ggR@BT<1xC5I>FQ+A6(Z(R9zMZSc{X{p39}>(NGKJ|_cbR>Y`F zE{CE{_bR6Y7BK;rUc8_x7uQn8ZY-?@WzDWBtlNylh)js+S@7k4EZh4Ev-Edq1ff^7 zU-9@CD_uhEixKHL(aCf8ShA4qVuIGd-8>Str$6F(T=UENe!-uG9E}t5yS(39K|A2R zsedm4W>rfchmbCt`LBi+^Iy688Eh1>YFBe-c4P0Wn_~EGLA^YfRm+@g;&1tVoNgXL z4o67Tf9(4iooxSL+WDBHop}Ad#{NP&LQe5#!o~$n^P{9$GQ|fKjr)?qkFF)h1eTrW zBjHz;MKFY;o#_ByEpUt4>fwc3kJ0>&=dy1DBQX{m93z=M9H!J+1xP*0LjsM&GRM4s zHI%t&vbs~Vrwzguzs?74v9|nZ6RuFcIiTDJH$$cOv}o$<2CH}SJX%gIHuVi|Y(G=E zJD-&c9CXFU{5@lfq;7j_edtHS!JDk13b}~1x)8_}oq21FVqMQU*TCyOQxSu-W5E`j z={Og30_WaX=pM>BFKk97qNL5TZqA1u>ag9o!nN;gvE+TFMq4fZZsIK!)zW}!-D}4Y z6UjobK|ZAzvV`{I4SY&t=dZa%&M0Ozv5o-O@BzOVy`fFv3h4uTJpFxi}y6s1~=IjR>YF~XHTY_SvRXd+2yW3w;T{43` z^ZbbuklZPBueK00$~=!00Z%ksAd&Xg30v~lzxJ$H!jQ#e`)357Hl_bn(U&fjso<*rzlAIL^qxLvt-ZyOK!>Wl2Er{P}` zQeNs8PP#VbfTqB;u4~tecuwx<*QzvSFyADLY0HXJB|ix1()(Voro=p|RySqqWXlYf zjeV>;+DMMnaSH3qtl2nPEy`)faTi-h*Qb%KXEn@Y>M!PNMOt^3hBX7d=As6)GpG^= z-D$v;xua@39%v7Kmk^Mmf$=l$4Wg4sFbCzqsv3PK?=m#d_jfn)IfVbVr@S1$mshqc zz6;hnGc zXI6Z1gT72fuGqn;nl9Q7m7LpVHXHi!V>&|~<%{F#r@9N?+;TsV#C1`Fqq6CPVNhSE zCUak}l8@^dhD*Vrtlpl4qMH_=#1~&y5_P=WBzMb~o@#?tWyyecW19&RQzJ#kK2e;~ z*!csXf!391zQ-HiI)ApRpP)g7>VOZNf^+Z7Ut53HMWM#?C~*Gf7#wbx{a0)rJ-Rbp z`g@FkM~O+D%oN;JNEj5u#>E&?;XzePRxrALGO@EsYU2>f&1v)##jQT8^sHHrsFaN4 zrvb*wmK^vwK7G@YH9C@LTKWOvmwK9SM0dc10j+}VKoH2PC`#jM5Z#?$BBPbFPHE2x z?AAYYY<;5?Fan)Ue?jOt-isOc5M^zaywzNIC0s-hhw(_m93yr!LSq{oms*r)3{eB% z(%-XmFr@1$6v9f0qm5d$U9?!YlrIq- zr{v4aF#7B6iV_~NUx2odlGN3cw$cgb)KX%JLt74&egK9#{XOxZut$u_uWb}fz+SZj z6}4FP-;)Hh8j&^^8xbpbIrIWLR_^A&m?l|?_k1i>a6YLr3@WE^@4W$$p~u=~ z0i#M;ODIn{2J!9{Ir}KgI4DGFNQD)C8=}4TFW>Fo&gxPW)I(}d!Yl3SkH@(jjktgC zRO3mN=OI+iiD#7VO@l*gWvH;}P1}tvpjz`aVkBt;Vr`bb-t&KkMRMRk;`${%L7Q!* zv9M-{ekPf(5NjtIO`Ii#A2$U2p=#I;3ttVw6#`c+0j&~=IHxp`Ds&_PMdmEGOtGGE zeUxe^W=50y?CI}|uzwigQb7gaq>#_d7_mmPWQe3<89hW5Qr@RP9yz-FX}7TvnIs9- zbK$N#*DrvIfiXka-4{tlnF@S@NOEaoNatTQ&{{3NptBq=E^jGjWHy-!p0^z`((s;4@cctNtNptl<(9E&SMW=R!&gUI2TJ} zEmJ4q7)A7HTB!$%wItq_JTmvOHD3&9Tz!lF3Qw|@7JURZRNrYY&B;Y<6MZjXHO|aC zmss~BTJCAkP}At>2)nOJRJ}v0ic6LfZk9K66#ruUneOZyO^Tee1Zsy;N-A)KMdWBo zaD?hyeT*6NU~*w_hC-!4_HDpHDKSl? zFliz&>t7zupR>VKF&QE_g^|Q7E!I1+WHR|veraRf{)`%J(xIem-#|BC5K}4-L2foS|G23+QqJTs=j{x;Jmvx|NFqLLfwwO3GVk7DaxNOKI_5zFFxE`_^Y&yQU$8uo4mr9$$q?guFU zUHI2&5vkOpz2WCuR|I*dz(YJXC!6zjkt(q_XPx9=tUM?OvjOwW)bKi;q`g5OuJu4D zLkg`ffyqAT6z4A`g3exSyi)nS9ni-f8IT-iPY-AGpb8cz6Y=wqbi7Wbu)AQkm6u1rR+lYA1|A=C+yxS2!PCv|iA9 zsm=Z77(;571V4HF`N|k=K)ntnHikm+NJjMJhYWC1x)~Sb zk7?}_{<26p_&v$Nrlpx0Rv2Y$Xws}IuFKr4Dg8iS9aKE#+)tsyaOGgo5wd)R-!PMS z-4jZ@C2edXNQe1kt$e|egvpCdZAb4YXU=zISD1V|?MYL#zFg0TLn9)~#vDu6d?(M{ zlz0c|sGS?DFp&(vjP@~VH!QK;^eP`_r^e+irK)Hvn^i zZUr@4rfpVE-U~ZC-%*wFsIk&$O?H7@{Bg^s znwHqkPWa_c~f&p;wxl@Jn>Drd617#8bCP+K@pSy8Q#v zqr=Z*9neqF!IQMBT~rR55s?=I-b`_vJeR0(&pFLI}^|Ucl@)m zi=+YDR&!2pYOT~zydcVM%d{Oi6TV;-2R&(l;~1+FC2QsaxqQi()Hgb3rQG7W5Uocw zF?;*88;pf3&I}OY_Vs>9`7Meg`JKPh`+@i3?~z$`)~(?zygdnipdbz1+8JfUTjami zE;HO2*g+!=Q)8BlVd<{GsaU2r&%J!$$f)RAGv`>-pj6|-z1;0Qn5fv$f`RzW==rWdyiLs)KbG5IGFy!gR2*QdpFxHlP#@=IPY zMK=ra@ZdhI2(xc!ZEKsQBYdqLcm{0f{by&SFmSQXqSJ+FagoIVhh5kJ{Zp|Mw0yn9 zjuZj|4TIzio{HjT`FPZ-g3D>&J$m#v4&u?O?}bnY{}u-O++pMOPa5^w{T|Dw?gKjP zJ;&SuA*q29w;2(F{H4vB+Z26;{fqTNT}_lto{Q($uWq-roCddPS5etgRar)qGe{I$ zAAv9yX62Njc%%~+a$ouKViOBLc3qTzU7*22FL7#?X|tW8i%17Qi#SP?%ADP4PxEVI z)`tt_WrpA8?`YmXj<^~VKXG3L`2Tf1DR7v}ia;4aSze6en$ooyL&rx@fvJ`wYo0v^|%lGwXOOb$IF_L&;p@;?4?S-J6 zQNTQ^(CcD@bdV6~CAgWy*Sp{gnh((|;suBlH5MU9bPO7}+?K190Uod)T zy9d0299_2x!BkS&Zip6lNDJUn!*j&VGeO zZj(LBAjpV-=l?=S0yigxJ(&^c3p?=&$^CT)AvqJRs0Y$1fM4{OHzE1u8N2&qGML?z zH@a1Q4S8CLwWTB37wlKoDuXlBPo>x=5_dU-8=hb2&Bf|2d}sgewI>f;bi|xW<4G{WUpx5v=Y{C*eiK$!weVhi=0JIU^ew`z} zoWZ+}STU8Uyt^biw>VfC+&FPkZ#bB9i&c;onqpl)=XVIUSVY<7MV;m z%7w7mhRN_=fXv2h9&Orn8PzYsJG?;RY`lvyD9S4NTK%&N3w}|z}(mFU_&w8N$ zmL@BQylmJHP@QtIPTx@R^(A>}DjbH=_~Hlzx!W0`epW@;6pXi#oczQ@qW$pLR|y!g zgJG)|Qj=8;=JS=jwqUgVT;k{8u0CPn%iLV@2lTd^pgHAD8PA$|4am^)=}eq0Uf_cm#rlmw5!<5PlGUB|>!Z72(YUht zScxMo<#b|?GUQkD2$`9Ps#|xfU|~r{k;!!t!Q_*zOC$dXy)&_|K=XiDIbA_T13whS zy1fiYMDZ`W^t4zhMezWVb=^7n+iXw@*B0owjKo+Y*9JQ}wi@5y`eV&~xHEC%(@N)b%vaq3l5?yp6s%ukXHc6fn5Tv)l^8`7J zLh@w+md%)62$`EiOq-AVp`yvxqrnmjYQFsJ?vWGeb|82*f>lq?Lxpio4-# z06qH~6Wfgur`Y_oX~fyiz=)OWDYMF6FjFR^4djfSQ&xW!;ftks6ZwKOQYDELrDkpk zy0*0*sQ0kb`?yE>Yqh*u8$Z4+khCqFa|F4rrU2JFd0qO_e z5@AbF%E^n7q7ReWZ6Z|9;bw%^LCYJ|#v3D^a++#mi?D@iitG@H(1yxgiS04JXA|Xh z{h33}gJ4khJdkt2KIBfgZOg_c9wzsr8{P-480%|p8Hu6r`CNI1Y>YE)^(;#4iId99 zd}g30pN}Pm#0sFsKm>j1u!1u9$iG*T+7?9dT|o6YvvzG9N$2^Qr4!|M*Mp<@0|e`n zpC+{qXgkPTxVO6vzBott%5ub?OKe6XdC)sVp2IN^-by{Je4w0E(fFW~ZhA%CD-kMb zFZtR`Q~EV~ySG=qFMb`_>)rF>!iqlltYv1R#qjJQw-JD?MdGrG$BF-L(^4f4r5z^5m z1=?gTXbM(`LYNngJe#(kRVJT5yG1SVGNs94=-xJybkt>0cXXoCx&kRR2h+^NPe<=? z!hmx6a4~|bjhkoXg1gMyZxz7B6&9?IL9jnrl#eI_EOV8!n!-nDy5}wj1r{ar#Tx8^ z)BvbCVmFIf>Im6wNj?q``z*|}QdsXkZlP|1FX}3Z)9n`5*7qty+{Nw6+;9xL4Qxny zsSh}k-4*4Hl0Hwp09|-djGryoZ8E0=j@eK}FHw^eVg4z5mx8N(Xgc&ZsLr`sQig*dzk#BZw@WrNwVmeT#H?UYL$TqRJYgKWa z&Md&9ooB2{fNoduC+#;f9_7F6a z5dQvlO9WL5cm&TfqH)eLK`}|<4xpLgpz#|B6)gX}qGzwSie=&c}P%&c=|C>|N07+9;Hm$`UCQnl+hhV{i$2O8rtd)uQI*Ata^H!xdO7> zAcu8kn987V)!qi`lA5TQ^5_3DnK;P|Y12*#xW^n@^>nJ7GUa@-o;ompaGzYef1LWz zm(s65DfzL(x6`mkkKQiQC%7|UTC{Vy?JY#l|4^vn;vHONh+~`*aAJLvDjTFhvk2yD z-lM+=c{Y_j;l#=2&tEEUh6qT-uZj5hCpF*bK zBbu5c8Z|CCS<7s==ay{eLQWL5ONqA_^3uzW7}91`$l-e2Yx>r z$tt#Y5LFbVO0AHQEC>dEA&&HNvi$WMtG#!g`Z&f$e%p=@k= z(%#=Oo* zPCD`%A9FnFo3kDe{<3?-aFA{D+*K_`%*-QX;5a8ooP!3V)hTAXJIQ6RYJ3kTiB{pi zahXOZ(f#KS*4qa5B984C+inV72m4@;Kb1o@-OSUW*zQjKcdZ$e3jPry8fm++3eNjL ztvI>CINazbo3~$t_t=ZAQHSjx^+Duxt#^7xXyl6^RZ1>FM_}x*$74-$4-B#b*ofLo zve_EN%4$do_qc_S&Dm5i3_e;!wZ%3{)m@nBcyRxzGW%QnE zd-Rs~yPVS=4$TGEIXASDs`hOV5ph*Sp@yA}khdE&Syw16B`oi?P@fn$eVf^{SlgHqA4Q$LZF?=5g<&jWrxDDg zVBX}6^4QtbelwtlJ&X;87dLD(L<5-7hveX>vL_Ns2y`TRS>E~9Oqf1ReV3TUrixE(4 z?8Sd~U$w=mERrC^r<+_$L%^mVH|i;<8Cw;~=1#HH@UEL0`#K z#DU~fCbju-Wb331N<$>%<}HipT{PdB^ld{_Z5vOSpaCk>G2gkOORXmkEVa=+n7!7~ zGY6HZ+?V&F$|7%7E^^7K5DST#P$t7essQi}B9hn^tz5TV|7h)O8Ip~D$-{A`+KJC% zoA!gHoSKK9|H^k3T4|j^yK4^h^~%6m6{66p;QLGo8R$VZGPGaO#CYQV+p|}vi1SsS-aZ?3$Sn5e8bJH%kT&eNRUek-H#&~MB;|ZWqdbO=pf|VWU(fr$UXtW(wSIcIkW4>5Nee%P5xGfqi?ZyN;-H$lHz9QgVnosx@1@&#Wmw z<_46bOO|#QiW6j9!+}P^1%>^0K`9!Fclxd#$dVNOP|wD2VjYskrqax|b%GmG9?Bs3 z#)FbQIkaz>VRgcaBCFJf>5?)d*0%l`2le!da5{TsLGG0HTuDfZ~GzQc>`C~P{e(Q19*C8$pqS7@on zG1LV|BzQWqI`|XDKp1W7x$l$f9nv2R@S#!421*&(TV*yURNZ+)fb52WW4 zrAV}~Jojuoc$A;Rmxhy2ZGHg|x*6HYV0OgZ6_ro0+@}v|(gCXvoWY+_r`PVlEV%%p z*6WJH>}Q%`Y)r&HY{(v2cwdj|Br#}+i?|`-~Nvt(*8R|_!3H1oU9Yv;V{rHW}QH^>8!U>Bp%pWNk-P}HOE|mgg#C633&jd;q`QAx1u7BLjd3`-h z=kjD8vE~d>KMp(mrd$6xHh%|7f*F;mi*+XEs!ta4YbMv7j(W{w@HBkVPotw>cashy znH!&cY#5@Vj0O4ujtKv91TkJ}IeAl3_%9udx-Qo^EEc^LBE z=7gV2IlE@Yq>F|aZJ+L?YqfdgQ>NM-%V~d0#2}cb!G94n*Mj{5yC>QSlcG|OxL$na zyPsw{_#MHG16tbv#=m_Z@4}@~_qV6SX#0EW<&1K1Onjq-F3}T!*;kG7DWb1So28*u z6>vyUrv_G2gi*^Z;c-+s^Ou7g00S=;XcNgL``?1hRP7kDlm@Dz2RAg(9OW}3K_sB!Ax$A*wFkHTpzYKF;sbMj`_dJv98C?3zT(;d z1sn`*05s)~&6#+5pzq~{uA)E^cNCny37aI0QUTv6s*Xvl5)oSkB3lImTZKGZ1tD7n zKO5UAQ`V=mADg-}Ur$C7xR!sJ7Rqv8z+BaCV4|tflB5C4$Lue)V5~cJR-op3ogSW09-2-iiOXK`ox+~Y|iBN6Ee%fil3_n9&8#$Sn}Zz(gQ+i9tY z6{!Wkp&P%-fGYv^HkO4y*eO$(UHSQ>RhmJhP2-(39hwPu>X*L-YGw&IZhT#ETN)s7 z{wa+PbSCTdQN&A*t_81^7hCBke#Rvs9TX3Yi=4(iUu0idDi+KBaZM6A6}U*W$1i&` zrzn#}F7YXm?MUO=Tu)@=(^c1>+nhcnN_D+0a2@)-A3mjY>6n^9g(PPForQ}VZ=gTM zoir}J@7%OeUhIR$OZCBsDjnZ7D$Vx2b6%%7UC(xHB$tns0X{QI6YmvIOU*sSNX<#> zCn_8inu(UIJVdbZPL_%mCoV}+_%+GSMR1?qC%Ss6&2@H?cSk2pB^Q?*OC%n-O9P=5bf~4N z#3Kp| z#c$<4#o~rNSc`?0?@3m1X8~zHK8Mx$-!gwil^6eKj*2RWRN78i`s;fPzZATS$l1jy z_^V{+$Q8U3$N`+*$?Y4QXa_k@wtI|qV&fwahhS3OF8N!yiG*~-e0RFbt8Mq z*W+q(O9jGJjs~dXW7VuslI)n3(DQ_Aq+MS#skcGfhRpqDtJTP_RjaNcM?IB4)!ug) zhYZJuI@3m+{}wuab&|{Ng<>yTb)~^lPCSD ze}&`5t10g3UJ|s6GmU}z@XjdTl*9XtF?*{ma-3Y+Oq7nD%jFhiisPG?pic%Ga?h5p z4bMcHzmo9GYLOHIgcvd|5Y@J8+`1Wu~r{e z`9$5g++=W^yv;dsAWa)kh3A^bNwn0I2co}TtO2#>!nIwk!RN)MR%(-Us9>b08u1ib zOiRM$F6N?L!SL05y(@Zv@+1Bgq{3QBhQE$t1>lRsZc~ZiFp5t4F|nF5GT}0%$<85h z^+e_G$NANJv^SgGMSYyji-1d}n@L+`KeF?_A4)*}0k|$-$nkzgoQtPChtE-C zotNHy?3o|Do@`h@3AeIk)d2clD+%UhiVlTOpbG`@1TpTdHt~B`X+rwCfsFuBUd!4I zf@Ayyj*2~5RXMPnqD`w-O#-9ZJ-%{aUf_b9S=?xr)+Zxlq&(5Nvy1LT$|KU>EMIvJ zWVpp}C_-)qB(UgF_rqInNdTE$xxUx=x=Wb>Aa%l|A1k0%uX&fQ%GxWrq9FTiuNf!y zOr6LIM{S@5NK|n>yLU3%myx6XxOFvk*6jk&TxuPn=UiR_@vc1MA5DRGjEk?;t5YM$ ze%NnZ;&tZmbSCIIh3yeP!72Xfbk0B9x+9FW+l9zx5R%l@U`@o>81l|Ls|oHelC@YM zuc#zTuS5c)Dk43xn=yhBcVuZbturlAanqJd+pvnvsam7e`c$IpbY*{jv}CZO+8Y31 zezRAkYefI+18>v6K5f9gY(0n9Wg#@XuoGmSqxQ5+OZb;iNuE}`XtTI4A(JE5=@wq_zBh&m5Hdp-; zoZ$U&D8n)T>f6udP=1i-!CQ@PH%u?(J~_@G<|aL znFF6_43NPS-0X>#5kM>7w!-eH1oTo>iIKi_Y)V!FKXw$b$CF<wm4;?Py9J zXeYS*cp9^tqI)LFgg#|;x%}P42ONK#n8Vp>f{Nf^iZ#B#UZjiv`6KgbTm(Y=KkOgpaHlFX7Dd=QCgRhS%vFLA*%w$O@?qp-n)No8eVSOFf4cbfS`6 zBN@XoA3qin_NPeOO(hT)JfUGm3ihy1`n47Mu0P3ScMz4(m=f}?zl3d+OPe3gyG%y& zj%^){xgwW~gE^6goj&#%Vde;#3t5MpnBhkR2yaj3GT^v+414FQRv)6;rdTnBzW{<0 z!p3VpU;PUV>csI7UUo>hX24yKEdwGZYT8UTiSw#8odj`JaeP4wH$xD*WyT5+#C|SB_@+fHDLDJjblNIo z^Xn&XHQ`u$EA@cxW4~I;&yCY_jUFsH!5@m6H^%xPJi@wz1bt&rx-N(#XC7vO%J<|y zHYsdgr+OP`78BU!c`WcQ#lN^%n$V}cS;7$RsjAiSdtzWIzxLa;lBk)s0cg$1MXA}l zPr7~u9uJ@q6car>Nm2Oj#+FpZGvcKE2P|qa>zZiSHdIl4COUxRIc`bU+ub`Qzh&emO;Uvh^StAW+isz4XphO0adM8c-6HA*PFWC z@)cl+2aN5i>frLiq(~QsAwHtAMs=e(_m2y@aFrn&8zb=^_E&<`p-{Z(?|Y3Wo)>;2 zyzz>-B2BUV2kq0tc=B&+facC-%Cr_tDPSxg{Np1}#I*t@e~2HVpsS5@AE9 zT)D{R@8h7yVr317YzMVU2MlGZA**)v&YO%Q{6$H`gGS&^i&h+o+*hlKsPB%!e4UXHiCODG;>))IrX#9dAJIX-O9T zQfHPD>S1fmxmz%ffI0^?j>j*Nk~Iag;#isdEdUqKf@}HgMP!i}aSI}X$EXHN{uE7e5hDT;fp$x*Oh$qXh5zn08w~s9Uw7W)JyyZAKTH z)jYMJW|PYTl`P+We_vYkT&?y1X~fsWB0O9`CJw_f4Hl!T$OlxpDe3g z4^uVn@*I3n1YA&5s9}LV!5TR%NKsWm^WY%PlOT!G89e ztGEYHxR0J}pgv-%>jc%~)PgDQ$er!hX)1OrGtR|c7gZn(uU0;}M=5&u%;;7w=;O-* zf9-POqw$mP-ztIJXhh=vn61`;x)~vW0+O@oRI~iBipToT3_zEa#e92MV z3yyHVJHM7mt{iem?Av04A~hbT^3u>@=tl%eF-}5scC5cR)eM?E=;KXw6l2i z0R~|l7Ph$&ro&<=iN)SOiSJK|ZwjemDLPosegJ}Z@9pgPQRdATwLtUi81RvMegBPj zgc%|cffQoY+A_Rm2!X5Wn+2C;sS(5!T7~p?<~Bs7ad-!Ts+Rn#G!N6hYGFen zp|&>LhoqXsvg>RS>B{(+n8^ULp@bp|WZvIS29pn8rA8#adM^1<#ZJFGA7or=oe<+G z7J%Q`?O65wF93Z&g1^(tP{aY;XcNWh!+TZl;ywJ)h1g;*G)__pm>a8?BNm6Y@JBu5 zqtgT6Dc6xbnW&OWFrNui`oc~i=9*6!$<@1@%F4Z~MH`)C4=s&iUK;a2He|6T&LP=< zw}>X+(Xm@Ua`+EKHVl?_$f zJeN_0eNk{S3ic|?&9(Wnad735&bqQb`V$3js;ci=RZ>27-r;3V?WDcpJDj)e6+x!$ zk}Hn!dQXIfvNAOm1W}un=4v5UQwZ^m>LqW3^HXRrXs`Zk-%vqFNyQkZqTzi+ab2KY^aCnjtZd;IQ zq)QV5kSZJtq-}&JNjR;LdodhydpYs;)S)CXj5%P0*{KwLg6$M|q-bs*L<-iE>QG4m@_d33sxFgxzuHTEk zG4yyao0zGWr>g_757p#G2PM@wj4|Vs8M~*&g3js2Ph!Wm5PJRvA^g0Xo#YowZ_ z1%r*e4#_*c8|BfJ^#34?tI61h+@H5u4W#*GuH<~ds5L)@nI~u24>#wUOff);qhlZ2 zZ85dkLO2Z}Yu@9>%=Px=<`4}T!AmveQkF3(#WjL4Y{Rn+bTB*}+V^A)jc*7c3t;H{ zV&pS0O$|@9AdcwdN%<4>KlKXp2tpg^h(NwbQsuKGmA>|Aa0=$7_710n8CzJM)jzC8 zRN_5*vEG^|D#^{xto2a7S`YKk2aFR=*izDCa*WjY=Ay0=c`LcR%K8avi48`WRm(Oa z+_vsx45uVjV!`vtaOyewB{zb{+wM&?D5JRs*I3o&XPz%xXrh|48r(at^$kSrs;c+K zLmSwwLd388f$4&Ic-f+?tXD1AHY)HgRIxqSU_uZ5yfE?8ygn$prGPH<-f7|PyZz3^ z4y`3@oyb3Op`j32FHvcy*ril`i}0Lx(JZBUCm=jL>9$dTfbqSAVj7jgiXoswv1oiB z^6WN{i<>dm4ydqNsALFbU&t73#6i^Mo^m$g9%d$*k}-1elsF}0?Bi4KCGzL9wxPIt zT*BPC^99mQ;C;TWc3%pAmUEwz3YJ9mvfvec;6>6>?Affs*XS{84vp%v=(*Ls`DW9V zyF$474;8c0iWplHQeDK^N@CQzTe4McXnf@?vu^U9Cum$NM{H$Ts%cL5H_YIgGEmLq z7fjXl-frY?KTi&M=K>QGXp}Sabr3UOJ+aO!>)R}}X!zJR8GAQ3DP6X2|HyLQ!f{&N z`o4)~#M4vt*Wf}lRM{Y7ZY~rxVe>oB&G$SvK&G%cxJRZT{p-*yeW|1$1`X&*=Cih; zifb~@*-n|C=oy<*7@n)^d9HFXS5vN4MkPM=07x2`O)TCbs&w|q$)1tt#!#t7iL!|i zJkl&5-ovw8ADZQ^vs)iMyPNb|FXTSP_FQJ^I=ftWrZLB1Mb4@ELk?EQIycj+ zZ`flww6*+8vt7CT_Ds8o$1+JEx+u-baHDI*iT8 zcJBx~Q;Xw=W3LkQX=lw!uog*0jn8+06vPfIII?(n5#iq*%9ve-_O>Tg$yBr}tbyOi zF}xQiN18&x%i}>ax1xs6*sdUJ*370hAaf2h|)-wdkH#=4pGV<(GG&*;(NcGeWp%dheP{60cE#WL-^9BcuQzKQ|F3vu2&`O7I?O?FdYcP^pjmmz9MBu|Q zXcoAPcC9MSO`n7+w15Ld`%u-tpqNu5{4EQ!;MW!k63CyxhqguawKX@HIpSs`f&h5@ zyyZ**j-OX`p0s}i>Yi82uk?k3VS5y5^b6W!&`>;g(H6h}e)akp=QBsau5AZXff@n+ zLv=lP_o=HMkVy*`aclaC?`U<=QG9om$F4ubBDC;BvEYL^P%sd^K;g zZCE^-0WV5hu<6t-XbHFA1e7H;pSlDZG4&e~=q-Vsi`RTA&u#6O%eu^vwR>^UqM z+AcGL@T_h6+TLdF2~Q6?*%ku@vy0&M#ULiZXrAsk%N*eV&WS(SQp=`WMAB%Waz9Cv|L!PjZ>18jL)VefavUoUU3hR!B+zz zXVCTNwu>l|E5C{6ucv+UTRCvTTn};8sh~Yy4>j3eGoO;=a%)Vq(yp8x6CuE^xi3tB zMJ$E9!dkD@lEMi@jZGqIj5h4s4T_A3G3evi!JTlH=Qz?Pfv3!G@+Jmr9)O@U-?!l( z-_I(Qe&gQ3O9$qMnQY58IJtA7#j7TT$>|!LWTqyC&O%BCA8Do}GC#n#;Bmf`;12-E zU^<3ZrByHtc+ap`zMaO;aONnIvP&$Ji*w?93zjg7$#{NJvRFS^5@j9*8b}sL+fkV^ z$+%cSnXj4YFuMRZNZHK!_IA(CpX0Gst@osb`gLBYUuPNwDz}&DOy$Og+8Wr18%Q%! z&T97vUxlWTV3UDD?VOH!$y^8F;gSYXm?dgCX=U!q%4$ucK~nskF!o0_+Ck4cIBvV zn5RYYxz>=x&*htxG4=O#_eQPR%h%o4!y9jZ7gF?X7H8HWoOyp-WidI<*r#NCIVE0b zwDB8gt@Fow^wC(!+GJwh3T>#l#*TrT^FR%**cp(ugfyI4`p`I~yZy13ZpFhNSYL-; zAbqius!XQvz7+18915;*GE!QF+q0@&-X4J(_?W4w1vm+z*vFyHRC^L*N8mwKbMlFm zYp_DizPk$@wQoQRnHM+hc{Z4zt>O_H#0n0)xwLk_J7>zE$~6u%!+QCen|N$51q57h zg`n7t`onj^z_}Ur+z0JqjV|ZOL-$-|WwWY1C^Jjoe)qYeQoqnpsqfP6R#~mSD9mRa zvrPg!UG=9C9e-7iFL1j$uLEv-7hl>U>@LP86KvG~NLz+l!ZInUw!kFkS|&c!yITi< zW7^|G3R$2FC*IxT(=aWAxNkrU+T_dKLr30ylG4%R2dzdf@O%8M&10<-jvnpG%6V8P zwT>Rgv+A22Jx<_EBE*hToKNeO^WzkrAf?tArE{I3wuPvj?0L{G;OP;VXQ&hi8j@?U zmK+gUJGH)}^Z)Z1Eg-F3ZoyG%STE>woITrOs(gT> zz^45ReFpB&mTlrX8j8O`J|%Gf;7G^=133i3F}QxI*g}MNf~tM&fa-(y^|yBfgUZVG zDx3_f4|!tC|6uaO5zGbJF4p(aK|QxB=;^I#X!h%7eg2uO?zl3vFgXFT$8l#CWtTgce7AK@el_oNL}`VCG~(vMD$RWdeD`<+_())JX0+ta0T9DE7e6DqPj zjlD>@9H++Q*Iu)ju&1zTh0L}Kph~bep@*jhWfaNP40C}|`Q`iXJJV}BAT4RG|B{Mm zYP*Q4l%Q!~M!dv38b=oWNO?b^M2+}{4nUi#H7MzW(+(&}=CB!k>g(#ALrsUu7XrSF zzA<0E_Tlr4i<<{fZgOp>EwT=icJ`ji#f2iI2_NBWP6JTH-)zgwk&y?ntg$4hB`mL9}z)9TafGWM@^qCm*{kgwcj(D;Z5w zVwF+5+Om|4#LKCgDUkg5Gj2+5&IZHVurE`woS8B^rktUqe{v9nH8(2rLq_JmMQ2_Z${e~{_*?iI9Jk;WHf3d-QYtq&+dO$n#e(*l8pAn@tbHCn~aOV2Dt}p1w4VfktEuUy?x5x0%>c4sra!&i|Oa)3E@~JeP9|v zT?#{8C;U3fuvv4H&84-orF)mQQ*6=#?PPGvNh9-~#OTv0ec!a1NwlzujY<6>8O zH82-jeQcrI>v41VfN^tJ*%3K(yvf(1Z}J&6{2`L_4I}64 z(K%l;a#k8SUyniz`+ykO7UgZ(2L+^Ue;N$V-Y)!nL*ToM{(b~GYe;%L zO@v62UP*&E2sNko)H7*bsyLh`B5u!L`It6~r+dw;WR^vRp+c&tvRpphX@xIR@?IV~ zua6z_#Y=1ob8PI#FG1BOxZyS}o`oi$KRVAQowxlxfdwW2`Qvv_$MVVRB{EILScKzo z#Xt5vCF9uiZc6%bD)|^Kfi0^4LDv82RC={cEKugO9B?Q}4{~$$SQ#ftaF9*7+p)sI z9>%tnsO2XtB_N`1o-qX<K#ONU zc$9!JDqE9{Etl3#Jv;|+gsKw`W{cR+pzVu#S+oXesnxazL)mRx*wO}i(vz2YAz&gEe>Yd?rFk|WqhAiuh;6$tVZx6hdh6~&_t9jXASY*VUw0M2c`VjOBR zHY-U5t!$-#Epd0XQEBJv%pmobolQD~}vW;&GUvW@Z zxH;UGu^_`nrfPW!FA@Q6R;oV|Lg0yVVSGP2ON4R9rg28WgWG@y|K3Szwo&o)TsX1Hzf z90w>0?Yp@&g56+i#8_d_SD|f%IsW0w<+M}9YMTK@wIGx4JJ$EsqEo&qSZD$PssceWR)tPmOEvOS!VAl>g2L08h%-2lv zye`wO{fH-mv@r5g)Dm}keC3g#XAIV0!*|_O%gp#_B@2t*?<@rW$or7lf5F>P*}=VC z(%r-9=6dl)Rjqu_mNV5h>p{FRWS(IrKT>9n29bBz0;Ks2i! zG6cT+Tlp2&{U3wJb3fA5{(rc87x<{E>wk1!fdLZEL=ue>G}dTCL6Q>Gqyu$MG6QE| zB2l0O2@o4hvC>Lm22c?uOd=UJBUo)kYpZQ-ORK-1)CUjoF_SD&vK&?&b%HGP+u#jIIXC zXwy0ERYy#vk_y9xvF5zvpO2ibS?%u^#LWvrY#46(;C7$7X z!*-sM&#pdFmkwZ;FHKV0Dcx;N6rNWi>gAktd)M> zk>Lq!g|h0_DWMFvX6{ghrK8w#&{qXx&L6r%lWFW*4r-y)gUTh`Lf>N>E`!Z`sV3BR z)?St&R-dBATHUcWEpW7;tiEm4!KdIXIQm^)p8|{*3!g~Men>lwXM4vuTYeYE_R_?a zm*R_*EvK|&x~rc?Me2_$bz9=5^M!|LgerBvG;lcU z_Lqs@Nc8d*xtcrBWQB2lx%k={y3?rRKe~k(P3)E(V)Qx2hCM{i?Pu;Pb&Hp4Hq?cE zS9-)?>Kt#TCPL5%au)}2QMSpf(qc_otcA)du)n?H51>>U z%+t&5Z{IaURkpk)_C(!h;_fk+p!9a|3Q2-=m;@2eFBg~%OL>nlkd=HefNdjQd5}H7 zT)t=lUvIH6rwo@u71(AU?3H34Vpx-2M9LN~dRPe#(&Bms&;ijJXmJ(>;{bp~= zrnANEc49IQ{dqN^%w@1nc`JcWz%L^725H>?G)2s za+a!9*Dv7n(a<8kgkirX4pKsAAH1Z4+QE<6&)X4;+Z=Hg+m;OTgfyGh5@uREs!=ny z0w;Snjb>lFCVqts-4xqnZY;C6dWX1*(|rTn!CBVMi^1dOID^x3bEqtQY97s4)FV3X z7@%xzz;R{p+C?yU{>Zv`70n|nePEfm512n?z$YjRl~~HCrqxbb8C}Iz?-lOq^3z1f zEbi(6fWh77cB)jFXx8ipJ&LOlW@E2+jzgM!RfOH5eN;Uo2#Gy`Kf;jU>%bp3$qOtY zzYYd~Ll!*}j>Y2Qd~Dd#@6(n01G;kmeYz5V-~&GCZE<+hYFYx=mzYeneY%P#MrqdK zfz2|I92SLnqI){6;^ zGphD3Sw=I;Sioh_;z4}+Osn+RXVz#PiM9_h8)U&*omc%QS&itYx)MgL9HcfO&I2^HbE;a^Ow(}4kx4Ks7rk~Zt^n_QLWO!W|aQ!_jkWLTl+dzgC=ZJ-kOxU9ESVDAe4m}pOY4#?17a=lN zhS#*F79fu88PK7W;>Ny=*flbfIAV?Cr#*-@J$N8G860scg2-P7b^uDjsENn1HCdJB z-;pUT4cpid;RP1jqv0Ih)aVtrm>}qSiIWC;9i{#zSu^){GZKm+g~yXrL6X%#PPlmG zWl^6}|E3h7-Ap+Q8~j zl~bua20jaA=5h7XE{v4uya!QJiAqeZ^<7N_aef+W@5}}Q6b?xto z4g68o42V2xKk>^B_~0e9-45>B!1)*%HG!A-%zx$J=+ z1aV&#i}}hSN&ux#8T0_NDRA3})jNUXQzXh5O6ivy4*xr}1$%N2m8JeNw zbwxc42gE~63zZ?iwC!~)CA2lPvoJ3&0@c5=MQSfLjsOLsmB^3W|l+ynP^V*7wkMde37-*tXB>l^3=FJ? z@|lqZj`ECwj~lAkJ5vE9kbXma+(1bq%PsCC4(0thO+EXqzzei%4gl_@H~>!{N*&Or zBo#8Th(QV;AY=d@mbT(NtT$2n*RhyRt5(rYAdscc=O44I81!OH+LKS3;b9Llv_NVB zw`ss4ufo7rcJ>T8dPK=j8As8V5(7K>J{f5=M~dNiF@QT7$pPdXCv^d)j3_kCzm0bh zK1;J>r6KyrsaPz!TgCElA9m<-~Pb?cgNiuFGVOM&Ct5ColgWGu08=1jguu zutC4q8#~C2-5h``6+`sxgIGeJh9j!NPgPp5>)US6;)Pngily2u_Dl84U7yjw2#%p= zaUYnU=rf;z4l^J06_LRoXyO|_AEGv5*gKIi&{6c$m9*0>ksB*3V1CX#8;i+Q?C#5I z|J=7<6$5w;Rf9u=fjrjHy3Qg3qj5)TzMf%FAiyoIv$}~F@UUaSAS3LFz;e8oTTH>O z4;&47TJUk!=oOWjNs6WNtF(}Ss|opKkADIcq~PNSp%)&2-G)l0M`xSNh9p6gzI;l3 zG{}eJlybsz&y}1-`-qBTq)397SQ;OZOXK5=CSM(ZViD+=kle5BX$I53wF_sfE5;nc zE9aP3aGr7C3wf)uG%`IPPswebF%a51#~eAP%+p!ud4gGLC$FZg7?8`__jyTNwv2*= z@Z}k>8uiQ|_hocFF6|Q(1ga*SW4@FQDEu#J1$yqD+|k~_32!Aa|B5l+&)3A92b>0L3F?Rhlcn^eUdnme#S7y$05?*Tv}ct9Y7}Z3p3V z;`lGeBQ~Q!-NAc6`dmu-uY1wH?`%(|eGN?ea+7J_1xo(rvq)dKhxA>{q>s-cq4Dxw zJ`+Ey8n}n4pIFm+QIFHPV&|A{udR3uw4Z!dA`OSQNDC77=YKH zmH@m4VKvjGCfu3%PnG7;wqInx#*A(rls3{8{BVnn#?vuAnrnp=<0FXhKTz`a!2pjBX)BuaSMT7} zVNsGQ{oPh{vRNNHnf?-o573VJ8T1y|?#H)RdG1KI62JoPt`1f($*BcHhGK);crP%$ zwafn;^!W|mA3z*){a=~CS*`o5O#8lk{w0sI=EFEGI7HWGy1qeIAZxtYSpr=XW{=MM zE5!LYR=puhR|ALt=(LYFnfoNKyupjKdLGEDSPQvenT+vjC=0EXi1p6gJlfJ{>2}D( zMzp&_H`v&Y2@g@=aUFfr$cMHUEy3w*=Exs`Q*l8V{YIOf5k7fx26CcijTZv;giFu@ zjW~{dlS>IoYU65`6B!H)Y#G@s#q|mwFGYVz1s|UJh+U` zDyEs}-+moS5PwE@Q*r05R*$Pzix1|Ad~9-8wvzW56?SE09UAa;CGTx|%KXbZ)`=VO zIEQ`&Z>IO-w)s=E}{AYGC1D|DrdXSCx#xtF-{+@XiKt3s}@N9;ipODnU`4C=MA zoM;Uo8SF7l$R_c@6z8hobpEmlwbN0T{YnNc3+YN{29fKs9KIcdb6FcC- ze~eCD0GGZ9m}Vi`+m5?ZD_-203L_zmk#Cm5Z2A=gysyMbnSi=r*!k9J%XZYd3 z^L!$2^ayz*uGBX|G$hh%l-p9e{)7fuWyuYd7*8D1hPOf99yl5ESwv&!5MfzoZG?W4m1DlrGIRR$L139GgyY*q;Fx-|~^AiR=45;)uTs~ zQs1OcTn7x|JE-y7mZf1vD)~|6ZdTrnHBuRt6~As7AZ_z((A;(z;I*F84ab=(jUY=d zESaZS*>QXR%S+7cI@>mh_2p+<*ch(DlZ(eWQ$So>mHa)3g(H?J@Wnrj1y3H@T^8<* zKKqG@m!pmPa#Y3chj}@2@N!hZ%U%vG8jG+Z$#x5zG%NM+vBe#bdh|-VrB=wocrpZs z>O(30PN-j{n>+8J2Ju~hmkukvb+QT-y*;{^(m_Zt9QiD_1cze$CB46a-$S_nej_SPkt$`&K>1w+R}BT6-TQ>ddmKh%UgQI+y0G2;Hs5H`O- zY@ZYp2c(#o_WSK+qMi7KAJ*vn^KR|nQA(|u!>;1&@RAG4LY8nsI2>^Y!Zyv^4gv8& zs*CS{N8Bd`#P3?l%)86%5wGGZ&hia*3x^fEeJe}1x7D{Tce$${ zD&o~NQdWIPt3IXKo9-&m>@D6=Zn4%OcMK6mTs=>-|B?-_<<`M!@MgNqt!{JE?RyGY z-P#Ja+}7k4t7W=)h`YK?6PDIK=SS0^vq5boGSi<#7jQLH>8)T~S#^`E{_ygpn#`+A zv`!AChCRjUUL4G6fumM;;HdHT&pHRIf$o^s;tEy7kiZpBP`&56P)2K+FnR1v-pf`0 z@>Sp)g(LNHgUMo;fFI>o5mkAvDm6>FFI?B^JKr7nSmxU1Dh#Wlb@tILCZvA-jEu%r z*o|Ot7-!2XCrtj|5(CaaKG%xZgDvyYMrge}Ds1yAMUP;$geg^7Hh>}@xjtKpj;x{< z=$4%((G*+*K|}Bn3;i}c;^BLo*A;d|Lm$Lqh&@mfze6VkUTS3)^dj2Pu%AmBsYA8m zjgPYJbo9&-j;_>QChczi_kW<|{{Xu>7VEitiYpIxdw&vWJhS}AT6LoqN{wj67kY=r zcB6H*K-75qzdALKcmR>b8l)W6=&9ZvYxPuziLS#}Oyr2!9m?1}C6u~5`r?;FNUGP% z64r1D!AgkACXA)BMQQ4giO|hTQ&zJQRP_US(rT@M2cM_CTeI)+F4u}5y?o`ev&BZSbmT@RkAp`w1vtLvO(7o8S&?gO^T&uaM%n z*)k~DfDkXOD2*o$4R1T~MyyS@ep3bKY;IM94RGCAR@?yJp1ujH@WZL6TFjO4X1j>Y z(3tkmmw`y+8>$93z)R_7sR@pHr9`{lj>X1?6RP3-7YnjcX%MNJ`r>al*GA2}GY+zZ zI40DLU;wy{Ld^{Zy39-{TP04R_Zr;;41M&Z$NNfJU5`WMvNe`DeOgMwD~m3K9yAw1 zXtBZAqr%W24aZ`C>zmIve}lwUk(o#!XwjaOuvI2(J}co)PWajloUmOcJd%{~kW3gl zE1}?ozm*A($b?-<38OOM^s^G)zzOHegk3VB!PJvb?f_GUpOx@JPB=;?< zzw*Xeg6D_5gLOf<7CQnLnRat84Hd_XnW}Eta^+@9=z`myP~1hwm7d@Wa8V5ZAAjvz zk9+@$di?QvsM)-L6oqZE%+r_S{KYq<5aY<9&YL%-FN`zewFK9geNYE%1o2ldgG%9ovt71KViYrDAAS z#WMd!$po?NAyix(iVpqlHO+kz%7Mk@DkBCDN`%o{ThyV{tqNR-YUlJ@`&6MtKyS zl^*^ckhnU+=_NMFT8T|k*O&u++N3NadUmV(%Z}||{!(Jl4LkZ8Z$N$1dk!Ox%C)cX zB#h`P{BBE=%rAI$eqZSMVe3LG73UN*f`_8`vnYO3QhnS>>5;olFVMDD;sI2aKxb|; zG=fW@I5)W>sRopO&|eZ7cu)z{YYRoY3Uzv-prr5rbFcV%Au94$EBcB5*FW=_T?$;b z6j^a_*VOBM5c#FR>q`?q-~MNLpp%3P<;Q^yr}9*@Q%+APbM?I#L+p){hMH}n@c2(F zTN>39;Lh5#!d5kM)Cvf(bX8=mRSOR)TXs`uE9R&$5)a6BJZQ&AxvpTQr=o1EY-Xu|5R;siZ?Ye%jyyB9A!g)fEJ_hsK z5%Aloksf6XcOYU*R>(Nuj=X2_m|rfl?*^lNp>MD%)MQ3m72#g{YmxHcW5k&FH(nC& z@8Dx4(i*C9DJ*5mi?r$v|MMm(`X5YpV;N!f4tiI&;eN*Xn$-a;fCUt?QQG?1GGG5S zjGSn|j9e6D zD+os`g@$1cu?c1nu!q=4H;3t_s)387J>dHQ(Ve4;_K=nleFqZ!*R~In2YT(%1M>Mi z-b8jq!}2j*zCIM)ECuS7IPa@G1S5un5-Q9ILlhTOnCNaenv9%dPgs*HJqGM%5B zL%)^!hTTDVU4pzC%<|-LX*!M8m!&e9o`bYYfHa_XC&o!H6-M1&()WAp6eGlGD#uD_ z-1~73!!!VokNM$qna$MpF3k&^GAZ>;wK?W#yvmQ@%-EK8lghf$oHB6A=(~U#=8n&N zpWvOV*E_QhW^Nl<(5cKCap-Oq+HQafkpwMtWWnHgJmW;}jXtv{7SpX4^b9P%qId?J zK&Cwg^O<;JMNho!ti&n4^O8&d>CI+Cr(c=bhk2Im1A*jEZ7jF8{WwD!;Z4qhv7?d) zk@gMQY~^OF%ylSZ4oRzu%Cwmdd{AZPRJsC0b}UyCraP5QJlQKDx_qB{Xe6{`Evy+! zKR2Z&EbUat$Hq!%;13h&D)vY$*Yuk#@pTpHuJ4u3gmjH(m-q5n<@HWyM!H?S%j@i0 z-YtF7;YO0IAV_f}*-Vhe)`gEGuit7_@AefbCx3_a80?XxcSnCG*JECTX{~yLo<%Lx zO=&~8yqMTw)+ybn1tL~Y$l{Q?c@ZhUaSPThA9O;M3chLXK(v5&lK(6WH^rqwXOI8i z$wNdNY=JQ{q=l1hk;J34ZP1TDaK8YjAN;-448MRL^z9Hx9>9smAZ6x=2Y+Zb@TmvA zxs(q@8jrC_QbnU4C3C4B1r}3Z%T_*ij6p>KyO@5v1$MriI~)Ge-KE^_XAMub|NU)W zek_?aOyh6hUzBQbrwxRsQmsxxtqQH;l2(4mLVjRnjg!&%bB9@ zcf3FMh&>+B!m4Q+wz?4%WpD9b$=M4$iImX~_uXcF4?64=8Oy9MMUCC95W$qq^Bd_dv&Y(9QhmBvT zDv3CMMjX~QjAj1eBC{MVF*u1!YkH`Jx3~jhLB040LJ+gPB!$(G`zW|m+f_j8s+SFk zC+N)0@&K!4nmmOma#I zY-Q8c`Zh&tg#_!*j^iogxuO`Z0b|HEy%oT9e6N{&Xp;Ddcv=a;Jv^TG?I71U-?&@%}B~L17sv_J! z=nvP&B@Pjrubz0>BidBagkJV&p%GwMT*?+>S;%d4$9Aj!?#q0`+{6wnPIDC*A+S~< zux?Vew99SILD5QkB4N3&Fj7XWMbn9P$*4Oi6L%~ERDd5)zIko*&e$XQW} zcy93jw2$*T(cXt1_LbLuP8_ka#XLU8YZ*Vtm!id*I=eLSH5EN3u0Lxx__{UwJ4;6> zml%{SQ({`EH0D2<<4y6O90WgWhiH~B`%tr=@uss9`sK&TAquyz@6dKMJ zEXM0&-@P=WCUE9(f$bojB>HHGi>f=^%HED9lF}m<`R& zOJe;Q?!@yCd}5{M9PAMXU3G25@GDy)K_e^3QG9C?o^y|k5BogZ;p$Ee4h9Jx;pFIk$o%^c6efAUk`0RJ7vN0wbng-{9Aq?!R6ZW!;f8u^5$L(t_E!H0r)o z)?gi=yDncA*K^VM{G}IZB0G1Rr6=F+FS)Yom))jpxzVU>Y2v#57&SK~YCeq~Z#1j% zw@$ii54<-pUiJ6RL)B@o--M?lspfW7-kaM+3#SZspf5bah{rFTMQ(m^$NUhj&u zFcu(-+v59cb}figWSX+9NJ_-M@c0Y(cI6T_Fc?&3Z&U))S-}SI0ZJX9Fqfw(TMqI- zISM$<_&B*qyoxmEyG5gW6qVC$x@)kEWujO#R+h+daP$}}{cO<^9p}|wux7)SgMs%h zNqjhcwS4!Y(O^i7oxfnW)u%LbytMnF@I+%LlQMD0!IQ%see@1~^QkXg^)EL*vQ&2e z(fP7E6~=h;d-WGn^m>|5o8%W`S@UVj%YpZ<<$5Yq&v>syxL0Jn!Frv$$J4kv*-xD< z@jAnN!hiD1rGvS{jvnO4uJ|WlT;<3&TV+J~3G3tWe=h;=mK)1Lnh_XCdTse-oqRb9 zgfsqy1Nl|wLKni-KA}IN!MH~ayemI$ph^=ta^yUxxfMCf0q8Wh>LU<$BGNMkIScPF zwe}=NqACt5lV0t#6n4BWR|F3NFeey&i)P=a1nvVMVsLz}%5FZHyI{YXJ(Hq3X;RGWJt@W{ zO^P3@;`MXPih;dnMfbU8#XH|JE1HsL#U?%*di@;JV&gfd#mauC#e#E9i>c?D7FYj= z(_(1ywD`KeN+;&U`@QGIE9aaS&-FVm9{aX=vF6B zidR&zGch%6HNo?>K(k4+f2FKmug?+o%9`U5<8z^v!Hj8MjWc)!V0_tr+UyA$-J_0c z2hWIR(06t2T-`svr}|CeVm#(IXq9(|rp0LfC;{waYBsMt zWN?mpS(nW=_T^t3lIt$VzP~7;-vpet_wJ!>|Ht6pwn^{QF)y*J2cV{gFN%Kgs!88H zdKs-IhnPNU+Ex$-Fv;MOqi=8|HdktWRjR-svFw4uz0u#cnG8v20oc!`-Et3Ohbdzs zeIZ!+NkV?vYFp)TfnNt4)UOo|oMZTPgg}40!C>egFJn<**b_?mVx?JXqS=jjPWMe)qJ>h!TI5}GEHmvYY~AiFU~T^{EEXkNwLon>AxoR|NobB1zJjh41-cCo{QNz$ zuJ6A4sdYHs+&PYoe`JQT3c(%R6x9J_3n^_5D?o82L;x|BbW1C%Mk(o@RvU{?m2_uo z4r4r3A+P{2lC6#y=h197Vqi5$CT&q~{6Ud&;X0OQsi__*1XGp#TGoah&6r_Q9a^<4 z9l>_Hc&lqg<82kcH7@%O$clXf>lvSK-v9*??@(-mQk_M9Mw&E_4L5Bz_H!QgprDD= zAn_5r>6-AP67~kRSGhkd&4QET-$L>I+gRx{jwkmW|2C-(dZB1Q(XjJ|I-q?mayg16 z>-cKc%2w(gZ*0IwJ;oicz1XU6N}Y{R}R$mO2(cg5Xbp%5R>+xvZapC%+8WWj+E~cM`{?D zI{F~a+q9zOgEjiNh;m=g5XAS;G&9owV2?=qM?;B0YC|fvZ2U~mwE*ii*9rp){+*wj z%92}16LQ>=MoafX$CP>WW%J-gYmNi>6;;qGl|CAkyw9mc;cl^u=h;pUi%LN73V?3e zevbn;^j9v&h$DiZujGHZG+oJ$E=}ERWbrJw5#ROGUiEFhq0}fD4G<|d=m&vD##g)p zCx{TZUT;}!rS4zcduYbT=NoHE4DM<_BV!c%AqQW1KKy07gi$zQ3-4 zJ3xy!RSP`VJzN^nHU-`_!&Y-PekKG?8bLG}QCcfr-921V0*~NZY?rIzZ$*QIT;Pk( zO@;J+qZO}>C)Z?hOw&s>u~ufzk-V)MO<0QH-zev??_XoX--dsCp3C-5$5%YIlm3=nxxL1ds>-yAKGmL7S2uU|W`Y-InD?cQXl}n5rd@FD2h$S&Gv) zN2-!P(E>my+eGR}1CXL@4!Rq#?9%!e(e3R_w=?bAxz=gAg^Lds^4VJGM^;$6i2c#n z=~#^I``C!YxY_vc&~3j({!1*>h)3#WD;^aAxGklQNw+sr@jJG$X>r~8EP#Jn_SDnT z%PIWki9l;SdJCezDx<@n7u)1qZ;ejpsw#Dmv-o%LVxiPG_r^^bn?$&;V8WfF+3)57 zae>gNL*5;(tOi^N-Cd-tZeYLBOuT)of;*mJJ2|c?wPAYkj^}wPVN9FwMJROzn+Z*l zZ+zFnnB(1Cpi{f7)MtOFD*+oP(O0$F2oyfzUT+|7HV{|-D!X9Gi7tJIhSUx}<>xc* zmBxR4ZT7_qU1O-%_Lk`tuiH8%P9;t4%Ihr*gC>h+?=j<|!wmX?>fXJ5(rYxwzY3Hv zR3EV-C*5+<)xkKGdMJM>Gd~59D^T*kp@N<=a8Mg?QJbaV7GPQ{+&C>>Eg8{yC!l`= z3zt89Db;fx(!pIXq?hmZsOwa$)|u6{Z%O;KhYrc`y}c3Rq?V7WR5U!poNpXuZeEiP zS)v2UrE@qi$_m30Ui6o*=w@ddWXklXV4wzqiN^WEY4BvLWhLkB4zAX*);YW4)xgzf zoVqksgM+eg^uar%Jq482wSM@WzpgGZ6gTL)Ee)*O(xB_M_!D|FJ@aQerj94qI&B6k z(v^F}grBU&Ny1UgC=FtGX#=}3w*Z=Lc~JX4Uu$W`V!c6&HT%a81^xoPTCR%q*))hk zbB*>l&VlLEzBQ=j7>`fh?=Cx{+v;CdLpE?>wA(dUJ163VATd98)bjJRMayJ~9`0tF((L#5| zl=>|wB=ifTqaoiTTBzuhtorDf9P!V5skfcD>UR%51#VO#9`t_fC7ysbBv~UB904n&HP9 zyqdR72c2RUbrG>iBg@1uWox&(LnT(6Clp(iI=Bi|V_~-R2y1Tp!4*d}@fA0)Y-=qv z#Yj!4tp42@)KvB}%K?CrxSU!79%&b;&1-DHREUwNk6y#!`iCIm7z!w>|5T~FoZG#vOzfh_lqB|}yrb#tojr2&nQvmTbFNp@ zlTd*=S3;BckVm}d5%m&x;jr&JK$Z-giY>X2#v84W=drOzsnI(KgD&uOZ1G2oVMk;l zw192ME7D%Om^DgN3p1YTR%55xH8#e|0YbF|>lYMAAgzJT^$XF;qJ9yecEo9y*bEOU zs=aw-x-9mVqbg)IITYZy4U1rkMKLq-R!&JM<5@m%hZ(y3TAGf>l)5|7IiZ!tBqJNf z)77Yl%59#YBg+%ia;E9r#PxU4zHkR~F7j+$3+yQ8yn>6OT4<3?3obvRg%}4!qUVdL z7A?4-tMJo4X6@8c()fEQ?YV;aIM$@`UXBJ#{VN0Lgwi@!KqH@lK3 zG=Kw>`l_>5B1H>{b~%q_+Ngp14h!~=^XY!Nb~L?b`z*$gM=Wj-*$^^aJbnDY}+8aVhKNV$%h&S z!&oFAX7PhlKEMl{Vq1fD_XKraKk@YPY^D;Ppwu|*3rLU*y#io?Oz%ZzI9__xMHI9i zjGp6obBY%pc9-SEU9j3*Pw2kXZDo(?K7;3VQCBU4<4E5oCGQNbk5W>LcO=7|vwIu# zcSKcYG9Y>@e!>jV@)+Z=JVA8D6LLMOiq{I;qU%gx_fh-K^W#O@e4FBB+U|N3N@#Pr zb`_}IbjtXPvx~o67H^Ih|L=+xth7{ zD$@&pVv{Ol@^rLFx=Ut$31zP8Za^wqzBO;OM0AW%H~nRMV2`ej>giDtoeqj5O?msr z0}v1!ro6VS1ZLakEnWd6*^~*4=#duK4vR8_*HYKvt#(U+Sz(8}x&b4VrnWoCa>C&K z4Tx8xw)kO;W+aAl!*mQ+CEZ_<&HLM>lz-8^m=wPBqI(g`H)w3Qp%$C#rp-qEMq02H zc2IhluBk!4A-g~M4`tTuzeUOqQ-&`qiO)A*x_{gCd}D3)^S-@FUVG^?ryN~cVsME! z^el+^Iz$1g|2dh5LU%Hg6xZ0cPP6)VqpM*patSt|6E*qy!43Xwc4^b%Uz9DKlsJPM z7a~kHlnQn1^t#qobFWX}Lqgr4X2QIsjFHGYFYqk1LVYZ4!~8FC9k3s$a)~a?84QVE z*dzqGG*7V2fcftA2%Ceg;j9d$`8al7U37)9`WJMCvHCH(7PFI1?`%;Ee~86v@DaW; z(HJ;l^9~BUG@UzO`TNsLzr+hsPofdECxPR~lG?24+D>}@V zc6<#Q!lu;Osi@vPR~!v7Ly>>UGBWj<{IblgaI z2RLP9T#gJac(F6M)G7k-#~7TLs-!Q?mIdV~b^GKbz8M?TfRuReRPNp?L(5W?d;y8L za`&HPNI;6cT@-Sk3~^bNe17RtY^PLj_~5#2slju%|?{`R~R_+Ew-Cx zKzIOXrbTObIa+*e&xeH8Z^L);$6P5t=29*A2m-0O!`TLd{!MFk%BFuMTQUjn6cD+ZY}g{DZRCo(7-6QD0g4WvSK#mFQLZ*`B*|j!mQl=9sMOe znUuRTECz|+_m@~K@DgZ%5uWN8hGpdQI@uj5{dv&MI^M?cy1a;fD|x-1&+GLMnU(VWO2&Je zl{RiB)ahyQpLNwp0L8c%@NHJ6tx`T50Q2}2eqN=BzX2#e`qFkBYSmRV~j4C%aqufrI#OPsN$Ku~jb#0*!ZFaIi2^qlK zer3CI<1SUXaW}j$!xe|iSHM9&SE>2n!rmS1V-N+ zeg5kp-M%vUrL?xCDfw?MyIR@Oc=TETM06Vw^767=gj~rXCWO4R>^y`F=MXbOzFul& zt~2W?BiX5|#KV{FV(cU-9hT8~y;y0AXHJP$gfBBkSJfaH9_h{eR4 z(ZU50BXX@w&2_3SUDOl*4}IcK?=QZ$C;s9-@yq**@92qN(kK3g{^C1(;-A+i{{8*M z*Lvc=x3G8ojs3;<^u&LvPyC0^iti|T9A`(~!7YJ0{Urst^`M5HpvedtrbqYDyLI|I z>NQwGi9k1g_bE29ErX}rgvY**{ak>Jp=^OxT+&4t#&DwAg{WBM;{p%@e|u#<#%C~Xoh=_iqfo3GlLUyO)@@;93#M3nNO7p?DrTHM9W?io|(Qiu=ji=erE6pe0 zmgbXqn)`dD>H4-bUGX#saxn_;Kd>>!5_}sSaRm)+2bQ(&l0MPx@>gf`7&4p(J>} zA6o}3XW5CJ11$33h}h8I{-N_bM66RNJ6$@l$HM25D~m0vHzoQ;YFu<@@{K5d9MV0XQv5gsd%l5=2LAfsOqTWc}32|`E=#?Kcgcn413t%4kM=51Zf4p5@|0u5oJ9DOm?2RiTVO?mlEjPmBQcIN)5M@OHH(cK4j;2{jcWpG+z88LEk(RH10|{j)Pw zv+wo})PnbJGxs`o&(exFA;?Q#&0++K!vWF#>F}s~+?T>`b(4~$G52LjK;Je5{$%Ez zaC-6MQqv+aY^V_+b@l1+{@6N<_-TsS&=B~u6nu}onUy70>ub=mG-XUP8~_sY+k}DI zOhZ|@`zq`OA7{OYDzW+qT@OY#8I}4GM#I_OeAt)I-=r^}zp*c$zafUB;cwEJ&)>S` zll12EH|fpiZ$RZax{tZM9r8nC-byhkHA#k6rit}>gL>7dvV{TN7tAj)h^ghlhO@?J zkR@q)m&J$0&zl20z&mf&s_$d3C>=163$SudDD?&!zMAl~9*Uc!{xCE-_LMQ&_+Tv7 zIacmlGMl6 zJ4&hlte0AbQulToIn<&bKmh-^S{mKztcR*R5W&GISXlq2Z|TUTDe7iESqlpxJI$8{ zO{~=5eW+Nc#lG8jp$MdA5?9nyY!65S_sU7YjF@!@KL?|~S(mVF$IilqOg{N< zGx<@kOqQkvA7@djm@wxinhI;)O3cpR=+%7wzb)ZQadtJk{@YBR?3KyVblDTqAa}x3 zRq?7uqNe1!hX31Qw0`RP<$s%rx!<~)WL*a&)zyr;-mlkn=YLzw!)wp3YxjSf$;@7v zEFCQCYBt0VMuGu}M4U?AeoaST_6~{;vr31VLhw<_Nw{qfV66@Yybyc_ zFx`wnu_9@$zF00UzVmBZ0(>-Klq>F)W*|&+aSK?xF2U-72H* zKLGP?u`y{z-Ymhm?wOnHyJ3y)yJ1Z~z8hwx{M60Rv!wt9PN_d*lCBq>)J!gFr{X8! zc)+*ZQS>B`biKF5zo|wx8Ra$v5{uDsDh2$IS>fPq3vqfiy|-%Br1|j!D3f;(WEhuH zs;`ltJ9r!1Mz4ae-Ik;TfTBssxXhdc^KBc^J=F|*cj>iP4V7D>Z*OPzq>iJ2Y?{2^ za}?dS!khc8wP_A4$Yu}!Hi`Z%Q^wPvLX#@`q*|zTJ<~1{uLQl9#}Ag*Ag&{h(|n~NYdSt#4;i= z{FJ&`a>-o44<2Snq;T3{OspZ)2;1`{4#Mp?$@%+eDZ%}HfxP~8oP7C<4EnhV2kEzD zfV|i02lJKa$I4?68orO8PAA-Mz^Q2MUb)snqxkpW7Z;}~`G3XPy%N|aSLL^7^LX9Z z+x7i}$>Vh+9um0$6M5E%*T2SStvsOQy(+OgAXT38vNAL68~NrW;Bu9jnV-qWFBo^i zsmy~SVKYQ$vi5Y9{H!e~`B_`7R4tf8#mw17@AdHX+E;oQ6q>yYdYE^KgToj&ar_%p z{ReRt-wfBElB-wp>spcDvJo7#R}Vtg%Ld0IK>{3R^-Aeh-)7`1^27--R2giJ3<>C6 znG4U#({l?XT&^>B9E0XkymWq*K3!MR90wmXDT{6_kySNjntI{G7Z8`-G>eZ{#M%w=1n9EjwYc6^Me*RP&{7Ys+UOdbP&ytfel>F70qD#$g(Or1F_$fK{ z_A>D}Of_(LM+TnbMN<<4eFM=cRowgN<_f8)pYB)?T(qcjrY0_6Uu^7eI1cSzq7Q?4 z&>EPTEeFBWJdm#(9s+qh1ai20M{`%_MyK4s^#$lpxkZ^dVo$e;>XW$>7aT2COv=`? zOrMm^2Q%sOa`h}LW+F$# z^z+`v+@UKExa5|{8C=&OH}#XU^*2zPDyQ9dd#kQVAh+~tv!D0$lK30sC`&%B)aC8a z;L&yb%8C6MNHqz(#9XveuQIKDL@wfomAda^5iivj@mzL(^%AT3DD}`+m&XS5FbLYC z)vL-q!78gKxWMMBk1fAg^*?_t2)V&KOxdyqjTVlkY%=;%)Mt5@@~NkK*>qR^agO=J zzA*=I%x5^}2V!ak?b6=b13mYoI0F&Kf!rKpKNV9eDb6-Mj^HR-Bx>b2TR6^f*AG7N zh$nOv&&QYm(#s!w=A9DQp*t_SkCo_kCrB{egd5TW(JGlQoE!*!l@a>tQ(7VQyV6S+ z6o!MPi`dPv1gn<{o$6dDk|3Y`(JYw{{6Yrwd;&6`iqeYC=NxsPdIutx1)a}2>W+J# z7Nu2q__OYL8$K_e*3&(WbT|(!aLNPo$~&0D5W314w37q~H=ySDE0mcr-Mjs~=IA}U zV=?y9Ow}1rbhNu=O`OwIW=^R3$|RSI9AcNSVidHj@#_p{3u_WU+wkZx+Ih(jyLLB! z*a(@EU(YEi>Wj>(e(L=R&QmL}{(Wg;Vl0=NfWCU^wNK}oFH2GK+m;Tc2I1F1j@!3d z%X^hojlP=)SMF*C&8iQtEG`qZQW{YngG9m|2wSztyFkryizNAv!AjdzoB%Rr z*2l)%-}MBaV0I3gZrcnJs8#nHK>>fg%mUyt*)`~BJEEn>gSZm;v&Ha*e=l$Yl9-HKU((( zAaRGi-`8zk{Kt%1a1B0)F1!cX($ugS^;s6|vcaDWJP0wcWz9dAwQbyE!fl7(yt)T6qQ~7zTi?u#&;;qDnb7r`+;NRtO zJM#G8&g3np*d_KU4}^&|-Y>loC=WzNwR(p||G|^NIYJ)4(YqGn(^|{rE>1s+T6PtU zxNb`R9d2LQ%0Nlq%EDSE=tJtlK3Y7vQK{W=kmEU`48(Er9UP;UUl4Hh*KeI z&8bpRvh2DN7M)`6e;(1f3|eLu4-#s2ur`CO$%!&Ty_0$O`s3b(Jw(GhNV9KdEbiNvk1zrT>VDb%g2A_0h zCq}eKNMh}(`#@S-(}0(SANSs=h3;WNw|HAC9_h`GpD!E_$gD0FrO5{kiY6}9LV{Bi zkMzBv+28h_551~Seg|ZNr?;6CxhKBk_}!e9caY#p1->$heNoRFF?OS~$&gHzd-y}g zOyW#WcwjMnvP^8?xp<;PUyCll&<9|GyLuz&EvuM0L$hOL)qCIuBA2*R2RjyMn;gn$ zg<*!L_&o106&~F`wrcDALK(%b`i|w3-POA_`<}Z>wAzy(+}>h64^3pWp2Ppe zV5j+Y&3xeYmd;e9rid^Bn^PFBk2w|hA=G4US@j0?uTj0Hth&u@-+hX7 zOIdR@1G#Q18ex!axd4s02#TxAJ)x_vZ0e3No5wtz@5d5)!V^mQ=Xi#kQ2&0}e}Oh} z|2_UCgAEdKqV+_F*d4v=Aq+D-DZS z>@q8Jn|xe8TpDh&EXSEUnk6|l_IPEBD9vGL)HdR(r28v*uaffT$+93Q;m+i&cYbU# z$dZi6`dNBx@fQu}IdCma`i5~R#Xr6$WJ3XmlD?adupb(hkx%fR?vaVH!iyUTy)N@5ro-qQXX_K;r>zp!Fjs`A`>!<5xQ z-hm7QJP%B%a&`MXYh9an82UJ+NMnO4K=;HJf9SEd`>v*x7cCj&31vR~1GAy?yYx7C z$wgWy^H)EByXM`|&J8ADqyPE`z}EB*q}$)ntycU9)1#0lw~Ar`v#^S7S?_OzE7$1N z0A2aas04pVgDraWZjgwyFSHUK=ZjeVRjaN=b9zK=m>Jg$hr8Oj;Y$zQlm?#vwSU=Q zgLRTv_v;3_@l7rjb-%8oJ4jqFR)upzH*|8BtHHWKz?F>!kr(5-fdCU_(QLSg$8qk9V=iiKFI& zky8UiVHAMjiV{-ukJbEq{c>5*AIXVKP-^Wiul_$0!_E(*vzpPe|inu2Q( zM%`w`qeVVaRSwahj^6P#>iNJXLn25MH&~#@S58lZ{Yj<${^PC4|#$`5ag+ae`)9KAFX78E43@X+Z9lM-}-TKyx^l?f> z4U^EIy@oYu{CSV&a{`VLT#quS{JpaLL-LY3 zoG-6PoP#0uRxdGATOZ~5!KNDm-vuKH6u|?Vs2jRqLeHr_AUGoG*U{D)p(Jx}&^C2KT-AgfO5-SE_ zFXA}uEc(7TQ~Dt2HwH2>%1kWh%EUr(Ofru3Tyco&idZywNgMU5QvYKR_=Z>L=du~} z9V^SxgP8+MONdc>Y9qUyjzQsLHTpfcng{FZ_+b58DzE0NH?j+re-K(ny~kX8sy17`2S4Wc5dbkzz|h9velp;52E%l7CP-x>UJ3P zTmwhorO}-cF!kL(1&KQqDXpLx-$kpDFC> zuOcWx9Mbh5L<_#s^HxGKRMbkShIIWoU4O2)_lUec_<;=9pVRqS6Km1((UZT7#f~z% zTpUG;Mz-4E*M-@NE4Z1Z*>r_Cn=Xv*)UX*_&a&X92JO z7m=WLNyg!Qgy_biu~KoQWzE9GouNS2Q(j}y@1k30GQWA`S`7H7<6F3~&Z4C&y`xV| zl$u(XIg6fV{p5?p6bKiFIUrmZ{VdC|2GGMUsmKLiWzOQKnW)dCSJP59`7w}PO zY!$ubLxembV2}iC!`LeCMU+427GnUaimTZi2?pS(tTSEN62P0|hlaNW#X{bB1}b=I zdb*r*p0DTJ5~$MefJN|g!9{w40mPcXrCdmZYO_%)45Y;(=E#F5P6qEoDiK)NE7mh- z#hTBV=^wK&QRITeohJ2kR-s3Ee&jc^>G4b8rfQTMW7JdKs(720LU@YvUhfviHuYny0Sq9k^ehjj-3s^Sm|u|I|y!F*mr@m=C?Yq6jQ_KU$dl|J5pB6Pd4dn@X;v=4hr#*bq^R#q4SlAXl z&l`*BE{Zd?t+(+Us^Hk44DUB~ba*`W4;FFk=y2&MfL$|2uUZ0Hk$KPf z5>(A!z;t8<0~P41Axr3$cnI7|3;PNh$P_TGayr5=BHa^4pgVd?67Y$A^oKio(kPHTMcelSzBP&KuWSr(W-id|CB}y&1uW zxFHhJ7E!c75PM`tVMj}?pKcy{@WN|pY;2iJyxGgNE&X&9ZA%wSFky>&68DvKzpa2> zNM~9{(=PDvc6M;)Y}L$Zmr#b$pHhry%I&dO^O{WTaVX^jqu5u1!47|Q;ld8NF*mjN z9lZT+Ep72T6L)#TrEQGv(`{ky0)3abB6m4&hk0+zr(Sc9{_JW#73s&H`h7p>@uyzB zLE0$#TiJNux#4tSN7VHDSgbgpv&{isc>+3YP=H~BL@T>gKMH3-z4n7y*bnCDo4_l- z_XGAc3zq`e_-gnL+~o0%sFz2#zrqI4Qyq#j6AJ|fiFV=)PR}i(0*gbG41TBQ=Q^-*rf4G4nFjo$;u1rT%PFuxqejOu7|Jb+X@_eP9dvc7%PCK7foATY;tqC6 z_kZbZ&)nzCJTYG1zXtgWnIrq>jN10HW_&AEKcvQjf!5*D1f2T(*=u_3r*nJnr{%a! zzltl=&P=tZwM&M6Jwi-9!#)FK; z32eZ2BM;^7;M#2n>B;Zp)#uLdP&~gwGCydJtoHL+bo%P&^_-8$q3&$xPJ||Z&x2QE zLbefecx}xFn){nz869h*Pux75abPqVZ-5;eub;?RjhPRdcMUM(d`tEC_-6@sjW zFFm1bM@eA(Bi4z+^N7_~R3e;@SRlSqR6!r22J6xxo9etIF0bkd!vo}1=?gQtjkf9I zfy;rHiC$${8os?KOFuJcVQq{k^u(eD2fN+bVxz$Qa)j`(RIrsGMF zk&863Lz0vjM09~3l2Qy%r7*U;VlP&Yr$LMCpDXqMgAHwS|KwPi+C@?BSu1rLO@+F) zU2klqug8Mn+Arat&%9}Yos1+|Q5=l?&{NHHFAfErcLzg3a||7d>91q^LNWbiETEvb zBeUS+GBYYS`1Ic434$6YjKT4(F};A9T7v%GVAW|bMn@7B=h5HpHWG@zwhWC|3n^~+Lb*5F2EV& zcfu_B$in}Oj~sUslIZzr)ve$lok2@OywBq`Jj>tHReu}P1K`VX1gN2-uS6H{mawhPW7Xt_6L4*VH7!DpoZr(V_TQ$K(T4ITsf`h`~ghJ>G~ zZ345w+XeGsh=iFtwY($MQ5RO?X#m5`5I6FU#0>0#g>kU2H@KP>U%(ln7D{;|+iai( z%5U{8C<(0aTTH$x)WX5Vm555el?#J^J*v)~SMuJl&c1*T9@lS^I`8Z33*(-yb9pO} z7rki?Z#f2hp``1vrC+*Ao_Gawo8ox308wYK+Pu$ka7R^|NL31q-(dAk3#`~+G5S2H zP`RkwVC721>x1U$9Nk}ixGj!U^6fK;!X4Ziaikorsb{_~#HP%fn=@0LuFi;So_fTD z&}d+S^68seye9P`29JyWJQmXf3qMtZYitlvhW@e{x(LB1pP@D6B@^qEycNe`rBQPh zq~RVZei%NFI&+j3XtHU6e;IwRs>M%sL#(K{Lk}EcrJlXf6S=XNTdI~|p*j!3$Q+!x zXo5v8@OJ!_bc6_5WtrHD1N2U_M|>sz;R))BioO&S@aRHeR+ci2l(iSVXV#_q^x7pj2| zjqciJ6dChB!z=U-tgY_IhZbThJm#+Ghrnab_m-;SI*Td>*dxC0ojpTMqM4?rTkMZd z&qwEg#Tr1=!Yw9Rv6QQ^0pgqD#~Y}ql|RtLSH%B|zy=ohWDMZ;NsqUWl`@K6mkW_B z3-ERz(TaBdYE9H}x4Q$otnekO1?96+{|#}B?&@*5D#uf4Oxjf8$+eiz*iWv!w0C{Y zs%W;ih}UTZV4!?aiQzRqmzc_28+CJuTTF-ZF8U&8t`*D;v7BAeNxv`|kYxr9xQmho zoSQcAHaX-raZa=Zt3^*jVBod8#CpiE-12}CM;{N^&X?e@M%Gb)q`5#BO2nYE03lNJ zkrqsgCl65??<{xd5qVmW)#~iTr7*u;fyQjO^1P&d@lc%icvF=TfFNqdU@3 zEsD(j;RF@TrVg>-h;qP48VaEYaN^l)GOER+b5{=JI2if6v|tJRpyvilXeR$OgZ{I> zz%dFDo|4=z0N~Fq>(eKX=9J@|VxLpI>S6p0&ZR8mu*P<|g~!nCG+&?N4Bn8%;d+SM z<_u2GQ0=30SG22vmvF=iqOgJI`R z-0E+Rt2m_gj*0-S*c+9yO2FDIF3mN z*v{N?es(6Fr}MKX@mv|*JU13g)SDBegHng4=TEs}Kenxr1{h_|LC`YL7a73@|+RYop} zx`Wd;xr0+S(`RnhTUO^G*`c|TcS^Y%X4iUCx1qf_Ug5rk}nI{vJlb|^o)9oGB#s~RqsZCsJm#uaC^@%(64 zWm5M4u8j-*J#C!awtaS-?4fW59IXDerCR@Z&BW7D5O7 zQBJ_E?%z=^ttWC#Nh4qPEpPRvC^L_Dg74eBNvdm2*tOF{os$la?9IDpDCsj405c8; zEa3&f4;^+)nI|MZ8^4=(A9l_98xEPnK!bGsW0ib^)af^0Km{6=y0LPWr93E&>e}J* zXp8~%tj?+Ji>K>W9)HF z%url~ZE-2U*yjv}UkBE>Y55m-OlW zn^)1#Zv(P>T>zb%F%Z=r5BX z@$-D{=KgH!_V&X+!c!M*DrTT^;uJQL<(l|kmc!Jwc>%GmwM5ummw3~yxLP&)!6kMH zQa&yYQa*~2@!wb+?YxxY`!001gpop?N5{e?{_!S*@3_a@0vE9Mua&x5CL?#}oNv(Q zY0?C}J86PWoyC3e>%0r4vK>|J*Ett5{ntc@yM-FXVKC?^itu#>n1Xq5B^G^h6-}cT z8PVHogKJxv$LrA_{Q*j#mAQ*(iKC_S)*M>m@)!%Qr+wJTNLhWGyQL9d;}%2?kCrK} zgY*?;_QoY6;{E}EA`)*3I0WXbr|I5&TZKZGsSyhGVh?`xXa7hU^%Db%ZgoS+I@r@2ji?bC=i zSwtPaJV)*oLJJ}~aUyQR@ezGS&V{nGiujZ$=+(PP zAIo>I=DF?q2)5`~oyV#MWt~)=7cMDb3bmxSIkxLIE#$f_0Zc>nTZOYm5%ws~CQnGS z`pjiwKgh#WC67H=70YGCRyIw^Z&`AllDCTjA}Sn{EwPO4=rlcL#K(;|#<;opjmwl{ zs#FzbwZykwQ>_# zb^5=apfr@$@lEK-%cC0#m`IH&1b=uI5t{HpgxupH|VDOlxUk z(i3a)kG}{$NX+jL{qU~*PiV)m8U53aeh7#6EW)w$&T|ls5xLn;M^io2VtAN$uYbYG`nYlOA!^{_GOSzmJGtqS4bD=%DchDy z^^BXcC7a}cFEVyIR<79UvKC}Yj>(}nY9P_5o-Y7Oi>Xfx_73z?^na#-_^j90t19&+ zEQ^vmLu1ma1*5D=@W0D=itj+J*ovoHx%;G4F3246yyV;A7IV*Voo_Gi!?!!m;@hia ztw1=c5?o^i9_ROP>C9A4Pdv|$p1L8a${b&=vD0&_oKWNhRnqHx?NVmniiYbAmBddv z&f+IM(MNCS)fhb)m-o&1LmzimI(OF5pAJNmFfL{Tc)ko3RYm#a;m};dSznj$_s2*MiM#();eo*pHN|Ux! zFg$lZ2exib1lnFi4-JrzKqD;W7QApOqg&O;yIIa5tS@U5Fk70Jq2x76O*}U7o0<)} zf)6j7A9&yB<;<^+1Cda%>qoP)^Q`sB2oDXLO!Dm->9&CZ@FRLd>g?R1`or5&4Sfe$ zm8!T}f==Dey^3w#=f~T4wGWb+yOwvRh_|US^@n|xw4f}!umr;Joq(gZ)kVU6x>F~R ztUJK1x3@ger)43RRcFJ@Jo8_T7j=P82U|WO!ItmOWo@kIJ{+tBjzSDO6Y`n3Qls0aZpbmTCPi_-d8CUWS(tSIdD*Uh~m(6-ETa$D7d!JmkRu~hx zburd3Yo1FOfiIjA5qVy#lGje#gEx}9wPGeMwR1j)#|?M_cm|98=K90l0WKx)Jry9sJq=s&PSRYNuJ5=#3GZIiiqqwERdoPjiSkk&^-S$OTa!9~XBN6( zI(5PQOPK1}evKLBRPtY6x`aU(7|;Nkj`OJpZo7b4@QsOi?Aq9C8aqK%7VwI&kewnB z!E^2BJ)eq*GEyJ&y69hl-Lq^vAG$L2C5yp@ws$ENFYEq}xPM&YwBGgIns@{?pss2I zZcf%Qr|h4~Zs0n%Ve;SgC1o(Htef38(Caoe@R89w43#D36MiiC3s-d7___$a!0)_B z?K+JPTp^y8j+`izs!Cb4Xo@Q$M4i56@*k57%Pbdzen2(aRfhx8KmPjzQr*kRyP19c z&b*VEbT<0l3w$;zaRs{KXQO^Y&)I0|96lRuF!Y>_hBEt}jfza1jsBK0^8}wp)Zo+j z2Ce!&nUzc~Tz)NRIT+LP=Qf6?3^b8%gWf`}`#TlBHt3D$TNiJ!visu==33Wpdu{Be zy&nGW+UxHbecS8FjHLE@>iK`yUT@7ltG(uA^lh)%8ECJcJ>P$O(T6wcS>jQ%FsezH+i;j-ecjCh+eOAk2*!3IxU0f#!SP3+zzdet8i&8~@OWu^Bx1!w0J zL-p^9URQ=={$@)HzrddwBmRmLxC6Vgoc5cSE9+WMW2PR6mP=FtNsSo>{D=+%o?~Rr zO=GT=e(pR%^RBd=er7+KEa{v(ryqW92H3aX6Z_T*BF`J8lSK5Zm_NJ83E3t*Mp4j$ z2A4APQh~?v=@IMD!_8qfHB3t%2BYj&G}p_z z7Jr4BMS~8M)Af^R-sEJy<0lxR^TBw`v?a?boN}vm>(6*F&8OOUlo!`3VQvnE#T|{mj(TY3L(!*xA$ign2WTYxgrNZQ zpE4O#Ci1h)bbU>)B;L(=8T4vK3x4P9K_v(4V~QeAvC#4@9*%`mUv>n^1i8rt#YoMQo<-{k`b;AOA-B=;7k81L|sVD~idsmKcs2X@_9TcOy zmcIjkqs=Lv-p0rXGe2lyA1OvYsA+CtN5D9e4Yb;Vfo=NEZtJ6&^5zljY1uoK?FLAI zCtI`@*CMHh>taJxfUI6jjrcWN%v53~RjzqdCnR39-=exUrS5TgFoa4$!RtFnLD64F z^atY6=cDzj^k}pzznBMq#WDIf^~!fXGyht(z+i%MOh8vZZlDD+ZCK1?h^}Olmb8!3 z&Sk;ZT+6D+)Q44~HM;7rMqu;~Y!0l3G6ueC=DG5J=?vw6vCMzXe~|wo%KyNhIe&BW zKnY#?QilmP%K$Ik8{$|c&AgzX=&JA znsabE3vU;&Th)ZDObWv!%as!qw@K00f`$4o{!|kao=t_Y zWT!iDI=1AZbK5kt-xQX3*pK+Yn!nO{gC^FayhN?!dhLwYY<_NDyefuxRhU38%3ddm_^Oi69>$;CrU$&Wl*n|&SG2+Bn{V*)FLjwrS3X#}6mr4g zPnZl!{##3LfpAW#Oc{vh8)@6oq)boS{k{pdD+eXrsB9!={>V~*;l9P*`VL7a)Oq{q z-2mF99H47+e2h0rn37q0l>E<^n3cTGX^V^NNqo^ni(9;fo9nFdi?LO#r1Z9xsk~QT z7-xg=up+)2pjJ3ab-DT&R=(v-W2z+M%)N1LkDaRhEv4=zmbI+mW3;?xy@%6%3z&~w zsEN&+`RHTUlJivQ$*>{}0i`Z-RPv868%+E|c$tm~Iyl0uc!?^_oSXHJo<+@A(M&xd zMT!e}uiYTqeDBgrB|2v%d?8lSDm6>)u&80fGX6rM*M9nliTsTf{B`BBF{X24R8oiQ zqC~$=x8ouP*ShE?H5QW+GL}1j?^`3^sV2)DnN@+%aRE!<=(AqoA<0-EEQ;&=Nka6U z5XDuw#VgTYuEkuR@S8y;#HoL()Lp2P$u)U$w6{T!G3Yc;rlttB*;5B00ko^a~T+A%XblreAKkwZ&H{=uaQmxLBy6eq( zH03KxAgXJUP=>n^#U>>dYo!x!+iKm3_gd-fJAL&l@)Tn=WMyKth0R9NS9h_`ZG*9| z`@X%pu2ddX=B9x#&xv`&=g#1^i~=3#dbp0s;(*XvgV4I1K@e!D6$}Iq$Ih&s!IzK% z8j7y^@a@A@0X;gl*m|9{5q1BsMOa{4oI!hWsl}%}CzWmXM2}y?igwkls`wXc{xys@ z#>`@fv-l-;cmRSxeZO4b7AK^AoJXve{*IeG=KZv(af^d$?D`@&Id0Z;AIFEqkovZe zN^>yN-EE>VzF$?GEn0OK5gzup9hz|0fD#>mr#t%BpJL+R61JU!=kBQ{c2d;{4I|+aj*#f!)U&J6V6cqC+im7@Y4>g zJzni>@MHgGiUgGauGUq?Kl9o0XIk)lx_n3-{~Go`pd};hZX6NGbiL8}d7b|qB zNL_3t{^=-Kfud1+8c=|z00lVGna8@Phz@}>u-rhTh^UG8vf6wA9`7#ex=9lQ|DOSjP z!ukoq%hBJA;&Tb9Uosz5qY?#HR)g%)f|g!mVRT4?(F=`~c~-{#gv>RS^PoG0qQ3&c z5Dt}y&8x)zSTg3!Ay3a8oq+%J?+EDw7eD+@I3f`;ROW*sNw4NNQ27_6Qzj-ep3+PE& zP~QvVNq6vGX+eGOAsKr-z2D0Uj6o}7f6@&Q?7bJz4ZKKrhqC)EdIBVN-w?iGYHxXt5)GzmM^T3ZQjxDwcU*l?g_dbvV^8 z3^P@LwAmwCXnlg3;`XE8Nb|NFXNdUy%-8Ou2~*v*UBaNhrkOipneQP?&a`QoXpLn? zC_sWX1=;0!3ujQ+!I{M}e|e`q`+iS1vCP@4@c8ofG{}iEuUy6cw|#>+#%&zq(p7Sn z_Nb~R^_nI!Z#PNgq(A+EHFef9-l15{>r8NMj@-yW@G#3=r9-=|#`X?&xnqb<7Mn^E zVrsYW>#}?)wr6a`xC|cxWe9cFN;X&3h%P&dK#nEGN%~sHg^57-oS>(R<)V^%>u)Uol#0~Syzz#vx?OKU)2$4-6B#FT(=f5XT@vbHP1I2 zgfiQx`@63EDL@#0nIqv3Zvd*(L%H(dM!fk$o_zRmhSK~g;GjOHD@<@Z=?YYsPv}~# zq(9LJGz~Sd4Ku;yON+zT(wN9*T3)fm`blVu!~M^{bK%DUz+?}V?2=eivyeeuU?eov6sHIh{n`aoCl90 z|2FHZ8E7z1k{uMGOJL-a%_63iK6lms88}#A*~D zteq}_r2mku_cc0xwLTOdvwK+c%QB`Bz~`Z zK=z(dsbX>Ox!Yw8^<9Q^e@v8O>KT0HT79n6O0BF~)L|){Bi80Iwn#0MxR!ng0aA&p z7FAvf)5Y3c83X!W?5knzGnsL9&CE-GXVQTRZMCPRv<-}On?4z9C1=N;g)3l+Ty#`n zbmW~yz4Td9{`!qd;}!b9P1636p0(hUn2Cm!w` zmw?Z=t=468wf(q#usx)U zzlgf;UEoc^d&15h4oY2+Xka+dU(lkmv`X4Dc%V5wJ=f-;iJj$vsl+s$Lw`dHt;p31 z8G+UiJ?|2*t*?Wpdcb5dM1NTvi-8-R*GmJFt%98O3`C>UJqH=u?{WWm9R9|gaSnVM z6Yuzx(IpmTb_Z~25+F7IUjfuK>EAPmzK6Y#+#2{juAg(0+e~mXdSP?z{b)=51L6&y z(>YYWFg4dcpr0d_So8$H(i4iZbd?8(KSll`zca4tjJlk)kYf^ zZ?30!S&sK&O^kR3$$}I9hf`0@iH`dMz>6b(OV2$3Co8Mi;LmpoRv=| zg~T$y`+JyASA35Q(GGVy{ z_mV1v>#LH|SIG1?pOwCv)B9xlDw%LmQo;o?;pnpxevcE5mkAfig1ebwZQUTB8sx<$ z1H0wZMp?w>;XOrclHitYC;ArAasoxX@dy{eDa874Qo?OA;fAvk-optWl?lT#VS7?S zX$YG#^Q?q3IN?uZLTORE{zy{7Lo(sTXC=($gkxmFBQjxEQo^WA_|M~g6TW{O3BURs zC*%~NN4AYH7+#cni6O|~3QurJH>Li|S*icTskd_KLTQ}!nbFr82kfi)YY!UVjq+a0 zq5Gfb@fphU9D_j`_vy7k5SE@!H&rA)TIA*bi_{4(Kyvl3c3;rTLQgG?CB z?@4$hpA+u;s&B$QUm@W?e#;3tg;?L6l(0)Cy#K6(zvP6E$%Nf9;pU{OZjx1sxI4R*aneaPjCCuT3V`ajyOxT{3uvI2J`eomQAAO00Cm)uhO(t{{BvA{- zuSwZ_R>J?~gkhPGQ%G@9fL8)BO#j>C(hU2*=Ax+X?N2>P1AHn=TMwt{hJc|9t zrC-o4O=7{M`#159m0z^@H($i`-O-=Dwr(mrVHI)`Z$vKu&g>Kq#4qFj1)v_e5fTB3 zp>12QgUPHJCz)#Abvgi=y}nDwW&~ay+-CYR^kl~!^e|8hJ|YQOFQeF`zvF7Ek$A$d zzEBNd)HkWv%S(O`xnK(aX&p1*f^|!DzCwXcoU5g$9rmHuX)urd9JkrKT zv`*NhHY4Dkc);||REncyG_$f4@+rbei^HN-ug;S|SNH6K+<`H`Ru{xEz&5yrsiO=25Zhi%4%sV;LpNNBi#ZUA^!2?T8;rF73ZIoxv3{2C6Jh%CpD}q z_freK3c+FLdGVv6R@Nj`*+#|o2ZnmjKeG4=@U`RkA+q>FCI6MB8A|@4rAk?S*sZvr zQ4VR#P@s;v14oTY&;$7B;OYj*n56BhUs|+6LK|GYL9UVmK39`4`>xg`W}heIj!g-r zx*4x8RBrW{57PG!#vB@yaGps;6`-iw|4CEsc!|~K9jXN%;(UV-q1d8_@+|DMwwND% zKP-L-<@l~18}1y3I_-8BGl--&qFiF|*dyNUWm0Mbo$7z-x#)Rz{+70XtFN)(lzhuW zMSMcA16sjn2WXbz$$N zuDZkC^WD{rG*0UpfpAr$7n_ zV~mK^fNVsG`{ zQ_7M>;)^FzIg3?yX!Txm!W6c(bD&lm(PJBBRJUdEa6~=7m(fNgFC3Q60Z?wA2}R8G z)nQ5J)7S3Q2|kA?V|Lv!$Tv_Kv+oWQq=>5_qhqOp!5vzQImpTgzkJ7JC=0CxrX5a3 zE_=#EuYY++u2>Vs(c2v{?xG)B}8%^U2G4lqiO8&^Dac{@9UC?K&JM0_Eu(3-1 zuEmL0r}X8s4QC zxJYJmBXxe{3#GCouSU5sOvF^V`#ystmMPQ$jNtZBr<#P|mgs=dXw~m>tIE|V-n1pB z>1S}s{1nVep<>+hMy}sj;|L8la`umP5{*L+b zI~E|?0twb@tFW*XVU|>^pS4F-rnl4oAxK-;EU26%*61v(v#X{5nRyUA==ZkO8)X=9 zc2{qd)%V$`&rX>n((HDNInjsSfoj8Z7=msFHg2?Pv516=+Wd_)cFDnXw$XI9RW(iy5kx7@EoLgNv^o#0@V87Ls+^4s~HWXD_GXIV*{tD zd!A3V83AJlFIVC~^m;pSaZ^1o!&&;zSWI_!OdEWiixYZB1kU2(gwDkUn2VbvxwtjS zT-=V0Y;n6+iVUb+rS4Z!Js1@N6Q|Up)(qzn{qAunJlw}VAw_Gn;!I&cQ zpAL`3{5!B58@xA1UvhK)9?>cS;IfqaBY~)K`B+bNSY@GE%?2X;-=)03a7`8&VYmID z_hQX{AKFye(xxiT-DRU1Z-1k%%{$N|1cIM3LS_#vt)uT;9EPbcVjPKBA{Xsy74x;VbMeJ=6prcgltz0YdwhV`> z3+QkuW6s=>=^Mtd$i@Wl={L-hANCQy{76ImW1>v@o@So3{;)}=rO02h=b$x!E3OMG zb;ay=b?Y-clt=UM-xK}LF+P7?@8D0EmG-?i_&Dx9UAmfLT7&0`-LN=hgPbd0lm@5JIt4XG@n};=tvr_KaWikYpEJFAE z=JmKa)aWofBt*s8AK0t|3EzYmLQZ`MnY@Gas(W*ihZYTwzZ-f!tL`yFBK$!a&S3iW z>-5h&)z$Nv-`jwqEB~AC(~!rX2g&a%FvTVHl>%xR!6ggvZ7;pn``f1X^KJ8Wg@Cv= z0JC&ws{|zQJcoUt5&?zOmcFH!$NZEW)~LChG3+yc{l6wj(xZ7Aq)y!o8f|8E8=_9JyhLgl%@$m?8*OB|)%biJn<%BYLP=SscPiZe|ik38l}+rJlmzZ_H`bM7k;B2~4!#(v-lE^395Yr?`6UNz}P zgJSgtU9ozju2}tOg>LkE`CGN{qd9UDG_1j&?nLO7rtKWMxkyIe2CM{SOXT<=XTy9b z7ga=D!;h>2L` zMhpmD^>u@V_W^0&qpz*0NuqZXZDpYvC{kUQ!R8JXbF-vP;E!MjMgf%vp`Ve>{>*=L z8V7xBtFGil=`*2x&+k7*;B~}ozALAFMJGbvlUY=}$JwwtsFME=RwpXwRRId2^K&bg zrt-^jep3O#Nh-gX&XFo{PPae$NHKA2?SNnMJMd9uRXDZ(KI<_>7yryiYv%Oa?<-r% zs_Hs?R%oPOhLiG^6YYT`#y~iQxGCBIBYX(6idQnB5PfWD zEY|GIEij_Zph~s~#u+f}mfaG4`aBGWvMMeTS%TNwo&(ROaMOpz7z#F=y>Hf7U^1@J za>}|nO5Q7IIjpmeGJ&=8b?WywH7MH6d;?56{l719P%7U;Gp2Im*PPbRwgdVy9FUA? z#d|V5U1C%VeE}9<%C~#@jWg;Wm{etoN1uVOqi?DwVuo=}-%-!k4zF6+R@b5Yidgr^ z#YBYa-c}jl*H+gWH?L8HgFZW9jBdAZGIAoD~ha|4Z&N$@rb$3B=645r_?E z!37X>v5{=$(_MO=Fqvu9Er%;6X0g&S1>v;#x@C;=TBJQ>qigp|F#UV=GT$ zz-?uR3N1Cb9S*$yKg0k%PEJ-Quw^Z27Ji)d@bn}?> zkSm^HvpF3(8z3{wjd28RN!knv(k9o;fDQnt)D1&I>1IKxAAl|lBz$N3cYrUVHRLn; z4V9niOl9AhN92|^3oJ&FtpKi zfc%(<{21)~(;XSg)>3OteRyS&vUSSfn) z`03zPT1%iP&gO}fdk*zwJ=Yz=`P=XO#MZV19A`6xJ^FmW{|RNL?uG*SAuNA6x|Use zbZZ*ss>yeSvXvfdf;a%8yByrzAm}MrYDrSS>y?=DY;7|cqD%gL9@buYICFEsZHF=+ zMDlTI(nf7aU`1{&T#q%BruL`vm;614RQ4&N3gRiZ4D*Dh7+qK>J)sf5ZZsLBe!c2H z#oj;D;r;V^c>fG5TL6l@+ofzt*9s4cR(C8CISRnW`wAnJfp4!zjJW)D)le8K6ZfG> z%j!G4SC@q*Tgq@6dZJww>GpQ-_sgo))9%m>7I(Ek7nPYK7$(##_Qo>B)e3FLSFu@p zg9r&kI5z$saUkf)&2x(gU2>s!Q$s(arE`ZBx#f_-s=;)%Sxqzc`E-4Ju`wg->J%O? z6I~wh9!;s@zq5R(&ImI$NE}^-5}!-gk8z9af!Ip&P80`qT6N$Fla%YH0$0hr24C9g zp>H4g8ukW4et8?dT(v+fdZklLv$~3H-tW4r%jwJA^yNG_-R5@CZZp8cJc_FkLipDy zgu%izn$)kS6HCxa#f;)(@1S^s_pPI+*lL2T@;-V>2JUVU^rQwMOC3EW2O(9s%f;P~ zX$)1VL5Ee@62OdA8yu;zX5wb7c2?6->eF#_C-CiJfLMcysiE>%DAi$ZGatmUiSr;Z zQg0l9R*|Ra;BPKAN}F?~E<@j|R@C&&*D_(r^@Ogo(Kt1>uq5iS8)MRrq(YwJvzbs+A5}gm@-bRQbeN<&d1sy1FU-xFsaxd~ z@OV8%<2Cxhk50wdY_d!oz~BMDXwanrRxQwGjAh<54RQjW;+=#`w#S zCse%1%!TW7G1U^v9z(7718O}YEcQ2*sV_%=Mmq{I^;;W{;-c|NDQ0M5EO-gE9c;18 zQ>|sh;8wq?#TujMLl+Sc)(qGj2VyILq0GFd|IEKC5zJp$HE~Le)JC1rA~7PUZwR-A zTEu=-sb3Fmj9vX!ahEbRYCpPi5t0A(9eo8GA%s-#!-;b&bHg1FZcMXk5+33jPqkS> zLs+7b3&HwLvBq&BTpfKElF|+=Br}jjaEUc|tA$d#?cH}>>>1SpwamzS7R~$`GSfnn zZPBHi;S#IL;NAeRk9=fN(k<5j;9OGr0?phawLs$7_UhcG9)3U=WeZT7{O1Vf|1c*b zm=9$1@?I-(4<4B;q&Qy4$M%y-{ht^vxZh@OQKoiNlzUdol{WXFs>9gzYVQ#Uu5Qsn zseWp6Q!F$4_Fipn*Q$qjLYAOxcT?1z)w|vIwV$Q`)Xw@(%VoQxsS1L3TC{4jVsja| z9BNK#*aj_>(I8wlG`1sHVmpUVga4cD`+`}zKN_fQJj?IVRGV~rWSf+eROw@fBW zbj7gVl{B1H$uoOUN!zznGI>9EQoKo|!G7@HuFZcr9mB$WHnq|9*Y*6~5T`glr{T5^riD zFL2UNMt6gala`2kbmZOyx5f4r)>!7y$tHHM1P-sKZO``qQKjUiTyzq`@m~~3%f8guX6+6+AiweVNWcIvRjx#R@t1%VOFFWyA!v{*iH5=vSQF+-U zFPr6Mo4iP%`!%iHjxE%DRn$X;9nca;*Miqm^{=OvxSle-o?7C1YKiM@E$WTe8qgot zQ-fSj4Rbv;%JtSdQ`MPywL20_T@sC^KWg@5w(y#VY~q#&m$@`tYis(cFb%+5V6k3v@f~ zN`sS^Ep;|9-kk+fidvF&OqtspO;e<^^7Q|~buLQ|1Kp`BlmaKZvIK7CVP$qW)=E*NapN9}FCD9E~v^xSqa^Xj$PdE$Aw62Fq;J z3oZa?f1w3uSYg=}EXz}=6_j<~OToEgfk_i8s|-VOZmXi*_RlTY*hWf18DE{E(a3P5 zs`<5`E2A`Ix!NhhL05M4XS1mjOEszc8FU$96q@C-cdZ;RdAz7Yr(975*MrHwYWu$ zcKr}mxdWdXeGlVc?VkBk=jp1WKZYlQxfZ7=Gn9!}#9cPesMnn0XBlc}Y0M?nK6}PX zsbZ@fb{hCdbeB7fijESG;!?J@)R>RgxXeJjsmNvkocTM6#V9RTL#f{{4Q1dIBT4X|1$l5M*pu#81!^LMIC}XDPSK2@mv6o zF)A2ysVWuE!R0m-Kkc-PnO>fO$5D842by5YuplduE}PTk;Mo~mkc$aRleIjrCTPQb zd=iVYtQzy@HBNJ+Cb-BV-z*xSiW5u#Vl6e!pu?)q_Q9C#sVddN~My=*p?Qrxlvt#Ds-*VjhMN)l-yiL{VJ zI!_YmJe^4A=|nmYL^=;dIuArTkBD^WPvBSL7(Y6|53QREG*K%tAgAZ%z|{g^hosr( zF=dsLF))f0TP+F@#7od3SB|FPLppjlKDulv%lZ~H#pTg#&l_BrTkb0SfT+I*LR9qy zBIpLl_^LeO3ze1~tF!3Gno|EBPX5XkMQLLH|YcuhD-wb$C^Uv!QCP*5Y8Mi2@fChHHY87Im84;}-b(~8FS%u_0C)!qmdQHVV$`i*MuUa3N!aZ9VjKb1u< z&^KV&TJ@AF&n*$T__s#CPT|rQL??3T#P%&&5WI7KTn1MTH+nKBs>=c;-C~3a2*fr< z8=MqCZez?rSOLNcRMzC7FbBfQ5mt_{Duh)bY!Sj1L5ccqzjRtvXT%LErrmN9MTJyj zu$1_ZB~(Jju8X7Fdq6gAG`TPi(}Li+~M9GN)1Ca6|Y8)SK)tRT6`A~l&;{T{LnR?|4D zCaO}$xiG2`%dZ_e8YE*uF3k1AUxDsHmM}e+%mBaMF*~?9BBT@mNmNy8@glT`RFWfI3wb-pt3( zLi{Xu25pJ3i*qF=#m3W(GQ*7m^db?tC(ASk6p)mS5R~J3gx6Pn17sYYl zvk)JjRRF6$?pfp09Y3;S+#w?vZs%S0v?P|Ej?f|I_n`MEr%ab;Jq$y!ddBL_gMtcl`k z$4t*t^4M^|C6haBtLg+{mZxJSJ*)`i(jvO@>O-`RiWjq6>2yXhbd7 zM^u#@QSI~NBdXjZ{)b1DcvpA3P3r2}CX%6}h!_Mq${0s#5uFI1s*URBK__y!+OJGgN38*Vry8Y5Aw+EDT}Zfuc{v*`Xbz4(TzI`0fB zT0alRwaS*2R{EJZD00LW`6$cWjfcUJBUX7g#M~_oM4c1RTg`6ls#=K>M+=ur^nvRX zn_00J|5BqB5_F_mb7 zjyHlfIOK%Fc{_2ul)MF+7O>t8dEG*Z5vtkC_Z;{w1m-m_G{u$bl`YU zswNuj*Q;zjrHRkQ^?6z#lE*e2 zu|_uGQ1Xr`d8eZPvlwgn#5{F7lyE#^VgcLUE@A|`OY30L4%h~>k^4#a}_$Eay>JSe0v`68DHy5KoM(g4z8}w&S`uJrBJIofSXM(FRFN6w z`_XOCF;<>zHD0$+o)7m`pl5k}??Z6$1h-U~_?$JcA*DZoZD`E9Lc&pszcYJoe~q}A z(;kE2xdBr6;|!IYiO!ykd+MAr(d-c(xHx+qw1nRCgpYo#vA-_Hb@YCZ*sw*kSO!ZM z)rWmFIiQ_hx|}j-?cx*x6czpT0t4H)SDbaUoshq2Jl$!YF97M z6Ppp58uJ8Q2GxE*3zZr*#RVnXaj((Oiq~LyT3LXf<^2nSb}qdzx~&^ka_K$}`bg*A za)(miQk9v~pr|!V~zs84i?pR#|~v zmOu*|evf~J3#Ov7HTxV*Sy#YfzPrjXG@QYo8AKUXn>ycqSP8*6C>9Bp$u6E|M9T+f z*!s3U)$VPG{N6rSPv=DUA2%Xry)kSkEV+`gi0pC{rMHXsEerOK_Lo!Mo|1n9sxJPueh1A^AkOjcCY~1YxFh<2h3r!H@T!tu; zXPwAHhu_;^yIz^W>!d3czcZ}IN@!(&ts58TYp0KuDixkrx^Z#7!fUN(Ul%W#`@TFY zW~Gc-nTXjfW1e=3saje6Vdb83Da*Wa#C6badu<13h}1s}mC(3*2cshBLSwi31~|ne zt<&NPsZ6(XU(rIAeJtB7Q7UqCP;6z6MakO-sbS?S7MxA1p>m_!yblL@v;Il{|Bxn* zJC(ebrJRzTb~NfDO!zpXC1%zUC2tQ$tgv9x8R^DTfT8I|8(9i;JY5waBmANgFn8`$ zHRPscZBj*zGicDSnhb!67KrXBAQ0_TDh1R07R52qf57@c35cNI)7~GIHZF&zGY+9&-kJBVtI2Ssr~7D3$HU;?6lCGDkEU zC(FQ*-+vT8i{ob_eks-B6-!r`eo|;YHXOnqkB(8 zzs!ioK0lsO7PVEQnV$j?bF7I9xd=}n7f6{M&*Ea-IK>Rw32Qm=)ZYPV$z`%K24qFN z&XffP7-B}MJ5*+K3Rjjce*)@Mmlkp}ZTJ@ALiu8Qt{(b##08O#;Qm`_3%|FiQA8S_ zh~(r*nqHm<6sVjj(2tTRkdc z*ngIztSe@wudD*+W}zeK1G#w;a`PnQ<|$8Zp7Qj~Q=Yzg%F{PbdHUulPv1P{Ve^zn zo2Ss9j+}jp*7KLxAAe%d^;1~xa$GGis^TOBQ-fVN&3J=uFQWe+W92%8{X4tV2mBF! z$}QNtdq+zf)AY*RBDof&&(9sNn@>(>Q&$gfK&R)9>l_R9ky#z=Pa*SqzEZjZ58JpR z;W(s`+ukBhGoG>37DX3~GZ+%vTBkUmE1EzaAQeq|wz$UV?9XGdWCvr=e@_x}B)-3{ zM?Ys_GJ=RKlRW|-q84E{>mO5lEWHYiz!Hl?h38Oqx%MB)Wgks5>aq|PWU(})teBp* zPQw{1#wiR+XJ9FxV<0*$t%MaDTr<_^XU2&`<??b#wgMQE2xXos~qtt zPDH`CN#Rv+xd-RY<$+Rpa-5p5MvyoTX9=J5^Inh89sHdLvzY0Yvic5RM%?dxtg+NT zKHcCuUS>X6X5a0d0xxeo<|I3KMb0cA)K7t zt6w-1hs0;q=S{svCmQA8Imu#UDgHxkH%cTXR5C0p8Kz2_xRQ-!_I9PNg<~A{Sy5Y$ zsIX#$jcLDQ2wW$qMO;<=3*e@IvwnVE4w3W?$1v;IM~9LhSu#L61Y&F_=}o#Pbow#r zO~jd7v1~xX|Fk0&A(eUvz<_u<;RIdzRk%zHYM@4w5LfJ5*2A8D*jpIH!YnNo2i-Kn z_m%c(q;uPk2sN)T1|`=M^a+<}!d)QRYc>cYE!KI;b6uC%yOgqKnq7g9jlQFCWxZ4_ zXpd&)LgVmGYy6BfjUKY1CK;Mj77XL(%+E^l-jl}pq_xU9yL0CSN=G06KW@u`xQH>l;RcT;EJ~peOE%5F@ zWsCEoMatu?4Rk>XF8je1|Kk*;S*$Cd2D)>WVWJdueh1koTQx_GeVO{Dh-g-!R?u$zTrv`b`)zJ0SI8*YXt+UyaPnK3)N<(!T4ct_JQdt+D zUDgo2EO*GVTd^6iJKuc>Vt=~x?2f|kMGo)TcZ1coId{KRDm=Tf4^vRNqpXa zoLJd9~%ru)ottNI(`;k`r3G4TYhjS0{ z^$RVyz{=ul@jM$mOGT9BQ4h3B7adYYE^k%xP65MY8}LhjW>UV9ekvM>OE|36$9%)I zmKN5njmAUQ=Re4}%;isDY9VJl2 z=9|ytwxVr#zwfI1z!GPVp$`XUop^yV9 zRIA@7t`CYnZv(i1J@w{a?V;Y=pj)X+kEhS)va+^#BJL@)l2yH@v)VTiec3{ka~BRk z@qNqESOTCbW5Rc&`Ub<$A8}S%u#7}yCOF5-Tamj6!``d~v*1>#b|;3^+4}Q1GO4h| zk4@r-Kvfu3g`Z+vm9ckW$2K?n4%Rk#1ia4K*70KKVzkK^jg_a3@UBGzrmf5#Q35yd zNU5^Av5hkfC^t07@uIwVLGXS~T6>DSYanB>c4n8!4&#$0@p`n*6pINNQQJtAyok1h zbprwGcPeKI(a*uYbfCS>jG+ck8+kAUPNgYz>)2-O{JYX%Qz~{Rb=5>$;8c#c6twq; zwWka~o4y)8%IgmM6uO>}=sFe6l&_{ZKXZ$4-C??E)Vv^hqDr3oyqeOc9t zgHExl_%_E%k0xG~`plCwkC;h3Qnsl~Orh=W?!}jB)sw1p#V)sbx5wVL#O4m(T8_9> z677+0fl?u`9i8?`juks-Gqpfp=x?ivUWl@Tw=KXH3!&NcP#!hQ&x+heq6J!(M^G0E&(&Pbq3+=5 ztD}plNOy4I)zDUxj%q2jNMM#Jws;d- zqr>@2Ze{QR{*vBX*dBW?nO?S+M$$N4!@ST+)t1_~4yH zgS(ab*BA)k_AH8a=Mkm;XCQ{RR{@Ao9&TiATmwBJIJo`6Rl4#W^m~+(h*KBUg_4l5Xb6|j;Jw1pO96P;;Y z#R3J&y2y364|Z9jcY8u9&qhp!xMJPi(N!nU#ANx~>NzZJdxW)c>aaH~z;XEkEtJ`P zH#@b1@K}S98Ybk&YgwbS(-tKN@;7=ev-2Q9f+9H7xx zMx_i8rFm*_AXtVf4mysY(Q0r27>Wf($sR)SPs6L00Tz6rt}%7RepbD~Xq($dKT3CQ zq#IvmDfg7f(UVeAVKTrHnidcT>v@1seyTE%BEh?lJwoDSc8^(!IRrx zU-5a+E~aEtJ#I*Lc5~Q%T2`o)EA$*@k}iMd?IUf308(r}u%e6ASb}$E#XUhu z`uihjOUS+b8_^5lZuEHZl5*vq^L52bWK|f0qSGQaGptH{uSZO)m@F1vKqKu_r4ATT z6Gi0(Ru`75E%Zd>$8*5|`kj7(Wumgxd4Y+3Q!n5{$qQKII{gA0pQ&7s098P$zp92T zRtZ`SNWm~Yrq?Jx|6CLM=<>0uY<-!o-8HK6^CS3aQ)Yjv%>IBjiMJN8c2ULqz=L%u zv%|1xbSkq-0d9RKOJAvvl-bAGIWtZ1Sxd$pi-X-QWSQRlxcATK;5V_f!P3P}O|Wh_ z!y_hG)Hqu!N*#sA>%%Ma``D96746i4{@dpQfB3F{(M&6KaDG;M*NP*BF}QYkz##V} zV5Z^H>3L?adDD&zJR)^Kjaqz5rSC^&)w8k+J6fc~<%*noVwbnxKb;K`#O^Zt%S&?I zMC2*ZqSZLh)lhIPC$ z$=g57>_1IM42XGs=Obh%Hc$1eMILcb{36dCc|XNto>g&NwV0H8k6CxFTzDAsGVg^L zb1W-z3otpY?7nJzt|v4hs;RIIp$MozfXDQ+Z%?@5hel56u^Hn@DM+TZ{rumhHR)+hJ!wsP+S~qJ zTC<+k+>_RW>w8D}#K69h};gl-g--MYKVb>Q%&aSGP4xHx4T7;7~pB zt1@(H|LNmZ96W}iQDllaSf(G`JN>e6Pd}t5{ScXcNK$%tpgA?rl1eX^2Vx7Abr*aC zbK$_(!fK=Pb585Wc2lgHEg zV4K?{`N3(#4`!WVe((@Gs7|@=DxDv!$61g&i2c)@S;Pm@;`MG>@YX2tf=6h!6EAqk zrHp(U$g?i&Q-fujoW;Lbbe9A4LJQ4kXmPEJv5Oer2KwJf|Btq~8s0DrH+ToqjmZE* z`bc>+w*(ZAmWEiX8gxQS)00aDQlphI>Jjz|_$iY66yH$nUcnpjW6e;&nytX*^*CZ> zm5I-A&0!DYpiRrE{KS21KlxSp&ML@TcjGaVrlr}8yK8+S~PZ=1*L3s2f|j>K0Vj5;vfS@ z@1uSd)32euO6oOH4Ia-##x+_*Ax*OI%2DdG5&~8N+~n% zk{oHf7M%8FP2dM`g2eKZttF1l<=yRN=7j zdo|WV8+scGl1q<);wdZ5ILJdx{wrw;KMgA~`tlzU)3=m~9+ zcG!3M>3?&wyj>MPI_(Z!XDzE<*&S%iaYsI)S6QQM2xqk|tq z(|dE(*Z?&)$%?uO%Y(|}T|vu(C_C|>#&)TI2sFi7?A=TM?4$*_iUTa}z)lM)RDTz24(~mWFi4+gDEYj6ebvJfaoNc>1L2tt@PIRdRy-; zz4cycwLAoMCV{+og`g0mYJ5~rj3^Hc0U`5W-?h(75+1hqcke%+Pv)Gn-;cHTT6^vF zXmW)dwJ{4Vuf=MtVPAt9?9Eah_kmj$+<_bP4a(!!@i0&Aq0aDW-WytaRR3TwlkPnR zY-_;>s?18wQ@yBW5p+85Ur&WDqD|)pP0ZO$O$*j%t~ERv+O@`_9+t%TH5UV)g;|)s z@^>}i-pszxpwYN|Fswc-kKjC63yDnHLzyg9T<%s?yoJ5UBf5?4c7y&Jfw8;h$cj;F z@T^T0JGNlF6mOJTaf!B0Ti7&GA2Qh3_uLzVuNL;?mamPzZ^f}-1J)XLvc1aaZI0)Y zSW3Fuu~xpUc2p(tB8=$2-DNhZ3wMvqZ!dYT0{S9NYns|K5Dgq^A2MdHys zI^p(sO6%R0c5PwnNO-_rtXU3dq2WF;-?5-bxUL-$Dr&`b4y9~wEP^vyQ|QqS+Q{@G zWuxob%-W)({4%n(=oqf20@sdEmE7)SGrXn0p23{2rwUjR>y5ogH+&HN&KRCD8Slx; zOZyN}W@+U(tMXFRrM%HnrdlHF)SReS_^J|CW#=C4qJz5dGWY}w*dY51^Ki;%z6APQ zt(3CPNC|Ctn)>yka74)6njZL+0MHBIUu#Yey=xV>o&>xVaK(p|>G$4}o!`y93LT)tk$0%B<#4x!oIf zcPQy@{e-g8*Q3`3F=JwnOEidH#qG1YXjfL;?jFUx{0zN3U@B5JQEefwV?pN=0OhK? zc#dm(`S>At47Xz9y`@C9ys;AlIAkz}ZHNs+IwXk(4-s-qcVY}Vjb&Y#%Th<%$O2Bx z<3A+DNaa@Eh!~?kBw2amG)Gz~k^*TaK83e!RkPAQxAxrDp5ET@Iy=auF3Xrid6EY?gtZ7Pcq5cSd~Pai$5&;w0n6GN2+ z*0Lgt_u7%1Zeqw=fP2Xv9J&i|=yny*-rs0fUTU)J(`fY)DP_faBRZ_s)8^APg1)=xdozr~ zY=I*OU5dJuWFoHnQB1nNC6OQk|-q7;3`W+Jp zqm}a}I%lnDz(yr@dP^hv@%GLzR{M=mr0_sz{X&MOH#z6NdCZhX#hBk?4v?obEtny)#5Btz4JG^-7 zsw7ibL$+)PNJBap6&brPZ7sB|wi-sU4Q+s#c`S7Zx#_XGISKIO8-tVJOTKImfCAX8 zNq=L9855NWkzTYa^RXIy9b-Z%<}6UEFJqE^6<933@G3T=!MZKl9HWz*yo zPwC8Tm$K=;B>GX5m+EL!reLer((1F!B%FIVFwQ6HpoVd>9l(F3N3@l#RW>FOxSExX z-sCJ#*lMqx67x8tmAV?+>9y?l=G0Thm95MVv#U<7zf$B!JRu$tk0kaD^3)Ujj3}hn zda+{fCoHvG$J~3wF8!CV`9*NGhM#Vhmq=&&$ArcA5p?RiEcAkDsI!<%44@uCcxd#~ zj>SnRyTK+J=<_+pJV~y+;Fz8y^|MC(VI*9x++R!cx!%RgzbZkm249CfgGs6WIteF$ zdq!?CvHHm{k0@WDywR*#PEPKJgia{-dq!yDw|s~C(mqa1serE%h=?#$JLgG8FySl$ zTQ#R1rrH@a48!w$z9ZNq+G7tuRhb;^^TyHw!C7!ccQPw<45xy9e$Isil)P$%21EUc zT>hw`-`S(gjwv-j%0y?{4L&wsTBTD!HWQxL#Cl-|B5`qL*Q6evK3GO1F0YU!lViT< z<(MoAm@oIhQjPu#aFOK-l`ayKAmq1nKK(qpAXGGh4iD44p@mvkG7a0(`DL*pKXC4s z@j=Jr+%tyS+yE-2-3=4;F2z4LPg(P09IqpyhX|hm{8*1z!+<4L84d#Mci@W0HO}r* za+_2!V$j1wITX^ibDC(iMcqnv-A|JO*Hx{^g4YUc9wiYtq1YaPGKF+_6JZj`t@!Kc zv^Ng>2?pPtjb9%%(LR41WRXk8L0icGG4rIGjSU8>3jTL#(;JtBw-3RehM{hjwV%sg z6%c+HDXen7bi5NV6(3b*ACat_;!lB0XUC*72I>)wW$|gIQE-Pe4jVMHv^9hsU`}_T z!S%*0G4CQQ;LYI$F6VqwJGk_Y&n^ zuZb|&V{HH8Wxn77`)r^A0G4ObZ1<=$4I!%FBUUp`&ElA{W~J3+GNfH}EmYCr4b5x! zh8DMaLlsS0sTs$fKVVOiGPQJuQSDmvgJdP$nxvHu_Jp62S2~kmtj28zPYQ-;>ki%LrFUI?#alm0F#aA7xRDlZGHdXR|vCJVCucFQ=@rRHsXfrGLX+ zh%kCD&<|>%9hUQqetRvIPMgb8;x?%IXiupQ{M1cZQO&_72k)v z%L==v)H4i^Yx&w!>KbpS_{$JaWI?-TIqVU8km7ny zaU!0TU{X@VFVR){ZD?w1s7TR<@&U`nuZ@KIC1=Mgn= z+g^EwZLdOA)U0RF+0FL7rc;=vDt7jrCkDa3*E|e0YspibSAX_;@F-~|l}0YKkVeHb zV>Qt`t5EQYGHSxAx=%uzv8eUiw({cg{GYV%9gNj-t*_#Uuv5+8I7IXrcap=4ip zH*3}-C9Z?#8TJXJFei+wz#(1sPUXfPuQ&}~OE@N6mt!(@{*VLHc*d;9=wzrkR}*JzUus3 zSuOP92|u^4l;!B~^)4M2Y0xWkpRK{LYwnT3$5V11i@{%bPtN!Un$NfYUb zHlk!7SH&^qMtDH+icXw4GWh@_WkB7|y~>jiXpCE=u&Ci#W;G{Db7^VSt=IFZPl{jQ z?sqY+eJj>({?mW{=k+wMCqGxR_v~YvMps)}MMF6CuIT$oIZ?jPa>E_1s|k*#y-i~= z`ZV&aN$O`!Qp^pLG7hkNiw$<~d2$^CxV#qq&M$i}EY)GrlQtXE;G;C)D?_lun1=?Q z2Ty6MoCkEuc~V)E&rG>WIMAccbxltU12vZ#m1|hrNb4u$(Ul^H!|jA^5Vta|0X8?@ z&hBS(!y~K?Sr67-T+kAdU4?NKsk!ILmt|@!=>oCqDg#Yy;PnohFrz+Il4xhH3wEUP zk{O>W7bXSC)uJlTM3w9l5WA|Uq`?l$c#BsYhmGH7BChJDK(dm(9}djlWRKifY?ly@ zzu^ay`JS+(PPw;9nX$V}xffcbbtjaPdL_5vVajlns~s|a2tBEiU`O)!WGa)2q{t7Y zOL`PHg|+{piE{QyCDoGsO6~!abDXuC8l+IJ8-lccv$5UC4M6R#GozUYARXUEUrB)! z0{4b4E2L}b+lJU)c0fsA)^dv!4)?dg!0=#slJK{vTi6gxSn9`sTqZ(Xe&B7j0~Zi_ z%Ncf`mJ&|~7|-;>A`b~IU$X!Kn1X5FUqsM-)980|=b(xSS>5;vcGp)z{EHiTK&RQJ5jA25C0Ri%aG zB7eiy52XJY12SpX4gls9WACz@NZ5~o)tK{J0<$sMVeLX@BpYE7x=C7&`R`E!?9<3X z;&uG1t38Q6Qyqk(?V43;c}s;sX%wQL#-J;trIe|` z=m4ET;dNB7%J*?LjU@F3K_m?^J~-KQhyhC_zj-72?BOcu)1f!$mwJPm1Nlq|#lhoo z9{*6lYMwQaK?j8p8;@;NHRhuH>W|O`86?jolWpcjW?c(U zBTC`2@Q8f<(NUPv$=P&T`?XejA5LwxT4>tz@Q55rW!I;EhvPH*sqchS{Zf87G|hjm z46)R&V2S)fm|>f)vDU5B=W{t`K=m$*bx^ZdQWYbj=}=?-3?mIKl<8l(tD6He6#Kt1 zO`H2ZO-lPRNcPRs*?@q3zQdv9b}Sn#)oR(I2!&-Uxqmal3Y6@>ao8Am%9UZ`2_q@F zJC{gB!U83?Zi&QF8t7r)v{RD*C1M?`Y)>!kKs1Y zaAf!OWX%7#`L@31XZ?fbOLu>r_grBzUC5qYmVi?PI^C)P03vO7H(Y2_maT~I%i(E@ z^^7buVX>^eLJN&;g4Z1i2yJ@as5(#T0RX-_S0(B%oOzElnXDG5LYE#d#4&bYq0BlW zeOM^7;8}99U77Wf7JAyCieMe!mSKaEOoZ`a;Qzg1yvF2tqk%$Rk;d+n;?>5B{}o5I zf$F7dw!5ZTsr?sb;+`_Em`1-A<;kDP@1*iU%B-}{Q{eRCeRe}zJZkaN_yTp3@gsf( z!IOL&zn+msb2{m9!;AhTQS27WdQPIMenc$j^?7f|iToW&2d3LGyVp*mdCYx# zX%Pg{Z}>%$JckoimOUswEm?Z=(OB$)>i8Re^Npqe`t8S=GuaQ#VraR=Pu!y`nrH=K zjA#L|#v4zbp-!0%Vs>uYks`Q$k;>r|a9>)hh0W_n=^vIflDAnH{BGG?#D)*r53|3AT4S)yb(y6IOsilWw@1d-Or1ff4-(1OMg#B2X&05Nv?xq#T$ z2k$r7IGp@aEQXcJBIeV1(Mx^GygopEUIOaka|E(!>!LNi*J?5ul9~&*(6O+GRUJnc zt=B~I?}o;8cm5zz)*(;m(JU&y4&Yn>D+8K%M5BUi$`kXbpzg^K<-P~J=hA6JwQ&Cg);1f|6apdHtr|r;~kikQLZ(t}p zmfER*kLny?z4SL<(T)~&|Eml3x4mKCvwV%r9za)FKs0L{0OYmqjFg+58|dJVr&x)y!=_wqOh;Gc^B+O#mRGeaq!EF z^&-#cMWJ4L;(ykQ;lr`rE`OLE$K#Ht)g-(1CiO>xBO8BlvGo`AWaC8#y}A3G=4SuH z<`(F$9RHs+cm5^Z+=q;2@wL|T#?~=|=Rj`a-_+2oa~rzy1UK}_ctfAKKtqTA4;#8Q zoxK$-_Qo~)#Vf4F9nTstas`ZB+)BL$xe^}nx3SN2P5AzRyRp&h%<}e*S(=Y+?=khe zBxC$H-G28>ScQ+9bQRkSg|g$=8KqVDPC|&VAW$oJoa`2QU%P-s%U3&KA@ZU|1;9+s zW2G{`S_lC5OV{uAN=GX0$2q}RBY_K-zpdaia}>``UP7{Iukyr(WU1Q2&P8TLl+gy{ zsn}zzEFZbSxXM;X5IoLpVj+YoBkVa=sBTYH zjd$mF*RJMKQF4zi^Hw*PYtmk%^S!0t^@_$H#M`zXSKP9oLm?e1Px}Z$LV) zVJdeAmGSTnW#ejNm>V_9IKh6M$+V(~O1@oHa?fgPGvTXcxtgGgdzL~sH6OVl8X zkDz#Fr5{ytdmr8h4<*j`lxkoaG0E-{jjo(}Z|Frw4+HKVC_@3BiU?0w+9nwW$XL2> ztp49eAq!INC}1I)#nXMF!tWLfG&c6|CksRl}b;NwWFdzcBO2UgN@Tjk*yL>FQ z8v=WL{Cl@WdKC&Ucqgph4zwLit?fRTgMWTFx>2 zaHKPZ!p9F$YTiy_0}!2UNo@KdRL!u}&+bFEVfVq$du7S5kjHvg0Ac6mkp1^6@klT zc%S(Zcb^TIQ7Eb)F8WYhXjQ_NB;Gp-f?-q<7_`Es%43b+uF7N30+w`$sW{@OFvq48 z&l}-Va!=yx2!8&qJpQV&w8lD=+;^47|3sfvQm2%m-!HwH!O|Me(DXaqp;Uj&Y=o1` z^5I2JIR)eT^^(%uPmcpib}s}gREcLx5Y@s$5w!CkGS;1v`<2Yz+Jo%dVXF`vZqEL> zksYV6lI{JozfX|EtSXkuVR(LRG_CHI46qovKo zlE1^~u2J%C%C$?${=kLfp$jAeFp`q{nG%F~+A?=2R}H((Wol@061_ksZ?Y9XHu&bk z%MgN%>1Iy)Pzr4Kh9=oVlN_N*1))h^g5B@Y|ASz&r_W_;cV)DPrOyRZ>_H4}`W zt_-Y+x!_5Zjp0y6g!e!zas_N=l@)RcY=Z6{O$#Jn(XzFZom%uX?G|-fRKH!bw0cTSYG`_v zM;!FzOwZKzou)5)&J4#`d5KzRGtV#+L0aMW3b|*vLkl#okXwl-w0L@ga!H_{0M!r#=tH>{>8pONic{U4M@LBP58_OzS4g zzh+{=cfKCo0<0|=ri%TRJK+a~Ii-qyf@wTctDek$_9DvS5?ua066hwuiDFc5`VHWA zui-y&U+{G5@mWT_c0PQ^aeNgDtUl-&X`S)tlJur>_O7gIE z@npqrH7n^B1Zv@@xZ`$8q@)*tJDW*l0}GXCr4}tT)h`*EMFXzFM_yQ_L^`rGe9F$W1H_Y9QK57qTpwXy`?{~dBtf@X*&+g&J)YOFFdKvLn~%o z#9Qvy@;*q>h>@{4x_v%c2?*Wuwd37c#SakIWtmE}8#KNiP+Job-HYqiKg;-SO)mG3`s$l1_ zw99S+e8CW$Dk3cBFdn>VFSz>bW|rL)`Y|e{W zul7hia-Z`{Wp#e9amM$?FYCh)qZhLaJz}9|SkA$AbH05)gG(Ci=jIn$-O2jizw}a> z8MZ2L6O+GvGaeIuRwbPaBtLU2zCTg2)1DZIw=b0JD<>2%v*uGJ`<9!LE4^wn?~2K< z6!2HO{MsnLu#YO~wM_;o+wjp$3e05dpUE$;1pl>}0t#fnUpP-KOB83Py|9u?@XNRZ zw{l!If2FOHaTPMIMaF3|u2R;#PR6}1%dC}gYh~PK8FyU9t(S4}_M1)IaQVng;)kE5 z0h4dyYHOQhhTqE!6*BIxD`ewk+`$#H5i;&Fna{>wX|wrjosDZ)w?NjgnIE;;GD$X) zWY?kLGT;wf-UdykTF;NQ1^n2&K$^2yw^%-FT?lT7%%oX@Ia8Qu_J2wdYXg#Wg5736 z{oAV`{s@*G0^4B)m8xjx+(+K0@O_l#GkS+KXcs-NJE2NnD~Lde869d85|2~T*Eexl zb{;CUVxD|%Fj}{M5kE^HVDP-r(scnD28Q-=`u_lSrBFtRY!@2-zS7W*c&g412R2pn z<84;#Us3qm6p!|O$<1%*zK-5c(36_9K{uLYG_7`*e6IH!)z34>tFb>{BE#0sk2i@2 z&KNANxHVC+AEsey-<03`c(CLE+CSqFl0)WiH%6)pf)Y#QNTGS38Y9+YG|y<}2BTT) zOZrBt_9({{pNNmlXNi$1?us|;OPT-qdFOP&;P98U$~yo#koK?SfE9meSm~!^X`x%> z;<7NTU2zMuXj=(z*H$tZXL3aH4=ULW^Osn$GNj{Cx$g2^OLpH-v{t-W!p zNSSe~NOt{SWGIXkX2(Ob^lBNJ9eOk`^r%K})9K$2=Z^6-^YnQ#%>oLoh=(rLr^wI> zO$g~@t2r=S3vC72sNcwOTRA)|un+bbUg}i;8jJPwN5n!ovL~gZVfty|*#gb-h)qn> zsYo~lXwsZPAT0>RO>U(RhzJCR;7I;g5sP)XpopGFJ9|#>ta-(?uCO|iYL)jiv)1a9 zpJL(CVOntIW(do=VXj=Pam39hxAR!XvI`}ew*&K z@@p2o-kE~wD=NtE7SqQN!Etw<7UHp^hZNQ@8W)uA>4VZeeNeim4}#MfTB<=uf&Tqs z>U^StE@Qe;8~_nS)yxAS)T;l`f~51r)WG>k7Rw~qe?m(a3jwm9QjHvtN>m|~6aER- zcp{;f5yCFfn1^S0r^;quv-l}s$xr-f_?aGhxrsfS?=nHQ0Q^t`c%=&^!@IsgFV8gA zpC&#PgXOJTQ~6KW99#I2i(Usq-VP2|i(r@y^bnv|KfG(8@MAx^a`jq+t~^L-#88Mo zvbi;uysLzdT(=1>SB-N4&K!!}C*7@5ob`6k(bzKgEqrU6%I zgXC3NKWlNgRdFesCZ?28#)mVOrm&ze;qdJoAf`bFEfs>#A%uzI&rUI%_&$PxzG&t863M42FEPTym#t< zX&xY+dZ}y|4oLIk&3dW1*D&I^h?=$3$`TbJX99BWt3N+vz{kbf8~W$kd$(aAO*Yuv z+GGur=F!~d`C|DVCP zRl>`+8!iIhR=q7`wEN2cZM!AE%`4KTPE=t@X$(DFqHbzQ_ZzDsy$d2D?dijzeDt{e{4@***FnQL>DxG#VIw~ zVRKm`6qwZaYB65b$9hbrZL^e`OL1J?I5An-IK>)$-)3o|kCgb!Ao)^roY}`4m)Nvm zy`91b6TXXf*wyIAnJ&vwEtJtysG^i1TsQ?xcuxilm0$1EmnuHjEMI7$8@ADh-Utpg z-|Ymlv~f2?ko*b3fqOLZuKtHae0fLJ_mY*Ghj34^!hBk(xgSyEZU`ew4bFUUEb$j>{3SX5k`jLz#4j*0NG~pD{gOYr^CRy3Hs}7O(?xww zU9cx<$xZyCC+*W?5tnEWkC+&*-_j&2j>6rwrO9R4=LvS1%l}TfhjKI(s>K?M!d7Zj z)8?O44XQf%e)Lo2M|FxR7BfQBenFHfr)w*EuhgXSZS2NLN%U_~Hr`_;5Xg*vV512H zAVlA%M;%o_QPi(GHxX*ds%Yp+%8z`5)%iYnm+OgY0JWr6^<*iJ^GT$tr)tUd%0`uf z(>lIKizTOtK)Y3oH3vUksULuXYOp>DPMalbxvHmdNrAHQP6|rfK`T1LMvn!JQa0X=brXxCAeuKcSEL=CpqegR zqGHkyf6XN(_b<`5WCE3BrfxJnR%h;s#jx`B(P1S?_kNB34CN89)YE2Z)55>9P?B?c zH>mtpY7`oj#0}!?7Cnu#Pc@@0iTuUZb26ut7t+uqxs36l-lmP2fbr=Y8%w{Q#G3Vt z3-rQ@Qan~vD63_-|q{{mqL$tPuZkQ3|mJ#>y#&7G)Xn(^?mxQF7`lC zZ72Zk<-?&{?1oADKeNK?EW2o`X)C`(bv7(7aKVlfoEnMxt~|>Q)j8R^@;in*7uC6^ za!`4O>fFBE?t%|unD!SPNSf@Ge*W*XL2OFdG)URhq$2wuWzC~(0EwFFlPa5NQ6`T< zSE?%RwEHN(g+?ZL+N{*HaVu}t#OKPU6xF$7d8#Is+2niWms)r^RiG%Fu2OT}Q8t;K z^(!;Hf^c%D7RD%gY#g|vOB1Vk4B{O}htY8tF7n^fr5V$wrQ+af)@HOcIj2}x-b#b8 z@@BD`GgYRm&RvzMP-rM9zeaT)UVf!Z9QI0Mr6mrGl}o(u6OCO%IE@?wYOY2bdd&=0 z2Yba(yQ{>VT7z-HMziS+O|rQ{SGhvVtdQ9=6uIWqdqc(4j|Ok(vH`*U@%Oo?Rh^}5 zN-7GEvBCb$DYrNZZ$Bqp;-GVf5|(rhQ9!D)X?BwHy%jgo%WxV7pO|fP}2w%{fg3bu>hcDohjI zvCoxL@3OSHs6f?nl;+>LyYgqyZ)QvHnW3Ay20`q$AjG_*cQQa;2L`fh%tlMM!j zUf>I0cm78Z*m<6>Y^632OYF!yWVo4^jz?xStHCqo@+-B{)!baBec#^-`mu*)C?2Ik z8>=~v1vncU*f?X&5oJvh?uLW)Lww>ZYCmm`Nz`Da8kVv7<<|JiE4cPLMXLrv6UrM! zJy87Wkrv4PD3v8JSORIf)H~bDraay#>Xt&2N0m1$EMlm|jYzyv)XQ>=h0=;d2L+sA z!w?0^?2lNA>5Zb(tZk8J7#)F?3l?5A#A0?$;R8m(Yu#q8FLwB)WSm=iR`O|hMDvw*Mol$_tduxbv; zDM3?V8GSz5WaXB5_gcGV(#oz-gv{>|gK~CW6uPpVK_r*@DJ%EO=nl0z(@{MFdev%IfFNB26O;EJ($NZH54Le6Nv^%HqL`Su=Q^ z_SkkTBB?OS@(TIQ`qC`~=t9vKZUIzQ^I~9&thc&CdHIp9-^B5o%aJ+rZoVg%D^h$$ z$gKi?^h0;jCZ^i+54&N+bWW2OSYb}9Vs|%r!^!{o1L&E)rKGFy6{+W62W;~e49|(Z z6#W!M>sQG@H8d$xhSpH1OLXYTiHMOhB0v%1sD9*H4u_usv6o`ADC+wt=}jma&h*pg zy+24Y$w-Gw==#<~ghxh%+#1DY>%U7x6eMzt(O08_(4;&!&C|%5?m(uy=15@pxH(#2 z*tj{<10&rvA1O6m%yXqJx+1QGd*9sIbLwSj$G@LsdL3SeLUYi_P&tjsywIHW`c2oe zq0R;j6`Xiv#Rm&d1gc8jAUroJbmJoSk@<41<~Cu z+#ii|cP#%F=el(`Zsz|w9qT68Yp(o2-JD|XD?%T1@vLVq;jCJ}td9O!ca7|ywQTKx z%x}od^ZI2T)j#u-12XgZXF&dyGXMHSeoTiqOi8nSn~hR*Oiw%g_?q;XgLdfUT9Pp) zi%XZdJBCB_dJ4$fL2<*9_PUSK#*^{GrDq6$Q`MPJYos?BF1Rz`ZNX3 zske)L1TF132k5s$7QISt1@3mt8f{XS*R)l9%Xw_&B}7bwW`3ku2ogeQrn@~3OkEZ# z$>n^1NR{EV$kj%*ju?b8LPC*%U^sT~%IJIbO ztX_2 zI8}2y_qh~Tt19a1-J*~RU=MAucVKDpTAEcHcIaoY8z({)#~#j4Jwp^17Ns{&3U@Q& z;;yU7l-x7O(n`s=CQA#3pU>$1DwLf0KK&t^7Fs}5<>Jh^pNIS-T4P~t!lLJb4Y26B zV6#WG(?`S`F02hLII5%Vy)lTD z`?Zio9MnRFE|}P(zbMlVCJa=|(rQ{LCqDv#yR}jo+U^kxGd*HymPdSeUwz!amp4?H zIkO*9dh9a@9C}5ujY+h{o4qXXy+by(XU@t4oSSBZ^I1f_lHW$qg$jX;2TjouaCG~d5KMjUT!Y4w3flob1yEm->CD2rw;L1 zT0G&|bj*c#Kx*&QaOyP^Deq-N=y%3tL%~h(SnAa1$2LtG zBu$OEEJr<-H<^UByscUqpi#N7d6@q6pZkc(rXg5IcbMJzM{aJTqZ!*Phk57uHO&E+ zZ{hY~s@UTRMpC_&h*#{aZY#f9*_cm<;Rc5-V8zM4I^q%UD9_Yuv3if?P?x2uE~eJz zQI=s$Ew{ME4rzH6Zd*!x3wI6ki348C-ZJn5?@X=wz^-3p~_nZ+Kb~*VEMB z|HH;Rhg5x#MfDA_{vXtbVJZPdF~i}fBRZ}|-Qq2_jZLRUJQujdJF57~hwb?gEU9RD++G z1GjV+U2az1SUQYqpKW)A<~!zb-^$Ze%a?A;JNtUoeP4HF#3G(p19}OvvnxdvUsCsQ zbX`mf$5UFT#$euPSc7X^s<|vQb{uu8WLy#zHx64ZhF>!in8qTOD1k>3l{6n>b&ES8 zp4=TZm&5#7zK4w@4Wkp{HT!zXLe_CbVXGN$u5n3J1Nwm)EM=h?V+IY?6atriQEqG{=hy zARIlT0M=?@$JASpf@*0k@(`f=7zVGC){3(F7TAsdpG{1XBF!j6v6ZfxJGTZkD!-o69V9;Ha$wj6?4PoGS`jhXT9o%Ig*x`g)O>AwO;u z5$Y*aq%CkWie#UM8;A3$RTga&k;G@j+1(I(>Q=IQJ0a9Y`3eJfTsYskO~PrjUyI_W zPFZ3v7u$(bY+-e`5`rGbH};S}`-%i_GahW%r3NE5nWDIOiceX`)-z`}%Tw9LqCtps zE5&=z9vdIgj0U--_Fr*#*R@3dz2aDHXdFniBqiBdTU@bkmOmqRC@qNw=ahWfm!_@R;DKa3c*ZT-#(WlR)H zi^>>NPldBF;3O_T#VFrpv;OZZ;6nOpNQw7{%eNii5f03Y8X&D z3N}iVg&jg+XatvWNxxbT$LmVeFk(Pou1eH2@{I8psOvJLURjO<_2 zRb1{hi5jy0FKWo@U&A#6`Z6X_)Aj!s^Kw0E;AV`g zvG^Mk#e>2rfPZ79X8V~~%;(&rgx?0)xp3bwpJ?#qLYQhj+O|+PX{BOrJWE~P8 z(GV4jvQuQ)t|9-_Lb_-tLtMa^dc34)!8#&!bm}5({7()$Zu69GXQKShKY)bPp@;Wl zcTH@?C7#l~nmFiP7##)~h~6KYnM;oDdsu>Nm~UajFwL@C{}53%u>kuExSorV!=#C` z`sMUZ>cg~;Nt(GchI^rSzT^MVFCW`r?Vu1z`{%L#-fWHb(WNjP@MuS$ zCt0?ML_f2kgj2efeil~I&&!M1A?=5K92w@DYa*(ZdTdTDwbF8Pq+Syy@I(4I>V>nU zzp{IAN8=KArE21o+xd3opqnFZQQu|PM3OsPgoBvX;tEZ)DH~he&N^nWqgbvc#i8cKw1m$`gDSnXMAtcfp5>sBVa!9Z|} zIq;m+BQ?87~x9_+tVkHxHo ztPW0{J_zcb!R>ZK#NwR$eq%JJq{2RHO|w_Lt%`O{bh;I7pDT2i%~RUuaqf!`i$&$W z0D&nRkH#a0^hHEJ<^etG?w7|?+9G3VD0{>~<)!_qrA>A2ix1{Ls#*=*ZL5w1#&}`q zL1s;*tbKzgXUa9S6-%T1Fw)Z;5NM9k#CsRXGGMGZOMFbjlgx=RRl`$~FjDTEI_0HC zjIO207+lrayz&ZH4jsg!D~D^PQIExfapf^a7M?y$>|iM~X?7Q`zWN3m{D@MOAhp>g zic{UrdT!<=fG>gTYpaQX43kYz8lKoO;Q;(=4+=kCj?;el@xk;6_E;Xi1v%|EH}fDw zlNV9ArLJB=DTk%U1$B68@>Z9Ld5Ls8~nPiZTEju@iCJb%bzLP3p%@HF&9a?9!O$J!GaWVo;tk0JMkA*YuW-bNT=F%LaVrK~iKBUu$9T$p=RnbH9 z{k&KB=>N1!xL@>&_nEb;z7AGRg278*bcrf<6F99%qY0-`z9XqCSrtt;M_>vSGRW1D z@-boSIMo?hc^M_opqJ%#ZQVqg6pY8Q&i5$M&CUD@UpC_{O3g0bX`1Bn(@LYUC?&U2 zx7sfd8vT$L<%ObL7tWzl7CKe)IJVau4$Qk?T}Lk%+IoS|_&%#Tzpk`8PgkbVhTsx! zyPW$g|GmrN65Y`8Vv7`_K?~2^poM)AWwd*Pe#h5v!(*RTsBXT5^~fH`L%cWiKmjbj zh2i7Z_dF*JrpSxi#U7lGaY$sY@CM=DHqO178NwU%2Z;b@K$yR32)TY!0LAX$*GZKh zXr;@?*Tj_S{{p+vR{*bGzr$1Q(4b*hO<4f7!}l&+P`_Y8)f&+0(T6wFFm#$gUMKR_MG$d&ure(Hm^7Y z>si&+CdsYPw9rTgq}p(~dMh2lr~4Mx4GUX`@9W`HgxcV;rCKPVzpN-UBhyO1-pmv= zY#mGqibAeTun7z<0$h~kl}!v;FT+~_y}2$+Qo|F?^j312RTCo}6B}HYrCQ1+g}j#$ z!L!{~&v`rxTZWyR5A7L+@9F$)#jBrRQ&6NVh>OUN@JA9SLmY?F`Oib-%Rc2skNu~^ z%hRFho2uNXj`(Scoa*2>oEFEZsrYRUOm#UuBUh#bAF-Ost*($~q|2!~`o2{M#b;Lb z#b;7{R^PXp6`PpXsIsZ$daYE=!+>a(DcNNdmqaLw9@YjmmCp8|!CL7=880Rx-etC( z7czv3t3PM{{7QBwR0s=+sQi&#$v*Cd1uOqgMzC=lIL#e%K*>J9ruqC&8wSPvtK$db zF>gUf+0N9eKW>R>41J`lBfvbNk6lRC6!OxPh@GJsj_ki!;eCs}Tu1dSW~mJX2}u9B z@`^N^G}=_MhYo-KJ4bL`^h0kh)bf8c$m;)JgAC`?O7f3@JAUsP z0oO77o_?&rBDHa%wAdZoo?Y)T+U!9uLw6?Sw}tLR7tPcGb0QKQ3e7Ov&J7rX^0=H` zh4;`5DH{o9_DS7imna@-C=pdUG6`uK^Du}8aim+ci(;CMoqd5Ghbj($IKMG6(|qN2Ty0_V;ZDQaknLmYB8E~mGN znWD$pg10GIVxNGaV@g7UGKKweJL~a2(c#>?9ATO0n6nP=6SF{$*&(KqIk%nwr2l6e zNaQxdW2jo?E)!By3TuA?W-!LmlZ3JJh$-3H!d6aRh*O#E+)xdnJgj}9FyAaso97as zvb$;9RYk8Vbd6|jMLVU5W1*kgROcxroQx}dXu0eZ2lW%jW3llgmB)VxeA35H*Gh@< z6^DrAT|UPvhEJ>-f5}zlcgO1b6VycMB7T~vlaz6DSDIGZ6pMhQNDmbO>qkW^5h20% zm8w%p;951j9hqu!~{k*x}XLRATU54t(x z5_L#zabe3XZ2=+X3Kaq22YXV>znvh}G-2r@)r=I%tGdm(BQTqwhtesl&A4lWE%|^W z3qRS=mCS;MbQXbp19ypFUv8t69@*yB1n($JJGbuTGFQTFyms~Iuq;003>Feod zUahnW6t{RYD~5Z%wXo9iqg1zY;}@_*@`&xH<>gDulm{E(fF`$5S(TX#o=$GeCt%zq z9S4!@_gF|MTbldIT9Qwj(?O4D(d|Q|{V8bDgzu2n%Ccj1$RLyIpAV)}|7)ybcgLCh zHvL_E|Cd!7i%~PFJAZd8x%K$+z?824lVu~oJB2wE=6dXg<+iRtO7>p2G{|HB(MT7J zwG3CX!AmKLv)TObb;07y-{}8y6^51`FHhp0yr(?AFv(;}^f9WenhmM)+ z2L6!holWI;;;yqadP2FL4aMkEAGoB6?ZNoL*m)P$%u%BXXF5Buhg%=Vj?KTtKcZ0o zm{l|oV^($U!98H^&Shg=%B-}%{>6+wm(&|h|4O=4*a(GTa5q9+Y;Q)VK0?YV8^&eE z9O8R|SrJbuQ5|CrtKq4%9$;$u`g$(~xs>bo#al<&5AuAX0lSp!Pr%Pc(qd>=?}1&G z{f7M_u--~qDfA#)XYbbokF!+??_|0!qUF?S!5*u!THeAodBPKIT26}=wyxEJomM6L zOBjXx*FT$0TC_7si$%5Yh@Y_^k?aOG@aP9M@Fx8i_Q29(4?5W|@C-ch%a8QJGcwZF zmmnSQg|M<%Xw`xdJKsXS0DvDuRZ>HjU(4i3u{45WWJ6zm!F~CKM%1ITwGt}Pqt0$H zvw4E--J)L2VXIDhtm%Ywgob5M%=Y){cre+cBkcFIV_Xe8MRMBV@qzjI)bb+5pZYlc zrql04p7V)3>4(^hGrVl>We02~+>W@y_nM`F`Rl>2yPjTh0nhtf#?&9gPa}+dy@j70 za=z%Ne%Vw?`|&cjVMxqaT3$ystxsBl@pZN;MXp2_OT-;w8NO_pCrkekMRuBj3zXbl z%kETidzX2Q#Byy1&MofNl(=CzO7X5yqs)?}U!KC3AIIPZtMflu@G*DqvJ@)({fASz zihNpjrEE*Lzs8yJqugwjf8_DtMJ0yh4^{ zGD}k03z7zm5;pk~#`^l18IqO}%QZMjqO+|#JoyrR@JaT|DbKeZ!u{Dex6bF=4!!p?KHqBn&)Z&{ zw_oD(wg%+-f^??YLI1R$x;yBw-9hO2JB07AR>h=LXV1z@`M90V$L-HNmJ}`I?m*JM z({=})km=udRDZM^Y~^@s)(&XSL!VvnxIIc0ccjvhJG#W2GAOYYY&5e4d2CU{*~|)L@+`36=)*)i@#c=$yS#m+i>Y3>Odqe$Z7C~ z0D9s$3#x14lvdgf-XvT!nS7YqT&ST`%x zm&RXShFnl{u*V$m!_rXgI;Knxdc(8Lee|ST*_h-D-$j@zs*2WN#~=b4YgSHc*gA|p zT$Yynwpi3vOJM}5C%e_!i80nDYV7pzJph$k*st8R7cEacE6X!V+q|2NGru4GG)b+! zOO{#R`4u;rOa0W8D7C-8tBaR^W&;O+M z?)x;+-0fW+F0f)^zjj`{yrgs6w@*(ruUU2OS$>-rc^Yz}qRAH?Q4sehA3<@HH^0pT z+L`jYa+(s8!I<`KkA+^2n3bA$&Pwf#Jg;DrYy@J`X<7a*{pT(-4wD6d)!F^dyL95W z!yF~d`7Ty&{0y8C*!2VliBNWc+|6RU zy9<_G%TnI#K>003`)puuH-*Ad3ehri_wj{W?kCH>&GZL6DI?k64ZPhXt?GS3sg4Jf`6Fmrr>Lm%PL#T}9I9`LXv0nM_s72gRC$ z%{{TGXk=ec`M5)U$XcZaqqZ`ox2{Zi2$t?2a#hjrL=Y6EpeBvZln3aeg+8KE1X}5B ziho%7LseF^cuJe$Qhu*HKjLvVFVFXgs7Cb!dy*m8;j*}dRSQOwG-p%g z7f5GyQLq}e+FdX*SO-5Vtu(QPA@7kf`zPsm&7bkCRZ#4U+rJ)EYcFU=WG zFgk*YR%7)b(Ss42%Xx*edJ=0(!ERcx-YVVto?rpYfJ1{u13Q2dZ)sw;E-vZwW9BJ+ z2Y7eIQWYvNCU1Do2)8J*dqf+1oPpwtucmE<#tuqmc*0XZTMK@zHJ{Ic+~dm>yBTgV zV=c_DR2{Sdj?ik_Rvz#=+XBOAuzx}2)WGCijopJL*N^Zz_g6j(xvxxffA7qBZn1*` zZF~>@7F%Btdnf=`-{3Fkc|5GU^`0l-TJ%N3ou1dR0J~|??PlhJF4i8~&Kj!sv8IMs z{EgOPHv1P%KKWn9GOT7Nslx0D&Cbd{>gjh&?{>-L9K!j+9@u#Wvq$(zn;pzETq@x8^r@UEvKCyq3jY zse59(J>h9K7-fuhBx@F!)SqQT>8XTIE~S4sAe`IElrOJz{!w1NXL`0KXdO1mk5+|e$pG*U}zLrk`Y)J&u5bakYg z8b87{?nQ=;zz~>~PNs;TjMPGx!M0AwD~BOd3pS3xPz1khk;3*TeKfaiJH z9T~(b4}S&^-4Uv`-966gSP}5b_yfM2ed<=WV%nd6#YueR5Wt=d)&`kJZ)_Us!XH*mv+!rWK}H@cs7NTL6^f`JHqUCS{;@D>1EaOFg7G= z>L^XrC+bt|g{fdp*w}%ECI)N5jEVbL%y1OYE*YzX*95n75nQCMILjwR37qWg*l_jF13-`PfNNn0zf$I-N%Hs!D{q7V1Ic=EPzvT?i^0zH$J^L9G4`PPU9=xz z)9ELB?+O2@2TEy=eb&kxx6w=C?V)HLZ#4At6y)vU>S2L={@yR2f70ahPsDcxIJi*QR5_rqfwxKI<){ zyVvH&6244F`>J5&et|yqomdRp!~^ZvZ}3+BCShE>EN?aZ8P36lm3=0-aQ6GbU9FcQD6CK{$bQbd zYi~81zzG8Ud&F!%ORX6KYyUuCjhmNX#2hlSV z(TPEg=*=A66$!?y%Ic}~-t}XCEu`0Qk;U1lgf9m=ZwxQB=F|s!lFNr`rLeN;s)_J^ zPy1m#7njb?rKnDJAYX$DN@}*tY7$P%ypAl?um9zJnw58r3brI&r~sToC6nYMOIn(Q2L+ULqB(a zndnQ=nMCPRj~bf7Jsng~Ly8ujo#{MT`TF@FpqxQXHf8l$?C0T?y(-naVyrcmG432-MK^0ipda%PB09bT}7h9Ys zmGDYAm2}b>8N@shg=4=0bJwF*^|Du5ENV7MZ0=8#3{B_8QGjY%gtSxZj~gL~t}j3I72`P~ddcLpxop zQL{uCRVnG!JET=d_u63ZkbqSS7tNz{8|(~B$61$AjB)y1dMK5J#Bl6wl9FO7WCA@q z31Rx`l|6PK`h?DQgn>m`FWo2VsS!yh}{ZZ(-UFQis&Sx9e6QFIa= zlOf%Bt;<=r{M+0On4z2w@uD(zFRr)06(5%_yEinaN^5l2O7T;7l}s{Fiy3F@r%req6yVBXM0Frd>Mbl%0 zmDS@;#bSMTMc+`w`-iz}ZrrJ|1Up{f2V)N}GJm@=>&kbY0b?t@gv)wIUcea3|96Kk zwEVYsW8l)1)o_pXPxa(p*^D`#p)IFm}Cc@B_(E<@UUM1OF0iyd)@j>p?2LCV2$slU%lof3Tdzf52> z2~Ph;e>;hwEl&yW>;@KTRK?C%V-5Sx!NycCDR3GUNq~zUNq>JM@!eSqM`bi0745MY zb1pj{qSDLO{_$rvQ~J|36P_{pUnp#*@2<9)8t8dXSjM$HN$)?mnSTCr`91v^`AmPh zFYj%}e29y+_QaaKVQbZiiG)s9S*M1rAt2dRR_4vs zfn!ytJR5P=1;$Yd>#F=_CAUR+Hku!CwkYmKZ5=q2iam9Wn6bvLq+8ca6s}eFkZX;7 zqLQAvYGP={Dm!Nsci1I4pxB4G#eO9{MW&n-Pv~7`FB?G5++m#(PJIShJeC$EH+2nF zwPsm{yiWilFYFoNiPb5&gC9OdDZ?@)&9&XiNtN8_vMc(Pr+!8`K8x+89#hoAM|{qG z%Ws<+P7P66$TKxO;uo>K)R$ipcKs!oZq%P&3hD~w2vG>NbBzmK>zoU*p`0#HX}$BT zct;#meESvO7tE{;k6q(ceBBzyv?LPe@gwW>!fI+{$7p#qg2aftSN9b$~N~?nj(b%zp6+ zQx(%D>_4ewH|Vz;nVMw`tS}*03;0F)H54gcaY(-a#Sz4QgnB!Iy>{ivMbeo4gt8|M zrd`~v*^7>Oae0Z{zbmWk1~2b99vSeRsf&fu2bR>zln&xxn#aDHy~e5N0U@bRXvz7} zp0DNR3~$~3=XkhP!!6q92CA)D0MNuEn%K^NgE5!&Zh5$(Ve1|5HP9amU zFnF{tfm_?z>QXivW6ILY&N5DX+5osc419)Lx{^JrA?on7BP#(F^!Wl08XSANk%cA& zP8nki3~uSvDxzecKzf!;q7>P0Bj#-vd(!ep@$sg9`z=z*m0^P60DM#eG=0=9{Xxbp zHRAk70W?EykwDXyh+|OO5B8#dWGo9=OqdonUjS;>=+xV;9C!t)i3P4s^qanpw%ZmYrW?WTrBg(3$nONUx_@CYtt0yc6um1k}6NX1mhTDP@(m7?nCiOSS6{UTb zGeXX(kRbUp?`-#faMDl}A_X%LQjLRq}xyx+m<4t@ysu}_p^Wt(ADe;%TBm^#sA!bm^7P=10 z3%@u%6;WU5PL>3C*G;t8IA!Au2m?fN>hjxQ5=P2hB!mR&R9y30$2oVd*wG0~aws@A zUa;$%%5zx^p^JeM7ay?1#R!yG-}!fLG0Hs57omsO{)6()3}_rnSa9Rw@)am*tt_hS zpJ|_^uRKG-;)8vk8qH(*ikia}MY6DeG=5xO(t!5u(~agetIoa4J)*%|+N``3^_CJz z+vv44Le%1%`&f^N=C@HHo>kSg>tWzk`A+%4V>Pm9qxdCe|9&03Ym>+v#S!_O_I zBxUtR7J+(b)bBEqOz1|bm^|+khSEdw>ag@RT0*mPS3!_T~BTJ{rE;tVKJlaB3Qi z*gTe~+tR*PD{axjg>X=3jn#QzYhOFcI-no3_N6C0CEHV4uUR6#P#|gxPmWm{)X>dp z=*QMyu{Nd}`soNyZmux!r?mjPc(`m{ulN$TmJEm?k^VZS;jlWC0;VG$V$m|Py z?6HXIj8q=?mG*eUX_J48gV8~Cvz>30cg8X@%FL!WP`3}9k_xs@B2gktOL_@j3OynQ zU#jZ{>H{d77M?DvIige#14`TU=$SHz*PW7ddIX_G>EFfEhi6Rn=;r&&c|>&?zdR^`cGa>N~3EDRswRifI;RLf}^sYlpAj~1Gg zrHLeElTCFtEl<a^M(d@S-hbknwV~b4R*)m@W^as(-76Ub7iJRB}xx^$Xln0 zyO5^5!xK_%Md1;Y&gN`cK8Whk%RI9n&BHE3#zdg*6)*LV7bHWu|l^|DKehf#n@ z4xrtWb4D}9PN``&%r=6j#bfT3-gV@7)AZ=i#bR=9JnV=$ma%L;bn9uBX?j-VY2l(F zW#cM(%WbMSP&Te0kj&x?HEp5kNva@n&bBPFSWyV+EwNNiwZuA8_t{-f{VeLrGc_%4ne6y*?L>&qejt5O7(-rt5vD_joBz~kh%?nO^vVQ zT4!8kqxX`l2GjeZt5Q{j52YUNrk`x!;r)+ z4k#~mQgl}t!6bppz9VkuF6GHjcul-TbD~*@AlqoYlghc%Y*?*#JDVy8(TKXkBPOZA zx?Wm2ftyhX6}ev(Ef>kNf(B+&J!P6mka?zjk2~i81;nU?B$aTNvZ*eddb=w;lFrmS zHOn3s42Ie9lipW`vKrDxVe3k?-V$+%qf^2oGBwKqNrg`N4#cY zQGrdnJ(m5H%7~|5JEe+Jsz{j|*5x)uScKA@(?subp4NE?Ygw9PW4IYKt(V!^99<{N z>4b~EEF+>td1AB4n5xwLHaEsNjT_7+`mP!Vz3KReVtlwkZas#D5*~Av*K(q4Eg?(3 z`lLZ9gr||xQ)p){D$TtFrtR2Jd=#J5hD_siI6Y}tmL|JIYgaDj_j?%tzwdpEvP3_y zTlVqS2+Co+UTWD#;JWO(@N_dwF4Ri-=WN3ZRRCs;37^LA=<2m_>a8@N%Emh{Q#PuX zM?1LGR(j8jc4YF)6_!?jY-;&nH3xK9de?u6x~@OQ7ivHKK(C1E*7jHocJNNVeMN*d z>#D{Dl$w91p{RPqOmDyDx1>^~=I8uoDN}0TRYuw9f%U^eSOJW_Z@0h)K&!vfK4Y)lZJLlSR8`OUd+`ArF9gsmR*WlEZ|abhY00X z+*&p$$ZzNNFR>NHWeS6jcugL0RD4SGarqEEXG1L3`E=aS;B!p1=O1RmS(+bg#+IhR zdSDh@=;F&ClDn*mb=GndC z18=AzQyid!f;U`f)A!>xbEVhh5;~tBaU2i__}J+0<8@TWxfS-+%zy~oEyt?DJa7bI zuJJiGaE@+Q#I1?Z0IlW@>0{qTzg=R#OL0H#z-^Y|mVNE==!5RjW&);id)=!8^mA>Bywlt#0fFnlBk|J3WxkL zM2$XJ4{otEpyhAWV-AjJ@3Q6}7G0v6nJVrYHlv<<6_;^~MH*zm%7`+dlIibtd2+ld3w{xE&hp6`u+<8!DSF$0AQ@ z6p&dfTjz&9{hE(b;Hi3craQmc6MD2m+F%Tow)?{KY>?}NP#=rjusqEFMDAwRk+|#) z8>(x6)NG0i;UHjwrP6F-tCiA2I-$(mua@26E1l!;iJ3NngUK}O!v|r;ho=AnhFfXg z+1?@$NS#}GqluFw6IzR`Q*-#ba&f{^_uQjh*Lq5QBR#@xqcY5wP+IeFrW*_qZKP3^ zStqf5J2DBlL-#nq*u;MAxQyOD4&9M`LQ}4X7WmwDNb_h=-J_2VqWe-P#amrjeDX($ zIdz6b?pBz;BZ!0W&)n9UW=^@gFJ&|*+TUh*JY`dUa|jnS=Lc4@CCWz zkW`Jwkpsr%^5FraY;EvSt4XQ8%gXfg(lcf3?WIV5KH6J`i_Ge=RzR24;Sty?Ya)a( z#0;*|rZQK~(K5?Wdi0cq=nX4`xH&iZ&2B zE4RUHBm`(N&oet90o8?aD zGAy6Ku%7gFS?yRC-|esm>XQz|xCu28G08#Xo8p!cbQX4D-+RSmObAaB_KFH+6P;mc zIkG$8O%}XjTnPlGcipT1{SVk7mD*=ayf^Xy#5+Wt_tNbQAxMZkZ?lS zF_gPzI_;HF7w?p`MqrN;TjoyMVRkU&74PLO^Y2&l&In_L@F6`r0;kn+i(~#B`VNYR z$YKQ&p_H!c^EnOPl})k}eVvg#iTB7Q?#aZ>wb;S#vv<0cO?%xryXnyYVMFxDol}pc z)f6vEjYZWM&E-pVyy6H#2~=1c(MY2jSi|Fc}zeHM$s z=Y^Nesm|bGozL477JkT@D<|KTO9#-RGi4SFI)iU33NEu0C86cHb_AsuyA?ec$!(X& z&JUf^;+>o>Ra$DJF6Y`%pe2f%-aaAeVisDh80Ax@o}iEH4l zl>8&W6P{Q!7S)1vR^F{~I>k1n1sg}kw4@%~E`|!YsvB*;*=v z*P7)P3fJodDGNfA9Q0Tenv^YeKnNayHs{<6IVpc?^MsZr2uhT}Iu;RNLS2Qq5c?~v zGvEtPg&j`Zm@Q^fDk7CtPAGF4)liY$6Dn$A?Pk2rUQ3^~gmoy(K7Hx0V}^m{z)!_$ z9tllA{HfZ}F7Gi{%Kb$UO97pbJB<9rCph9BqJnANWgg2|AicHFdwZp0@jz?XOS6~?F-TGA-%1n7zkjpPB;H1IlVYvgH zWp_oL*X}-R5GGn|lxL>dgx8DNZ_8pjGOcZYA$;T~zfDhQ4Q_;`Z{2$%8khE03e-e< zP_w3J;p8WhlHdWCHCe;So)qv(#wMBZC>X?#@hSW$9Lx`wjUU<&et3uSV|pq-W~A}M zZ{FJw7~#O?+=X=md5 zVfxO8d%$J%Nsou+qe4C&p+{kLEKsV2Gkny$hUDY>3QcAL&R9kmC51D-#njCnN<5Ye zd{748XNm`p;^2p5a0Mg% zW3hq$ZS%Y$qj4WV?~qn{+E>#SNW%&f2cb%%#@h6{99|~Dug&FyYo8nBqH?;1)*LP$ zWPDU@{#6n?)2`b58-9V|lB7SIt2V=Lzp0k>OcDFsz}SD0u_|J(tlIorjvZ0fST&J# zsN$jmdH2=xs}Ug?^!L^G_g9{LvK8&`(Mow;TE+fYYcOUmw+FwrK0H(lr#(UOg|*{{ zYJL89rT(4d1^e}Pujkb^xwVjq8}>pSmP+Leh^y|x#HU?n#IHBvaRMZGy9;7u4@#Pd zURFzf%E1mQSbk2|uDQuQ;j+-IsGxyeIE}CRUAinx=%uI?IPs$8V%0;$SS}TX({n zcpzzmS*@-9E-;c7{5n|)Vv1vp4JjrqRv(NdS4Jt%={<#}SIwp*lVS79{#U-e9bL(y ztgns1Zc>BaSZrmiu_oJii)A!V=SuFXdhOR1o`AHMsHng&<=%tJy?bIAk5PQrSe&=B z*%3FbLpcfru*ac+mR+XYOLW4$7=136o?+CacW2A3J`aXJVG66;lvN&}8hqT?JPQr! zL@I28rO;vu%+~LrF$(s?0^_Q-0;8GADPx98X$h!q!(*K$QlnZ;v!=NBQ86idur8Zu zr=;~pMRcX8o0AH$o27N_PSns&@%mIAyzPEN2Yq(E{_WKM_#*h3Mvy&fPa%(Ao|1hW zLzkswpNiw2(dZ0IL(()iqFY&XhN>D*1yjHt^p8f`Ut1tYplZB)))vT`wSoNX*r-3> zVK!aFpL=6SAI%Q=$PCxn$oP*#L!sA6UY>D;+Us7->vMD>z5t7PWU|~@8^P+ z&AD<@_4Mm{A@(KOwQ#MAAjlP-I75G7xY^WgNm8osmOh0-u!Ba>QvlOxbmDY5@?seW zeP;IUo<|r-9F1lCfxd$TEv6MpRe`yDNMjJ?(Ux~RLd`4eRTX9q*7^k}AvlSHr}qoC zAlSme-hRPp2u|bR8U2EXB6uhV`}+kCLGTa`F6kGXir`cZp4TtfieM`T2l@pkBRH9Z zD=wV6^1`XBj9|f(l|93L8Vhwr3caUvSy+F~o_6xbtb$#~=27M*A3cT7IqgdBujf{{-x`D04cL+}|&V7x4Q9MghSd^NK;N3SeYK zmP1As)VU~8=b{T{sbh?Z_M)*xvawA{u2>w;C>9$Tsgd6@fFU^5Y6dK75&(mx*4}=f z7g#@#W%%h7vq|zs#oPJauRbP-Rt-4(;uK^TV|Gg6H&RT0wVEQu-k80xfKrrS5xyfS zmhm$UhtGN~oYC5YwbZ27dQZh*@-cYYyyD(i9cs&Bp$EKW>pwaRq?UZzV>Y=BHoMr1 z^j@(uW{2hot--O0QtOOTZ>CbAjmLJw{_5?GRaH9tX2V`rz@aHmM=lOnRW_Uv zUgT(wpBKV2Pj2~96>8ZC69(a#UvGK37N38RpRp}}t-#;p8=FYxv5>GiFoQ_zC|)8(JlTpZ%JHj}ory8Z`ks zemQ~*Pjm2K1P`O{>8JR+_$+o8_tjf&60G(67=|KLeyJwxF{sjqlDnD+?ZNRBg(bI9 zv>LuMiKpro8dQ(aov(9z)dZ`P7BS+?JMGuP8i+<8pi!FMYL0Dg2cxGiRBN&h1w4}Lu4}M!~Mg4U|9Ze`85oM)=99> zL$j0ogI$YT?%&0>+s?1T4-3ES3+_!oETDRP>J142a*KYyjdMh2U`J5Br1R zf4Spe=-rl;7qOzK1y-*m8yH zX4_@(%J#!X+WO2R*n?yqg0QvVXb{WzGiME=#Uf+f4xD+W+r-S3Mw5O@(PHLF<7*Ko zPCi2OyyX|Q@Cf)dkIpL;AbhcyeSgMueTCAn&r$}~}xx8E1lzjHDW)sg= zSttoDDvV{+-EKB*Fvr~(2PgcB$}=g|`%kk+Ft7OAOqLgzs)z zKMxUZhgWo-P>R(tu!l?3T(Jk&CSyAAa|+Jw)(lSO%Nu2lDVeV@?5JJ?-)2ikH9{WE z@`aYRiW?6_*!x*Tyogx}9fbC2hc4BGrIR{f!cl`Np@^kGLJ450xjMNLZG;?i_ z8{hM{H1YQm<9ptgo&5a+wAG5g=Z{M6?XZ^e8}P2-C6kcjlu8CJoZsNZjN19vk%uB%`n-(3@~sQm08^b z3=)@e|kb0vy%-Svsq*MdMlPOfets~Zo9GB#GGc6 zOH3W9Znn_QCGO7hS(+c4a3msE{uYSQExAM#Wro-gX>yhd^x2gX%eab)QQ@?zp}^(5 zRayNp+*Or8D1jyf#>b*I%o)#*>ZFNVJ--)@)hhu80mn@){N4}^aEG^k$pOY8jZwtW#Krua8IJidffBP5IhQXN0`r$Q#0}>~;)e5DO_IMXZRb44$`1isEaTK|W)lX< zOl>W!?&bxAJL5tl{*V#>K0V#l-Mpf}k2V?cTa5VVZO9+v^#%U4X2k!>i2t|SxF;1` zY*q}-k8eXie5+l;T`Oi*3tv?%h-40$P_8R-E z7Fy@wDY00_m*b4Bg~nr?v8}{1_KY+3lUT;f^!jSj6(*C>JuwbcQB0z>lBeX2d)~|D zSjJ-%^BBGVZZ){ydz6ib;SpSMy_esX-%R`EI2Pu=AJ)6dM=IHWQ?fsYwqrK^Jm9E4 zTt1lX3Vp~r4fc%EIk0=Po7(;D@A2Vkk4PKzIt+={L2=53A1^z-r;|_=ji_LaKb9U> z{Cn6qYspvAy4Ku1;7lpm$wPgLtLHKTFxqvvgqct- zMs1kqj$^bt3^g5-r52glw`h<Im|{F;ci3;%Vo`(;AqdeedOwv@ZiUNOEqtdLT)**om08Nwrt#xeUZ%VrnH;uO zX|XzYxKN)IwiYTIlg8&Q|4>E$>rNhW*Bqwx+Z19(w5@OQ{*T*pjcm^q)E;U}P|wp! zo2F93ykV;nNbt$oof4v2K-Z7Cbiz*_Fld(R2a)Q?d8aw-f z?a%&Sw*PLl|Bmz8Uwq|1)BdN<8tu2oGTs|Y?bpuhz=q@JcYx13FbTNu`-#TS(A&|TgDCo?iX29h&43|-YOBlrB z>y3?OzTxmkmFy-0&$qdT>y=q)f4>JOGQXSpC;34l z3A6W%P;Vmiobeqx?|(DC-SP1~!bH>CG`>8dJdQld`ps7i7~5g;e&yWpUGu*i-&|Y* z)&7*n_dAL4J>ECICzOvP#}fm5h^x4k1~@Qt-~c<0_6=~}&4?Q?xXDK^G`L@UF>r9t zS%2&2p0obE|FiWs1M6>^@7(ow=(2BIf9Z1l{r)sKXT}1YdsAWodipKE+%L{sfCKiw zIsd!%uR!}BIj{Yf{ZsA#@Kn70x5YAko5vSjX|Gq{oKU9ZMweWATq%j-ZE2de*(Cqy zJlMqD)GX0~J#~M6fxU8O=xYqFf4ZZJBMUywQIN}n=4JU`n=*8=UADH1H+;9!P4kDAP zhy)`&(v1T3KlHTW_wtt!*xGZ|N|D^3CItq&Y3QwgHg_f6jKiZn^;yw?^R)L_o0

N+zrf;lvUt&#sA8IG~su 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

)=bUWv;;W!vOb)UjqS;M~9sz_))j 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

+RwxLOyrWrc`%}C(OQ{sV=Fc&t)7C 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¥Zk81L;%Nyi=R8ujf-8~nUBja?QLMFHF5^t{ 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

CAI@a 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�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�+Lv5@Bg1%2S#>w*_*vinlZjjub(-S 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

*YNy8iM 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

4g9dm6ZO5+trcma^o4^nY5WId!0RQzv! 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%0DBq?$nVsEB-JY)qYMI`*h^CZh+GLeZ{Eh*|e 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

*gg>u*stF zo%Z{x@MJuMbyY3==%3EUmq!QJOuJppmMKZAlWf$8<3G=tJLw*aw8ZIBn=Y<4ftIW4 znGW)yDqU$nsjuCkR{f>i5kJiPOpFA&B@tr3p8rBT6R?}P0~6 zY;76j`s<00-tp)}HHp_Zh(#pQO+2DQ?z)fU_+=KXwSM5tPH0^Zjw(7!wBKZ=0XpTG zDx3tmR>%ma$QD~kTia&EuNF;7a@jSzt3x^(E_a=IZAdeG??L+|{LI(EMs6Q`>~jEp z9Lv|I`pIsA*6Nq4H~Li6>$95uZ1k=UESeol?;B4z0NFH$J-4#(p88v z792wVXf2uoJilm8oI8=@Kq=hs_WdU^W%5$$fytl;qZQBy+|p#gIe^VIm!4XAnLnBh zX)*N)dbIa4+ehxVr(UJvt?KH+iTw^a@LS;CGnV`#TzRA0!Q1J@H;KTm$?92~o(X;L zZiw?xg!uSpp(_~|yDl&OZWo!>6<-RpVB z$C5jeOH|K?dB+~)@cBqxxhTu=z!sSm((BoJMKL=%@Vm{kGrK;=XEDe^9dgemRnf7SCHxJ&ySd0W@LhP> zh75!BBMl!-o0Qh0stnCird=?ehH(omLw@Ttk%#Y~RhkE{SAW^RaJ{J1zjQiEbmfpA z{(SEF6JbSGDm599Vj=#o1i?hCZra%NuhD9re8TuX8Z5KS57bU-5?afxCKYWTuS-Cb z1**n`Wq7`Cd(UMQK!EEiS0%q_ui!e4V{gIb&vNM%eY4n?lf9l!#qR11p>*pnFS|kO z4WmF=*4EeSFOM$qU)>|76^Nt=>FUP{qSrf z+HM_JxlMRNo9o7^o4jp^_J>sKB#G~0UqA-f_UAvDdpw#yp~@&T;qh3S*0xNdu0B@f zh*no%4v|<=kn$*hz^UY3DG>Rj�m7^_lTh_vOcG7B%0#*j(pS{nEQy1XxyCSOZDy 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

#@nng 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 BiBwb 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 z zaIE*oZ2{o411}_X{&xsZwxDf@I5uQOMIJ1VIU($$=(DhnCFl<%f=}+wr)4R=bj%&| zCIk|KNWXRMl|zSDISF|1jILxtP}QKjH(2+78^#9km3)u@E+rp7-`~vVH4Pitr}K*9 z%gCQhz`}5v%hk2nPePB>8wG$j0IK4^zl)V^o@gZw`1k~e==tz=x|+_ehHTSbh*!(L zrJIWt<@CM-X|q?1YdAdi2As8`Fpu}lV`;!Q5F4VW%j=CiocV #include #include +#include namespace icons { extern ImTextureID LOGO; diff --git a/src/io/soapy.h b/src/io/soapy.h index 3be8f102..f72f5c9d 100644 --- a/src/io/soapy.h +++ b/src/io/soapy.h @@ -11,6 +11,8 @@ namespace io { public: SoapyWrapper() { SoapySDR::registerLogHandler(_logHandler); + SoapySDR::Device::make(""); + output.init(64000); currentGains = new float[1]; refresh(); diff --git a/src/main.cpp b/src/main.cpp index a77d9c1d..243bd839 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -44,9 +44,15 @@ int main() { spdlog::info("SDR++ v" VERSION_STR); +#ifdef _WIN32 + config::setRootDirectory("."); +#else + config::setRootDirectory("/etc/sdrpp"); +#endif + // Load config spdlog::info("Loading config"); - config::load("config.json"); + config::load(config::getRootDirectory() + "/config.json"); config::startAutoSave(); // Setup window @@ -80,7 +86,7 @@ int main() { // Load app icon GLFWimage icons[10]; - icons[0].pixels = stbi_load("res/icons/sdrpp.png", &icons[0].width, &icons[0].height, 0, 4); + icons[0].pixels = stbi_load((config::getRootDirectory() + "/res/icons/sdrpp.png").c_str(), &icons[0].width, &icons[0].height, 0, 4); icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; @@ -127,10 +133,10 @@ int main() { icons::load(); spdlog::info("Loading band plans"); - bandplan::loadFromDir("bandplans"); + bandplan::loadFromDir(config::getRootDirectory() + "/bandplans"); spdlog::info("Loading band plans color table"); - bandplan::loadColorTable("band_colors.json"); + bandplan::loadColorTable(config::getRootDirectory() + "/band_colors.json"); windowInit(); diff --git a/src/main_window.cpp b/src/main_window.cpp index 90c42032..3360780e 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -170,9 +170,9 @@ void windowInit() { spdlog::info("Loading modules"); mod::initAPI(&wtf); - mod::loadFromList("module_list.json"); + mod::loadFromList(config::getRootDirectory() + "/module_list.json"); - bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 128.0f); + bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 128.0f); // Load last source configuration uint64_t frequency = config::config["frequency"]; @@ -214,13 +214,10 @@ void windowInit() { // Finish the recorder module // Add squelsh // Bandwidth ajustment - // DSB / CW and RAW modes; + // CW and RAW modes; // Bring VFO to a visible place when changing sample rate if it's smaller - // Have a proper root directory - // Fix issue of source name not set when source was not selected manually - // Generate entire source config before saving a source property - // ^ same for audio devices + // Have a proper root directory // And a module add/remove/change order menu // get rid of watchers and use if() instead diff --git a/win32/resources.rc b/win32/resources.rc index 6e89f0fc..c29a6c48 100644 --- a/win32/resources.rc +++ b/win32/resources.rc @@ -1 +1 @@ -IDR_MAINFRAME ICON "../res/icons/sdrpp.ico" \ No newline at end of file +IDR_MAINFRAME ICON "../root/res/icons/sdrpp.ico" \ No newline at end of file From c1052b1b284792d94358012c83396205221d4e7c Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 6 Sep 2020 16:31:50 +0200 Subject: [PATCH 032/127] easier build --- modules/radio/src/path.cpp | 2 +- prepare_root.bat | 1 + prepare_root.sh | 4 +- readme.md | 19 +- root/config.json | 23 ++- root/res/icons/stop.png | Bin 0 -> 1733 bytes root/sdrpp.zip | Bin 1545494 -> 0 bytes root_dev/band_colors.json | 7 + root_dev/bandplans/general.json | 267 +++++++++++++++++++++++++++ root_dev/bandplans/germany.json | 141 ++++++++++++++ root_dev/bandplans/russia.json | 135 ++++++++++++++ root_dev/config.json | 33 ++++ root_dev/module_list.json | 4 + root_dev/modules/.gitkeep | 0 root_dev/recordings/.gitkeep | 0 root_dev/res/fonts/Roboto-Medium.ttf | Bin 0 -> 162588 bytes root_dev/res/icons/menu.png | Bin 0 -> 1813 bytes root_dev/res/icons/play.png | Bin 0 -> 2676 bytes root_dev/res/icons/sdrpp.ico | Bin 0 -> 33891 bytes root_dev/res/icons/sdrpp.png | Bin 0 -> 21113 bytes root_dev/res/icons/stop.png | Bin 0 -> 1733 bytes src/frequency_select.cpp | 2 +- src/frequency_select.h | 1 + src/main.cpp | 7 +- src/main_window.cpp | 1 + src/style.cpp | 4 +- src/style.h | 1 + 27 files changed, 634 insertions(+), 18 deletions(-) create mode 100644 root/res/icons/stop.png delete mode 100644 root/sdrpp.zip create mode 100644 root_dev/band_colors.json create mode 100644 root_dev/bandplans/general.json create mode 100644 root_dev/bandplans/germany.json create mode 100644 root_dev/bandplans/russia.json create mode 100644 root_dev/config.json create mode 100644 root_dev/module_list.json create mode 100644 root_dev/modules/.gitkeep create mode 100644 root_dev/recordings/.gitkeep create mode 100644 root_dev/res/fonts/Roboto-Medium.ttf create mode 100644 root_dev/res/icons/menu.png create mode 100644 root_dev/res/icons/play.png create mode 100644 root_dev/res/icons/sdrpp.ico create mode 100644 root_dev/res/icons/sdrpp.png create mode 100644 root_dev/res/icons/stop.png diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index bff30903..2609e7ca 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -146,7 +146,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { ssbDemod.start(); } else { - spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (start)"); + spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (start): {0}", demId); } deemp.setBlockSize(audioResamp.getOutputBlockSize()); diff --git a/prepare_root.bat b/prepare_root.bat index b78a1ee3..2ed7730e 100644 --- a/prepare_root.bat +++ b/prepare_root.bat @@ -1,3 +1,4 @@ echo OFF +copy /b/v/y build\Release\* root\ copy /b/v/y build\modules\radio\Release\radio.dll root\modules\radio.dll copy /b/v/y build\modules\recorder\Release\recorder.dll root\modules\recorder.dll diff --git a/prepare_root.sh b/prepare_root.sh index 6f19402b..7cbe1e20 100644 --- a/prepare_root.sh +++ b/prepare_root.sh @@ -1,2 +1,2 @@ -cp modules/radio/build/radio.so root/modules/radio.so -cp modules/recorder/build/recorder.so root/modules/recorder.so \ No newline at end of file +cp build/modules/radio/radio.so root/modules/radio.so +cp build/modules/recorder/recorder.so root/modules/recorder.so \ No newline at end of file diff --git a/readme.md b/readme.md index f89f0243..9c0e69bf 100644 --- a/readme.md +++ b/readme.md @@ -65,20 +65,25 @@ comming soon :) comming soon as well :) # Contributing + Feel free to issue pull request and report bugs via the github issues. I will soon publish a contributing.md listing the code style to use. # Credits -## Libaries used -* [SoapySDR (PothosWare)](https://github.com/pothosware/SoapySDR) -* [Dear ImGui (ocornut)](https://github.com/ocornut/imgui) -* [spdlog (gabime)](https://github.com/gabime/spdlog) -* [json (nlohmann)](https://github.com/nlohmann/json) -* [portaudio (PortAudio community)](http://www.portaudio.com/) + +## Patrons +* [SignalsEverywhere](https://signalseverywhere.com/) ## Contributors * [aosync](https://github.com/aosync) * [Benjamin Kyd](https://github.com/benkyd) * [Tobias Mädel](https://github.com/Manawyrm) * [Raov](https://twitter.com/raov_birbtog) -* [SignalsEverywhere](https://signalseverywhere.com/) \ No newline at end of file +* [Howard0su](https://github.com/howard0su) + +## Libaries used +* [SoapySDR (PothosWare)](https://github.com/pothosware/SoapySDR) +* [Dear ImGui (ocornut)](https://github.com/ocornut/imgui) +* [spdlog (gabime)](https://github.com/gabime/spdlog) +* [json (nlohmann)](https://github.com/nlohmann/json) +* [portaudio (PortAudio community)](http://www.portaudio.com/) \ No newline at end of file diff --git a/root/config.json b/root/config.json index 38300a17..e0724191 100644 --- a/root/config.json +++ b/root/config.json @@ -1,5 +1,11 @@ { - "audio": {}, + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.32258063554763794 + } + }, "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, @@ -7,10 +13,19 @@ "max": 0.0, "maximized": false, "menuWidth": 300, - "min": -70.0, + "min": -52.20588302612305, "showWaterfall": true, - "source": "", - "sourceSettings": {}, + "source": "HackRF One #0 901868dc282c8f8b", + "sourceSettings": { + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 0.0, + "LNA": 24.503000259399414, + "VGA": 16.229999542236328 + }, + "sampleRate": 8000000 + } + }, "windowSize": { "h": 720, "w": 1280 diff --git a/root/res/icons/stop.png b/root/res/icons/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..366651bfe3b40d24bf528215c918febd65552bb9 GIT binary patch literal 1733 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+UdOTemLn`LHy|z*Ckb}Sh zhk1o8f2Vf^UuIBzb}VB%Q|qp~K(!+V{7CR+|4@6paL+R7hV1BU+vU<0*Ue-PWXfG; zJdpbKGUJ^0cCri%f95eVG$=4LFgOAOvWbU*fkl#mfy0P_K_G>JLE!`ggTsVT1*73G unjS{;1tsOff?TVH%Wp0-j*!y#!})uKFE~_KzJ+W9`PkFd&t;ucLK6U2*S@v@ literal 0 HcmV?d00001 diff --git a/root/sdrpp.zip b/root/sdrpp.zip deleted file mode 100644 index b3e65f4b2c3ec66afb54e3521a5e3233170aae59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1545494 zcmV(*K;FMlO9KQH0000809OkZQ7hHUkTd`Q08jt`01yBG0Bvt%b!=r{Y-w|JE^2dc zZmZ@}00O0;#FWf@B`XCbJ^kGLl+v8kV*MhJkX}koj*<>kO=@y}QA%nNnlh*;SS432 z08mQ<1QY-O00;mqlFCp?vmN0WD*^xjHUt0-0001RZ*p{Db!2I8E@W(M+**Bf6jhdg z-PIi$LZ}W9i2{>WTMY!6XoJFJvXg>DUPDL1$3Q?Akj55P2UzGvPaL3 zbJpXTJ+sGIJ?^eEa+rt?^hbtt5@bkl7(QI(+YaF)CJ+MxwfDZN?yl~95dYmi=k~37 zb>IE?-COs)>gw{PJBdIDF##zGA$3Ikl#oGu41|ox+cSdf8v6OYbq3ex_byz$W}|KW zhIP+vc;**2_cLqPuJhVfK5N_HTWedh)>b-qf$bOTRy{j8D{GitQ}Me!w(>J4p8Qdq z>OL;dJIDE)yyt;0{{5W1Tb$3%yTo~UUOT@&J1@rh+`P+t?%W^E0{*LyX6Iew{K>r2 zoVz%mzs9{9^{0nWQAWtBUk)K}4LP+eKGs3*vt=4bj3#G|ggj~BWA*n8+?PRAM63o|Gj!P2?mP zvo#20A?g294c9FO{fI!KrvBw8d!OCp1%C3hQFRDoPm{M1vSRXvRnK^zA*3eLz;%-0 zz+*;LAXz&llT|T79>4%is?MuIx?FJbdR36x)mX`cSd6A#`j*cxl@>~byoCenO&ohN zvA5jh4I4MO2~n}D*5oGjCHL$L>)eE6iI@@#g3wED2Kj&fq4Lvq3zfZg>tgD^SVG;$ zoUDU2Q+6YC$`rf&b3$A!>Y?J=lOFMfvosJCx32_f_Zaxx5|}!zcBWEvTzvf|jQD#@ z;;UVFP#hLa#3=4K4=3UTuf0&5P-VAy#C63Nt{TY$PzcpqhA2^g^rjMo(TD3{)LHAC zCN2(^vPfw`(Bl-hhU+jP9&zJQ3!X+i;@S=|uY`C!9x-n__aBCuYG)Wd;`&C?C2sxN zCC>v-Z#TQ-B^_}7XP2A}r%^by(pqPUN1XORi%0A_0`sE&u!+y}h+ll+5s%D!8z+Lb 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

$J$ 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 r1X_S{~+Ic^x0>CRR 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

N+zrf;lvUt&#sA8IG~su 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

)=bUWv;;W!vOb)UjqS;M~9sz_))j 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

+RwxLOyrWrc`%}C(OQ{sV=Fc&t)7C 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¥Zk81L;%Nyi=R8ujf-8~nUBja?QLMFHF5^t{ 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

CAI@a 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�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�+Lv5@Bg1%2S#>w*_*vinlZjjub(-S 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

*YNy8iM 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

4g9dm6ZO5+trcma^o4^nY5WId!0RQzv! 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%0DBq?$nVsEB-JY)qYMI`*h^CZh+GLeZ{Eh*|e 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

*gg>u*stF zo%Z{x@MJuMbyY3==%3EUmq!QJOuJppmMKZAlWf$8<3G=tJLw*aw8ZIBn=Y<4ftIW4 znGW)yDqU$nsjuCkR{f>i5kJiPOpFA&B@tr3p8rBT6R?}P0~6 zY;76j`s<00-tp)}HHp_Zh(#pQO+2DQ?z)fU_+=KXwSM5tPH0^Zjw(7!wBKZ=0XpTG zDx3tmR>%ma$QD~kTia&EuNF;7a@jSzt3x^(E_a=IZAdeG??L+|{LI(EMs6Q`>~jEp z9Lv|I`pIsA*6Nq4H~Li6>$95uZ1k=UESeol?;B4z0NFH$J-4#(p88v z792wVXf2uoJilm8oI8=@Kq=hs_WdU^W%5$$fytl;qZQBy+|p#gIe^VIm!4XAnLnBh zX)*N)dbIa4+ehxVr(UJvt?KH+iTw^a@LS;CGnV`#TzRA0!Q1J@H;KTm$?92~o(X;L zZiw?xg!uSpp(_~|yDl&OZWo!>6<-RpVB z$C5jeOH|K?dB+~)@cBqxxhTu=z!sSm((BoJMKL=%@Vm{kGrK;=XEDe^9dgemRnf7SCHxJ&ySd0W@LhP> zh75!BBMl!-o0Qh0stnCird=?ehH(omLw@Ttk%#Y~RhkE{SAW^RaJ{J1zjQiEbmfpA z{(SEF6JbSGDm599Vj=#o1i?hCZra%NuhD9re8TuX8Z5KS57bU-5?afxCKYWTuS-Cb z1**n`Wq7`Cd(UMQK!EEiS0%q_ui!e4V{gIb&vNM%eY4n?lf9l!#qR11p>*pnFS|kO z4WmF=*4EeSFOM$qU)>|76^Nt=>FUP{qSrf z+HM_JxlMRNo9o7^o4jp^_J>sKB#G~0UqA-f_UAvDdpw#yp~@&T;qh3S*0xNdu0B@f zh*no%4v|<=kn$*hz^UY3DG>Rj�m7^_lTh_vOcG7B%0#*j(pS{nEQy1XxyCSOZDy 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

#@nng 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 BiBwb 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 z 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 cASb?` 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

  • 2a-ytx-(Y1%*Q`;e(V?9Smc22g?_xG~I&%zq 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≀A#j z3En4hd#s$US74J{FZyyB`#_Q2U1F?42f@E6Md#-|I@mu*ya#KDzKk`-xN#cnlecPJ z=0XO3hS!&*a3=GH5a_@Tqu$JAU9XHCh^X(ElK+_Gl*}E7i0uxQ^mE{Q#!frn6OD&H z=O&-c+-ZmO2Sk2)B;UyF1Czcawdc*NnS11ret_ho?Oum09q;KcWqyy5Xo>d_-|%cB zt%9{Vup6A=;1B_6`-`qs21W~{s)I-^xrp>sN$Fc7ReC15+$rh9B)uoxsucVaQd|j3 z`oZM$o#0=QNjN9mx!$N(mN6X1 zRa312l1eO=p6-`|Kg$`H+=4ZsjkKx*2P;;U5(>~OJ+4odlHM2m_X6!nUzAF}Gx-zg z+J<~8_={8NcM1M0tnIrm&=LG^8@l-v>HL#X@);xP#VPzl^N*7MSITu4%A;3_1@%r7{2$=Dk6ahabt|sVk?ZgEwKExO{lDx0 zAo=~*tB9bE^_gHp4dnAb?usBQXWx)DM?1mRntUj0j$CWy&Cr!~a#H{Aq(1fN_dnN% zHJ{e?LXRbqpXTRHQU>TRWk|0k^sH(pTC7~XiqSNrR#X4suV0cm6?&nWH!oM@TJryE zd3i(rr_L@v>&TBT&+W2eGAZSms=oY_by!}X4D346BDIm+U1|F>>A6<^ukxO5XG)XC z*Sl^6^?GwkS6{m7NE5#KX~|qGVozoj+j|Aw4nKlEuS_b?-5PJzs`MXZr&-;tA()hY zjblNup}hO8TRRC&bvvfus&4Gya!NNsm235nqknQpn|nvMhr6+>>?hq8cGDZpYP5y= zC%t)WL9;I1be~)H7cc1GX36%lnXedQVTN9c!S2_ocQ(pf1$ z__%HIRAX`5nNPkl?CcM$**1)0z5Ap9l;wR?(+aF+dcRz^!zB)yw=z+@9q&RG`*|x9 z>jb7{(+}PIY8ccDQy}f!PZ}<42q8{ss7a-NIAa4GeU`)7+&daR%)8ji387dRpGB+nE={X^!=^PiwsVqngjw8V|+(Sz_1+)HHr@Omg=VPu}}L z6XWr>*Bz7`WPH)Z=(J_XN6s^w7w6raeBtabKD##WPi$qwWdFc4`(5;$-j^Bw*j=5>W4|?T4Xii2Tx^8KN!f_J(*%RasyDkFFDY=I=w7wxR*U4Nb!HE}Ydo5o zJ#=}U*+cKD&)k{T$q{wtL%d6j*qsk?QJwh^?-~dowG;nLT4eeax<%Ih8D}|I6iXR4 zmP+pyl{z=nfn2%iCee#~Q|DGjx}9+zVBY%^DV!kb1*!8aH9&orI&YvFGy3o5*+?D0 zOltSMF|G1Zsq-dk1bc(J=}pxo#>c7iW~#Airp}vl-jwl-JJ_N8J~c+&tZq~{5o_$s zI>w%Ona6T=7XRKs`mJgdSA%#H>~-uS+gY7T%B>tP^6$D!u12Z5z#KyxG)i3$=0)6n zEpRu`nbjXU^=9^Qy^ViHk?&Y?xd!~9a@Sq_cL&eVB{-TgxTQFrs}m$mUmsT|&mQ&i z%zWC-l%+GdcjoD1I9|^)Zj-0oLfReb27WW^cXXYry8m1U{%z3eCZW?^5{rN z)OEg_=jqZ9=D+KB*6l)z>%kezxqkW>&hI7ivRzdBAP#Ub7y~6 zjUA)zk?+yulg{gC$}k4X9s^}F%W)SegW=%m%mq82`2}Y%hr^|ECXX^XWFf_ToY9p1 z&prktgV~HVILN*MLPO>O&Q$imGY4Oy4!rKZF}JGjH;x%~i|TXhHFw`mbOQYm4I*;G zdHTx0yGmb~L|M{T78;g)UEW=Js+ausli!o&ci=6f#@w#X`QtD78&VuXEKP`W~hz}g6j;9yj zm-V~3aN-1YBBQG(!_^zv#cQ^jgVuhk=3-ywsrl-2W*&U6iq(4c13NgCs15AZxQY4J zKd~q07M`_@v9>Z*uC}u?WF<3lBdoSL%IHb#t{=NVo@ktGoMN0|oM}94Ofa4?o;S}l z&oT#@=bD4f^UU+jA?5|q<}>DV<_qRa=0x*V^L5^RJIVZ~ImMi6{>yyN{J@-MPB&+oADeT` zPtDKF`Q{hqSLQe7LUWP1)Ld?UYpycCGuN2w%wqEgbECQ044GTaQnTEwFvDil+-b(l zxS24k%^I`Ty2!fNy2QHF8fp!*F0+PPS6Cygk=B*gRo2zkHP&_3_0}ls2J1%aChKPF zKIf}yNleFyXz+-KDZ&-C4x z)vy27{#*NX?El>HJN4NK&-5AEa7@F!{Z8)JvCn&b?#=CWg6eZbqbvK)>l5l5Z#1>> zs>VO$zMlJf-(UKK`m}Abs$Z9;N9Df6@0oo1@P+r!!pXnSVc!3Ums;NSxvJ#g+pz1mOfIJ|S){#y?||B%w$UR{sY&+oHO z|91VQ+r-?d-SZCbb$H)!J`jvT*Jf8Brdznb#g{fh^E+UhU7(%)3c^s&#qC#Zg1H0Sh} z=WovprOQvLf9bn1ca{EEOGf|a`s~y92yE+7SjJzmWBB(;?9$!a;P<4?f?e^2Ya9*cW67Iz!%Ul|tn5-e_<-J=tHuTiz? zXMB}k)o)nx{fgaO3=^Mkw9&w5pl&m?&vm=e#%QPRVASPcHO4s7=%MbyQukEj^jM3! z#~5S`Qui9SvWoCN;|}9ab-(c?@r{QV4fsYqY%DdFsYi@&i8wrJtYQb9$BZJP3lq%l zW_R_3d4zeSdQw|=^)&WY7rLvIkgxo z{(@S9C4WgR#hSmRmT3#F)?&k_sbcK-bhRE^K2!aGJ^xt!h)tiPO0esnstwro&(ucj z`+T(t8~=scjGg~V{e-PwsY2#zbG6#Rn}CbdPIE2uI(A{{H>()dKBRVI@wcitR=-qL zVfo8d0_$I)s%ZhjY7ebIRMpTD>{NSc4PvU67NJ`0qeZAuznZmXt@@3YVVL@z7U5>Y zv~IO-HCkACR-Vz)8e@$y4zR{q?fLv|cfev|h9F zjULt%>uuv$>mBPIhLqm5-ev#b_pNEh@zxA$wvlTUSOvx@);w#zF@P51YvVLpjTOe} z)+%eYah_FVtuuyL8?24S#a74)8JAjHtqNnPwZqzJjI`o*YvU@rt=-mm%0AHUW;|^l zV;^I@VfV6o8Ts~c_Ho9W_5k|~V-hXU*~U~_p>vFP?7{Y6-UxKQJ;ZpI_j(UA-nWO_ z!;O#Z5%x%9x_y;>l`+%4&c4o=WskB)86Vp>+cz7Z*dN&+G3%wF>gOy~-vd87OO0MY ze`l$=83+Meou$_E&Qg0Y|F=Tc4?xoOysp;t01hxmsn$^XFf-0Ep;|-T*47Qc&A{90 zFzX%QUEqDL=cxm%1*)|@05}a82!My)wsf-98s3i(=PhG#)zulGj&^#YwFjs(ST%bV zyI`CR3zZD$61y=Fj_vHH{ zu+Q1WSn4jLu`|GE!?B$cH9BxS80bY0hxIxJ^)+~=F&JRS665w{oI%34F%Gx~_|hpf z&vgcvgMssa^MN721;B;C4bE2cM&KskW?(dM3verNo3qQj9blIaGY_~ExCgiwxDWUT za6j;Xv(tPKcnEkHc*KdCK-0eUm5CL`oyMQVuYF*?Eu!aMpon6-L z&Q6QESYt>Z%Qx`z>CgS>m|}B0$wuy$DzXYy>s~A)pl8a-ag(#dRF~D)18=t2yrBSi^BI z$6Aj2IR4D>7mokt_$$ZXIR4IYKgT3T$JuHtX8o?u`C!Q~jL^bprEOPja@P%iGZ9ZAM$C0)5_wK5wH%XljmfwxHMB(CcmJ^)@rc z8>Zu=C7dnRFyIE@X5e{eoAov$b?*So4!7PXZJtwMEpWEj1Ax^6v>v-xqp1Ou7t>a0% zdD1$bw2mjO<4Nmy(i)z$PBp_a#8s{nH?IM%1+D|G2j&2!KsitWgn=lq(}^Q}al03A z9QU4sr_c!uw8PDeJAgdkPSp%OkD}*M^gN25N73^rIvPbsqv&W9 z9gU)+QFJtljz-bZC^{NNN2BOy6djGCqfvA;ijGCmohW*vbtYoqfuluii}2)(I_$+MGm9LVH7!xB7;#psamJR zxXsDO+Mk7FvECUP#h_6P8pWVb4En^NPYn9Rpid0?#Gp?M`oy454En^NPYn9Rpic~1 z#GpkCTEw753|hpXMGRWRphXN?#GpkCTEw753|hpXMGRWRphXN?#GpkCTEw753|hpX zMGRWRsDF(5$Ebgd`p2k$jQYo@e~kLasDF(5GyV@S&w%>JsDF(5$Ebgd`p2k$jQYo@ ze~eif7dz#&4CQdNEta|5ycf6+_y=%5unbrMtaQq;dgWNVa;#c8mZ%&nRF2k{qxI!z zeK}fRj@Fl>_2p=NIhtOsCDD0YwQwFcZU@Ey=P~3whMdQc z^B8g-L(XH!c?>y^A?GpVJcgXdknU4vb&!6w&WlWVLG+2>*!Fawy+^+KQ&C8f;PxHmL@i zRD<{1jo%}I-oWv|W57f}?|@SPEJ62*^(-}@HEk2KoV)Qj+e#;Q)ED%T$ed z5ikOvHs+PURlwE2Q@}I8bHEG0KLJW^P6hr2uy=&H9QYRaHzghlTn9W2aF6u`0ClVl zz$V})YC@T8%4Aa}n=;vl09}B?0Lo<_0Z=CUXrL$X5%oHSnun=*n3{*Fd6=4qsd<>1 zhpBm3&36`4`)1TWOzp$eK1}Vy)ILn@!_+=Z?ZebQOzp$eK1}Vy)ILn@!_+=Z?ZebQ zOzp$eK1}Vy)ILn@!_+=Z?ZebQOzp$eK1}Vy)ILn@!_+=Z?ZebQOzp$eK1}Vy)ILn@ z!_+=Z?ZebQOzp$eK1}Vy)ILn@!_+=Z?ZebQOzp$eK1}Vy)ILmPsw-{KiB2)Czwu9B<%wqf<<4u^w-t!g_)8_c{Mq+NSl^BCeNmz8qM~`3@k?c>>r2>;?7# zzW~1izXM69f>ynP7QKSjyny za&)J$Q-uDWiT<96{+@~co=HuMsA&;3EuyAH)U=427E#k8YFR`ri>PH0wJV}#MbxH< zS`<LN;AM5&7?brGd5qSQtB&`XH(e}bJ3VW&gb z=@520q%L$8sf&P%of35k$4g1OoECeyQ-)0_!-j{j;UP7Nv@bb+P1*u@SqSbT{N=^Y z4z-lo(94_%Ha>)n52=;R5ncuUYTEhloF7z?^OM>Ieie`a_5d}&USJ>iKXd#y@GGz% zaGXW75h26o*oGFSol{185u&{a8OM{B%W)vbK>&52?Fi9!glIcLv>hSZju34}h_)kS zj&l}anM<(DC0OPX^B=(dzyo+S4+0MX4+D=lW!Sbd+L{n;O^CK8L|YT0tqIZAglKC* zv^62xnhx2Ll#%~-pc04xJAhq4l~YC= z6|!!17U36fvGSY}>}nZ)@fKQ&68z#Vv|l0XW&WSY^(!1-<@z;nD2tWP^<-cQ*B=10 zI4>amQ;zew{+#n~fQ6i|=2!%*0e;~B5?~{FZst0~u@szgpaO{U-!3Oadl;fU4ACBj zXb(fQhauX-5ba@z_Ao^2RYL1kLhDsR>s3PQRYL1kLhDsRTN$FQ4AEAGXvs=wFGKjO zTku)8;InSAbAb~8yit7CEwm41v=3#p4`nudwa*1E1+E3I2W~(v#?fMJrp4Nf6ep14 z1X7$piW5j}0;#P+YC}kE2&qjVwF#uQ3aL#XwIQT6h7RN)sXLL>1d^ISQr94R{+E`ih~kh%m?mq6+g zNLLloRfTj_Azf8SR|x3}AzcZiD}i(+kgf#Ml|Z@@NLK>sN+4Ycq$`1RC6KNJ(v?8E z5=c-L5>$l*RUtuDNKh3LRD}eEke~$8Q-$P&ken){rV6P^ASnqXC4{6TkdP1(5~7vf zY)u1Z00pGaC+%~N-vA3aU(K-ySOaVZN=YjRDu7+g7RUk`0F8hqKn~CxXbH3e4hN0| zdH}})y`3sJUIoXi;CK}ruY%)MaJ&kRhv0Y!j)xe9VFVCQyD^-Nz}X0#jlkImoQ=TE z2;7Xo$%t@p1;=lJeNF_9Mc`HhZbjf$1a3v(Rs?QEjN2KJ90QC4?qO8%HYWn7B5*1K zry_7F0!JcnBmzewa3lgpB5))EM`rE&}BuP%Z-HB2X>@hIDUseS)`g8YgH4YST%tMf9&hf|HnS>#6IuDKJUan6T?uA%<;hgVLu4_yA%7n z6Z=aHLN$V4QS9qZYYgY(IO;yqM2@z>8fF6Hj&aViopc754g1ABo*xh23AJ z`r$kF$D=rrr)wW_IG)G|>^B}SB?_zW`Ts{?6aR0arnG9R68zoZ)H*BCqwkGur_yNa z{6NXWMki;x(F@{Eo?2~p2gs=<+zUHHu5SZy^Lcy$L$;|I9Ae%?+}Vs z+1g({6%SndtfzC-e(M<=2jjP%FI29wFQC=E2pG!sFl@8-XK#h-g;2c^s!xXME1-G; zs?We@EXHRn#$PN}g~0dxzuu{Z@{^%_LWMZrg6%1FDxv-&e7|CRzhadD_5d}&UZ57g z^kp{SI#Eynwr!ItB!<;E_ zY7Lw!gj0oZst`^U!l^95`40;g> zI5q>{tQd~%gkzK8SOQVqkOZP5jz_CI&RtU!m@xhAmzl!193b-}{jwRq$ z0-viGpQ{*-?Sxx9;nYsJREe*pdm#xc=G4Ne8E|O^9Af`LxN|Nr*qIEM5^$&z4prKh zl7=UOUsQ}=RE%F#Y~RSel$9A4L1zven*+zDz_Dd;Y!4ip2FKRIv9)k)t>{Z3$M3=U z5!eLI7TOh8R~EyqwW2Ro923AEpa$3r)Up=qXO8~{eg*aej3f$TQx7Na~wW4GB947@)8Lr4fm+A39jt7GB{L* z<=c(btHSCre&H;DQ`_KF8Jt>xUhP1y%HUF&Sij4hQn*lNK7yAy9$3IRWq=!HaH9-v zEPxve;Kl;1T@{osv&L|I-dO$B}<@W36v~>lIx&k36v~> zk|j{G1WGdJ5NJ!=(2Mq?Hx}o3uKRO-B62;D^FhFQ{7-9(oQIL~b;xuCYL-C75~x@L z6-%IE2~-S2#V}M1BhwLNI)Y3`km*QDrXx_c1euOQ*>Fmxbx*JanXZPqB~Z5nnT|l& z5-3}O97mAjNJ@^YQ*vAlrAwf63341qj^oI29663c?UIxnS0l#}YRajqy_Duqj>Sfg#~ zF|H>9_*~3NYDU~E%FLu@aH&)kbH1MQA35Jh{5{0EYne(}ecw`5bN!1`YFNb1@vj*D zZf3OR*p{>dIkpEn0-b?gr1j&-bHx&!#Bl)feFn0A9{yWU%*meIl%Y<5>bjolp+zONW?ZIVjD3z#?Xl0Gk$<{Y_o=QejVpG zaDFquvn>2%Vs%lZq!ek`W_?WBJkGx$?Q38GX-i344s76h6YvwDJ%uoMG17MfaUcQg z0rmp>fM0-L0p2ZdC0VJf028nQXl_Gu8=4abjM|3)U4X*?Xh|F}N*pk19}V;b1~4LY z8ZZzT?39YJy4>z$xx32K(0X4UA-UUXz{s&!5~^K%f0s8cXG% z2RYO{oU%%hltrpEPC~ZNBYg;PA^kAdB1Mqv9OOC&xy~`q2ZjI_02czIuttw^d>nWJ zsB5LPXB$QybD&xnSI^sWO4`TF<>`1aUcQg0rmp>fM0-Lf!~3o%0V7;kjEV4F$ek5p04(CwTFx4 zQccBox)9mZ{?o-AhmuBlk+U4+Ovj~zyhouC(9d}rIa>*5X2FrS;l|r3-zbc1Erseu zQ2a+Iy%I{lE#7H=jweE0?dP0F|6&Ne-eJx=*!{KmHw*D^7UJJ5#J^dHf3pzk&Vr(E zBZF@vgKr~)v!LiKs5uKt&Vq`wQa;SvP;VB#%0hgVh4?B9q2fxYIIEs75~kL(sP!yr zJ&RhuO^w6UHcahiF)OJb@mPFkYE?n4wxcPlDDRBiQ)=_sIaj!sYDk*gZrQQMGx1%+clw6MnSD-PKXiOy~ z-hsyKKx1~GF_macrL~)W?EoU`rvU?j!OnKHrV_2GL~APToA{r6nSs@hlAb7~FQ@bs zl)jwOmr?o(N?#$Rk8!NVv$4dxDW?YI)IgWKoRXJQ@^VV*m9m^t>eA_PfQovhtDtlh zlx`O#DyKvhl&FFdRZyZ`?7!EK-;?MAf6wtpc^dOTm=7_EelPP2c-k(WwhKDdK&Kk$ zR0ExAppmvJyP!=Cw5g%)HPpR^y4UceUDUOPd1Dvi?Og<10*s(HRmhQ8pTvT8bB(u! zuTq7tQiZQlg|DLfwsCxwDtwhHe3dF>v5Kxu$Z)Uzz>|408wBkHjg~<7pm}g z6ZWMXv8nh5Rrm%~_y$$Xrb~}E*5cRJ;@8$v^1YOHFQwGujZKpRyL8vKF7R7Jsr9f3ns-gJ<@F#&KvIhsJT}8;8De zEb9T#HV$p$&^8WjK`xcUv>a6dG`e#-VQ<`o^Jc9NNaAZ5-Ohp=lhN#<7CCp=%tP#-VB4zL3bx z#lWSUGp7NX#-VAPnOQ;V(@5x5i>0Z>($r#UYOyq$Cbd|OS}aE`JF3->nO{tgUdPS7 zShzlw){&3}b>Q_P$q+PCXZW8wEWE6jU=`+$D{_XAJU?mi1V z5Bx82@MYY)0$54!TF1TfIF18!yn7-?9rM=lZXMh9;@Yb@F9LK-dm}hHt{vjI3;F!J zc=kcg3L_N0N9Z2g$?Db%dxd6`~{#|IC&;J(yLpi^d*z0Y;9Y7v%C-C3IYVn9n;vnWt0A3Mu z(-O>0OE5Pr0jCRzr56%QFC>;;NG!e3{IeMlUL5x^?wJ5Q2|Nw%v%vGfi@?jkE5K{O z8^D{uTfk)CZQvc?T_9sNMJlFShy;|UV!GuPl7u7_A_?V4LSZVdTbL2oZ9-hP331&f z)+gW=faAt?3$1TB*RkDYq@xAIcngu5LZqfpW@~KbNGnn=##=}$vB9bWzZ$3kYJs1D ze*?b(`vC_@W5+1l0sOa+Uv)@B(N_D?Rhir z`7A8U*#OoDnT;c_ajZlfIgKNyapW_Od}@oSebJ^oWjpezE#!7Ae&U+>R{8k)=4Y6i1fg$Wj~`i6bL%WF(G^#F3FWG7?8d z;>buG8Hpn!abzTpjKqpTJ_;zILm=OZN@%_Hys#2lqY_%95?Z4Y>qB4~ zFaw-ccs8Y!uM}#HgIbFz<9d96O;GA5DAiF~QsSOaY7dkeiYHQv=TVC1Q3@3n<8hSQ zLx2mN#ZX`|WhlkM);iadn~o%J`j5GViJB6{=FVbPpx3gNY(LS+|L}aN+Xm{kfx2y= zZX2lE2I{tfx^19t8>rg`>b8N^W@j-Y?rdNXa4vAMlZOuFt6@%C-kPMx;quX?d~_)v zUCKw7^3k7sbS59$o`=rlqci#FOFp`ikFMmSEBWY2K6;Xmp5&t^`RGYLHaCyfHILRc zkJdGh)-?~^$wznc(VcvBC*OP-;F;)7KDv{S?&PC8`RGnQx|5IY`Pkb$THHKzEFU|Yho0r5XZhBf{9nNFbKo0bHBbbs0XBlS znPZ6KE+-#d%SYGp(Y1VZEgxOWN7wSvwS06fAN!X_tD8rwn@6jgN2{AhtD8rwn};6e zqlfwEVLtXR4_(Yx4UDgml0x8HU=@JnHkjFGti^v>=WH~J>D!rH#ks2GEak7DiQnQ0 zuR_j>oUc-M%m?R3?wG4=QsdlJZG2B&#f)g^lpUn(0;igkN=exxIOI%9TtA2Qm9b7Z zeFdWzU#garuZHqfXO!<7o~HBuoSZgr-+Wf2oP*WA4Da*`)tvUa8SDM7;0g1c)#^Lu z>3&JBU*lgE@^ofW>d{r6#Y|P*rw8{kEYbMn2DJo=EXTLo=(NBJT*MoH*3#NPf}A&@ zWjK}5Kjx`3f3+#8tI2T(IY!7aLXHu}6}5zFTs`--Ik@F|t}D26!QBMzCU7@_yNMDv z;mKG7bq!P;fPb7hYON!t=~3$zl;>mCwX{%ZF6Ek~;@E-T=`$-va)LzW4kDI%q_f57 zfp>E(*L{JLDBS?&S)Aj1V_X96FiO-x9qN3d=)FLlZR~m)heDO=bLV^J1~gYI@t1V` zq>|B(T1E`_JL|9~FE09M9)?0dN`dr~vPsj8mqa+?U|K-Q1UuIkMU_FNCJ< zi2mo~RF17lq+F#UT^UIMsJuZ(Q2!)7(DVx#^MV_yq#mjw+xnC`F-Xe$lcyfVSP1<+PgR01R0A73oFLKll z`pi3>spNh){CI?t6~L1Rp<01TI*-7c`wT;Mhd&Qe;)f~04U~E_d>Rj*^5N5i(BV^f zH5KYU0Cgup-CLn<7@pli%_c&hS@7i7xL^aT|E0*ZfuG<{)w=X?$2 zt3|WEN0v-VbrVmF)8n4c815p{Tn?8~mk4#Kq%Lu|-GX}TpzIqc%LdA^o^q5>j%Ac1 zVw{KG48cRbj5Pi1x)Q$wifg)hbD5vQ(pNf5$W4!K{XmXukex`q=+0Df`<}?kP-uDu zqn@`VtJzszSL)n{B_QvqxI`|Nv{NKQb zK`NF^!iSbT{U-R(loH$oA6mkPEcnn9J~V|7&5eVS5%@3@KD2@lC&GuOlyo$F7)1RW zQ`%FE0m*9WUuc|@tbz~6!iTHiLqqrwp!7YVg>{x(Uq0hyB)M%waynjbq7x= zfG)*6RaG_71m zlZXQ}#HMKb(i9r&`Ss@@<3pW|==4sRSAQFp;sGLU{YmxN~mQFRivPB>KtPZRd|H*mES>r5oV$S={d$NA} zzx+vV|1S~$faW~qCOPY{w#wN>396h=olVYYrje zSdJVt$BwiBzXkdd!}jk`FaTd@$!%PrO`9Fn@;u4oY~&l|9WJG!(Vios^{?+=Rd%*nG`^Uee&Ew--?k8lN;9;w@9%uaVx2L)$f2_^l z-G&vo%DI&94bCli1nfc&1XLDUc@36wB6;TEHK=4Col~+S*Wc53RkV+FK8#u^{9uKb zo%*=?Q_m_(3qTw8iSrHm{|y?x13hs+sUse=a=y~Kk-SI$p?BcR{0N1h(w~3+oObx5 zfBA7f^Zu%@7nI#(pCY}EU*Q+)8IaBRnv}Q&`>AwgRlco`Vh@xCtP4Jwv@=*)-;UM% zgV;4+ujcQd^g8~IvX1`{;;+LQR~o@CNL^$Fe>c|df6DrPy60E^ngVg_q8ZOx8i~<9i}2_kUxB z+lB~IZPuARjC~NMg$(s9*WX=6_ zS#v)_*4)pOHTSb*&Hcx+=Kd2|b3a?w+|Q9U_X}jr{X$uDUnpzt7s;CY#j@spiLAL_ zDr@eS$(sA+vgUq;thxVI*4(d@HTSDnbH7immUZ?&=ympLvtDPfSQTvLDb@vBV^qvy zoxR$v*V(JMUT3codY!%cRj;#G`&nn7Z&P1e>QE^F(1$lCg2WNm#+hDe_5YBy_4mu#`Uhlf{e!Z${$W{L|Cp?;e_YnqKOt-DpOm%rPs!T)r)6zDJ5&%4 z)N*Wy92>}SS7ci6T5GYQs2eifoo@i?J{-x{JN{%LlSk7Z)jKUUpbyfM9*f@pCkvVE z4d!ut^^O+(@CtMJW+RRIT>&TXZHhFWNQ-|G-)3mZ$+U`R@NL1)7iZ#;oW=J5(V14F zGp*5?i&%kwG2b?5&n4jKeK6XJ{81X5PlidA*ZHE3|hUJ0#p=-mluA!{b#uc13!W z+#WL@1M_j_VwmOxa{}j2m``y2r1>Q0PqFicZ9Z*2O+I@64cmOye3o;)3x{n!Z$8ht z-iyOFUo>CjT<^#cz&cE%Y_FKF@Z49;S2=&pe2w$h&DS}9!+eADe3SQ%nQxkJaz4qN z#Q9s;lvdc3_o&hPCi^w8C({R<>peZP#J*&SeaRC0k|p*fTkJ~%u`dn9zBCm3(opP6 zL+lH!oVmbc*9UfTTF7~!S;+Y!a}no@%_W>KHJ4K6W#%#{v)o+HIb(pFf6IG41LjJ0 z1!*G|s;yY4wql{$iiK({7OJsWsK#QUvc*DWi-pP-3zaPvDqAd6wpgg9SSV&enXImX z3(ODVyxOc*%}wUYtAk{>kmlxIb1&z5&yeQkJ}lZnShS0j$-Yt-tDxRnN@cOT)KC>* zhpA!An;LEn=ie)=E0o1vQzO6`X^m9P^`28;UTs~i8nE-!wVYpPUB_M5Th}uhHOd;r z8iX6H8_3~C>qh3g++^JZ&du1(W@0y6i`{G^cC($>%{JK0`^f(vSkLx)-zxAQvK~^| zdiN@xGM+g)9ofSQ>0%$N$0*O^*5hDKz|ID-vrmElG}bnNwSAT{JZB+G>~8fuC3(Sm zfik>ky{KAPFJX&YVT&iKHr6ZFE2^dSs`VveUY^@fEkS@~AJ>V&SV)(8AM)0)ZCXIZn@4di3y4Vl&_)+an`wl$lwv1-{_q~*gK?|wa{8fdZATFK8u)blw&Qn7E_WXyd5^nTFTrb z(^_UNBhTf`K{Bls)(Xy7S*yr@wY8f3i>x*Lu4Q&oji7fjoC{btx~I$CzdgbsiRfS`j2+jc4jkmv?^E!(vEgz2l?!@c9Kt=*-WNYWmWOS z1hbkY5m*!H|M`H`^mI^ zvwq|JcV~5SNV;{pW``)N*-8S<(z#hP8=BbQ` zwzE%T51D4{S$aC>1KCTanSBN;XWHqOTQ$%vH>F}%9MzbXn;CHS5POI^koNl$)!x3; zzEpK$@3x_&53`4n&TcvEMl-@5p*pai+emQOGlzWGGlzUe*`xSn&m5k@o;kF4CJ}sZ z&neGWZB1+2oR(61tgTZmy>8>P*~{-pes#NkptR!I>Uh4{c$R%>Q*~S3K-%(#(v~-p zw!E>l_`yG__JD@J*YqPu5Fk05j`8JidJV)B{ z_R^N;NL$`aJ;pa%P2`)+tln3+>kYoyiqR|1C-H5X(Z*+|+IYS1l`SoOj^oRYKI{25XQ!PXsh#$$+c4uXM2c?vTd7jMEu^InNK4;dG4Bb=R`YGi z+hq1~uKjD9{jq-L{1?6lsDHClRzUoK0DEPzLpHl*nT*m{j7GOa9oT2l$THZyG367q zHd=G8J%gZl293ls$T1Ey4kW$3(VpK9Mh9}}XmsSfv(cGfz0;PR@)C|WjwjE4MnBSX zja<_E8~quR8fXk8UGKdWFwQjwlYSvHFq<2f8kd4O)EG+2&BkcF5WO>(A$~?{*`Lex zHd>3f(Hd{#aQucN&7=4|!$g8J{ETezEwaV8Xeho#6Y(u9e2Y72^|e^M9HD;{09nUC#BsUrGna$<}1<(*8k? z_y>)}KagG>K8N-XnuvdpV|~c{9fKa;41Tqj5XkTnEb$L)>r?Af(zTb+NW6p`>vQXK z>i&iG1?ATsL$-Jfws;Ip#AC=2U!jfo3hgtz1S`W!u*5&G#XqpcKWHQVL3`^5>j$35 z>I#0fuaGUiLXcfRH*vn%+RW2`vVP)Rdk;bJ8(N9qkRyIWEAbn0#BXRNenXB`X;spq zhpjN44Qn*WS$h&~#FJ=m?Xq@}XN+0W&8^+cUul`)TUZ&sg_Yr3SQ);BmEl`h8NP*; z;agZ4zJ-Os{)8=_ge^XVE#8AIeuFI@gDt*-E&f5a_y0y&5f6uARANWvBFGa(@YDi$wD8W01)1QZbws-U!} zcz_q8BD$Ld&{_nm6ytqG0mUnb(2rItqV=dq1);y^*(AHM^z+%$Kl)F3KYa7<%)GO+ z^Umx%^LyT%>521RjPFuTOz);w+r! za1Pj?`-1}+GivPgoC^-&A)weF(Q1Eq)&7W9`@^gDN3_}>ULMC75jdaoL9stts{IkK z_D3=oaS<%DbNCz+#}j!X&L{CCoQp-`QHvyAEs|uO&eIW6!X;oSmx43!RC_DzKQYs^ zQClRM%efpDk60v;P#ECEqKL>?6S@}iSX~SGN?i+i1IAMP!^+8`{zYLl?EvkeFMM?Q zuo*7Fy3Lj5T63eh&D>`mF^`3$won|};#b1mVYLj0a&Vrx)Xc()(2LDYupZW$N1+D< z^Cl=0?J!U8VY0FAa{(-oY36dQMtz-G0W0Hv&fgz+iH zUpVZ%6tidIgn|@nCZ9Vo1@m?(Z5wDM(Xbvm!HUX&#WWHtNl(F=nPpfpVhI$9JIy-d zhYAt+WDF}L0ba;nu&PF3ea{Q9+VyO6m060lLRXsyOcm^yKuQmkl0>M4sj$69n&?xunI1AV2Fj+E zwFNAk_OSl?z=|7!bw4M<@+!qj*$d4L<`!61>&-^2AR0&;i93N^P@wS)!bmA z)ts?{r&(rhHTRf@%_gkn97x*|^>7BP$#htdxp;nHGORdR7krUfZdSoo+h8`!s?Wt4 zmBl!jF}oBC`rUsQgBGSa~cQmLrjel#$99 zWn4I%E7v9|QZU_;+jD%WC{BHD0{8;YN6e?*)(uA&Z{Qf<4IG8uz;UTJa4hr&j_uySQSS{LN4$E( z_GmaRj13&O#IBF6kF9Gs>T!;vm8{Y&<--mR_C>SbevY-OpRwDqR`m}1tgW@r+2`#G zvSzh?*}j5Rt6!5ft8E?DtbWVxw7cwX`?h_@{?&d#BWR#KXuq_F>{s?{`#1ZI{nmbG zzqfz4KiI?eM|;Hn!~SHC+GF--dmI9p<&TKSK`g_Dg4BW{sU=0xY1D_jgk66rj@nW? zil+ohr1q3d9q0@?O2_DDI!-5?fxtk{L1go|2-m_zx|S}=o#sw=(Jsb$U94;6TDvwb z&b4*zT)azgi7v^tcggMy*THpkDXx<{)1BoyyR%&v*VT1%-CYmY)Ae$xuD9#s(pJ%W~N+$Mtjl-2gYx4RX0|up8orx?yg(8{tN|k#4jbLP9_$JKK7YXVl*D@}hTo$$6wM#f>C_tcaX;?l zsqR{_47TIrum%6WZ^bwNvwbUqy>Xt|b}D_5j=4VQi9bo}Y3yzG1SC0WMZ3^`PTK22 zdug*C7?0j}sy(joKk9S;O^*xow^y~d?38|jZ6)m8vX(3$$rSV!?O!##RErtJb z8GMy1pdH=}o$xm3gR7wn-UB`GerSIWLFapfd{jj>w27XeEwq)MqNiy)G{0JCeJ?@R zdkx;bH{sRW4gKz2=yQ8%AMJ+{_X$+D&!Mn=Nnb%p!x~m}7+TaSXi&F9d%6>v(;8?^ z_+^5-*WKsVLS{j$>azlK zN2jBae3RkXY@FwT7Iz^Sz91yLFeLoaU^s0G2_G8_clU;br-g*C4GB*OhI1lpA&dEO z4N4NQKrpY5=zw{2MZ^5=b#u(dK*`RtC3dl0g&upz9>$oJK_hXGZi2d6M;~J}O2SB! z?Pfy%TZDaV9>mTyb?z_}lMHx3=I|1X4KHH9)JRW~r?aQGryuq%EAy=J)Orp^z`uhT zbR6cpDVUk|qI{IeN8>?16@pbxo_eq5gcn9wivA81aKqjJW@Ux--=g$zD>fgBZcJJ5JOLD%pDrDO=GkK@LI|ht0f$^qO4?? z0PUnRFF=S7K5i-BRIrNgk~Hvi|LfV$zU}v0c$u34AkR2IP>G~N5PVA zXOii4dClHg-!>nDohD+gT+k_;v}SEzR!3R*kt+W1b4$2dLO` z#Tp53)^@H&h>vziEW9{Urn@B#)t;pMQZ64!Yx9%zyDIorrTk058u(l#Zz=V?I16n% zZ^&!DUQ?}=RP<)EGVj*-bsF=2u+03RhU`5_Nu+oBNb1cGUx}0?3#{g4U=7q%DM{dN zpuZw^gN8J=9m&_{B*xFuOPkdQo)D0{muT!LunN9i$$J>s*mmGa$F*|D1NZ+&c`ctE zzLUnYBTZ*N=~+noqzZ)is8Yg7T3{8&gVlT;SkvtO^gxJ@yMcaa$da-bSPc#N7v+ZL zEGfH#et4`UWhz(=o%xq3`ys@~*`S{XfmJ*JtmeUBv$}x(EGct9KlEowIS{Od3f=I@ zdAY>le=FGEGDqwQ9n%BV5q@%v7xFAvF0@MQpaR>X9c+sN%ta@_qL3#fr$WmVOQHu< z(WOvI#S@$g9dSA4mMd`dfrYUWv*^2^E2f*BII>X3fq9!nUz1Ua;AwleDO7fuWZuUg z^L{>{_hUKi0{j*+IF4a7!47HAJGFgS`BurZ@(HF$dRx_ShEP~MO`{*wUb!kx(@1M7 z&@*W(1tFn{FX>PRWn$!?~zs5707RHsAD?S}i7iP{ZV zf%#B?#pVmX8+P2pE~H&a%I0t<^X=x4*iv{>b19X2QyQgHe;Po8LSo_h#yxL~yC0A7 zDiMl=)MBLFL}&6`zJe>blIQXK=2!6iU@UeEnkQG_x?nEtkx#IE@*d6O^gWuFiE^8+ zKPuOaO*tgJOthPT0uy)-dFC<}xxH)Ov+vsv?1#4A?zJD;eKeE?(=ZxNL-^0Q XDz@2YO+x)8BOh4hvPwqe*(}SJx{5^koCiWLIkoUR*%R8XHRu= zFd&|+}97A#^s(^GA75OwRYI~}jz3VtQs85xRajSYy!Izgmh4#D009esXyZ_fQZ z_jB*feeS*0#mnkdWS@3ESPqzL$1jJ?)<}O~fweexkvdzhP@$Y~0 z%kw90IX2atTX?JJ2JX!J$LyuYuX?wO{kb}oimUB-w7RC8BkP~qNqew%MC<-Lo${V9 zglWzPr}D(8CEKbptwhYR1th~X? zK&!(l;%m)8af2BFH6y)CCNHS4n)qJi@$zXk##g|%-;DJn$mjZH@Es;m2${YGP=4-* zTf;!Gaq?6ZO4e!cS{y1qH6v{)ls^(UgMo`^j`QelH{hTVcCid~O_2M^cQ8xvhtiRfYw#Aa{BhpA0mgR!fyE#%j!{nF8e%Khg>S z*BP}$k#tjhc{~Es{U}%tbdq)ri_EJA#Kgd^Dnm*#padwu0!>*Cft58>MhFTBlB|j2~&t~HSl&|9*jckg6n=Qi+DUj!SnU-C^ z=fp>kv6%S&M_$(Y(YhGuB9mAKTS_(ZBo_BC8Sspp<@<4)gvF0HNW4d43gCxanss5oqv|D}Rb?#EREM{QhMK9K#jL7KzDPW7D4Lk@eHVvV~G8eQbK30&esi*+S@WN%+`o$~rh;G7Aj*L;sNJl}S*7 zMH2@p;>6&Hm$q%w84!*-+tfO}Yl_N0CB9`-jMbuC^vn=Ag zr@Zd|_27y(r^20lKzvBrpIO9>RJe;>+G#5Ic6fwELwaNJ;dY^!LVCSn{4VjF=;+eE z$HP6vB4*PYdc8GN8ciWRzjeISGzoPLR|FbQvbQ8$L7i}>a^xbdm5xhY+FfJ3uH!;b z%h@2`FPg~ML9g<6BNtOx>?OtnF)$h|Vxy8TODT!Y%<3rYReH6iI4B#MtE}`MJ>)2f z-gjVN&*kkZzVSv-%UB_wtshU)Q8S$H(w^t3MJ!^ZMQkNuUA+rCre{y+8l#YKrB_=> zXuL&Cp*H7rL~Usl5^{Vmu}E zW=XiXo?5$dB&Tv>p%j?!5*OGR{I_BJs6H|WJOa%DABjU#;QPcQ7^s*}dWZJhONZ~n zD?;}dG<8hPRRI%&k#nIP-|{$dqf1*tbvkh^sJ-K0_q4OhpG}GGi7^H;WjVZrLSaC4;70#R!)}<@|1VjJs%~!FWK7490pw zSFu<_jGyV~L3@PES{IVkF0o?nBzV_8j{aDOmVF+<`YM#CbeWprX5T>cl0m((u|25W zUCPK$izcK@7WX!fa7i(!r>C(y74~e4sB3beG~FfE?To_L8Be*BG{bLpX^$l%u&uc& z(wv>-_asI2BSrPS4S~v3rbY8Ou43~DRh zkCHzxn!sDM5qk-xjacmw0*hIBZb=wfV|-m~_5`wQ=(ygi9ZaF!+FTXct+!f3j9LfB zcLUK0m-1!D-J$4&4p!Qd>Wr-A{pUhVWM>m&WM`B2fNBxzIQbts58LvegEd1MnFR zg*}`7@P@&_d49csC*~GxW3YjL+;Dy#gTDD|-+I8gL-ztu^B92eg8-oCO?ZC|t~(t6 zR0M$eF#wWI0DzugE_#*2z~$_U_hTa2Be?BfDz|y!2E3hc$9S$+dpN80co&* zz!Ku%gAW=*4}l9GU%)%}CLiFpGmh|E84Tz)!w0~h9P|b42A4jhfRY%9Go*8;2?k_B zJO`6j1JL{ofC@LP>>wGM_aOnR44y6nUAYFEv_k!VODimomLWb1 zaQ`B`jHMaWF&hvD+BfS+C&Om|--FL^zfE?+{n`%q-Q4E& z9>|TC!|Fci`eNV>^~0n;HJEq8fHJ6m;>0%fWv>~8=L`Ax<@M%%UY^<13kbsM0szb3 zV1s?xI^di4Hmv?%_rwK}FLVLTz*m5o000A3HSWX)(0TO;Bpt^GZo4qRZ4Uz}^=a6C0Al#yz83HVE8v}Yx;o1>z;2DL^9PEYo3+cED zX<`579v~f_2WM-t0YmQ)P^iuTeSuJh5zSyLSHlAyhe&{Q=tB_l0`d*f-3tT0+G0Sw zI0i%uVZb+d#sF_PKRR2G?t7txm7izNlmTu37;wpR1hYP5K(_8R=m})o@ z1YD^~04G1a0b~BOn`6dd5-3Ueany^TXJ5fy~(={W7ro2_ejR&&GP`x8JD6C zn0f}l^JlQ{J3fo|Fd$h915za585<@8*n0am&+eb*E>zq+chEWmpzM`gg18|bKa+!U zy#hdQ33e}{eP>eg7_fBrfy~77o9lq{4Bo~CkB;C2&1*_PCpQq<7GzjCSc0$%;N0H( z;TbH40X`fUka`^2JkD@#bbckn`8U=8=qrUXLW=Dh^4|$ge9Fh}6SLv~5D(X6RpbSv zBOe31!`nePw0&wcFaXg3t;-9}T@24?SGaGIB_Yi{839N=x2XrqoZGBP{n&??uK@5jeE_LOY`_oBhxQ^cbhsF=}d39U(k8=^Edy>-v~aEA1r^N?(&8FMeF-l=Gy$`_va&; z3)$=g5cj$exF&@6zdS#h8=b+wKi|EeO@?TVbp5|hldbce`8$k%%|7|#wf(S9ezk}G z)6d8b+Xb66Y{(D9UdRFb<$`O38wVo=TM=xFu>CuH`77Td7zh@ExdprJKMEJg8j@$! z{#=F;OoT(>e;oD`R;cHp-pPPx^WV4K5$uKkD15Z$Ox5r94b*vWZf?@ykNNtag^gff z;j3-xainVBnEpNZe??yY@tB|ajn3YTpWx@g^`pLjED!$}&L7bb!A5=>^ii?4Jkp_6 zUU2>Byn$CO)ODy2+4*Qp7{{N(fpZ~S1Dz3TNbmnFyWh_obWZ%RnYZYjXR^ufHF)-; zm;~~9w=Q({p+58uovmf}ew+8F`H^jod~?&c53y&UZh0gqj6J@I2ZTNE3~f<$=%Y(- zo`tnq&@O=X0v1Qa|$i|VD-q~*?&l;?!9)v!lLgR z0e1?$z`^z=KsdULwSB(%Qf%%MBo}a=QWfYg?8X3nC21g>p9RBYF!qIH?z=1wS#HK_ z5HCJLKjjbM=YQY-aL)83ML;8fa z@QKt0#AC}?e`ea3aud#XJcjRV+T+Lv>%a9KhiF~^-unXZ!5?csqO~BJ9)htWv~C1@ z3zkOZQ!wGb{l_y}8}fmWFZ2-lTqusV>_Y^QO-L}h0=#nWVC^{UTEF9f;$eQA7?1#c zD6~(o?+^{YH?%hGchP`&WD$g>8~g?fen0e(;djqyf9JuNl;>UyKznS<&KwD#2gmCR z0bSoHD2bN*-8aZDsetw_;=@~|O+V!aeh`Q77y4M(C?>fT6aDcXtzoOdwIiRxYaa$= z$w8Syw(izDIM2H%QLJAn*;w*>yy15!zKVPW^MZaCj16Mj1Nb)_@AvW+mJi6US;X4D-{*kek3d-n zg8m=!m%qY&GV*9AR+mu?PW_JOTd+TA|Mo44iy|Kr`6n#~-}@7!HvQ}`xtqQSDzLjCc0!A8|nJIv@_8bTHrn`m8}cka3O(xbDUU zs(P1!((6bt{*ZQ4jvy>FcN63>+Aj|vpWj2B9?rk1SD#6JmtVM!zk80uIbI}P!1{bd zBTGQNG9J8+lLhtAPeXBxvxP}moq_b$6OnD89?}`{2E}2JuZ?5`(Fpm{TRI)Z#wTo{ zAL9k-v~~7nssCn2u8_v)xd_r3`Em$;BJ{P#AbubP>V=jR*q(33d+SiEJ zs3G}zr4QrPqX5i}z%~p3@?*Cy6dyx<=-mQbB#LW6Il#&^yd&TCht0Cpk6?VCAH~&? zp29wF!T$9g0Ao2QE);%X({3)b{LPL+@pxoQqjzY`BPi3qe*f=2BfPg7(tSVMk;sll zeOvF*{ojT6_rCvi|Nqa~(SPg%AowWuw+M|OBnP>Mn=5vq{|=1*jc*Z-2v>yj7Ty1R zul{eW=U>~42gebsT#BYkT^CZXC+n1i*L(vYob?AB>rx{rdCO827j1(03?*@~`Jk{{3~8 zI>9_z0|3b1+G@kK0H8X6pRWbz^liQ0x})z9QpJ|bTR z_G4>=w*01F$05D)?_8*^0_F97p7)RB3ieI;QGt}?OV}K*T2&&jhBahGvBx%JJU@Q} zab1S-85Ea6{&&VH7-xWaUX(BYk;~oNfA9nLXD6Hm>|Z*u_`*s_@HY*v zL#p8|Xbd|9dT(yVCsEu1#TtHXDCUD=A1L;PT|?xd&0N9rGXQM0XR-jG{rdCuCGWTQ zTjNlUAyyFLiUS58G6L1ABy6k~(G`n7#634o4qFd^`mlJT`*+&^xT7^ex9{Au$Kdf% zJZxMF;f-+JqCL8!XVj0@hUz0nVO$yu2kFb78;nVT68oRAhdE#F?11I&k^@ z^WV`I@dL#YIXYT5`yt-=qpR4Mu3mWrHkOU{z*Y`{{{3fgL-r_ehj_X}{5&9@sBQz* zCZgC+rYww29ofVm)$yP;#EZfB9;zAGlBF$~MY#RN^LNgN6d08T1DvsqAM{0WDHQue z@mnn2A?`?~e6lUU&?AP;crsicil4NEa01h8PoSfI8hAk5QFA>)0gBa#zzoD~D~5t} z5R!Ye78EB(yg&`@hadGP|0Mn>mV|J^?n#IvilreLDvuTeD({m4?$~C|0>#mhp2600 zK|Fr!4G0g_p%h-gg>r#|rTr~w4shs2Ita;t@q;aVw(gM5C?1Jo&Zxc#;g90pC|-qK z=hnEtLVq|9ib10IIHED>&>XgQ2jyFk?4UdY>gR521n(o@9{B}tEN&2=W`oW6B&zT7 z79az>FEg<5MAq)!-)ele@Y=e=@7jzu^95*Mpx7#^hx#E$Sp2`s|5jeGF8nuoKwP>X z?*f9&?|;NHJzm)WRKK%@C&C@!fat!}_d9w*98irFihXb4&~AbYg0f6tP1qcEUR1L+ z?!V(tzen{gNT;Ij<3zvbwcxy1c&L^)TN8kn8t|^QSVJ#< z{xTMuBlx8cI|qchm3KigY80ARN)p??C?}=09D-IIQIkg>s1I zLp6WDJD-2T0qsqsUl8up1CyKi;4QxVH13ahy@mUN%Vtg*(F^5eyWx5JJKVSCf%8VZ z(8J~l5T9?pee`$viSjdB`2uui{4N&;=R`K6|4VbMjzqfNHs5_S{=Eh7=R2hFAFTn& zE2`Z?XDG@^l&k!r_kNxO{*8F3`!4c_ev3}i{$n1%u_(rmY&|58DA!W0@e>XZF47~6 zy@OcVqjL%67yoc?LfocZ7KHhqT}N7Q#h&Se~{|Sh%~oy0JOM zKZA?%u*fz-^P^lWmbY-O&LDQ|?=z6xpgPxI^PxXz4RJ(spt{2!eFzuWkMg=G*NEmu zHKT);-*JaHV(TNG45k^S;F`Q$A)5J!|#MLH4j@CW{|AMMu&I2W>65O1-%682-qApQ0aVjbu= zF1HK4H*FNS7tpzY&YwS813HJXIu*$%T!Y;iPC#GXj6D;T;O}F8myiDmcjRy6L-|8; zjm010w*ebE7g4?u^`Z7Rdkf+Jk8CZ-qv40B?z8|)N3@@1U=8Yz->@JaZs7v&sD3r! z1QCP>Z4wCc+674PH^ZWBpO2V~~&c;+YbV%XtdSPQXwsjDH(?L8y4cUz7_fN4ZTOQw+3m2`nJ~e2-cZ*z;$Bz1>a%icI)m2pMRB~Ka17CZ;;K4>hH1p8La{N zKIjg03%32#M?A6s?z*XghX;O-58B(<_8rG9eU9olw(`8F56KLoJGK@a(eK420IIwJ zsC@8StMGue!)3qsl~7&r&tuTv=(|_fV7?q5>thFJ7y;V8u}$26^-19xkPUb@-wj(k z->CcDR{aTIgx?l@kxoIsr9$$wB_F6J9Q{5E)%v2A3Q)d zANpM!I_tJ-SCCFZdIZ(mAY2h$5&aSVAxEJt2IU=lUjHQ9=xkaShD3VicQ~SXQTu5vKXlfA zkp4gB+}cOK-na1h^^WlRwf#Eg&z@0zM{V%t??BOSK~bv?1Yq#}@8y5I8NLhp{W$a; z%E_a;_&=Nff203bI{lIU|1o0`*J!X+KL8EV|I_sw2!GTNAO6qP&%8zTKzJC8GrIrRDwYuN|8HE* zXqk}CZ_ypn{ej|nS#lCa68J=ZT2AKTCKGTl#DuWtsztH^1|#+Ow9K(fHtk;vZEY?$ zH7$WQ>#7=Y%Dp(a3?Uw_r%PjaJujQ&1h(gUNt5%Mbsp{knq?p zn=5!3xVNMQ14w;vcwOqHd8x>S3#5`1$u4(Fb9};&!12SqCVf;9|1s{obGV0Vua;>i zZNewgT{s~)-1svt%)1DQ$v=}F+;KmEB8K_^4v91Q+w(DWpL{M7ZfGT}-i#*iB(o<8 zA(NS3eayMzey~9gdk=Y!mfXj;W+~FZ%)0nnB}R+T^kmrLhj^6(xE@S-=WNKA@GMed zI`)jLnw>5oG9GiHULrg~mw|6*u)}M&E0HkS8p+aj3lnKA+GE|0Z&uT!m~8M>eQpnM z?(pjQv@I1c3jbAutVztG6sMaM^AgRpgZ8D2sjIPy5raFY@p}BF)y;yWryS3aIEhbF zH4LawNV=8U^RwsTE8yLMnU`R&jdQImpncHWS)$eYnc{)NUfY-WX0AD`Se)r;00-Tq zXl>|52UYywXKOajEiS9hO2HR#>FJF)*S5V?I?$_ffRKi+hc13%e}tt)OFyL}^D?Q9 z9ADpA>?=n2LK5FqLw=k6)r@@ql_H?E&+r{g}_}tqTJZVYX zV!4lfSjfxTI7+I`JbmZ08XVc0!G6uIGtY^W*7-BBWP0zCw*RGAMSRz9OXuecl;7sj zz1=y`7W?g*><$t)1}ZrQw*FPpk0Prs3OH&dtg**qi4UmBsd*&jyrh%fW4`@hk8JGD z3DtnCsF77R=g=x%%@ah2Fl=tR+D8~TXIleS?-7v2?&uaKl5yQ>caGf1$U|8rW9oeD zYwinjp&*@{fjNL}f_k1_xu=9-I!N5y)+a9!6Jcs&j#uEgGw0z&GALH~Oj$Rq&u7Rs zMwh#nW)SP8kKR7!`XNk_jM>7OnKZy7wIf~efIG!e=_rB_=j-jUiev)EUAEEb=O1=E zesr!X8&h^)0#cNE$0=3kcy0gVaJ6nSq#tmSpEj~{itKq4Kxv-AK#%ztcn zB3Ny^-lafQk2|*>M!55{#Z{p*30y1E;2?(FBCxk2qUSSvGk*qgNT}&r&LO(jw#+{A z0o~MO?UB>L>xx}u_{L;jE+>n*oQ+Rsh_g+so7v&-NFgv~A5wYu)kP82Jt<=PXa=V&$kyc*7XGvRC(5W|972B41TZh(^s;8b?Si(y5 z3q_}?Np1`om5YeKW#wf3+pmQFvW^(nfZb1(nN;7|TI$i=cpagg8*ZxYh2v`dr8Vt5 z%?Xp8OqL-JGFRXG9Ap<*+wsj$v^4D|acupl)u&IiXD{24RI2j|e-`#zpWiOh6m=$? z@2X~1^@q1Yg1Jnh?Xj^GV=1wDI9JqTQt+;x7vWImauwdijr&x0mmp3b&2I4qeqKYp zGNu4tW_SNbc-d|DBoDm99K%a74`j6UTIOU@d;BV@?Y%k!tK%a%J5uG8)jpHc&O_AM zd8N-L<(_5;`Y$SI)T}6ZA26dvI*0ke_{^(#>b7DOama zuH|OsT|a!NwyNhKt_%ODNlNSl6*G@Zh3N7VS)0lsfq5P)obDx!^G4U5EAHAxdLDR& z&s$lR(Mv_sFa=@TpK(kWs%a$O=BC50-Fa!}QN{^EiVt|!@~&E1QcI6qs-+#6I_E@h zh@aDTtyryy-cjtI?q~a;PJiwGoF|FvCm(h8u3JL4E3#rOcJt76zh6yyk@$tSx!CLN zVnuqIdzoF&h|cn>7XG|kA$`e0-eKbV*%yvTsubC;){{)po!C8~A(kIga4AfL{iSw; zyxjR9#`9|UC+Nu=*bgp^g#@EkJg`mBRBDYs3RW_^Xu@Z z?N`Oa_Dy?9V-D4r+obQw_oeAICf)?YwP-|Aot~%WafPiFH6j}rlO+i*WKz-kPPVC#?26g>0>dxoovg1m87MCK z^=OvfnN0lmWImSs=6A+c<^6zXL*k9|If)Ewf~W3&vo>>yWc%PCiLW}%!+c+5NK~xn zQl7Ymr=Levva`eBz8!Bx?&BI0US`JgrtRCFFr1ZsfPhNT=Mv_4V@P6}nFcJAHf)85|q4Q3d004usmqDx9#471Z7ta3*a}&;y`9A_tjj9kA7pJh1)4`vU5uoC}V8W zg*+?ENgH$b9T3C+nif#38dc3OZU3epGZ$k_wVl$E?!>8uL8ADQ>K(7I-3WM&%YH73 zfZ>QhQ>#h7M8+iXM9MbJ%RPb|YsH1;+3A;E1fW#c*1cE~6uP$7aeF_wMxBvsO48l7 zq9l0faKT(5X-ppVtJFXob3F2M_g(cvEXm^ym(uXplrTj&Zn9_g1qeiGrWNdZ!NZkt zm%3A+v2|QjV|qTf*LroEsoyoNAb&zVJ<8d&2|HC@d*9LSmEbp1?B~=v^XEmn4j0D` z+fvC@wh!er+!L5p2N#XP$aY7)#OKXgyKAt)b9r}68i8Qi!`jDPKBq!@wqs;6rcQfI zEBJKOr4QNbX_FQ&YGyt4pH9i^?isoOR+b8hV_pynZdhxRN>ybFHJ4Rb_ZVerjkkpy zz}p=Yckb@R`dx-JAH<9-_(Q0yotrG5SX>?>!c$+W%S-B|=1`L`)c^xuKInJ6%`CoCfigG1&ElMA9_*ZOc?jn z?_23azFNRSSC749SAiS-Q0EEDLXX8Rs}C>dO7^Zv+Mm&$Wn_pD+VfJO?z4?`5Y=VOts&f*-7k+b{xNRlcrFgh_qL9QkE7SH+glIiSD5+0z zds5J=)bUy89XQAD+sLxiY2I?GJD*kJN-)M)_8KHb4}3WnS3)!Kq-NcjYQ|OXqo|pT z-jw4Zb0Xy;9NN@ik)|`-@PptPYFQiiZ(Mru2`J@DKViB;`h#KpO`flT$BpH z6Sbh)6Q{FcueM)}+J^tN)l$AV-}tdU=6M&P^}@5sje{}o8P1)P-4k@v__Ou9`XLh8 zMtrDpkM8y*BNeO3$Y_-D;HNe<8>f(J7CS{+pdL_mpXaKqgVIh_T-%pLG)9cA6WZ2Q zy3xH4dx!~Agif}7eX>pV>!DB0B(>*9#%8+orSw@?ySP%Q6+#J~4qF%c`Y?w!wKVTh zVn6BZgX>SUFm-Q4SZ(#jk*O0k&V+$|i{Iv|J>*E!$vW*xKT+{pRhVb!h!Ysjv}uU> z;*oC`ZhCSiU(DyQ0jWJKL>HPT6&1|;g^E1a25@I+NKTWaJn48`SE#nrD%(#j`T zMzzRZ_R-k*uR0#-Ume)LgTNq)0GeKBn6j4Z-j6TWJs59O5(;v!Rpp!rHd?ChrAWx* z@(Np!@nWi&ZvLh~L)~yj`7`yC`1IbyhhRTXY=F64$6%$Y%ky@*qT-b+UK9xgrCPquP94q<|H~tZk{Fo;p({{{w7~#{Gy(M zn^VVR_Qv}yweGyxdP3hVdP!y{-)Yv4po#l|vW0e5_k*O>xo+5LnG*E{KBghY^ezap zMlRqB`Pg(UEzgr|$mRqtpBN3cjaySVA`*QHY~;p~^CTzd)(o>uYh=yw>K%F!_S-K+JmsgcZo+T)Pe1mA7TFsu9!?N_h7H$57xO-ADITDpFZQNP?zMwEcRYL5E-RN z@mXQuYoL(gmxnUvZ*$&?ou4t}p6))R_j<}OI=)0MDLV1J#K!AqN9-PQH-2F|XOSvs z?B-wnB&|GbEcWFW)lieFL9@Ja*thnenW4-;yvlk#8Cd^^oL;rNB6yb z*-;a78N=w~D^fisa`t__(w=eMVA^{cO?*p}3x;YA+MG%47x6fjBzDKtFqAZpwcSV! zQ#dZi(soN$_#$g%16!AjvF)RyrBnGb7GbFt0>*DTg%*XZ#Ny-MuisVikYAm*@p&lX zFDtrRk0w5=*W$f&(dh>YuC^^zF0`~eFG))>QprR!*X8)`#&BItOGNvZtAks)< z&BW)AdqsnKEpN`r#$f6`v+)NKqeE^VeNUdq$Twir>R8*u_82^wv8KpaRSY|-Q^a~q zMwQ<0R@-OaVjNvvA2XWZBF*Y59;Pow4oI64i@>NnUm5C{M2^4%Kf&2i(>K6kG%7+!{F}{pncN30L06bl@79 z&n7#~4*1A=X6LRrN#LB!$>TnxT9a~3E9PTAanX?oK0&{rDxr{+Mkk$VVv9=UtQ8lb z*Eip5?%&H=(VscpJDM_0)q1BjDctWt(7I@cdLjAQ0vDM#Je=|Vu_9jYKRdV9mPIBN2Q36r*%T_{MMtM((w_e6va>Qx#;46=|#yj1O#j@_qp#hrFULjK4 z<X+IV5BIH$RfQY~ja!y0O zbXQ}`gf+-wR)4nl(u^}Bx~2STk^JJN#W<1kL^mFl95=Y)yuW;pc&ET*i+e#@L|7y} zW%v7rLn$KlyruS*>Bi4E-g>$?&=D6Ld*h z!DDm6OM@HAJt>J>AA^Mc=*FsT`HJszIaIahUa8Qi(5n z_W-B>rS_wZj13BcyA=e9w~;TN9rAhbwm#tU>0yoWVwz95@g6*UW@~aWVTH;%`E09>>C-%g3CsLZFqNp5iO#_>P>7$JKy450ehv_G}@Go<$Q#lf6<}Vl5-5ksmYuUcN zzJ7dZJ^s^m)*8Fg0tp)G0EuH(+Zv3w?PR(?u7qnDTxEXB>9Mqf?EF16TSQk}A5FG>}{%}lQ5tliwS!J=Z*$xD`%)fqvWQ~U`Ei{GFv*L$DC zjm1<1YyBgJOI-_W7h4$2YDH+Pm=`p{*GNTL_^X&dW}dd5Y510qEmC%elC!g`BCFtX zwOpsM=DuC7^4cH5*;97RTg2eVmu){{BFV2Dx*&^O$;T0C;g{`vv@{|t;tPy zeiPJUTV>)djUQJ$VX*ytI9}U!yKA;YuSAo0%ym}889FUxl1@}w^M~+WU7=t5{Fa=> z{0;3@LJ3(M;V++_D@pPQI6-fNyH4X7s8V=aKU8mTz3RW5Y?_tlR@`LxbyR$&k>ArR zs5ILAd=4kheB>>AvsKCml+XIzAFgn7hQE84%dzegDZriX)h@F3+^7MndsVUlKHNDR2kQ_Cp2<;wy>hx;Dnfa`z0&yz^QY~ zyJs&7j?!(k`{A>8ZjenyziE#kZT6@nKdIiEUCXU>E>KqICH?XCD%Ots(WXoli&kp^ zIyy*UFYf@uaR55j(yhHs$j_>?Ayt7eLD04(6{Y6Q+k8t&Efh<3cYuev}-R0 zoa%8ee{CbipD8z7+;6*(E{oGTaYRqjC%p7z!bRyjb~LhKFI59pSdaSc*C?y;6FBQy1<6_j-Ie1T9!8xBKx$l!ISNg*NL)zWc&i)sS z0=6rak}fZfP#mwPT3eWIvAH{S;`Uu;LW){#{H(E>M1d@u1kIBIk}7xK@+|67nP-ax z^0B<aE&L4j zf`$*XdF@1`h?w^GWLO>Lx%TpKl4f$+{fLl@%_@fzyHaJJOZL$W(v9CHpg)|vp@Jb+ zyPOkCjE@Kh_DeMgtbLwVl4-x9s-A}*oH(1DFO`8H zCDezX|5AA1UJNFn^8V>(yq&q3=ZBSJH1{9do3yw(jpt5iyUk5pYMAw6>GPG1RovQa z4$GxbuC_>J3ZH5&BFyu0k3Jh&d0wi{Q=x0iTUZGU5`Cog}r zQvFnBl3+{c?9G?&MejEy>9-eJ7v1k?Xb70cGtk_Zi+?w}xRTuN)d$8ggQz9R>eH!l zE*_TAd&I72UG6>~e4lM%SrUlcD$E;}!9+%8*m++XcoX3$m^ZwbRQ7n$^LE>d%h0wS z4|_>$$3;0Td94U{5B<~K{&I$zcQms!r>~YVUSzK+xT00-OqDfg(>tV@b4*YIx9HKj zo#}_A+(`$Z^`Ypkx5rd@v?$N|sc)LX%Bi4=$K)QF!~9|isZF{C4mz@w4PE^*<+yqt zc5*z}W;_x6tkIV+-mvQV@dYYr(gwPotGfLqgHOz6iu$-rjb5Hj>XB~3Wvpg;^&q-t zgCdiH#ar%eMdNHDtd^z(p~?Tv{S zkrkg^CG<}Q&o3{g(FrN_FJ|Q2eI@eod8CwT+f>H0F8o(dc`lk)*n6HGTdj|wx)@Gt z`a~UeYFhC}t9u{B3Jfh0$;gyWxb0Vj5v+F{CDqF-2g8ZIQ}YI`JF^@J(C z3HH}LX1O>YL9#^S&Nwcgj({)&dzae$aSk8QVtPia`zvT z(xFkT53B7z>3{3Z&5*cPT%(QyTOlxBIv~uYXah7%dFjQdI_=0SFUM9&Mmtbg>ef>nLa;u zXmnL@fjo$GxwmVo_x5(g9lQP96uZ_#$*SY@HT>0I}cZgccKCmsoHO#+NX z=_!NKa)y-!XI6jiBeqYuUmx$EC*!G8e?RRR_(mT1CJoQtm*`IVm{!Kq5WVzt-O5aq zXFPS$a*%w!=3}s0oPqRPDL)5yl{027IeyH|=b;SiP99<5ki@CzB*6^eh6&e%&nJ|T z7?}kM426f^OT@oHN8cT_#0P^o_50Qg+XK}uXZw6;=ASKImtb8o$}cjK((;Y5EG;x{p?u8hl5sNy%<{w4TbL&_=RW98QT!Z%+ORm2^azU*etF5-K* zqa*)YH%v!OG6EBgAj7MyOm$z2t$Uc4S$H1aS)ad=Z+~moy6r%Vhh2)%IYUSk2M1by z)rca$)%~m8^=)#gLJk6E?|LgTLmcm%JoWLSE^Xx;r;EF&ExD7)wgm!m7(5#qwk&>U zB$2a@U!dWL_t82%zJ^w3Qg%RWrep3!QM+RpAwwIlmc*xeN5{^7Xm$y6Yg`q%p%+d2 zhKg~!E~R1v|EXxDqZrlhmEKxfvFir68YURzF`3&eZfPhsC#$^vqNu*lj#TE<{73V+ z6Jbl=XemcXNomas_TA4X)r`sJtn92iwX1HKRM6&Q(Kyvc^3KpcrtM}$xxn@W?SxrK zRs3rQp9hB~XQw>cL}3U!fKoy0WX?8Gel-*ZSMBOg>#62eb6(gu(}vc|W)f3QMQS?B@;w-y*L8LK_%^^xujf{M5=Rf$u6u;W z3@c|9wJ6A6uoStoX?@esy?tu6P}zz}s&(~&SU#CxAEqu zt~@RxP|@PDB&T`g%N9-;7w0!q8j;UHZ>JhOT3qb7XK{ykdj5HhVz?EX60HX}v{bUS z9`UcQ8mk)&6tbBz%PP-N@2{L1pG{Xk#F|(>HK<*N@5NL}_*EqOvILCxic78^HP{>a znjniZWu7_kg6v~$6{3l?BfDZtFYK;K4S97B`gwP1^ek0&D9}n&yAWCmKRA3^g??g5 zF)C}scR?&afpno}j-~shXlqQIh-WU%=l(`Ey&FD$^lry)cd#<*%LdPsXUo=1QGRkx zHnQbUPI30kOC`JC(n%g;pDSW_X*-sL$xWO2av$njoO;Q7?8P+08w zAaJ$zxmOW*QODME>#URWyE=yu!WREEN~y4UXK05kjHz`hP2=8)+%}|)!DTQgymPjZbe?h5UG@`U! z+>%Ge+j&V}O*`w^v1o=XD*aCO&V>DXlv#IcFG3L=XE+lyBnn(~ z8Eaega6hrp=h8brMR3^P*ME$I&#cuz4L{yrm76tj|HPo2k|5Nd3*)m>7rw}}tE-CW ziFh}(gskttt#w&z+N!yFK0Vf>jmkXLc83C;#PPx?O&`W`u`yKvJqBn4&5ak>SL04o z!!x8cq|DxY?BHy8{Dq^=gh7K2Kx212UrOeAQ-T$vN1~~b+;!^jSo9n{PSyo(pYD1_ zU~g9Gum37EbQmT9b~kw}jF^o)lq50Wc|`HH#MK$5z95+Q3Wq<<@7#Xegn`!9=T4Bf z@hzwkuDnjh#q4BNJ9d4EQ!wI+Og>jf3*31H_uB4b$9j>WB4(%|z)&zK@;t<9ZQ$Qw|K2N7we^lA~ zq-m4IeqGaZ!$i1OA}&PSU@FNe>)zMU^?aOndmlx^B#EKP9mltk_ku5D==k9#Oh{yZ zpdr9_WWLPX2Unf=5_6LpzD%Gkp-yj>S?{~a%lDscvr~;Memt?0<-F8DLN|Bu!%8bD zQ;TsD5svV#rr|lfW$shHE(|JRLiLpg@R`k6-7de*6P?G?V2Ba)4mW;~FVf6=u;)qd zHCjv+O*3S$V*BHo-4e$r*H7Ol@HwB7){v>{);X-Ka$Fv_e4qWAY(d@^o`LR~P962z zqyXyq&cZuAx--~-DJS(riEV$;2U03jvH$%~iDhWJYT8#s` zg)67zSh@;@3%c528n6cFud6NUnp%6@QYe`%uvt29S*K^{VLux@(NcUevt6I3_?r?r zwIiwdx>1M#vpC@jbtkLMOMI_d?P|VyZG#31O)VSmIieB!3p<*IW{TN14r@EG*`;F& z@Y=10NQ&Nk+t)b2r*$KOS%jFaD6WnTb8%aIeA#6oY5P4k`aDZPjlq_6uEX=Wjx^J& zkJ2-4f4qK0WB=C?_5cT3EBgaypO2+cT(RfEr`0R z6`pz2aU$A2$d#n|#96-Gf*jTgHZEp9t3g_&TB_ldfo}dG`H{gLJkcSOsh>&$VO<&=7_V@OuKTr@6fhF2b4UBt5skC!Zk z)?#+IzzGmYi+i5g<iSLu5_nDg z=B^*TYEOM#B|4B+OB}^*UtXMigYwuWiX^7aouuklYB8?CE{;M#wRzJXRoE?qvW4>2oG8a96|5A1tpUy(5 zv&^cRGZU}Qsj$qJd7GXzngh=(mWJ7(0pc+duzx82#<7vB9(29Cg<^^G-@S)9jx3pi zXuYO1%z!h$#r6d%mWJ{te3m2TZeeD(NO#ZHgpbYVB+ooGz9*6Jj6cVn*YJ!;Y~f|x zuIpLWW)3d*4Qjs8OSkE?uD#%noAjTSm3hxzy!3WpiBgWhIU6JOJi7GrQX#LE42NK^ z!QDPnXhU|Sq))4FQ=M8-9`i~Lp!-6fK}>1;;AFWwzoNN;pU5Gc@N)-UK3J@iUUjZy zKXCATT&&tbmo8OYmPtj{u4TLpTX`*~JZH7G6s>>r?J33l5 zCA=weCC5ANYFCVN=^ke+WRPEJdS&MHh+3_-dCWenCZvrneAh>pQO;d`{i*u`&M%Lu z&Ts^6XK7l#wQrZU?7aMB*9?q&aSnx%x^TN%Bon{7Ic-))d2uPQF@BVdwY9$nCk+$O zA_?o(V9`V96V;KH1W0l|8taEUl|MG~y}VOslQ!wbr81Eg{$b#?!$A4t6`UR>s`=@;& zz*|e&*mjQ?CAr~*CnIkI6K2^tn)^xxS3+)FDCb87%*~rwF_lFuyzO<}-_+7(lJ8XO zuk;_IBqVSSxLK)??Kc38P??q9`+>oYs5qq4Rf5?lMD7~f^V8~T1-fo^N*dh^bx*VB zSK3vyr0?nzkY4OgD&mSNBiFlSdt>MV{=*Brii7$huQfJ&&q|-XOg2UDw_oykV|BNwzB;Zu?vVb$AjJp0X5femlS9JN*@&Wp%~^=mq;uIs(yjn*<# z?shX`+?!Ckwr{=tz4fO9@PCPfmKHDX41V5&lkQiKa;CbQG&JkJeBGulHJBwk`-KE! zZkGzFd%11N1HZk6h<6nZWO@i=tVT^SpC7o>AadP z|GP@^>C40;BUu-2?{a%{hNHav%vtsjbqr4SE9rV=HQd64_rkrDi<7HL4XXm}X6Brj zHmd?ytA&J;Iw3AzgVMFFBQ!WGbXz77r}2m0+p9-jdsas#VeAcqh?puZn=&Zn$Wo5# zOVhiN_zle`s+X}tL?!c^hfh4#CpUqu78?(V9n zFTebZ?TDB$)4ayF2qPAk#+#HAt|l{{7O={a^}T~vRg~0ZKf5&J%G5-v zTfa$r;(+n!4Q@ua4hP%H)9F;lH4C2MoPT`!7}>U<#FtIiC-%&4bJUZV=qB%w3Q+U8 zix+iRG^tA%*tX!O#a6~#!c9sk}%rt4qzE!HGWnZMD&&|zQ6@tcNwzP>mz%07Mm zOuC3+(VmI4fqit}(jKJP>bA#qijQgSb#K=ET$-!OpEwXPq<@*r&a07(?)+{A#_K7u z1v|!StBNgM?|<13)MW>=Ua|!%-CbOqdX!e@&pJslarDZP-gf<4{;jSt3t3E$k^JA- z(LD4J#{HLG-*?xNs_r^(s!JWsxQzT9olGO*s3MuD)ZC3PA62?a1V&Bp7C#ZdG?vJx zBQ80#Ez>2VDND(Yyf7t`onJbzs5ud9r2X=ZCxx-@rGcX`nrCpUU34apRE{j|7;&0) z|10T}clfQvH$<9EYjDnDOq+$87N|nQ10+crP949R)w#d5Fi}lG>ubJKuB<6f7*p(6 zeCM#rWog;)qq27NOxCKxS8Z8*D6U30nPuRn(3fc7Bop6maq1ad->E_^N6F~(fO9A) z#dH{2VlJU3Q#8hRPF+2P^Z#l)(|9P`w~x<^!5Cv7%hz# zMbIm0265Lpg<^nu9lE~=KuAp?2Eh%Xs>lCG1hodqtkjCCeJa2HSg{0vkZc#l`@fhb zR2BkV&W1m-}O6)IgN*8{0+$6)v2hTtf?A?85WO{ zjYTUx+?|adX1<&TFjHNlRGIM^8Zj2z`Vzv(RDH;A*NYvjT3~U zW1O5{UXdmXiS9(`c>LNq-^~`;(HY#U3o~(LiA4LmK!`MNp{W{*-G@zxI{|bH>`iFd zS>ZvrFIR-mvg$9VJ^N~JQJPoKXs^}$=Wo9fa(eHqb9v_&!P`edPaV5^vUwy%lkDwK zw$sE5DM=8}IH|eD?i>%?&ThxOpEZa9tqS7_ms7uu>AyCQd1m?aEH5FZPedaLTbks6 zfi;G*dj15yzkbi4XM1s|6goAO^2NcX?bBb^)jJ^3rr^2b&}Ylz%XzUhMb}Q(w?i0D zBenTlqw``Lxp4#hwVia0EF_IibKR<;vCi91>m5tMhb8lpAdv9a1$l;y@#4o$uEuMB z*t0>zJw61#r;RdN3g+8Io92fU-PV>0{3qM=M#?f!18%O3;?tQWZN;wABy< zu+%K;^>{55#=NC$b$@Q;eEv{NOSz6I_Hu3MXgg?@osHaOuHh;x2%?wjmS3P6OiJ8l zU%Zgsq%MlR*_zptA0sT3{xYCL06aQ|K5wx57zHS2y+FWt^$kKAmNqup{7l&N0wOo# zQ^>6WV|SjY*CuJV!v5UIT#fhBURoFmfCsyP$T)8dM{B@_1!elpQ~DP6Egd~yzJq8# z?d@fV_41gFS4s3T(O!m+z`TDffQG5gX=RdqPb4>_xcH>*A5qI7)!(dJfz;c1f2qCi z6%<bMl)5yQil7jd|D5-B*89t;;fi1%kLXb5HN5f28Q=BB5hXq zMDCxKMZi@j^WOoK1e1zcLb@G=EE!SWQy9~YQI``pPw8hC7Yl4AOtTO3)+H@$!oFH# z3ZB!xV!8o2P1T5SgLb#A6j2ZUmZ0lqXAP{DEqLx|yZc~9cD3mDWbV(Q)i{WuJ5#h6 z>D96}@F&A^d{P`<2wyLr6X1XNeBnFT?M^u~|BB~s)@aZ9N-Ee1bZX5T*;|W;`yDCA zVUF6$$pd#8oDLc4+B9^Y8-5Z}Xa3ZPsSDo)_xO_OR%)G^m-dQXgKW;ur0vhgeniag05`ilc?(7!ZTBvG_B@%$F z#<~tOgf%NIi0FR0H@Z@xe+qN^>I*r@z#g(B-kxw}v_jV#C4LKA+w|M-!X@r4A0E9} z*xKYg*j>+z+i%NvAqRtx66k`mA9Sm%q(=Mn6VsYnid`6B=QA%B-!rxj?-vKLp^WYx zi+|KMlr=YwP)&6{5ypwPpe6%H`@R~1BiIN};jguQku{Kqp*(d^C42>q0}V$|)ZsDv z_&A+Q3}f@N3gXKxVBB-gvj5`QZP;|38%cGGHsKE7+bl>PQJYaOU1^gxVIWsQMFiY_ zhF~Zg6U0W}>FVwx`RQD)-rteIa$Ql1O>c{>8N5oaD|{#s8i_P`xAs7s?TT?u{*#eJ z2Jm0WA1vx&Ex4;Wd&2k^qIs!d8l!1n*fiuE1i70pBem+bGQ6oD7j@ z&Plc6D^_9i_i74I;<|6?I`2)U4G5j_@~9ZR`27!OEYr@T#X5D4cezG z=^5!aBESqWoq6A~^}pP_^rG60$E`9Wjir`x&F+@B3~&hC zl58tG26(+6)ol^-s-NU!_$Q4<5bcBN0g;!;MF$ck;u%?)PnMW|3j8|b$%nwuhG0RI$|Cx;xHqwvxPhkPXEy-fI5-)NC{f+GzCME14z)$ z0miAqSMxFPhvNM-rhCAxp(^}kx2yD|5;TUIT5rBx^Ag){v}X;Z_B^gwsle|LVY5FT z4f4mflQ9|%8z%7TAEeJm6~pv8`WG{Kn6}^VGyzn)#_L`zv^zog4TF4SA@cP0x)9>} zciVG|q8g~d(z?>WEK*yR)PWN85&MIb{4FWpdB6DWAzYWiW95-LzEkG&bbt7scFv5A zipmRLDiy@M%W|W9pCE2~&-fu#ve$3cHQ|JEl~2t1^DfiemBKd)^!OYenx@(ND(GFl zU;2AzXmDhM_rzT@a7drBx0gsp_98yF^qJKS41R)omU-tQZAYsNyZee7&w87Z=5%d9 zs|cyV3FFvc@OiPqXssfz(BM?=ack?orbzo)NSoj1u#5GTp5g(83&SPpV)-qZh;q__ z(%6`}{kww*1{=YmsTgPH)icW+)5Y2L)Opda@jzqq4D-c+W1P6`1 z&Pp10@D%f7(c#x|*={yGBBxo@ci&;V$5sGjw>}{66|?sgZLV1X@iqvn4n%Kk5a^g^$cen0B$YQF01tMs;X=$<2y#}<)#?B5g4Ud16l)cW1u2f94HEcP4T^-xD2 z!Yhx?9qSOkt7PUpQR;=7I3aWUu-^%*Ag498lo?z)*x)*hkQ~LqbsV|kh2z9tq4zKI-F#c-kKNXyc0p@&O;O=d?y|W3`9fM1 zkOvrjr0>S9v~Mk3RbCI-69Bi?(-p`Dwq}$3Gmq^L0l{z$qdPVPv++<~yoToccqq<| zFU9@8%ZUG5b$kOl!6pKpXfdpXb`8FdM#2p&*BU@seS*n=5(>}a!mEF+1mslRia|&z z;@{`0x4|D0{xvT@$n=7RSVs#1r!;aM#Eix1<%?QY@OUdhlDY7I9p3;X%T#v!Uy#ob z+CIT7y$MIiREMIanUR?(*wW`}vvV8^g^rbT^M)j{NRMV-Cb9a`me-*3^w0RYDMZ0o z@2K&UX{dz{D6O|AUae2?iC&Ps5_!lg#oT90w%06T83gjqh4*r7<^k^;2sL6ePZ3Ou z2cQ5U4?#wjvaSskoM@k5*}2wlyJ!{#*>cL_qXFytv`oPBl{X)V?sn4~nRij&TK#R|HO5*rT;e zVlj2(oz{E#MH`Ytuk4=+OYnC(y)>Q7v-G9y#aja_P>0hcNfKsQHeOxO2K_OML-N(a zqC!7QS5|Ccp$_0dZg6V-Wq0Qy` zg@vQlr8oxYOIVH0l|aRY$>EDOk(ZPEjZ5NVhMi91z|V1xb);kY*L0>W2DzY*P%fcs znI1Hkb-a2kp6Fc;T-Pc5b;+P`>jBHxc%{A2o^82{@&>u>wF#;O$gqJwr$XNMBqSl3 zHGM|_opMExP_IIB(|ETVaqkxo(+8OtnCrjRb4~aU D`>Ge= literal 0 HcmV?d00001 diff --git a/root_dev/res/icons/sdrpp.png b/root_dev/res/icons/sdrpp.png new file mode 100644 index 0000000000000000000000000000000000000000..03cf61838dddb018ecb2e3cb51ece291b80101a1 GIT binary patch literal 21113 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 literal 0 HcmV?d00001 diff --git a/root_dev/res/icons/stop.png b/root_dev/res/icons/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..366651bfe3b40d24bf528215c918febd65552bb9 GIT binary patch literal 1733 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+UdOTemLn`LHy|z*Ckb}Sh zhk1o8f2Vf^UuIBzb}VB%Q|qp~K(!+V{7CR+|4@6paL+R7hV1BU+vU<0*Ue-PWXfG; zJdpbKGUJ^0cCri%f95eVG$=4LFgOAOvWbU*fkl#mfy0P_K_G>JLE!`ggTsVT1*73G unjS{;1tsOff?TVH%Wp0-j*!y#!})uKFE~_KzJ+W9`PkFd&t;ucLK6U2*S@v@ literal 0 HcmV?d00001 diff --git a/src/frequency_select.cpp b/src/frequency_select.cpp index fbbc3c4f..45c4f576 100644 --- a/src/frequency_select.cpp +++ b/src/frequency_select.cpp @@ -9,7 +9,7 @@ FrequencySelect::FrequencySelect() { } void FrequencySelect::init() { - font = ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 42.0f); + font = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 42.0f); for (int i = 0; i < 12; i++) { digits[i] = 0; } diff --git a/src/frequency_select.h b/src/frequency_select.h index ebbe9bae..ef94c978 100644 --- a/src/frequency_select.h +++ b/src/frequency_select.h @@ -2,6 +2,7 @@ #include #include #include +#include class FrequencySelect { public: diff --git a/src/main.cpp b/src/main.cpp index 243bd839..9cd9672e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,6 +21,9 @@ #include #endif +// Comment to build a normal release +// #define DEV_BUILD + bool maximized = false; bool fullScreen = false; @@ -44,7 +47,9 @@ int main() { spdlog::info("SDR++ v" VERSION_STR); -#ifdef _WIN32 +#ifdef DEV_BUILD + config::setRootDirectory("../root"); +#elif _WIN32 config::setRootDirectory("."); #else config::setRootDirectory("/etc/sdrpp"); diff --git a/src/main_window.cpp b/src/main_window.cpp index 3360780e..a2439953 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -841,6 +841,7 @@ void drawWindow() { ImGui::BulletText("Benjamin Kyd"); ImGui::BulletText("Tobias Mädel"); ImGui::BulletText("Raov"); + ImGui::BulletText("Howard0su"); // Libraries ImGui::NextColumn(); diff --git a/src/style.cpp b/src/style.cpp index 342d6b13..a8ff6996 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -9,7 +9,7 @@ namespace style { ImGui::GetStyle().PopupRounding = 0.0f; ImGui::GetStyle().ScrollbarRounding = 0.0f; - ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 16.0f); + ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 16.0f); ImGui::StyleColorsDark(); //ImGui::StyleColorsLight(); @@ -23,7 +23,7 @@ namespace style { ImGui::GetStyle().PopupRounding = 0.0f; ImGui::GetStyle().ScrollbarRounding = 0.0f; - ImGui::GetIO().Fonts->AddFontFromFileTTF("res/fonts/Roboto-Medium.ttf", 16.0f); + ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 16.0f); ImGui::StyleColorsDark(); diff --git a/src/style.h b/src/style.h index ae35e414..527bde14 100644 --- a/src/style.h +++ b/src/style.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include namespace style { void setDefaultStyle(); From 1ef31f0f8beb4131609a89716b48ada73904a503 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 18 Sep 2020 00:23:03 +0200 Subject: [PATCH 033/127] new stuff --- modules/radio/src/main.cpp | 9 +- modules/radio/src/path.cpp | 17 + modules/radio/src/path.h | 5 +- root/config.json | 10 +- root/sdrpp_0.2.5_alpha_preview.zip | Bin 0 -> 1547126 bytes root_dev/config.json | 6 +- root_dev/module_list.json | 4 +- src/dsp/block.h | 121 ++++ src/dsp/correction.h | 69 +++ src/dsp/resampling.h | 947 +++++++++++++++++------------ src/dsp/types.h | 42 ++ src/dsp/vfo.h | 10 +- src/io/soapy.h | 2 +- src/main.cpp | 28 +- src/main_window.cpp | 4 +- src/waterfall.h | 1 + 16 files changed, 873 insertions(+), 402 deletions(-) create mode 100644 root/sdrpp_0.2.5_alpha_preview.zip create mode 100644 src/dsp/block.h diff --git a/modules/radio/src/main.cpp b/modules/radio/src/main.cpp index 61e091c9..7a365f8c 100644 --- a/modules/radio/src/main.cpp +++ b/modules/radio/src/main.cpp @@ -95,7 +95,14 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB, ctx->bandWidth); API->setVFOReference(ctx->name, mod::API_t::REF_UPPER); } - if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { ctx->demod = 7; }; + if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { + ctx->demod = 7; + ctx->bandWidth = 10000; + ctx->bandWidthMin = 3000; + ctx->bandWidthMax = 10000; + ctx->sigPath.setDemodulator(SigPath::DEMOD_RAW, ctx->bandWidth); + API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); + }; ImGui::Columns(1, CONCAT("EndRadioModeColumns##_", ctx->name), false); ImGui::EndGroup(); diff --git a/modules/radio/src/path.cpp b/modules/radio/src/path.cpp index 2609e7ca..5fd332cf 100644 --- a/modules/radio/src/path.cpp +++ b/modules/radio/src/path.cpp @@ -28,10 +28,13 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: bandwidth = 200000; // TODO: Set default VFO options + // TODO: ajust deemphasis for different output sample rates + // TODO: Add a mono to stereo for different modes demod.init(input, 100000, 200000, 800); amDemod.init(input, 50); ssbDemod.init(input, 6000, 3000, 22); + cpx2stereo.init(input, 22); audioResamp.init(&demod.output, 200000, 48000, 800); deemp.init(&audioResamp.output, 800, 50e-6, 48000); @@ -77,6 +80,9 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (_demod == DEMOD_DSB) { ssbDemod.stop(); } + else if (_demod == DEMOD_RAW) { + cpx2stereo.stop(); + } else { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (stop)"); } @@ -145,6 +151,14 @@ void SigPath::setDemodulator(int demId, float bandWidth) { deemp.bypass = true; ssbDemod.start(); } + else if (demId == DEMOD_RAW) { + API->setVFOSampleRate(vfoName, 10000, bandwidth); + cpx2stereo.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + //audioResamp.setInput(&cpx2stereo.output); + audioBw = std::min(bandwidth, outputSampleRate / 2.0f); + audioResamp.setInputSampleRate(10000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + cpx2stereo.start(); + } else { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (start): {0}", demId); } @@ -207,6 +221,9 @@ void SigPath::setBandwidth(float bandWidth) { ssbDemod.setBandwidth(bandwidth); ssbDemod.start(); } + else if (_demod == DEMOD_RAW) { + // Notbing to change + } else { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setBandwidth"); } diff --git a/modules/radio/src/path.h b/modules/radio/src/path.h index cac98247..63cee571 100644 --- a/modules/radio/src/path.h +++ b/modules/radio/src/path.h @@ -30,6 +30,7 @@ public: DEMOD_USB, DEMOD_LSB, DEMOD_DSB, + DEMOD_RAW, _DEMOD_COUNT }; @@ -52,9 +53,11 @@ private: dsp::FMDemodulator demod; dsp::AMDemodulator amDemod; dsp::SSBDemod ssbDemod; + dsp::ComplexToStereo cpx2stereo; // Audio output - dsp::FloatFIRResampler audioResamp; + dsp::MonoToStereo m2s; + dsp::FIRResampler audioResamp; std::string vfoName; diff --git a/root/config.json b/root/config.json index e0724191..93f423d3 100644 --- a/root/config.json +++ b/root/config.json @@ -3,25 +3,25 @@ "Radio": { "device": "Speakers (Realtek High Definiti", "sampleRate": 48000.0, - "volume": 0.32258063554763794 + "volume": 0.4354838728904724 } }, "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 99000000, + "frequency": 91000000, "max": 0.0, "maximized": false, "menuWidth": 300, - "min": -52.20588302612305, + "min": -70.0, "showWaterfall": true, "source": "HackRF One #0 901868dc282c8f8b", "sourceSettings": { "HackRF One #0 901868dc282c8f8b": { "gains": { "AMP": 0.0, - "LNA": 24.503000259399414, - "VGA": 16.229999542236328 + "LNA": 0.0, + "VGA": 0.0 }, "sampleRate": 8000000 } diff --git a/root/sdrpp_0.2.5_alpha_preview.zip b/root/sdrpp_0.2.5_alpha_preview.zip new file mode 100644 index 0000000000000000000000000000000000000000..99c3377b9c54bcdcfc3f767e4b27f6c57c43298a GIT binary patch literal 1547126 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

    u8$$6ldN~1#b;E$q<)ijp8FF3Qa@=#pmSP;> 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

    -jBa3{ey8I~DuWG@o@v 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�EL)xt(F_u)jQjn*3 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

    >JknS(=&#fE|pU3|iwC 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 z

    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%0DBq?$nVsEB- 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

    *q6i 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 z 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
    kX9M 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 z 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

    i|B9;5#>X}QO_2U@iOEj)g^GGB#?fn&uDO$ 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�@sQrt`*H) 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 V`gG#BYltFWO?uH!!( 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

    w1-TX;@j}G>;u2kJ}^zWwEG9* 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%0D7H#v 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�g-GkRec< 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 z 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%0AG`kda=)v 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�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 +#include + +namespace dsp { + template + class Block { + public: + Block(std::vector inBs, std::vector outBs, D* inst, void (*workerFunc)(D* _this)) { + derived = inst; + worker = workerFunc; + inputBlockSize = inBs; + outputBlockSize = outBs; + in.reserve(IC); + out.reserve(OC); + for (int i = 0; i < IC; i++) { + in.push_back(NULL); + } + for (int i = 0; i < OC; i++) { + out.push_back(new stream(outBs[i] * 2)); + } + } + + void start() { + if (running) { + return; + } + running = true; + startHandler(); + workerThread = std::thread(worker, derived); + } + + void stop() { + if (!running) { + return; + } + stopHandler(); + for (auto is : in) { + is->stopReader(); + } + for (auto os : out) { + os->stopWriter(); + } + workerThread.join(); + + for (auto is : in) { + is->clearReadStop(); + } + for (auto os : out) { + os->clearWriteStop(); + } + running = false; + } + + virtual void setBlockSize(int blockSize) { + if (running) { + return; + } + for (int i = 0; i < IC; i++) { + in[i]->setMaxLatency(blockSize * 2); + inputBlockSize[i] = blockSize; + } + for (int i = 0; i < OC; i++) { + out[i]->setMaxLatency(blockSize * 2); + outputBlockSize[i] = blockSize; + } + } + + std::vector*> out; + + protected: + virtual void startHandler() {} + virtual void stopHandler() {} + std::vector*> in; + std::vector inputBlockSize; + std::vector outputBlockSize; + bool running = false; + + private: + void (*worker)(D* _this); + std::thread workerThread; + D* derived; + + }; + + + class DemoMultiplier : public Block { + public: + DemoMultiplier() : Block({2}, {1}, this, worker) {} + + void init(stream* a, stream* b, int blockSize) { + in[0] = a; + in[1] = b; + inputBlockSize[0] = blockSize; + inputBlockSize[1] = blockSize; + out[0]->setMaxLatency(blockSize * 2); + outputBlockSize[0] = blockSize; + } + + private: + static void worker(DemoMultiplier* _this) { + int blockSize = _this->inputBlockSize[0]; + stream* inA = _this->in[0]; + stream* inB = _this->in[1]; + stream* out = _this->out[0]; + complex_t* aBuf = (complex_t*)volk_malloc(sizeof(complex_t) * blockSize, volk_get_alignment()); + complex_t* bBuf = (complex_t*)volk_malloc(sizeof(complex_t) * blockSize, volk_get_alignment()); + complex_t* outBuf = (complex_t*)volk_malloc(sizeof(complex_t) * blockSize, volk_get_alignment()); + while (true) { + if (inA->read(aBuf, blockSize) < 0) { break; }; + if (inB->read(bBuf, blockSize) < 0) { break; }; + volk_32fc_x2_multiply_32fc((lv_32fc_t*)outBuf, (lv_32fc_t*)aBuf, (lv_32fc_t*)bBuf, blockSize); + if (out->write(outBuf, blockSize) < 0) { break; }; + } + volk_free(aBuf); + volk_free(bBuf); + volk_free(outBuf); + } + + }; +}; \ No newline at end of file diff --git a/src/dsp/correction.h b/src/dsp/correction.h index b93bbb19..1db9ea1a 100644 --- a/src/dsp/correction.h +++ b/src/dsp/correction.h @@ -86,4 +86,73 @@ namespace dsp { std::thread _workerThread; bool running = false; }; + + class ComplexToStereo { + public: + ComplexToStereo() { + + } + + ComplexToStereo(stream* input, int bufferSize) : output(bufferSize * 2) { + _in = input; + _bufferSize = bufferSize; + } + + void init(stream* input, int bufferSize) { + output.init(bufferSize * 2); + _in = input; + _bufferSize = bufferSize; + } + + void start() { + if (running) { + return; + } + _workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + _in->stopReader(); + output.stopWriter(); + _workerThread.join(); + _in->clearReadStop(); + output.clearWriteStop(); + running = false; + } + + void setBlockSize(int blockSize) { + if (running) { + return; + } + _bufferSize = blockSize; + output.setMaxLatency(blockSize * 2); + } + + stream output; + + private: + static void _worker(ComplexToStereo* _this) { + complex_t* inBuf = new complex_t[_this->_bufferSize]; + StereoFloat_t* outBuf = new StereoFloat_t[_this->_bufferSize]; + while (true) { + if (_this->_in->read(inBuf, _this->_bufferSize) < 0) { break; }; + for (int i = 0; i < _this->_bufferSize; i++) { + outBuf[i].l = inBuf[i].i; + outBuf[i].r = inBuf[i].q; + } + if (_this->output.write(outBuf, _this->_bufferSize) < 0) { break; }; + } + delete[] inBuf; + delete[] outBuf; + } + + stream* _in; + int _bufferSize; + std::thread _workerThread; + bool running = false; + }; }; \ No newline at end of file diff --git a/src/dsp/resampling.h b/src/dsp/resampling.h index f5ce64bc..ad8f5b50 100644 --- a/src/dsp/resampling.h +++ b/src/dsp/resampling.h @@ -189,202 +189,389 @@ namespace dsp { bool running = false; }; + // class FIRResampler { + // public: + // FIRResampler() { + + // } + + // void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { + // _input = in; + // _outputSampleRate = outputSampleRate; + // _inputSampleRate = inputSampleRate; + // int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); + // _interp = outputSampleRate / _gcd; + // _decim = inputSampleRate / _gcd; + // _blockSize = blockSize; + // outputBlockSize = (blockSize * _interp) / _decim; + // output.init(outputBlockSize * 2); + + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // } + // else { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + // } + // } + + // void start() { + // if (running) { + // return; + // } + // _workerThread = std::thread(_worker, this); + // running = true; + // } + + // void stop() { + // if (!running) { + // return; + // } + // _input->stopReader(); + // output.stopWriter(); + // _workerThread.join(); + // _input->clearReadStop(); + // output.clearWriteStop(); + // running = false; + // } + + // void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { + // stop(); + // _inputSampleRate = inputSampleRate; + // int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); + // _interp = _outputSampleRate / _gcd; + // _decim = inputSampleRate / _gcd; + + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // } + // else { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + // } + + // if (blockSize > 0) { + // _blockSize = blockSize; + // } + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + // start(); + // } + + // void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { + // stop(); + // _outputSampleRate = outputSampleRate; + // int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); + // _interp = outputSampleRate / _gcd; + // _decim = _inputSampleRate / _gcd; + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // } + // else { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + // } + + // start(); + // } + + // void setFilterParams(float passBand, float transWidth) { + // stop(); + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // start(); + // } + + // void setBlockSize(int blockSize) { + // stop(); + // _blockSize = blockSize; + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + // start(); + // } + + // void setInput(stream* input) { + // if (running) { + // return; + // } + // _input = input; + // } + + // int getOutputBlockSize() { + // return outputBlockSize; + // } + + // stream output; + + // private: + // static void _worker(FIRResampler* _this) { + // complex_t* inBuf = new complex_t[_this->_blockSize]; + // complex_t* outBuf = new complex_t[_this->outputBlockSize]; + + // int inCount = _this->_blockSize; + // int outCount = _this->outputBlockSize; + + // int interp = _this->_interp; + // int decim = _this->_decim; + // float correction = interp;//(float)sqrt((float)interp); + + // int tapCount = _this->_taps.size(); + // float* taps = new float[tapCount]; + // for (int i = 0; i < tapCount; i++) { + // taps[i] = _this->_taps[i] * correction; + // } + + // complex_t* delayBuf = new complex_t[tapCount]; + + // complex_t* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; + // int delaySize = tapCount * sizeof(complex_t); + // complex_t* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; + // int moveSize = std::min(inCount, tapCount - inCount) * sizeof(complex_t); + // int inSize = inCount * sizeof(complex_t); + + // int afterInterp = inCount * interp; + // int outIndex = 0; + // while (true) { + // if (_this->_input->read(inBuf, inCount) < 0) { break; }; + // for (int i = 0; outIndex < outCount; i += decim) { + // outBuf[outIndex].i = 0; + // outBuf[outIndex].q = 0; + // for (int j = i % interp; j < tapCount; j += interp) { + // outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j]; + // outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j]; + // } + // outIndex++; + // } + // outIndex = 0; + // if (tapCount > inCount) { + // memmove(delayBuf, delayBufEnd, moveSize); + // memcpy(delayBufEnd, delayStart, inSize); + // } + // else { + // memcpy(delayBuf, delayStart, delaySize); + // } + + // if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; + // } + // delete[] inBuf; + // delete[] outBuf; + // delete[] delayBuf; + // delete[] taps; + // } + + // std::thread _workerThread; + + // stream* _input; + // std::vector _taps; + // int _interp; + // int _decim; + // int outputBlockSize; + // float _outputSampleRate; + // float _inputSampleRate; + // int _blockSize; + // bool running = false; + // }; + + // class FloatFIRResampler { + // public: + // FloatFIRResampler() { + + // } + + // void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { + // _input = in; + // _outputSampleRate = outputSampleRate; + // _inputSampleRate = inputSampleRate; + // int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); + // _interp = outputSampleRate / _gcd; + // _decim = inputSampleRate / _gcd; + // _blockSize = blockSize; + // outputBlockSize = (blockSize * _interp) / _decim; + // output.init(outputBlockSize * 2); + + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // } + // else { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + // } + // } + + // void start() { + // if (running) { + // return; + // } + // _workerThread = std::thread(_worker, this); + // running = true; + // } + + // void stop() { + // if (!running) { + // return; + // } + // _input->stopReader(); + // output.stopWriter(); + // _workerThread.join(); + // _input->clearReadStop(); + // output.clearWriteStop(); + // running = false; + // } + + // void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { + // stop(); + // _inputSampleRate = inputSampleRate; + // int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); + // _interp = _outputSampleRate / _gcd; + // _decim = inputSampleRate / _gcd; + + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // } + // else { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + // } + + // if (blockSize > 0) { + // _blockSize = blockSize; + // } + // outputBlockSize = (blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + // start(); + // } + + // void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { + // stop(); + // _outputSampleRate = outputSampleRate; + // int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); + // _interp = outputSampleRate / _gcd; + // _decim = _inputSampleRate / _gcd; + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // } + // else { + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + // } + + // start(); + // } + + // void setFilterParams(float passBand, float transWidth) { + // stop(); + // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); + // start(); + // } + + // void setBlockSize(int blockSize) { + // stop(); + // _blockSize = blockSize; + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + // start(); + // } + + // void setInput(stream* input) { + // if (running) { + // return; + // } + // _input = input; + // } + + // int getOutputBlockSize() { + // return outputBlockSize; + // } + + // stream output; + + // private: + // static void _worker(FloatFIRResampler* _this) { + // float* inBuf = new float[_this->_blockSize]; + // float* outBuf = new float[_this->outputBlockSize]; + + // int inCount = _this->_blockSize; + // int outCount = _this->outputBlockSize; + + // int interp = _this->_interp; + // int decim = _this->_decim; + // float correction = interp;//(float)sqrt((float)interp); + + // int tapCount = _this->_taps.size(); + // float* taps = new float[tapCount]; + // for (int i = 0; i < tapCount; i++) { + // taps[i] = _this->_taps[i] * correction; + // } + + // float* delayBuf = new float[tapCount]; + + // float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; + // int delaySize = tapCount * sizeof(float); + // float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; + // int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); + // int inSize = inCount * sizeof(float); + + // int afterInterp = inCount * interp; + // int outIndex = 0; + // while (true) { + // if (_this->_input->read(inBuf, inCount) < 0) { break; }; + + + // for (int i = 0; outIndex < outCount; i += decim) { + // outBuf[outIndex] = 0; + // for (int j = (i % interp); j < tapCount; j += interp) { + // outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j]; + // } + // outIndex++; + // } + + + + // outIndex = 0; + // if (tapCount > inCount) { + // memmove(delayBuf, delayBufEnd, moveSize); + // memcpy(delayBufEnd, delayStart, inSize); + // } + // else { + // memcpy(delayBuf, delayStart, delaySize); + // } + + // if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; + // } + // delete[] inBuf; + // delete[] outBuf; + // delete[] delayBuf; + // } + + // std::thread _workerThread; + + // stream* _input; + // std::vector _taps; + // int _interp; + // int _decim; + // int outputBlockSize; + // float _outputSampleRate; + // float _inputSampleRate; + // int _blockSize; + // bool running = false; + // }; + + + + + template class FIRResampler { public: FIRResampler() { } - void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { - _input = in; - _outputSampleRate = outputSampleRate; - _inputSampleRate = inputSampleRate; - int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); - _interp = outputSampleRate / _gcd; - _decim = inputSampleRate / _gcd; - _blockSize = blockSize; - outputBlockSize = (blockSize * _interp) / _decim; - output.init(outputBlockSize * 2); - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - } - else { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - } - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - _input->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { - stop(); - _inputSampleRate = inputSampleRate; - int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); - _interp = _outputSampleRate / _gcd; - _decim = inputSampleRate / _gcd; - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - } - else { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - } - - if (blockSize > 0) { - _blockSize = blockSize; - } - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - start(); - } - - void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { - stop(); - _outputSampleRate = outputSampleRate; - int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); - _interp = outputSampleRate / _gcd; - _decim = _inputSampleRate / _gcd; - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - } - else { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - } - - start(); - } - - void setFilterParams(float passBand, float transWidth) { - stop(); - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - start(); - } - - void setBlockSize(int blockSize) { - stop(); - _blockSize = blockSize; - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - start(); - } - - void setInput(stream* input) { - if (running) { - return; - } - _input = input; - } - - int getOutputBlockSize() { - return outputBlockSize; - } - - stream output; - - private: - static void _worker(FIRResampler* _this) { - complex_t* inBuf = new complex_t[_this->_blockSize]; - complex_t* outBuf = new complex_t[_this->outputBlockSize]; - - int inCount = _this->_blockSize; - int outCount = _this->outputBlockSize; - - int interp = _this->_interp; - int decim = _this->_decim; - float correction = interp;//(float)sqrt((float)interp); - - int tapCount = _this->_taps.size(); - float* taps = new float[tapCount]; - for (int i = 0; i < tapCount; i++) { - taps[i] = _this->_taps[i] * correction; - } - - complex_t* delayBuf = new complex_t[tapCount]; - - complex_t* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - int delaySize = tapCount * sizeof(complex_t); - complex_t* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - int moveSize = std::min(inCount, tapCount - inCount) * sizeof(complex_t); - int inSize = inCount * sizeof(complex_t); - - int afterInterp = inCount * interp; - int outIndex = 0; - while (true) { - if (_this->_input->read(inBuf, inCount) < 0) { break; }; - for (int i = 0; outIndex < outCount; i += decim) { - outBuf[outIndex].i = 0; - outBuf[outIndex].q = 0; - for (int j = i % interp; j < tapCount; j += interp) { - outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j]; - outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j]; - } - outIndex++; - } - outIndex = 0; - if (tapCount > inCount) { - memmove(delayBuf, delayBufEnd, moveSize); - memcpy(delayBufEnd, delayStart, inSize); - } - else { - memcpy(delayBuf, delayStart, delaySize); - } - - if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - delete[] delayBuf; - delete[] taps; - } - - std::thread _workerThread; - - stream* _input; - std::vector _taps; - int _interp; - int _decim; - int outputBlockSize; - float _outputSampleRate; - float _inputSampleRate; - int _blockSize; - bool running = false; - }; - - - - - - class FloatFIRResampler { - public: - FloatFIRResampler() { - - } - - void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { + void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { _input = in; _outputSampleRate = outputSampleRate; _inputSampleRate = inputSampleRate; @@ -492,19 +679,21 @@ namespace dsp { return outputBlockSize; } - stream output; + stream output; private: - static void _worker(FloatFIRResampler* _this) { - float* inBuf = new float[_this->_blockSize]; - float* outBuf = new float[_this->outputBlockSize]; + + // Float worker + static void _worker(FIRResampler* _this) { + T* inBuf = new T[_this->_blockSize]; + T* outBuf = new T[_this->outputBlockSize]; int inCount = _this->_blockSize; int outCount = _this->outputBlockSize; int interp = _this->_interp; int decim = _this->_decim; - float correction = interp;//(float)sqrt((float)interp); + float correction = interp; int tapCount = _this->_taps.size(); float* taps = new float[tapCount]; @@ -512,29 +701,39 @@ namespace dsp { taps[i] = _this->_taps[i] * correction; } - float* delayBuf = new float[tapCount]; + T* delayBuf = new T[tapCount]; - float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - int delaySize = tapCount * sizeof(float); - float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); - int inSize = inCount * sizeof(float); + T* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; + int delaySize = tapCount * sizeof(T); + T* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; + int moveSize = std::min(inCount, tapCount - inCount) * sizeof(T); + int inSize = inCount * sizeof(T); int afterInterp = inCount * interp; int outIndex = 0; while (true) { if (_this->_input->read(inBuf, inCount) < 0) { break; }; - - for (int i = 0; outIndex < outCount; i += decim) { - outBuf[outIndex] = 0; - for (int j = (i % interp); j < tapCount; j += interp) { - outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j]; + if constexpr (std::is_same_v) { + for (int i = 0; outIndex < outCount; i += decim) { + outBuf[outIndex] = 0; + for (int j = (i % interp); j < tapCount; j += interp) { + outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j]; + } + outIndex++; + } + } + if constexpr (std::is_same_v) { + for (int i = 0; outIndex < outCount; i += decim) { + outBuf[outIndex].i = 0; + outBuf[outIndex].q = 0; + for (int j = i % interp; j < tapCount; j += interp) { + outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j]; + outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j]; + } + outIndex++; } - outIndex++; } - - outIndex = 0; if (tapCount > inCount) { @@ -553,8 +752,7 @@ namespace dsp { } std::thread _workerThread; - - stream* _input; + stream* _input; std::vector _taps; int _interp; int _decim; @@ -565,211 +763,196 @@ namespace dsp { bool running = false; }; + // class FloatPolyphaseFIRResampler { + // public: + // FloatPolyphaseFIRResampler() { + // } + // void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { + // _input = in; + // _outputSampleRate = outputSampleRate; + // _inputSampleRate = inputSampleRate; + // int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); + // _interp = outputSampleRate / _gcd; + // _decim = inputSampleRate / _gcd; + // _blockSize = blockSize; + // outputBlockSize = (blockSize * _interp) / _decim; + // output.init(outputBlockSize * 2); + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + // } + // else { + // dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); + // } + // } + // void start() { + // if (running) { + // return; + // } + // _workerThread = std::thread(_worker, this); + // running = true; + // } + // void stop() { + // if (!running) { + // return; + // } + // _input->stopReader(); + // output.stopWriter(); + // _workerThread.join(); + // _input->clearReadStop(); + // output.clearWriteStop(); + // running = false; + // } + // void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { + // stop(); + // _inputSampleRate = inputSampleRate; + // int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); + // _interp = _outputSampleRate / _gcd; + // _decim = inputSampleRate / _gcd; + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + // } + // else { + // dsp::BlackmanWindow(_taps,_outputSampleRate, cutoff, cutoff, _interp - 1); + // } + // if (blockSize > 0) { + // _blockSize = blockSize; + // } + // outputBlockSize = (blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + // start(); + // } + // void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { + // stop(); + // _outputSampleRate = outputSampleRate; + // int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); + // _interp = outputSampleRate / _gcd; + // _decim = _inputSampleRate / _gcd; + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); - - - - - - class FloatPolyphaseFIRResampler { - public: - FloatPolyphaseFIRResampler() { - - } - - void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { - _input = in; - _outputSampleRate = outputSampleRate; - _inputSampleRate = inputSampleRate; - int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); - _interp = outputSampleRate / _gcd; - _decim = inputSampleRate / _gcd; - _blockSize = blockSize; - outputBlockSize = (blockSize * _interp) / _decim; - output.init(outputBlockSize * 2); - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - } - else { - dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); - } - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - _input->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { - stop(); - _inputSampleRate = inputSampleRate; - int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); - _interp = _outputSampleRate / _gcd; - _decim = inputSampleRate / _gcd; - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - } - else { - dsp::BlackmanWindow(_taps,_outputSampleRate, cutoff, cutoff, _interp - 1); - } - - if (blockSize > 0) { - _blockSize = blockSize; - } - outputBlockSize = (blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - start(); - } - - void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { - stop(); - _outputSampleRate = outputSampleRate; - int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); - _interp = outputSampleRate / _gcd; - _decim = _inputSampleRate / _gcd; - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - } - else { - dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); - } + // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); + // if (passBand > 0.0f && transWidth > 0.0f) { + // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + // } + // else { + // dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); + // } - start(); - } + // start(); + // } - void setFilterParams(float passBand, float transWidth) { - stop(); - dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - start(); - } + // void setFilterParams(float passBand, float transWidth) { + // stop(); + // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); + // start(); + // } - void setBlockSize(int blockSize) { - stop(); - _blockSize = blockSize; - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - start(); - } + // void setBlockSize(int blockSize) { + // stop(); + // _blockSize = blockSize; + // outputBlockSize = (_blockSize * _interp) / _decim; + // output.setMaxLatency(outputBlockSize * 2); + // start(); + // } - void setInput(stream* input) { - if (running) { - return; - } - _input = input; - } + // void setInput(stream* input) { + // if (running) { + // return; + // } + // _input = input; + // } - int getOutputBlockSize() { - return outputBlockSize; - } + // int getOutputBlockSize() { + // return outputBlockSize; + // } - stream output; + // stream output; - private: - static void _worker(FloatPolyphaseFIRResampler* _this) { - float* inBuf = new float[_this->_blockSize]; - float* outBuf = new float[_this->outputBlockSize]; + // private: + // static void _worker(FloatPolyphaseFIRResampler* _this) { + // float* inBuf = new float[_this->_blockSize]; + // float* outBuf = new float[_this->outputBlockSize]; - int inCount = _this->_blockSize; - int outCount = _this->outputBlockSize; + // int inCount = _this->_blockSize; + // int outCount = _this->outputBlockSize; - int interp = _this->_interp; - int decim = _this->_decim; - float correction = interp;//(float)sqrt((float)interp); + // int interp = _this->_interp; + // int decim = _this->_decim; + // float correction = interp;//(float)sqrt((float)interp); - int tapCount = _this->_taps.size(); - float* taps = new float[tapCount]; - for (int i = 0; i < tapCount; i++) { - taps[i] = _this->_taps[i] * correction; - } + // int tapCount = _this->_taps.size(); + // float* taps = new float[tapCount]; + // for (int i = 0; i < tapCount; i++) { + // taps[i] = _this->_taps[i] * correction; + // } - float* delayBuf = new float[tapCount]; + // float* delayBuf = new float[tapCount]; - float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - int delaySize = tapCount * sizeof(float); - float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); - int inSize = inCount * sizeof(float); + // float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; + // int delaySize = tapCount * sizeof(float); + // float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; + // int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); + // int inSize = inCount * sizeof(float); - int afterInterp = inCount * interp; - int outIndex = 0; + // int afterInterp = inCount * interp; + // int outIndex = 0; - tapCount -= interp - 1; + // tapCount -= interp - 1; - while (true) { - if (_this->_input->read(inBuf, inCount) < 0) { break; }; + // while (true) { + // if (_this->_input->read(inBuf, inCount) < 0) { break; }; - for (int i = 0; i < outCount; i++) { - outBuf[i] = 0; - int filterId = (i * decim) % interp; - int inputId = (i * decim) / interp; - for (int j = 0; j < tapCount; j++) { - outBuf[i] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, inputId - j) * taps[j + filterId]; - } - } + // for (int i = 0; i < outCount; i++) { + // outBuf[i] = 0; + // int filterId = (i * decim) % interp; + // int inputId = (i * decim) / interp; + // for (int j = 0; j < tapCount; j++) { + // outBuf[i] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, inputId - j) * taps[j + filterId]; + // } + // } - if (tapCount > inCount) { - memmove(delayBuf, delayBufEnd, moveSize); - memcpy(delayBufEnd, delayStart, inSize); - } - else { - memcpy(delayBuf, delayStart, delaySize); - } + // if (tapCount > inCount) { + // memmove(delayBuf, delayBufEnd, moveSize); + // memcpy(delayBufEnd, delayStart, inSize); + // } + // else { + // memcpy(delayBuf, delayStart, delaySize); + // } - if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - delete[] delayBuf; - } + // if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; + // } + // delete[] inBuf; + // delete[] outBuf; + // delete[] delayBuf; + // } - std::thread _workerThread; + // std::thread _workerThread; - stream* _input; - std::vector _taps; - int _interp; - int _decim; - int outputBlockSize; - float _outputSampleRate; - float _inputSampleRate; - int _blockSize; - bool running = false; - }; + // stream* _input; + // std::vector _taps; + // int _interp; + // int _decim; + // int outputBlockSize; + // float _outputSampleRate; + // float _inputSampleRate; + // int _blockSize; + // bool running = false; + // }; }; \ No newline at end of file diff --git a/src/dsp/types.h b/src/dsp/types.h index 09b4430f..5de461b9 100644 --- a/src/dsp/types.h +++ b/src/dsp/types.h @@ -4,10 +4,52 @@ namespace dsp { struct complex_t { float q; float i; + + complex_t operator+(complex_t& c) { + complex_t res; + res.i = c.i + i; + res.q = c.q + q; + return res; + } + + complex_t operator-(complex_t& c) { + complex_t res; + res.i = i - c.i; + res.q = q - c.q; + return res; + } + + complex_t operator*(float& f) { + complex_t res; + res.i = i * f; + res.q = q * f; + return res; + } }; struct StereoFloat_t { float l; float r; + + StereoFloat_t operator+(StereoFloat_t& s) { + StereoFloat_t res; + res.l = s.l + l; + res.r = s.r + r; + return res; + } + + StereoFloat_t operator-(StereoFloat_t& s) { + StereoFloat_t res; + res.l = l - s.l; + res.r = r - s.r; + return res; + } + + StereoFloat_t operator*(float& f) { + StereoFloat_t res; + res.l = l * f; + res.r = r * f; + return res; + } }; }; \ No newline at end of file diff --git a/src/dsp/vfo.h b/src/dsp/vfo.h index bbcf7e03..312c6123 100644 --- a/src/dsp/vfo.h +++ b/src/dsp/vfo.h @@ -4,6 +4,7 @@ #include #include #include +#include namespace dsp { class VFO { @@ -22,7 +23,8 @@ namespace dsp { lo.init(offset, inputSampleRate, blockSize); mixer.init(in, &lo.output, blockSize); - resamp.init(&mixer.output, inputSampleRate, outputSampleRate, blockSize, _bandWidth * 0.8f, _bandWidth); + //resamp.init(&mixer.output, inputSampleRate, outputSampleRate, blockSize, _bandWidth * 0.8f, _bandWidth); + resamp.init(mixer.out[0], inputSampleRate, outputSampleRate, blockSize, _bandWidth * 0.8f, _bandWidth); } void start() { @@ -87,8 +89,10 @@ namespace dsp { private: SineSource lo; - Multiplier mixer; - FIRResampler resamp; + //Multiplier mixer; + DemoMultiplier mixer; + FIRResampler resamp; + DecimatingFIRFilter filter; stream* _input; float _outputSampleRate; diff --git a/src/io/soapy.h b/src/io/soapy.h index f72f5c9d..ac1311f1 100644 --- a/src/io/soapy.h +++ b/src/io/soapy.h @@ -12,7 +12,7 @@ namespace io { SoapyWrapper() { SoapySDR::registerLogHandler(_logHandler); SoapySDR::Device::make(""); - + output.init(64000); currentGains = new float[1]; refresh(); diff --git a/src/main.cpp b/src/main.cpp index 9cd9672e..765f4283 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,6 +14,8 @@ #include #include +#include + #define STB_IMAGE_RESIZE_IMPLEMENTATION #include @@ -22,7 +24,7 @@ #endif // Comment to build a normal release -// #define DEV_BUILD +#define DEV_BUILD bool maximized = false; bool fullScreen = false; @@ -40,6 +42,7 @@ static void maximized_callback(GLFWwindow* window, int n) { } } +// main int main() { #ifdef _WIN32 //FreeConsole(); @@ -48,7 +51,7 @@ int main() { spdlog::info("SDR++ v" VERSION_STR); #ifdef DEV_BUILD - config::setRootDirectory("../root"); + config::setRootDirectory("../root_dev"); #elif _WIN32 config::setRootDirectory("."); #else @@ -134,6 +137,27 @@ int main() { style::setDarkStyle(); + + // ==================================================== + // glfwPollEvents(); + // ImGui_ImplOpenGL3_NewFrame(); + // ImGui_ImplGlfw_NewFrame(); + // ImGui::NewFrame(); + + // ImGui::ShowDemoWindow(); + + // ImGui::Render(); + // int display_w, display_h; + // glfwGetFramebufferSize(window, &display_w, &display_h); + // glViewport(0, 0, display_w, display_h); + // glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); + // //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); + // glClear(GL_COLOR_BUFFER_BIT); + // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + // glfwSwapBuffers(window); + // ==================================================== + spdlog::info("Loading icons"); icons::load(); diff --git a/src/main_window.cpp b/src/main_window.cpp index a2439953..8c9f4504 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -216,8 +216,8 @@ void windowInit() { // Bandwidth ajustment // CW and RAW modes; // Bring VFO to a visible place when changing sample rate if it's smaller - - // Have a proper root directory + // Add save config for modules + // Do VFO in two steps: First sample rate conversion, then filtering // And a module add/remove/change order menu // get rid of watchers and use if() instead diff --git a/src/waterfall.h b/src/waterfall.h index ef7e0051..e7d21aad 100644 --- a/src/waterfall.h +++ b/src/waterfall.h @@ -33,6 +33,7 @@ namespace ImGui { float lowerOffset; float upperOffset; float bandwidth; + float snapInterval; int reference = REF_CENTER; ImVec2 rectMin; From d6b9e1d86a5e4274d98f36670586c55b92e97d82 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sat, 19 Sep 2020 12:48:34 +0200 Subject: [PATCH 034/127] new modole system --- CMakeLists.txt | 70 +---- core/CMakeLists.txt | 74 ++++++ {src => core/src}/audio.cpp | 0 {src => core/src}/audio.h | 0 {src => core/src}/bandplan.cpp | 0 {src => core/src}/bandplan.h | 0 {src => core/src}/config.cpp | 0 {src => core/src}/config.h | 0 core/src/core.cpp | 250 ++++++++++++++++++ core/src/core.h | 3 + {src => core/src}/dsp/block.h | 0 {src => core/src}/dsp/correction.h | 0 {src => core/src}/dsp/demodulator.h | 0 {src => core/src}/dsp/filter.h | 0 {src => core/src}/dsp/math.h | 0 {src => core/src}/dsp/resampling.h | 0 {src => core/src}/dsp/routing.h | 0 {src => core/src}/dsp/sink.h | 0 {src => core/src}/dsp/source.h | 0 {src => core/src}/dsp/stream.h | 0 {src => core/src}/dsp/types.h | 0 {src => core/src}/dsp/vfo.h | 0 {src => core/src}/frequency_select.cpp | 1 + {src => core/src}/frequency_select.h | 0 {src => core/src}/icons.cpp | 0 {src => core/src}/icons.h | 0 {src => core/src}/imgui/imconfig.h | 0 {src => core/src}/imgui/imgui.cpp | 0 {src => core/src}/imgui/imgui.h | 0 {src => core/src}/imgui/imgui_demo.cpp | 0 {src => core/src}/imgui/imgui_draw.cpp | 0 {src => core/src}/imgui/imgui_impl_glfw.cpp | 0 {src => core/src}/imgui/imgui_impl_glfw.h | 0 .../src}/imgui/imgui_impl_opengl3.cpp | 0 {src => core/src}/imgui/imgui_impl_opengl3.h | 0 {src => core/src}/imgui/imgui_internal.h | 0 {src => core/src}/imgui/imgui_plot.cpp | 0 {src => core/src}/imgui/imgui_plot.h | 0 {src => core/src}/imgui/imgui_widgets.cpp | 0 {src => core/src}/imgui/imstb_rectpack.h | 0 {src => core/src}/imgui/imstb_textedit.h | 0 {src => core/src}/imgui/imstb_truetype.h | 0 {src => core/src}/imgui/imutils.h | 0 {src => core/src}/imgui/stb_image.h | 0 {src => core/src}/imgui/stb_image_resize.h | 0 {src => core/src}/io/audio.h | 0 {src => core/src}/io/soapy.h | 7 +- {src => core/src}/json.hpp | 0 {src => core/src}/main_window.cpp | 3 + {src => core/src}/main_window.h | 0 {src => core/src}/module.cpp | 0 {src => core/src}/module.h | 0 {src => core/src}/signal_path.cpp | 0 {src => core/src}/signal_path.h | 0 {src => core/src}/spdlog/async.h | 0 {src => core/src}/spdlog/async_logger-inl.h | 0 {src => core/src}/spdlog/async_logger.h | 0 {src => core/src}/spdlog/cfg/argv.h | 0 {src => core/src}/spdlog/cfg/env.h | 0 {src => core/src}/spdlog/cfg/helpers-inl.h | 0 {src => core/src}/spdlog/cfg/helpers.h | 0 {src => core/src}/spdlog/cfg/log_levels.h | 0 {src => core/src}/spdlog/common-inl.h | 0 {src => core/src}/spdlog/common.h | 0 .../src}/spdlog/details/backtracer-inl.h | 0 {src => core/src}/spdlog/details/backtracer.h | 0 {src => core/src}/spdlog/details/circular_q.h | 0 .../src}/spdlog/details/console_globals.h | 0 .../src}/spdlog/details/file_helper-inl.h | 0 .../src}/spdlog/details/file_helper.h | 0 {src => core/src}/spdlog/details/fmt_helper.h | 0 .../src}/spdlog/details/log_msg-inl.h | 0 {src => core/src}/spdlog/details/log_msg.h | 0 .../src}/spdlog/details/log_msg_buffer-inl.h | 0 .../src}/spdlog/details/log_msg_buffer.h | 0 .../src}/spdlog/details/mpmc_blocking_q.h | 0 {src => core/src}/spdlog/details/null_mutex.h | 0 {src => core/src}/spdlog/details/os-inl.h | 0 {src => core/src}/spdlog/details/os.h | 0 .../src}/spdlog/details/periodic_worker-inl.h | 0 .../src}/spdlog/details/periodic_worker.h | 0 .../src}/spdlog/details/registry-inl.h | 0 {src => core/src}/spdlog/details/registry.h | 0 .../src}/spdlog/details/synchronous_factory.h | 0 .../src}/spdlog/details/tcp_client-windows.h | 0 {src => core/src}/spdlog/details/tcp_client.h | 0 .../src}/spdlog/details/thread_pool-inl.h | 0 .../src}/spdlog/details/thread_pool.h | 0 .../src}/spdlog/details/windows_include.h | 0 {src => core/src}/spdlog/fmt/bin_to_hex.h | 0 .../src}/spdlog/fmt/bundled/LICENSE.rst | 0 {src => core/src}/spdlog/fmt/bundled/chrono.h | 0 {src => core/src}/spdlog/fmt/bundled/color.h | 0 .../src}/spdlog/fmt/bundled/compile.h | 0 {src => core/src}/spdlog/fmt/bundled/core.h | 0 .../src}/spdlog/fmt/bundled/format-inl.h | 0 {src => core/src}/spdlog/fmt/bundled/format.h | 0 {src => core/src}/spdlog/fmt/bundled/locale.h | 0 .../src}/spdlog/fmt/bundled/ostream.h | 0 {src => core/src}/spdlog/fmt/bundled/posix.h | 0 {src => core/src}/spdlog/fmt/bundled/printf.h | 0 {src => core/src}/spdlog/fmt/bundled/ranges.h | 0 {src => core/src}/spdlog/fmt/fmt.h | 0 {src => core/src}/spdlog/fmt/ostr.h | 0 {src => core/src}/spdlog/formatter.h | 0 {src => core/src}/spdlog/fwd.h | 0 {src => core/src}/spdlog/logger-inl.h | 0 {src => core/src}/spdlog/logger.h | 0 .../src}/spdlog/pattern_formatter-inl.h | 0 {src => core/src}/spdlog/pattern_formatter.h | 0 {src => core/src}/spdlog/sinks/android_sink.h | 0 .../src}/spdlog/sinks/ansicolor_sink-inl.h | 0 .../src}/spdlog/sinks/ansicolor_sink.h | 0 .../src}/spdlog/sinks/base_sink-inl.h | 0 {src => core/src}/spdlog/sinks/base_sink.h | 0 .../src}/spdlog/sinks/basic_file_sink-inl.h | 0 .../src}/spdlog/sinks/basic_file_sink.h | 0 .../src}/spdlog/sinks/daily_file_sink.h | 0 {src => core/src}/spdlog/sinks/dist_sink.h | 0 .../src}/spdlog/sinks/dup_filter_sink.h | 0 {src => core/src}/spdlog/sinks/msvc_sink.h | 0 {src => core/src}/spdlog/sinks/null_sink.h | 0 {src => core/src}/spdlog/sinks/ostream_sink.h | 0 .../src}/spdlog/sinks/ringbuffer_sink.h | 0 .../spdlog/sinks/rotating_file_sink-inl.h | 0 .../src}/spdlog/sinks/rotating_file_sink.h | 0 {src => core/src}/spdlog/sinks/sink-inl.h | 0 {src => core/src}/spdlog/sinks/sink.h | 0 .../spdlog/sinks/stdout_color_sinks-inl.h | 0 .../src}/spdlog/sinks/stdout_color_sinks.h | 0 .../src}/spdlog/sinks/stdout_sinks-inl.h | 0 {src => core/src}/spdlog/sinks/stdout_sinks.h | 0 {src => core/src}/spdlog/sinks/syslog_sink.h | 0 {src => core/src}/spdlog/sinks/systemd_sink.h | 0 {src => core/src}/spdlog/sinks/tcp_sink.h | 0 .../src}/spdlog/sinks/win_eventlog_sink.h | 0 .../src}/spdlog/sinks/wincolor_sink-inl.h | 0 .../src}/spdlog/sinks/wincolor_sink.h | 0 {src => core/src}/spdlog/spdlog-inl.h | 0 {src => core/src}/spdlog/spdlog.h | 0 {src => core/src}/spdlog/tweakme.h | 0 {src => core/src}/spdlog/version.h | 0 {src => core/src}/style.cpp | 4 + {src => core/src}/style.h | 1 + {src => core/src}/version.h | 0 {src => core/src}/vfo_manager.cpp | 0 {src => core/src}/vfo_manager.h | 0 {src => core/src}/watcher.h | 0 {src => core/src}/waterfall.cpp | 0 {src => core/src}/waterfall.h | 0 demo/CMakeLists.txt | 7 + demo/src/main.cpp | 38 +++ modules/demo/CMakeLists.txt | 55 ---- modules/demo/src/main.cpp | 38 --- {modules/radio => radio}/CMakeLists.txt | 8 +- {modules/radio => radio}/src/main.cpp | 0 {modules/radio => radio}/src/path.cpp | 0 {modules/radio => radio}/src/path.h | 0 {modules/recorder => recorder}/CMakeLists.txt | 8 +- {modules/recorder => recorder}/src/main.cpp | 0 {modules/recorder => recorder}/src/wav.h | 0 root_dev/config.json | 4 +- root_dev/module_list.json | 6 +- src/main.cpp | 250 +----------------- 164 files changed, 414 insertions(+), 413 deletions(-) create mode 100644 core/CMakeLists.txt rename {src => core/src}/audio.cpp (100%) rename {src => core/src}/audio.h (100%) rename {src => core/src}/bandplan.cpp (100%) rename {src => core/src}/bandplan.h (100%) rename {src => core/src}/config.cpp (100%) rename {src => core/src}/config.h (100%) create mode 100644 core/src/core.cpp create mode 100644 core/src/core.h rename {src => core/src}/dsp/block.h (100%) rename {src => core/src}/dsp/correction.h (100%) rename {src => core/src}/dsp/demodulator.h (100%) rename {src => core/src}/dsp/filter.h (100%) rename {src => core/src}/dsp/math.h (100%) rename {src => core/src}/dsp/resampling.h (100%) rename {src => core/src}/dsp/routing.h (100%) rename {src => core/src}/dsp/sink.h (100%) rename {src => core/src}/dsp/source.h (100%) rename {src => core/src}/dsp/stream.h (100%) rename {src => core/src}/dsp/types.h (100%) rename {src => core/src}/dsp/vfo.h (100%) rename {src => core/src}/frequency_select.cpp (99%) rename {src => core/src}/frequency_select.h (100%) rename {src => core/src}/icons.cpp (100%) rename {src => core/src}/icons.h (100%) rename {src => core/src}/imgui/imconfig.h (100%) rename {src => core/src}/imgui/imgui.cpp (100%) rename {src => core/src}/imgui/imgui.h (100%) rename {src => core/src}/imgui/imgui_demo.cpp (100%) rename {src => core/src}/imgui/imgui_draw.cpp (100%) rename {src => core/src}/imgui/imgui_impl_glfw.cpp (100%) rename {src => core/src}/imgui/imgui_impl_glfw.h (100%) rename {src => core/src}/imgui/imgui_impl_opengl3.cpp (100%) rename {src => core/src}/imgui/imgui_impl_opengl3.h (100%) rename {src => core/src}/imgui/imgui_internal.h (100%) rename {src => core/src}/imgui/imgui_plot.cpp (100%) rename {src => core/src}/imgui/imgui_plot.h (100%) rename {src => core/src}/imgui/imgui_widgets.cpp (100%) rename {src => core/src}/imgui/imstb_rectpack.h (100%) rename {src => core/src}/imgui/imstb_textedit.h (100%) rename {src => core/src}/imgui/imstb_truetype.h (100%) rename {src => core/src}/imgui/imutils.h (100%) rename {src => core/src}/imgui/stb_image.h (100%) rename {src => core/src}/imgui/stb_image_resize.h (100%) rename {src => core/src}/io/audio.h (100%) rename {src => core/src}/io/soapy.h (98%) rename {src => core/src}/json.hpp (100%) rename {src => core/src}/main_window.cpp (99%) rename {src => core/src}/main_window.h (100%) rename {src => core/src}/module.cpp (100%) rename {src => core/src}/module.h (100%) rename {src => core/src}/signal_path.cpp (100%) rename {src => core/src}/signal_path.h (100%) rename {src => core/src}/spdlog/async.h (100%) rename {src => core/src}/spdlog/async_logger-inl.h (100%) rename {src => core/src}/spdlog/async_logger.h (100%) rename {src => core/src}/spdlog/cfg/argv.h (100%) rename {src => core/src}/spdlog/cfg/env.h (100%) rename {src => core/src}/spdlog/cfg/helpers-inl.h (100%) rename {src => core/src}/spdlog/cfg/helpers.h (100%) rename {src => core/src}/spdlog/cfg/log_levels.h (100%) rename {src => core/src}/spdlog/common-inl.h (100%) rename {src => core/src}/spdlog/common.h (100%) rename {src => core/src}/spdlog/details/backtracer-inl.h (100%) rename {src => core/src}/spdlog/details/backtracer.h (100%) rename {src => core/src}/spdlog/details/circular_q.h (100%) rename {src => core/src}/spdlog/details/console_globals.h (100%) rename {src => core/src}/spdlog/details/file_helper-inl.h (100%) rename {src => core/src}/spdlog/details/file_helper.h (100%) rename {src => core/src}/spdlog/details/fmt_helper.h (100%) rename {src => core/src}/spdlog/details/log_msg-inl.h (100%) rename {src => core/src}/spdlog/details/log_msg.h (100%) rename {src => core/src}/spdlog/details/log_msg_buffer-inl.h (100%) rename {src => core/src}/spdlog/details/log_msg_buffer.h (100%) rename {src => core/src}/spdlog/details/mpmc_blocking_q.h (100%) rename {src => core/src}/spdlog/details/null_mutex.h (100%) rename {src => core/src}/spdlog/details/os-inl.h (100%) rename {src => core/src}/spdlog/details/os.h (100%) rename {src => core/src}/spdlog/details/periodic_worker-inl.h (100%) rename {src => core/src}/spdlog/details/periodic_worker.h (100%) rename {src => core/src}/spdlog/details/registry-inl.h (100%) rename {src => core/src}/spdlog/details/registry.h (100%) rename {src => core/src}/spdlog/details/synchronous_factory.h (100%) rename {src => core/src}/spdlog/details/tcp_client-windows.h (100%) rename {src => core/src}/spdlog/details/tcp_client.h (100%) rename {src => core/src}/spdlog/details/thread_pool-inl.h (100%) rename {src => core/src}/spdlog/details/thread_pool.h (100%) rename {src => core/src}/spdlog/details/windows_include.h (100%) rename {src => core/src}/spdlog/fmt/bin_to_hex.h (100%) rename {src => core/src}/spdlog/fmt/bundled/LICENSE.rst (100%) rename {src => core/src}/spdlog/fmt/bundled/chrono.h (100%) rename {src => core/src}/spdlog/fmt/bundled/color.h (100%) rename {src => core/src}/spdlog/fmt/bundled/compile.h (100%) rename {src => core/src}/spdlog/fmt/bundled/core.h (100%) rename {src => core/src}/spdlog/fmt/bundled/format-inl.h (100%) rename {src => core/src}/spdlog/fmt/bundled/format.h (100%) rename {src => core/src}/spdlog/fmt/bundled/locale.h (100%) rename {src => core/src}/spdlog/fmt/bundled/ostream.h (100%) rename {src => core/src}/spdlog/fmt/bundled/posix.h (100%) rename {src => core/src}/spdlog/fmt/bundled/printf.h (100%) rename {src => core/src}/spdlog/fmt/bundled/ranges.h (100%) rename {src => core/src}/spdlog/fmt/fmt.h (100%) rename {src => core/src}/spdlog/fmt/ostr.h (100%) rename {src => core/src}/spdlog/formatter.h (100%) rename {src => core/src}/spdlog/fwd.h (100%) rename {src => core/src}/spdlog/logger-inl.h (100%) rename {src => core/src}/spdlog/logger.h (100%) rename {src => core/src}/spdlog/pattern_formatter-inl.h (100%) rename {src => core/src}/spdlog/pattern_formatter.h (100%) rename {src => core/src}/spdlog/sinks/android_sink.h (100%) rename {src => core/src}/spdlog/sinks/ansicolor_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/ansicolor_sink.h (100%) rename {src => core/src}/spdlog/sinks/base_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/base_sink.h (100%) rename {src => core/src}/spdlog/sinks/basic_file_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/basic_file_sink.h (100%) rename {src => core/src}/spdlog/sinks/daily_file_sink.h (100%) rename {src => core/src}/spdlog/sinks/dist_sink.h (100%) rename {src => core/src}/spdlog/sinks/dup_filter_sink.h (100%) rename {src => core/src}/spdlog/sinks/msvc_sink.h (100%) rename {src => core/src}/spdlog/sinks/null_sink.h (100%) rename {src => core/src}/spdlog/sinks/ostream_sink.h (100%) rename {src => core/src}/spdlog/sinks/ringbuffer_sink.h (100%) rename {src => core/src}/spdlog/sinks/rotating_file_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/rotating_file_sink.h (100%) rename {src => core/src}/spdlog/sinks/sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/sink.h (100%) rename {src => core/src}/spdlog/sinks/stdout_color_sinks-inl.h (100%) rename {src => core/src}/spdlog/sinks/stdout_color_sinks.h (100%) rename {src => core/src}/spdlog/sinks/stdout_sinks-inl.h (100%) rename {src => core/src}/spdlog/sinks/stdout_sinks.h (100%) rename {src => core/src}/spdlog/sinks/syslog_sink.h (100%) rename {src => core/src}/spdlog/sinks/systemd_sink.h (100%) rename {src => core/src}/spdlog/sinks/tcp_sink.h (100%) rename {src => core/src}/spdlog/sinks/win_eventlog_sink.h (100%) rename {src => core/src}/spdlog/sinks/wincolor_sink-inl.h (100%) rename {src => core/src}/spdlog/sinks/wincolor_sink.h (100%) rename {src => core/src}/spdlog/spdlog-inl.h (100%) rename {src => core/src}/spdlog/spdlog.h (100%) rename {src => core/src}/spdlog/tweakme.h (100%) rename {src => core/src}/spdlog/version.h (100%) rename {src => core/src}/style.cpp (98%) rename {src => core/src}/style.h (91%) rename {src => core/src}/version.h (100%) rename {src => core/src}/vfo_manager.cpp (100%) rename {src => core/src}/vfo_manager.h (100%) rename {src => core/src}/watcher.h (100%) rename {src => core/src}/waterfall.cpp (100%) rename {src => core/src}/waterfall.h (100%) create mode 100644 demo/CMakeLists.txt create mode 100644 demo/src/main.cpp delete mode 100644 modules/demo/CMakeLists.txt delete mode 100644 modules/demo/src/main.cpp rename {modules/radio => radio}/CMakeLists.txt (90%) rename {modules/radio => radio}/src/main.cpp (100%) rename {modules/radio => radio}/src/path.cpp (100%) rename {modules/radio => radio}/src/path.h (100%) rename {modules/recorder => recorder}/CMakeLists.txt (89%) rename {modules/recorder => recorder}/src/main.cpp (100%) rename {modules/recorder => recorder}/src/wav.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b95e1d7..a9c6c4bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,65 +1,19 @@ -cmake_minimum_required(VERSION 3.9) -project(sdrpp) +cmake_minimum_required(VERSION 3.13) +project(sdrpp_core) -add_subdirectory("modules/radio") -add_subdirectory("modules/recorder") +add_subdirectory("core") +add_subdirectory("radio") +add_subdirectory("recorder") +add_subdirectory("demo") +add_executable(sdrpp "src/main.cpp" "win32/resources.rc") +target_link_libraries(sdrpp PRIVATE sdrpp_core) + +# Copy dynamic libs over if (MSVC) - set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - link_directories(sdrpp "C:/Program Files/PothosSDR/lib/") - include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/") - include_directories(sdrpp "C:/Program Files/PothosSDR/include/") - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + add_custom_target(do_always ALL xcopy /s \"$\\*.dll\" \"$\" /Y) else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") - include_directories(sdrpp "/usr/include/volk") - link_libraries(pthread) - link_libraries(GL) - link_libraries(GLEW) - link_libraries(glfw) - link_libraries(fftw3) - link_libraries(fftw3f) - link_libraries(portaudio) - link_libraries(X11) - link_libraries(Xxf86vm) - link_libraries(dl) -endif (MSVC) - -link_libraries(volk) -link_libraries(SoapySDR) - -# Main code -include_directories(sdrpp "src/") -include_directories(sdrpp "src/imgui") -file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "src/imgui/*.cpp") - -# If on windows, set the executable icon -if (MSVC) - set(SRC ${SRC} "win32/resources.rc") -endif (MSVC) - -add_executable(sdrpp ${SRC} ${IMGUI}) - -if (MSVC) - # Glew - find_package(GLEW REQUIRED) - target_link_libraries(sdrpp PRIVATE GLEW::GLEW) - - # GLFW3 - find_package(glfw3 CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE glfw) - - # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE FFTW3::fftw3) - find_package(FFTW3f CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE FFTW3::fftw3f) - - # PortAudio - find_package(portaudio CONFIG REQUIRED) - target_link_libraries(sdrpp PRIVATE portaudio portaudio_static) + add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") endif (MSVC) # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt new file mode 100644 index 00000000..d08495d7 --- /dev/null +++ b/core/CMakeLists.txt @@ -0,0 +1,74 @@ +cmake_minimum_required(VERSION 3.13) +project(sdrpp_core) + +# Set compiler options +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + +# Main code +file(GLOB SRC "src/*.cpp") +file(GLOB IMGUI "src/imgui/*.cpp") + +# Add code to dyn lib +add_library(sdrpp_core SHARED ${SRC} ${IMGUI}) + +# Include core headers +target_include_directories(sdrpp_core PUBLIC "src/") +target_include_directories(sdrpp_core PUBLIC "src/imgui") + + +if (MSVC) + # Lib path + target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") + + # Misc headers + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") + + # Volk + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/volk/") + target_link_libraries(sdrpp_core PUBLIC volk) + + # SoapySDR + target_link_libraries(sdrpp_core PUBLIC SoapySDR) + + # Glew + find_package(GLEW REQUIRED) + target_link_libraries(sdrpp_core PUBLIC GLEW::GLEW) + + # GLFW3 + find_package(glfw3 CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC glfw) + + # FFTW3 + find_package(FFTW3 CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3) + find_package(FFTW3f CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3f) + + # PortAudio + find_package(portaudio CONFIG REQUIRED) + target_link_libraries(sdrpp_core PUBLIC portaudio portaudio_static) + +else() + target_include_directories(sdrpp_core PUBLIC "/usr/include/volk") + + target_link_libraries(sdrpp_core PUBLIC pthread) + target_link_libraries(sdrpp_core PUBLIC GL) + target_link_libraries(sdrpp_core PUBLIC GLEW) + target_link_libraries(sdrpp_core PUBLIC glfw) + target_link_libraries(sdrpp_core PUBLIC fftw3) + target_link_libraries(sdrpp_core PUBLIC fftw3f) + target_link_libraries(sdrpp_core PUBLIC portaudio) + target_link_libraries(sdrpp_core PUBLIC X11) + target_link_libraries(sdrpp_core PUBLIC Xxf86vm) + target_link_libraries(sdrpp_core PUBLIC dl) +endif (MSVC) + +set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) + +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/src/audio.cpp b/core/src/audio.cpp similarity index 100% rename from src/audio.cpp rename to core/src/audio.cpp diff --git a/src/audio.h b/core/src/audio.h similarity index 100% rename from src/audio.h rename to core/src/audio.h diff --git a/src/bandplan.cpp b/core/src/bandplan.cpp similarity index 100% rename from src/bandplan.cpp rename to core/src/bandplan.cpp diff --git a/src/bandplan.h b/core/src/bandplan.h similarity index 100% rename from src/bandplan.h rename to core/src/bandplan.h diff --git a/src/config.cpp b/core/src/config.cpp similarity index 100% rename from src/config.cpp rename to core/src/config.cpp diff --git a/src/config.h b/core/src/config.h similarity index 100% rename from src/config.h rename to core/src/config.h diff --git a/core/src/core.cpp b/core/src/core.cpp new file mode 100644 index 00000000..4df80c94 --- /dev/null +++ b/core/src/core.cpp @@ -0,0 +1,250 @@ +#include "imgui.h" +#include "imgui_impl_glfw.h" +#include "imgui_impl_opengl3.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define STB_IMAGE_RESIZE_IMPLEMENTATION +#include + +#ifdef _WIN32 +#include +#endif + +// Comment to build a normal release +#define DEV_BUILD + +bool maximized = false; +bool fullScreen = false; + +static void glfw_error_callback(int error, const char* description) { + spdlog::error("Glfw Error {0}: {1}", error, description); +} + +static void maximized_callback(GLFWwindow* window, int n) { + if (n == GLFW_TRUE) { + maximized = true; + } + else { + maximized = false; + } +} + +// main +int sdrpp_main() { +#ifdef _WIN32 + //FreeConsole(); +#endif + + spdlog::info("SDR++ v" VERSION_STR); + +#ifdef DEV_BUILD + config::setRootDirectory("../root_dev"); +#elif _WIN32 + config::setRootDirectory("."); +#else + config::setRootDirectory("/etc/sdrpp"); +#endif + + // Load config + spdlog::info("Loading config"); + config::load(config::getRootDirectory() + "/config.json"); + config::startAutoSave(); + + // Setup window + glfwSetErrorCallback(glfw_error_callback); + if (!glfwInit()) { + return 1; + } + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac + + int winWidth = config::config["windowSize"]["w"]; + int winHeight = config::config["windowSize"]["h"]; + maximized = config::config["maximized"]; + + // Create window with graphics context + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); + if (window == NULL) + return 1; + glfwMakeContextCurrent(window); + glfwSwapInterval(1); // Enable vsync + + if (maximized) { + glfwMaximizeWindow(window); + } + + glfwSetWindowMaximizeCallback(window, maximized_callback); + + // Load app icon + GLFWimage icons[10]; + icons[0].pixels = stbi_load((config::getRootDirectory() + "/res/icons/sdrpp.png").c_str(), &icons[0].width, &icons[0].height, 0, 4); + icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; + icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; + icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; + icons[4].pixels = (unsigned char*)malloc(48 * 48 * 4); icons[4].width = icons[4].height = 48; + icons[5].pixels = (unsigned char*)malloc(64 * 64 * 4); icons[5].width = icons[5].height = 64; + icons[6].pixels = (unsigned char*)malloc(96 * 96 * 4); icons[6].width = icons[6].height = 96; + icons[7].pixels = (unsigned char*)malloc(128 * 128 * 4); icons[7].width = icons[7].height = 128; + icons[8].pixels = (unsigned char*)malloc(196 * 196 * 4); icons[8].width = icons[8].height = 196; + icons[9].pixels = (unsigned char*)malloc(256 * 256 * 4); icons[9].width = icons[9].height = 256; + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[1].pixels, 16, 16, 16 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[2].pixels, 24, 24, 24 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[3].pixels, 32, 32, 32 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[4].pixels, 48, 48, 48 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[5].pixels, 64, 64, 64 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[6].pixels, 96, 96, 96 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[7].pixels, 128, 128, 128 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[8].pixels, 196, 196, 196 * 4, 4); + stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[9].pixels, 256, 256, 256 * 4, 4); + glfwSetWindowIcon(window, 10, icons); + stbi_image_free(icons[0].pixels); + for (int i = 1; i < 10; i++) { + free(icons[i].pixels); + } + + if (glewInit() != GLEW_OK) { + spdlog::error("Failed to initialize OpenGL loader!"); + return 1; + } + + + // Setup Dear ImGui context + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGuiIO& io = ImGui::GetIO(); (void)io; + io.IniFilename = NULL; + + // Setup Platform/Renderer bindings + ImGui_ImplGlfw_InitForOpenGL(window, true); + ImGui_ImplOpenGL3_Init("#version 150"); + + style::setDarkStyle(); + + + // ==================================================== + // glfwPollEvents(); + ImGui_ImplOpenGL3_NewFrame(); + // ImGui_ImplGlfw_NewFrame(); + // ImGui::NewFrame(); + + // ImGui::ShowDemoWindow(); + + // ImGui::Render(); + int display_w, display_h; + glfwGetFramebufferSize(window, &display_w, &display_h); + glViewport(0, 0, display_w, display_h); + glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); + //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + glfwSwapBuffers(window); + // ==================================================== + + spdlog::info("Loading icons"); + icons::load(); + + spdlog::info("Loading band plans"); + bandplan::loadFromDir(config::getRootDirectory() + "/bandplans"); + + spdlog::info("Loading band plans color table"); + bandplan::loadColorTable(config::getRootDirectory() + "/band_colors.json"); + + windowInit(); + + spdlog::info("Ready."); + + bool _maximized = maximized; + int fsWidth, fsHeight, fsPosX, fsPosY; + + // Main loop + while (!glfwWindowShouldClose(window)) { + glfwPollEvents(); + + // Start the Dear ImGui frame + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + + if (_maximized != maximized) { + _maximized = maximized; + config::config["maximized"]= _maximized; + config::configModified = true; + if (!maximized) { + glfwSetWindowSize(window, config::config["windowSize"]["w"], config::config["windowSize"]["h"]); + } + } + + int _winWidth, _winHeight; + glfwGetWindowSize(window, &_winWidth, &_winHeight); + + if (ImGui::IsKeyPressed(GLFW_KEY_F11)) { + fullScreen = !fullScreen; + if (fullScreen) { + spdlog::info("Fullscreen: ON"); + fsWidth = _winWidth; + fsHeight = _winHeight; + glfwGetWindowPos(window, &fsPosX, &fsPosY); + const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, 0); + } + else { + spdlog::info("Fullscreen: OFF"); + glfwSetWindowMonitor(window, nullptr, fsPosX, fsPosY, fsWidth, fsHeight, 0); + } + } + + if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { + winWidth = _winWidth; + winHeight = _winHeight; + config::config["windowSize"]["w"] = winWidth; + config::config["windowSize"]["h"] = winHeight; + config::configModified = true; + } + + if (winWidth > 0 && winHeight > 0) { + ImGui::SetNextWindowPos(ImVec2(0, 0)); + ImGui::SetNextWindowSize(ImVec2(_winWidth, _winHeight)); + drawWindow(); + } + + // Rendering + ImGui::Render(); + int display_w, display_h; + glfwGetFramebufferSize(window, &display_w, &display_h); + glViewport(0, 0, display_w, display_h); + glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); + //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + glfwSwapBuffers(window); + } + + // Cleanup + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); + + glfwDestroyWindow(window); + glfwTerminate(); + + return 0; +} \ No newline at end of file diff --git a/core/src/core.h b/core/src/core.h new file mode 100644 index 00000000..ce5ea1fd --- /dev/null +++ b/core/src/core.h @@ -0,0 +1,3 @@ +#pragma once + +int sdrpp_main(); \ No newline at end of file diff --git a/src/dsp/block.h b/core/src/dsp/block.h similarity index 100% rename from src/dsp/block.h rename to core/src/dsp/block.h diff --git a/src/dsp/correction.h b/core/src/dsp/correction.h similarity index 100% rename from src/dsp/correction.h rename to core/src/dsp/correction.h diff --git a/src/dsp/demodulator.h b/core/src/dsp/demodulator.h similarity index 100% rename from src/dsp/demodulator.h rename to core/src/dsp/demodulator.h diff --git a/src/dsp/filter.h b/core/src/dsp/filter.h similarity index 100% rename from src/dsp/filter.h rename to core/src/dsp/filter.h diff --git a/src/dsp/math.h b/core/src/dsp/math.h similarity index 100% rename from src/dsp/math.h rename to core/src/dsp/math.h diff --git a/src/dsp/resampling.h b/core/src/dsp/resampling.h similarity index 100% rename from src/dsp/resampling.h rename to core/src/dsp/resampling.h diff --git a/src/dsp/routing.h b/core/src/dsp/routing.h similarity index 100% rename from src/dsp/routing.h rename to core/src/dsp/routing.h diff --git a/src/dsp/sink.h b/core/src/dsp/sink.h similarity index 100% rename from src/dsp/sink.h rename to core/src/dsp/sink.h diff --git a/src/dsp/source.h b/core/src/dsp/source.h similarity index 100% rename from src/dsp/source.h rename to core/src/dsp/source.h diff --git a/src/dsp/stream.h b/core/src/dsp/stream.h similarity index 100% rename from src/dsp/stream.h rename to core/src/dsp/stream.h diff --git a/src/dsp/types.h b/core/src/dsp/types.h similarity index 100% rename from src/dsp/types.h rename to core/src/dsp/types.h diff --git a/src/dsp/vfo.h b/core/src/dsp/vfo.h similarity index 100% rename from src/dsp/vfo.h rename to core/src/dsp/vfo.h diff --git a/src/frequency_select.cpp b/core/src/frequency_select.cpp similarity index 99% rename from src/frequency_select.cpp rename to core/src/frequency_select.cpp index 45c4f576..fe750ff0 100644 --- a/src/frequency_select.cpp +++ b/core/src/frequency_select.cpp @@ -12,6 +12,7 @@ void FrequencySelect::init() { font = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 42.0f); for (int i = 0; i < 12; i++) { digits[i] = 0; + } } diff --git a/src/frequency_select.h b/core/src/frequency_select.h similarity index 100% rename from src/frequency_select.h rename to core/src/frequency_select.h diff --git a/src/icons.cpp b/core/src/icons.cpp similarity index 100% rename from src/icons.cpp rename to core/src/icons.cpp diff --git a/src/icons.h b/core/src/icons.h similarity index 100% rename from src/icons.h rename to core/src/icons.h diff --git a/src/imgui/imconfig.h b/core/src/imgui/imconfig.h similarity index 100% rename from src/imgui/imconfig.h rename to core/src/imgui/imconfig.h diff --git a/src/imgui/imgui.cpp b/core/src/imgui/imgui.cpp similarity index 100% rename from src/imgui/imgui.cpp rename to core/src/imgui/imgui.cpp diff --git a/src/imgui/imgui.h b/core/src/imgui/imgui.h similarity index 100% rename from src/imgui/imgui.h rename to core/src/imgui/imgui.h diff --git a/src/imgui/imgui_demo.cpp b/core/src/imgui/imgui_demo.cpp similarity index 100% rename from src/imgui/imgui_demo.cpp rename to core/src/imgui/imgui_demo.cpp diff --git a/src/imgui/imgui_draw.cpp b/core/src/imgui/imgui_draw.cpp similarity index 100% rename from src/imgui/imgui_draw.cpp rename to core/src/imgui/imgui_draw.cpp diff --git a/src/imgui/imgui_impl_glfw.cpp b/core/src/imgui/imgui_impl_glfw.cpp similarity index 100% rename from src/imgui/imgui_impl_glfw.cpp rename to core/src/imgui/imgui_impl_glfw.cpp diff --git a/src/imgui/imgui_impl_glfw.h b/core/src/imgui/imgui_impl_glfw.h similarity index 100% rename from src/imgui/imgui_impl_glfw.h rename to core/src/imgui/imgui_impl_glfw.h diff --git a/src/imgui/imgui_impl_opengl3.cpp b/core/src/imgui/imgui_impl_opengl3.cpp similarity index 100% rename from src/imgui/imgui_impl_opengl3.cpp rename to core/src/imgui/imgui_impl_opengl3.cpp diff --git a/src/imgui/imgui_impl_opengl3.h b/core/src/imgui/imgui_impl_opengl3.h similarity index 100% rename from src/imgui/imgui_impl_opengl3.h rename to core/src/imgui/imgui_impl_opengl3.h diff --git a/src/imgui/imgui_internal.h b/core/src/imgui/imgui_internal.h similarity index 100% rename from src/imgui/imgui_internal.h rename to core/src/imgui/imgui_internal.h diff --git a/src/imgui/imgui_plot.cpp b/core/src/imgui/imgui_plot.cpp similarity index 100% rename from src/imgui/imgui_plot.cpp rename to core/src/imgui/imgui_plot.cpp diff --git a/src/imgui/imgui_plot.h b/core/src/imgui/imgui_plot.h similarity index 100% rename from src/imgui/imgui_plot.h rename to core/src/imgui/imgui_plot.h diff --git a/src/imgui/imgui_widgets.cpp b/core/src/imgui/imgui_widgets.cpp similarity index 100% rename from src/imgui/imgui_widgets.cpp rename to core/src/imgui/imgui_widgets.cpp diff --git a/src/imgui/imstb_rectpack.h b/core/src/imgui/imstb_rectpack.h similarity index 100% rename from src/imgui/imstb_rectpack.h rename to core/src/imgui/imstb_rectpack.h diff --git a/src/imgui/imstb_textedit.h b/core/src/imgui/imstb_textedit.h similarity index 100% rename from src/imgui/imstb_textedit.h rename to core/src/imgui/imstb_textedit.h diff --git a/src/imgui/imstb_truetype.h b/core/src/imgui/imstb_truetype.h similarity index 100% rename from src/imgui/imstb_truetype.h rename to core/src/imgui/imstb_truetype.h diff --git a/src/imgui/imutils.h b/core/src/imgui/imutils.h similarity index 100% rename from src/imgui/imutils.h rename to core/src/imgui/imutils.h diff --git a/src/imgui/stb_image.h b/core/src/imgui/stb_image.h similarity index 100% rename from src/imgui/stb_image.h rename to core/src/imgui/stb_image.h diff --git a/src/imgui/stb_image_resize.h b/core/src/imgui/stb_image_resize.h similarity index 100% rename from src/imgui/stb_image_resize.h rename to core/src/imgui/stb_image_resize.h diff --git a/src/io/audio.h b/core/src/io/audio.h similarity index 100% rename from src/io/audio.h rename to core/src/io/audio.h diff --git a/src/io/soapy.h b/core/src/io/soapy.h similarity index 98% rename from src/io/soapy.h rename to core/src/io/soapy.h index ac1311f1..bb0c97ca 100644 --- a/src/io/soapy.h +++ b/core/src/io/soapy.h @@ -10,8 +10,12 @@ namespace io { class SoapyWrapper { public: SoapyWrapper() { + + } + + void init() { SoapySDR::registerLogHandler(_logHandler); - SoapySDR::Device::make(""); + //SoapySDR::Device::make(""); output.init(64000); currentGains = new float[1]; @@ -52,7 +56,6 @@ namespace io { if (running) { return; } - devList = SoapySDR::Device::enumerate(); txtDevList = ""; devNameList.clear(); diff --git a/src/json.hpp b/core/src/json.hpp similarity index 100% rename from src/json.hpp rename to core/src/json.hpp diff --git a/src/main_window.cpp b/core/src/main_window.cpp similarity index 99% rename from src/main_window.cpp rename to core/src/main_window.cpp index 8c9f4504..bd196ffc 100644 --- a/src/main_window.cpp +++ b/core/src/main_window.cpp @@ -155,6 +155,9 @@ void saveAudioConfig(std::string name) { } void windowInit() { + spdlog::info("Initializing SoapySDR"); + soapy.init(); + fSel.init(); fft_in = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); diff --git a/src/main_window.h b/core/src/main_window.h similarity index 100% rename from src/main_window.h rename to core/src/main_window.h diff --git a/src/module.cpp b/core/src/module.cpp similarity index 100% rename from src/module.cpp rename to core/src/module.cpp diff --git a/src/module.h b/core/src/module.h similarity index 100% rename from src/module.h rename to core/src/module.h diff --git a/src/signal_path.cpp b/core/src/signal_path.cpp similarity index 100% rename from src/signal_path.cpp rename to core/src/signal_path.cpp diff --git a/src/signal_path.h b/core/src/signal_path.h similarity index 100% rename from src/signal_path.h rename to core/src/signal_path.h diff --git a/src/spdlog/async.h b/core/src/spdlog/async.h similarity index 100% rename from src/spdlog/async.h rename to core/src/spdlog/async.h diff --git a/src/spdlog/async_logger-inl.h b/core/src/spdlog/async_logger-inl.h similarity index 100% rename from src/spdlog/async_logger-inl.h rename to core/src/spdlog/async_logger-inl.h diff --git a/src/spdlog/async_logger.h b/core/src/spdlog/async_logger.h similarity index 100% rename from src/spdlog/async_logger.h rename to core/src/spdlog/async_logger.h diff --git a/src/spdlog/cfg/argv.h b/core/src/spdlog/cfg/argv.h similarity index 100% rename from src/spdlog/cfg/argv.h rename to core/src/spdlog/cfg/argv.h diff --git a/src/spdlog/cfg/env.h b/core/src/spdlog/cfg/env.h similarity index 100% rename from src/spdlog/cfg/env.h rename to core/src/spdlog/cfg/env.h diff --git a/src/spdlog/cfg/helpers-inl.h b/core/src/spdlog/cfg/helpers-inl.h similarity index 100% rename from src/spdlog/cfg/helpers-inl.h rename to core/src/spdlog/cfg/helpers-inl.h diff --git a/src/spdlog/cfg/helpers.h b/core/src/spdlog/cfg/helpers.h similarity index 100% rename from src/spdlog/cfg/helpers.h rename to core/src/spdlog/cfg/helpers.h diff --git a/src/spdlog/cfg/log_levels.h b/core/src/spdlog/cfg/log_levels.h similarity index 100% rename from src/spdlog/cfg/log_levels.h rename to core/src/spdlog/cfg/log_levels.h diff --git a/src/spdlog/common-inl.h b/core/src/spdlog/common-inl.h similarity index 100% rename from src/spdlog/common-inl.h rename to core/src/spdlog/common-inl.h diff --git a/src/spdlog/common.h b/core/src/spdlog/common.h similarity index 100% rename from src/spdlog/common.h rename to core/src/spdlog/common.h diff --git a/src/spdlog/details/backtracer-inl.h b/core/src/spdlog/details/backtracer-inl.h similarity index 100% rename from src/spdlog/details/backtracer-inl.h rename to core/src/spdlog/details/backtracer-inl.h diff --git a/src/spdlog/details/backtracer.h b/core/src/spdlog/details/backtracer.h similarity index 100% rename from src/spdlog/details/backtracer.h rename to core/src/spdlog/details/backtracer.h diff --git a/src/spdlog/details/circular_q.h b/core/src/spdlog/details/circular_q.h similarity index 100% rename from src/spdlog/details/circular_q.h rename to core/src/spdlog/details/circular_q.h diff --git a/src/spdlog/details/console_globals.h b/core/src/spdlog/details/console_globals.h similarity index 100% rename from src/spdlog/details/console_globals.h rename to core/src/spdlog/details/console_globals.h diff --git a/src/spdlog/details/file_helper-inl.h b/core/src/spdlog/details/file_helper-inl.h similarity index 100% rename from src/spdlog/details/file_helper-inl.h rename to core/src/spdlog/details/file_helper-inl.h diff --git a/src/spdlog/details/file_helper.h b/core/src/spdlog/details/file_helper.h similarity index 100% rename from src/spdlog/details/file_helper.h rename to core/src/spdlog/details/file_helper.h diff --git a/src/spdlog/details/fmt_helper.h b/core/src/spdlog/details/fmt_helper.h similarity index 100% rename from src/spdlog/details/fmt_helper.h rename to core/src/spdlog/details/fmt_helper.h diff --git a/src/spdlog/details/log_msg-inl.h b/core/src/spdlog/details/log_msg-inl.h similarity index 100% rename from src/spdlog/details/log_msg-inl.h rename to core/src/spdlog/details/log_msg-inl.h diff --git a/src/spdlog/details/log_msg.h b/core/src/spdlog/details/log_msg.h similarity index 100% rename from src/spdlog/details/log_msg.h rename to core/src/spdlog/details/log_msg.h diff --git a/src/spdlog/details/log_msg_buffer-inl.h b/core/src/spdlog/details/log_msg_buffer-inl.h similarity index 100% rename from src/spdlog/details/log_msg_buffer-inl.h rename to core/src/spdlog/details/log_msg_buffer-inl.h diff --git a/src/spdlog/details/log_msg_buffer.h b/core/src/spdlog/details/log_msg_buffer.h similarity index 100% rename from src/spdlog/details/log_msg_buffer.h rename to core/src/spdlog/details/log_msg_buffer.h diff --git a/src/spdlog/details/mpmc_blocking_q.h b/core/src/spdlog/details/mpmc_blocking_q.h similarity index 100% rename from src/spdlog/details/mpmc_blocking_q.h rename to core/src/spdlog/details/mpmc_blocking_q.h diff --git a/src/spdlog/details/null_mutex.h b/core/src/spdlog/details/null_mutex.h similarity index 100% rename from src/spdlog/details/null_mutex.h rename to core/src/spdlog/details/null_mutex.h diff --git a/src/spdlog/details/os-inl.h b/core/src/spdlog/details/os-inl.h similarity index 100% rename from src/spdlog/details/os-inl.h rename to core/src/spdlog/details/os-inl.h diff --git a/src/spdlog/details/os.h b/core/src/spdlog/details/os.h similarity index 100% rename from src/spdlog/details/os.h rename to core/src/spdlog/details/os.h diff --git a/src/spdlog/details/periodic_worker-inl.h b/core/src/spdlog/details/periodic_worker-inl.h similarity index 100% rename from src/spdlog/details/periodic_worker-inl.h rename to core/src/spdlog/details/periodic_worker-inl.h diff --git a/src/spdlog/details/periodic_worker.h b/core/src/spdlog/details/periodic_worker.h similarity index 100% rename from src/spdlog/details/periodic_worker.h rename to core/src/spdlog/details/periodic_worker.h diff --git a/src/spdlog/details/registry-inl.h b/core/src/spdlog/details/registry-inl.h similarity index 100% rename from src/spdlog/details/registry-inl.h rename to core/src/spdlog/details/registry-inl.h diff --git a/src/spdlog/details/registry.h b/core/src/spdlog/details/registry.h similarity index 100% rename from src/spdlog/details/registry.h rename to core/src/spdlog/details/registry.h diff --git a/src/spdlog/details/synchronous_factory.h b/core/src/spdlog/details/synchronous_factory.h similarity index 100% rename from src/spdlog/details/synchronous_factory.h rename to core/src/spdlog/details/synchronous_factory.h diff --git a/src/spdlog/details/tcp_client-windows.h b/core/src/spdlog/details/tcp_client-windows.h similarity index 100% rename from src/spdlog/details/tcp_client-windows.h rename to core/src/spdlog/details/tcp_client-windows.h diff --git a/src/spdlog/details/tcp_client.h b/core/src/spdlog/details/tcp_client.h similarity index 100% rename from src/spdlog/details/tcp_client.h rename to core/src/spdlog/details/tcp_client.h diff --git a/src/spdlog/details/thread_pool-inl.h b/core/src/spdlog/details/thread_pool-inl.h similarity index 100% rename from src/spdlog/details/thread_pool-inl.h rename to core/src/spdlog/details/thread_pool-inl.h diff --git a/src/spdlog/details/thread_pool.h b/core/src/spdlog/details/thread_pool.h similarity index 100% rename from src/spdlog/details/thread_pool.h rename to core/src/spdlog/details/thread_pool.h diff --git a/src/spdlog/details/windows_include.h b/core/src/spdlog/details/windows_include.h similarity index 100% rename from src/spdlog/details/windows_include.h rename to core/src/spdlog/details/windows_include.h diff --git a/src/spdlog/fmt/bin_to_hex.h b/core/src/spdlog/fmt/bin_to_hex.h similarity index 100% rename from src/spdlog/fmt/bin_to_hex.h rename to core/src/spdlog/fmt/bin_to_hex.h diff --git a/src/spdlog/fmt/bundled/LICENSE.rst b/core/src/spdlog/fmt/bundled/LICENSE.rst similarity index 100% rename from src/spdlog/fmt/bundled/LICENSE.rst rename to core/src/spdlog/fmt/bundled/LICENSE.rst diff --git a/src/spdlog/fmt/bundled/chrono.h b/core/src/spdlog/fmt/bundled/chrono.h similarity index 100% rename from src/spdlog/fmt/bundled/chrono.h rename to core/src/spdlog/fmt/bundled/chrono.h diff --git a/src/spdlog/fmt/bundled/color.h b/core/src/spdlog/fmt/bundled/color.h similarity index 100% rename from src/spdlog/fmt/bundled/color.h rename to core/src/spdlog/fmt/bundled/color.h diff --git a/src/spdlog/fmt/bundled/compile.h b/core/src/spdlog/fmt/bundled/compile.h similarity index 100% rename from src/spdlog/fmt/bundled/compile.h rename to core/src/spdlog/fmt/bundled/compile.h diff --git a/src/spdlog/fmt/bundled/core.h b/core/src/spdlog/fmt/bundled/core.h similarity index 100% rename from src/spdlog/fmt/bundled/core.h rename to core/src/spdlog/fmt/bundled/core.h diff --git a/src/spdlog/fmt/bundled/format-inl.h b/core/src/spdlog/fmt/bundled/format-inl.h similarity index 100% rename from src/spdlog/fmt/bundled/format-inl.h rename to core/src/spdlog/fmt/bundled/format-inl.h diff --git a/src/spdlog/fmt/bundled/format.h b/core/src/spdlog/fmt/bundled/format.h similarity index 100% rename from src/spdlog/fmt/bundled/format.h rename to core/src/spdlog/fmt/bundled/format.h diff --git a/src/spdlog/fmt/bundled/locale.h b/core/src/spdlog/fmt/bundled/locale.h similarity index 100% rename from src/spdlog/fmt/bundled/locale.h rename to core/src/spdlog/fmt/bundled/locale.h diff --git a/src/spdlog/fmt/bundled/ostream.h b/core/src/spdlog/fmt/bundled/ostream.h similarity index 100% rename from src/spdlog/fmt/bundled/ostream.h rename to core/src/spdlog/fmt/bundled/ostream.h diff --git a/src/spdlog/fmt/bundled/posix.h b/core/src/spdlog/fmt/bundled/posix.h similarity index 100% rename from src/spdlog/fmt/bundled/posix.h rename to core/src/spdlog/fmt/bundled/posix.h diff --git a/src/spdlog/fmt/bundled/printf.h b/core/src/spdlog/fmt/bundled/printf.h similarity index 100% rename from src/spdlog/fmt/bundled/printf.h rename to core/src/spdlog/fmt/bundled/printf.h diff --git a/src/spdlog/fmt/bundled/ranges.h b/core/src/spdlog/fmt/bundled/ranges.h similarity index 100% rename from src/spdlog/fmt/bundled/ranges.h rename to core/src/spdlog/fmt/bundled/ranges.h diff --git a/src/spdlog/fmt/fmt.h b/core/src/spdlog/fmt/fmt.h similarity index 100% rename from src/spdlog/fmt/fmt.h rename to core/src/spdlog/fmt/fmt.h diff --git a/src/spdlog/fmt/ostr.h b/core/src/spdlog/fmt/ostr.h similarity index 100% rename from src/spdlog/fmt/ostr.h rename to core/src/spdlog/fmt/ostr.h diff --git a/src/spdlog/formatter.h b/core/src/spdlog/formatter.h similarity index 100% rename from src/spdlog/formatter.h rename to core/src/spdlog/formatter.h diff --git a/src/spdlog/fwd.h b/core/src/spdlog/fwd.h similarity index 100% rename from src/spdlog/fwd.h rename to core/src/spdlog/fwd.h diff --git a/src/spdlog/logger-inl.h b/core/src/spdlog/logger-inl.h similarity index 100% rename from src/spdlog/logger-inl.h rename to core/src/spdlog/logger-inl.h diff --git a/src/spdlog/logger.h b/core/src/spdlog/logger.h similarity index 100% rename from src/spdlog/logger.h rename to core/src/spdlog/logger.h diff --git a/src/spdlog/pattern_formatter-inl.h b/core/src/spdlog/pattern_formatter-inl.h similarity index 100% rename from src/spdlog/pattern_formatter-inl.h rename to core/src/spdlog/pattern_formatter-inl.h diff --git a/src/spdlog/pattern_formatter.h b/core/src/spdlog/pattern_formatter.h similarity index 100% rename from src/spdlog/pattern_formatter.h rename to core/src/spdlog/pattern_formatter.h diff --git a/src/spdlog/sinks/android_sink.h b/core/src/spdlog/sinks/android_sink.h similarity index 100% rename from src/spdlog/sinks/android_sink.h rename to core/src/spdlog/sinks/android_sink.h diff --git a/src/spdlog/sinks/ansicolor_sink-inl.h b/core/src/spdlog/sinks/ansicolor_sink-inl.h similarity index 100% rename from src/spdlog/sinks/ansicolor_sink-inl.h rename to core/src/spdlog/sinks/ansicolor_sink-inl.h diff --git a/src/spdlog/sinks/ansicolor_sink.h b/core/src/spdlog/sinks/ansicolor_sink.h similarity index 100% rename from src/spdlog/sinks/ansicolor_sink.h rename to core/src/spdlog/sinks/ansicolor_sink.h diff --git a/src/spdlog/sinks/base_sink-inl.h b/core/src/spdlog/sinks/base_sink-inl.h similarity index 100% rename from src/spdlog/sinks/base_sink-inl.h rename to core/src/spdlog/sinks/base_sink-inl.h diff --git a/src/spdlog/sinks/base_sink.h b/core/src/spdlog/sinks/base_sink.h similarity index 100% rename from src/spdlog/sinks/base_sink.h rename to core/src/spdlog/sinks/base_sink.h diff --git a/src/spdlog/sinks/basic_file_sink-inl.h b/core/src/spdlog/sinks/basic_file_sink-inl.h similarity index 100% rename from src/spdlog/sinks/basic_file_sink-inl.h rename to core/src/spdlog/sinks/basic_file_sink-inl.h diff --git a/src/spdlog/sinks/basic_file_sink.h b/core/src/spdlog/sinks/basic_file_sink.h similarity index 100% rename from src/spdlog/sinks/basic_file_sink.h rename to core/src/spdlog/sinks/basic_file_sink.h diff --git a/src/spdlog/sinks/daily_file_sink.h b/core/src/spdlog/sinks/daily_file_sink.h similarity index 100% rename from src/spdlog/sinks/daily_file_sink.h rename to core/src/spdlog/sinks/daily_file_sink.h diff --git a/src/spdlog/sinks/dist_sink.h b/core/src/spdlog/sinks/dist_sink.h similarity index 100% rename from src/spdlog/sinks/dist_sink.h rename to core/src/spdlog/sinks/dist_sink.h diff --git a/src/spdlog/sinks/dup_filter_sink.h b/core/src/spdlog/sinks/dup_filter_sink.h similarity index 100% rename from src/spdlog/sinks/dup_filter_sink.h rename to core/src/spdlog/sinks/dup_filter_sink.h diff --git a/src/spdlog/sinks/msvc_sink.h b/core/src/spdlog/sinks/msvc_sink.h similarity index 100% rename from src/spdlog/sinks/msvc_sink.h rename to core/src/spdlog/sinks/msvc_sink.h diff --git a/src/spdlog/sinks/null_sink.h b/core/src/spdlog/sinks/null_sink.h similarity index 100% rename from src/spdlog/sinks/null_sink.h rename to core/src/spdlog/sinks/null_sink.h diff --git a/src/spdlog/sinks/ostream_sink.h b/core/src/spdlog/sinks/ostream_sink.h similarity index 100% rename from src/spdlog/sinks/ostream_sink.h rename to core/src/spdlog/sinks/ostream_sink.h diff --git a/src/spdlog/sinks/ringbuffer_sink.h b/core/src/spdlog/sinks/ringbuffer_sink.h similarity index 100% rename from src/spdlog/sinks/ringbuffer_sink.h rename to core/src/spdlog/sinks/ringbuffer_sink.h diff --git a/src/spdlog/sinks/rotating_file_sink-inl.h b/core/src/spdlog/sinks/rotating_file_sink-inl.h similarity index 100% rename from src/spdlog/sinks/rotating_file_sink-inl.h rename to core/src/spdlog/sinks/rotating_file_sink-inl.h diff --git a/src/spdlog/sinks/rotating_file_sink.h b/core/src/spdlog/sinks/rotating_file_sink.h similarity index 100% rename from src/spdlog/sinks/rotating_file_sink.h rename to core/src/spdlog/sinks/rotating_file_sink.h diff --git a/src/spdlog/sinks/sink-inl.h b/core/src/spdlog/sinks/sink-inl.h similarity index 100% rename from src/spdlog/sinks/sink-inl.h rename to core/src/spdlog/sinks/sink-inl.h diff --git a/src/spdlog/sinks/sink.h b/core/src/spdlog/sinks/sink.h similarity index 100% rename from src/spdlog/sinks/sink.h rename to core/src/spdlog/sinks/sink.h diff --git a/src/spdlog/sinks/stdout_color_sinks-inl.h b/core/src/spdlog/sinks/stdout_color_sinks-inl.h similarity index 100% rename from src/spdlog/sinks/stdout_color_sinks-inl.h rename to core/src/spdlog/sinks/stdout_color_sinks-inl.h diff --git a/src/spdlog/sinks/stdout_color_sinks.h b/core/src/spdlog/sinks/stdout_color_sinks.h similarity index 100% rename from src/spdlog/sinks/stdout_color_sinks.h rename to core/src/spdlog/sinks/stdout_color_sinks.h diff --git a/src/spdlog/sinks/stdout_sinks-inl.h b/core/src/spdlog/sinks/stdout_sinks-inl.h similarity index 100% rename from src/spdlog/sinks/stdout_sinks-inl.h rename to core/src/spdlog/sinks/stdout_sinks-inl.h diff --git a/src/spdlog/sinks/stdout_sinks.h b/core/src/spdlog/sinks/stdout_sinks.h similarity index 100% rename from src/spdlog/sinks/stdout_sinks.h rename to core/src/spdlog/sinks/stdout_sinks.h diff --git a/src/spdlog/sinks/syslog_sink.h b/core/src/spdlog/sinks/syslog_sink.h similarity index 100% rename from src/spdlog/sinks/syslog_sink.h rename to core/src/spdlog/sinks/syslog_sink.h diff --git a/src/spdlog/sinks/systemd_sink.h b/core/src/spdlog/sinks/systemd_sink.h similarity index 100% rename from src/spdlog/sinks/systemd_sink.h rename to core/src/spdlog/sinks/systemd_sink.h diff --git a/src/spdlog/sinks/tcp_sink.h b/core/src/spdlog/sinks/tcp_sink.h similarity index 100% rename from src/spdlog/sinks/tcp_sink.h rename to core/src/spdlog/sinks/tcp_sink.h diff --git a/src/spdlog/sinks/win_eventlog_sink.h b/core/src/spdlog/sinks/win_eventlog_sink.h similarity index 100% rename from src/spdlog/sinks/win_eventlog_sink.h rename to core/src/spdlog/sinks/win_eventlog_sink.h diff --git a/src/spdlog/sinks/wincolor_sink-inl.h b/core/src/spdlog/sinks/wincolor_sink-inl.h similarity index 100% rename from src/spdlog/sinks/wincolor_sink-inl.h rename to core/src/spdlog/sinks/wincolor_sink-inl.h diff --git a/src/spdlog/sinks/wincolor_sink.h b/core/src/spdlog/sinks/wincolor_sink.h similarity index 100% rename from src/spdlog/sinks/wincolor_sink.h rename to core/src/spdlog/sinks/wincolor_sink.h diff --git a/src/spdlog/spdlog-inl.h b/core/src/spdlog/spdlog-inl.h similarity index 100% rename from src/spdlog/spdlog-inl.h rename to core/src/spdlog/spdlog-inl.h diff --git a/src/spdlog/spdlog.h b/core/src/spdlog/spdlog.h similarity index 100% rename from src/spdlog/spdlog.h rename to core/src/spdlog/spdlog.h diff --git a/src/spdlog/tweakme.h b/core/src/spdlog/tweakme.h similarity index 100% rename from src/spdlog/tweakme.h rename to core/src/spdlog/tweakme.h diff --git a/src/spdlog/version.h b/core/src/spdlog/version.h similarity index 100% rename from src/spdlog/version.h rename to core/src/spdlog/version.h diff --git a/src/style.cpp b/core/src/style.cpp similarity index 98% rename from src/style.cpp rename to core/src/style.cpp index a8ff6996..9f2a5b15 100644 --- a/src/style.cpp +++ b/core/src/style.cpp @@ -15,6 +15,10 @@ namespace style { //ImGui::StyleColorsLight(); } + void testtt() { + ImGui::StyleColorsLight(); + } + void setDarkStyle() { ImGui::GetStyle().WindowRounding = 0.0f; ImGui::GetStyle().ChildRounding = 0.0f; diff --git a/src/style.h b/core/src/style.h similarity index 91% rename from src/style.h rename to core/src/style.h index 527bde14..e588539f 100644 --- a/src/style.h +++ b/core/src/style.h @@ -8,4 +8,5 @@ namespace style { void setDarkStyle(); void beginDisabled(); void endDisabled(); + void testtt(); } \ No newline at end of file diff --git a/src/version.h b/core/src/version.h similarity index 100% rename from src/version.h rename to core/src/version.h diff --git a/src/vfo_manager.cpp b/core/src/vfo_manager.cpp similarity index 100% rename from src/vfo_manager.cpp rename to core/src/vfo_manager.cpp diff --git a/src/vfo_manager.h b/core/src/vfo_manager.h similarity index 100% rename from src/vfo_manager.h rename to core/src/vfo_manager.h diff --git a/src/watcher.h b/core/src/watcher.h similarity index 100% rename from src/watcher.h rename to core/src/watcher.h diff --git a/src/waterfall.cpp b/core/src/waterfall.cpp similarity index 100% rename from src/waterfall.cpp rename to core/src/waterfall.cpp diff --git a/src/waterfall.h b/core/src/waterfall.h similarity index 100% rename from src/waterfall.h rename to core/src/waterfall.h diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt new file mode 100644 index 00000000..9fe9176a --- /dev/null +++ b/demo/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.13) +project(demo) + +file(GLOB SRC "src/*.cpp") + +add_library(demo SHARED ${SRC}) +target_link_libraries(demo PRIVATE sdrpp_core) \ No newline at end of file diff --git a/demo/src/main.cpp b/demo/src/main.cpp new file mode 100644 index 00000000..8abd3cf3 --- /dev/null +++ b/demo/src/main.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + + +struct DemoContext_t { + std::string name; +}; + +MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { + DemoContext_t* ctx = new DemoContext_t; + ctx->name = _name; + return ctx; +} + +MOD_EXPORT void _NEW_FRAME_(DemoContext_t* ctx) { + +} + +MOD_EXPORT void _DRAW_MENU_(DemoContext_t* ctx) { + ImGui::Text(ctx->name.c_str()); +} + +MOD_EXPORT void _HANDLE_EVENT_(DemoContext_t* ctx, int eventId) { + +} + +MOD_EXPORT void _STOP_(DemoContext_t* ctx) { + +} \ No newline at end of file diff --git a/modules/demo/CMakeLists.txt b/modules/demo/CMakeLists.txt deleted file mode 100644 index 25e29d07..00000000 --- a/modules/demo/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -cmake_minimum_required(VERSION 3.9) -project(demo) - -if (MSVC) - set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - link_directories(demo "C:/Program Files/PothosSDR/lib/") - include_directories(demo "C:/Program Files/PothosSDR/include/volk/") - include_directories(demo "C:/Program Files/PothosSDR/include/") -else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") - include_directories(demo "/usr/include/volk") - link_libraries(pthread) - link_libraries(GL) - link_libraries(GLEW) - link_libraries(glfw) - link_libraries(fftw3) - link_libraries(fftw3f) - link_libraries(portaudio) - link_libraries(X11) - link_libraries(Xxf86vm) -endif (MSVC) - -link_libraries(volk) -link_libraries(SoapySDR) - -# Main code -include_directories(demo "src/") -include_directories(demo "../../src/") -include_directories(demo "../../src/imgui") -file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../../src/imgui/*.cpp") -add_library(demo SHARED ${SRC} ${IMGUI}) -set_target_properties(demo PROPERTIES PREFIX "") - -if (MSVC) - # Glew - find_package(GLEW REQUIRED) - target_link_libraries(demo PRIVATE GLEW::GLEW) - - # GLFW3 - find_package(glfw3 CONFIG REQUIRED) - target_link_libraries(demo PRIVATE glfw) - - # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(demo PRIVATE FFTW3::fftw3) - find_package(FFTW3f CONFIG REQUIRED) - target_link_libraries(demo PRIVATE FFTW3::fftw3f) - - # PortAudio - find_package(portaudio CONFIG REQUIRED) - target_link_libraries(demo PRIVATE portaudio portaudio_static) -endif (MSVC) - -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file diff --git a/modules/demo/src/main.cpp b/modules/demo/src/main.cpp deleted file mode 100644 index d22f6377..00000000 --- a/modules/demo/src/main.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -mod::API_t* API; - -struct ExampleContext_t { - std::string name; -}; - -MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { - API = _API; - ExampleContext_t* ctx = new ExampleContext_t; - ctx->name = _name; - ImGui::SetCurrentContext(imctx); - return ctx; -} - -MOD_EXPORT void _NEW_FRAME_(ExampleContext_t* ctx) { - -} - -MOD_EXPORT void _DRAW_MENU_(ExampleContext_t* ctx) { - ImGui::Text("Demo!"); -} - -MOD_EXPORT void _HANDLE_EVENT_(ExampleContext_t* ctx, int eventId) { - -} - -MOD_EXPORT void _STOP_(ExampleContext_t* ctx) { - -} \ No newline at end of file diff --git a/modules/radio/CMakeLists.txt b/radio/CMakeLists.txt similarity index 90% rename from modules/radio/CMakeLists.txt rename to radio/CMakeLists.txt index fb00414f..2ac85c54 100644 --- a/modules/radio/CMakeLists.txt +++ b/radio/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.13) project(radio) if (MSVC) @@ -25,10 +25,10 @@ link_libraries(SoapySDR) # Main code include_directories(radio "src/") -include_directories(radio "../../src/") -include_directories(radio "../../src/imgui") +include_directories(radio "../core/src/") +include_directories(radio "../core/src/imgui") file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../../src/imgui/*.cpp") +file(GLOB IMGUI "../core/src/imgui/*.cpp") add_library(radio SHARED ${SRC} ${IMGUI}) set_target_properties(radio PROPERTIES PREFIX "") diff --git a/modules/radio/src/main.cpp b/radio/src/main.cpp similarity index 100% rename from modules/radio/src/main.cpp rename to radio/src/main.cpp diff --git a/modules/radio/src/path.cpp b/radio/src/path.cpp similarity index 100% rename from modules/radio/src/path.cpp rename to radio/src/path.cpp diff --git a/modules/radio/src/path.h b/radio/src/path.h similarity index 100% rename from modules/radio/src/path.h rename to radio/src/path.h diff --git a/modules/recorder/CMakeLists.txt b/recorder/CMakeLists.txt similarity index 89% rename from modules/recorder/CMakeLists.txt rename to recorder/CMakeLists.txt index 32791d6e..f5a297fc 100644 --- a/modules/recorder/CMakeLists.txt +++ b/recorder/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.13) project(recorder) if (MSVC) @@ -25,10 +25,10 @@ link_libraries(SoapySDR) # Main code include_directories(recorder "src/") -include_directories(recorder "../../src/") -include_directories(recorder "../../src/imgui") +include_directories(recorder "../core/src/") +include_directories(recorder "../core/src/imgui") file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../../src/imgui/*.cpp") +file(GLOB IMGUI "../core/src/imgui/*.cpp") add_library(recorder SHARED ${SRC} ${IMGUI}) set_target_properties(recorder PROPERTIES PREFIX "") diff --git a/modules/recorder/src/main.cpp b/recorder/src/main.cpp similarity index 100% rename from modules/recorder/src/main.cpp rename to recorder/src/main.cpp diff --git a/modules/recorder/src/wav.h b/recorder/src/wav.h similarity index 100% rename from modules/recorder/src/wav.h rename to recorder/src/wav.h diff --git a/root_dev/config.json b/root_dev/config.json index 142d286e..14d71bf2 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -9,7 +9,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 100100000, + "frequency": 99000000, "max": 0.0, "maximized": false, "menuWidth": 300, @@ -27,7 +27,7 @@ } }, "windowSize": { - "h": 725, + "h": 726, "w": 1280 } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 63dd7fa4..319321f3 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,4 +1,6 @@ { - "Radio": "../build/modules/radio/Release/radio.dll", - "Recorder": "../build/modules/recorder/Release/recorder.dll" + "Radio": "../build/radio/Release/radio.dll", + "Recorder": "../build/recorder/Release/recorder.dll", + "Demo": "../build/demo/Release/demo.dll", + "Demo 2": "../build/demo/Release/demo.dll" } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 765f4283..023f73bc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,252 +1,6 @@ -#include "imgui.h" -#include "imgui_impl_glfw.h" -#include "imgui_impl_opengl3.h" +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define STB_IMAGE_RESIZE_IMPLEMENTATION -#include - -#ifdef _WIN32 -#include -#endif - -// Comment to build a normal release -#define DEV_BUILD - -bool maximized = false; -bool fullScreen = false; - -static void glfw_error_callback(int error, const char* description) { - spdlog::error("Glfw Error {0}: {1}", error, description); -} - -static void maximized_callback(GLFWwindow* window, int n) { - if (n == GLFW_TRUE) { - maximized = true; - } - else { - maximized = false; - } -} - -// main int main() { -#ifdef _WIN32 - //FreeConsole(); -#endif - - spdlog::info("SDR++ v" VERSION_STR); - -#ifdef DEV_BUILD - config::setRootDirectory("../root_dev"); -#elif _WIN32 - config::setRootDirectory("."); -#else - config::setRootDirectory("/etc/sdrpp"); -#endif - - // Load config - spdlog::info("Loading config"); - config::load(config::getRootDirectory() + "/config.json"); - config::startAutoSave(); - - // Setup window - glfwSetErrorCallback(glfw_error_callback); - if (!glfwInit()) { - return 1; - } - - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac - - int winWidth = config::config["windowSize"]["w"]; - int winHeight = config::config["windowSize"]["h"]; - maximized = config::config["maximized"]; - - // Create window with graphics context - GLFWmonitor* monitor = glfwGetPrimaryMonitor(); - GLFWwindow* window = glfwCreateWindow(winWidth, winHeight, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL); - if (window == NULL) - return 1; - glfwMakeContextCurrent(window); - glfwSwapInterval(1); // Enable vsync - - if (maximized) { - glfwMaximizeWindow(window); - } - - glfwSetWindowMaximizeCallback(window, maximized_callback); - - // Load app icon - GLFWimage icons[10]; - icons[0].pixels = stbi_load((config::getRootDirectory() + "/res/icons/sdrpp.png").c_str(), &icons[0].width, &icons[0].height, 0, 4); - icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; - icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; - icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; - icons[4].pixels = (unsigned char*)malloc(48 * 48 * 4); icons[4].width = icons[4].height = 48; - icons[5].pixels = (unsigned char*)malloc(64 * 64 * 4); icons[5].width = icons[5].height = 64; - icons[6].pixels = (unsigned char*)malloc(96 * 96 * 4); icons[6].width = icons[6].height = 96; - icons[7].pixels = (unsigned char*)malloc(128 * 128 * 4); icons[7].width = icons[7].height = 128; - icons[8].pixels = (unsigned char*)malloc(196 * 196 * 4); icons[8].width = icons[8].height = 196; - icons[9].pixels = (unsigned char*)malloc(256 * 256 * 4); icons[9].width = icons[9].height = 256; - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[1].pixels, 16, 16, 16 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[2].pixels, 24, 24, 24 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[3].pixels, 32, 32, 32 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[4].pixels, 48, 48, 48 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[5].pixels, 64, 64, 64 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[6].pixels, 96, 96, 96 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[7].pixels, 128, 128, 128 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[8].pixels, 196, 196, 196 * 4, 4); - stbir_resize_uint8(icons[0].pixels, icons[0].width, icons[0].height, icons[0].width * 4, icons[9].pixels, 256, 256, 256 * 4, 4); - glfwSetWindowIcon(window, 10, icons); - stbi_image_free(icons[0].pixels); - for (int i = 1; i < 10; i++) { - free(icons[i].pixels); - } - - if (glewInit() != GLEW_OK) { - spdlog::error("Failed to initialize OpenGL loader!"); - return 1; - } - - - // Setup Dear ImGui context - IMGUI_CHECKVERSION(); - ImGui::CreateContext(); - ImGuiIO& io = ImGui::GetIO(); (void)io; - io.IniFilename = NULL; - - // Setup Platform/Renderer bindings - ImGui_ImplGlfw_InitForOpenGL(window, true); - ImGui_ImplOpenGL3_Init("#version 150"); - - style::setDarkStyle(); - - - // ==================================================== - // glfwPollEvents(); - // ImGui_ImplOpenGL3_NewFrame(); - // ImGui_ImplGlfw_NewFrame(); - // ImGui::NewFrame(); - - // ImGui::ShowDemoWindow(); - - // ImGui::Render(); - // int display_w, display_h; - // glfwGetFramebufferSize(window, &display_w, &display_h); - // glViewport(0, 0, display_w, display_h); - // glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); - // //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); - // glClear(GL_COLOR_BUFFER_BIT); - // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); - - // glfwSwapBuffers(window); - // ==================================================== - - spdlog::info("Loading icons"); - icons::load(); - - spdlog::info("Loading band plans"); - bandplan::loadFromDir(config::getRootDirectory() + "/bandplans"); - - spdlog::info("Loading band plans color table"); - bandplan::loadColorTable(config::getRootDirectory() + "/band_colors.json"); - - windowInit(); - - spdlog::info("Ready."); - - bool _maximized = maximized; - int fsWidth, fsHeight, fsPosX, fsPosY; - - // Main loop - while (!glfwWindowShouldClose(window)) { - glfwPollEvents(); - - // Start the Dear ImGui frame - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplGlfw_NewFrame(); - ImGui::NewFrame(); - - if (_maximized != maximized) { - _maximized = maximized; - config::config["maximized"]= _maximized; - config::configModified = true; - if (!maximized) { - glfwSetWindowSize(window, config::config["windowSize"]["w"], config::config["windowSize"]["h"]); - } - } - - - - int _winWidth, _winHeight; - glfwGetWindowSize(window, &_winWidth, &_winHeight); - - if (ImGui::IsKeyPressed(GLFW_KEY_F11)) { - fullScreen = !fullScreen; - if (fullScreen) { - spdlog::info("Fullscreen: ON"); - fsWidth = _winWidth; - fsHeight = _winHeight; - glfwGetWindowPos(window, &fsPosX, &fsPosY); - const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); - glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, 0); - } - else { - spdlog::info("Fullscreen: OFF"); - glfwSetWindowMonitor(window, nullptr, fsPosX, fsPosY, fsWidth, fsHeight, 0); - } - } - - if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { - winWidth = _winWidth; - winHeight = _winHeight; - config::config["windowSize"]["w"] = winWidth; - config::config["windowSize"]["h"] = winHeight; - config::configModified = true; - } - - if (winWidth > 0 && winHeight > 0) { - ImGui::SetNextWindowPos(ImVec2(0, 0)); - ImGui::SetNextWindowSize(ImVec2(_winWidth, _winHeight)); - drawWindow(); - } - - // Rendering - ImGui::Render(); - int display_w, display_h; - glfwGetFramebufferSize(window, &display_w, &display_h); - glViewport(0, 0, display_w, display_h); - glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); - //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); - - glfwSwapBuffers(window); - } - - // Cleanup - ImGui_ImplOpenGL3_Shutdown(); - ImGui_ImplGlfw_Shutdown(); - ImGui::DestroyContext(); - - glfwDestroyWindow(window); - glfwTerminate(); - - return 0; + return sdrpp_main(); } \ No newline at end of file From 9de585190f9a608973e3c7245c7b9645e6f1160e Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 00:19:39 +0200 Subject: [PATCH 035/127] Fixed issues with new module system --- .gitignore | 3 +- core/CMakeLists.txt | 5 +- core/src/core.cpp | 36 ++-- core/src/{ => gui}/bandplan.cpp | 2 +- core/src/{ => gui}/bandplan.h | 0 core/src/{ => gui}/frequency_select.cpp | 2 +- core/src/{ => gui}/frequency_select.h | 0 core/src/gui/gui.cpp | 6 + core/src/gui/gui.h | 9 + core/src/{ => gui}/icons.cpp | 2 +- core/src/{ => gui}/icons.h | 0 core/src/{ => gui}/main_window.cpp | 191 +++++++++--------- core/src/{ => gui}/main_window.h | 17 +- core/src/gui/menu.cpp | 24 +++ core/src/gui/menu.h | 23 +++ core/src/{ => gui}/style.cpp | 2 +- core/src/{ => gui}/style.h | 0 core/src/{ => gui}/waterfall.cpp | 3 +- core/src/{ => gui}/waterfall.h | 2 +- core/src/module.cpp | 16 +- core/src/module.h | 17 +- core/src/{ => signal_path}/audio.cpp | 2 +- core/src/{ => signal_path}/audio.h | 0 .../{signal_path.cpp => signal_path/dsp.cpp} | 2 +- core/src/{signal_path.h => signal_path/dsp.h} | 0 core/src/signal_path/signal_path.cpp | 6 + core/src/signal_path/signal_path.h | 9 + core/src/signal_path/vfo_manager.cpp | 128 ++++++++++++ core/src/signal_path/vfo_manager.h | 47 +++++ core/src/vfo_manager.cpp | 99 --------- core/src/vfo_manager.h | 24 --- demo/CMakeLists.txt | 7 + demo/src/main.cpp | 2 +- radio/CMakeLists.txt | 49 +---- radio/src/main.cpp | 9 +- radio/src/path.cpp | 65 +++--- radio/src/path.h | 5 +- root_dev/config.json | 4 +- 38 files changed, 460 insertions(+), 358 deletions(-) rename core/src/{ => gui}/bandplan.cpp (99%) rename core/src/{ => gui}/bandplan.h (100%) rename core/src/{ => gui}/frequency_select.cpp (99%) rename core/src/{ => gui}/frequency_select.h (100%) create mode 100644 core/src/gui/gui.cpp create mode 100644 core/src/gui/gui.h rename core/src/{ => gui}/icons.cpp (98%) rename core/src/{ => gui}/icons.h (100%) rename core/src/{ => gui}/main_window.cpp (83%) rename core/src/{ => gui}/main_window.h (74%) create mode 100644 core/src/gui/menu.cpp create mode 100644 core/src/gui/menu.h rename core/src/{ => gui}/style.cpp (99%) rename core/src/{ => gui}/style.h (100%) rename core/src/{ => gui}/waterfall.cpp (99%) rename core/src/{ => gui}/waterfall.h (99%) rename core/src/{ => signal_path}/audio.cpp (99%) rename core/src/{ => signal_path}/audio.h (100%) rename core/src/{signal_path.cpp => signal_path/dsp.cpp} (98%) rename core/src/{signal_path.h => signal_path/dsp.h} (100%) create mode 100644 core/src/signal_path/signal_path.cpp create mode 100644 core/src/signal_path/signal_path.h create mode 100644 core/src/signal_path/vfo_manager.cpp create mode 100644 core/src/signal_path/vfo_manager.h delete mode 100644 core/src/vfo_manager.cpp delete mode 100644 core/src/vfo_manager.h diff --git a/.gitignore b/.gitignore index 12cbce30..357301de 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ build/ .vscode/ *.old *.dll -*.exe \ No newline at end of file +*.exe +*.zip \ No newline at end of file diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index d08495d7..065841c5 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -9,13 +9,16 @@ else() set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) +add_definitions(-DSDRPP_IS_CORE) # Main code file(GLOB SRC "src/*.cpp") +file(GLOB GUI "src/gui/*.cpp") +file(GLOB SIGPATH "src/signal_path/*.cpp") file(GLOB IMGUI "src/imgui/*.cpp") # Add code to dyn lib -add_library(sdrpp_core SHARED ${SRC} ${IMGUI}) +add_library(sdrpp_core SHARED ${SRC} ${GUI} ${SIGPATH} ${IMGUI}) # Include core headers target_include_directories(sdrpp_core PUBLIC "src/") diff --git a/core/src/core.cpp b/core/src/core.cpp index 4df80c94..d77835a8 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -4,12 +4,12 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include -#include +#include #include #include #include @@ -139,23 +139,23 @@ int sdrpp_main() { // ==================================================== - // glfwPollEvents(); - ImGui_ImplOpenGL3_NewFrame(); - // ImGui_ImplGlfw_NewFrame(); - // ImGui::NewFrame(); + // // glfwPollEvents(); + // ImGui_ImplOpenGL3_NewFrame(); + // // ImGui_ImplGlfw_NewFrame(); + // // ImGui::NewFrame(); - // ImGui::ShowDemoWindow(); + // // ImGui::ShowDemoWindow(); - // ImGui::Render(); - int display_w, display_h; - glfwGetFramebufferSize(window, &display_w, &display_h); - glViewport(0, 0, display_w, display_h); - glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); - //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + // // ImGui::Render(); + // int display_w, display_h; + // glfwGetFramebufferSize(window, &display_w, &display_h); + // glViewport(0, 0, display_w, display_h); + // glClearColor(0.0666f, 0.0666f, 0.0666f, 1.0f); + // //glClearColor(0.9f, 0.9f, 0.9f, 1.0f); + // glClear(GL_COLOR_BUFFER_BIT); + // // ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); - glfwSwapBuffers(window); + // glfwSwapBuffers(window); // ==================================================== spdlog::info("Loading icons"); diff --git a/core/src/bandplan.cpp b/core/src/gui/bandplan.cpp similarity index 99% rename from core/src/bandplan.cpp rename to core/src/gui/bandplan.cpp index 47cb5591..a0e6de91 100644 --- a/core/src/bandplan.cpp +++ b/core/src/gui/bandplan.cpp @@ -1,4 +1,4 @@ -#include +#include namespace bandplan { std::map bandplans; diff --git a/core/src/bandplan.h b/core/src/gui/bandplan.h similarity index 100% rename from core/src/bandplan.h rename to core/src/gui/bandplan.h diff --git a/core/src/frequency_select.cpp b/core/src/gui/frequency_select.cpp similarity index 99% rename from core/src/frequency_select.cpp rename to core/src/gui/frequency_select.cpp index fe750ff0..b40aabad 100644 --- a/core/src/frequency_select.cpp +++ b/core/src/gui/frequency_select.cpp @@ -1,4 +1,4 @@ -#include +#include bool isInArea(ImVec2 val, ImVec2 min, ImVec2 max) { return val.x >= min.x && val.x < max.x && val.y >= min.y && val.y < max.y; diff --git a/core/src/frequency_select.h b/core/src/gui/frequency_select.h similarity index 100% rename from core/src/frequency_select.h rename to core/src/gui/frequency_select.h diff --git a/core/src/gui/gui.cpp b/core/src/gui/gui.cpp new file mode 100644 index 00000000..59c8b375 --- /dev/null +++ b/core/src/gui/gui.cpp @@ -0,0 +1,6 @@ +#include + +namespace gui { + ImGui::WaterFall waterfall; + FrequencySelect freqSelect; +}; \ No newline at end of file diff --git a/core/src/gui/gui.h b/core/src/gui/gui.h new file mode 100644 index 00000000..c65833c2 --- /dev/null +++ b/core/src/gui/gui.h @@ -0,0 +1,9 @@ +#pragma once +#include +#include +#include + +namespace gui { + SDRPP_EXPORT ImGui::WaterFall waterfall; + SDRPP_EXPORT FrequencySelect freqSelect; +}; \ No newline at end of file diff --git a/core/src/icons.cpp b/core/src/gui/icons.cpp similarity index 98% rename from core/src/icons.cpp rename to core/src/gui/icons.cpp index f80ff61b..54c6f451 100644 --- a/core/src/icons.cpp +++ b/core/src/gui/icons.cpp @@ -1,4 +1,4 @@ -#include +#include #define STB_IMAGE_IMPLEMENTATION #include diff --git a/core/src/icons.h b/core/src/gui/icons.h similarity index 100% rename from core/src/icons.h rename to core/src/gui/icons.h diff --git a/core/src/main_window.cpp b/core/src/gui/main_window.cpp similarity index 83% rename from core/src/main_window.cpp rename to core/src/gui/main_window.cpp index bd196ffc..b47a6034 100644 --- a/core/src/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -1,9 +1,8 @@ -#include +#include +#include std::thread worker; std::mutex fft_mtx; -ImGui::WaterFall wtf; -FrequencySelect fSel; fftwf_complex *fft_in, *fft_out; fftwf_plan p; float* tempData; @@ -14,8 +13,6 @@ ImFont* bigFont; int fftSize = 8192 * 8; io::SoapyWrapper soapy; - -SignalPath sigPath; std::vector _data; std::vector fftTaps; void fftHandler(dsp::complex_t* samples) { @@ -33,7 +30,7 @@ void fftHandler(dsp::complex_t* samples) { _data[i] = (_data[i - 4] + _data[i - 3] + _data[i - 2] + _data[i - 1] + _data[i]) / 5.0f; } - wtf.pushFFT(_data, fftSize); + gui::waterfall.pushFFT(_data, fftSize); _data.clear(); } @@ -87,7 +84,7 @@ void loadSourceConfig(std::string name) { else { srId = std::distance(soapy.sampleRates.begin(), _srIt); } - sigPath.setSampleRate(sampleRate); + sigpath::signalPath.setSampleRate(sampleRate); soapy.setSampleRate(sampleRate); // Set gains @@ -107,8 +104,8 @@ void loadSourceConfig(std::string name) { } // Update GUI - wtf.setBandwidth(sampleRate); - wtf.setViewBandwidth(sampleRate); + gui::waterfall.setBandwidth(sampleRate); + gui::waterfall.setViewBandwidth(sampleRate); bw.val = sampleRate; } @@ -158,21 +155,19 @@ void windowInit() { spdlog::info("Initializing SoapySDR"); soapy.init(); - fSel.init(); + gui::freqSelect.init(); fft_in = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); fft_out = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); p = fftwf_plan_dft_1d(fftSize, fft_in, fft_out, FFTW_FORWARD, FFTW_ESTIMATE); - sigPath.init(sampleRate, 20, fftSize, &soapy.output, (dsp::complex_t*)fft_in, fftHandler); - sigPath.start(); - - vfoman::init(&wtf, &sigPath); + sigpath::signalPath.init(sampleRate, 20, fftSize, &soapy.output, (dsp::complex_t*)fft_in, fftHandler); + sigpath::signalPath.start(); uiGains = new float[soapy.gainList.size()]; spdlog::info("Loading modules"); - mod::initAPI(&wtf); + mod::initAPI(&gui::waterfall); mod::loadFromList(config::getRootDirectory() + "/module_list.json"); bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 128.0f); @@ -206,7 +201,7 @@ void windowInit() { sourceName = soapy.devNameList[0]; } sampleRate = soapy.getSampleRate(); - sigPath.setSampleRate(sampleRate); + sigpath::signalPath.setSampleRate(sampleRate); } // Search for the first source in the list to have a config // If no pre-defined source, selected default device @@ -229,10 +224,10 @@ void windowInit() { // Update UI settings fftMin = config::config["min"]; fftMax = config::config["max"]; - wtf.setFFTMin(fftMin); - wtf.setWaterfallMin(fftMin); - wtf.setFFTMax(fftMax); - wtf.setWaterfallMax(fftMax); + gui::waterfall.setFFTMin(fftMin); + gui::waterfall.setWaterfallMin(fftMin); + gui::waterfall.setFFTMax(fftMax); + gui::waterfall.setWaterfallMax(fftMax); bandPlanEnabled.val = config::config["bandPlanEnabled"]; bandPlanEnabled.markAsChanged(); @@ -243,10 +238,10 @@ void windowInit() { bandplanId.val = std::distance(bandplan::bandplans.begin(), bandplan::bandplans.find(bandPlanName)); if (bandPlanEnabled.val) { - wtf.bandplan = &bandplan::bandplans[bandPlanName]; + gui::waterfall.bandplan = &bandplan::bandplans[bandPlanName]; } else { - wtf.bandplan = NULL; + gui::waterfall.bandplan = NULL; } } else { @@ -255,16 +250,16 @@ void windowInit() { bandplanId.markAsChanged(); - fSel.setFrequency(frequency); - fSel.frequencyChanged = false; + gui::freqSelect.setFrequency(frequency); + gui::freqSelect.frequencyChanged = false; soapy.setFrequency(frequency); - wtf.setCenterFrequency(frequency); - wtf.setBandwidth(sampleRate); - wtf.setViewBandwidth(sampleRate); + gui::waterfall.setCenterFrequency(frequency); + gui::waterfall.setBandwidth(sampleRate); + gui::waterfall.setViewBandwidth(sampleRate); bw.val = sampleRate; - wtf.vfoFreqChanged = false; - wtf.centerFreqMoved = false; - wtf.selectFirstVFO(); + gui::waterfall.vfoFreqChanged = false; + gui::waterfall.centerFreqMoved = false; + gui::waterfall.selectFirstVFO(); for (auto [name, stream] : audio::streams) { if (config::config["audio"].contains(name)) { @@ -277,7 +272,7 @@ void windowInit() { } } - audioStreamName = audio::getNameFromVFO(wtf.selectedVFO); + audioStreamName = audio::getNameFromVFO(gui::waterfall.selectedVFO); if (audioStreamName != "") { volume = &audio::streams[audioStreamName]->volume; } @@ -287,18 +282,18 @@ void windowInit() { showWaterfall = config::config["showWaterfall"]; if (!showWaterfall) { - wtf.hideWaterfall(); + gui::waterfall.hideWaterfall(); } fftHeight = config::config["fftHeight"]; - wtf.setFFTHeight(fftHeight); + gui::waterfall.setFFTHeight(fftHeight); } void setVFO(float freq) { - ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; + ImGui::WaterfallVFO* vfo = gui::waterfall.vfos[gui::waterfall.selectedVFO]; float currentOff = vfo->centerOffset; - float currentTune = wtf.getCenterFrequency() + vfo->generalOffset; + float currentTune = gui::waterfall.getCenterFrequency() + vfo->generalOffset; float delta = freq - currentTune; float newVFO = currentOff + delta; @@ -306,38 +301,38 @@ void setVFO(float freq) { float vfoBottom = newVFO - (vfoBW / 2.0f); float vfoTop = newVFO + (vfoBW / 2.0f); - float view = wtf.getViewOffset(); - float viewBW = wtf.getViewBandwidth(); + float view = gui::waterfall.getViewOffset(); + float viewBW = gui::waterfall.getViewBandwidth(); float viewBottom = view - (viewBW / 2.0f); float viewTop = view + (viewBW / 2.0f); - float wholeFreq = wtf.getCenterFrequency(); - float BW = wtf.getBandwidth(); + float wholeFreq = gui::waterfall.getCenterFrequency(); + float BW = gui::waterfall.getBandwidth(); float bottom = -(BW / 2.0f); float top = (BW / 2.0f); // VFO still fints in the view if (vfoBottom > viewBottom && vfoTop < viewTop) { - vfoman::setCenterOffset(wtf.selectedVFO, newVFO); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFO); return; } // VFO too low for current SDR tuning if (vfoBottom < bottom) { - wtf.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); + gui::waterfall.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); - vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); - wtf.setCenterFrequency(freq - newVFOOffset); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); + gui::waterfall.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); return; } // VFO too high for current SDR tuning if (vfoTop > top) { - wtf.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); + gui::waterfall.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); - vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); - wtf.setCenterFrequency(freq - newVFOOffset); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); + gui::waterfall.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); return; } @@ -349,15 +344,15 @@ void setVFO(float freq) { float newViewTop = newViewOff + (viewBW / 2.0f); if (newViewBottom > bottom) { - wtf.setViewOffset(newViewOff); - vfoman::setCenterOffset(wtf.selectedVFO, newVFO); + gui::waterfall.setViewOffset(newViewOff); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFO); return; } - wtf.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); + gui::waterfall.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); - vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); - wtf.setCenterFrequency(freq - newVFOOffset); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); + gui::waterfall.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); } else { @@ -366,15 +361,15 @@ void setVFO(float freq) { float newViewTop = newViewOff + (viewBW / 2.0f); if (newViewTop < top) { - wtf.setViewOffset(newViewOff); - vfoman::setCenterOffset(wtf.selectedVFO, newVFO); + gui::waterfall.setViewOffset(newViewOff); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFO); return; } - wtf.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); + gui::waterfall.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); - vfoman::setCenterOffset(wtf.selectedVFO, newVFOOffset); - wtf.setCenterFrequency(freq - newVFOOffset); + sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); + gui::waterfall.setCenterFrequency(freq - newVFOOffset); soapy.setFrequency(freq - newVFOOffset); } } @@ -382,61 +377,61 @@ void setVFO(float freq) { void drawWindow() { ImGui::Begin("Main", NULL, WINDOW_FLAGS); - ImGui::WaterfallVFO* vfo = wtf.vfos[wtf.selectedVFO]; + ImGui::WaterfallVFO* vfo = gui::waterfall.vfos[gui::waterfall.selectedVFO]; if (vfo->centerOffsetChanged) { - fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); - fSel.frequencyChanged = false; - config::config["frequency"] = fSel.frequency; + gui::freqSelect.setFrequency(gui::waterfall.getCenterFrequency() + vfo->generalOffset); + gui::freqSelect.frequencyChanged = false; + config::config["frequency"] = gui::freqSelect.frequency; config::configModified = true; } - vfoman::updateFromWaterfall(); + sigpath::vfoManager.updateFromWaterfall(&gui::waterfall); - if (wtf.selectedVFOChanged) { - wtf.selectedVFOChanged = false; - fSel.setFrequency(vfo->generalOffset + wtf.getCenterFrequency()); - fSel.frequencyChanged = false; + if (gui::waterfall.selectedVFOChanged) { + gui::waterfall.selectedVFOChanged = false; + gui::freqSelect.setFrequency(vfo->generalOffset + gui::waterfall.getCenterFrequency()); + gui::freqSelect.frequencyChanged = false; mod::broadcastEvent(mod::EVENT_SELECTED_VFO_CHANGED); - audioStreamName = audio::getNameFromVFO(wtf.selectedVFO); + audioStreamName = audio::getNameFromVFO(gui::waterfall.selectedVFO); if (audioStreamName != "") { volume = &audio::streams[audioStreamName]->volume; } - config::config["frequency"] = fSel.frequency; + config::config["frequency"] = gui::freqSelect.frequency; config::configModified = true; } - if (fSel.frequencyChanged) { - fSel.frequencyChanged = false; - setVFO(fSel.frequency); + if (gui::freqSelect.frequencyChanged) { + gui::freqSelect.frequencyChanged = false; + setVFO(gui::freqSelect.frequency); vfo->centerOffsetChanged = false; vfo->lowerOffsetChanged = false; vfo->upperOffsetChanged = false; - config::config["frequency"] = fSel.frequency; + config::config["frequency"] = gui::freqSelect.frequency; config::configModified = true; } - if (wtf.centerFreqMoved) { - wtf.centerFreqMoved = false; - soapy.setFrequency(wtf.getCenterFrequency()); - fSel.setFrequency(wtf.getCenterFrequency() + vfo->generalOffset); - config::config["frequency"] = fSel.frequency; + if (gui::waterfall.centerFreqMoved) { + gui::waterfall.centerFreqMoved = false; + soapy.setFrequency(gui::waterfall.getCenterFrequency()); + gui::freqSelect.setFrequency(gui::waterfall.getCenterFrequency() + vfo->generalOffset); + config::config["frequency"] = gui::freqSelect.frequency; config::configModified = true; } if (dcbias.changed()) { - sigPath.setDCBiasCorrection(dcbias.val); + sigpath::signalPath.setDCBiasCorrection(dcbias.val); } if (bandplanId.changed() && bandPlanEnabled.val) { - wtf.bandplan = &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; + gui::waterfall.bandplan = &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; } if (bandPlanEnabled.changed()) { - wtf.bandplan = bandPlanEnabled.val ? &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]] : NULL; + gui::waterfall.bandplan = bandPlanEnabled.val ? &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]] : NULL; } - int _fftHeight = wtf.getFFTHeight(); + int _fftHeight = gui::waterfall.getFFTHeight(); if (fftHeight != _fftHeight) { fftHeight = _fftHeight; config::config["fftHeight"] = fftHeight; @@ -472,7 +467,7 @@ void drawWindow() { else { if (ImGui::ImageButton(icons::PLAY, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0) && soapy.devList.size() > 0) { soapy.start(); - soapy.setFrequency(wtf.getCenterFrequency()); + soapy.setFrequency(gui::waterfall.getCenterFrequency()); playing = true; } } @@ -494,7 +489,7 @@ void drawWindow() { ImGui::SameLine(); - fSel.draw(); + gui::freqSelect.draw(); ImGui::SameLine(); @@ -564,9 +559,9 @@ void drawWindow() { srId = 0; sampleRate = soapy.getSampleRate(); bw.val = sampleRate; - wtf.setBandwidth(sampleRate); - wtf.setViewBandwidth(sampleRate); - sigPath.setSampleRate(sampleRate); + gui::waterfall.setBandwidth(sampleRate); + gui::waterfall.setViewBandwidth(sampleRate); + sigpath::signalPath.setSampleRate(sampleRate); if (soapy.gainList.size() >= 0) { delete[] uiGains; @@ -576,7 +571,7 @@ void drawWindow() { } } } - setVFO(fSel.frequency); + setVFO(gui::freqSelect.frequency); config::config["source"] = sourceName; config::configModified = true; } @@ -586,9 +581,9 @@ void drawWindow() { spdlog::info("Changed sample rate: {0}", srId); sampleRate = soapy.sampleRates[srId]; soapy.setSampleRate(sampleRate); - wtf.setBandwidth(sampleRate); - wtf.setViewBandwidth(sampleRate); - sigPath.setSampleRate(sampleRate); + gui::waterfall.setBandwidth(sampleRate); + gui::waterfall.setViewBandwidth(sampleRate); + sigpath::signalPath.setSampleRate(sampleRate); bw.val = sampleRate; if (!config::config["sourceSettings"].contains(sourceName)) { @@ -739,7 +734,7 @@ void drawWindow() { if (ImGui::CollapsingHeader("Display", ImGuiTreeNodeFlags_DefaultOpen)) { if (ImGui::Checkbox("Show waterfall", &showWaterfall)) { - showWaterfall ? wtf.showWaterfall() : wtf.hideWaterfall(); + showWaterfall ? gui::waterfall.showWaterfall() : gui::waterfall.hideWaterfall(); } ImGui::Spacing(); } @@ -747,7 +742,7 @@ void drawWindow() { if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); - ImGui::Text("Center Frequency: %.0f Hz", wtf.getCenterFrequency()); + ImGui::Text("Center Frequency: %.0f Hz", gui::waterfall.getCenterFrequency()); ImGui::Text("Source name: %s", sourceName.c_str()); ImGui::Spacing(); } @@ -769,7 +764,7 @@ void drawWindow() { ImGui::BeginChild("Waterfall"); - wtf.draw(); + gui::waterfall.draw(); ImGui::EndChild(); @@ -807,14 +802,14 @@ void drawWindow() { ImGui::EndChild(); if (bw.changed()) { - wtf.setViewBandwidth(bw.val); - wtf.setViewOffset(vfo->centerOffset); + gui::waterfall.setViewBandwidth(bw.val); + gui::waterfall.setViewOffset(vfo->centerOffset); } - wtf.setFFTMin(fftMin); - wtf.setFFTMax(fftMax); - wtf.setWaterfallMin(fftMin); - wtf.setWaterfallMax(fftMax); + gui::waterfall.setFFTMin(fftMin); + gui::waterfall.setFFTMax(fftMax); + gui::waterfall.setWaterfallMin(fftMin); + gui::waterfall.setWaterfallMax(fftMax); ImGui::End(); diff --git a/core/src/main_window.h b/core/src/gui/main_window.h similarity index 74% rename from core/src/main_window.h rename to core/src/gui/main_window.h index 2b7fe923..265717fb 100644 --- a/core/src/main_window.h +++ b/core/src/gui/main_window.h @@ -13,19 +13,20 @@ #include #include #include -#include -#include +#include +#include #include -#include +#include #include -#include -#include +#include +#include #include #include -#include -#include -#include +#include +#include +#include #include +#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground diff --git a/core/src/gui/menu.cpp b/core/src/gui/menu.cpp new file mode 100644 index 00000000..b967698b --- /dev/null +++ b/core/src/gui/menu.cpp @@ -0,0 +1,24 @@ +#include + +Menu::Menu() { + +} + +void Menu::registerEntry(std::string name, void (*drawHandler)(void* ctx), void* ctx) { + MenuItem_t item; + item.drawHandler = drawHandler; + item.ctx = ctx; + items[name] = item; +} + +void Menu::removeEntry(std::string name) { + items.erase(name); +} + +void Menu::draw() { + MenuItem_t item; + for (std::string name : order) { + item = items[name]; + item.drawHandler(item.ctx); + } +} diff --git a/core/src/gui/menu.h b/core/src/gui/menu.h new file mode 100644 index 00000000..e7f21f5d --- /dev/null +++ b/core/src/gui/menu.h @@ -0,0 +1,23 @@ +#pragma once +#include +#include +#include + +class Menu { +public: + Menu(); + + struct MenuItem_t { + void (*drawHandler)(void* ctx); + void* ctx; + }; + + void registerEntry(std::string name, void (*drawHandler)(void* ctx), void* ctx = NULL); + void removeEntry(std::string name); + void draw(); + + std::vector order; + +private: + std::map items; +}; \ No newline at end of file diff --git a/core/src/style.cpp b/core/src/gui/style.cpp similarity index 99% rename from core/src/style.cpp rename to core/src/gui/style.cpp index 9f2a5b15..e55df3d7 100644 --- a/core/src/style.cpp +++ b/core/src/gui/style.cpp @@ -1,4 +1,4 @@ -#include +#include namespace style { void setDefaultStyle() { diff --git a/core/src/style.h b/core/src/gui/style.h similarity index 100% rename from core/src/style.h rename to core/src/gui/style.h diff --git a/core/src/waterfall.cpp b/core/src/gui/waterfall.cpp similarity index 99% rename from core/src/waterfall.cpp rename to core/src/gui/waterfall.cpp index d590f780..6a17381c 100644 --- a/core/src/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -1,4 +1,4 @@ -#include +#include float COLOR_MAP[][3] = { {0x00, 0x00, 0x20}, @@ -650,6 +650,7 @@ namespace ImGui { } void WaterfallVFO::setOffset(float offset) { + printf("WaterfallVFO::SetOffset: %p\n", this); generalOffset = offset; if (reference == REF_CENTER) { centerOffset = offset; diff --git a/core/src/waterfall.h b/core/src/gui/waterfall.h similarity index 99% rename from core/src/waterfall.h rename to core/src/gui/waterfall.h index e7d21aad..1ce08a3d 100644 --- a/core/src/waterfall.h +++ b/core/src/gui/waterfall.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #define WATERFALL_RESOLUTION 1000000 diff --git a/core/src/module.cpp b/core/src/module.cpp index 2ea8be18..4df08517 100644 --- a/core/src/module.cpp +++ b/core/src/module.cpp @@ -1,7 +1,7 @@ #include -#include -#include -#include +#include +#include +#include namespace mod { API_t API; @@ -16,16 +16,6 @@ namespace mod { void initAPI(ImGui::WaterFall* wtf) { _wtf = wtf; - // VFO Manager - API.registerVFO = vfoman::create; - API.setVFOOffset = vfoman::setOffset; - API.setVFOCenterOffset = vfoman::setCenterOffset; - API.setVFOBandwidth = vfoman::setBandwidth; - API.setVFOSampleRate = vfoman::setSampleRate; - API.getVFOOutputBlockSize = vfoman::getOutputBlockSize; - API.setVFOReference = vfoman::setReference; - API.removeVFO = vfoman::remove; - // GUI API.getSelectedVFOName = api_getSelectedVFOName; API.bindVolumeVariable = bindVolumeVariable; diff --git a/core/src/module.h b/core/src/module.h index d5b16193..f98384d3 100644 --- a/core/src/module.h +++ b/core/src/module.h @@ -7,16 +7,25 @@ #include #include #include -#include +#include #include +#ifdef _WIN32 +#ifdef SDRPP_IS_CORE +#define SDRPP_EXPORT extern "C" __declspec(dllexport) +#else +#define SDRPP_EXPORT extern "C" __declspec(dllimport) +#endif +#else +#define SDRPP_EXPORT /**/ +#endif + #ifdef _WIN32 #include -#define MOD_EXPORT extern "C" \ - __declspec(dllexport) +#define MOD_EXPORT extern "C" __declspec(dllexport) #else #include -#define MOD_EXPORT extern "C" +#define MOD_EXPORT extern "C" #endif namespace mod { diff --git a/core/src/audio.cpp b/core/src/signal_path/audio.cpp similarity index 99% rename from core/src/audio.cpp rename to core/src/signal_path/audio.cpp index 18acf105..363ef7a1 100644 --- a/core/src/audio.cpp +++ b/core/src/signal_path/audio.cpp @@ -1,4 +1,4 @@ -#include +#include namespace audio { std::map streams; diff --git a/core/src/audio.h b/core/src/signal_path/audio.h similarity index 100% rename from core/src/audio.h rename to core/src/signal_path/audio.h diff --git a/core/src/signal_path.cpp b/core/src/signal_path/dsp.cpp similarity index 98% rename from core/src/signal_path.cpp rename to core/src/signal_path/dsp.cpp index 777dcb3a..f2f50333 100644 --- a/core/src/signal_path.cpp +++ b/core/src/signal_path/dsp.cpp @@ -1,4 +1,4 @@ -#include +#include SignalPath::SignalPath() { diff --git a/core/src/signal_path.h b/core/src/signal_path/dsp.h similarity index 100% rename from core/src/signal_path.h rename to core/src/signal_path/dsp.h diff --git a/core/src/signal_path/signal_path.cpp b/core/src/signal_path/signal_path.cpp new file mode 100644 index 00000000..13188e15 --- /dev/null +++ b/core/src/signal_path/signal_path.cpp @@ -0,0 +1,6 @@ +#include + +namespace sigpath { + SignalPath signalPath; + VFOManager vfoManager; +}; \ No newline at end of file diff --git a/core/src/signal_path/signal_path.h b/core/src/signal_path/signal_path.h new file mode 100644 index 00000000..c0d10a73 --- /dev/null +++ b/core/src/signal_path/signal_path.h @@ -0,0 +1,9 @@ +#pragma once +#include +#include +#include + +namespace sigpath { + SDRPP_EXPORT SignalPath signalPath; + SDRPP_EXPORT VFOManager vfoManager; +}; \ No newline at end of file diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp new file mode 100644 index 00000000..bf356996 --- /dev/null +++ b/core/src/signal_path/vfo_manager.cpp @@ -0,0 +1,128 @@ +#include +#include + +VFOManager::VFO::VFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { + this->name = name; + dspVFO = sigpath::signalPath.addVFO(name, sampleRate, bandwidth, offset); + wtfVFO = new ImGui::WaterfallVFO; + wtfVFO->setReference(reference); + wtfVFO->setBandwidth(bandwidth); + wtfVFO->setOffset(offset); + output = dspVFO->output; + printf("Created VFO: %p", wtfVFO); + gui::waterfall.vfos[name] = wtfVFO; +} + +VFOManager::VFO::~VFO() { + gui::waterfall.vfos.erase(name); + sigpath::signalPath.removeVFO(name); + delete wtfVFO; +} + +void VFOManager::VFO::setOffset(float offset) { + wtfVFO->setOffset(offset); + dspVFO->setOffset(wtfVFO->centerOffset); +} + +void VFOManager::VFO::setCenterOffset(float offset) { + wtfVFO->setCenterOffset(offset); + dspVFO->setOffset(offset); +} + +void VFOManager::VFO::setBandwidth(float bandwidth) { + wtfVFO->setBandwidth(bandwidth); + dspVFO->setBandwidth(bandwidth); +} + +void VFOManager::VFO::setSampleRate(float sampleRate, float bandwidth) { + dspVFO->setOutputSampleRate(sampleRate, bandwidth); + wtfVFO->setBandwidth(bandwidth); +} + +void VFOManager::VFO::setReference(int ref) { + wtfVFO->setReference(ref); +} + +int VFOManager::VFO::getOutputBlockSize() { + return dspVFO->getOutputBlockSize(); +} + + +VFOManager::VFOManager() { + +} + +VFOManager::VFO* VFOManager::createVFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { + if (vfos.find(name) != vfos.end() || name == "") { + return NULL; + } + VFOManager::VFO* vfo = new VFO(name, reference, offset, bandwidth, sampleRate, blockSize); + vfos[name] = vfo; + return vfo; +} + +void VFOManager::deleteVFO(VFOManager::VFO* vfo) { + std::string name = ""; + for (auto const& [_name, _vfo] : vfos) { + if (_vfo == vfo) { + name == _name; + break; + } + } + if (name == "") { + return; + } + vfos.erase(name); +} + +void VFOManager::setOffset(std::string name, float offset) { + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name]->setOffset(offset); +} + +void VFOManager::setCenterOffset(std::string name, float offset) { + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name]->setCenterOffset(offset); +} + +void VFOManager::setBandwidth(std::string name, float bandwidth) { + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name]->setBandwidth(bandwidth); +} + +void VFOManager::setSampleRate(std::string name, float sampleRate, float bandwidth) { + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name]->setSampleRate(sampleRate, bandwidth); +} + +void VFOManager::setReference(std::string name, int ref) { + if (vfos.find(name) == vfos.end()) { + return; + } + vfos[name]->setReference(ref); +} + +int VFOManager::getOutputBlockSize(std::string name) { + if (vfos.find(name) == vfos.end()) { + return -1; + } + return vfos[name]->getOutputBlockSize(); +} + +void VFOManager::updateFromWaterfall(ImGui::WaterFall* wtf) { + for (auto const& [name, vfo] : vfos) { + if (vfo->wtfVFO->centerOffsetChanged) { + spdlog::info("UH OH: Change!"); + vfo->wtfVFO->centerOffsetChanged = false; + vfo->dspVFO->setOffset(vfo->wtfVFO->centerOffset); + } + } +} diff --git a/core/src/signal_path/vfo_manager.h b/core/src/signal_path/vfo_manager.h new file mode 100644 index 00000000..c61ae865 --- /dev/null +++ b/core/src/signal_path/vfo_manager.h @@ -0,0 +1,47 @@ +#pragma once +#include +#include +#include + +class VFOManager { +public: + VFOManager(); + + class VFO { + public: + VFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); + ~VFO(); + + void setOffset(float offset); + void setCenterOffset(float offset); + void setBandwidth(float bandwidth); + void setSampleRate(float sampleRate, float bandwidth); + void setReference(int ref); + int getOutputBlockSize(); + + dsp::stream* output; + + friend class VFOManager; + + private: + std::string name; + dsp::VFO* dspVFO; + ImGui::WaterfallVFO* wtfVFO; + + }; + + VFOManager::VFO* createVFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); + void deleteVFO(VFOManager::VFO* vfo); + + void setOffset(std::string name, float offset); + void setCenterOffset(std::string name, float offset); + void setBandwidth(std::string name, float bandwidth); + void setSampleRate(std::string name, float sampleRate, float bandwidth); + void setReference(std::string name, int ref); + int getOutputBlockSize(std::string name); + + void updateFromWaterfall(ImGui::WaterFall* wtf); + +private: + std::map vfos; +}; \ No newline at end of file diff --git a/core/src/vfo_manager.cpp b/core/src/vfo_manager.cpp deleted file mode 100644 index fc23a34a..00000000 --- a/core/src/vfo_manager.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include - -namespace vfoman { - std::map vfos; - ImGui::WaterFall* _wtf; - SignalPath* _sigPath; - - void init(ImGui::WaterFall* wtf, SignalPath* sigPath) { - _wtf = wtf; - _sigPath = sigPath; - } - - dsp::stream* create(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { - if (vfos.find(name) != vfos.end()) { - spdlog::warn("Tried to add VFO with an already existing name: {0}", name); - return NULL; - } - spdlog::info("Creating new VFO '{0}'", name); - VFO_t vfo; - vfo.dspVFO = _sigPath->addVFO(name, sampleRate, bandwidth, offset); - vfo.wtfVFO = new ImGui::WaterfallVFO; - vfo.wtfVFO->setReference(reference); - vfo.wtfVFO->setBandwidth(bandwidth); - vfo.wtfVFO->setOffset(offset); - _wtf->vfos[name] = vfo.wtfVFO; - vfos[name] = vfo; - return vfo.dspVFO->output; - } - - void setOffset(std::string name, float offset) { - if (vfos.find(name) == vfos.end()) { - return; - } - VFO_t vfo = vfos[name]; - vfo.wtfVFO->setOffset(offset); - vfo.dspVFO->setOffset(vfo.wtfVFO->centerOffset); - } - - void setCenterOffset(std::string name, float offset) { - if (vfos.find(name) == vfos.end()) { - return; - } - VFO_t vfo = vfos[name]; - vfo.wtfVFO->setCenterOffset(offset); - vfo.dspVFO->setOffset(offset); - } - - void setBandwidth(std::string name, float bandwidth) { - if (vfos.find(name) == vfos.end()) { - return; - } - VFO_t vfo = vfos[name]; - vfo.wtfVFO->setBandwidth(bandwidth); - vfo.dspVFO->setBandwidth(bandwidth); - } - - void setSampleRate(std::string name, float sampleRate, float bandwidth) { - if (vfos.find(name) == vfos.end()) { - return; - } - VFO_t vfo = vfos[name]; - vfo.dspVFO->setOutputSampleRate(sampleRate, bandwidth); - vfo.wtfVFO->setBandwidth(bandwidth); - } - - void setReference(std::string name, int ref){ - if (vfos.find(name) == vfos.end()) { - return; - } - vfos[name].wtfVFO->setReference(ref); - } - - int getOutputBlockSize(std::string name) { - if (vfos.find(name) == vfos.end()) { - return -1; - } - return vfos[name].dspVFO->getOutputBlockSize(); - } - - void remove(std::string name) { - if (vfos.find(name) == vfos.end()) { - return; - } - VFO_t vfo = vfos[name]; - _wtf->vfos.erase(name); - _sigPath->removeVFO(name); - delete vfo.wtfVFO; - vfos.erase(name); - } - - void updateFromWaterfall() { - for (auto const& [name, vfo] : vfos) { - if (vfo.wtfVFO->centerOffsetChanged) { - vfo.wtfVFO->centerOffsetChanged = false; - vfo.dspVFO->setOffset(vfo.wtfVFO->centerOffset); - } - } - } -}; \ No newline at end of file diff --git a/core/src/vfo_manager.h b/core/src/vfo_manager.h deleted file mode 100644 index 6656db84..00000000 --- a/core/src/vfo_manager.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -#include -#include -#include - -namespace vfoman { - struct VFO_t { - dsp::VFO* dspVFO; - ImGui::WaterfallVFO* wtfVFO; - }; - - void init(ImGui::WaterFall* wtf, SignalPath* sigPath); - - dsp::stream* create(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); - void setOffset(std::string name, float offset); - void setCenterOffset(std::string name, float offset); - void setBandwidth(std::string name, float bandwidth); - void setSampleRate(std::string name, float sampleRate, float bandwidth); - void setReference(std::string name, int ref); - int getOutputBlockSize(std::string name); - void remove(std::string name); - - void updateFromWaterfall(); -}; \ No newline at end of file diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 9fe9176a..7354f36e 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -1,6 +1,13 @@ cmake_minimum_required(VERSION 3.13) project(demo) +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + file(GLOB SRC "src/*.cpp") add_library(demo SHARED ${SRC}) diff --git a/demo/src/main.cpp b/demo/src/main.cpp index 8abd3cf3..0201e70d 100644 --- a/demo/src/main.cpp +++ b/demo/src/main.cpp @@ -6,7 +6,7 @@ #include #include #include -#include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) diff --git a/radio/CMakeLists.txt b/radio/CMakeLists.txt index 2ac85c54..b6cfe995 100644 --- a/radio/CMakeLists.txt +++ b/radio/CMakeLists.txt @@ -3,53 +3,14 @@ project(radio) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - link_directories(radio "C:/Program Files/PothosSDR/lib/") - include_directories(radio "C:/Program Files/PothosSDR/include/volk/") - include_directories(radio "C:/Program Files/PothosSDR/include/") else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") - include_directories(radio "/usr/include/volk") - link_libraries(pthread) - link_libraries(GL) - link_libraries(GLEW) - link_libraries(glfw) - link_libraries(fftw3) - link_libraries(fftw3f) - link_libraries(portaudio) - link_libraries(X11) - link_libraries(Xxf86vm) + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") + # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) -link_libraries(volk) -link_libraries(SoapySDR) - -# Main code -include_directories(radio "src/") -include_directories(radio "../core/src/") -include_directories(radio "../core/src/imgui") file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../core/src/imgui/*.cpp") -add_library(radio SHARED ${SRC} ${IMGUI}) -set_target_properties(radio PROPERTIES PREFIX "") -if (MSVC) - # Glew - find_package(GLEW REQUIRED) - target_link_libraries(radio PRIVATE GLEW::GLEW) +include_directories("src/") - # GLFW3 - find_package(glfw3 CONFIG REQUIRED) - target_link_libraries(radio PRIVATE glfw) - - # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(radio PRIVATE FFTW3::fftw3) - find_package(FFTW3f CONFIG REQUIRED) - target_link_libraries(radio PRIVATE FFTW3::fftw3f) - - # PortAudio - find_package(portaudio CONFIG REQUIRED) - target_link_libraries(radio PRIVATE portaudio portaudio_static) -endif (MSVC) - -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file +add_library(radio SHARED ${SRC}) +target_link_libraries(radio PRIVATE sdrpp_core) \ No newline at end of file diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 7a365f8c..c007df3d 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -25,7 +25,7 @@ MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name ctx->bandWidth = 200000; ctx->bandWidthMin = 100000; ctx->bandWidthMax = 200000; - ctx->sigPath.init(_name, 200000, 1000, API->registerVFO(_name, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000)); + ctx->sigPath.init(_name, 200000, 1000); ctx->sigPath.start(); ImGui::SetCurrentContext(imctx); return ctx; @@ -49,7 +49,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 8000; ctx->bandWidthMax = 16000; ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { ctx->demod = 1; @@ -57,7 +56,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 100000; ctx->bandWidthMax = 200000; ctx->sigPath.setDemodulator(SigPath::DEMOD_FM, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } ImGui::NextColumn(); if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { @@ -66,7 +64,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 6250; ctx->bandWidthMax = 12500; ctx->sigPath.setDemodulator(SigPath::DEMOD_AM, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { ctx->demod = 3; @@ -74,7 +71,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 3000; ctx->bandWidthMax = 6000; ctx->sigPath.setDemodulator(SigPath::DEMOD_DSB, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); } ImGui::NextColumn(); if (ImGui::RadioButton(CONCAT("USB##_", ctx->name), ctx->demod == 4) && ctx->demod != 4) { @@ -83,7 +79,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 1500; ctx->bandWidthMax = 3000; ctx->sigPath.setDemodulator(SigPath::DEMOD_USB, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_LOWER); } if (ImGui::RadioButton(CONCAT("CW##_", ctx->name), ctx->demod == 5) && ctx->demod != 5) { ctx->demod = 5; }; ImGui::NextColumn(); @@ -93,7 +88,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 1500; ctx->bandWidthMax = 3000; ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_UPPER); } if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { ctx->demod = 7; @@ -101,7 +95,6 @@ MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { ctx->bandWidthMin = 3000; ctx->bandWidthMax = 10000; ctx->sigPath.setDemodulator(SigPath::DEMOD_RAW, ctx->bandWidth); - API->setVFOReference(ctx->name, mod::API_t::REF_CENTER); }; ImGui::Columns(1, CONCAT("EndRadioModeColumns##_", ctx->name), false); diff --git a/radio/src/path.cpp b/radio/src/path.cpp index 5fd332cf..f0547757 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -18,11 +18,13 @@ int SigPath::sampleRateChangeHandler(void* ctx, float sampleRate) { return _this->audioResamp.getOutputBlockSize(); } -void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input) { +void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { this->sampleRate = sampleRate; this->blockSize = blockSize; this->vfoName = vfoName; + vfo = sigpath::vfoManager.createVFO(vfoName, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000); + _demod = DEMOD_FM; _deemp = DEEMP_50US; bandwidth = 200000; @@ -31,10 +33,10 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp: // TODO: ajust deemphasis for different output sample rates // TODO: Add a mono to stereo for different modes - demod.init(input, 100000, 200000, 800); - amDemod.init(input, 50); - ssbDemod.init(input, 6000, 3000, 22); - cpx2stereo.init(input, 22); + demod.init(vfo->output, 100000, 200000, 800); + amDemod.init(vfo->output, 50); + ssbDemod.init(vfo->output, 6000, 3000, 22); + cpx2stereo.init(vfo->output, 22); audioResamp.init(&demod.output, 200000, 48000, 800); deemp.init(&audioResamp.output, 800, 50e-6, 48000); @@ -91,72 +93,79 @@ void SigPath::setDemodulator(int demId, float bandWidth) { // Set input of the audio resampler // TODO: Set bandwidth from argument if (demId == DEMOD_FM) { - API->setVFOSampleRate(vfoName, 200000, bandwidth); - demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(200000, bandwidth); + demod.setBlockSize(vfo->getOutputBlockSize()); demod.setSampleRate(200000); demod.setDeviation(bandwidth / 2.0f); audioResamp.setInput(&demod.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(200000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(200000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = (_deemp == DEEMP_NONE); + vfo->setReference(mod::API_t::REF_CENTER); demod.start(); } else if (demId == DEMOD_NFM) { - API->setVFOSampleRate(vfoName, 16000, bandwidth); - demod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(16000, bandwidth); + demod.setBlockSize(vfo->getOutputBlockSize()); demod.setSampleRate(16000); demod.setDeviation(bandwidth / 2.0f); audioResamp.setInput(&demod.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(16000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(16000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; + vfo->setReference(mod::API_t::REF_CENTER); demod.start(); } else if (demId == DEMOD_AM) { - API->setVFOSampleRate(vfoName, 12500, bandwidth); - amDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(12500, bandwidth); + amDemod.setBlockSize(vfo->getOutputBlockSize()); audioResamp.setInput(&amDemod.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(12500, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(12500, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; + vfo->setReference(mod::API_t::REF_CENTER); amDemod.start(); } else if (demId == DEMOD_USB) { - API->setVFOSampleRate(vfoName, 6000, bandwidth); - ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(6000, bandwidth); + ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_USB); audioResamp.setInput(&ssbDemod.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; + vfo->setReference(mod::API_t::REF_LOWER); ssbDemod.start(); } else if (demId == DEMOD_LSB) { - API->setVFOSampleRate(vfoName, 6000, bandwidth); - ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(6000, bandwidth); + ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); audioResamp.setInput(&ssbDemod.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; + vfo->setReference(mod::API_t::REF_UPPER); ssbDemod.start(); } else if (demId == DEMOD_DSB) { - API->setVFOSampleRate(vfoName, 6000, bandwidth); - ssbDemod.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(6000, bandwidth); + ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_DSB); audioResamp.setInput(&ssbDemod.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; + vfo->setReference(mod::API_t::REF_CENTER); ssbDemod.start(); } else if (demId == DEMOD_RAW) { - API->setVFOSampleRate(vfoName, 10000, bandwidth); - cpx2stereo.setBlockSize(API->getVFOOutputBlockSize(vfoName)); + vfo->setSampleRate(10000, bandwidth); + cpx2stereo.setBlockSize(vfo->getOutputBlockSize()); //audioResamp.setInput(&cpx2stereo.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(10000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(10000, vfo->getOutputBlockSize(), audioBw, audioBw); + vfo->setReference(mod::API_t::REF_LOWER); cpx2stereo.start(); } else { @@ -192,7 +201,7 @@ void SigPath::setDeemphasis(int deemph) { void SigPath::setBandwidth(float bandWidth) { bandwidth = bandWidth; - API->setVFOBandwidth(vfoName, bandwidth); + vfo->setBandwidth(bandwidth); if (_demod == DEMOD_FM) { demod.stop(); demod.setDeviation(bandwidth / 2.0f); @@ -231,7 +240,7 @@ void SigPath::setBandwidth(float bandWidth) { if (audioBw != _audioBw) { audioBw = _audioBw; audioResamp.stop(); - audioResamp.setInputSampleRate(6000, API->getVFOOutputBlockSize(vfoName), audioBw, audioBw); + audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); audioResamp.start(); } } diff --git a/radio/src/path.h b/radio/src/path.h index 63cee571..f3f6b822 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -10,11 +10,12 @@ #include #include #include +#include class SigPath { public: SigPath(); - void init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input); + void init(std::string vfoName, uint64_t sampleRate, int blockSize); void start(); void setSampleRate(float sampleRate); void setVFOFrequency(uint64_t frequency); @@ -46,6 +47,8 @@ public: private: static int sampleRateChangeHandler(void* ctx, float sampleRate); + + VFOManager::VFO* vfo; dsp::stream input; diff --git a/root_dev/config.json b/root_dev/config.json index 14d71bf2..95be2664 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,13 +3,13 @@ "Radio": { "device": "Speakers (Realtek High Definiti", "sampleRate": 48000.0, - "volume": 0.4032258093357086 + "volume": 0.6666666865348816 } }, "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 99000000, + "frequency": 103200000, "max": 0.0, "maximized": false, "menuWidth": 300, From ec234e99a13ebdd8e1ed0414c3b03a309289c6e0 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 00:26:45 +0200 Subject: [PATCH 036/127] Fixed issues with new module system 2 --- core/src/module.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/module.h b/core/src/module.h index f98384d3..99faaa9a 100644 --- a/core/src/module.h +++ b/core/src/module.h @@ -17,7 +17,7 @@ #define SDRPP_EXPORT extern "C" __declspec(dllimport) #endif #else -#define SDRPP_EXPORT /**/ +#define SDRPP_EXPORT extern #endif #ifdef _WIN32 From 91d382ca0c298f62225af4d9dd8d2f3d73cc578a Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 00:33:38 +0200 Subject: [PATCH 037/127] Fixed issues with new module system 3 --- core/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 065841c5..4ae3fa89 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -72,6 +72,9 @@ else() target_link_libraries(sdrpp_core PUBLIC dl) endif (MSVC) +target_link_libraries(sdrpp_core PUBLIC SoapySDR) +target_link_libraries(sdrpp_core PUBLIC volk) + set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file From 35ef99c6e9dfda12f5ce7ea4c2172c87c77ff12e Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 00:41:35 +0200 Subject: [PATCH 038/127] Fixed issues with new module system 4 --- core/CMakeLists.txt | 1 + demo/CMakeLists.txt | 3 ++- radio/CMakeLists.txt | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 4ae3fa89..4319ef60 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -19,6 +19,7 @@ file(GLOB IMGUI "src/imgui/*.cpp") # Add code to dyn lib add_library(sdrpp_core SHARED ${SRC} ${GUI} ${SIGPATH} ${IMGUI}) +set_target_properties(sdrpp_core PROPERTIES PREFIX "") # Include core headers target_include_directories(sdrpp_core PUBLIC "src/") diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 7354f36e..1af478f1 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -11,4 +11,5 @@ endif (MSVC) file(GLOB SRC "src/*.cpp") add_library(demo SHARED ${SRC}) -target_link_libraries(demo PRIVATE sdrpp_core) \ No newline at end of file +target_link_libraries(demo PRIVATE sdrpp_core) +set_target_properties(demo PROPERTIES PREFIX "") \ No newline at end of file diff --git a/radio/CMakeLists.txt b/radio/CMakeLists.txt index b6cfe995..ccaa1daa 100644 --- a/radio/CMakeLists.txt +++ b/radio/CMakeLists.txt @@ -13,4 +13,5 @@ file(GLOB SRC "src/*.cpp") include_directories("src/") add_library(radio SHARED ${SRC}) -target_link_libraries(radio PRIVATE sdrpp_core) \ No newline at end of file +target_link_libraries(radio PRIVATE sdrpp_core) +set_target_properties(radio PROPERTIES PREFIX "") \ No newline at end of file From 109696c65aa92d4ab5dfcebbecd966f307e57b49 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 00:44:45 +0200 Subject: [PATCH 039/127] Fixed issues with new module system 5 --- core/CMakeLists.txt | 3 +-- demo/CMakeLists.txt | 3 +-- radio/CMakeLists.txt | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 4319ef60..ec11924e 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -6,8 +6,7 @@ if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) add_definitions(-DSDRPP_IS_CORE) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 1af478f1..6c15e42d 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -4,8 +4,7 @@ project(demo) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) file(GLOB SRC "src/*.cpp") diff --git a/radio/CMakeLists.txt b/radio/CMakeLists.txt index ccaa1daa..2a26d88c 100644 --- a/radio/CMakeLists.txt +++ b/radio/CMakeLists.txt @@ -4,8 +4,7 @@ project(radio) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive -fsanitize=address -g") - # set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) file(GLOB SRC "src/*.cpp") From 2aaf2545656b7ad64b5d84439088ae9bc9be11ae Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 00:56:00 +0200 Subject: [PATCH 040/127] Fixed issues with new module system 6 --- recorder/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recorder/CMakeLists.txt b/recorder/CMakeLists.txt index f5a297fc..a83a2eba 100644 --- a/recorder/CMakeLists.txt +++ b/recorder/CMakeLists.txt @@ -7,7 +7,7 @@ if (MSVC) include_directories(recorder "C:/Program Files/PothosSDR/include/volk/") include_directories(recorder "C:/Program Files/PothosSDR/include/") else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fsanitize=address -g") + set(CMAKE_CXX_FLAGS "-O3 -std=c++17") include_directories(recorder "/usr/include/volk") link_libraries(pthread) link_libraries(GL) From ab8ce4c53f67a159f64dd43d9658b3d7bf51a75d Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Sun, 20 Sep 2020 01:36:25 +0200 Subject: [PATCH 041/127] Fixed warnings on linux --- core/src/config.cpp | 2 +- core/src/gui/bandplan.cpp | 4 +- core/src/gui/icons.cpp | 10 ++-- core/src/gui/waterfall.cpp | 3 +- core/src/module.cpp | 2 +- core/src/signal_path/vfo_manager.cpp | 1 - recorder/CMakeLists.txt | 49 ++----------------- root_dev/config.json | 73 ++++++++++++++++------------ root_dev/module_list.json | 8 ++- 9 files changed, 59 insertions(+), 93 deletions(-) diff --git a/core/src/config.cpp b/core/src/config.cpp index 6c46dde4..6dccaa2b 100644 --- a/core/src/config.cpp +++ b/core/src/config.cpp @@ -32,7 +32,7 @@ namespace config { } _path = path; std::ifstream file(path.c_str()); - config << file; + file >> config; file.close(); } diff --git a/core/src/gui/bandplan.cpp b/core/src/gui/bandplan.cpp index a0e6de91..79bfc441 100644 --- a/core/src/gui/bandplan.cpp +++ b/core/src/gui/bandplan.cpp @@ -71,7 +71,7 @@ namespace bandplan { void loadBandPlan(std::string path) { std::ifstream file(path.c_str()); json data; - data << file; + file >> data; file.close(); BandPlan_t plan = data.get(); @@ -114,7 +114,7 @@ namespace bandplan { } std::ifstream file(path.c_str()); json data; - data << file; + file >> data; file.close(); colorTable = data.get>(); diff --git a/core/src/gui/icons.cpp b/core/src/gui/icons.cpp index 54c6f451..e12810e9 100644 --- a/core/src/gui/icons.cpp +++ b/core/src/gui/icons.cpp @@ -11,7 +11,7 @@ namespace icons { GLuint loadTexture(std::string path) { int w,h,n; - stbi_uc* data = stbi_load(path.c_str(), &w, &h, &n, NULL); + stbi_uc* data = stbi_load(path.c_str(), &w, &h, &n, 0); GLuint texId; glGenTextures(1, &texId); glBindTexture(GL_TEXTURE_2D, texId); @@ -24,9 +24,9 @@ namespace icons { } void load() { - LOGO = (ImTextureID)loadTexture(config::getRootDirectory() + "/res/icons/sdrpp.png"); - PLAY = (ImTextureID)loadTexture(config::getRootDirectory() + "/res/icons/play.png"); - STOP = (ImTextureID)loadTexture(config::getRootDirectory() + "/res/icons/stop.png"); - MENU = (ImTextureID)loadTexture(config::getRootDirectory() + "/res/icons/menu.png"); + LOGO = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/sdrpp.png"); + PLAY = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/play.png"); + STOP = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/stop.png"); + MENU = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/menu.png"); } } \ No newline at end of file diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 6a17381c..ab2af77e 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -199,7 +199,7 @@ namespace ImGui { ImVec2 dragOrigin(mousePos.x - drag.x, mousePos.y - drag.y); bool mouseHovered, mouseHeld; - bool mouseClicked = ImGui::ButtonBehavior(ImRect(fftAreaMin, fftAreaMax), ImGuiID("WaterfallID"), &mouseHovered, &mouseHeld, + bool mouseClicked = ImGui::ButtonBehavior(ImRect(fftAreaMin, fftAreaMax), GetID("WaterfallID"), &mouseHovered, &mouseHeld, ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_PressedOnClick); bool draging = ImGui::IsMouseDragging(ImGuiMouseButton_Left) && ImGui::IsWindowFocused(); @@ -650,7 +650,6 @@ namespace ImGui { } void WaterfallVFO::setOffset(float offset) { - printf("WaterfallVFO::SetOffset: %p\n", this); generalOffset = offset; if (reference == REF_CENTER) { centerOffset = offset; diff --git a/core/src/module.cpp b/core/src/module.cpp index 4df08517..69f6c48a 100644 --- a/core/src/module.cpp +++ b/core/src/module.cpp @@ -116,7 +116,7 @@ namespace mod { } std::ifstream file(path.c_str()); json data; - data << file; + file >> data; file.close(); std::map list = data.get>(); diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index bf356996..b7397ad8 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -9,7 +9,6 @@ VFOManager::VFO::VFO(std::string name, int reference, float offset, float bandwi wtfVFO->setBandwidth(bandwidth); wtfVFO->setOffset(offset); output = dspVFO->output; - printf("Created VFO: %p", wtfVFO); gui::waterfall.vfos[name] = wtfVFO; } diff --git a/recorder/CMakeLists.txt b/recorder/CMakeLists.txt index a83a2eba..9d6af4f2 100644 --- a/recorder/CMakeLists.txt +++ b/recorder/CMakeLists.txt @@ -3,53 +3,14 @@ project(recorder) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - link_directories(recorder "C:/Program Files/PothosSDR/lib/") - include_directories(recorder "C:/Program Files/PothosSDR/include/volk/") - include_directories(recorder "C:/Program Files/PothosSDR/include/") else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17") - include_directories(recorder "/usr/include/volk") - link_libraries(pthread) - link_libraries(GL) - link_libraries(GLEW) - link_libraries(glfw) - link_libraries(fftw3) - link_libraries(fftw3f) - link_libraries(portaudio) - link_libraries(X11) - link_libraries(Xxf86vm) + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) -link_libraries(volk) -link_libraries(SoapySDR) - -# Main code -include_directories(recorder "src/") -include_directories(recorder "../core/src/") -include_directories(recorder "../core/src/imgui") file(GLOB SRC "src/*.cpp") -file(GLOB IMGUI "../core/src/imgui/*.cpp") -add_library(recorder SHARED ${SRC} ${IMGUI}) -set_target_properties(recorder PROPERTIES PREFIX "") -if (MSVC) - # Glew - find_package(GLEW REQUIRED) - target_link_libraries(recorder PRIVATE GLEW::GLEW) +include_directories("src/") - # GLFW3 - find_package(glfw3 CONFIG REQUIRED) - target_link_libraries(recorder PRIVATE glfw) - - # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(recorder PRIVATE FFTW3::fftw3) - find_package(FFTW3f CONFIG REQUIRED) - target_link_libraries(recorder PRIVATE FFTW3::fftw3f) - - # PortAudio - find_package(portaudio CONFIG REQUIRED) - target_link_libraries(recorder PRIVATE portaudio portaudio_static) -endif (MSVC) - -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file +add_library(recorder SHARED ${SRC}) +target_link_libraries(recorder PRIVATE sdrpp_core) +set_target_properties(recorder PROPERTIES PREFIX "") \ No newline at end of file diff --git a/root_dev/config.json b/root_dev/config.json index 95be2664..81d30f93 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,33 +1,42 @@ -{ - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.6666666865348816 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 103200000, - "max": 0.0, - "maximized": false, - "menuWidth": 300, - "min": -52.20588302612305, - "showWaterfall": true, - "source": "HackRF One #0 901868dc282c8f8b", - "sourceSettings": { - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 24.503000259399414, - "VGA": 16.229999542236328 - }, - "sampleRate": 8000000 - } - }, - "windowSize": { - "h": 726, - "w": 1280 - } +{ + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.3655914068222046 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 300, + "frequency": 96914040, + "max": 0.0, + "maximized": false, + "menuWidth": 300, + "min": -51.47058868408203, + "showWaterfall": true, + "source": "HackRF One #0 901868dc282c8f8b", + "sourceSettings": { + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 0.0 + }, + "sampleRate": 2560000 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 0.0, + "LNA": 24.503000259399414, + "VGA": 16.229999542236328 + }, + "sampleRate": 8000000 + }, + "PulseAudio": { + "sampleRate": 96000 + } + }, + "windowSize": { + "h": 1053, + "w": 959 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 319321f3..15853c86 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,4 @@ { - "Radio": "../build/radio/Release/radio.dll", - "Recorder": "../build/recorder/Release/recorder.dll", - "Demo": "../build/demo/Release/demo.dll", - "Demo 2": "../build/demo/Release/demo.dll" -} \ No newline at end of file + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so" +} From 51ee02f9da6a2ab1b2b7e948b877b6f616a34ab4 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 20 Sep 2020 02:18:01 +0200 Subject: [PATCH 042/127] Fixed windows bugs --- core/src/signal_path/vfo_manager.cpp | 1 - recorder/src/main.cpp | 10 ++-- root_dev/config.json | 82 ++++++++++++++-------------- root_dev/module_list.json | 4 +- 4 files changed, 47 insertions(+), 50 deletions(-) diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index b7397ad8..f43248f1 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -119,7 +119,6 @@ int VFOManager::getOutputBlockSize(std::string name) { void VFOManager::updateFromWaterfall(ImGui::WaterFall* wtf) { for (auto const& [name, vfo] : vfos) { if (vfo->wtfVFO->centerOffsetChanged) { - spdlog::info("UH OH: Change!"); vfo->wtfVFO->centerOffsetChanged = false; vfo->dspVFO->setOffset(vfo->wtfVFO->centerOffset); } diff --git a/recorder/src/main.cpp b/recorder/src/main.cpp index 3bd4655b..4dda16cf 100644 --- a/recorder/src/main.cpp +++ b/recorder/src/main.cpp @@ -6,11 +6,10 @@ #include #include #include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) -mod::API_t* API; - struct RecorderContext_t { std::string name; dsp::stream* stream; @@ -60,7 +59,6 @@ void sampleRateChanged(void* ctx, float sampleRate, int blockSize) { } MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { - API = _API; RecorderContext_t* ctx = new RecorderContext_t; ctx->recording = false; ctx->selectedStreamName = ""; @@ -77,7 +75,7 @@ MOD_EXPORT void _NEW_FRAME_(RecorderContext_t* ctx) { MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - std::vector streamNames = API->getStreamNameList(); + std::vector streamNames = audio::getStreamNameList(); std::string nameList; for (std::string name : streamNames) { nameList += name; @@ -124,7 +122,7 @@ MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { ctx->samplesWritten = 0; ctx->sampleRate = 48000; ctx->writer = new WavWriter("recordings/" + genFileName("audio_"), 16, 2, 48000); - ctx->stream = API->bindToStreamStereo(ctx->selectedStreamName, streamRemovedHandler, sampleRateChanged, ctx); + ctx->stream = audio::bindToStreamStereo(ctx->selectedStreamName, streamRemovedHandler, sampleRateChanged, ctx); ctx->workerThread = std::thread(_writeWorker, ctx); ctx->recording = true; ctx->startTime = time(0); @@ -136,7 +134,7 @@ MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { ctx->stream->stopReader(); ctx->workerThread.join(); ctx->stream->clearReadStop(); - API->unbindFromStreamStereo(ctx->selectedStreamName, ctx->stream); + audio::unbindFromStreamStereo(ctx->selectedStreamName, ctx->stream); ctx->writer->close(); delete ctx->writer; ctx->recording = false; diff --git a/root_dev/config.json b/root_dev/config.json index 81d30f93..a0d5796f 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,42 +1,42 @@ -{ - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.3655914068222046 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 96914040, - "max": 0.0, - "maximized": false, - "menuWidth": 300, - "min": -51.47058868408203, - "showWaterfall": true, - "source": "HackRF One #0 901868dc282c8f8b", - "sourceSettings": { - "Generic RTL2832U OEM :: 00000001": { - "gains": { - "TUNER": 0.0 - }, - "sampleRate": 2560000 - }, - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 24.503000259399414, - "VGA": 16.229999542236328 - }, - "sampleRate": 8000000 - }, - "PulseAudio": { - "sampleRate": 96000 - } - }, - "windowSize": { - "h": 1053, - "w": 959 - } +{ + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.602150559425354 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 300, + "frequency": 99000000, + "max": 0.0, + "maximized": false, + "menuWidth": 300, + "min": -51.47058868408203, + "showWaterfall": true, + "source": "HackRF One #0 901868dc282c8f8b", + "sourceSettings": { + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 0.0 + }, + "sampleRate": 2560000 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 0.0, + "LNA": 24.503000259399414, + "VGA": 16.229999542236328 + }, + "sampleRate": 8000000 + }, + "PulseAudio": { + "sampleRate": 96000 + } + }, + "windowSize": { + "h": 720, + "w": 1280 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 15853c86..6036c3d6 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,4 +1,4 @@ { - "Radio": "./radio/radio.so", - "Recorder": "./recorder/recorder.so" + "Radio": "./radio/Release/radio.dll", + "Recorder": "./recorder/Release/recorder.dll" } From 48a8b04eaa70286e0e7c717c0e9b9eea19772e76 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 24 Sep 2020 19:36:57 +0200 Subject: [PATCH 043/127] More fixes --- core/src/config.cpp | 117 ++++++----- core/src/config.h | 42 +++- core/src/core.cpp | 47 ++--- core/src/core.h | 6 + core/src/gui/frequency_select.cpp | 2 +- core/src/gui/gui.cpp | 1 + core/src/gui/gui.h | 2 + core/src/gui/icons.cpp | 8 +- core/src/gui/icons.h | 2 +- core/src/gui/main_window.cpp | 337 ++++++++++++++++-------------- core/src/gui/main_window.h | 1 + core/src/gui/menu.cpp | 19 +- core/src/gui/menu.h | 3 + core/src/gui/style.cpp | 4 +- radio/src/main.cpp | 8 + root_dev/config.json | 16 +- root_dev/module_list.json | 4 +- root_dev/radio_config.json | 5 + 18 files changed, 372 insertions(+), 252 deletions(-) create mode 100644 root_dev/radio_config.json diff --git a/core/src/config.cpp b/core/src/config.cpp index 6dccaa2b..ae03cac1 100644 --- a/core/src/config.cpp +++ b/core/src/config.cpp @@ -1,62 +1,73 @@ #include -namespace config { - bool configModified = false; - json config; - bool autoSaveRunning = false; - std::string _path; - std::thread _workerThread; - std::string rootDir; +ConfigManager::ConfigManager() { - void _autoSaveWorker() { - while (autoSaveRunning) { - if (configModified) { - configModified = false; - std::ofstream file(_path.c_str()); - file << std::setw(4) << config; - file.close(); - spdlog::info("Config saved"); - } - std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - } +} + +void ConfigManager::setPath(std::string file) { + path = file; +} + +void ConfigManager::load(json default, bool lock) { + if (lock) { mtx.lock(); } + if (path == "") { + spdlog::error("Config manager tried to load file with no path specified"); + return; + } + if (!std::filesystem::exists(path)) { + spdlog::warn("Config file '{0}' does not exist, creating it", path); + conf = default; + save(false); + } + if (!std::filesystem::is_regular_file(path)) { + spdlog::error("Config file '{0}' isn't a file", path); + return; } - void load(std::string path) { - if (!std::filesystem::exists(path)) { - spdlog::error("Config file does not exist"); - return; - } - if (!std::filesystem::is_regular_file(path)) { - spdlog::error("Config file isn't a file..."); - return; - } - _path = path; - std::ifstream file(path.c_str()); - file >> config; - file.close(); - } + std::ifstream file(path.c_str()); + file >> conf; + file.close(); + if (lock) { mtx.unlock(); } +} - void startAutoSave() { - if (autoSaveRunning) { - return; +void ConfigManager::save(bool lock) { + if (lock) { mtx.lock(); } + std::ofstream file(path.c_str()); + file << conf.dump(4); + file.close(); + if (lock) { mtx.unlock(); } +} + +void ConfigManager::enableAutoSave() { + autoSaveEnabled = true; + autoSaveThread = std::thread(autoSaveWorker, this); +} + +void ConfigManager::disableAutoSave() { + autoSaveEnabled = false; + autoSaveThread.join(); +} + +void ConfigManager::aquire() { + mtx.lock(); +} + +void ConfigManager::release(bool changed) { + this->changed |= changed; + mtx.unlock(); +} + +void ConfigManager::autoSaveWorker(ConfigManager* _this) { + while (_this->autoSaveEnabled) { + if (!_this->mtx.try_lock()) { + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + continue; } - autoSaveRunning = true; - _workerThread = std::thread(_autoSaveWorker); - } - - void stopAutoSave() { - if (!autoSaveRunning) { - return; + if (_this->changed) { + _this->changed = false; + _this->save(false); } - autoSaveRunning = false; - _workerThread.join(); + _this->mtx.unlock(); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); } - - void setRootDirectory(std::string dir) { - rootDir = dir; - } - - std::string getRootDirectory() { - return rootDir; - } -}; \ No newline at end of file +} diff --git a/core/src/config.h b/core/src/config.h index da6b0ee0..14feeb8b 100644 --- a/core/src/config.h +++ b/core/src/config.h @@ -7,16 +7,42 @@ #include #include #include +#include using nlohmann::json; -namespace config { - void load(std::string path); - void startAutoSave(); - void stopAutoSave(); - void setRootDirectory(std::string dir); - std::string getRootDirectory(); +//#define DEV_BUILD + +#ifndef ROOT_DIR +#ifdef DEV_BUILD +#define ROOT_DIR "../root_dev" +#elif _WIN32 +#define ROOT_DIR "." +#else +#define ROOT_DIR "/etc/sdrpp" +#endif +#endif + +class ConfigManager { +public: + ConfigManager(); + void setPath(std::string file); + void load(json default, bool lock = true); + void save(bool lock = true); + void enableAutoSave(); + void disableAutoSave(); + void aquire(); + void release(bool changed = false); + + json conf; + +private: + static void autoSaveWorker(ConfigManager* _this); + + std::string path = ""; + bool changed = false; + bool autoSaveEnabled = false; + std::thread autoSaveThread; + std::mutex mtx; - extern bool configModified; - extern json config; }; \ No newline at end of file diff --git a/core/src/core.cpp b/core/src/core.cpp index d77835a8..fe20dcb5 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include @@ -23,8 +24,9 @@ #include #endif -// Comment to build a normal release -#define DEV_BUILD +namespace core { + ConfigManager configManager; +}; bool maximized = false; bool fullScreen = false; @@ -50,18 +52,11 @@ int sdrpp_main() { spdlog::info("SDR++ v" VERSION_STR); -#ifdef DEV_BUILD - config::setRootDirectory("../root_dev"); -#elif _WIN32 - config::setRootDirectory("."); -#else - config::setRootDirectory("/etc/sdrpp"); -#endif - // Load config spdlog::info("Loading config"); - config::load(config::getRootDirectory() + "/config.json"); - config::startAutoSave(); + core::configManager.setPath(ROOT_DIR "/config.json"); + core::configManager.load(json()); + core::configManager.enableAutoSave(); // Setup window glfwSetErrorCallback(glfw_error_callback); @@ -74,9 +69,11 @@ int sdrpp_main() { glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac - int winWidth = config::config["windowSize"]["w"]; - int winHeight = config::config["windowSize"]["h"]; - maximized = config::config["maximized"]; + core::configManager.aquire(); + int winWidth = core::configManager.conf["windowSize"]["w"]; + int winHeight = core::configManager.conf["windowSize"]["h"]; + maximized = core::configManager.conf["maximized"]; + core::configManager.release(); // Create window with graphics context GLFWmonitor* monitor = glfwGetPrimaryMonitor(); @@ -94,7 +91,7 @@ int sdrpp_main() { // Load app icon GLFWimage icons[10]; - icons[0].pixels = stbi_load((config::getRootDirectory() + "/res/icons/sdrpp.png").c_str(), &icons[0].width, &icons[0].height, 0, 4); + icons[0].pixels = stbi_load(((std::string)(ROOT_DIR "/res/icons/sdrpp.png")).c_str(), &icons[0].width, &icons[0].height, 0, 4); icons[1].pixels = (unsigned char*)malloc(16 * 16 * 4); icons[1].width = icons[1].height = 16; icons[2].pixels = (unsigned char*)malloc(24 * 24 * 4); icons[2].width = icons[2].height = 24; icons[3].pixels = (unsigned char*)malloc(32 * 32 * 4); icons[3].width = icons[3].height = 32; @@ -162,10 +159,10 @@ int sdrpp_main() { icons::load(); spdlog::info("Loading band plans"); - bandplan::loadFromDir(config::getRootDirectory() + "/bandplans"); + bandplan::loadFromDir(ROOT_DIR "/bandplans"); spdlog::info("Loading band plans color table"); - bandplan::loadColorTable(config::getRootDirectory() + "/band_colors.json"); + bandplan::loadColorTable(ROOT_DIR "/band_colors.json"); windowInit(); @@ -185,11 +182,12 @@ int sdrpp_main() { if (_maximized != maximized) { _maximized = maximized; - config::config["maximized"]= _maximized; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["maximized"]= _maximized; if (!maximized) { - glfwSetWindowSize(window, config::config["windowSize"]["w"], config::config["windowSize"]["h"]); + glfwSetWindowSize(window, core::configManager.conf["windowSize"]["w"], core::configManager.conf["windowSize"]["h"]); } + core::configManager.release(true); } int _winWidth, _winHeight; @@ -214,9 +212,10 @@ int sdrpp_main() { if ((_winWidth != winWidth || _winHeight != winHeight) && !maximized && _winWidth > 0 && _winHeight > 0) { winWidth = _winWidth; winHeight = _winHeight; - config::config["windowSize"]["w"] = winWidth; - config::config["windowSize"]["h"] = winHeight; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["windowSize"]["w"] = winWidth; + core::configManager.conf["windowSize"]["h"] = winHeight; + core::configManager.release(true); } if (winWidth > 0 && winHeight > 0) { diff --git a/core/src/core.h b/core/src/core.h index ce5ea1fd..14983520 100644 --- a/core/src/core.h +++ b/core/src/core.h @@ -1,3 +1,9 @@ #pragma once +#include +#include + +namespace core { + SDRPP_EXPORT ConfigManager configManager; +}; int sdrpp_main(); \ No newline at end of file diff --git a/core/src/gui/frequency_select.cpp b/core/src/gui/frequency_select.cpp index b40aabad..711b8f09 100644 --- a/core/src/gui/frequency_select.cpp +++ b/core/src/gui/frequency_select.cpp @@ -9,7 +9,7 @@ FrequencySelect::FrequencySelect() { } void FrequencySelect::init() { - font = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 42.0f); + font = ImGui::GetIO().Fonts->AddFontFromFileTTF(((std::string)(ROOT_DIR "/res/fonts/Roboto-Medium.ttf")).c_str(), 42.0f); for (int i = 0; i < 12; i++) { digits[i] = 0; diff --git a/core/src/gui/gui.cpp b/core/src/gui/gui.cpp index 59c8b375..57c09e29 100644 --- a/core/src/gui/gui.cpp +++ b/core/src/gui/gui.cpp @@ -3,4 +3,5 @@ namespace gui { ImGui::WaterFall waterfall; FrequencySelect freqSelect; + Menu menu; }; \ No newline at end of file diff --git a/core/src/gui/gui.h b/core/src/gui/gui.h index c65833c2..32d48b37 100644 --- a/core/src/gui/gui.h +++ b/core/src/gui/gui.h @@ -1,9 +1,11 @@ #pragma once #include #include +#include #include namespace gui { SDRPP_EXPORT ImGui::WaterFall waterfall; SDRPP_EXPORT FrequencySelect freqSelect; + SDRPP_EXPORT Menu menu; }; \ No newline at end of file diff --git a/core/src/gui/icons.cpp b/core/src/gui/icons.cpp index e12810e9..b6af76d3 100644 --- a/core/src/gui/icons.cpp +++ b/core/src/gui/icons.cpp @@ -24,9 +24,9 @@ namespace icons { } void load() { - LOGO = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/sdrpp.png"); - PLAY = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/play.png"); - STOP = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/stop.png"); - MENU = (ImTextureID)(uintptr_t)loadTexture(config::getRootDirectory() + "/res/icons/menu.png"); + LOGO = (ImTextureID)(uintptr_t)loadTexture(ROOT_DIR "/res/icons/sdrpp.png"); + PLAY = (ImTextureID)(uintptr_t)loadTexture(ROOT_DIR "/res/icons/play.png"); + STOP = (ImTextureID)(uintptr_t)loadTexture(ROOT_DIR "/res/icons/stop.png"); + MENU = (ImTextureID)(uintptr_t)loadTexture(ROOT_DIR "/res/icons/menu.png"); } } \ No newline at end of file diff --git a/core/src/gui/icons.h b/core/src/gui/icons.h index 7595682a..f932c4d0 100644 --- a/core/src/gui/icons.h +++ b/core/src/gui/icons.h @@ -10,6 +10,6 @@ namespace icons { extern ImTextureID STOP; extern ImTextureID MENU; - GLuint loadTexture(char* path); + GLuint loadTexture(std::string path); void load(); } \ No newline at end of file diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index b47a6034..4dd8437c 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -64,14 +64,14 @@ bool showMenu = true; void saveCurrentSource() { int i = 0; for (std::string gainName : soapy.gainList) { - config::config["sourceSettings"][sourceName]["gains"][gainName] = uiGains[i]; + core::configManager.conf["sourceSettings"][sourceName]["gains"][gainName] = uiGains[i]; i++; } - config::config["sourceSettings"][sourceName]["sampleRate"] = soapy.sampleRates[srId]; + core::configManager.conf["sourceSettings"][sourceName]["sampleRate"] = soapy.sampleRates[srId]; } void loadSourceConfig(std::string name) { - json sourceSettings = config::config["sourceSettings"][name]; + json sourceSettings = core::configManager.conf["sourceSettings"][name]; sampleRate = sourceSettings["sampleRate"]; @@ -110,7 +110,7 @@ void loadSourceConfig(std::string name) { } void loadAudioConfig(std::string name) { - json audioSettings = config::config["audio"][name]; + json audioSettings = core::configManager.conf["audio"][name]; std::string devName = audioSettings["device"]; auto _devIt = std::find(audio::streams[name]->audio->deviceNames.begin(), audio::streams[name]->audio->deviceNames.end(), devName); @@ -146,14 +146,125 @@ void loadAudioConfig(std::string name) { } void saveAudioConfig(std::string name) { - config::config["audio"][name]["device"] = audio::streams[name]->audio->deviceNames[audio::streams[name]->deviceId]; - config::config["audio"][name]["volume"] = audio::streams[name]->volume; - config::config["audio"][name]["sampleRate"] = audio::streams[name]->sampleRate; + core::configManager.conf["audio"][name]["device"] = audio::streams[name]->audio->deviceNames[audio::streams[name]->deviceId]; + core::configManager.conf["audio"][name]["volume"] = audio::streams[name]->volume; + core::configManager.conf["audio"][name]["sampleRate"] = audio::streams[name]->sampleRate; } +void setVFO(float freq); + +// ======================================================= + +void sourceMenu(void* ctx) { + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + if (playing) { style::beginDisabled(); }; + + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str())) { + spdlog::info("Changed input device: {0}", devId); + sourceName = soapy.devNameList[devId]; + soapy.setDevice(soapy.devList[devId]); + + core::configManager.aquire(); + if (core::configManager.conf["sourceSettings"].contains(sourceName)) { + loadSourceConfig(sourceName); + } + else { + srId = 0; + sampleRate = soapy.getSampleRate(); + bw.val = sampleRate; + gui::waterfall.setBandwidth(sampleRate); + gui::waterfall.setViewBandwidth(sampleRate); + sigpath::signalPath.setSampleRate(sampleRate); + + if (soapy.gainList.size() >= 0) { + delete[] uiGains; + uiGains = new float[soapy.gainList.size()]; + for (int i = 0; i < soapy.gainList.size(); i++) { + uiGains[i] = soapy.currentGains[i]; + } + } + } + setVFO(gui::freqSelect.frequency); + core::configManager.conf["source"] = sourceName; + core::configManager.release(true); + } + ImGui::PopItemWidth(); + + if (ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str())) { + spdlog::info("Changed sample rate: {0}", srId); + sampleRate = soapy.sampleRates[srId]; + soapy.setSampleRate(sampleRate); + gui::waterfall.setBandwidth(sampleRate); + gui::waterfall.setViewBandwidth(sampleRate); + sigpath::signalPath.setSampleRate(sampleRate); + bw.val = sampleRate; + + core::configManager.aquire(); + if (!core::configManager.conf["sourceSettings"].contains(sourceName)) { + saveCurrentSource(); + } + core::configManager.conf["sourceSettings"][sourceName]["sampleRate"] = sampleRate; + core::configManager.release(true); + } + + ImGui::SameLine(); + bool noDevice = (soapy.devList.size() == 0); + if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { + soapy.refresh(); + if (noDevice && soapy.devList.size() > 0) { + sourceName = soapy.devNameList[0]; + soapy.setDevice(soapy.devList[0]); + if (core::configManager.conf["sourceSettings"][sourceName]) { + loadSourceConfig(sourceName); + } + } + } + + if (playing) { style::endDisabled(); }; + + float maxTextLength = 0; + float txtLen = 0; + char buf[100]; + + // Calculate the spacing + for (int i = 0; i < soapy.gainList.size(); i++) { + sprintf(buf, "%s gain", soapy.gainList[i].c_str()); + txtLen = ImGui::CalcTextSize(buf).x; + if (txtLen > maxTextLength) { + maxTextLength = txtLen; + } + } + + for (int i = 0; i < soapy.gainList.size(); i++) { + ImGui::Text("%s gain", soapy.gainList[i].c_str()); + ImGui::SameLine(); + sprintf(buf, "##_gain_slide_%d_", i); + + ImGui::SetCursorPosX(maxTextLength + 5); + ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); + if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { + soapy.setGain(i, uiGains[i]); + core::configManager.aquire(); + if (!core::configManager.conf["sourceSettings"].contains(sourceName)) { + saveCurrentSource(); + } + core::configManager.conf["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; + core::configManager.release(true); + } + ImGui::PopItemWidth(); + } + + ImGui::Spacing(); +} + +// ======================================================= + void windowInit() { spdlog::info("Initializing SoapySDR"); soapy.init(); + + gui::menu.registerEntry("Source", sourceMenu, NULL); gui::freqSelect.init(); @@ -168,16 +279,17 @@ void windowInit() { spdlog::info("Loading modules"); mod::initAPI(&gui::waterfall); - mod::loadFromList(config::getRootDirectory() + "/module_list.json"); + mod::loadFromList(ROOT_DIR "/module_list.json"); - bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 128.0f); + bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF(((std::string)(ROOT_DIR "/res/fonts/Roboto-Medium.ttf")).c_str(), 128.0f); // Load last source configuration - uint64_t frequency = config::config["frequency"]; - sourceName = config::config["source"]; + core::configManager.aquire(); + uint64_t frequency = core::configManager.conf["frequency"]; + sourceName = core::configManager.conf["source"]; auto _sourceIt = std::find(soapy.devNameList.begin(), soapy.devNameList.end(), sourceName); - if (_sourceIt != soapy.devNameList.end() && config::config["sourceSettings"].contains(sourceName)) { - json sourceSettings = config::config["sourceSettings"][sourceName]; + if (_sourceIt != soapy.devNameList.end() && core::configManager.conf["sourceSettings"].contains(sourceName)) { + json sourceSettings = core::configManager.conf["sourceSettings"][sourceName]; devId = std::distance(soapy.devNameList.begin(), _sourceIt); soapy.setDevice(soapy.devList[devId]); loadSourceConfig(sourceName); @@ -186,7 +298,7 @@ void windowInit() { int i = 0; bool settingsFound = false; for (std::string devName : soapy.devNameList) { - if (config::config["sourceSettings"].contains(devName)) { + if (core::configManager.conf["sourceSettings"].contains(devName)) { sourceName = devName; settingsFound = true; devId = i; @@ -222,17 +334,17 @@ void windowInit() { // Switch to double for all frequecies and bandwidth // Update UI settings - fftMin = config::config["min"]; - fftMax = config::config["max"]; + fftMin = core::configManager.conf["min"]; + fftMax = core::configManager.conf["max"]; gui::waterfall.setFFTMin(fftMin); gui::waterfall.setWaterfallMin(fftMin); gui::waterfall.setFFTMax(fftMax); gui::waterfall.setWaterfallMax(fftMax); - bandPlanEnabled.val = config::config["bandPlanEnabled"]; + bandPlanEnabled.val = core::configManager.conf["bandPlanEnabled"]; bandPlanEnabled.markAsChanged(); - std::string bandPlanName = config::config["bandPlan"]; + std::string bandPlanName = core::configManager.conf["bandPlan"]; auto _bandplanIt = bandplan::bandplans.find(bandPlanName); if (_bandplanIt != bandplan::bandplans.end()) { bandplanId.val = std::distance(bandplan::bandplans.begin(), bandplan::bandplans.find(bandPlanName)); @@ -262,7 +374,7 @@ void windowInit() { gui::waterfall.selectFirstVFO(); for (auto [name, stream] : audio::streams) { - if (config::config["audio"].contains(name)) { + if (core::configManager.conf["audio"].contains(name)) { bool running = audio::streams[name]->running; audio::stopStream(name); loadAudioConfig(name); @@ -277,16 +389,18 @@ void windowInit() { volume = &audio::streams[audioStreamName]->volume; } - menuWidth = config::config["menuWidth"]; + menuWidth = core::configManager.conf["menuWidth"]; newWidth = menuWidth; - showWaterfall = config::config["showWaterfall"]; + showWaterfall = core::configManager.conf["showWaterfall"]; if (!showWaterfall) { gui::waterfall.hideWaterfall(); } - fftHeight = config::config["fftHeight"]; + fftHeight = core::configManager.conf["fftHeight"]; gui::waterfall.setFFTHeight(fftHeight); + + core::configManager.release(); } void setVFO(float freq) { @@ -382,8 +496,9 @@ void drawWindow() { if (vfo->centerOffsetChanged) { gui::freqSelect.setFrequency(gui::waterfall.getCenterFrequency() + vfo->generalOffset); gui::freqSelect.frequencyChanged = false; - config::config["frequency"] = gui::freqSelect.frequency; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["frequency"] = gui::freqSelect.frequency; + core::configManager.release(true); } sigpath::vfoManager.updateFromWaterfall(&gui::waterfall); @@ -397,8 +512,9 @@ void drawWindow() { if (audioStreamName != "") { volume = &audio::streams[audioStreamName]->volume; } - config::config["frequency"] = gui::freqSelect.frequency; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["frequency"] = gui::freqSelect.frequency; + core::configManager.release(true); } if (gui::freqSelect.frequencyChanged) { @@ -407,16 +523,18 @@ void drawWindow() { vfo->centerOffsetChanged = false; vfo->lowerOffsetChanged = false; vfo->upperOffsetChanged = false; - config::config["frequency"] = gui::freqSelect.frequency; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["frequency"] = gui::freqSelect.frequency; + core::configManager.release(true); } if (gui::waterfall.centerFreqMoved) { gui::waterfall.centerFreqMoved = false; soapy.setFrequency(gui::waterfall.getCenterFrequency()); gui::freqSelect.setFrequency(gui::waterfall.getCenterFrequency() + vfo->generalOffset); - config::config["frequency"] = gui::freqSelect.frequency; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["frequency"] = gui::freqSelect.frequency; + core::configManager.release(true); } if (dcbias.changed()) { @@ -434,8 +552,9 @@ void drawWindow() { int _fftHeight = gui::waterfall.getFFTHeight(); if (fftHeight != _fftHeight) { fftHeight = _fftHeight; - config::config["fftHeight"] = fftHeight; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["fftHeight"] = fftHeight; + core::configManager.release(true); } ImVec2 vMin = ImGui::GetWindowContentRegionMin(); @@ -478,12 +597,13 @@ void drawWindow() { ImGui::SetNextItemWidth(200); if (ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, "")) { if (audioStreamName != "") { - if (!config::config["audio"].contains(audioStreamName)) { + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(audioStreamName)) { saveAudioConfig(audioStreamName); } audio::streams[audioStreamName]->audio->setVolume(*volume); - config::config["audio"][audioStreamName]["volume"] = *volume; - config::configModified = true; + core::configManager.conf["audio"][audioStreamName]["volume"] = *volume; + core::configManager.release(true); } } @@ -529,8 +649,9 @@ void drawWindow() { if(!down && grabbingMenu) { grabbingMenu = false; menuWidth = newWidth; - config::config["menuWidth"] = menuWidth; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["menuWidth"] = menuWidth; + core::configManager.release(true); } // Left Column @@ -543,104 +664,7 @@ void drawWindow() { ImGui::BeginChild("Left Column"); float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - if (ImGui::CollapsingHeader("Source", ImGuiTreeNodeFlags_DefaultOpen)) { - if (playing) { style::beginDisabled(); }; - - ImGui::PushItemWidth(menuColumnWidth); - if (ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str())) { - spdlog::info("Changed input device: {0}", devId); - sourceName = soapy.devNameList[devId]; - soapy.setDevice(soapy.devList[devId]); - - if (config::config["sourceSettings"].contains(sourceName)) { - loadSourceConfig(sourceName); - } - else { - srId = 0; - sampleRate = soapy.getSampleRate(); - bw.val = sampleRate; - gui::waterfall.setBandwidth(sampleRate); - gui::waterfall.setViewBandwidth(sampleRate); - sigpath::signalPath.setSampleRate(sampleRate); - - if (soapy.gainList.size() >= 0) { - delete[] uiGains; - uiGains = new float[soapy.gainList.size()]; - for (int i = 0; i < soapy.gainList.size(); i++) { - uiGains[i] = soapy.currentGains[i]; - } - } - } - setVFO(gui::freqSelect.frequency); - config::config["source"] = sourceName; - config::configModified = true; - } - ImGui::PopItemWidth(); - - if (ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str())) { - spdlog::info("Changed sample rate: {0}", srId); - sampleRate = soapy.sampleRates[srId]; - soapy.setSampleRate(sampleRate); - gui::waterfall.setBandwidth(sampleRate); - gui::waterfall.setViewBandwidth(sampleRate); - sigpath::signalPath.setSampleRate(sampleRate); - bw.val = sampleRate; - - if (!config::config["sourceSettings"].contains(sourceName)) { - saveCurrentSource(); - } - config::config["sourceSettings"][sourceName]["sampleRate"] = sampleRate; - config::configModified = true; - } - - ImGui::SameLine(); - bool noDevice = (soapy.devList.size() == 0); - if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { - soapy.refresh(); - if (noDevice && soapy.devList.size() > 0) { - sourceName = soapy.devNameList[0]; - soapy.setDevice(soapy.devList[0]); - if (config::config["sourceSettings"][sourceName]) { - loadSourceConfig(sourceName); - } - } - } - - if (playing) { style::endDisabled(); }; - - float maxTextLength = 0; - float txtLen = 0; - char buf[100]; - - // Calculate the spacing - for (int i = 0; i < soapy.gainList.size(); i++) { - sprintf(buf, "%s gain", soapy.gainList[i].c_str()); - txtLen = ImGui::CalcTextSize(buf).x; - if (txtLen > maxTextLength) { - maxTextLength = txtLen; - } - } - - for (int i = 0; i < soapy.gainList.size(); i++) { - ImGui::Text("%s gain", soapy.gainList[i].c_str()); - ImGui::SameLine(); - sprintf(buf, "##_gain_slide_%d_", i); - - ImGui::SetCursorPosX(maxTextLength + 5); - ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); - if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { - soapy.setGain(i, uiGains[i]); - if (!config::config["sourceSettings"].contains(sourceName)) { - saveCurrentSource(); - } - config::config["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; - config::configModified = true; - } - ImGui::PopItemWidth(); - } - - ImGui::Spacing(); - } + gui::menu.draw(); for (int i = 0; i < modCount; i++) { if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { @@ -673,12 +697,13 @@ void drawWindow() { stream->sampleRateId = 0; // Create config if it doesn't exist - if (!config::config["audio"].contains(name)) { + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(name)) { saveAudioConfig(name); } - config::config["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; - config::config["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; - config::configModified = true; + core::configManager.conf["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; + core::configManager.conf["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; + core::configManager.release(true); } if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { audio::stopStream(name); @@ -688,21 +713,23 @@ void drawWindow() { } // Create config if it doesn't exist - if (!config::config["audio"].contains(name)) { + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(name)) { saveAudioConfig(name); } - config::config["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; - config::configModified = true; + core::configManager.conf["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + core::configManager.release(true); } if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { stream->audio->setVolume(stream->volume); // Create config if it doesn't exist - if (!config::config["audio"].contains(name)) { + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(name)) { saveAudioConfig(name); } - config::config["audio"][name]["volume"] = stream->volume; - config::configModified = true; + core::configManager.conf["audio"][name]["volume"] = stream->volume; + core::configManager.release(true); } ImGui::PopItemWidth(); count++; @@ -718,13 +745,15 @@ void drawWindow() { if (ImGui::CollapsingHeader("Band Plan", ImGuiTreeNodeFlags_DefaultOpen)) { ImGui::PushItemWidth(menuColumnWidth); if (ImGui::Combo("##_4_", &bandplanId.val, bandplan::bandplanNameTxt.c_str())) { - config::config["bandPlan"] = bandplan::bandplanNames[bandplanId.val]; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["bandPlan"] = bandplan::bandplanNames[bandplanId.val]; + core::configManager.release(true); } ImGui::PopItemWidth(); if (ImGui::Checkbox("Enabled", &bandPlanEnabled.val)) { - config::config["bandPlanEnabled"] = bandPlanEnabled.val; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["bandPlanEnabled"] = bandPlanEnabled.val; + core::configManager.release(true); } bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; ImGui::Text("Country: %s (%s)", plan.countryName.c_str(), plan.countryCode.c_str()); @@ -784,8 +813,9 @@ void drawWindow() { ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); if (ImGui::VSliderFloat("##_8_", ImVec2(20.0f, 150.0f), &fftMax, 0.0f, -100.0f, "")) { fftMax = std::max(fftMax, fftMin + 10); - config::config["max"] = fftMax; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["max"] = fftMax; + core::configManager.release(true); } ImGui::NewLine(); @@ -795,8 +825,9 @@ void drawWindow() { ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); if (ImGui::VSliderFloat("##_9_", ImVec2(20.0f, 150.0f), &fftMin, 0.0f, -100.0f, "")) { fftMin = std::min(fftMax - 10, fftMin); - config::config["min"] = fftMin; - config::configModified = true; + core::configManager.aquire(); + core::configManager.conf["min"] = fftMin; + core::configManager.release(true); } ImGui::EndChild(); diff --git a/core/src/gui/main_window.h b/core/src/gui/main_window.h index 265717fb..0234b6a1 100644 --- a/core/src/gui/main_window.h +++ b/core/src/gui/main_window.h @@ -27,6 +27,7 @@ #include #include #include +#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground diff --git a/core/src/gui/menu.cpp b/core/src/gui/menu.cpp index b967698b..278f1f5c 100644 --- a/core/src/gui/menu.cpp +++ b/core/src/gui/menu.cpp @@ -9,6 +9,9 @@ void Menu::registerEntry(std::string name, void (*drawHandler)(void* ctx), void* item.drawHandler = drawHandler; item.ctx = ctx; items[name] = item; + if (!isInOrderList(name)) { + order.push_back(name); + } } void Menu::removeEntry(std::string name) { @@ -18,7 +21,21 @@ void Menu::removeEntry(std::string name) { void Menu::draw() { MenuItem_t item; for (std::string name : order) { + if (items.find(name) == items.end()) { + continue; + } item = items[name]; - item.drawHandler(item.ctx); + if (ImGui::CollapsingHeader(name.c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { + item.drawHandler(item.ctx); + } } } + +bool Menu::isInOrderList(std::string name) { + for (std::string _name : order) { + if (_name == name) { + return true; + } + } + return false; +} diff --git a/core/src/gui/menu.h b/core/src/gui/menu.h index e7f21f5d..1b3c8be4 100644 --- a/core/src/gui/menu.h +++ b/core/src/gui/menu.h @@ -1,4 +1,5 @@ #pragma once +#include #include #include #include @@ -19,5 +20,7 @@ public: std::vector order; private: + bool isInOrderList(std::string name); + std::map items; }; \ No newline at end of file diff --git a/core/src/gui/style.cpp b/core/src/gui/style.cpp index e55df3d7..ea9a6a8d 100644 --- a/core/src/gui/style.cpp +++ b/core/src/gui/style.cpp @@ -9,7 +9,7 @@ namespace style { ImGui::GetStyle().PopupRounding = 0.0f; ImGui::GetStyle().ScrollbarRounding = 0.0f; - ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 16.0f); + ImGui::GetIO().Fonts->AddFontFromFileTTF(((std::string)(ROOT_DIR "/res/fonts/Roboto-Medium.ttf")).c_str(), 16.0f); ImGui::StyleColorsDark(); //ImGui::StyleColorsLight(); @@ -27,7 +27,7 @@ namespace style { ImGui::GetStyle().PopupRounding = 0.0f; ImGui::GetStyle().ScrollbarRounding = 0.0f; - ImGui::GetIO().Fonts->AddFontFromFileTTF((config::getRootDirectory() + "/res/fonts/Roboto-Medium.ttf").c_str(), 16.0f); + ImGui::GetIO().Fonts->AddFontFromFileTTF(((std::string)(ROOT_DIR "/res/fonts/Roboto-Medium.ttf")).c_str(), 16.0f); ImGui::StyleColorsDark(); diff --git a/radio/src/main.cpp b/radio/src/main.cpp index c007df3d..39e98611 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -2,12 +2,16 @@ #include #include #include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) #define DEEMP_LIST "50µS\00075µS\000none\000" mod::API_t* API; +ConfigManager config; +bool firstInit = true; + struct RadioContext_t { std::string name; int demod = 1; @@ -21,12 +25,16 @@ struct RadioContext_t { MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { API = _API; RadioContext_t* ctx = new RadioContext_t; + ctx->name = _name; + + ctx->demod = 1; ctx->bandWidth = 200000; ctx->bandWidthMin = 100000; ctx->bandWidthMax = 200000; ctx->sigPath.init(_name, 200000, 1000); ctx->sigPath.start(); + ctx->sigPath.setDemodulator(SigPath::DEMOD_FM, ctx->bandWidth); ImGui::SetCurrentContext(imctx); return ctx; } diff --git a/root_dev/config.json b/root_dev/config.json index a0d5796f..1960e66f 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -4,6 +4,16 @@ "device": "Speakers (Realtek High Definiti", "sampleRate": 48000.0, "volume": 0.602150559425354 + }, + "Radio 1": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.6881720423698425 + }, + "Radio 2": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.0 } }, "bandPlan": "General", @@ -19,7 +29,7 @@ "sourceSettings": { "Generic RTL2832U OEM :: 00000001": { "gains": { - "TUNER": 0.0 + "TUNER": 11.625 }, "sampleRate": 2560000 }, @@ -36,7 +46,7 @@ } }, "windowSize": { - "h": 720, - "w": 1280 + "h": 784, + "w": 1460 } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 6036c3d6..ac435873 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,4 +1,4 @@ { - "Radio": "./radio/Release/radio.dll", - "Recorder": "./recorder/Release/recorder.dll" + "Radio 1": "./radio/Release/radio.dll", + "Recorder 1": "./recorder/Release/recorder.dll" } diff --git a/root_dev/radio_config.json b/root_dev/radio_config.json new file mode 100644 index 00000000..c6ea5a59 --- /dev/null +++ b/root_dev/radio_config.json @@ -0,0 +1,5 @@ +{ + "Radio 1": { + "demodulator":1 + } +} \ No newline at end of file From 2056eae13943485332fd4283d1b8a359cf1483a0 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 24 Sep 2020 19:38:05 +0200 Subject: [PATCH 044/127] More fixes 2 --- core/src/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/config.h b/core/src/config.h index 14feeb8b..d9f7da19 100644 --- a/core/src/config.h +++ b/core/src/config.h @@ -11,7 +11,7 @@ using nlohmann::json; -//#define DEV_BUILD +#define DEV_BUILD #ifndef ROOT_DIR #ifdef DEV_BUILD From 5fedda08d7c873a3c41d5aad8a792de8d38fb68f Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 24 Sep 2020 19:50:22 +0200 Subject: [PATCH 045/127] More fixes 3 --- core/src/config.cpp | 4 ++-- core/src/config.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/config.cpp b/core/src/config.cpp index ae03cac1..39ad79f1 100644 --- a/core/src/config.cpp +++ b/core/src/config.cpp @@ -8,7 +8,7 @@ void ConfigManager::setPath(std::string file) { path = file; } -void ConfigManager::load(json default, bool lock) { +void ConfigManager::load(json def, bool lock) { if (lock) { mtx.lock(); } if (path == "") { spdlog::error("Config manager tried to load file with no path specified"); @@ -16,7 +16,7 @@ void ConfigManager::load(json default, bool lock) { } if (!std::filesystem::exists(path)) { spdlog::warn("Config file '{0}' does not exist, creating it", path); - conf = default; + conf = def; save(false); } if (!std::filesystem::is_regular_file(path)) { diff --git a/core/src/config.h b/core/src/config.h index d9f7da19..6a327d8e 100644 --- a/core/src/config.h +++ b/core/src/config.h @@ -27,7 +27,7 @@ class ConfigManager { public: ConfigManager(); void setPath(std::string file); - void load(json default, bool lock = true); + void load(json def, bool lock = true); void save(bool lock = true); void enableAutoSave(); void disableAutoSave(); From 2c4d7cbf09dbbb3b7aada781097da03f80fb0e9f Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 25 Sep 2020 14:25:36 +0200 Subject: [PATCH 046/127] Moved menus to their own respective files --- core/CMakeLists.txt | 4 +- core/src/gui/dialogs/credits.cpp | 57 +++++++ core/src/gui/dialogs/credits.h | 6 + core/src/gui/main_window.cpp | 246 ++----------------------------- core/src/gui/main_window.h | 4 + core/src/gui/menus/audio.cpp | 139 +++++++++++++++++ core/src/gui/menus/audio.h | 6 + core/src/gui/menus/bandplan.cpp | 52 +++++++ core/src/gui/menus/bandplan.h | 6 + core/src/gui/menus/display.cpp | 23 +++ core/src/gui/menus/display.h | 6 + core/src/gui/menus/source.cpp | 11 ++ core/src/gui/menus/source.h | 6 + core/src/gui/waterfall.cpp | 10 +- core/src/gui/waterfall.h | 4 + root_dev/config.json | 4 +- 16 files changed, 346 insertions(+), 238 deletions(-) create mode 100644 core/src/gui/dialogs/credits.cpp create mode 100644 core/src/gui/dialogs/credits.h create mode 100644 core/src/gui/menus/audio.cpp create mode 100644 core/src/gui/menus/audio.h create mode 100644 core/src/gui/menus/bandplan.cpp create mode 100644 core/src/gui/menus/bandplan.h create mode 100644 core/src/gui/menus/display.cpp create mode 100644 core/src/gui/menus/display.h create mode 100644 core/src/gui/menus/source.cpp create mode 100644 core/src/gui/menus/source.h diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index ec11924e..7416afbc 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -13,11 +13,13 @@ add_definitions(-DSDRPP_IS_CORE) # Main code file(GLOB SRC "src/*.cpp") file(GLOB GUI "src/gui/*.cpp") +file(GLOB MENUS "src/gui/menus/*.cpp") +file(GLOB DIALOGS "src/gui/dialogs/*.cpp") file(GLOB SIGPATH "src/signal_path/*.cpp") file(GLOB IMGUI "src/imgui/*.cpp") # Add code to dyn lib -add_library(sdrpp_core SHARED ${SRC} ${GUI} ${SIGPATH} ${IMGUI}) +add_library(sdrpp_core SHARED ${SRC} ${GUI} ${MENUS} ${DIALOGS} ${SIGPATH} ${IMGUI}) set_target_properties(sdrpp_core PROPERTIES PREFIX "") # Include core headers diff --git a/core/src/gui/dialogs/credits.cpp b/core/src/gui/dialogs/credits.cpp new file mode 100644 index 00000000..5abd1e8c --- /dev/null +++ b/core/src/gui/dialogs/credits.cpp @@ -0,0 +1,57 @@ +#include +#include +#include + +namespace credits { + ImFont* bigFont; + + void init() { + // TODO: Have a font manager instead + bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF(((std::string)(ROOT_DIR "/res/fonts/Roboto-Medium.ttf")).c_str(), 128.0f); + } + + void show() { + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 20.0f)); + ImGui::OpenPopup("Credits"); + ImGui::BeginPopupModal("Credits", NULL, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove); + + ImGui::PushFont(bigFont); + ImGui::Text("SDR++ "); + ImGui::PopFont(); + ImGui::SameLine(); + ImGui::Image(icons::LOGO, ImVec2(128, 128)); + ImGui::Spacing(); + ImGui::Spacing(); + ImGui::Spacing(); + + ImGui::Text("This software is brought to you by\n\n"); + + ImGui::Columns(3, "CreditColumns", true); + + // Contributors + ImGui::Text("Contributors"); + ImGui::BulletText("Ryzerth (Creator)"); + ImGui::BulletText("aosync"); + ImGui::BulletText("Benjamin Kyd"); + ImGui::BulletText("Tobias Mädel"); + ImGui::BulletText("Raov"); + ImGui::BulletText("Howard0su"); + + // Libraries + ImGui::NextColumn(); + ImGui::Text("Libraries"); + ImGui::BulletText("SoapySDR (PothosWare)"); + ImGui::BulletText("Dear ImGui (ocornut)"); + ImGui::BulletText("spdlog (gabime)"); + ImGui::BulletText("json (nlohmann)"); + ImGui::BulletText("portaudio (PA Comm.)"); + + // Patrons + ImGui::NextColumn(); + ImGui::Text("Patrons"); + ImGui::BulletText("SignalsEverywhere"); + + ImGui::EndPopup(); + ImGui::PopStyleVar(1); + } +} \ No newline at end of file diff --git a/core/src/gui/dialogs/credits.h b/core/src/gui/dialogs/credits.h new file mode 100644 index 00000000..18045e69 --- /dev/null +++ b/core/src/gui/dialogs/credits.h @@ -0,0 +1,6 @@ +#pragma once + +namespace credits { + void init(); + void show(); +} \ No newline at end of file diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 4dd8437c..11e7cb95 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -8,7 +8,6 @@ fftwf_plan p; float* tempData; float* uiGains; char buf[1024]; -ImFont* bigFont; int fftSize = 8192 * 8; @@ -37,7 +36,6 @@ void fftHandler(dsp::complex_t* samples) { dsp::NullSink sink; int devId = 0; int srId = 0; -watcher bandplanId(0, true); watcher freq((uint64_t)90500000); int demod = 1; watcher vfoFreq(92000000.0f); @@ -50,14 +48,12 @@ watcher bw(8000000.0f, true); int sampleRate = 8000000; bool playing = false; watcher dcbias(false, false); -watcher bandPlanEnabled(true, false); bool showCredits = false; std::string audioStreamName = ""; std::string sourceName = ""; int menuWidth = 300; bool grabbingMenu = false; int newWidth = 300; -bool showWaterfall = true; int fftHeight = 300; bool showMenu = true; @@ -109,48 +105,6 @@ void loadSourceConfig(std::string name) { bw.val = sampleRate; } -void loadAudioConfig(std::string name) { - json audioSettings = core::configManager.conf["audio"][name]; - std::string devName = audioSettings["device"]; - auto _devIt = std::find(audio::streams[name]->audio->deviceNames.begin(), audio::streams[name]->audio->deviceNames.end(), devName); - - // If audio device doesn't exist anymore - if (_devIt == audio::streams[name]->audio->deviceNames.end()) { - audio::streams[name]->audio->setToDefault(); - int deviceId = audio::streams[name]->audio->getDeviceId(); - audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[0]); - audio::streams[name]->sampleRateId = 0; - audio::streams[name]->volume = audioSettings["volume"]; - audio::streams[name]->audio->setVolume(audio::streams[name]->volume); - return; - } - int deviceId = std::distance(audio::streams[name]->audio->deviceNames.begin(), _devIt); - float sr = audioSettings["sampleRate"]; - auto _srIt = std::find(audio::streams[name]->audio->devices[deviceId].sampleRates.begin(), audio::streams[name]->audio->devices[deviceId].sampleRates.end(), sr); - - // If sample rate doesn't exist anymore - if (_srIt == audio::streams[name]->audio->devices[deviceId].sampleRates.end()) { - audio::streams[name]->sampleRateId = 0; - audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[0]); - audio::streams[name]->volume = audioSettings["volume"]; - audio::streams[name]->audio->setVolume(audio::streams[name]->volume); - return; - } - - int samplerateId = std::distance(audio::streams[name]->audio->devices[deviceId].sampleRates.begin(), _srIt); - audio::streams[name]->sampleRateId = samplerateId; - audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[samplerateId]); - audio::streams[name]->deviceId = deviceId; - audio::streams[name]->volume = audioSettings["volume"]; - audio::streams[name]->audio->setVolume(audio::streams[name]->volume); -} - -void saveAudioConfig(std::string name) { - core::configManager.conf["audio"][name]["device"] = audio::streams[name]->audio->deviceNames[audio::streams[name]->deviceId]; - core::configManager.conf["audio"][name]["volume"] = audio::streams[name]->volume; - core::configManager.conf["audio"][name]["sampleRate"] = audio::streams[name]->sampleRate; -} - void setVFO(float freq); // ======================================================= @@ -264,7 +218,16 @@ void windowInit() { spdlog::info("Initializing SoapySDR"); soapy.init(); + credits::init(); + + audiomenu::init(); + bandplanmenu::init(); + displaymenu::init(); + gui::menu.registerEntry("Source", sourceMenu, NULL); + gui::menu.registerEntry("Audio", audiomenu::draw, NULL); + gui::menu.registerEntry("Band Plan", bandplanmenu::draw, NULL); + gui::menu.registerEntry("Display", displaymenu::draw, NULL); gui::freqSelect.init(); @@ -281,8 +244,6 @@ void windowInit() { mod::initAPI(&gui::waterfall); mod::loadFromList(ROOT_DIR "/module_list.json"); - bigFont = ImGui::GetIO().Fonts->AddFontFromFileTTF(((std::string)(ROOT_DIR "/res/fonts/Roboto-Medium.ttf")).c_str(), 128.0f); - // Load last source configuration core::configManager.aquire(); uint64_t frequency = core::configManager.conf["frequency"]; @@ -340,26 +301,6 @@ void windowInit() { gui::waterfall.setWaterfallMin(fftMin); gui::waterfall.setFFTMax(fftMax); gui::waterfall.setWaterfallMax(fftMax); - - bandPlanEnabled.val = core::configManager.conf["bandPlanEnabled"]; - bandPlanEnabled.markAsChanged(); - - std::string bandPlanName = core::configManager.conf["bandPlan"]; - auto _bandplanIt = bandplan::bandplans.find(bandPlanName); - if (_bandplanIt != bandplan::bandplans.end()) { - bandplanId.val = std::distance(bandplan::bandplans.begin(), bandplan::bandplans.find(bandPlanName)); - - if (bandPlanEnabled.val) { - gui::waterfall.bandplan = &bandplan::bandplans[bandPlanName]; - } - else { - gui::waterfall.bandplan = NULL; - } - } - else { - bandplanId.val = 0; - } - bandplanId.markAsChanged(); gui::freqSelect.setFrequency(frequency); @@ -373,30 +314,9 @@ void windowInit() { gui::waterfall.centerFreqMoved = false; gui::waterfall.selectFirstVFO(); - for (auto [name, stream] : audio::streams) { - if (core::configManager.conf["audio"].contains(name)) { - bool running = audio::streams[name]->running; - audio::stopStream(name); - loadAudioConfig(name); - if (running) { - audio::startStream(name); - } - } - } - - audioStreamName = audio::getNameFromVFO(gui::waterfall.selectedVFO); - if (audioStreamName != "") { - volume = &audio::streams[audioStreamName]->volume; - } - menuWidth = core::configManager.conf["menuWidth"]; newWidth = menuWidth; - showWaterfall = core::configManager.conf["showWaterfall"]; - if (!showWaterfall) { - gui::waterfall.hideWaterfall(); - } - fftHeight = core::configManager.conf["fftHeight"]; gui::waterfall.setFFTHeight(fftHeight); @@ -541,14 +461,6 @@ void drawWindow() { sigpath::signalPath.setDCBiasCorrection(dcbias.val); } - if (bandplanId.changed() && bandPlanEnabled.val) { - gui::waterfall.bandplan = &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; - } - - if (bandPlanEnabled.changed()) { - gui::waterfall.bandplan = bandPlanEnabled.val ? &bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]] : NULL; - } - int _fftHeight = gui::waterfall.getFFTHeight(); if (fftHeight != _fftHeight) { fftHeight = _fftHeight; @@ -599,7 +511,8 @@ void drawWindow() { if (audioStreamName != "") { core::configManager.aquire(); if (!core::configManager.conf["audio"].contains(audioStreamName)) { - saveAudioConfig(audioStreamName); + //saveAudioConfig(audioStreamName); + // TODO: FIX THIS SHIT } audio::streams[audioStreamName]->audio->setVolume(*volume); core::configManager.conf["audio"][audioStreamName]["volume"] = *volume; @@ -674,100 +587,6 @@ void drawWindow() { } } - - if (ImGui::CollapsingHeader("Audio", ImGuiTreeNodeFlags_DefaultOpen)) { - int count = 0; - int maxCount = audio::streams.size(); - for (auto const& [name, stream] : audio::streams) { - int deviceId; - float vol = 1.0f; - deviceId = stream->audio->getDeviceId(); - - ImGui::SetCursorPosX((menuColumnWidth / 2.0f) - (ImGui::CalcTextSize(name.c_str()).x / 2.0f)); - ImGui::Text(name.c_str()); - - ImGui::PushItemWidth(menuColumnWidth); - bool running = stream->running; - if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { - audio::stopStream(name); - audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); - if (running) { - audio::startStream(name); - } - stream->sampleRateId = 0; - - // Create config if it doesn't exist - core::configManager.aquire(); - if (!core::configManager.conf["audio"].contains(name)) { - saveAudioConfig(name); - } - core::configManager.conf["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; - core::configManager.conf["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; - core::configManager.release(true); - } - if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { - audio::stopStream(name); - audio::setSampleRate(name, stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]); - if (running) { - audio::startStream(name); - } - - // Create config if it doesn't exist - core::configManager.aquire(); - if (!core::configManager.conf["audio"].contains(name)) { - saveAudioConfig(name); - } - core::configManager.conf["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; - core::configManager.release(true); - } - if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { - stream->audio->setVolume(stream->volume); - - // Create config if it doesn't exist - core::configManager.aquire(); - if (!core::configManager.conf["audio"].contains(name)) { - saveAudioConfig(name); - } - core::configManager.conf["audio"][name]["volume"] = stream->volume; - core::configManager.release(true); - } - ImGui::PopItemWidth(); - count++; - if (count < maxCount) { - ImGui::Spacing(); - ImGui::Separator(); - } - ImGui::Spacing(); - } - ImGui::Spacing(); - } - - if (ImGui::CollapsingHeader("Band Plan", ImGuiTreeNodeFlags_DefaultOpen)) { - ImGui::PushItemWidth(menuColumnWidth); - if (ImGui::Combo("##_4_", &bandplanId.val, bandplan::bandplanNameTxt.c_str())) { - core::configManager.aquire(); - core::configManager.conf["bandPlan"] = bandplan::bandplanNames[bandplanId.val]; - core::configManager.release(true); - } - ImGui::PopItemWidth(); - if (ImGui::Checkbox("Enabled", &bandPlanEnabled.val)) { - core::configManager.aquire(); - core::configManager.conf["bandPlanEnabled"] = bandPlanEnabled.val; - core::configManager.release(true); - } - bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId.val]]; - ImGui::Text("Country: %s (%s)", plan.countryName.c_str(), plan.countryCode.c_str()); - ImGui::Text("Author: %s", plan.authorName.c_str()); - ImGui::Spacing(); - } - - if (ImGui::CollapsingHeader("Display", ImGuiTreeNodeFlags_DefaultOpen)) { - if (ImGui::Checkbox("Show waterfall", &showWaterfall)) { - showWaterfall ? gui::waterfall.showWaterfall() : gui::waterfall.hideWaterfall(); - } - ImGui::Spacing(); - } - if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); @@ -846,48 +665,7 @@ void drawWindow() { ImGui::End(); if (showCredits) { - ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 20.0f)); - ImGui::OpenPopup("Credits"); - ImGui::BeginPopupModal("Credits", NULL, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove); - - ImGui::PushFont(bigFont); - ImGui::Text("SDR++ "); - ImGui::PopFont(); - ImGui::SameLine(); - ImGui::Image(icons::LOGO, ImVec2(128, 128)); - ImGui::Spacing(); - ImGui::Spacing(); - ImGui::Spacing(); - - ImGui::Text("This software is brought to you by\n\n"); - - ImGui::Columns(3, "CreditColumns", true); - - // Contributors - ImGui::Text("Contributors"); - ImGui::BulletText("Ryzerth (Creator)"); - ImGui::BulletText("aosync"); - ImGui::BulletText("Benjamin Kyd"); - ImGui::BulletText("Tobias Mädel"); - ImGui::BulletText("Raov"); - ImGui::BulletText("Howard0su"); - - // Libraries - ImGui::NextColumn(); - ImGui::Text("Libraries"); - ImGui::BulletText("SoapySDR (PothosWare)"); - ImGui::BulletText("Dear ImGui (ocornut)"); - ImGui::BulletText("spdlog (gabime)"); - ImGui::BulletText("json (nlohmann)"); - ImGui::BulletText("portaudio (PA Comm.)"); - - // Patrons - ImGui::NextColumn(); - ImGui::Text("Patrons"); - ImGui::BulletText("SignalsEverywhere"); - - ImGui::EndPopup(); - ImGui::PopStyleVar(1); + credits::show(); } } diff --git a/core/src/gui/main_window.h b/core/src/gui/main_window.h index 0234b6a1..493125e4 100644 --- a/core/src/gui/main_window.h +++ b/core/src/gui/main_window.h @@ -28,6 +28,10 @@ #include #include #include +#include +#include +#include +#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground diff --git a/core/src/gui/menus/audio.cpp b/core/src/gui/menus/audio.cpp new file mode 100644 index 00000000..e5dd0470 --- /dev/null +++ b/core/src/gui/menus/audio.cpp @@ -0,0 +1,139 @@ +#include +#include +#include +#include +#include + +namespace audiomenu { + // Note: Those are supposed to be the ones from the volume slider + std::string audioStreamName; + float* volume; + + void loadAudioConfig(std::string name) { + json audioSettings = core::configManager.conf["audio"][name]; + std::string devName = audioSettings["device"]; + auto _devIt = std::find(audio::streams[name]->audio->deviceNames.begin(), audio::streams[name]->audio->deviceNames.end(), devName); + + // If audio device doesn't exist anymore + if (_devIt == audio::streams[name]->audio->deviceNames.end()) { + audio::streams[name]->audio->setToDefault(); + int deviceId = audio::streams[name]->audio->getDeviceId(); + audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[0]); + audio::streams[name]->sampleRateId = 0; + audio::streams[name]->volume = audioSettings["volume"]; + audio::streams[name]->audio->setVolume(audio::streams[name]->volume); + return; + } + int deviceId = std::distance(audio::streams[name]->audio->deviceNames.begin(), _devIt); + float sr = audioSettings["sampleRate"]; + auto _srIt = std::find(audio::streams[name]->audio->devices[deviceId].sampleRates.begin(), audio::streams[name]->audio->devices[deviceId].sampleRates.end(), sr); + + // If sample rate doesn't exist anymore + if (_srIt == audio::streams[name]->audio->devices[deviceId].sampleRates.end()) { + audio::streams[name]->sampleRateId = 0; + audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[0]); + audio::streams[name]->volume = audioSettings["volume"]; + audio::streams[name]->audio->setVolume(audio::streams[name]->volume); + return; + } + + int samplerateId = std::distance(audio::streams[name]->audio->devices[deviceId].sampleRates.begin(), _srIt); + audio::streams[name]->sampleRateId = samplerateId; + audio::setAudioDevice(name, deviceId, audio::streams[name]->audio->devices[deviceId].sampleRates[samplerateId]); + audio::streams[name]->deviceId = deviceId; + audio::streams[name]->volume = audioSettings["volume"]; + audio::streams[name]->audio->setVolume(audio::streams[name]->volume); + } + + void saveAudioConfig(std::string name) { + core::configManager.conf["audio"][name]["device"] = audio::streams[name]->audio->deviceNames[audio::streams[name]->deviceId]; + core::configManager.conf["audio"][name]["volume"] = audio::streams[name]->volume; + core::configManager.conf["audio"][name]["sampleRate"] = audio::streams[name]->sampleRate; + } + + void init() { + for (auto [name, stream] : audio::streams) { + if (core::configManager.conf["audio"].contains(name)) { + bool running = audio::streams[name]->running; + audio::stopStream(name); + loadAudioConfig(name); + if (running) { + audio::startStream(name); + } + } + } + + audioStreamName = audio::getNameFromVFO(gui::waterfall.selectedVFO); + if (audioStreamName != "") { + volume = &audio::streams[audioStreamName]->volume; + } + } + + void draw(void* ctx) { + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + int count = 0; + int maxCount = audio::streams.size(); + for (auto const& [name, stream] : audio::streams) { + int deviceId; + float vol = 1.0f; + deviceId = stream->audio->getDeviceId(); + + ImGui::SetCursorPosX((menuColumnWidth / 2.0f) - (ImGui::CalcTextSize(name.c_str()).x / 2.0f)); + ImGui::Text(name.c_str()); + + ImGui::PushItemWidth(menuColumnWidth); + bool running = stream->running; + if (ImGui::Combo(("##_audio_dev_0_"+ name).c_str(), &stream->deviceId, stream->audio->devTxtList.c_str())) { + audio::stopStream(name); + audio::setAudioDevice(name, stream->deviceId, stream->audio->devices[deviceId].sampleRates[0]); + if (running) { + audio::startStream(name); + } + stream->sampleRateId = 0; + + // Create config if it doesn't exist + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(name)) { + saveAudioConfig(name); + } + core::configManager.conf["audio"][name]["device"] = stream->audio->deviceNames[stream->deviceId]; + core::configManager.conf["audio"][name]["sampleRate"] = stream->audio->devices[stream->deviceId].sampleRates[0]; + core::configManager.release(true); + } + if (ImGui::Combo(("##_audio_sr_0_" + name).c_str(), &stream->sampleRateId, stream->audio->devices[deviceId].txtSampleRates.c_str())) { + audio::stopStream(name); + audio::setSampleRate(name, stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]); + if (running) { + audio::startStream(name); + } + + // Create config if it doesn't exist + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(name)) { + saveAudioConfig(name); + } + core::configManager.conf["audio"][name]["sampleRate"] = stream->audio->devices[deviceId].sampleRates[stream->sampleRateId]; + core::configManager.release(true); + } + if (ImGui::SliderFloat(("##_audio_vol_0_" + name).c_str(), &stream->volume, 0.0f, 1.0f, "")) { + stream->audio->setVolume(stream->volume); + + // Create config if it doesn't exist + core::configManager.aquire(); + if (!core::configManager.conf["audio"].contains(name)) { + saveAudioConfig(name); + } + core::configManager.conf["audio"][name]["volume"] = stream->volume; + core::configManager.release(true); + } + ImGui::PopItemWidth(); + count++; + if (count < maxCount) { + ImGui::Spacing(); + ImGui::Separator(); + } + ImGui::Spacing(); + } + ImGui::Spacing(); + } +}; \ No newline at end of file diff --git a/core/src/gui/menus/audio.h b/core/src/gui/menus/audio.h new file mode 100644 index 00000000..bc66241e --- /dev/null +++ b/core/src/gui/menus/audio.h @@ -0,0 +1,6 @@ +#pragma once + +namespace audiomenu { + void init(); + void draw(void* ctx); +}; \ No newline at end of file diff --git a/core/src/gui/menus/bandplan.cpp b/core/src/gui/menus/bandplan.cpp new file mode 100644 index 00000000..78f7a16f --- /dev/null +++ b/core/src/gui/menus/bandplan.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +namespace bandplanmenu { + int bandplanId; + bool bandPlanEnabled; + + void init() { + // todo: check if the bandplan wasn't removed + if (bandplan::bandplanNames.size() == 0) { + gui::waterfall.hideBandplan(); + return; + } + + if (bandplan::bandplans.find(core::configManager.conf["bandPlan"]) != bandplan::bandplans.end()) { + std::string name = core::configManager.conf["bandPlan"]; + bandplanId = std::distance(bandplan::bandplanNames.begin(), std::find(bandplan::bandplanNames.begin(), + bandplan::bandplanNames.end(), name)); + gui::waterfall.bandplan = &bandplan::bandplans[name]; + } + else { + gui::waterfall.bandplan = &bandplan::bandplans[bandplan::bandplanNames[0]]; + } + + bandPlanEnabled = core::configManager.conf["bandPlanEnabled"]; + bandPlanEnabled ? gui::waterfall.showBandplan() : gui::waterfall.hideBandplan(); + } + + void draw(void* ctx) { + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + ImGui::PushItemWidth(menuColumnWidth); + if (ImGui::Combo("##_4_", &bandplanId, bandplan::bandplanNameTxt.c_str())) { + gui::waterfall.bandplan = &bandplan::bandplans[bandplan::bandplanNames[bandplanId]]; + core::configManager.aquire(); + core::configManager.conf["bandPlan"] = bandplan::bandplanNames[bandplanId]; + core::configManager.release(true); + } + ImGui::PopItemWidth(); + if (ImGui::Checkbox("Enabled", &bandPlanEnabled)) { + bandPlanEnabled ? gui::waterfall.showBandplan() : gui::waterfall.hideBandplan(); + core::configManager.aquire(); + core::configManager.conf["bandPlanEnabled"] = bandPlanEnabled; + core::configManager.release(true); + } + bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId]]; + ImGui::Text("Country: %s (%s)", plan.countryName.c_str(), plan.countryCode.c_str()); + ImGui::Text("Author: %s", plan.authorName.c_str()); + ImGui::Spacing(); + } +}; \ No newline at end of file diff --git a/core/src/gui/menus/bandplan.h b/core/src/gui/menus/bandplan.h new file mode 100644 index 00000000..7bfb3e11 --- /dev/null +++ b/core/src/gui/menus/bandplan.h @@ -0,0 +1,6 @@ +#pragma once + +namespace bandplanmenu { + void init(); + void draw(void* ctx); +}; \ No newline at end of file diff --git a/core/src/gui/menus/display.cpp b/core/src/gui/menus/display.cpp new file mode 100644 index 00000000..76093a56 --- /dev/null +++ b/core/src/gui/menus/display.cpp @@ -0,0 +1,23 @@ +#include +#include +#include +#include + +namespace displaymenu { + bool showWaterfall; + + void init() { + showWaterfall = core::configManager.conf["showWaterfall"]; + showWaterfall ? gui::waterfall.showWaterfall() : gui::waterfall.hideWaterfall(); + } + + void draw(void* ctx) { + if (ImGui::Checkbox("Show Waterfall", &showWaterfall)) { + showWaterfall ? gui::waterfall.showWaterfall() : gui::waterfall.hideWaterfall(); + core::configManager.aquire(); + core::configManager.conf["showWaterfall"] = showWaterfall; + core::configManager.release(true); + } + ImGui::Spacing(); + } +} \ No newline at end of file diff --git a/core/src/gui/menus/display.h b/core/src/gui/menus/display.h new file mode 100644 index 00000000..f0a97d18 --- /dev/null +++ b/core/src/gui/menus/display.h @@ -0,0 +1,6 @@ +#pragma once + +namespace displaymenu { + void init(); + void draw(void* ctx); +} \ No newline at end of file diff --git a/core/src/gui/menus/source.cpp b/core/src/gui/menus/source.cpp new file mode 100644 index 00000000..a6eec258 --- /dev/null +++ b/core/src/gui/menus/source.cpp @@ -0,0 +1,11 @@ +#include + +namespace sourecmenu { + void init() { + + } + + void draw(void* ctx) { + + } +} \ No newline at end of file diff --git a/core/src/gui/menus/source.h b/core/src/gui/menus/source.h new file mode 100644 index 00000000..ac9c7362 --- /dev/null +++ b/core/src/gui/menus/source.h @@ -0,0 +1,6 @@ +#pragma once + +namespace sourecmenu { + void init(); + void draw(void* ctx); +} \ No newline at end of file diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index ab2af77e..18cc1ea9 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -441,7 +441,7 @@ namespace ImGui { drawWaterfall(); } drawVFOs(); - if (bandplan != NULL) { + if (bandplan != NULL && bandplanVisible) { drawBandPlan(); } @@ -780,5 +780,13 @@ namespace ImGui { int WaterFall::getFFTHeight() { return FFTAreaHeight; } + + void WaterFall::showBandplan() { + bandplanVisible = true; + } + + void WaterFall::hideBandplan() { + bandplanVisible = false; + } }; diff --git a/core/src/gui/waterfall.h b/core/src/gui/waterfall.h index 1ce08a3d..3bcf8308 100644 --- a/core/src/gui/waterfall.h +++ b/core/src/gui/waterfall.h @@ -91,6 +91,9 @@ namespace ImGui { void showWaterfall(); void hideWaterfall(); + void showBandplan(); + void hideBandplan(); + void setFFTHeight(int height); int getFFTHeight(); @@ -187,5 +190,6 @@ namespace ImGui { int newFFTAreaHeight; bool waterfallVisible = true; + bool bandplanVisible = false; }; }; \ No newline at end of file diff --git a/root_dev/config.json b/root_dev/config.json index 1960e66f..3d8e90f8 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -8,7 +8,7 @@ "Radio 1": { "device": "Speakers (Realtek High Definiti", "sampleRate": 48000.0, - "volume": 0.6881720423698425 + "volume": 0.4185185134410858 }, "Radio 2": { "device": "Speakers (Realtek High Definiti", @@ -25,7 +25,7 @@ "menuWidth": 300, "min": -51.47058868408203, "showWaterfall": true, - "source": "HackRF One #0 901868dc282c8f8b", + "source": "Generic RTL2832U OEM :: 00000001", "sourceSettings": { "Generic RTL2832U OEM :: 00000001": { "gains": { From 524f20bc2f992609e046571e044cf545e2d4bb6a Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 1 Oct 2020 01:21:15 +0200 Subject: [PATCH 047/127] Save before changes --- CMakeLists.txt | 3 +- core/src/dsp/correction.h | 7 + core/src/gui/main_window.cpp | 248 +++------------------------ core/src/gui/main_window.h | 2 + core/src/gui/menus/source.cpp | 24 ++- core/src/io/soapy.h | 1 + core/src/module.h | 57 ++---- core/src/signal_path/dsp.cpp | 9 +- core/src/signal_path/dsp.h | 1 + core/src/signal_path/signal_path.cpp | 1 + core/src/signal_path/signal_path.h | 3 + core/src/signal_path/source.cpp | 58 +++++++ core/src/signal_path/source.h | 37 ++++ demo/src/main.cpp | 61 ++++--- radio/src/main.cpp | 225 ++++++++++++------------ radio/src/path.cpp | 24 +-- 16 files changed, 348 insertions(+), 413 deletions(-) create mode 100644 core/src/signal_path/source.cpp create mode 100644 core/src/signal_path/source.h diff --git a/CMakeLists.txt b/CMakeLists.txt index a9c6c4bf..acc0882f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,8 @@ project(sdrpp_core) add_subdirectory("core") add_subdirectory("radio") -add_subdirectory("recorder") +# Add back recorder when module new system is ready +#add_subdirectory("recorder") add_subdirectory("demo") add_executable(sdrpp "src/main.cpp" "win32/resources.rc") diff --git a/core/src/dsp/correction.h b/core/src/dsp/correction.h index 1db9ea1a..af39f77c 100644 --- a/core/src/dsp/correction.h +++ b/core/src/dsp/correction.h @@ -52,6 +52,13 @@ namespace dsp { output.setMaxLatency(blockSize * 2); } + void setInput(stream* input) { + if (running) { + return; + } + _in = input; + } + stream output; bool bypass; diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 11e7cb95..cb9b0b1b 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -6,12 +6,10 @@ std::mutex fft_mtx; fftwf_complex *fft_in, *fft_out; fftwf_plan p; float* tempData; -float* uiGains; char buf[1024]; int fftSize = 8192 * 8; -io::SoapyWrapper soapy; std::vector _data; std::vector fftTaps; void fftHandler(dsp::complex_t* samples) { @@ -34,10 +32,7 @@ void fftHandler(dsp::complex_t* samples) { } dsp::NullSink sink; -int devId = 0; -int srId = 0; watcher freq((uint64_t)90500000); -int demod = 1; watcher vfoFreq(92000000.0f); float dummyVolume = 1.0f; float* volume = &dummyVolume; @@ -45,7 +40,6 @@ float fftMin = -70.0f; float fftMax = 0.0f; watcher offset(0.0f, true); watcher bw(8000000.0f, true); -int sampleRate = 8000000; bool playing = false; watcher dcbias(false, false); bool showCredits = false; @@ -56,175 +50,14 @@ bool grabbingMenu = false; int newWidth = 300; int fftHeight = 300; bool showMenu = true; - -void saveCurrentSource() { - int i = 0; - for (std::string gainName : soapy.gainList) { - core::configManager.conf["sourceSettings"][sourceName]["gains"][gainName] = uiGains[i]; - i++; - } - core::configManager.conf["sourceSettings"][sourceName]["sampleRate"] = soapy.sampleRates[srId]; -} - -void loadSourceConfig(std::string name) { - json sourceSettings = core::configManager.conf["sourceSettings"][name]; - - sampleRate = sourceSettings["sampleRate"]; - - auto _srIt = std::find(soapy.sampleRates.begin(), soapy.sampleRates.end(), sampleRate); - // If the sample rate isn't valid, set to minimum - if (_srIt == soapy.sampleRates.end()) { - srId = 0; - sampleRate = soapy.sampleRates[0]; - } - else { - srId = std::distance(soapy.sampleRates.begin(), _srIt); - } - sigpath::signalPath.setSampleRate(sampleRate); - soapy.setSampleRate(sampleRate); - - // Set gains - delete[] uiGains; - uiGains = new float[soapy.gainList.size()]; - int i = 0; - for (std::string gainName : soapy.gainList) { - // If gain doesn't exist in config, set it to the minimum value - if (!sourceSettings["gains"].contains(gainName)) { - uiGains[i] = soapy.gainRanges[i].minimum(); - soapy.setGain(i, uiGains[i]); - continue; - } - uiGains[i] = sourceSettings["gains"][gainName]; - soapy.setGain(i, uiGains[i]); - i++; - } - - // Update GUI - gui::waterfall.setBandwidth(sampleRate); - gui::waterfall.setViewBandwidth(sampleRate); - bw.val = sampleRate; -} - -void setVFO(float freq); - -// ======================================================= - -void sourceMenu(void* ctx) { - float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - if (playing) { style::beginDisabled(); }; - - ImGui::PushItemWidth(menuColumnWidth); - if (ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str())) { - spdlog::info("Changed input device: {0}", devId); - sourceName = soapy.devNameList[devId]; - soapy.setDevice(soapy.devList[devId]); - - core::configManager.aquire(); - if (core::configManager.conf["sourceSettings"].contains(sourceName)) { - loadSourceConfig(sourceName); - } - else { - srId = 0; - sampleRate = soapy.getSampleRate(); - bw.val = sampleRate; - gui::waterfall.setBandwidth(sampleRate); - gui::waterfall.setViewBandwidth(sampleRate); - sigpath::signalPath.setSampleRate(sampleRate); - - if (soapy.gainList.size() >= 0) { - delete[] uiGains; - uiGains = new float[soapy.gainList.size()]; - for (int i = 0; i < soapy.gainList.size(); i++) { - uiGains[i] = soapy.currentGains[i]; - } - } - } - setVFO(gui::freqSelect.frequency); - core::configManager.conf["source"] = sourceName; - core::configManager.release(true); - } - ImGui::PopItemWidth(); - - if (ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str())) { - spdlog::info("Changed sample rate: {0}", srId); - sampleRate = soapy.sampleRates[srId]; - soapy.setSampleRate(sampleRate); - gui::waterfall.setBandwidth(sampleRate); - gui::waterfall.setViewBandwidth(sampleRate); - sigpath::signalPath.setSampleRate(sampleRate); - bw.val = sampleRate; - - core::configManager.aquire(); - if (!core::configManager.conf["sourceSettings"].contains(sourceName)) { - saveCurrentSource(); - } - core::configManager.conf["sourceSettings"][sourceName]["sampleRate"] = sampleRate; - core::configManager.release(true); - } - - ImGui::SameLine(); - bool noDevice = (soapy.devList.size() == 0); - if (ImGui::Button("Refresh", ImVec2(menuColumnWidth - ImGui::GetCursorPosX(), 0.0f))) { - soapy.refresh(); - if (noDevice && soapy.devList.size() > 0) { - sourceName = soapy.devNameList[0]; - soapy.setDevice(soapy.devList[0]); - if (core::configManager.conf["sourceSettings"][sourceName]) { - loadSourceConfig(sourceName); - } - } - } - - if (playing) { style::endDisabled(); }; - - float maxTextLength = 0; - float txtLen = 0; - char buf[100]; - - // Calculate the spacing - for (int i = 0; i < soapy.gainList.size(); i++) { - sprintf(buf, "%s gain", soapy.gainList[i].c_str()); - txtLen = ImGui::CalcTextSize(buf).x; - if (txtLen > maxTextLength) { - maxTextLength = txtLen; - } - } - - for (int i = 0; i < soapy.gainList.size(); i++) { - ImGui::Text("%s gain", soapy.gainList[i].c_str()); - ImGui::SameLine(); - sprintf(buf, "##_gain_slide_%d_", i); - - ImGui::SetCursorPosX(maxTextLength + 5); - ImGui::PushItemWidth(menuColumnWidth - (maxTextLength + 5)); - if (ImGui::SliderFloat(buf, &uiGains[i], soapy.gainRanges[i].minimum(), soapy.gainRanges[i].maximum())) { - soapy.setGain(i, uiGains[i]); - core::configManager.aquire(); - if (!core::configManager.conf["sourceSettings"].contains(sourceName)) { - saveCurrentSource(); - } - core::configManager.conf["sourceSettings"][sourceName]["gains"][soapy.gainList[i]] = uiGains[i]; - core::configManager.release(true); - } - ImGui::PopItemWidth(); - } - - ImGui::Spacing(); -} - -// ======================================================= +dsp::stream dummyStream; void windowInit() { spdlog::info("Initializing SoapySDR"); - soapy.init(); credits::init(); - audiomenu::init(); - bandplanmenu::init(); - displaymenu::init(); - - gui::menu.registerEntry("Source", sourceMenu, NULL); + gui::menu.registerEntry("Source", sourecmenu::draw, NULL); gui::menu.registerEntry("Audio", audiomenu::draw, NULL); gui::menu.registerEntry("Band Plan", bandplanmenu::draw, NULL); gui::menu.registerEntry("Display", displaymenu::draw, NULL); @@ -235,50 +68,19 @@ void windowInit() { fft_out = (fftwf_complex*) fftwf_malloc(sizeof(fftwf_complex) * fftSize); p = fftwf_plan_dft_1d(fftSize, fft_in, fft_out, FFTW_FORWARD, FFTW_ESTIMATE); - sigpath::signalPath.init(sampleRate, 20, fftSize, &soapy.output, (dsp::complex_t*)fft_in, fftHandler); + sigpath::signalPath.init(8000000, 20, fftSize, &dummyStream, (dsp::complex_t*)fft_in, fftHandler); sigpath::signalPath.start(); - uiGains = new float[soapy.gainList.size()]; - spdlog::info("Loading modules"); mod::initAPI(&gui::waterfall); mod::loadFromList(ROOT_DIR "/module_list.json"); + sourecmenu::init(); + audiomenu::init(); + bandplanmenu::init(); + displaymenu::init(); + // Load last source configuration - core::configManager.aquire(); - uint64_t frequency = core::configManager.conf["frequency"]; - sourceName = core::configManager.conf["source"]; - auto _sourceIt = std::find(soapy.devNameList.begin(), soapy.devNameList.end(), sourceName); - if (_sourceIt != soapy.devNameList.end() && core::configManager.conf["sourceSettings"].contains(sourceName)) { - json sourceSettings = core::configManager.conf["sourceSettings"][sourceName]; - devId = std::distance(soapy.devNameList.begin(), _sourceIt); - soapy.setDevice(soapy.devList[devId]); - loadSourceConfig(sourceName); - } - else { - int i = 0; - bool settingsFound = false; - for (std::string devName : soapy.devNameList) { - if (core::configManager.conf["sourceSettings"].contains(devName)) { - sourceName = devName; - settingsFound = true; - devId = i; - soapy.setDevice(soapy.devList[i]); - loadSourceConfig(sourceName); - break; - } - i++; - } - if (!settingsFound) { - if (soapy.devNameList.size() > 0) { - sourceName = soapy.devNameList[0]; - } - sampleRate = soapy.getSampleRate(); - sigpath::signalPath.setSampleRate(sampleRate); - } - // Search for the first source in the list to have a config - // If no pre-defined source, selected default device - } // Also add a loading screen // Adjustable "snap to grid" for each VFO @@ -301,15 +103,17 @@ void windowInit() { gui::waterfall.setWaterfallMin(fftMin); gui::waterfall.setFFTMax(fftMax); gui::waterfall.setWaterfallMax(fftMax); + + float frequency = core::configManager.conf["frequency"]; gui::freqSelect.setFrequency(frequency); gui::freqSelect.frequencyChanged = false; - soapy.setFrequency(frequency); + sigpath::sourceManager.tune(frequency); gui::waterfall.setCenterFrequency(frequency); - gui::waterfall.setBandwidth(sampleRate); - gui::waterfall.setViewBandwidth(sampleRate); - bw.val = sampleRate; + gui::waterfall.setBandwidth(8000000); + gui::waterfall.setViewBandwidth(8000000); + bw.val = 8000000; gui::waterfall.vfoFreqChanged = false; gui::waterfall.centerFreqMoved = false; gui::waterfall.selectFirstVFO(); @@ -357,7 +161,7 @@ void setVFO(float freq) { float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); - soapy.setFrequency(freq - newVFOOffset); + sigpath::sourceManager.tune(freq - newVFOOffset); return; } @@ -367,7 +171,7 @@ void setVFO(float freq) { float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); - soapy.setFrequency(freq - newVFOOffset); + sigpath::sourceManager.tune(freq - newVFOOffset); return; } @@ -387,7 +191,7 @@ void setVFO(float freq) { float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); - soapy.setFrequency(freq - newVFOOffset); + sigpath::sourceManager.tune(freq - newVFOOffset); } else { float newViewOff = vfoBottom + (viewBW / 2.0f) - (viewBW / 10.0f); @@ -404,7 +208,7 @@ void setVFO(float freq) { float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); - soapy.setFrequency(freq - newVFOOffset); + sigpath::sourceManager.tune(freq - newVFOOffset); } } @@ -450,7 +254,7 @@ void drawWindow() { if (gui::waterfall.centerFreqMoved) { gui::waterfall.centerFreqMoved = false; - soapy.setFrequency(gui::waterfall.getCenterFrequency()); + sigpath::sourceManager.tune(gui::waterfall.getCenterFrequency()); gui::freqSelect.setFrequency(gui::waterfall.getCenterFrequency() + vfo->generalOffset); core::configManager.aquire(); core::configManager.conf["frequency"] = gui::freqSelect.frequency; @@ -491,14 +295,15 @@ void drawWindow() { if (playing) { if (ImGui::ImageButton(icons::STOP, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0)) { - soapy.stop(); + sigpath::sourceManager.stop(); playing = false; } } - else { - if (ImGui::ImageButton(icons::PLAY, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0) && soapy.devList.size() > 0) { - soapy.start(); - soapy.setFrequency(gui::waterfall.getCenterFrequency()); + else { // TODO: Might need to check if there even is a device + if (ImGui::ImageButton(icons::PLAY, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0)) { + sigpath::sourceManager.start(); + // TODO: tune in module instead + sigpath::sourceManager.tune(gui::waterfall.getCenterFrequency()); playing = true; } } @@ -623,7 +428,8 @@ void drawWindow() { ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Zoom").x / 2.0f)); ImGui::Text("Zoom"); ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); - ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw.val, sampleRate, 1000.0f, ""); + // TODO: use global sample rate value from DSP instead of 8000000 + ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw.val, 8000000, 1000.0f, ""); ImGui::NewLine(); diff --git a/core/src/gui/main_window.h b/core/src/gui/main_window.h index 493125e4..03eb370f 100644 --- a/core/src/gui/main_window.h +++ b/core/src/gui/main_window.h @@ -28,10 +28,12 @@ #include #include #include +#include #include #include #include #include +#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground diff --git a/core/src/gui/menus/source.cpp b/core/src/gui/menus/source.cpp index a6eec258..c2f06be9 100644 --- a/core/src/gui/menus/source.cpp +++ b/core/src/gui/menus/source.cpp @@ -1,11 +1,33 @@ #include +#include +#include +#include +#include namespace sourecmenu { - void init() { + int sourceId = 0; + void init() { + // Select default + // TODO: Replace by setting + if (sigpath::sourceManager.sourceNames.size() > 0) { + sigpath::sourceManager.selectSource(sigpath::sourceManager.sourceNames[0]); + } } void draw(void* ctx) { + std::string items = ""; + for (std::string name : sigpath::sourceManager.sourceNames) { + items += name; + items += '\0'; + } + float itemWidth = ImGui::GetContentRegionAvailWidth(); + ImGui::SetNextItemWidth(itemWidth); + if (ImGui::Combo("##source", &sourceId, items.c_str())) { + sigpath::sourceManager.selectSource(sigpath::sourceManager.sourceNames[sourceId]); + } + + sigpath::sourceManager.showSelectedMenu(); } } \ No newline at end of file diff --git a/core/src/io/soapy.h b/core/src/io/soapy.h index bb0c97ca..54151833 100644 --- a/core/src/io/soapy.h +++ b/core/src/io/soapy.h @@ -1,3 +1,4 @@ +#pragma once #include #include #include diff --git a/core/src/module.h b/core/src/module.h index 99faaa9a..159de6a7 100644 --- a/core/src/module.h +++ b/core/src/module.h @@ -29,45 +29,6 @@ #endif namespace mod { - struct API_t { - dsp::stream* (*registerVFO)(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); - void (*setVFOOffset)(std::string name, float offset); - void (*setVFOCenterOffset)(std::string name, float offset); - void (*setVFOBandwidth)(std::string name, float bandwidth); - void (*setVFOSampleRate)(std::string name, float sampleRate, float bandwidth); - int (*getVFOOutputBlockSize)(std::string name); - void (*setVFOReference)(std::string name, int ref); - void (*removeVFO)(std::string name); - - std::string (*getSelectedVFOName)(void); - void (*bindVolumeVariable)(float* vol); - void (*unbindVolumeVariable)(void); - - float (*registerMonoStream)(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); - float (*registerStereoStream)(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); - void (*startStream)(std::string name); - void (*stopStream)(std::string name); - void (*removeStream)(std::string name); - dsp::stream* (*bindToStreamMono)(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); - dsp::stream* (*bindToStreamStereo)(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); - void (*setBlockSize)(std::string name, int blockSize); - void (*unbindFromStreamMono)(std::string name, dsp::stream* stream); - void (*unbindFromStreamStereo)(std::string name, dsp::stream* stream); - std::vector (*getStreamNameList)(void); - - enum { - REF_LOWER, - REF_CENTER, - REF_UPPER, - _REF_COUNT - }; - }; - - enum { - EVENT_STREAM_PARAM_CHANGED, - EVENT_SELECTED_VFO_CHANGED, - _EVENT_COUNT - }; struct Module_t { #ifdef _WIN32 @@ -75,14 +36,20 @@ namespace mod { #else void* inst; #endif - void* (*_INIT_)(API_t*, ImGuiContext*, std::string); - void (*_DRAW_MENU_)(void*); - void (*_NEW_FRAME_)(void*); - void (*_HANDLE_EVENT_)(void*, int); - void (*_STOP_)(void*); + void (*_INIT_)(); + void* (*_CREATE_INSTANCE)(std::string); + void (*_DELETE_INSTANCE)(); + void (*_STOP_)(); void* ctx; }; + struct ModuleInfo_t { + char* name; + char* description; + char* author; + char* version; + }; + void initAPI(ImGui::WaterFall* wtf); void loadModule(std::string path, std::string name); void broadcastEvent(int eventId); @@ -92,4 +59,4 @@ namespace mod { extern std::vector moduleNames; }; -extern mod::API_t* API; \ No newline at end of file +#define MOD_INFO MOD_EXPORT const mod::ModuleInfo_t _INFO \ No newline at end of file diff --git a/core/src/signal_path/dsp.cpp b/core/src/signal_path/dsp.cpp index f2f50333..691893f2 100644 --- a/core/src/signal_path/dsp.cpp +++ b/core/src/signal_path/dsp.cpp @@ -40,7 +40,7 @@ void SignalPath::setSampleRate(float sampleRate) { fftBlockDec.setSkip(skip); dynSplit.setBlockSize(inputBlockSize); - mod::broadcastEvent(mod::EVENT_STREAM_PARAM_CHANGED); + // TODO: Tell modules that the block size has changed for (auto const& [name, vfo] : vfos) { vfo.vfo->setInputSampleRate(sampleRate, inputBlockSize); @@ -87,6 +87,7 @@ dsp::VFO* SignalPath::addVFO(std::string name, float outSampleRate, float bandwi void SignalPath::removeVFO(std::string name) { if (vfos.find(name) == vfos.end()) { return; + } dynSplit.stop(); VFO_t vfo = vfos[name]; @@ -96,4 +97,10 @@ void SignalPath::removeVFO(std::string name) { delete vfo.inputStream; dynSplit.start(); vfos.erase(name); +} + +void SignalPath::setInput(dsp::stream* input) { + dcBiasRemover.stop(); + dcBiasRemover.setInput(input); + dcBiasRemover.start(); } \ No newline at end of file diff --git a/core/src/signal_path/dsp.h b/core/src/signal_path/dsp.h index 929adb18..850f8549 100644 --- a/core/src/signal_path/dsp.h +++ b/core/src/signal_path/dsp.h @@ -22,6 +22,7 @@ public: void setFFTRate(float rate); dsp::VFO* addVFO(std::string name, float outSampleRate, float bandwidth, float offset); void removeVFO(std::string name); + void setInput(dsp::stream* input); private: struct VFO_t { diff --git a/core/src/signal_path/signal_path.cpp b/core/src/signal_path/signal_path.cpp index 13188e15..2ae0939d 100644 --- a/core/src/signal_path/signal_path.cpp +++ b/core/src/signal_path/signal_path.cpp @@ -3,4 +3,5 @@ namespace sigpath { SignalPath signalPath; VFOManager vfoManager; + SourceManager sourceManager; }; \ No newline at end of file diff --git a/core/src/signal_path/signal_path.h b/core/src/signal_path/signal_path.h index c0d10a73..5b3c79bd 100644 --- a/core/src/signal_path/signal_path.h +++ b/core/src/signal_path/signal_path.h @@ -1,9 +1,12 @@ #pragma once #include #include +#include +#include #include namespace sigpath { SDRPP_EXPORT SignalPath signalPath; SDRPP_EXPORT VFOManager vfoManager; + SDRPP_EXPORT SourceManager sourceManager; }; \ No newline at end of file diff --git a/core/src/signal_path/source.cpp b/core/src/signal_path/source.cpp new file mode 100644 index 00000000..e8412b4b --- /dev/null +++ b/core/src/signal_path/source.cpp @@ -0,0 +1,58 @@ +#include +#include +#include + +SourceManager::SourceManager() { + +} + +void SourceManager::registerSource(std::string name, SourceHandler* handler) { + if (sources.find(name) != sources.end()) { + spdlog::error("Tried to register new source with existing name: {0}", name); + return; + } + sources[name] = handler; + sourceNames.push_back(name); +} + +void SourceManager::selectSource(std::string name) { + if (sources.find(name) == sources.end()) { + spdlog::error("Tried to select non existant source: {0}", name); + return; + } + if (selectedName != "") { + sources[selectedName]->deselectHandler(sources[selectedName]->ctx); + } + selectedHandler = sources[name]; + selectedHandler->selectHandler(selectedHandler->ctx); + selectedName = name; + sigpath::signalPath.setInput(selectedHandler->stream); +} + +void SourceManager::showSelectedMenu() { + if (selectedHandler == NULL) { + return; + } + selectedHandler->menuHandler(selectedHandler->ctx); +} + +void SourceManager::start() { + if (selectedHandler == NULL) { + return; + } + selectedHandler->startHandler(selectedHandler->ctx); +} + +void SourceManager::stop() { + if (selectedHandler == NULL) { + return; + } + selectedHandler->stopHandler(selectedHandler->ctx); +} + +void SourceManager::tune(double freq) { + if (selectedHandler == NULL) { + return; + } + selectedHandler->tuneHandler(freq, selectedHandler->ctx); +} \ No newline at end of file diff --git a/core/src/signal_path/source.h b/core/src/signal_path/source.h new file mode 100644 index 00000000..8ad53e15 --- /dev/null +++ b/core/src/signal_path/source.h @@ -0,0 +1,37 @@ +#pragma once +#include +#include +#include +#include +#include + +class SourceManager { +public: + SourceManager(); + + struct SourceHandler { + dsp::stream* stream; + void (*menuHandler)(void* ctx); + void (*selectHandler)(void* ctx); + void (*deselectHandler)(void* ctx); + void (*startHandler)(void* ctx); + void (*stopHandler)(void* ctx); + void (*tuneHandler)(double freq, void* ctx); + void* ctx; + }; + + void registerSource(std::string name, SourceHandler* handler); + void selectSource(std::string name); + void showSelectedMenu(); + void start(); + void stop(); + void tune(double freq); + + std::vector sourceNames; + +private: + std::map sources; + std::string selectedName; + SourceHandler* selectedHandler = NULL; + +}; \ No newline at end of file diff --git a/demo/src/main.cpp b/demo/src/main.cpp index 0201e70d..4ae55798 100644 --- a/demo/src/main.cpp +++ b/demo/src/main.cpp @@ -1,38 +1,51 @@ #include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) - -struct DemoContext_t { - std::string name; +MOD_INFO { + /* Name: */ "demo", + /* Description: */ "Demo module for SDR++", + /* Author: */ "Ryzerth", + /* Version: */ "0.1.0" }; -MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { - DemoContext_t* ctx = new DemoContext_t; - ctx->name = _name; - return ctx; +class DemoModule { +public: + DemoModule(std::string name) { + this->name = name; + gui::menu.registerEntry(name, menuHandler, this); + spdlog::info("DemoModule '{0}': Instance created!", name); + } + + ~DemoModule() { + spdlog::info("DemoModule '{0}': Instance deleted!", name); + } + +private: + static void menuHandler(void* ctx) { + DemoModule* _this = (DemoModule*)ctx; + ImGui::Text("Hi from %s!", _this->name.c_str()); + } + + std::string name; + +}; + +MOD_EXPORT void _INIT_() { + // Do your one time init here } -MOD_EXPORT void _NEW_FRAME_(DemoContext_t* ctx) { - +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + return new DemoModule(name); } -MOD_EXPORT void _DRAW_MENU_(DemoContext_t* ctx) { - ImGui::Text(ctx->name.c_str()); +MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { + delete (DemoModule*)instance; } -MOD_EXPORT void _HANDLE_EVENT_(DemoContext_t* ctx, int eventId) { - -} - -MOD_EXPORT void _STOP_(DemoContext_t* ctx) { - +MOD_EXPORT void _STOP_() { + // Do your one shutdown here } \ No newline at end of file diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 39e98611..54e0a451 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -7,12 +7,115 @@ #define CONCAT(a, b) ((std::string(a) + b).c_str()) #define DEEMP_LIST "50µS\00075µS\000none\000" -mod::API_t* API; +MOD_INFO { + /* Name: */ "radio", + /* Description: */ "Radio module for SDR++", + /* Author: */ "Ryzerth", + /* Version: */ "0.2.5" +}; -ConfigManager config; -bool firstInit = true; +class RadioModule { +public: + RadioModule(std::string name) { + this->name = name; + demod = 1; + bandWidth = 200000; + bandWidthMin = 100000; + bandWidthMax = 200000; + sigPath.init(name, 200000, 1000); + sigPath.start(); + sigPath.setDemodulator(SigPath::DEMOD_FM, bandWidth); + } + + ~RadioModule() { + // TODO: Implement destructor + } + +private: + static void menuHandler(void* ctx) { + RadioModule* _this = (RadioModule*)ctx; + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + + ImGui::BeginGroup(); + + // TODO: Change VFO ref in signal path + + ImGui::Columns(4, CONCAT("RadioModeColumns##_", _this->name), false); + if (ImGui::RadioButton(CONCAT("NFM##_", _this->name), _this->demod == 0) && _this->demod != 0) { + _this->demod = 0; + _this->bandWidth = 16000; + _this->bandWidthMin = 8000; + _this->bandWidthMax = 16000; + _this->sigPath.setDemodulator(SigPath::DEMOD_NFM, _this->bandWidth); + } + if (ImGui::RadioButton(CONCAT("WFM##_", _this->name), _this->demod == 1) && _this->demod != 1) { + _this->demod = 1; + _this->bandWidth = 200000; + _this->bandWidthMin = 100000; + _this->bandWidthMax = 200000; + _this->sigPath.setDemodulator(SigPath::DEMOD_FM, _this->bandWidth); + } + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("AM##_", _this->name), _this->demod == 2) && _this->demod != 2) { + _this->demod = 2; + _this->bandWidth = 12500; + _this->bandWidthMin = 6250; + _this->bandWidthMax = 12500; + _this->sigPath.setDemodulator(SigPath::DEMOD_AM, _this->bandWidth); + } + if (ImGui::RadioButton(CONCAT("DSB##_", _this->name), _this->demod == 3) && _this->demod != 3) { + _this->demod = 3; + _this->bandWidth = 6000; + _this->bandWidthMin = 3000; + _this->bandWidthMax = 6000; + _this->sigPath.setDemodulator(SigPath::DEMOD_DSB, _this->bandWidth); + } + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("USB##_", _this->name), _this->demod == 4) && _this->demod != 4) { + _this->demod = 4; + _this->bandWidth = 3000; + _this->bandWidthMin = 1500; + _this->bandWidthMax = 3000; + _this->sigPath.setDemodulator(SigPath::DEMOD_USB, _this->bandWidth); + } + if (ImGui::RadioButton(CONCAT("CW##_", _this->name), _this->demod == 5) && _this->demod != 5) { _this->demod = 5; }; + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("LSB##_", _this->name), _this->demod == 6) && _this->demod != 6) { + _this->demod = 6; + _this->bandWidth = 3000; + _this->bandWidthMin = 1500; + _this->bandWidthMax = 3000; + _this->sigPath.setDemodulator(SigPath::DEMOD_LSB, _this->bandWidth); + } + if (ImGui::RadioButton(CONCAT("RAW##_", _this->name), _this->demod == 7) && _this->demod != 7) { + _this->demod = 7; + _this->bandWidth = 10000; + _this->bandWidthMin = 3000; + _this->bandWidthMax = 10000; + _this->sigPath.setDemodulator(SigPath::DEMOD_RAW, _this->bandWidth); + }; + ImGui::Columns(1, CONCAT("EndRadioModeColumns##_", _this->name), false); + + ImGui::EndGroup(); + + ImGui::Text("WFM Deemphasis"); + ImGui::SameLine(); + ImGui::PushItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); + if (ImGui::Combo(CONCAT("##_deemp_select_", _this->name), &_this->deemp, DEEMP_LIST)) { + _this->sigPath.setDeemphasis(_this->deemp); + } + ImGui::PopItemWidth(); + + ImGui::Text("Bandwidth"); + ImGui::SameLine(); + ImGui::PushItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); + if (ImGui::InputInt(CONCAT("##_bw_select_", _this->name), &_this->bandWidth, 100, 1000)) { + _this->bandWidth = std::clamp(_this->bandWidth, _this->bandWidthMin, _this->bandWidthMax); + _this->sigPath.setBandwidth(_this->bandWidth); + } + ImGui::PopItemWidth(); + } -struct RadioContext_t { std::string name; int demod = 1; int deemp = 0; @@ -20,117 +123,21 @@ struct RadioContext_t { int bandWidthMin; int bandWidthMax; SigPath sigPath; + }; -MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { - API = _API; - RadioContext_t* ctx = new RadioContext_t; - - ctx->name = _name; - - ctx->demod = 1; - ctx->bandWidth = 200000; - ctx->bandWidthMin = 100000; - ctx->bandWidthMax = 200000; - ctx->sigPath.init(_name, 200000, 1000); - ctx->sigPath.start(); - ctx->sigPath.setDemodulator(SigPath::DEMOD_FM, ctx->bandWidth); - ImGui::SetCurrentContext(imctx); - return ctx; +MOD_EXPORT void _INIT_() { + // Do your one time init here } -MOD_EXPORT void _NEW_FRAME_(RadioContext_t* ctx) { - +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + return new RadioModule(name); } -MOD_EXPORT void _DRAW_MENU_(RadioContext_t* ctx) { - float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - - ImGui::BeginGroup(); - - // TODO: Change VFO ref in signal path - - ImGui::Columns(4, CONCAT("RadioModeColumns##_", ctx->name), false); - if (ImGui::RadioButton(CONCAT("NFM##_", ctx->name), ctx->demod == 0) && ctx->demod != 0) { - ctx->demod = 0; - ctx->bandWidth = 16000; - ctx->bandWidthMin = 8000; - ctx->bandWidthMax = 16000; - ctx->sigPath.setDemodulator(SigPath::DEMOD_NFM, ctx->bandWidth); - } - if (ImGui::RadioButton(CONCAT("WFM##_", ctx->name), ctx->demod == 1) && ctx->demod != 1) { - ctx->demod = 1; - ctx->bandWidth = 200000; - ctx->bandWidthMin = 100000; - ctx->bandWidthMax = 200000; - ctx->sigPath.setDemodulator(SigPath::DEMOD_FM, ctx->bandWidth); - } - ImGui::NextColumn(); - if (ImGui::RadioButton(CONCAT("AM##_", ctx->name), ctx->demod == 2) && ctx->demod != 2) { - ctx->demod = 2; - ctx->bandWidth = 12500; - ctx->bandWidthMin = 6250; - ctx->bandWidthMax = 12500; - ctx->sigPath.setDemodulator(SigPath::DEMOD_AM, ctx->bandWidth); - } - if (ImGui::RadioButton(CONCAT("DSB##_", ctx->name), ctx->demod == 3) && ctx->demod != 3) { - ctx->demod = 3; - ctx->bandWidth = 6000; - ctx->bandWidthMin = 3000; - ctx->bandWidthMax = 6000; - ctx->sigPath.setDemodulator(SigPath::DEMOD_DSB, ctx->bandWidth); - } - ImGui::NextColumn(); - if (ImGui::RadioButton(CONCAT("USB##_", ctx->name), ctx->demod == 4) && ctx->demod != 4) { - ctx->demod = 4; - ctx->bandWidth = 3000; - ctx->bandWidthMin = 1500; - ctx->bandWidthMax = 3000; - ctx->sigPath.setDemodulator(SigPath::DEMOD_USB, ctx->bandWidth); - } - if (ImGui::RadioButton(CONCAT("CW##_", ctx->name), ctx->demod == 5) && ctx->demod != 5) { ctx->demod = 5; }; - ImGui::NextColumn(); - if (ImGui::RadioButton(CONCAT("LSB##_", ctx->name), ctx->demod == 6) && ctx->demod != 6) { - ctx->demod = 6; - ctx->bandWidth = 3000; - ctx->bandWidthMin = 1500; - ctx->bandWidthMax = 3000; - ctx->sigPath.setDemodulator(SigPath::DEMOD_LSB, ctx->bandWidth); - } - if (ImGui::RadioButton(CONCAT("RAW##_", ctx->name), ctx->demod == 7) && ctx->demod != 7) { - ctx->demod = 7; - ctx->bandWidth = 10000; - ctx->bandWidthMin = 3000; - ctx->bandWidthMax = 10000; - ctx->sigPath.setDemodulator(SigPath::DEMOD_RAW, ctx->bandWidth); - }; - ImGui::Columns(1, CONCAT("EndRadioModeColumns##_", ctx->name), false); - - ImGui::EndGroup(); - - ImGui::Text("WFM Deemphasis"); - ImGui::SameLine(); - ImGui::PushItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); - if (ImGui::Combo(CONCAT("##_deemp_select_", ctx->name), &ctx->deemp, DEEMP_LIST)) { - ctx->sigPath.setDeemphasis(ctx->deemp); - } - ImGui::PopItemWidth(); - - ImGui::Text("Bandwidth"); - ImGui::SameLine(); - ImGui::PushItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); - if (ImGui::InputInt(CONCAT("##_bw_select_", ctx->name), &ctx->bandWidth, 100, 1000)) { - ctx->bandWidth = std::clamp(ctx->bandWidth, ctx->bandWidthMin, ctx->bandWidthMax); - ctx->sigPath.setBandwidth(ctx->bandWidth); - } - ImGui::PopItemWidth(); +MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { + delete (RadioModule*)instance; } -MOD_EXPORT void _HANDLE_EVENT_(RadioContext_t* ctx, int eventId) { - -} - -MOD_EXPORT void _STOP_(RadioContext_t* ctx) { - API->removeVFO(ctx->name); - delete ctx; +MOD_EXPORT void _STOP_() { + // Do your one shutdown here } \ No newline at end of file diff --git a/radio/src/path.cpp b/radio/src/path.cpp index f0547757..e2a8c87c 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -1,4 +1,5 @@ #include +#include SigPath::SigPath() { @@ -23,7 +24,7 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { this->blockSize = blockSize; this->vfoName = vfoName; - vfo = sigpath::vfoManager.createVFO(vfoName, mod::API_t::REF_CENTER, 0, 200000, 200000, 1000); + vfo = sigpath::vfoManager.createVFO(vfoName, ImGui::WaterfallVFO::REF_CENTER, 0, 200000, 200000, 1000); _demod = DEMOD_FM; _deemp = DEEMP_50US; @@ -40,8 +41,9 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { audioResamp.init(&demod.output, 200000, 48000, 800); deemp.init(&audioResamp.output, 800, 50e-6, 48000); - outputSampleRate = API->registerMonoStream(&deemp.output, vfoName, vfoName, sampleRateChangeHandler, this); - API->setBlockSize(vfoName, audioResamp.getOutputBlockSize()); + + outputSampleRate = audio::registerMonoStream(&deemp.output, vfoName, vfoName, sampleRateChangeHandler, this); + audio::setBlockSize(vfoName, audioResamp.getOutputBlockSize()); setDemodulator(_demod, bandwidth); } @@ -101,7 +103,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(200000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = (_deemp == DEEMP_NONE); - vfo->setReference(mod::API_t::REF_CENTER); + vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); demod.start(); } else if (demId == DEMOD_NFM) { @@ -113,7 +115,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(16000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; - vfo->setReference(mod::API_t::REF_CENTER); + vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); demod.start(); } else if (demId == DEMOD_AM) { @@ -123,7 +125,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(12500, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; - vfo->setReference(mod::API_t::REF_CENTER); + vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); amDemod.start(); } else if (demId == DEMOD_USB) { @@ -134,7 +136,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; - vfo->setReference(mod::API_t::REF_LOWER); + vfo->setReference(ImGui::WaterfallVFO::REF_LOWER); ssbDemod.start(); } else if (demId == DEMOD_LSB) { @@ -145,7 +147,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; - vfo->setReference(mod::API_t::REF_UPPER); + vfo->setReference(ImGui::WaterfallVFO::REF_UPPER); ssbDemod.start(); } else if (demId == DEMOD_DSB) { @@ -156,7 +158,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); deemp.bypass = true; - vfo->setReference(mod::API_t::REF_CENTER); + vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); ssbDemod.start(); } else if (demId == DEMOD_RAW) { @@ -165,7 +167,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { //audioResamp.setInput(&cpx2stereo.output); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); audioResamp.setInputSampleRate(10000, vfo->getOutputBlockSize(), audioBw, audioBw); - vfo->setReference(mod::API_t::REF_LOWER); + vfo->setReference(ImGui::WaterfallVFO::REF_LOWER); cpx2stereo.start(); } else { @@ -249,5 +251,5 @@ void SigPath::start() { demod.start(); audioResamp.start(); deemp.start(); - API->startStream(vfoName); + audio::startStream(vfoName); } \ No newline at end of file From 1507e6ec31cde52d770f15d8dc3cfb459caeff95 Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Thu, 1 Oct 2020 13:46:12 +0200 Subject: [PATCH 048/127] New module system --- CMakeLists.txt | 5 +- core/src/gui/main_window.cpp | 17 -- core/src/module.cpp | 82 ++++----- core/src/module.h | 15 +- core/src/signal_path/vfo_manager.cpp | 2 +- file_source/CMakeLists.txt | 14 ++ file_source/src/main.cpp | 90 ++++++++++ radio/src/main.cpp | 1 + recorder/src/main.cpp | 241 ++++++++++++++------------- root_dev/config.json | 102 ++++++------ root_dev/module_list.json | 8 +- soapy/CMakeLists.txt | 14 ++ soapy/src/main.cpp | 92 ++++++++++ source_demo/CMakeLists.txt | 14 ++ source_demo/src/main.cpp | 87 ++++++++++ 15 files changed, 534 insertions(+), 250 deletions(-) create mode 100644 file_source/CMakeLists.txt create mode 100644 file_source/src/main.cpp create mode 100644 soapy/CMakeLists.txt create mode 100644 soapy/src/main.cpp create mode 100644 source_demo/CMakeLists.txt create mode 100644 source_demo/src/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index acc0882f..c4ac7f96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,9 @@ project(sdrpp_core) add_subdirectory("core") add_subdirectory("radio") -# Add back recorder when module new system is ready -#add_subdirectory("recorder") +add_subdirectory("recorder") +add_subdirectory("soapy") +add_subdirectory("file_source") add_subdirectory("demo") add_executable(sdrpp "src/main.cpp" "win32/resources.rc") diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index cb9b0b1b..16aebbb4 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -72,7 +72,6 @@ void windowInit() { sigpath::signalPath.start(); spdlog::info("Loading modules"); - mod::initAPI(&gui::waterfall); mod::loadFromList(ROOT_DIR "/module_list.json"); sourecmenu::init(); @@ -231,7 +230,6 @@ void drawWindow() { gui::waterfall.selectedVFOChanged = false; gui::freqSelect.setFrequency(vfo->generalOffset + gui::waterfall.getCenterFrequency()); gui::freqSelect.frequencyChanged = false; - mod::broadcastEvent(mod::EVENT_SELECTED_VFO_CHANGED); audioStreamName = audio::getNameFromVFO(gui::waterfall.selectedVFO); if (audioStreamName != "") { volume = &audio::streams[audioStreamName]->volume; @@ -279,13 +277,6 @@ void drawWindow() { int width = vMax.x - vMin.x; int height = vMax.y - vMin.y; - int modCount = mod::moduleNames.size(); - mod::Module_t mod; - for (int i = 0; i < modCount; i++) { - mod = mod::modules[mod::moduleNames[i]]; - mod._NEW_FRAME_(mod.ctx); - } - // To Bar if (ImGui::ImageButton(icons::MENU, ImVec2(40, 40), ImVec2(0, 0), ImVec2(1, 1), 0)) { showMenu = !showMenu; @@ -384,14 +375,6 @@ void drawWindow() { gui::menu.draw(); - for (int i = 0; i < modCount; i++) { - if (ImGui::CollapsingHeader(mod::moduleNames[i].c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { - mod = mod::modules[mod::moduleNames[i]]; - mod._DRAW_MENU_(mod.ctx); - ImGui::Spacing(); - } - } - if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); diff --git a/core/src/module.cpp b/core/src/module.cpp index 69f6c48a..3251ad2a 100644 --- a/core/src/module.cpp +++ b/core/src/module.cpp @@ -4,37 +4,10 @@ #include namespace mod { - API_t API; std::map modules; std::vector moduleNames; ImGui::WaterFall* _wtf; - std::string api_getSelectedVFOName() { - return _wtf->selectedVFO; - } - - void initAPI(ImGui::WaterFall* wtf) { - _wtf = wtf; - - // GUI - API.getSelectedVFOName = api_getSelectedVFOName; - API.bindVolumeVariable = bindVolumeVariable; - API.unbindVolumeVariable = unbindVolumeVariable; - - // Audio - API.registerMonoStream = audio::registerMonoStream; - API.registerStereoStream = audio::registerStereoStream; - API.startStream = audio::startStream; - API.stopStream = audio::stopStream; - API.removeStream = audio::removeStream; - API.bindToStreamMono = audio::bindToStreamMono; - API.bindToStreamStereo = audio::bindToStreamStereo; - API.setBlockSize = audio::setBlockSize; - API.unbindFromStreamMono = audio::unbindFromStreamMono; - API.unbindFromStreamStereo = audio::unbindFromStreamStereo; - API.getStreamNameList = audio::getStreamNameList; - } - void loadModule(std::string path, std::string name) { if (!std::filesystem::exists(path)) { spdlog::error("{0} does not exist", path); @@ -51,10 +24,10 @@ namespace mod { spdlog::error("Couldn't load {0}.", name); return; } - mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))GetProcAddress(mod.inst, "_INIT_"); - mod._NEW_FRAME_ = (void(*)(void*))GetProcAddress(mod.inst, "_NEW_FRAME_"); - mod._DRAW_MENU_ = (void(*)(void*))GetProcAddress(mod.inst, "_DRAW_MENU_"); - mod._HANDLE_EVENT_ = (void(*)(void*, int))GetProcAddress(mod.inst, "_HANDLE_EVENT_"); + + mod._INIT_ = (void(*)())GetProcAddress(mod.inst, "_INIT_"); + mod._CREATE_INSTANCE_ = (void*(*)(std::string))GetProcAddress(mod.inst, "_CREATE_INSTANCE_"); + mod._DELETE_INSTANCE_ = (void(*)(void*))GetProcAddress(mod.inst, "_DELETE_INSTANCE_"); mod._STOP_ = (void(*)(void*))GetProcAddress(mod.inst, "_STOP_"); #else mod.inst = dlopen(path.c_str(), RTLD_LAZY); @@ -62,49 +35,41 @@ namespace mod { spdlog::error("Couldn't load {0}.", name); return; } - mod._INIT_ = (void*(*)(mod::API_t*,ImGuiContext*,std::string))dlsym(mod.inst, "_INIT_"); - mod._NEW_FRAME_ = (void(*)(void*))dlsym(mod.inst, "_NEW_FRAME_"); - mod._DRAW_MENU_ = (void(*)(void*))dlsym(mod.inst, "_DRAW_MENU_"); - mod._HANDLE_EVENT_ = (void(*)(void*, int))dlsym(mod.inst, "_HANDLE_EVENT_"); - mod._STOP_ = (void(*)(void*))dlsym(mod.inst, "_STOP_"); + mod._INIT_ = (void(*)())dlsym(mod.inst, "_INIT_"); + mod._CREATE_INSTANCE_ = (void*(*)(std::string))dlsym(mod.inst, "_CREATE_INSTANCE_"); + mod._DELETE_INSTANCE_ = (void(*)(void*))dlsym(mod.inst, "_DELETE_INSTANCE_"); + mod._STOP_ = (void(*)())dlsym(mod.inst, "_STOP_"); #endif if (mod._INIT_ == NULL) { spdlog::error("Couldn't load {0} because it's missing _INIT_.", name); return; } - if (mod._NEW_FRAME_ == NULL) { - spdlog::error("Couldn't load {0} because it's missing _NEW_FRAME_.", name); + if (mod._CREATE_INSTANCE_ == NULL) { + spdlog::error("Couldn't load {0} because it's missing _CREATE_INSTANCE_.", name); return; } - if (mod._DRAW_MENU_ == NULL) { - spdlog::error("Couldn't load {0} because it's missing _DRAW_MENU_.", name); - return; - } - if (mod._HANDLE_EVENT_ == NULL) { - spdlog::error("Couldn't load {0} because it's missing _HANDLE_EVENT_.", name); + if (mod._DELETE_INSTANCE_ == NULL) { + spdlog::error("Couldn't load {0} because it's missing _DELETE_INSTANCE_.", name); return; } if (mod._STOP_ == NULL) { spdlog::error("Couldn't load {0} because it's missing _STOP_.", name); return; } - mod.ctx = mod._INIT_(&API, ImGui::GetCurrentContext(), name); + + if (!isLoaded(mod.inst)) { + mod._INIT_(); + } + + mod.ctx = mod._CREATE_INSTANCE_(name); if (mod.ctx == NULL) { spdlog::error("{0} Failed to initialize.", name); } + modules[name] = mod; moduleNames.push_back(name); } - void broadcastEvent(int eventId) { - if (eventId < 0 || eventId >= _EVENT_COUNT) { - return; - } - for (auto const& [name, mod] : modules) { - mod._HANDLE_EVENT_(mod.ctx, eventId); - } - } - void loadFromList(std::string path) { if (!std::filesystem::exists(path)) { spdlog::error("Module list file does not exist"); @@ -125,5 +90,14 @@ namespace mod { loadModule(file, name); } } + + bool isLoaded(void* handle) { + for (auto const& [name, module] : modules) { + if (module.inst == handle) { + return true; + } + } + return false; + } }; diff --git a/core/src/module.h b/core/src/module.h index 159de6a7..d366ad49 100644 --- a/core/src/module.h +++ b/core/src/module.h @@ -37,23 +37,22 @@ namespace mod { void* inst; #endif void (*_INIT_)(); - void* (*_CREATE_INSTANCE)(std::string); - void (*_DELETE_INSTANCE)(); + void* (*_CREATE_INSTANCE_)(std::string name); + void (*_DELETE_INSTANCE_)(void* instance); void (*_STOP_)(); void* ctx; }; struct ModuleInfo_t { - char* name; - char* description; - char* author; - char* version; + const char* name; + const char* description; + const char* author; + const char* version; }; - void initAPI(ImGui::WaterFall* wtf); void loadModule(std::string path, std::string name); - void broadcastEvent(int eventId); void loadFromList(std::string path); + bool isLoaded(void* handle); extern std::map modules; extern std::vector moduleNames; diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index f43248f1..0396114e 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -48,7 +48,7 @@ int VFOManager::VFO::getOutputBlockSize() { VFOManager::VFOManager() { - + } VFOManager::VFO* VFOManager::createVFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { diff --git a/file_source/CMakeLists.txt b/file_source/CMakeLists.txt new file mode 100644 index 00000000..adc08b05 --- /dev/null +++ b/file_source/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.13) +project(file_source) + +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + +file(GLOB SRC "src/*.cpp") + +add_library(file_source SHARED ${SRC}) +target_link_libraries(file_source PRIVATE sdrpp_core) +set_target_properties(file_source PROPERTIES PREFIX "") \ No newline at end of file diff --git a/file_source/src/main.cpp b/file_source/src/main.cpp new file mode 100644 index 00000000..66e10369 --- /dev/null +++ b/file_source/src/main.cpp @@ -0,0 +1,90 @@ +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + +MOD_INFO { + /* Name: */ "fike_source", + /* Description: */ "File input module for SDR++", + /* Author: */ "Ryzerth", + /* Version: */ "0.1.0" +}; + +class FileSourceModule { +public: + FileSourceModule(std::string name) { + this->name = name; + + stream.init(100); + + handler.ctx = this; + handler.selectHandler = menuSelected; + handler.deselectHandler = menuDeselected; + handler.menuHandler = menuHandler; + handler.startHandler = start; + handler.stopHandler = stop; + handler.tuneHandler = tune; + handler.stream = &stream; + sigpath::sourceManager.registerSource("File", &handler); + spdlog::info("FileSourceModule '{0}': Instance created!", name); + } + + ~FileSourceModule() { + spdlog::info("FileSourceModule '{0}': Instance deleted!", name); + } + +private: + static void menuSelected(void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + spdlog::info("FileSourceModule '{0}': Menu Select!", _this->name); + } + + static void menuDeselected(void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + spdlog::info("FileSourceModule '{0}': Menu Deselect!", _this->name); + } + + static void start(void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + spdlog::info("FileSourceModule '{0}': Start!", _this->name); + } + + static void stop(void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + spdlog::info("FileSourceModule '{0}': Stop!", _this->name); + } + + static void tune(double freq, void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + spdlog::info("FileSourceModule '{0}': Tune: {1}!", _this->name, freq); + } + + + static void menuHandler(void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + ImGui::Text("Hi from %s!", _this->name.c_str()); + } + + std::string name; + dsp::stream stream; + SourceManager::SourceHandler handler; +}; + +MOD_EXPORT void _INIT_() { + // Do your one time init here +} + +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + return new FileSourceModule(name); +} + +MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { + delete (FileSourceModule*)instance; +} + +MOD_EXPORT void _STOP_() { + // Do your one shutdown here +} \ No newline at end of file diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 54e0a451..ebaba395 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -25,6 +25,7 @@ public: sigPath.init(name, 200000, 1000); sigPath.start(); sigPath.setDemodulator(SigPath::DEMOD_FM, bandWidth); + gui::menu.registerEntry(name, menuHandler, this); } ~RadioModule() { diff --git a/recorder/src/main.cpp b/recorder/src/main.cpp index 4dda16cf..60c72efc 100644 --- a/recorder/src/main.cpp +++ b/recorder/src/main.cpp @@ -7,40 +7,11 @@ #include #include #include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) -struct RecorderContext_t { - std::string name; - dsp::stream* stream; - WavWriter* writer; - std::thread workerThread; - bool recording; - time_t startTime; - std::string lastNameList; - std::string selectedStreamName; - int selectedStreamId; - uint64_t samplesWritten; - float sampleRate; -}; - -void _writeWorker(RecorderContext_t* ctx) { - dsp::StereoFloat_t* floatBuf = new dsp::StereoFloat_t[1024]; - int16_t* sampleBuf = new int16_t[2048]; - while (true) { - if (ctx->stream->read(floatBuf, 1024) < 0) { - break; - } - for (int i = 0; i < 1024; i++) { - sampleBuf[(i * 2) + 0] = floatBuf[i].l * 0x7FFF; - sampleBuf[(i * 2) + 1] = floatBuf[i].r * 0x7FFF; - } - ctx->samplesWritten += 1024; - ctx->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); - } - delete[] floatBuf; - delete[] sampleBuf; -} +// TODO: Fix this and finish module std::string genFileName(std::string prefix) { time_t now = time(0); @@ -58,102 +29,144 @@ void sampleRateChanged(void* ctx, float sampleRate, int blockSize) { } -MOD_EXPORT void* _INIT_(mod::API_t* _API, ImGuiContext* imctx, std::string _name) { - RecorderContext_t* ctx = new RecorderContext_t; - ctx->recording = false; - ctx->selectedStreamName = ""; - ctx->selectedStreamId = 0; - ctx->lastNameList = ""; - ImGui::SetCurrentContext(imctx); - return ctx; -} - -MOD_EXPORT void _NEW_FRAME_(RecorderContext_t* ctx) { - -} - -MOD_EXPORT void _DRAW_MENU_(RecorderContext_t* ctx) { - float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); - - std::vector streamNames = audio::getStreamNameList(); - std::string nameList; - for (std::string name : streamNames) { - nameList += name; - nameList += '\0'; +class RecorderModule { +public: + RecorderModule(std::string name) { + this->name = name; + recording = false; + selectedStreamName = ""; + selectedStreamId = 0; + lastNameList = ""; + gui::menu.registerEntry(name, menuHandler, this); } - if (nameList == "") { - ImGui::Text("No audio stream available"); - return; + ~RecorderModule() { + } - if (ctx->lastNameList != nameList) { - ctx->lastNameList = nameList; - auto _nameIt = std::find(streamNames.begin(), streamNames.end(), ctx->selectedStreamName); - if (_nameIt == streamNames.end()) { - // TODO: verify if there even is a stream - ctx->selectedStreamId = 0; - ctx->selectedStreamName = streamNames[ctx->selectedStreamId]; +private: + static void menuHandler(void* ctx) { + RecorderModule* _this = (RecorderModule*)ctx; + float menuColumnWidth = ImGui::GetContentRegionAvailWidth(); + + std::vector streamNames = audio::getStreamNameList(); + std::string nameList; + for (std::string name : streamNames) { + nameList += name; + nameList += '\0'; + } + + if (nameList == "") { + ImGui::Text("No audio stream available"); + return; + } + + if (_this->lastNameList != nameList) { + _this->lastNameList = nameList; + auto _nameIt = std::find(streamNames.begin(), streamNames.end(), _this->selectedStreamName); + if (_nameIt == streamNames.end()) { + // TODO: verify if there even is a stream + _this->selectedStreamId = 0; + _this->selectedStreamName = streamNames[_this->selectedStreamId]; + } + else { + _this->selectedStreamId = std::distance(streamNames.begin(), _nameIt); + _this->selectedStreamName = streamNames[_this->selectedStreamId]; + } + } + + ImGui::PushItemWidth(menuColumnWidth); + if (!_this->recording) { + if (ImGui::Combo(CONCAT("##_strea_select_", _this->name), &_this->selectedStreamId, nameList.c_str())) { + _this->selectedStreamName = streamNames[_this->selectedStreamId]; + } } else { - ctx->selectedStreamId = std::distance(streamNames.begin(), _nameIt); - ctx->selectedStreamName = streamNames[ctx->selectedStreamId]; + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.44f, 0.44f, 0.44f, 0.15f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.20f, 0.21f, 0.22f, 0.30f)); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 0.65f)); + ImGui::Combo(CONCAT("##_strea_select_", _this->name), &_this->selectedStreamId, nameList.c_str()); + ImGui::PopItemFlag(); + ImGui::PopStyleColor(3); + } + + if (!_this->recording) { + if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { + _this->samplesWritten = 0; + _this->sampleRate = 48000; + _this->writer = new WavWriter("recordings/" + genFileName("audio_"), 16, 2, 48000); + _this->stream = audio::bindToStreamStereo(_this->selectedStreamName, streamRemovedHandler, sampleRateChanged, _this); + _this->workerThread = std::thread(_writeWorker, _this); + _this->recording = true; + _this->startTime = time(0); + } + ImGui::TextColored(ImGui::GetStyleColorVec4(ImGuiCol_Text), "Idle --:--:--"); + } + else { + if (ImGui::Button("Stop", ImVec2(menuColumnWidth, 0))) { + _this->stream->stopReader(); + _this->workerThread.join(); + _this->stream->clearReadStop(); + audio::unbindFromStreamStereo(_this->selectedStreamName, _this->stream); + _this->writer->close(); + delete _this->writer; + _this->recording = false; + } + uint64_t seconds = _this->samplesWritten / (uint64_t)_this->sampleRate; + time_t diff = seconds; + tm *dtm = gmtime(&diff); + ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); } } - ImGui::PushItemWidth(menuColumnWidth); - if (!ctx->recording) { - if (ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str())) { - ctx->selectedStreamName = streamNames[ctx->selectedStreamId]; + static void _writeWorker(RecorderModule* _this) { + dsp::StereoFloat_t* floatBuf = new dsp::StereoFloat_t[1024]; + int16_t* sampleBuf = new int16_t[2048]; + while (true) { + if (_this->stream->read(floatBuf, 1024) < 0) { + break; + } + for (int i = 0; i < 1024; i++) { + sampleBuf[(i * 2) + 0] = floatBuf[i].l * 0x7FFF; + sampleBuf[(i * 2) + 1] = floatBuf[i].r * 0x7FFF; + } + _this->samplesWritten += 1024; + _this->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); } + delete[] floatBuf; + delete[] sampleBuf; } - else { - ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.44f, 0.44f, 0.44f, 0.15f)); - ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.20f, 0.21f, 0.22f, 0.30f)); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 0.65f)); - ImGui::Combo(CONCAT("##_strea_select_", ctx->name), &ctx->selectedStreamId, nameList.c_str()); - ImGui::PopItemFlag(); - ImGui::PopStyleColor(3); - } - - if (!ctx->recording) { - if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { - ctx->samplesWritten = 0; - ctx->sampleRate = 48000; - ctx->writer = new WavWriter("recordings/" + genFileName("audio_"), 16, 2, 48000); - ctx->stream = audio::bindToStreamStereo(ctx->selectedStreamName, streamRemovedHandler, sampleRateChanged, ctx); - ctx->workerThread = std::thread(_writeWorker, ctx); - ctx->recording = true; - ctx->startTime = time(0); - } - ImGui::TextColored(ImGui::GetStyleColorVec4(ImGuiCol_Text), "Idle --:--:--"); - } - else { - if (ImGui::Button("Stop", ImVec2(menuColumnWidth, 0))) { - ctx->stream->stopReader(); - ctx->workerThread.join(); - ctx->stream->clearReadStop(); - audio::unbindFromStreamStereo(ctx->selectedStreamName, ctx->stream); - ctx->writer->close(); - delete ctx->writer; - ctx->recording = false; - } - uint64_t seconds = ctx->samplesWritten / (uint64_t)ctx->sampleRate; - time_t diff = seconds; - tm *dtm = gmtime(&diff); - ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); - } + + std::string name; + dsp::stream* stream; + WavWriter* writer; + std::thread workerThread; + bool recording; + time_t startTime; + std::string lastNameList; + std::string selectedStreamName; + int selectedStreamId; + uint64_t samplesWritten; + float sampleRate; + +}; + +struct RecorderContext_t { + std::string name; +}; + +MOD_EXPORT void _INIT_() { + // Nothing here } -MOD_EXPORT void _HANDLE_EVENT_(RecorderContext_t* ctx, int eventId) { - // INSTEAD OF EVENTS, REGISTER HANDLER WHEN CREATING VFO - if (eventId == mod::EVENT_STREAM_PARAM_CHANGED) { - - } - else if (eventId == mod::EVENT_SELECTED_VFO_CHANGED) { - - } +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + RecorderModule* instance = new RecorderModule(name); + return instance; +} + +MOD_EXPORT void _DELETE_INSTANCE_() { + } MOD_EXPORT void _STOP_(RecorderContext_t* ctx) { diff --git a/root_dev/config.json b/root_dev/config.json index 3d8e90f8..2f180be9 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,52 +1,52 @@ -{ - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.602150559425354 - }, - "Radio 1": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.4185185134410858 - }, - "Radio 2": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.0 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 99000000, - "max": 0.0, - "maximized": false, - "menuWidth": 300, - "min": -51.47058868408203, - "showWaterfall": true, - "source": "Generic RTL2832U OEM :: 00000001", - "sourceSettings": { - "Generic RTL2832U OEM :: 00000001": { - "gains": { - "TUNER": 11.625 - }, - "sampleRate": 2560000 - }, - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 24.503000259399414, - "VGA": 16.229999542236328 - }, - "sampleRate": 8000000 - }, - "PulseAudio": { - "sampleRate": 96000 - } - }, - "windowSize": { - "h": 784, - "w": 1460 - } +{ + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.602150559425354 + }, + "Radio 1": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.4185185134410858 + }, + "Radio 2": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.0 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 300, + "frequency": 96570096, + "max": 0.0, + "maximized": false, + "menuWidth": 300, + "min": -51.47058868408203, + "showWaterfall": true, + "source": "Generic RTL2832U OEM :: 00000001", + "sourceSettings": { + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 11.625 + }, + "sampleRate": 2560000 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 0.0, + "LNA": 24.503000259399414, + "VGA": 16.229999542236328 + }, + "sampleRate": 8000000 + }, + "PulseAudio": { + "sampleRate": 96000 + } + }, + "windowSize": { + "h": 1053, + "w": 959 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index ac435873..fff6c734 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,4 +1,6 @@ { - "Radio 1": "./radio/Release/radio.dll", - "Recorder 1": "./recorder/Release/recorder.dll" -} + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so", + "Soapy": "./soapy/soapy.so", + "FileSource": "./file_source/file_source.so" +} \ No newline at end of file diff --git a/soapy/CMakeLists.txt b/soapy/CMakeLists.txt new file mode 100644 index 00000000..7e4fcbfa --- /dev/null +++ b/soapy/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.13) +project(soapy) + +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + +file(GLOB SRC "src/*.cpp") + +add_library(soapy SHARED ${SRC}) +target_link_libraries(soapy PRIVATE sdrpp_core) +set_target_properties(soapy PROPERTIES PREFIX "") \ No newline at end of file diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp new file mode 100644 index 00000000..6a19bab9 --- /dev/null +++ b/soapy/src/main.cpp @@ -0,0 +1,92 @@ +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + +MOD_INFO { + /* Name: */ "soapy", + /* Description: */ "SoapySDR input module for SDR++", + /* Author: */ "Ryzerth", + /* Version: */ "0.1.0" +}; + +class SoapyModule { +public: + SoapyModule(std::string name) { + this->name = name; + + //TODO: Make module tune on source select change (in sdrpp_core) + + stream.init(100); + + handler.ctx = this; + handler.selectHandler = menuSelected; + handler.deselectHandler = menuDeselected; + handler.menuHandler = menuHandler; + handler.startHandler = start; + handler.stopHandler = stop; + handler.tuneHandler = tune; + handler.stream = &stream; + sigpath::sourceManager.registerSource("SoapySDR", &handler); + spdlog::info("SoapyModule '{0}': Instance created!", name); + } + + ~SoapyModule() { + spdlog::info("SoapyModule '{0}': Instance deleted!", name); + } + +private: + static void menuSelected(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Menu Select!", _this->name); + } + + static void menuDeselected(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Menu Deselect!", _this->name); + } + + static void start(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Start!", _this->name); + } + + static void stop(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Stop!", _this->name); + } + + static void tune(double freq, void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Tune: {1}!", _this->name, freq); + } + + + static void menuHandler(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + ImGui::Text("Hi from %s!", _this->name.c_str()); + } + + std::string name; + dsp::stream stream; + SourceManager::SourceHandler handler; +}; + +MOD_EXPORT void _INIT_() { + // Do your one time init here +} + +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + return new SoapyModule(name); +} + +MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { + delete (SoapyModule*)instance; +} + +MOD_EXPORT void _STOP_() { + // Do your one shutdown here +} \ No newline at end of file diff --git a/source_demo/CMakeLists.txt b/source_demo/CMakeLists.txt new file mode 100644 index 00000000..7e4fcbfa --- /dev/null +++ b/source_demo/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.13) +project(soapy) + +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + +file(GLOB SRC "src/*.cpp") + +add_library(soapy SHARED ${SRC}) +target_link_libraries(soapy PRIVATE sdrpp_core) +set_target_properties(soapy PROPERTIES PREFIX "") \ No newline at end of file diff --git a/source_demo/src/main.cpp b/source_demo/src/main.cpp new file mode 100644 index 00000000..8617ced5 --- /dev/null +++ b/source_demo/src/main.cpp @@ -0,0 +1,87 @@ +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + +MOD_INFO { + /* Name: */ "soapy", + /* Description: */ "SoapySDR input module for SDR++", + /* Author: */ "Ryzerth", + /* Version: */ "0.1.0" +}; + +class SoapyModule { +public: + SoapyModule(std::string name) { + this->name = name; + + handler.ctx = this; + handler.selectHandler = menuSelected; + handler.deselectHandler = menuDeselected; + handler.menuHandler = menuHandler; + handler.startHandler = start; + handler.stopHandler = stop; + handler.tuneHandler = tune; + sigpath::sourceManager.registerSource("SoapySDR", &handler); + spdlog::info("SoapyModule '{0}': Instance created!", name); + } + + ~SoapyModule() { + spdlog::info("SoapyModule '{0}': Instance deleted!", name); + } + +private: + static void menuSelected(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Menu Select!", _this->name); + } + + static void menuDeselected(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Menu Deselect!", _this->name); + } + + static void start(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Start!", _this->name); + } + + static void stop(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Stop!", _this->name); + } + + static void tune(double freq, void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + spdlog::info("SoapyModule '{0}': Tune: {1}!", _this->name, freq); + } + + + static void menuHandler(void* ctx) { + SoapyModule* _this = (SoapyModule*)ctx; + ImGui::Text("Hi from %s!", _this->name.c_str()); + } + + std::string name; + dsp::stream stream; + SourceManager::SourceHandler handler; +}; + +MOD_EXPORT void _INIT_() { + // Do your one time init here +} + +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + return new SoapyModule(name); +} + +MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { + delete (SoapyModule*)instance; +} + +MOD_EXPORT void _STOP_() { + // Do your one shutdown here +} \ No newline at end of file From 47b04ffef48008c40baedcfd36600c999ba37291 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Fri, 2 Oct 2020 01:44:18 +0200 Subject: [PATCH 049/127] More work on the source module system --- core/CMakeLists.txt | 1 - core/src/core.cpp | 6 ++ core/src/core.h | 2 + core/src/module.cpp | 2 +- root_dev/config.json | 44 ++----------- root_dev/module_list.json | 8 +-- soapy/CMakeLists.txt | 10 ++- soapy/src/main.cpp | 132 +++++++++++++++++++++++++++++++++++++- 8 files changed, 158 insertions(+), 47 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 7416afbc..af670e9e 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -74,7 +74,6 @@ else() target_link_libraries(sdrpp_core PUBLIC dl) endif (MSVC) -target_link_libraries(sdrpp_core PUBLIC SoapySDR) target_link_libraries(sdrpp_core PUBLIC volk) set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) diff --git a/core/src/core.cpp b/core/src/core.cpp index fe20dcb5..37815b36 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -26,6 +26,12 @@ namespace core { ConfigManager configManager; + + void setInputSampleRate(double samplerate) { + // NOTE: Zoom controls won't work + gui::waterfall.setBandwidth(samplerate); + sigpath::signalPath.setSampleRate(samplerate); + } }; bool maximized = false; diff --git a/core/src/core.h b/core/src/core.h index 14983520..c3e065f0 100644 --- a/core/src/core.h +++ b/core/src/core.h @@ -4,6 +4,8 @@ namespace core { SDRPP_EXPORT ConfigManager configManager; + + void setInputSampleRate(double samplerate); }; int sdrpp_main(); \ No newline at end of file diff --git a/core/src/module.cpp b/core/src/module.cpp index 3251ad2a..8417473a 100644 --- a/core/src/module.cpp +++ b/core/src/module.cpp @@ -28,7 +28,7 @@ namespace mod { mod._INIT_ = (void(*)())GetProcAddress(mod.inst, "_INIT_"); mod._CREATE_INSTANCE_ = (void*(*)(std::string))GetProcAddress(mod.inst, "_CREATE_INSTANCE_"); mod._DELETE_INSTANCE_ = (void(*)(void*))GetProcAddress(mod.inst, "_DELETE_INSTANCE_"); - mod._STOP_ = (void(*)(void*))GetProcAddress(mod.inst, "_STOP_"); + mod._STOP_ = (void(*)())GetProcAddress(mod.inst, "_STOP_"); #else mod.inst = dlopen(path.c_str(), RTLD_LAZY); if (mod.inst == NULL) { diff --git a/root_dev/config.json b/root_dev/config.json index 2f180be9..57340ef6 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,21 +1,5 @@ { - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.602150559425354 - }, - "Radio 1": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.4185185134410858 - }, - "Radio 2": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.0 - } - }, + "audio": {}, "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, @@ -25,28 +9,10 @@ "menuWidth": 300, "min": -51.47058868408203, "showWaterfall": true, - "source": "Generic RTL2832U OEM :: 00000001", - "sourceSettings": { - "Generic RTL2832U OEM :: 00000001": { - "gains": { - "TUNER": 11.625 - }, - "sampleRate": 2560000 - }, - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 24.503000259399414, - "VGA": 16.229999542236328 - }, - "sampleRate": 8000000 - }, - "PulseAudio": { - "sampleRate": 96000 - } - }, + "source": "", + "sourceSettings": {}, "windowSize": { - "h": 1053, - "w": 959 + "h": 720, + "w": 1280 } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index fff6c734..b83e4c69 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,6 @@ { - "Radio": "./radio/radio.so", - "Recorder": "./recorder/recorder.so", - "Soapy": "./soapy/soapy.so", - "FileSource": "./file_source/file_source.so" + "Radio": "./radio/Release/radio.dll", + "Recorder": "./recorder/Release/recorder.dll", + "Soapy": "./soapy/Release/soapy.dll", + "FileSource": "./file_source/Release/file_source.dll" } \ No newline at end of file diff --git a/soapy/CMakeLists.txt b/soapy/CMakeLists.txt index 7e4fcbfa..a5c0e444 100644 --- a/soapy/CMakeLists.txt +++ b/soapy/CMakeLists.txt @@ -3,6 +3,12 @@ project(soapy) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") + + # Lib path + target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") + + # Misc headers + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") else() set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) @@ -11,4 +17,6 @@ file(GLOB SRC "src/*.cpp") add_library(soapy SHARED ${SRC}) target_link_libraries(soapy PRIVATE sdrpp_core) -set_target_properties(soapy PROPERTIES PREFIX "") \ No newline at end of file +set_target_properties(soapy PROPERTIES PREFIX "") + +target_link_libraries(soapy PUBLIC SoapySDR) \ No newline at end of file diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index 6a19bab9..ae6be718 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -3,6 +3,10 @@ #include #include #include +#include +#include +#include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) @@ -20,6 +24,13 @@ public: //TODO: Make module tune on source select change (in sdrpp_core) + devList = SoapySDR::Device::enumerate(); + txtDevList = ""; + for (auto& dev : devList) { + txtDevList += dev["label"]; + txtDevList += '\0'; + } + stream.init(100); handler.ctx = this; @@ -32,6 +43,9 @@ public: handler.stream = &stream; sigpath::sourceManager.registerSource("SoapySDR", &handler); spdlog::info("SoapyModule '{0}': Instance created!", name); + + // Select default device + selectDevice(devList[0]["label"]); } ~SoapyModule() { @@ -39,9 +53,69 @@ public: } private: + void selectSampleRate(double samplerate) { + if (sampleRates.size() == 0) { + devId = -1; + return; + } + bool found = false; + int i = 0; + for (auto& sr : sampleRates) { + if (sr == samplerate) { + srId = i; + sampleRate = sr; + found = true; + break; + } + i++; + } + if (!found) { + // Select default sample rate + selectSampleRate(sampleRates[0]); + } + } + + void selectDevice(std::string name) { + if (devList.size() == 0) { + devId = -1; + return; + } + bool found = false; + int i = 0; + for (auto& args : devList) { + if (args["label"] == name) { + devArgs = args; + devId = i; + found = true; + break; + } + i++; + } + if (!found) { + // If device was not found, select default device instead + selectDevice(devList[0]["label"]); + return; + } + + SoapySDR::Device* dev = SoapySDR::Device::make(devArgs); + sampleRates = dev->listSampleRates(SOAPY_SDR_RX, 0); + txtSrList = ""; + for (double sr : sampleRates) { + txtSrList += std::to_string((int)sr); + txtSrList += '\0'; + } + SoapySDR::Device::unmake(dev); + selectSampleRate(sampleRates[0]); + + } + static void menuSelected(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; spdlog::info("SoapyModule '{0}': Menu Select!", _this->name); + if (_this->devList.size() == 0) { + return; + } + core::setInputSampleRate(_this->sampleRate); } static void menuDeselected(void* ctx) { @@ -51,28 +125,84 @@ private: static void start(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; + _this->dev = SoapySDR::Device::make(_this->devArgs); + _this->dev->setSampleRate(SOAPY_SDR_RX, 0, _this->sampleRate); + _this->devStream = _this->dev->setupStream(SOAPY_SDR_RX, "CF32"); + _this->dev->activateStream(_this->devStream); + _this->running = true; + _this->workerThread = std::thread(_worker, _this); spdlog::info("SoapyModule '{0}': Start!", _this->name); } static void stop(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; + _this->running = false; spdlog::info("SoapyModule '{0}': Stop!", _this->name); } static void tune(double freq, void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; + _this->freq = freq; + if (_this->running) { + _this->dev->setFrequency(SOAPY_SDR_RX, 0, freq); + } spdlog::info("SoapyModule '{0}': Tune: {1}!", _this->name, freq); } static void menuHandler(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; - ImGui::Text("Hi from %s!", _this->name.c_str()); + + // If no device is available, do not attempt to display menu + if (_this->devId < 0) { + return; + } + + float menuWidth = ImGui::GetContentRegionAvailWidth(); + ImGui::SetNextItemWidth(menuWidth); + if (ImGui::Combo(CONCAT("##_dev_select_", _this->name), &_this->devId, _this->txtDevList.c_str())) { + _this->selectDevice(_this->devList[_this->devId]["label"]); + } + ImGui::SetNextItemWidth(menuWidth); + if (ImGui::Combo(CONCAT("##_sr_select_", _this->name), &_this->srId, _this->txtSrList.c_str())) { + _this->selectSampleRate(_this->sampleRates[_this->srId]); + core::setInputSampleRate(_this->sampleRate); + } + } + + static void _worker(SoapyModule* _this) { + spdlog::info("SOAPY: WORKER STARTED {0}", _this->sampleRate); + int blockSize = _this->sampleRate / 200.0f; + dsp::complex_t* buf = new dsp::complex_t[blockSize]; + int flags = 0; + long long timeMs = 0; + + while (_this->running) { + int res = _this->dev->readStream(_this->devStream, (void**)&buf, blockSize, flags, timeMs); + if (res < 1) { + continue; + } + _this->stream.write(buf, res); + } + delete[] buf; } std::string name; dsp::stream stream; + SoapySDR::Stream* devStream; SourceManager::SourceHandler handler; + SoapySDR::KwargsList devList; + SoapySDR::Kwargs devArgs; + SoapySDR::Device* dev; + std::string txtDevList; + std::string txtSrList; + std::thread workerThread; + int devId = -1; + double freq; + double sampleRate; + bool running = false; + std::vector sampleRates; + int srId = -1; }; MOD_EXPORT void _INIT_() { From 60342de9c06d79ff843415968658822b44335eed Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 4 Oct 2020 02:56:02 +0200 Subject: [PATCH 050/127] Finished soapy module + added file source + added RTL_TCP source (windows only rn) --- CMakeLists.txt | 2 + core/src/core.cpp | 2 + core/src/dsp/source.h | 3 +- core/src/gui/main_window.cpp | 5 +- core/src/gui/main_window.h | 1 - core/src/gui/menu.cpp | 1 + core/src/gui/menus/audio.cpp | 1 - core/src/gui/menus/bandplan.cpp | 1 - core/src/gui/menus/display.cpp | 1 - core/src/signal_path/signal_path.h | 1 - file_source/CMakeLists.txt | 2 + file_source/src/main.cpp | 38 +++++- file_source/src/wavreader.h | 62 ++++++++++ root/config.json | 3 +- root_dev/config.json | 3 +- root_dev/module_list.json | 3 +- root_dev/soapy_source_config.json | 19 +++ rtl_tcp_source/CMakeLists.txt | 20 +++ rtl_tcp_source/src/main.cpp | 188 +++++++++++++++++++++++++++++ rtl_tcp_source/src/rtltcp_client.h | 120 ++++++++++++++++++ soapy/src/main.cpp | 153 ++++++++++++++++++++--- 21 files changed, 602 insertions(+), 27 deletions(-) create mode 100644 file_source/src/wavreader.h create mode 100644 root_dev/soapy_source_config.json create mode 100644 rtl_tcp_source/CMakeLists.txt create mode 100644 rtl_tcp_source/src/main.cpp create mode 100644 rtl_tcp_source/src/rtltcp_client.h diff --git a/CMakeLists.txt b/CMakeLists.txt index c4ac7f96..0d353fe4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,13 @@ cmake_minimum_required(VERSION 3.13) project(sdrpp_core) +# Cross platform modules add_subdirectory("core") add_subdirectory("radio") add_subdirectory("recorder") add_subdirectory("soapy") add_subdirectory("file_source") +add_subdirectory("rtl_tcp_source") add_subdirectory("demo") add_executable(sdrpp "src/main.cpp" "win32/resources.rc") diff --git a/core/src/core.cpp b/core/src/core.cpp index 37815b36..06aa9143 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -186,6 +186,8 @@ int sdrpp_main() { ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); + //ImGui::ShowDemoWindow(); + if (_maximized != maximized) { _maximized = maximized; core::configManager.aquire(); diff --git a/core/src/dsp/source.h b/core/src/dsp/source.h index 2e4ec42b..5130abbc 100644 --- a/core/src/dsp/source.h +++ b/core/src/dsp/source.h @@ -48,7 +48,8 @@ namespace dsp { } void setFrequency(float frequency) { - _phasorSpeed = (2 * 3.1415926535) / (_sampleRate / frequency); + _frequency = frequency; + _phasorSpeed = (2 * 3.1415926535 * frequency) / _sampleRate; } void setBlockSize(int blockSize) { diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 16aebbb4..f515c0a0 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -123,6 +123,8 @@ void windowInit() { fftHeight = core::configManager.conf["fftHeight"]; gui::waterfall.setFFTHeight(fftHeight); + gui::menu.order = core::configManager.conf["menuOrder"].get>(); + core::configManager.release(); } @@ -411,8 +413,7 @@ void drawWindow() { ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Zoom").x / 2.0f)); ImGui::Text("Zoom"); ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); - // TODO: use global sample rate value from DSP instead of 8000000 - ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw.val, 8000000, 1000.0f, ""); + ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw.val, gui::waterfall.getBandwidth(), 1000.0f, ""); ImGui::NewLine(); diff --git a/core/src/gui/main_window.h b/core/src/gui/main_window.h index 03eb370f..e079f577 100644 --- a/core/src/gui/main_window.h +++ b/core/src/gui/main_window.h @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include diff --git a/core/src/gui/menu.cpp b/core/src/gui/menu.cpp index 278f1f5c..c5611f72 100644 --- a/core/src/gui/menu.cpp +++ b/core/src/gui/menu.cpp @@ -27,6 +27,7 @@ void Menu::draw() { item = items[name]; if (ImGui::CollapsingHeader(name.c_str(), ImGuiTreeNodeFlags_DefaultOpen)) { item.drawHandler(item.ctx); + ImGui::Spacing(); } } } diff --git a/core/src/gui/menus/audio.cpp b/core/src/gui/menus/audio.cpp index e5dd0470..f39fdcaa 100644 --- a/core/src/gui/menus/audio.cpp +++ b/core/src/gui/menus/audio.cpp @@ -134,6 +134,5 @@ namespace audiomenu { } ImGui::Spacing(); } - ImGui::Spacing(); } }; \ No newline at end of file diff --git a/core/src/gui/menus/bandplan.cpp b/core/src/gui/menus/bandplan.cpp index 78f7a16f..8588b78e 100644 --- a/core/src/gui/menus/bandplan.cpp +++ b/core/src/gui/menus/bandplan.cpp @@ -47,6 +47,5 @@ namespace bandplanmenu { bandplan::BandPlan_t plan = bandplan::bandplans[bandplan::bandplanNames[bandplanId]]; ImGui::Text("Country: %s (%s)", plan.countryName.c_str(), plan.countryCode.c_str()); ImGui::Text("Author: %s", plan.authorName.c_str()); - ImGui::Spacing(); } }; \ No newline at end of file diff --git a/core/src/gui/menus/display.cpp b/core/src/gui/menus/display.cpp index 76093a56..cb1c9105 100644 --- a/core/src/gui/menus/display.cpp +++ b/core/src/gui/menus/display.cpp @@ -18,6 +18,5 @@ namespace displaymenu { core::configManager.conf["showWaterfall"] = showWaterfall; core::configManager.release(true); } - ImGui::Spacing(); } } \ No newline at end of file diff --git a/core/src/signal_path/signal_path.h b/core/src/signal_path/signal_path.h index 5b3c79bd..d179306d 100644 --- a/core/src/signal_path/signal_path.h +++ b/core/src/signal_path/signal_path.h @@ -2,7 +2,6 @@ #include #include #include -#include #include namespace sigpath { diff --git a/file_source/CMakeLists.txt b/file_source/CMakeLists.txt index adc08b05..e6046129 100644 --- a/file_source/CMakeLists.txt +++ b/file_source/CMakeLists.txt @@ -7,6 +7,8 @@ else() set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) +include_directories("src/") + file(GLOB SRC "src/*.cpp") add_library(file_source SHARED ${SRC}) diff --git a/file_source/src/main.cpp b/file_source/src/main.cpp index 66e10369..6aae4b04 100644 --- a/file_source/src/main.cpp +++ b/file_source/src/main.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) @@ -29,6 +31,11 @@ public: handler.tuneHandler = tune; handler.stream = &stream; sigpath::sourceManager.registerSource("File", &handler); + + reader = new WavReader("D:/satpic/raw_recordings/NOAA-18_09-08-2018_21-39-00_baseband_NR.wav"); + + spdlog::info("Samplerate: {0}, Bit depth: {1}, Channel count: {2}", reader->getSampleRate(), reader->getBitDepth(), reader->getChannelCount()); + spdlog::info("FileSourceModule '{0}': Instance created!", name); } @@ -39,6 +46,7 @@ public: private: static void menuSelected(void* ctx) { FileSourceModule* _this = (FileSourceModule*)ctx; + core::setInputSampleRate(_this->reader->getSampleRate()); spdlog::info("FileSourceModule '{0}': Menu Select!", _this->name); } @@ -49,11 +57,15 @@ private: static void start(void* ctx) { FileSourceModule* _this = (FileSourceModule*)ctx; + _this->workerThread = std::thread(worker, _this); spdlog::info("FileSourceModule '{0}': Start!", _this->name); } static void stop(void* ctx) { FileSourceModule* _this = (FileSourceModule*)ctx; + _this->stream.stopWriter(); + _this->workerThread.join(); + _this->stream.clearWriteStop(); spdlog::info("FileSourceModule '{0}': Stop!", _this->name); } @@ -62,15 +74,39 @@ private: spdlog::info("FileSourceModule '{0}': Tune: {1}!", _this->name, freq); } - static void menuHandler(void* ctx) { FileSourceModule* _this = (FileSourceModule*)ctx; ImGui::Text("Hi from %s!", _this->name.c_str()); } + static void worker(void* ctx) { + FileSourceModule* _this = (FileSourceModule*)ctx; + double sampleRate = _this->reader->getSampleRate(); + int blockSize = sampleRate / 200.0; + int16_t* inBuf = new int16_t[blockSize * 2]; + dsp::complex_t* outBuf = new dsp::complex_t[blockSize]; + + _this->stream.setMaxLatency(blockSize * 2); + + while (true) { + _this->reader->readSamples(inBuf, blockSize * 2 * sizeof(int16_t)); + for (int i = 0; i < blockSize; i++) { + outBuf[i].q = (float)inBuf[i * 2] / (float)0x7FFF; + outBuf[i].i = (float)inBuf[(i * 2) + 1] / (float)0x7FFF; + } + if (_this->stream.write(outBuf, blockSize) < 0) { break; }; + //std::this_thread::sleep_for(std::chrono::milliseconds(5)); + } + + delete[] inBuf; + delete[] outBuf; + } + std::string name; dsp::stream stream; SourceManager::SourceHandler handler; + WavReader* reader; + std::thread workerThread; }; MOD_EXPORT void _INIT_() { diff --git a/file_source/src/wavreader.h b/file_source/src/wavreader.h new file mode 100644 index 00000000..95b65fa4 --- /dev/null +++ b/file_source/src/wavreader.h @@ -0,0 +1,62 @@ +#pragma once + +#pragma once +#include +#include + +#define WAV_SIGNATURE "RIFF" +#define WAV_TYPE "WAVE" +#define WAV_FORMAT_MARK "fmt " +#define WAV_DATA_MARK "data" +#define WAV_SAMPLE_TYPE_PCM 1 + +class WavReader { +public: + WavReader(std::string path) { + file = std::ifstream(path.c_str(), std::ios::binary); + file.read((char*)&hdr, sizeof(WavHeader_t)); + } + + uint16_t getBitDepth() { + return hdr.bitDepth; + } + + uint16_t getChannelCount() { + return hdr.channelCount; + } + + uint32_t getSampleRate() { + return hdr.sampleRate; + } + + void readSamples(void* data, size_t size) { + file.read((char*)data, size); + bytesRead += size; + } + + void close() { + + file.close(); + } + +private: + struct WavHeader_t { + char signature[4]; // "RIFF" + uint32_t fileSize; // data bytes + sizeof(WavHeader_t) - 8 + char fileType[4]; // "WAVE" + char formatMarker[4]; // "fmt " + uint32_t formatHeaderLength; // Always 16 + uint16_t sampleType; // PCM (1) + uint16_t channelCount; + uint32_t sampleRate; + uint32_t bytesPerSecond; + uint16_t bytesPerSample; + uint16_t bitDepth; + char dataMarker[4]; // "data" + uint32_t dataSize; + }; + + std::ifstream file; + size_t bytesRead = 0; + WavHeader_t hdr; +}; \ No newline at end of file diff --git a/root/config.json b/root/config.json index 93f423d3..f96b5c9d 100644 --- a/root/config.json +++ b/root/config.json @@ -29,5 +29,6 @@ "windowSize": { "h": 720, "w": 1280 - } + }, + "menuOrder": ["Source", "Radio", "Recorder", "Audio", "Band Plan", "Display"] } \ No newline at end of file diff --git a/root_dev/config.json b/root_dev/config.json index 57340ef6..3e634e81 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -14,5 +14,6 @@ "windowSize": { "h": 720, "w": 1280 - } + }, + "menuOrder": ["Source", "Radio", "Recorder", "Audio", "Band Plan", "Display"] } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index b83e4c69..bb2ebb0c 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -2,5 +2,6 @@ "Radio": "./radio/Release/radio.dll", "Recorder": "./recorder/Release/recorder.dll", "Soapy": "./soapy/Release/soapy.dll", - "FileSource": "./file_source/Release/file_source.dll" + "FileSource": "./file_source/Release/file_source.dll", + "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" } \ No newline at end of file diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json new file mode 100644 index 00000000..1e606654 --- /dev/null +++ b/root_dev/soapy_source_config.json @@ -0,0 +1,19 @@ +{ + "device": "Generic RTL2832U OEM :: 00000001", + "devices": { + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 12.817999839782715 + }, + "sampleRate": 2560000.0 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 0.0, + "LNA": 24.711999893188477, + "VGA": 15.906000137329102 + }, + "sampleRate": 8000000.0 + } + } +} \ No newline at end of file diff --git a/rtl_tcp_source/CMakeLists.txt b/rtl_tcp_source/CMakeLists.txt new file mode 100644 index 00000000..20796ec7 --- /dev/null +++ b/rtl_tcp_source/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.13) +project(rtl_tcp_source) + +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") +endif (MSVC) + +include_directories("src/") + +file(GLOB SRC "src/*.cpp") + +add_library(rtl_tcp_source SHARED ${SRC}) +target_link_libraries(rtl_tcp_source PRIVATE sdrpp_core) +set_target_properties(rtl_tcp_source PROPERTIES PREFIX "") + +if(WIN32) + target_link_libraries(rtl_tcp_source PRIVATE wsock32 ws2_32) +endif() \ No newline at end of file diff --git a/rtl_tcp_source/src/main.cpp b/rtl_tcp_source/src/main.cpp new file mode 100644 index 00000000..ad35dc7a --- /dev/null +++ b/rtl_tcp_source/src/main.cpp @@ -0,0 +1,188 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define CONCAT(a, b) ((std::string(a) + b).c_str()) + +MOD_INFO { + /* Name: */ "fike_source", + /* Description: */ "File input module for SDR++", + /* Author: */ "Ryzerth", + /* Version: */ "0.1.0" +}; + +class RTLTCPSourceModule { +public: + RTLTCPSourceModule(std::string name) { + this->name = name; + + stream.init(100); + + sampleRate = 2560000.0; + + handler.ctx = this; + handler.selectHandler = menuSelected; + handler.deselectHandler = menuDeselected; + handler.menuHandler = menuHandler; + handler.startHandler = start; + handler.stopHandler = stop; + handler.tuneHandler = tune; + handler.stream = &stream; + sigpath::sourceManager.registerSource("RTL-TCP", &handler); + + spdlog::info("RTLTCPSourceModule '{0}': Instance created!", name); + } + + ~RTLTCPSourceModule() { + spdlog::info("RTLTCPSourceModule '{0}': Instance deleted!", name); + } + +private: + static void menuSelected(void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + core::setInputSampleRate(_this->sampleRate); + spdlog::info("RTLTCPSourceModule '{0}': Menu Select!", _this->name); + } + + static void menuDeselected(void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + spdlog::info("RTLTCPSourceModule '{0}': Menu Deselect!", _this->name); + } + + static void start(void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + if (!_this->client.connectToRTL(_this->ip, _this->port)) { + spdlog::error("Could not connect to {0}:{1}", _this->ip, _this->port); + return; + } + _this->client.setFrequency(_this->freq); + _this->client.setSampleRate(_this->sampleRate); + _this->client.setGainIndex(_this->gain); + _this->client.setGainMode(!_this->tunerAGC); + _this->client.setDirectSampling(_this->directSamplingMode); + _this->client.setAGCMode(_this->rtlAGC); + _this->running = true; + _this->workerThread = std::thread(worker, _this); + spdlog::info("RTLTCPSourceModule '{0}': Start!", _this->name); + } + + static void stop(void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + _this->running = false; + _this->stream.stopWriter(); + _this->workerThread.join(); + _this->stream.clearWriteStop(); + _this->client.disconnect(); + spdlog::info("RTLTCPSourceModule '{0}': Stop!", _this->name); + } + + static void tune(double freq, void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + if (_this->running) { + _this->client.setFrequency(freq); + } + _this->freq = freq; + spdlog::info("RTLTCPSourceModule '{0}': Tune: {1}!", _this->name, freq); + } + + static void menuHandler(void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + float menuWidth = ImGui::GetContentRegionAvailWidth(); + float portWidth = ImGui::CalcTextSize("00000").x + 20; + + ImGui::SetNextItemWidth(menuWidth - portWidth); + ImGui::InputText(CONCAT("##_ip_select_", _this->name), _this->ip, 1024); + ImGui::SameLine(); + ImGui::SetNextItemWidth(portWidth); + ImGui::InputInt(CONCAT("##_port_select_", _this->name), &_this->port, 0); + + ImGui::SetNextItemWidth(ImGui::CalcTextSize("OOOOOOOOOO").x); + if (ImGui::Combo("Direct sampling", &_this->directSamplingMode, "Disabled\0I branch\0Q branch\0")) { + if (_this->running) { + _this->client.setDirectSampling(_this->directSamplingMode); + } + } + + if (ImGui::Checkbox("RTL AGC", &_this->rtlAGC)) { + if (_this->running) { + _this->client.setAGCMode(_this->rtlAGC); + } + } + + if (ImGui::Checkbox("Tuner AGC", &_this->tunerAGC)) { + if (_this->running) { + _this->client.setGainMode(!_this->tunerAGC); + if (!_this->tunerAGC) { + _this->client.setGainIndex(_this->gain); + } + } + } + + if (_this->tunerAGC) { style::beginDisabled(); } + ImGui::SetNextItemWidth(menuWidth); + if (ImGui::SliderInt(CONCAT("##_gain_select_", _this->name), &_this->gain, 0, 29, "")) { + if (_this->running) { + _this->client.setGainIndex(_this->gain); + } + } + if (_this->tunerAGC) { style::endDisabled(); } + } + + static void worker(void* ctx) { + RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + int blockSize = _this->sampleRate / 200.0; + uint8_t* inBuf = new uint8_t[blockSize * 2]; + dsp::complex_t* outBuf = new dsp::complex_t[blockSize]; + + _this->stream.setMaxLatency(blockSize * 2); + + while (true) { + // Read samples here + _this->client.receiveData(inBuf, blockSize * 2); + for (int i = 0; i < blockSize; i++) { + outBuf[i].q = ((double)inBuf[i * 2] - 128.0) / 128.0; + outBuf[i].i = ((double)inBuf[(i * 2) + 1] - 128.0) / 128.0; + } + if (_this->stream.write(outBuf, blockSize) < 0) { break; }; + } + + delete[] inBuf; + delete[] outBuf; + } + + std::string name; + dsp::stream stream; + double sampleRate; + SourceManager::SourceHandler handler; + std::thread workerThread; + RTLTCPClient client; + bool running = false; + double freq; + char ip[1024] = "localhost"; + int port = 1234; + int gain = 0; + bool rtlAGC = false; + bool tunerAGC = false; + int directSamplingMode = 0; +}; + +MOD_EXPORT void _INIT_() { + // Do your one time init here +} + +MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { + return new RTLTCPSourceModule(name); +} + +MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { + delete (RTLTCPSourceModule*)instance; +} + +MOD_EXPORT void _STOP_() { + // Do your one shutdown here +} \ No newline at end of file diff --git a/rtl_tcp_source/src/rtltcp_client.h b/rtl_tcp_source/src/rtltcp_client.h new file mode 100644 index 00000000..2fc4435c --- /dev/null +++ b/rtl_tcp_source/src/rtltcp_client.h @@ -0,0 +1,120 @@ +#pragma once +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#define __attribute__(x) +#pragma pack(push, 1) +#endif +struct command_t{ + unsigned char cmd; + unsigned int param; +}__attribute__((packed)); +#ifdef _WIN32 +#pragma pack(pop) +#endif + +class RTLTCPClient { +public: + RTLTCPClient() { + + } + + bool connectToRTL(char* host, uint16_t port) { + struct addrinfo *result = NULL; + struct addrinfo *ptr = NULL; + struct addrinfo hints; + + ZeroMemory( &hints, sizeof(hints) ); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; + + char buf[128]; + sprintf(buf, "%hu", port); + + int iResult = getaddrinfo(host, buf, &hints, &result); + if (iResult != 0) { + // TODO: log error + WSACleanup(); + return false; + } + ptr = result; + + sock = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); + + if (sock == INVALID_SOCKET) { + // TODO: log error + freeaddrinfo(result); + WSACleanup(); + return false; + } + + iResult = connect(sock, ptr->ai_addr, (int)ptr->ai_addrlen); + if (iResult == SOCKET_ERROR) { + closesocket(sock); + freeaddrinfo(result); + WSACleanup(); + return false; + } + freeaddrinfo(result); + + return true; + } + + void disconnect() { + closesocket(sock); + WSACleanup(); + } + + // struct command_t { + // uint8_t cmd; + // uint32_t arg; + // }; + + void sendCommand(uint8_t command, uint32_t param) { + command_t cmd; + cmd.cmd = command; + cmd.param = htonl(param); + send(sock, (char*)&cmd, sizeof(command_t), 0); + } + + void receiveData(uint8_t* buf, size_t count) { + recv(sock, (char*)buf, count, 0); + } + + void setFrequency(double freq) { + sendCommand(1, freq); + } + + void setSampleRate(double sr) { + sendCommand(2, sr); + } + + void setGainMode(int mode) { + sendCommand(3, mode); + } + + void setGain(double gain) { + sendCommand(4, gain); + } + + void setAGCMode(int mode) { + sendCommand(8, mode); + } + + void setDirectSampling(int mode) { + sendCommand(9, mode); + } + + void setGainIndex(int index) { + sendCommand(13, index); + } + +private: + SOCKET sock; + +}; \ No newline at end of file diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index ae6be718..5bb6773e 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) @@ -17,6 +18,8 @@ MOD_INFO { /* Version: */ "0.1.0" }; +ConfigManager config; + class SoapyModule { public: SoapyModule(std::string name) { @@ -24,15 +27,18 @@ public: //TODO: Make module tune on source select change (in sdrpp_core) - devList = SoapySDR::Device::enumerate(); - txtDevList = ""; - for (auto& dev : devList) { - txtDevList += dev["label"]; - txtDevList += '\0'; - } + uiGains = new float[1]; + + refresh(); stream.init(100); + // Select default device + config.aquire(); + std::string devName = config.conf["device"]; + config.release(); + selectDevice(devName); + handler.ctx = this; handler.selectHandler = menuSelected; handler.deselectHandler = menuDeselected; @@ -42,10 +48,17 @@ public: handler.tuneHandler = tune; handler.stream = &stream; sigpath::sourceManager.registerSource("SoapySDR", &handler); - spdlog::info("SoapyModule '{0}': Instance created!", name); - // Select default device - selectDevice(devList[0]["label"]); + spdlog::info("SoapyModule '{0}': Instance created!", name); + } + + void refresh() { + devList = SoapySDR::Device::enumerate(); + txtDevList = ""; + for (auto& dev : devList) { + txtDevList += dev["label"]; + txtDevList += '\0'; + } } ~SoapyModule() { @@ -54,6 +67,7 @@ public: private: void selectSampleRate(double samplerate) { + spdlog::info("Setting sample rate to {0}", samplerate); if (sampleRates.size() == 0) { devId = -1; return; @@ -65,6 +79,7 @@ private: srId = i; sampleRate = sr; found = true; + core::setInputSampleRate(sampleRate); break; } i++; @@ -98,15 +113,57 @@ private: } SoapySDR::Device* dev = SoapySDR::Device::make(devArgs); + + gainList = dev->listGains(SOAPY_SDR_RX, 0); + delete[] uiGains; + uiGains = new float[gainList.size()]; + for (auto gain : gainList) { + gainRanges.push_back(dev->getGainRange(SOAPY_SDR_RX, 0, gain)); + } + sampleRates = dev->listSampleRates(SOAPY_SDR_RX, 0); txtSrList = ""; for (double sr : sampleRates) { txtSrList += std::to_string((int)sr); txtSrList += '\0'; } - SoapySDR::Device::unmake(dev); - selectSampleRate(sampleRates[0]); + SoapySDR::Device::unmake(dev); + + config.aquire(); + if (config.conf["devices"].contains(name)) { + int i = 0; + for (auto gain : gainList) { + if (config.conf["devices"][name]["gains"].contains(gain)) { + uiGains[i] = config.conf["devices"][name]["gains"][gain]; + } + i++; + } + selectSampleRate(config.conf["devices"][name]["sampleRate"]); + } + else { + int i = 0; + for (auto gain : gainList) { + uiGains[i] = gainRanges[i].minimum(); + i++; + } + selectSampleRate(sampleRates[0]); // Select default + } + config.release(); + + } + + void saveCurrent() { + json conf; + conf["sampleRate"] = sampleRate; + int i = 0; + for (auto gain : gainList) { + conf["gains"][gain] = uiGains[i]; + i++; + } + config.aquire(); + config.conf["devices"][devArgs["label"]] = conf; + config.release(true); } static void menuSelected(void* ctx) { @@ -126,7 +183,17 @@ private: static void start(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; _this->dev = SoapySDR::Device::make(_this->devArgs); + _this->dev->setSampleRate(SOAPY_SDR_RX, 0, _this->sampleRate); + + int i = 0; + for (auto gain : _this->gainList) { + _this->dev->setGain(SOAPY_SDR_RX, 0, gain, _this->uiGains[i]); + i++; + } + + _this->dev->setFrequency(SOAPY_SDR_RX, 0, _this->freq); + _this->devStream = _this->dev->setupStream(SOAPY_SDR_RX, "CF32"); _this->dev->activateStream(_this->devStream); _this->running = true; @@ -137,6 +204,11 @@ private: static void stop(void* ctx) { SoapyModule* _this = (SoapyModule*)ctx; _this->running = false; + _this->dev->deactivateStream(_this->devStream); + _this->dev->closeStream(_this->devStream); + _this->workerThread.join(); + SoapySDR::Device::unmake(_this->dev); + spdlog::info("SoapyModule '{0}': Stop!", _this->name); } @@ -159,14 +231,56 @@ private: } float menuWidth = ImGui::GetContentRegionAvailWidth(); + + if (_this->running) { style::beginDisabled(); } + ImGui::SetNextItemWidth(menuWidth); if (ImGui::Combo(CONCAT("##_dev_select_", _this->name), &_this->devId, _this->txtDevList.c_str())) { _this->selectDevice(_this->devList[_this->devId]["label"]); + config.aquire(); + config.conf["device"] = _this->devList[_this->devId]["label"]; + config.release(true); } - ImGui::SetNextItemWidth(menuWidth); + + if (ImGui::Combo(CONCAT("##_sr_select_", _this->name), &_this->srId, _this->txtSrList.c_str())) { _this->selectSampleRate(_this->sampleRates[_this->srId]); - core::setInputSampleRate(_this->sampleRate); + _this->saveCurrent(); + } + + ImGui::SameLine(); + float refreshBtnWdith = menuWidth - ImGui::GetCursorPosX(); + if (ImGui::Button(CONCAT("Refresh##_dev_select_", _this->name), ImVec2(refreshBtnWdith, 0))) { + _this->refresh(); + _this->selectDevice(config.conf["device"]); + } + + if (_this->running) { style::endDisabled(); } + + float gainNameLen = 0; + float len; + for (auto gain : _this->gainList) { + len = ImGui::CalcTextSize((gain + " gain").c_str()).x; + if (len > gainNameLen) { + gainNameLen = len; + } + } + gainNameLen += 5.0f; + + int i = 0; + for (auto gain : _this->gainList) { + ImGui::Text((gain + " gain").c_str()); + ImGui::SameLine(); + ImGui::SetCursorPosX(gainNameLen); + ImGui::SetNextItemWidth(menuWidth - gainNameLen); + if (ImGui::SliderFloat((gain + std::string("##_gain_sel_") + _this->name).c_str(), &_this->uiGains[i], + _this->gainRanges[i].minimum(), _this->gainRanges[i].maximum())) { + if (_this->running) { + _this->dev->setGain(SOAPY_SDR_RX, 0, gain, _this->uiGains[i]); + } + _this->saveCurrent(); + } + i++; } } @@ -203,10 +317,18 @@ private: bool running = false; std::vector sampleRates; int srId = -1; + float* uiGains; + std::vector gainList; + std::vector gainRanges; }; MOD_EXPORT void _INIT_() { - // Do your one time init here + config.setPath(ROOT_DIR "/soapy_source_config.json"); + json defConf; + defConf["device"] = ""; + defConf["devices"] = json({}); + config.load(defConf); + config.enableAutoSave(); } MOD_EXPORT void* _CREATE_INSTANCE_(std::string name) { @@ -218,5 +340,6 @@ MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { } MOD_EXPORT void _STOP_() { - // Do your one shutdown here + config.disableAutoSave(); + config.save(); } \ No newline at end of file From eff7bbdd5a886d3b5fa5d91ee082777ace123046 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sun, 4 Oct 2020 15:23:40 +0200 Subject: [PATCH 051/127] added new patrons --- core/src/gui/dialogs/credits.cpp | 1 + core/src/io/soapy.h | 185 ----------------------------- readme.md | 1 + root_dev/soapy_source_config.json | 2 +- rtl_tcp_source/src/main.cpp | 6 + rtl_tcp_source/src/rtltcp_client.h | 11 ++ 6 files changed, 20 insertions(+), 186 deletions(-) delete mode 100644 core/src/io/soapy.h diff --git a/core/src/gui/dialogs/credits.cpp b/core/src/gui/dialogs/credits.cpp index 5abd1e8c..060fc922 100644 --- a/core/src/gui/dialogs/credits.cpp +++ b/core/src/gui/dialogs/credits.cpp @@ -50,6 +50,7 @@ namespace credits { ImGui::NextColumn(); ImGui::Text("Patrons"); ImGui::BulletText("SignalsEverywhere"); + ImGui::BulletText("Lee Donaghy"); ImGui::EndPopup(); ImGui::PopStyleVar(1); diff --git a/core/src/io/soapy.h b/core/src/io/soapy.h deleted file mode 100644 index 54151833..00000000 --- a/core/src/io/soapy.h +++ /dev/null @@ -1,185 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include -#include - -namespace io { - class SoapyWrapper { - public: - SoapyWrapper() { - - } - - void init() { - SoapySDR::registerLogHandler(_logHandler); - //SoapySDR::Device::make(""); - - output.init(64000); - currentGains = new float[1]; - refresh(); - if (devList.size() == 0) { - dev = NULL; - return; - } - setDevice(devList[0]); - } - - void start() { - if (devList.size() == 0) { - return; - } - if (running) { - return; - } - dev = SoapySDR::Device::make(args); - _stream = dev->setupStream(SOAPY_SDR_RX, "CF32"); - dev->activateStream(_stream); - running = true; - _workerThread = std::thread(_worker, this); - } - - void stop() { - if (!running) { - return; - } - running = false; - dev->deactivateStream(_stream); - dev->closeStream(_stream); - _workerThread.join(); - SoapySDR::Device::unmake(dev); - } - - void refresh() { - if (running) { - return; - } - devList = SoapySDR::Device::enumerate(); - txtDevList = ""; - devNameList.clear(); - if (devList.size() == 0) { - txtDevList += '\0'; - return; - } - for (int i = 0; i < devList.size(); i++) { - txtDevList += devList[i]["label"]; - txtDevList += '\0'; - devNameList.push_back(devList[i]["label"]); - } - } - - void setDevice(SoapySDR::Kwargs devArgs) { - if (running) { - return; - } - args = devArgs; - dev = SoapySDR::Device::make(devArgs); - txtSampleRateList = ""; - sampleRates = dev->listSampleRates(SOAPY_SDR_RX, 0); - for (int i = 0; i < sampleRates.size(); i++) { - txtSampleRateList += std::to_string((int)sampleRates[i]); - txtSampleRateList += '\0'; - } - _sampleRate = sampleRates[0]; - - gainList = dev->listGains(SOAPY_SDR_RX, 0); - gainRanges.clear(); - if (gainList.size() == 0) { - return; - } - delete[] currentGains; - currentGains = new float[gainList.size()]; - for (int i = 0; i < gainList.size(); i++) { - gainRanges.push_back(dev->getGainRange(SOAPY_SDR_RX, 0, gainList[i])); - SoapySDR::Range rng = dev->getGainRange(SOAPY_SDR_RX, 0, gainList[i]); - - spdlog::info("{0}: {1} -> {2} (Step: {3})", gainList[i], rng.minimum(), rng.maximum(), rng.step()); - - currentGains[i] = rng.minimum(); - } - } - - void setSampleRate(float sampleRate) { - if (running || dev == NULL) { - return; - } - _sampleRate = sampleRate; - dev->setSampleRate(SOAPY_SDR_RX, 0, sampleRate); - } - - void setFrequency(float freq) { - if (dev == NULL) { - return; - } - dev->setFrequency(SOAPY_SDR_RX, 0, freq); - } - - void setGain(int gainId, float gain) { - if (dev == NULL) { - return; - } - currentGains[gainId] = gain; - dev->setGain(SOAPY_SDR_RX, 0, gainList[gainId], gain); - } - - bool isRunning() { - return running; - } - - float getSampleRate() { - return _sampleRate; - } - - SoapySDR::KwargsList devList; - std::vector devNameList; - std::string txtDevList; - - std::vector sampleRates; - std::string txtSampleRateList; - - std::vector gainList; - std::vector gainRanges; - float* currentGains; - - dsp::stream output; - - private: - static void _worker(SoapyWrapper* _this) { - int blockSize = _this->_sampleRate / 200.0f; - dsp::complex_t* buf = new dsp::complex_t[blockSize]; - int flags = 0; - long long timeMs = 0; - - while (_this->running) { - int res = _this->dev->readStream(_this->_stream, (void**)&buf, blockSize, flags, timeMs); - if (res < 1) { - continue; - } - _this->output.write(buf, res); - } - delete[] buf; - } - - static void _logHandler(const SoapySDRLogLevel lvl, const char* message) { - if (lvl == SOAPY_SDR_FATAL || lvl == SOAPY_SDR_CRITICAL || lvl == SOAPY_SDR_ERROR) { - spdlog::error(message); - } - else if (lvl == SOAPY_SDR_WARNING) { - spdlog::warn(message); - } - else if (lvl == SOAPY_SDR_NOTICE | SOAPY_SDR_INFO) { - spdlog::info(message); - } - } - - SoapySDR::Kwargs args; - SoapySDR::Device* dev; - SoapySDR::Stream* _stream; - std::thread _workerThread; - bool running = false; - float _sampleRate = 0; - }; -}; \ No newline at end of file diff --git a/readme.md b/readme.md index 9c0e69bf..1db83330 100644 --- a/readme.md +++ b/readme.md @@ -73,6 +73,7 @@ I will soon publish a contributing.md listing the code style to use. ## Patrons * [SignalsEverywhere](https://signalseverywhere.com/) +* [Lee Donaghy](https://github.com/github) ## Contributors * [aosync](https://github.com/aosync) diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json index 1e606654..06f6e45b 100644 --- a/root_dev/soapy_source_config.json +++ b/root_dev/soapy_source_config.json @@ -1,5 +1,5 @@ { - "device": "Generic RTL2832U OEM :: 00000001", + "device": "HackRF One #0 901868dc282c8f8b", "devices": { "Generic RTL2832U OEM :: 00000001": { "gains": { diff --git a/rtl_tcp_source/src/main.cpp b/rtl_tcp_source/src/main.cpp index ad35dc7a..a072432e 100644 --- a/rtl_tcp_source/src/main.cpp +++ b/rtl_tcp_source/src/main.cpp @@ -56,6 +56,9 @@ private: static void start(void* ctx) { RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + if (_this->running) { + return; + } if (!_this->client.connectToRTL(_this->ip, _this->port)) { spdlog::error("Could not connect to {0}:{1}", _this->ip, _this->port); return; @@ -73,6 +76,9 @@ private: static void stop(void* ctx) { RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; + if (!_this->running) { + return; + } _this->running = false; _this->stream.stopWriter(); _this->workerThread.join(); diff --git a/rtl_tcp_source/src/rtltcp_client.h b/rtl_tcp_source/src/rtltcp_client.h index 2fc4435c..bf930e68 100644 --- a/rtl_tcp_source/src/rtltcp_client.h +++ b/rtl_tcp_source/src/rtltcp_client.h @@ -24,6 +24,10 @@ public: } bool connectToRTL(char* host, uint16_t port) { + if (connected) { + return true; + } + struct addrinfo *result = NULL; struct addrinfo *ptr = NULL; struct addrinfo hints; @@ -62,12 +66,18 @@ public: } freeaddrinfo(result); + connected = true; + return true; } void disconnect() { + if (!connected) { + return; + } closesocket(sock); WSACleanup(); + connected = false; } // struct command_t { @@ -116,5 +126,6 @@ public: private: SOCKET sock; + bool connected = false; }; \ No newline at end of file From 14a8e8166277d0f8215a25bb7a96869e3f68680c Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 5 Oct 2020 18:20:27 +0200 Subject: [PATCH 052/127] Fixed missing label bug of soapysdr --- soapy/src/main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index 5bb6773e..a55c9836 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -55,9 +55,11 @@ public: void refresh() { devList = SoapySDR::Device::enumerate(); txtDevList = ""; + int i = 0; for (auto& dev : devList) { - txtDevList += dev["label"]; + txtDevList += dev["label"] != "" ? dev["label"] : dev["driver"]; txtDevList += '\0'; + i++; } } From ace1fe1e5e99cf2d6e7538b34ddcf7ec544afec2 Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Tue, 6 Oct 2020 10:54:00 +0200 Subject: [PATCH 053/127] added linux support for rtl_tcp --- CMakeLists.txt | 2 +- root_dev/config.json | 17 +++++++---- root_dev/module_list.json | 12 ++++---- root_dev/soapy_source_config.json | 39 +++++++++++++------------ rtl_tcp_source/src/rtltcp_client.h | 47 +++++++++++++++++++++++++++++- 5 files changed, 86 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d353fe4..49729acd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,4 +20,4 @@ else() add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") endif (MSVC) -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" diff --git a/root_dev/config.json b/root_dev/config.json index 3e634e81..d77e7e49 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,17 +3,24 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 96570096, + "frequency": 96571704, "max": 0.0, "maximized": false, + "menuOrder": [ + "Source", + "Radio", + "Recorder", + "Audio", + "Band Plan", + "Display" + ], "menuWidth": 300, "min": -51.47058868408203, "showWaterfall": true, "source": "", "sourceSettings": {}, "windowSize": { - "h": 720, - "w": 1280 - }, - "menuOrder": ["Source", "Radio", "Recorder", "Audio", "Band Plan", "Display"] + "h": 1053, + "w": 1920 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index bb2ebb0c..f026332f 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,7 +1,7 @@ { - "Radio": "./radio/Release/radio.dll", - "Recorder": "./recorder/Release/recorder.dll", - "Soapy": "./soapy/Release/soapy.dll", - "FileSource": "./file_source/Release/file_source.dll", - "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" -} \ No newline at end of file + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so", + "Soapy": "./soapy/soapy.so", + "FileSource": "./file_source/file_source.so", + "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" +} diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json index 06f6e45b..9f57e6a2 100644 --- a/root_dev/soapy_source_config.json +++ b/root_dev/soapy_source_config.json @@ -1,19 +1,22 @@ -{ - "device": "HackRF One #0 901868dc282c8f8b", - "devices": { - "Generic RTL2832U OEM :: 00000001": { - "gains": { - "TUNER": 12.817999839782715 - }, - "sampleRate": 2560000.0 - }, - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 24.711999893188477, - "VGA": 15.906000137329102 - }, - "sampleRate": 8000000.0 - } - } +{ + "device": "HackRF One #0 901868dc282c8f8b", + "devices": { + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 12.817999839782715 + }, + "sampleRate": 2560000.0 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 0.0, + "LNA": 24.711999893188477, + "VGA": 15.906000137329102 + }, + "sampleRate": 8000000.0 + }, + "PulseAudio": { + "sampleRate": 96000.0 + } + } } \ No newline at end of file diff --git a/rtl_tcp_source/src/rtltcp_client.h b/rtl_tcp_source/src/rtltcp_client.h index bf930e68..09d68182 100644 --- a/rtl_tcp_source/src/rtltcp_client.h +++ b/rtl_tcp_source/src/rtltcp_client.h @@ -2,8 +2,18 @@ #include #include #include + +#ifdef _WIN32 #include #include +#else +#include +#include +#include +#include +#include +#include +#endif #ifdef _WIN32 #define __attribute__(x) @@ -28,6 +38,7 @@ public: return true; } +#ifdef _WIN32 struct addrinfo *result = NULL; struct addrinfo *ptr = NULL; struct addrinfo hints; @@ -65,6 +76,23 @@ public: return false; } freeaddrinfo(result); +#else + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) { + // TODO: Log error + return false; + } + struct hostent *server = gethostbyname(host); + struct sockaddr_in serv_addr; + bzero(&serv_addr, sizeof(struct sockaddr_in)); + serv_addr.sin_family = AF_INET; + bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); + serv_addr.sin_port = port; + if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) { + // TODO: log error + return false; + } +#endif connected = true; @@ -75,8 +103,12 @@ public: if (!connected) { return; } +#ifdef _WIN32 closesocket(sock); WSACleanup(); +#else + close(sockfd); +#endif connected = false; } @@ -89,11 +121,19 @@ public: command_t cmd; cmd.cmd = command; cmd.param = htonl(param); - send(sock, (char*)&cmd, sizeof(command_t), 0); +#ifdef _WIN32 + send(sock, (char*)&cmd, sizeof(command_t), 0); +#else + write(sockfd, &cmd, sizeof(command_t)); +#endif } void receiveData(uint8_t* buf, size_t count) { +#ifdef _WIN32 recv(sock, (char*)buf, count, 0); +#else + read(sockfd, buf, count); +#endif } void setFrequency(double freq) { @@ -125,7 +165,12 @@ public: } private: +#ifdef _WIN32 SOCKET sock; +#else + int sockfd; +#endif + bool connected = false; }; \ No newline at end of file From ac068036b86457cceec12c6e0d6f4218008789e4 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 6 Oct 2020 15:50:46 +0200 Subject: [PATCH 054/127] Finished soapy module + added file source + added RTL_TCP source (windows only rn) --- core/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index af670e9e..da5423a1 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -17,9 +17,10 @@ file(GLOB MENUS "src/gui/menus/*.cpp") file(GLOB DIALOGS "src/gui/dialogs/*.cpp") file(GLOB SIGPATH "src/signal_path/*.cpp") file(GLOB IMGUI "src/imgui/*.cpp") +file(GLOB DUKTAPE "src/duktape/*.c") # Add code to dyn lib -add_library(sdrpp_core SHARED ${SRC} ${GUI} ${MENUS} ${DIALOGS} ${SIGPATH} ${IMGUI}) +add_library(sdrpp_core SHARED ${SRC} ${GUI} ${MENUS} ${DIALOGS} ${SIGPATH} ${IMGUI} ${DUKTAPE}) set_target_properties(sdrpp_core PROPERTIES PREFIX "") # Include core headers From 46d5b8a750406cb0db534a1a1c93163108d0ece4 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Wed, 7 Oct 2020 14:44:39 +0200 Subject: [PATCH 055/127] new scripting system --- core/src/core.cpp | 47 + core/src/core.h | 2 + core/src/duktape/duk_config.h | 3779 ++ core/src/duktape/duk_console.c | 185 + core/src/duktape/duk_console.h | 29 + core/src/duktape/duktape.c | 99755 +++++++++++++++++++++++++++++ core/src/duktape/duktape.h | 1450 + core/src/gui/main_window.cpp | 2 + core/src/gui/main_window.h | 1 + core/src/gui/menus/scripting.cpp | 21 + core/src/gui/menus/scripting.h | 6 + core/src/scripting.cpp | 75 + core/src/scripting.h | 48 + radio/src/main.cpp | 32 + root_dev/config.json | 5 +- root_dev/module_list.json | 10 +- 16 files changed, 105440 insertions(+), 7 deletions(-) create mode 100644 core/src/duktape/duk_config.h create mode 100644 core/src/duktape/duk_console.c create mode 100644 core/src/duktape/duk_console.h create mode 100644 core/src/duktape/duktape.c create mode 100644 core/src/duktape/duktape.h create mode 100644 core/src/gui/menus/scripting.cpp create mode 100644 core/src/gui/menus/scripting.h create mode 100644 core/src/scripting.cpp create mode 100644 core/src/scripting.h diff --git a/core/src/core.cpp b/core/src/core.cpp index 06aa9143..abc8f944 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -14,6 +14,9 @@ #include #include #include +#include +#include +#include #include @@ -26,6 +29,7 @@ namespace core { ConfigManager configManager; + ScriptManager scriptManager; void setInputSampleRate(double samplerate) { // NOTE: Zoom controls won't work @@ -50,12 +54,55 @@ static void maximized_callback(GLFWwindow* window, int n) { } } +duk_ret_t test_func(duk_context *ctx) { + printf("Hello from C++\n"); + return 1; +} + // main int sdrpp_main() { #ifdef _WIN32 //FreeConsole(); #endif + + // TESTING + + + // duk_context* ctx = duk_create_heap_default(); + // duk_console_init(ctx, DUK_CONSOLE_PROXY_WRAPPER); + + // std::ifstream file("test.js", std::ios::in); + // std::stringstream ss; + // ss << file.rdbuf(); + // std::string code = ss.str(); + + // duk_idx_t baseObj = duk_push_object(ctx); + + // duk_push_int(ctx, 42); + // duk_put_prop_string(ctx, baseObj, "my_property"); + + // duk_push_c_function(ctx, test_func, 0); + // duk_put_prop_string(ctx, baseObj, "my_func"); + + // duk_put_global_string(ctx, "my_object"); + // duk_push_object(ctx); + + + + // if (duk_peval_string(ctx, code.c_str()) != 0) { + // printf("Error: %s\n", duk_safe_to_string(ctx, -1)); + // return -1; + // } + // duk_pop(ctx); + + core::scriptManager.createScript("TestScript 1", "test.js"); + core::scriptManager.createScript("TestScript 2", "test.js"); + core::scriptManager.createScript("TestScript 3", "test.js"); + core::scriptManager.createScript("TestScript 4", "test.js"); + + // TESTING + spdlog::info("SDR++ v" VERSION_STR); // Load config diff --git a/core/src/core.h b/core/src/core.h index c3e065f0..8fc7fbac 100644 --- a/core/src/core.h +++ b/core/src/core.h @@ -1,9 +1,11 @@ #pragma once #include #include +#include namespace core { SDRPP_EXPORT ConfigManager configManager; + SDRPP_EXPORT ScriptManager scriptManager; void setInputSampleRate(double samplerate); }; diff --git a/core/src/duktape/duk_config.h b/core/src/duktape/duk_config.h new file mode 100644 index 00000000..130168a9 --- /dev/null +++ b/core/src/duktape/duk_config.h @@ -0,0 +1,3779 @@ +/* + * duk_config.h configuration header generated by genconfig.py. + * + * Git commit: 6001888049cb42656f8649db020e804bcdeca6a7 + * Git describe: v2.5.0 + * Git branch: master + * + * Supported platforms: + * - Mac OSX, iPhone, Darwin + * - Orbis + * - OpenBSD + * - Generic BSD + * - Atari ST TOS + * - AmigaOS + * - Durango (XboxOne) + * - Windows + * - Flashplayer (Crossbridge) + * - QNX + * - TI-Nspire + * - Emscripten + * - Android + * - Linux + * - Solaris + * - AIX + * - HPUX + * - Generic POSIX + * - Cygwin + * - Generic UNIX + * - Generic fallback + * + * Supported architectures: + * - x86 + * - x64 + * - x32 + * - ARM 32-bit + * - ARM 64-bit + * - MIPS 32-bit + * - MIPS 64-bit + * - PowerPC 32-bit + * - PowerPC 64-bit + * - SPARC 32-bit + * - SPARC 64-bit + * - RISC-V 32-bit + * - RISC-V 64-bit + * - SuperH + * - Motorola 68k + * - Emscripten + * - Generic + * + * Supported compilers: + * - Clang + * - GCC + * - MSVC + * - Emscripten + * - TinyC + * - VBCC + * - Bruce's C compiler + * - Generic + * + */ + +#if !defined(DUK_CONFIG_H_INCLUDED) +#define DUK_CONFIG_H_INCLUDED + +/* + * Intermediate helper defines + */ + +/* DLL build detection */ +/* not configured for DLL build */ +#undef DUK_F_DLL_BUILD + +/* Apple OSX, iOS */ +#if defined(__APPLE__) +#define DUK_F_APPLE +#endif + +/* FreeBSD */ +#if defined(__FreeBSD__) || defined(__FreeBSD) +#define DUK_F_FREEBSD +#endif + +/* Orbis (PS4) variant */ +#if defined(DUK_F_FREEBSD) && defined(__ORBIS__) +#define DUK_F_ORBIS +#endif + +/* OpenBSD */ +#if defined(__OpenBSD__) || defined(__OpenBSD) +#define DUK_F_OPENBSD +#endif + +/* NetBSD */ +#if defined(__NetBSD__) || defined(__NetBSD) +#define DUK_F_NETBSD +#endif + +/* BSD variant */ +#if defined(DUK_F_FREEBSD) || defined(DUK_F_NETBSD) || defined(DUK_F_OPENBSD) || \ + defined(__bsdi__) || defined(__DragonFly__) +#define DUK_F_BSD +#endif + +/* Atari ST TOS. __TOS__ defined by PureC. No platform define in VBCC + * apparently, so to use with VBCC user must define __TOS__ manually. + */ +#if defined(__TOS__) +#define DUK_F_TOS +#endif + +/* Motorola 68K. Not defined by VBCC, so user must define one of these + * manually when using VBCC. + */ +#if defined(__m68k__) || defined(M68000) || defined(__MC68K__) +#define DUK_F_M68K +#endif + +/* AmigaOS. Neither AMIGA nor __amigaos__ is defined on VBCC, so user must + * define 'AMIGA' manually when using VBCC. + */ +#if defined(AMIGA) || defined(__amigaos__) +#define DUK_F_AMIGAOS +#endif + +/* PowerPC */ +#if defined(__powerpc) || defined(__powerpc__) || defined(__PPC__) +#define DUK_F_PPC +#if defined(__PPC64__) || defined(__LP64__) || defined(_LP64) +#define DUK_F_PPC64 +#else +#define DUK_F_PPC32 +#endif +#endif + +/* Durango (Xbox One) */ +#if defined(_DURANGO) || defined(_XBOX_ONE) +#define DUK_F_DURANGO +#endif + +/* Windows, both 32-bit and 64-bit */ +#if defined(_WIN32) || defined(WIN32) || defined(_WIN64) || defined(WIN64) || \ + defined(__WIN32__) || defined(__TOS_WIN__) || defined(__WINDOWS__) +#define DUK_F_WINDOWS +#if defined(_WIN64) || defined(WIN64) +#define DUK_F_WIN64 +#else +#define DUK_F_WIN32 +#endif +#endif + +/* Flash player (e.g. Crossbridge) */ +#if defined(__FLASHPLAYER__) +#define DUK_F_FLASHPLAYER +#endif + +/* QNX */ +#if defined(__QNX__) +#define DUK_F_QNX +#endif + +/* TI-Nspire (using Ndless) */ +#if defined(_TINSPIRE) +#define DUK_F_TINSPIRE +#endif + +/* Emscripten (provided explicitly by user), improve if possible */ +#if defined(EMSCRIPTEN) +#define DUK_F_EMSCRIPTEN +#endif + +/* BCC (Bruce's C compiler): this is a "torture target" for compilation */ +#if defined(__BCC__) || defined(__BCC_VERSION__) +#define DUK_F_BCC +#endif + +#if defined(ANDROID) || defined(__ANDROID__) +#define DUK_F_ANDROID +#endif + +/* Linux */ +#if defined(__linux) || defined(__linux__) || defined(linux) +#define DUK_F_LINUX +#endif + +/* illumos / Solaris */ +#if defined(__sun) && defined(__SVR4) +#define DUK_F_SUN +#if defined(__SUNPRO_C) && (__SUNPRO_C < 0x550) +#define DUK_F_OLD_SOLARIS +/* Defines _ILP32 / _LP64 required by DUK_F_X86/DUK_F_X64. Platforms + * are processed before architectures, so this happens before the + * DUK_F_X86/DUK_F_X64 detection is emitted. + */ +#include +#endif +#endif + +/* AIX */ +#if defined(_AIX) +/* defined(__xlc__) || defined(__IBMC__): works but too wide */ +#define DUK_F_AIX +#endif + +/* HPUX */ +#if defined(__hpux) +#define DUK_F_HPUX +#if defined(__ia64) +#define DUK_F_HPUX_ITANIUM +#endif +#endif + +/* POSIX */ +#if defined(__posix) +#define DUK_F_POSIX +#endif + +/* Cygwin */ +#if defined(__CYGWIN__) +#define DUK_F_CYGWIN +#endif + +/* Generic Unix (includes Cygwin) */ +#if defined(__unix) || defined(__unix__) || defined(unix) || \ + defined(DUK_F_LINUX) || defined(DUK_F_BSD) +#define DUK_F_UNIX +#endif + +/* Intel x86 (32-bit), x64 (64-bit) or x32 (64-bit but 32-bit pointers), + * define only one of DUK_F_X86, DUK_F_X64, DUK_F_X32. + * https://sites.google.com/site/x32abi/ + * + * With DUK_F_OLD_SOLARIS the header must be included + * before this. + */ +#if defined(__amd64__) || defined(__amd64) || \ + defined(__x86_64__) || defined(__x86_64) || \ + defined(_M_X64) || defined(_M_AMD64) +#if defined(__ILP32__) || defined(_ILP32) +#define DUK_F_X32 +#else +#define DUK_F_X64 +#endif +#elif defined(i386) || defined(__i386) || defined(__i386__) || \ + defined(__i486__) || defined(__i586__) || defined(__i686__) || \ + defined(__IA32__) || defined(_M_IX86) || defined(__X86__) || \ + defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) +#if defined(__LP64__) || defined(_LP64) +/* This should not really happen, but would indicate x64. */ +#define DUK_F_X64 +#else +#define DUK_F_X86 +#endif +#endif + +/* ARM */ +#if defined(__arm__) || defined(__thumb__) || defined(_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__) +#define DUK_F_ARM +#if defined(__LP64__) || defined(_LP64) || defined(__arm64) || defined(__arm64__) || defined(_M_ARM64) || defined(__aarch64__) +#define DUK_F_ARM64 +#else +#define DUK_F_ARM32 +#endif +#endif + +/* MIPS. Related defines: __MIPSEB__, __MIPSEL__, __mips_isa_rev, __LP64__ */ +#if defined(__mips__) || defined(mips) || defined(_MIPS_ISA) || \ + defined(_R3000) || defined(_R4000) || defined(_R5900) || \ + defined(_MIPS_ISA_MIPS1) || defined(_MIPS_ISA_MIPS2) || \ + defined(_MIPS_ISA_MIPS3) || defined(_MIPS_ISA_MIPS4) || \ + defined(__mips) || defined(__MIPS__) +#define DUK_F_MIPS +#if defined(__LP64__) || defined(_LP64) || defined(__mips64) || \ + defined(__mips64__) || defined(__mips_n64) +#define DUK_F_MIPS64 +#else +#define DUK_F_MIPS32 +#endif +#endif + +/* SPARC */ +#if defined(sparc) || defined(__sparc) || defined(__sparc__) +#define DUK_F_SPARC +#if defined(__LP64__) || defined(_LP64) +#define DUK_F_SPARC64 +#else +#define DUK_F_SPARC32 +#endif +#endif + +/* RISC-V, https://github.com/riscv/riscv-toolchain-conventions#cc-preprocessor-definitions */ +#if defined(__riscv) +#define DUK_F_RISCV +#if defined(__riscv_xlen) +#if (__riscv_xlen == 32) +#define DUK_F_RISCV32 +#elif (__riscv_xlen == 64) +#define DUK_F_RISCV64 +#else +#error __riscv_xlen has unsupported value (not 32 or 64) +#endif +#else +#error __riscv defined without __riscv_xlen +#endif +#endif /* __riscv */ + +/* SuperH */ +#if defined(__sh__) || \ + defined(__sh1__) || defined(__SH1__) || \ + defined(__sh2__) || defined(__SH2__) || \ + defined(__sh3__) || defined(__SH3__) || \ + defined(__sh4__) || defined(__SH4__) || \ + defined(__sh5__) || defined(__SH5__) +#define DUK_F_SUPERH +#endif + +/* Clang */ +#if defined(__clang__) +#define DUK_F_CLANG +#endif + +/* C++ */ +#undef DUK_F_CPP +#if defined(__cplusplus) +#define DUK_F_CPP +#endif + +/* C99 or above */ +#undef DUK_F_C99 +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +#define DUK_F_C99 +#endif + +/* C++11 or above */ +#undef DUK_F_CPP11 +#if defined(__cplusplus) && (__cplusplus >= 201103L) +#define DUK_F_CPP11 +#endif + +/* GCC. Clang also defines __GNUC__ so don't detect GCC if using Clang. */ +#if defined(__GNUC__) && !defined(__clang__) && !defined(DUK_F_CLANG) +#define DUK_F_GCC +#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +/* Convenience, e.g. gcc 4.5.1 == 40501; http://stackoverflow.com/questions/6031819/emulating-gccs-builtin-unreachable */ +#define DUK_F_GCC_VERSION (__GNUC__ * 10000L + __GNUC_MINOR__ * 100L + __GNUC_PATCHLEVEL__) +#else +#error cannot figure out gcc version +#endif +#endif + +/* MinGW. Also GCC flags (DUK_F_GCC) are enabled now. */ +#if defined(__MINGW32__) || defined(__MINGW64__) +#define DUK_F_MINGW +#endif + +/* MSVC */ +#if defined(_MSC_VER) +/* MSVC preprocessor defines: http://msdn.microsoft.com/en-us/library/b0084kay.aspx + * _MSC_FULL_VER includes the build number, but it has at least two formats, see e.g. + * BOOST_MSVC_FULL_VER in http://www.boost.org/doc/libs/1_52_0/boost/config/compiler/visualc.hpp + */ +#define DUK_F_MSVC +#if defined(_MSC_FULL_VER) +#if (_MSC_FULL_VER > 100000000) +#define DUK_F_MSVC_FULL_VER _MSC_FULL_VER +#else +#define DUK_F_MSCV_FULL_VER (_MSC_FULL_VER * 10) +#endif +#endif +#endif /* _MSC_VER */ + +/* TinyC */ +#if defined(__TINYC__) +/* http://bellard.org/tcc/tcc-doc.html#SEC9 */ +#define DUK_F_TINYC +#endif + +/* VBCC */ +#if defined(__VBCC__) +#define DUK_F_VBCC +#endif + +/* Atari Mint */ +#if defined(__MINT__) +#define DUK_F_MINT +#endif + +/* + * Platform autodetection + */ + +/* Workaround for older C++ compilers before including , + * see e.g.: https://sourceware.org/bugzilla/show_bug.cgi?id=15366 + */ +#if defined(__cplusplus) && !defined(__STDC_LIMIT_MACROS) +#define __STDC_LIMIT_MACROS +#endif +#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) +#define __STDC_CONSTANT_MACROS +#endif + +#if defined(DUK_F_APPLE) +/* --- Mac OSX, iPhone, Darwin --- */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include +#include + +/* http://stackoverflow.com/questions/5919996/how-to-detect-reliably-mac-os-x-ios-linux-windows-in-c-preprocessor */ +#if TARGET_IPHONE_SIMULATOR +#define DUK_USE_OS_STRING "iphone-sim" +#elif TARGET_OS_IPHONE +#define DUK_USE_OS_STRING "iphone" +#elif TARGET_OS_MAC +#define DUK_USE_OS_STRING "osx" +#else +#define DUK_USE_OS_STRING "osx-unknown" +#endif + +/* Use _setjmp() on Apple by default, see GH-55. */ +#define DUK_JMPBUF_TYPE jmp_buf +#define DUK_SETJMP(jb) _setjmp((jb)) +#define DUK_LONGJMP(jb) _longjmp((jb), 1) +#elif defined(DUK_F_ORBIS) +/* --- Orbis --- */ +/* Orbis = PS4 */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_S +/* no parsing (not an error) */ +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "orbis" +#elif defined(DUK_F_OPENBSD) +/* --- OpenBSD --- */ +/* http://www.monkey.org/openbsd/archive/ports/0401/msg00089.html */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "openbsd" +#elif defined(DUK_F_BSD) +/* --- Generic BSD --- */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "bsd" +#elif defined(DUK_F_TOS) +/* --- Atari ST TOS --- */ +#define DUK_USE_DATE_NOW_TIME +#define DUK_USE_DATE_TZO_GMTIME +/* no parsing (not an error) */ +#define DUK_USE_DATE_FMT_STRFTIME +#include + +#define DUK_USE_OS_STRING "tos" + +/* TOS on M68K is always big endian. */ +#if !defined(DUK_USE_BYTEORDER) && defined(DUK_F_M68K) +#define DUK_USE_BYTEORDER 3 +#endif +#elif defined(DUK_F_AMIGAOS) +/* --- AmigaOS --- */ +#if defined(DUK_F_M68K) +/* AmigaOS on M68k */ +#define DUK_USE_DATE_NOW_TIME +#define DUK_USE_DATE_TZO_GMTIME +/* no parsing (not an error) */ +#define DUK_USE_DATE_FMT_STRFTIME +#include +#elif defined(DUK_F_PPC) +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#if !defined(UINTPTR_MAX) +#define UINTPTR_MAX UINT_MAX +#endif +#else +#error AmigaOS but not M68K/PPC, not supported now +#endif + +#define DUK_USE_OS_STRING "amigaos" + +/* AmigaOS on M68K or PPC is always big endian. */ +#if !defined(DUK_USE_BYTEORDER) && (defined(DUK_F_M68K) || defined(DUK_F_PPC)) +#define DUK_USE_BYTEORDER 3 +#endif +#elif defined(DUK_F_DURANGO) +/* --- Durango (XboxOne) --- */ +/* Durango = XboxOne + * Configuration is nearly identical to Windows, except for + * DUK_USE_DATE_TZO_WINDOWS. + */ + +/* Initial fix: disable secure CRT related warnings when compiling Duktape + * itself (must be defined before including Windows headers). Don't define + * for user code including duktape.h. + */ +#if defined(DUK_COMPILING_DUKTAPE) && !defined(_CRT_SECURE_NO_WARNINGS) +#define _CRT_SECURE_NO_WARNINGS +#endif + +/* MSVC does not have sys/param.h */ +#define DUK_USE_DATE_NOW_WINDOWS +#define DUK_USE_DATE_TZO_WINDOWS_NO_DST +/* Note: PRS and FMT are intentionally left undefined for now. This means + * there is no platform specific date parsing/formatting but there is still + * the ISO 8601 standard format. + */ +#if defined(DUK_COMPILING_DUKTAPE) +/* Only include when compiling Duktape to avoid polluting application build + * with a lot of unnecessary defines. + */ +#include +#endif + +#define DUK_USE_OS_STRING "durango" + +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif +#elif defined(DUK_F_WINDOWS) +/* --- Windows --- */ +/* Windows version can't obviously be determined at compile time, + * but _WIN32_WINNT indicates the minimum version targeted: + * - https://msdn.microsoft.com/en-us/library/6sehtctf.aspx + */ + +/* Initial fix: disable secure CRT related warnings when compiling Duktape + * itself (must be defined before including Windows headers). Don't define + * for user code including duktape.h. + */ +#if defined(DUK_COMPILING_DUKTAPE) && !defined(_CRT_SECURE_NO_WARNINGS) +#define _CRT_SECURE_NO_WARNINGS +#endif + +/* Windows 32-bit and 64-bit are currently the same. */ +/* MSVC does not have sys/param.h */ + +#if defined(DUK_COMPILING_DUKTAPE) +/* Only include when compiling Duktape to avoid polluting application build + * with a lot of unnecessary defines. + */ +#include +#endif + +/* GetSystemTimePreciseAsFileTime() available from Windows 8: + * https://msdn.microsoft.com/en-us/library/windows/desktop/hh706895(v=vs.85).aspx + */ +#if defined(DUK_USE_DATE_NOW_WINDOWS_SUBMS) || defined(DUK_USE_DATE_NOW_WINDOWS) +/* User forced provider. */ +#else +#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602) +#define DUK_USE_DATE_NOW_WINDOWS_SUBMS +#else +#define DUK_USE_DATE_NOW_WINDOWS +#endif +#endif + +#define DUK_USE_DATE_TZO_WINDOWS + +/* Note: PRS and FMT are intentionally left undefined for now. This means + * there is no platform specific date parsing/formatting but there is still + * the ISO 8601 standard format. + */ + +/* QueryPerformanceCounter() may go backwards in Windows XP, so enable for + * Vista and later: https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx#qpc_support_in_windows_versions + */ +#if !defined(DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC) && \ + defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) +#define DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC +#endif + +#define DUK_USE_OS_STRING "windows" + +/* On Windows, assume we're little endian. Even Itanium which has a + * configurable endianness runs little endian in Windows. + */ +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif +#elif defined(DUK_F_FLASHPLAYER) +/* --- Flashplayer (Crossbridge) --- */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "flashplayer" + +#if !defined(DUK_USE_BYTEORDER) && defined(DUK_F_FLASHPLAYER) +#define DUK_USE_BYTEORDER 1 +#endif +#elif defined(DUK_F_QNX) +/* --- QNX --- */ +#if defined(DUK_F_QNX) && defined(DUK_COMPILING_DUKTAPE) +/* See: /opt/qnx650/target/qnx6/usr/include/sys/platform.h */ +#define _XOPEN_SOURCE 600 +#define _POSIX_C_SOURCE 200112L +#endif + +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "qnx" +#elif defined(DUK_F_TINSPIRE) +/* --- TI-Nspire --- */ +#if defined(DUK_COMPILING_DUKTAPE) && !defined(_XOPEN_SOURCE) +#define _XOPEN_SOURCE /* e.g. strptime */ +#endif + +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "tinspire" +#elif defined(DUK_F_EMSCRIPTEN) +/* --- Emscripten --- */ +#if defined(DUK_COMPILING_DUKTAPE) +#if !defined(_POSIX_C_SOURCE) +#define _POSIX_C_SOURCE 200809L +#endif +#if !defined(_GNU_SOURCE) +#define _GNU_SOURCE /* e.g. getdate_r */ +#endif +#if !defined(_XOPEN_SOURCE) +#define _XOPEN_SOURCE /* e.g. strptime */ +#endif +#endif /* DUK_COMPILING_DUKTAPE */ + +#include +#if defined(DUK_F_BCC) +/* no endian.h */ +#else +#include +#endif /* DUK_F_BCC */ +#include +#include +#include +#include + +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME + +#define DUK_USE_OS_STRING "emscripten" +#elif defined(DUK_F_ANDROID) +/* --- Android --- */ +#if defined(DUK_COMPILING_DUKTAPE) +#if !defined(_POSIX_C_SOURCE) +#define _POSIX_C_SOURCE 200809L +#endif +#if !defined(_GNU_SOURCE) +#define _GNU_SOURCE /* e.g. getdate_r */ +#endif +#if !defined(_XOPEN_SOURCE) +#define _XOPEN_SOURCE /* e.g. strptime */ +#endif +#endif /* DUK_COMPILING_DUKTAPE */ + +#include +#if defined(DUK_F_BCC) +/* no endian.h or stdint.h */ +#else +#include +#include +#endif /* DUK_F_BCC */ +#include +#include +#include + +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME + +#if 0 /* XXX: safe condition? */ +#define DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME +#endif + +#define DUK_USE_OS_STRING "android" +#elif defined(DUK_F_LINUX) +/* --- Linux --- */ +#if defined(DUK_COMPILING_DUKTAPE) +#if !defined(_POSIX_C_SOURCE) +#define _POSIX_C_SOURCE 200809L +#endif +#if !defined(_GNU_SOURCE) +#define _GNU_SOURCE /* e.g. getdate_r */ +#endif +#if !defined(_XOPEN_SOURCE) +#define _XOPEN_SOURCE /* e.g. strptime */ +#endif +#endif /* DUK_COMPILING_DUKTAPE */ + +#include +#if defined(DUK_F_BCC) +/* no endian.h or stdint.h */ +#else +#include +#include +#endif /* DUK_F_BCC */ +#include +#include +#include + +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME + +#if 0 /* XXX: safe condition? */ +#define DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME +#endif + +#define DUK_USE_OS_STRING "linux" +#elif defined(DUK_F_SUN) +/* --- Solaris --- */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME + +#include +#if defined(DUK_F_OLD_SOLARIS) +/* Old Solaris with no endian.h, stdint.h */ +#define DUK_F_NO_STDINT_H +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 3 +#endif +#else /* DUK_F_OLD_SOLARIS */ +#include +#endif /* DUK_F_OLD_SOLARIS */ + +#include +#include +#include + +#define DUK_USE_OS_STRING "solaris" +#elif defined(DUK_F_AIX) +/* --- AIX --- */ +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 3 +#endif +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include + +#define DUK_USE_OS_STRING "aix" +#elif defined(DUK_F_HPUX) +/* --- HPUX --- */ +#define DUK_F_NO_STDINT_H +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 3 +#endif +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include + +#define DUK_USE_OS_STRING "hpux" +#elif defined(DUK_F_POSIX) +/* --- Generic POSIX --- */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include +#include + +#define DUK_USE_OS_STRING "posix" +#elif defined(DUK_F_CYGWIN) +/* --- Cygwin --- */ +/* don't use strptime() for now */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#include +#include +#include + +#define DUK_JMPBUF_TYPE jmp_buf +#define DUK_SETJMP(jb) _setjmp((jb)) +#define DUK_LONGJMP(jb) _longjmp((jb), 1) + +#define DUK_USE_OS_STRING "windows" +#elif defined(DUK_F_UNIX) +/* --- Generic UNIX --- */ +#define DUK_USE_DATE_NOW_GETTIMEOFDAY +#define DUK_USE_DATE_TZO_GMTIME_R +#define DUK_USE_DATE_PRS_STRPTIME +#define DUK_USE_DATE_FMT_STRFTIME +#include +#include +#define DUK_USE_OS_STRING "unknown" +#else +/* --- Generic fallback --- */ +/* The most portable current time provider is time(), but it only has a + * one second resolution. + */ +#define DUK_USE_DATE_NOW_TIME + +/* The most portable way to figure out local time offset is gmtime(), + * but it's not thread safe so use with caution. + */ +#define DUK_USE_DATE_TZO_GMTIME + +/* Avoid custom date parsing and formatting for portability. */ +#undef DUK_USE_DATE_PRS_STRPTIME +#undef DUK_USE_DATE_FMT_STRFTIME + +/* Rely on C89 headers only; time.h must be here. */ +#include + +#define DUK_USE_OS_STRING "unknown" +#endif /* autodetect platform */ + +/* Shared includes: C89 */ +#include +#include +#include +#include /* varargs */ +#include +#include /* e.g. ptrdiff_t */ +#include +#include + +/* date.h is omitted, and included per platform */ + +/* Shared includes: stdint.h is C99 */ +#if defined(DUK_F_NO_STDINT_H) +/* stdint.h not available */ +#else +/* Technically C99 (C++11) but found in many systems. On some systems + * __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS must be defined before + * including stdint.h (see above). + */ +#include +#endif + +/* is only included if needed, based on DUK_USE_xxx flags. */ + +/* + * Architecture autodetection + */ + +#if defined(DUK_F_X86) +/* --- x86 --- */ +#define DUK_USE_ARCH_STRING "x86" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif + +#define DUK_USE_PACKED_TVAL + +/* FreeBSD, -m32, and clang prior to 5.0 has union aliasing issues which + * break duk_tval copying. Disable packed duk_tval automatically. + */ +#if defined(DUK_F_FREEBSD) && defined(DUK_F_X86) && \ + defined(__clang__) && defined(__clang_major__) && (__clang_major__ < 5) +#undef DUK_USE_PACKED_TVAL +#endif +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_X64) +/* --- x64 --- */ +#define DUK_USE_ARCH_STRING "x64" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_X32) +/* --- x32 --- */ +#define DUK_USE_ARCH_STRING "x32" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_ARM32) +/* --- ARM 32-bit --- */ +#define DUK_USE_ARCH_STRING "arm32" +/* Byte order varies, so rely on autodetect. */ +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_ARM64) +/* --- ARM 64-bit --- */ +#define DUK_USE_ARCH_STRING "arm64" +/* Byte order varies, so rely on autodetect. */ +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_MIPS32) +/* --- MIPS 32-bit --- */ +#define DUK_USE_ARCH_STRING "mips32" +/* MIPS byte order varies so rely on autodetection. */ +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_MIPS64) +/* --- MIPS 64-bit --- */ +#define DUK_USE_ARCH_STRING "mips64" +/* MIPS byte order varies so rely on autodetection. */ +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_PPC32) +/* --- PowerPC 32-bit --- */ +#define DUK_USE_ARCH_STRING "ppc32" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 3 +#endif +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_PPC64) +/* --- PowerPC 64-bit --- */ +#define DUK_USE_ARCH_STRING "ppc64" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 3 +#endif +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_SPARC32) +/* --- SPARC 32-bit --- */ +#define DUK_USE_ARCH_STRING "sparc32" +/* SPARC byte order varies so rely on autodetection. */ +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_SPARC64) +/* --- SPARC 64-bit --- */ +#define DUK_USE_ARCH_STRING "sparc64" +/* SPARC byte order varies so rely on autodetection. */ +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_RISCV32) +/* --- RISC-V 32-bit --- */ +#define DUK_USE_ARCH_STRING "riscv32" +#define DUK_USE_BYTEORDER 1 +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_RISCV64) +/* --- RISC-V 64-bit --- */ +#define DUK_USE_ARCH_STRING "riscv64" +#define DUK_USE_BYTEORDER 1 +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_SUPERH) +/* --- SuperH --- */ +#define DUK_USE_ARCH_STRING "sh" +/* Byte order varies, rely on autodetection. */ +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_M68K) +/* --- Motorola 68k --- */ +#define DUK_USE_ARCH_STRING "m68k" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 3 +#endif +#define DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#elif defined(DUK_F_EMSCRIPTEN) +/* --- Emscripten --- */ +#define DUK_USE_ARCH_STRING "emscripten" +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif +#undef DUK_USE_PACKED_TVAL +#define DUK_F_PACKED_TVAL_PROVIDED +#else +/* --- Generic --- */ +/* These are necessary wild guesses. */ +#define DUK_USE_ARCH_STRING "generic" +/* Rely on autodetection for byte order, alignment, and packed tval. */ +#endif /* autodetect architecture */ + +/* + * Compiler autodetection + */ + +#if defined(DUK_F_CLANG) +/* --- Clang --- */ +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +/* C99 / C++11 and above: rely on va_copy() which is required. */ +#define DUK_VA_COPY(dest,src) va_copy(dest,src) +#else +/* Clang: assume we have __va_copy() in non-C99 mode. */ +#define DUK_VA_COPY(dest,src) __va_copy(dest,src) +#endif + +#define DUK_NORETURN(decl) decl __attribute__((noreturn)) + +#if defined(__clang__) && defined(__has_builtin) +#if __has_builtin(__builtin_unreachable) +#define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0) +#endif +#endif + +#define DUK_USE_BRANCH_HINTS +#define DUK_LIKELY(x) __builtin_expect((x), 1) +#define DUK_UNLIKELY(x) __builtin_expect((x), 0) +#if defined(__clang__) && defined(__has_builtin) +#if __has_builtin(__builtin_unpredictable) +#define DUK_UNPREDICTABLE(x) __builtin_unpredictable((x)) +#endif +#endif + +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +#define DUK_NOINLINE __attribute__((noinline)) +#define DUK_INLINE inline +#define DUK_ALWAYS_INLINE inline __attribute__((always_inline)) +#endif + +/* DUK_HOT */ +/* DUK_COLD */ + +#if defined(DUK_F_DLL_BUILD) && defined(DUK_F_WINDOWS) +/* MSVC dllexport/dllimport: appropriate __declspec depends on whether we're + * compiling Duktape or the application. + */ +#if defined(DUK_COMPILING_DUKTAPE) +#define DUK_EXTERNAL_DECL extern __declspec(dllexport) +#define DUK_EXTERNAL __declspec(dllexport) +#else +#define DUK_EXTERNAL_DECL extern __declspec(dllimport) +#define DUK_EXTERNAL should_not_happen +#endif +#if defined(DUK_SINGLE_FILE) +#define DUK_INTERNAL_DECL static +#define DUK_INTERNAL static +#else +#define DUK_INTERNAL_DECL extern +#define DUK_INTERNAL /*empty*/ +#endif +#define DUK_LOCAL_DECL static +#define DUK_LOCAL static +#else +#define DUK_EXTERNAL_DECL __attribute__ ((visibility("default"))) extern +#define DUK_EXTERNAL __attribute__ ((visibility("default"))) +#if defined(DUK_SINGLE_FILE) +#if (defined(DUK_F_GCC_VERSION) && DUK_F_GCC_VERSION >= 30101) || defined(DUK_F_CLANG) +/* Minimize warnings for unused internal functions with GCC >= 3.1.1 and + * Clang. Based on documentation it should suffice to have the attribute + * in the declaration only, but in practice some warnings are generated unless + * the attribute is also applied to the definition. + */ +#define DUK_INTERNAL_DECL static __attribute__ ((unused)) +#define DUK_INTERNAL static __attribute__ ((unused)) +#else +#define DUK_INTERNAL_DECL static +#define DUK_INTERNAL static +#endif +#else +#if (defined(DUK_F_GCC_VERSION) && DUK_F_GCC_VERSION >= 30101) || defined(DUK_F_CLANG) +#define DUK_INTERNAL_DECL __attribute__ ((visibility("hidden"))) __attribute__ ((unused)) extern +#define DUK_INTERNAL __attribute__ ((visibility("hidden"))) __attribute__ ((unused)) +#else +#define DUK_INTERNAL_DECL __attribute__ ((visibility("hidden"))) extern +#define DUK_INTERNAL __attribute__ ((visibility("hidden"))) +#endif +#endif +#define DUK_LOCAL_DECL static +#define DUK_LOCAL static +#endif + +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "clang" +#else +#define DUK_USE_COMPILER_STRING "clang" +#endif + +#undef DUK_USE_VARIADIC_MACROS +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +#define DUK_USE_VARIADIC_MACROS +#endif + +#define DUK_USE_UNION_INITIALIZERS + +#undef DUK_USE_FLEX_C99 +#undef DUK_USE_FLEX_ZEROSIZE +#undef DUK_USE_FLEX_ONESIZE +#if defined(DUK_F_C99) +#define DUK_USE_FLEX_C99 +#else +#define DUK_USE_FLEX_ZEROSIZE +#endif + +#define DUK_USE_CLANG_PRAGMAS +#define DUK_USE_PACK_CLANG_ATTR + +#if defined(__clang__) && defined(__has_builtin) +#if __has_builtin(__builtin_bswap64) +#define DUK_BSWAP64(x) ((duk_uint64_t) __builtin_bswap64((duk_uint64_t) (x))) +#endif +#if __has_builtin(__builtin_bswap32) +#define DUK_BSWAP32(x) ((duk_uint32_t) __builtin_bswap32((duk_uint32_t) (x))) +#endif +#if __has_builtin(__builtin_bswap16) +#define DUK_BSWAP16(x) ((duk_uint16_t) __builtin_bswap16((duk_uint16_t) (x))) +#endif +#endif +#elif defined(DUK_F_GCC) +/* --- GCC --- */ +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +/* C99 / C++11 and above: rely on va_copy() which is required. */ +#define DUK_VA_COPY(dest,src) va_copy(dest,src) +#else +/* GCC: assume we have __va_copy() in non-C99 mode. */ +#define DUK_VA_COPY(dest,src) __va_copy(dest,src) +#endif + +#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L) && (DUK_F_GCC_VERSION < 50000L) +/* Since gcc-2.5. + * + * Disabled temporarily in GCC 5+ because of an unresolved noreturn-related + * issue: https://github.com/svaarala/duktape/issues/2155. + */ +#define DUK_NORETURN(decl) decl __attribute__((noreturn)) +#endif + +#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40500L) +/* Since gcc-4.5. */ +#define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0) +#endif + +#define DUK_USE_BRANCH_HINTS +#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40500L) +/* GCC: test not very accurate; enable only in relatively recent builds + * because of bugs in gcc-4.4 (http://lists.debian.org/debian-gcc/2010/04/msg00000.html) + */ +#define DUK_LIKELY(x) __builtin_expect((x), 1) +#define DUK_UNLIKELY(x) __builtin_expect((x), 0) +#endif +/* XXX: equivalent of clang __builtin_unpredictable? */ + +#if (defined(DUK_F_C99) || defined(DUK_F_CPP11)) && \ + defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 30101) +#define DUK_NOINLINE __attribute__((noinline)) +#define DUK_INLINE inline +#define DUK_ALWAYS_INLINE inline __attribute__((always_inline)) +#endif + +#if (defined(DUK_F_C99) || defined(DUK_F_CPP11)) && \ + defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40300) +#define DUK_HOT __attribute__((hot)) +#define DUK_COLD __attribute__((cold)) +#endif + +#if defined(DUK_F_DLL_BUILD) && defined(DUK_F_WINDOWS) +/* MSVC dllexport/dllimport: appropriate __declspec depends on whether we're + * compiling Duktape or the application. + */ +#if defined(DUK_COMPILING_DUKTAPE) +#define DUK_EXTERNAL_DECL extern __declspec(dllexport) +#define DUK_EXTERNAL __declspec(dllexport) +#else +#define DUK_EXTERNAL_DECL extern __declspec(dllimport) +#define DUK_EXTERNAL should_not_happen +#endif +#if defined(DUK_SINGLE_FILE) +#define DUK_INTERNAL_DECL static +#define DUK_INTERNAL static +#else +#define DUK_INTERNAL_DECL extern +#define DUK_INTERNAL /*empty*/ +#endif +#define DUK_LOCAL_DECL static +#define DUK_LOCAL static +#elif defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40000) +#define DUK_EXTERNAL_DECL __attribute__ ((visibility("default"))) extern +#define DUK_EXTERNAL __attribute__ ((visibility("default"))) +#if defined(DUK_SINGLE_FILE) +#if (defined(DUK_F_GCC_VERSION) && DUK_F_GCC_VERSION >= 30101) || defined(DUK_F_CLANG) +/* Minimize warnings for unused internal functions with GCC >= 3.1.1 and + * Clang. Based on documentation it should suffice to have the attribute + * in the declaration only, but in practice some warnings are generated unless + * the attribute is also applied to the definition. + */ +#define DUK_INTERNAL_DECL static __attribute__ ((unused)) +#define DUK_INTERNAL static __attribute__ ((unused)) +#else +#define DUK_INTERNAL_DECL static +#define DUK_INTERNAL static +#endif +#else +#if (defined(DUK_F_GCC_VERSION) && DUK_F_GCC_VERSION >= 30101) || defined(DUK_F_CLANG) +#define DUK_INTERNAL_DECL __attribute__ ((visibility("hidden"))) __attribute__ ((unused)) extern +#define DUK_INTERNAL __attribute__ ((visibility("hidden"))) __attribute__ ((unused)) +#else +#define DUK_INTERNAL_DECL __attribute__ ((visibility("hidden"))) extern +#define DUK_INTERNAL __attribute__ ((visibility("hidden"))) +#endif +#endif +#define DUK_LOCAL_DECL static +#define DUK_LOCAL static +#endif + +#if defined(DUK_F_MINGW) +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "mingw++" +#else +#define DUK_USE_COMPILER_STRING "mingw" +#endif +#else +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "g++" +#else +#define DUK_USE_COMPILER_STRING "gcc" +#endif +#endif + +#undef DUK_USE_VARIADIC_MACROS +#if defined(DUK_F_C99) || (defined(DUK_F_CPP11) && defined(__GNUC__)) +#define DUK_USE_VARIADIC_MACROS +#endif + +#define DUK_USE_UNION_INITIALIZERS + +#undef DUK_USE_FLEX_C99 +#undef DUK_USE_FLEX_ZEROSIZE +#undef DUK_USE_FLEX_ONESIZE +#if defined(DUK_F_C99) +#define DUK_USE_FLEX_C99 +#else +#define DUK_USE_FLEX_ZEROSIZE +#endif + +/* Since 4.6 one can '#pragma GCC diagnostic push/pop'. */ +#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40600) +#define DUK_USE_GCC_PRAGMAS +#else +#undef DUK_USE_GCC_PRAGMAS +#endif + +#define DUK_USE_PACK_GCC_ATTR + +/* Availability varies based on platform (between GCC 4.4 and 4.8), and there + * are apparently some bugs in GCC 4.x. Check for GCC 5.0 before enabling + * these to be safe. + */ +#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 50000L) +#define DUK_BSWAP64(x) ((duk_uint64_t) __builtin_bswap64((duk_uint64_t) (x))) +#define DUK_BSWAP32(x) ((duk_uint32_t) __builtin_bswap32((duk_uint32_t) (x))) +#define DUK_BSWAP16(x) ((duk_uint16_t) __builtin_bswap16((duk_uint16_t) (x))) +#endif +#elif defined(DUK_F_MSVC) +/* --- MSVC --- */ +/* http://msdn.microsoft.com/en-us/library/aa235362(VS.60).aspx */ +#define DUK_NORETURN(decl) __declspec(noreturn) decl + +/* XXX: DUK_UNREACHABLE for msvc? */ + +#undef DUK_USE_BRANCH_HINTS + +/* XXX: DUK_LIKELY, DUK_UNLIKELY for msvc? */ +/* XXX: DUK_NOINLINE, DUK_INLINE, DUK_ALWAYS_INLINE for msvc? */ + +#if defined(DUK_F_DLL_BUILD) && defined(DUK_F_WINDOWS) +/* MSVC dllexport/dllimport: appropriate __declspec depends on whether we're + * compiling Duktape or the application. + */ +#if defined(DUK_COMPILING_DUKTAPE) +#define DUK_EXTERNAL_DECL extern __declspec(dllexport) +#define DUK_EXTERNAL __declspec(dllexport) +#else +#define DUK_EXTERNAL_DECL extern __declspec(dllimport) +#define DUK_EXTERNAL should_not_happen +#endif +#if defined(DUK_SINGLE_FILE) +#define DUK_INTERNAL_DECL static +#define DUK_INTERNAL static +#else +#define DUK_INTERNAL_DECL extern +#define DUK_INTERNAL /*empty*/ +#endif +#define DUK_LOCAL_DECL static +#define DUK_LOCAL static +#endif + +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "msvc++" +#else +#define DUK_USE_COMPILER_STRING "msvc" +#endif + +#undef DUK_USE_VARIADIC_MACROS +#if defined(DUK_F_C99) +#define DUK_USE_VARIADIC_MACROS +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) +/* VS2005+ should have variadic macros even when they're not C99. */ +#define DUK_USE_VARIADIC_MACROS +#endif + +#undef DUK_USE_UNION_INITIALIZERS +#if defined(_MSC_VER) && (_MSC_VER >= 1800) +/* VS2013+ supports union initializers but there's a bug involving union-inside-struct: + * https://connect.microsoft.com/VisualStudio/feedback/details/805981 + * The bug was fixed (at least) in VS2015 so check for VS2015 for now: + * https://blogs.msdn.microsoft.com/vcblog/2015/07/01/c-compiler-front-end-fixes-in-vs2015/ + * Manually tested using VS2013, CL reports 18.00.31101, so enable for VS2013 too. + */ +#define DUK_USE_UNION_INITIALIZERS +#endif + +#undef DUK_USE_FLEX_C99 +#undef DUK_USE_FLEX_ZEROSIZE +#undef DUK_USE_FLEX_ONESIZE +#if defined(DUK_F_C99) +#define DUK_USE_FLEX_C99 +#else +#define DUK_USE_FLEX_ZEROSIZE +#endif + +#undef DUK_USE_GCC_PRAGMAS + +#define DUK_USE_PACK_MSVC_PRAGMA + +/* These have been tested from VS2008 onwards; may work in older VS versions + * too but not enabled by default. + */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) +#define DUK_NOINLINE __declspec(noinline) +#define DUK_INLINE __inline +#define DUK_ALWAYS_INLINE __forceinline +#endif + +#if defined(_MSC_VER) && (_MSC_VER >= 1900) +#define DUK_SNPRINTF snprintf +#define DUK_VSNPRINTF vsnprintf +#else +/* (v)snprintf() is missing before MSVC 2015. Note that _(v)snprintf() does + * NOT NUL terminate on truncation, but Duktape code never assumes that. + * http://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010 + */ +#define DUK_SNPRINTF _snprintf +#define DUK_VSNPRINTF _vsnprintf +#endif + +/* Avoid warning when doing DUK_UNREF(some_function). */ +#if defined(_MSC_VER) && (_MSC_VER < 1500) +#pragma warning(disable: 4100 4101 4550 4551) +#define DUK_UNREF(x) +#else +#define DUK_UNREF(x) do { __pragma(warning(suppress:4100 4101 4550 4551)) (x); } while (0) +#endif + +/* Older versions of MSVC don't support the LL/ULL suffix. */ +#define DUK_U64_CONSTANT(x) x##ui64 +#define DUK_I64_CONSTANT(x) x##i64 +#elif defined(DUK_F_EMSCRIPTEN) +/* --- Emscripten --- */ +#define DUK_NORETURN(decl) decl __attribute__((noreturn)) + +#if defined(__clang__) && defined(__has_builtin) +#if __has_builtin(__builtin_unreachable) +#define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0) +#endif +#endif + +#define DUK_USE_BRANCH_HINTS +#define DUK_LIKELY(x) __builtin_expect((x), 1) +#define DUK_UNLIKELY(x) __builtin_expect((x), 0) +#if defined(__clang__) && defined(__has_builtin) +#if __has_builtin(__builtin_unpredictable) +#define DUK_UNPREDICTABLE(x) __builtin_unpredictable((x)) +#endif +#endif + +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +#define DUK_NOINLINE __attribute__((noinline)) +#define DUK_INLINE inline +#define DUK_ALWAYS_INLINE inline __attribute__((always_inline)) +#endif + +#define DUK_EXTERNAL_DECL __attribute__ ((visibility("default"))) extern +#define DUK_EXTERNAL __attribute__ ((visibility("default"))) +#if defined(DUK_SINGLE_FILE) +#if (defined(DUK_F_GCC_VERSION) && DUK_F_GCC_VERSION >= 30101) || defined(DUK_F_CLANG) +/* Minimize warnings for unused internal functions with GCC >= 3.1.1 and + * Clang. Based on documentation it should suffice to have the attribute + * in the declaration only, but in practice some warnings are generated unless + * the attribute is also applied to the definition. + */ +#define DUK_INTERNAL_DECL static __attribute__ ((unused)) +#define DUK_INTERNAL static __attribute__ ((unused)) +#else +#define DUK_INTERNAL_DECL static +#define DUK_INTERNAL static +#endif +#else +#if (defined(DUK_F_GCC_VERSION) && DUK_F_GCC_VERSION >= 30101) || defined(DUK_F_CLANG) +#define DUK_INTERNAL_DECL __attribute__ ((visibility("hidden"))) __attribute__ ((unused)) extern +#define DUK_INTERNAL __attribute__ ((visibility("hidden"))) __attribute__ ((unused)) +#else +#define DUK_INTERNAL_DECL __attribute__ ((visibility("hidden"))) extern +#define DUK_INTERNAL __attribute__ ((visibility("hidden"))) +#endif +#endif +#define DUK_LOCAL_DECL static +#define DUK_LOCAL static + +#define DUK_USE_COMPILER_STRING "emscripten" + +#undef DUK_USE_VARIADIC_MACROS +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +#define DUK_USE_VARIADIC_MACROS +#endif + +#define DUK_USE_UNION_INITIALIZERS + +#undef DUK_USE_FLEX_C99 +#undef DUK_USE_FLEX_ZEROSIZE +#undef DUK_USE_FLEX_ONESIZE +#if defined(DUK_F_C99) +#define DUK_USE_FLEX_C99 +#else +#define DUK_USE_FLEX_ZEROSIZE +#endif + +#undef DUK_USE_GCC_PRAGMAS +#define DUK_USE_PACK_CLANG_ATTR +#elif defined(DUK_F_TINYC) +/* --- TinyC --- */ +#undef DUK_USE_BRANCH_HINTS + +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "tinyc++" +#else +#define DUK_USE_COMPILER_STRING "tinyc" +#endif + +/* http://bellard.org/tcc/tcc-doc.html#SEC7 */ +#define DUK_USE_VARIADIC_MACROS + +#define DUK_USE_UNION_INITIALIZERS + +/* Most portable, wastes space */ +#define DUK_USE_FLEX_ONESIZE + +/* Most portable, potentially wastes space */ +#define DUK_USE_PACK_DUMMY_MEMBER +#elif defined(DUK_F_VBCC) +/* --- VBCC --- */ +#undef DUK_USE_BRANCH_HINTS + +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "vbcc-c++" +#else +#define DUK_USE_COMPILER_STRING "vbcc" +#endif + +#undef DUK_USE_VARIADIC_MACROS +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +#define DUK_USE_VARIADIC_MACROS +#endif + +/* VBCC supports C99 so check only for C99 for union initializer support. + * Designated union initializers would possibly work even without a C99 check. + */ +#undef DUK_USE_UNION_INITIALIZERS +#if defined(DUK_F_C99) +#define DUK_USE_UNION_INITIALIZERS +#endif + +#define DUK_USE_FLEX_ZEROSIZE +#define DUK_USE_PACK_DUMMY_MEMBER +#elif defined(DUK_F_BCC) +/* --- Bruce's C compiler --- */ +#undef DUK_USE_BRANCH_HINTS + +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "bcc++" +#else +#define DUK_USE_COMPILER_STRING "bcc" +#endif + +/* Most portable */ +#undef DUK_USE_VARIADIC_MACROS + +/* Most portable, wastes space */ +#undef DUK_USE_UNION_INITIALIZERS + +/* Most portable, wastes space */ +#define DUK_USE_FLEX_ONESIZE + +/* Most portable, potentially wastes space */ +#define DUK_USE_PACK_DUMMY_MEMBER + +/* BCC, assume we're on x86. */ +#if !defined(DUK_USE_BYTEORDER) +#define DUK_USE_BYTEORDER 1 +#endif +#else +/* --- Generic --- */ +#undef DUK_USE_BRANCH_HINTS + +#if defined(DUK_F_CPP) +#define DUK_USE_COMPILER_STRING "generic-c++" +#else +#define DUK_USE_COMPILER_STRING "generic" +#endif + +#undef DUK_USE_VARIADIC_MACROS +#if defined(DUK_F_C99) || defined(DUK_F_CPP11) +#define DUK_USE_VARIADIC_MACROS +#endif + +/* C++ doesn't have standard designated union initializers ({ .foo = 1 }). */ +#undef DUK_USE_UNION_INITIALIZERS +#if defined(DUK_F_C99) +#define DUK_USE_UNION_INITIALIZERS +#endif + +/* Most portable, wastes space */ +#define DUK_USE_FLEX_ONESIZE + +/* Most portable, potentially wastes space */ +#define DUK_USE_PACK_DUMMY_MEMBER +#endif /* autodetect compiler */ + +/* uclibc */ +#if defined(__UCLIBC__) +#define DUK_F_UCLIBC +#endif + +/* + * Wrapper typedefs and constants for integer types, also sanity check types. + * + * C99 typedefs are quite good but not always available, and we want to avoid + * forcibly redefining the C99 typedefs. So, there are Duktape wrappers for + * all C99 typedefs and Duktape code should only use these typedefs. Type + * detection when C99 is not supported is best effort and may end up detecting + * some types incorrectly. + * + * Pointer sizes are a portability problem: pointers to different types may + * have a different size and function pointers are very difficult to manage + * portably. + * + * http://en.wikipedia.org/wiki/C_data_types#Fixed-width_integer_types + * + * Note: there's an interesting corner case when trying to define minimum + * signed integer value constants which leads to the current workaround of + * defining e.g. -0x80000000 as (-0x7fffffffL - 1L). See doc/code-issues.txt + * for a longer discussion. + * + * Note: avoid typecasts and computations in macro integer constants as they + * can then no longer be used in macro relational expressions (such as + * #if DUK_SIZE_MAX < 0xffffffffUL). There is internal code which relies on + * being able to compare DUK_SIZE_MAX against a limit. + */ + +/* XXX: add feature options to force basic types from outside? */ + +#if !defined(INT_MAX) +#error INT_MAX not defined +#endif + +/* Check that architecture is two's complement, standard C allows e.g. + * INT_MIN to be -2**31+1 (instead of -2**31). + */ +#if defined(INT_MAX) && defined(INT_MIN) +#if INT_MAX != -(INT_MIN + 1) +#error platform does not seem complement of two +#endif +#else +#error cannot check complement of two +#endif + +/* Pointer size determination based on __WORDSIZE or architecture when + * that's not available. + */ +#if defined(DUK_F_X86) || defined(DUK_F_X32) || \ + defined(DUK_F_M68K) || defined(DUK_F_PPC32) || \ + defined(DUK_F_BCC) || \ + (defined(__WORDSIZE) && (__WORDSIZE == 32)) || \ + ((defined(DUK_F_OLD_SOLARIS) || defined(DUK_F_AIX) || \ + defined(DUK_F_HPUX)) && defined(_ILP32)) || \ + defined(DUK_F_ARM32) +#define DUK_F_32BIT_PTRS +#elif defined(DUK_F_X64) || \ + (defined(__WORDSIZE) && (__WORDSIZE == 64)) || \ + ((defined(DUK_F_OLD_SOLARIS) || defined(DUK_F_AIX) || \ + defined(DUK_F_HPUX)) && defined(_LP64)) || \ + defined(DUK_F_ARM64) +#define DUK_F_64BIT_PTRS +#else +/* not sure, not needed with C99 anyway */ +#endif + +/* Intermediate define for 'have inttypes.h' */ +#undef DUK_F_HAVE_INTTYPES +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !(defined(DUK_F_AMIGAOS) && defined(DUK_F_VBCC)) +/* vbcc + AmigaOS has C99 but no inttypes.h */ +#define DUK_F_HAVE_INTTYPES +#elif defined(__cplusplus) && (__cplusplus >= 201103L) +/* C++11 apparently ratified stdint.h */ +#define DUK_F_HAVE_INTTYPES +#endif + +/* Basic integer typedefs and limits, preferably from inttypes.h, otherwise + * through automatic detection. + */ +#if defined(DUK_F_HAVE_INTTYPES) +/* C99 or compatible */ + +#define DUK_F_HAVE_64BIT +#include + +typedef uint8_t duk_uint8_t; +typedef int8_t duk_int8_t; +typedef uint16_t duk_uint16_t; +typedef int16_t duk_int16_t; +typedef uint32_t duk_uint32_t; +typedef int32_t duk_int32_t; +typedef uint64_t duk_uint64_t; +typedef int64_t duk_int64_t; +typedef uint_least8_t duk_uint_least8_t; +typedef int_least8_t duk_int_least8_t; +typedef uint_least16_t duk_uint_least16_t; +typedef int_least16_t duk_int_least16_t; +typedef uint_least32_t duk_uint_least32_t; +typedef int_least32_t duk_int_least32_t; +typedef uint_least64_t duk_uint_least64_t; +typedef int_least64_t duk_int_least64_t; +typedef uint_fast8_t duk_uint_fast8_t; +typedef int_fast8_t duk_int_fast8_t; +typedef uint_fast16_t duk_uint_fast16_t; +typedef int_fast16_t duk_int_fast16_t; +typedef uint_fast32_t duk_uint_fast32_t; +typedef int_fast32_t duk_int_fast32_t; +typedef uint_fast64_t duk_uint_fast64_t; +typedef int_fast64_t duk_int_fast64_t; +typedef uintptr_t duk_uintptr_t; +typedef intptr_t duk_intptr_t; +typedef uintmax_t duk_uintmax_t; +typedef intmax_t duk_intmax_t; + +#define DUK_UINT8_MIN 0 +#define DUK_UINT8_MAX UINT8_MAX +#define DUK_INT8_MIN INT8_MIN +#define DUK_INT8_MAX INT8_MAX +#define DUK_UINT_LEAST8_MIN 0 +#define DUK_UINT_LEAST8_MAX UINT_LEAST8_MAX +#define DUK_INT_LEAST8_MIN INT_LEAST8_MIN +#define DUK_INT_LEAST8_MAX INT_LEAST8_MAX +#define DUK_UINT_FAST8_MIN 0 +#define DUK_UINT_FAST8_MAX UINT_FAST8_MAX +#define DUK_INT_FAST8_MIN INT_FAST8_MIN +#define DUK_INT_FAST8_MAX INT_FAST8_MAX +#define DUK_UINT16_MIN 0 +#define DUK_UINT16_MAX UINT16_MAX +#define DUK_INT16_MIN INT16_MIN +#define DUK_INT16_MAX INT16_MAX +#define DUK_UINT_LEAST16_MIN 0 +#define DUK_UINT_LEAST16_MAX UINT_LEAST16_MAX +#define DUK_INT_LEAST16_MIN INT_LEAST16_MIN +#define DUK_INT_LEAST16_MAX INT_LEAST16_MAX +#define DUK_UINT_FAST16_MIN 0 +#define DUK_UINT_FAST16_MAX UINT_FAST16_MAX +#define DUK_INT_FAST16_MIN INT_FAST16_MIN +#define DUK_INT_FAST16_MAX INT_FAST16_MAX +#define DUK_UINT32_MIN 0 +#define DUK_UINT32_MAX UINT32_MAX +#define DUK_INT32_MIN INT32_MIN +#define DUK_INT32_MAX INT32_MAX +#define DUK_UINT_LEAST32_MIN 0 +#define DUK_UINT_LEAST32_MAX UINT_LEAST32_MAX +#define DUK_INT_LEAST32_MIN INT_LEAST32_MIN +#define DUK_INT_LEAST32_MAX INT_LEAST32_MAX +#define DUK_UINT_FAST32_MIN 0 +#define DUK_UINT_FAST32_MAX UINT_FAST32_MAX +#define DUK_INT_FAST32_MIN INT_FAST32_MIN +#define DUK_INT_FAST32_MAX INT_FAST32_MAX +#define DUK_UINT64_MIN 0 +#define DUK_UINT64_MAX UINT64_MAX +#define DUK_INT64_MIN INT64_MIN +#define DUK_INT64_MAX INT64_MAX +#define DUK_UINT_LEAST64_MIN 0 +#define DUK_UINT_LEAST64_MAX UINT_LEAST64_MAX +#define DUK_INT_LEAST64_MIN INT_LEAST64_MIN +#define DUK_INT_LEAST64_MAX INT_LEAST64_MAX +#define DUK_UINT_FAST64_MIN 0 +#define DUK_UINT_FAST64_MAX UINT_FAST64_MAX +#define DUK_INT_FAST64_MIN INT_FAST64_MIN +#define DUK_INT_FAST64_MAX INT_FAST64_MAX + +#define DUK_UINTPTR_MIN 0 +#define DUK_UINTPTR_MAX UINTPTR_MAX +#define DUK_INTPTR_MIN INTPTR_MIN +#define DUK_INTPTR_MAX INTPTR_MAX + +#define DUK_UINTMAX_MIN 0 +#define DUK_UINTMAX_MAX UINTMAX_MAX +#define DUK_INTMAX_MIN INTMAX_MIN +#define DUK_INTMAX_MAX INTMAX_MAX + +#define DUK_SIZE_MIN 0 +#define DUK_SIZE_MAX SIZE_MAX +#undef DUK_SIZE_MAX_COMPUTED + +#else /* C99 types */ + +/* When C99 types are not available, we use heuristic detection to get + * the basic 8, 16, 32, and (possibly) 64 bit types. The fast/least + * types are then assumed to be exactly the same for now: these could + * be improved per platform but C99 types are very often now available. + * 64-bit types are not available on all platforms; this is OK at least + * on 32-bit platforms. + * + * This detection code is necessarily a bit hacky and can provide typedefs + * and defines that won't work correctly on some exotic platform. + */ + +#if (defined(CHAR_BIT) && (CHAR_BIT == 8)) || \ + (defined(UCHAR_MAX) && (UCHAR_MAX == 255)) +typedef unsigned char duk_uint8_t; +typedef signed char duk_int8_t; +#else +#error cannot detect 8-bit type +#endif + +#if defined(USHRT_MAX) && (USHRT_MAX == 65535UL) +typedef unsigned short duk_uint16_t; +typedef signed short duk_int16_t; +#elif defined(UINT_MAX) && (UINT_MAX == 65535UL) +/* On some platforms int is 16-bit but long is 32-bit (e.g. PureC) */ +typedef unsigned int duk_uint16_t; +typedef signed int duk_int16_t; +#else +#error cannot detect 16-bit type +#endif + +#if defined(UINT_MAX) && (UINT_MAX == 4294967295UL) +typedef unsigned int duk_uint32_t; +typedef signed int duk_int32_t; +#elif defined(ULONG_MAX) && (ULONG_MAX == 4294967295UL) +/* On some platforms int is 16-bit but long is 32-bit (e.g. PureC) */ +typedef unsigned long duk_uint32_t; +typedef signed long duk_int32_t; +#else +#error cannot detect 32-bit type +#endif + +/* 64-bit type detection is a bit tricky. + * + * ULLONG_MAX is a standard define. __LONG_LONG_MAX__ and __ULONG_LONG_MAX__ + * are used by at least GCC (even if system headers don't provide ULLONG_MAX). + * Some GCC variants may provide __LONG_LONG_MAX__ but not __ULONG_LONG_MAX__. + * + * ULL / LL constants are rejected / warned about by some compilers, even if + * the compiler has a 64-bit type and the compiler/system headers provide an + * unsupported constant (ULL/LL)! Try to avoid using ULL / LL constants. + * As a side effect we can only check that e.g. ULONG_MAX is larger than 32 + * bits but can't be sure it is exactly 64 bits. Self tests will catch such + * cases. + */ +#undef DUK_F_HAVE_64BIT +#if !defined(DUK_F_HAVE_64BIT) && defined(ULONG_MAX) +#if (ULONG_MAX > 4294967295UL) +#define DUK_F_HAVE_64BIT +typedef unsigned long duk_uint64_t; +typedef signed long duk_int64_t; +#endif +#endif +#if !defined(DUK_F_HAVE_64BIT) && defined(ULLONG_MAX) +#if (ULLONG_MAX > 4294967295UL) +#define DUK_F_HAVE_64BIT +typedef unsigned long long duk_uint64_t; +typedef signed long long duk_int64_t; +#endif +#endif +#if !defined(DUK_F_HAVE_64BIT) && defined(__ULONG_LONG_MAX__) +#if (__ULONG_LONG_MAX__ > 4294967295UL) +#define DUK_F_HAVE_64BIT +typedef unsigned long long duk_uint64_t; +typedef signed long long duk_int64_t; +#endif +#endif +#if !defined(DUK_F_HAVE_64BIT) && defined(__LONG_LONG_MAX__) +#if (__LONG_LONG_MAX__ > 2147483647L) +#define DUK_F_HAVE_64BIT +typedef unsigned long long duk_uint64_t; +typedef signed long long duk_int64_t; +#endif +#endif +#if !defined(DUK_F_HAVE_64BIT) && defined(DUK_F_MINGW) +#define DUK_F_HAVE_64BIT +typedef unsigned long duk_uint64_t; +typedef signed long duk_int64_t; +#endif +#if !defined(DUK_F_HAVE_64BIT) && defined(DUK_F_MSVC) +#define DUK_F_HAVE_64BIT +typedef unsigned __int64 duk_uint64_t; +typedef signed __int64 duk_int64_t; +#endif +#if !defined(DUK_F_HAVE_64BIT) +/* cannot detect 64-bit type, not always needed so don't error */ +#endif + +typedef duk_uint8_t duk_uint_least8_t; +typedef duk_int8_t duk_int_least8_t; +typedef duk_uint16_t duk_uint_least16_t; +typedef duk_int16_t duk_int_least16_t; +typedef duk_uint32_t duk_uint_least32_t; +typedef duk_int32_t duk_int_least32_t; +typedef duk_uint8_t duk_uint_fast8_t; +typedef duk_int8_t duk_int_fast8_t; +typedef duk_uint16_t duk_uint_fast16_t; +typedef duk_int16_t duk_int_fast16_t; +typedef duk_uint32_t duk_uint_fast32_t; +typedef duk_int32_t duk_int_fast32_t; +#if defined(DUK_F_HAVE_64BIT) +typedef duk_uint64_t duk_uint_least64_t; +typedef duk_int64_t duk_int_least64_t; +typedef duk_uint64_t duk_uint_fast64_t; +typedef duk_int64_t duk_int_fast64_t; +#endif +#if defined(DUK_F_HAVE_64BIT) +typedef duk_uint64_t duk_uintmax_t; +typedef duk_int64_t duk_intmax_t; +#else +typedef duk_uint32_t duk_uintmax_t; +typedef duk_int32_t duk_intmax_t; +#endif + +/* Note: the funny looking computations for signed minimum 16-bit, 32-bit, and + * 64-bit values are intentional as the obvious forms (e.g. -0x80000000L) are + * -not- portable. See code-issues.txt for a detailed discussion. + */ +#define DUK_UINT8_MIN 0UL +#define DUK_UINT8_MAX 0xffUL +#define DUK_INT8_MIN (-0x80L) +#define DUK_INT8_MAX 0x7fL +#define DUK_UINT_LEAST8_MIN 0UL +#define DUK_UINT_LEAST8_MAX 0xffUL +#define DUK_INT_LEAST8_MIN (-0x80L) +#define DUK_INT_LEAST8_MAX 0x7fL +#define DUK_UINT_FAST8_MIN 0UL +#define DUK_UINT_FAST8_MAX 0xffUL +#define DUK_INT_FAST8_MIN (-0x80L) +#define DUK_INT_FAST8_MAX 0x7fL +#define DUK_UINT16_MIN 0UL +#define DUK_UINT16_MAX 0xffffUL +#define DUK_INT16_MIN (-0x7fffL - 1L) +#define DUK_INT16_MAX 0x7fffL +#define DUK_UINT_LEAST16_MIN 0UL +#define DUK_UINT_LEAST16_MAX 0xffffUL +#define DUK_INT_LEAST16_MIN (-0x7fffL - 1L) +#define DUK_INT_LEAST16_MAX 0x7fffL +#define DUK_UINT_FAST16_MIN 0UL +#define DUK_UINT_FAST16_MAX 0xffffUL +#define DUK_INT_FAST16_MIN (-0x7fffL - 1L) +#define DUK_INT_FAST16_MAX 0x7fffL +#define DUK_UINT32_MIN 0UL +#define DUK_UINT32_MAX 0xffffffffUL +#define DUK_INT32_MIN (-0x7fffffffL - 1L) +#define DUK_INT32_MAX 0x7fffffffL +#define DUK_UINT_LEAST32_MIN 0UL +#define DUK_UINT_LEAST32_MAX 0xffffffffUL +#define DUK_INT_LEAST32_MIN (-0x7fffffffL - 1L) +#define DUK_INT_LEAST32_MAX 0x7fffffffL +#define DUK_UINT_FAST32_MIN 0UL +#define DUK_UINT_FAST32_MAX 0xffffffffUL +#define DUK_INT_FAST32_MIN (-0x7fffffffL - 1L) +#define DUK_INT_FAST32_MAX 0x7fffffffL + +/* 64-bit constants. Since LL / ULL constants are not always available, + * use computed values. These values can't be used in preprocessor + * comparisons; flag them as such. + */ +#if defined(DUK_F_HAVE_64BIT) +#define DUK_UINT64_MIN ((duk_uint64_t) 0) +#define DUK_UINT64_MAX ((duk_uint64_t) -1) +#define DUK_INT64_MIN ((duk_int64_t) (~(DUK_UINT64_MAX >> 1))) +#define DUK_INT64_MAX ((duk_int64_t) (DUK_UINT64_MAX >> 1)) +#define DUK_UINT_LEAST64_MIN DUK_UINT64_MIN +#define DUK_UINT_LEAST64_MAX DUK_UINT64_MAX +#define DUK_INT_LEAST64_MIN DUK_INT64_MIN +#define DUK_INT_LEAST64_MAX DUK_INT64_MAX +#define DUK_UINT_FAST64_MIN DUK_UINT64_MIN +#define DUK_UINT_FAST64_MAX DUK_UINT64_MAX +#define DUK_INT_FAST64_MIN DUK_INT64_MIN +#define DUK_INT_FAST64_MAX DUK_INT64_MAX +#define DUK_UINT64_MIN_COMPUTED +#define DUK_UINT64_MAX_COMPUTED +#define DUK_INT64_MIN_COMPUTED +#define DUK_INT64_MAX_COMPUTED +#define DUK_UINT_LEAST64_MIN_COMPUTED +#define DUK_UINT_LEAST64_MAX_COMPUTED +#define DUK_INT_LEAST64_MIN_COMPUTED +#define DUK_INT_LEAST64_MAX_COMPUTED +#define DUK_UINT_FAST64_MIN_COMPUTED +#define DUK_UINT_FAST64_MAX_COMPUTED +#define DUK_INT_FAST64_MIN_COMPUTED +#define DUK_INT_FAST64_MAX_COMPUTED +#endif + +#if defined(DUK_F_HAVE_64BIT) +#define DUK_UINTMAX_MIN DUK_UINT64_MIN +#define DUK_UINTMAX_MAX DUK_UINT64_MAX +#define DUK_INTMAX_MIN DUK_INT64_MIN +#define DUK_INTMAX_MAX DUK_INT64_MAX +#define DUK_UINTMAX_MIN_COMPUTED +#define DUK_UINTMAX_MAX_COMPUTED +#define DUK_INTMAX_MIN_COMPUTED +#define DUK_INTMAX_MAX_COMPUTED +#else +#define DUK_UINTMAX_MIN 0UL +#define DUK_UINTMAX_MAX 0xffffffffUL +#define DUK_INTMAX_MIN (-0x7fffffffL - 1L) +#define DUK_INTMAX_MAX 0x7fffffffL +#endif + +/* This detection is not very reliable. */ +#if defined(DUK_F_32BIT_PTRS) +typedef duk_int32_t duk_intptr_t; +typedef duk_uint32_t duk_uintptr_t; +#define DUK_UINTPTR_MIN DUK_UINT32_MIN +#define DUK_UINTPTR_MAX DUK_UINT32_MAX +#define DUK_INTPTR_MIN DUK_INT32_MIN +#define DUK_INTPTR_MAX DUK_INT32_MAX +#elif defined(DUK_F_64BIT_PTRS) && defined(DUK_F_HAVE_64BIT) +typedef duk_int64_t duk_intptr_t; +typedef duk_uint64_t duk_uintptr_t; +#define DUK_UINTPTR_MIN DUK_UINT64_MIN +#define DUK_UINTPTR_MAX DUK_UINT64_MAX +#define DUK_INTPTR_MIN DUK_INT64_MIN +#define DUK_INTPTR_MAX DUK_INT64_MAX +#define DUK_UINTPTR_MIN_COMPUTED +#define DUK_UINTPTR_MAX_COMPUTED +#define DUK_INTPTR_MIN_COMPUTED +#define DUK_INTPTR_MAX_COMPUTED +#else +#error cannot determine intptr type +#endif + +/* SIZE_MAX may be missing so use an approximate value for it. */ +#undef DUK_SIZE_MAX_COMPUTED +#if !defined(SIZE_MAX) +#define DUK_SIZE_MAX_COMPUTED +#define SIZE_MAX ((size_t) (-1)) +#endif +#define DUK_SIZE_MIN 0 +#define DUK_SIZE_MAX SIZE_MAX + +#endif /* C99 types */ + +/* A few types are assumed to always exist. */ +typedef size_t duk_size_t; +typedef ptrdiff_t duk_ptrdiff_t; + +/* The best type for an "all around int" in Duktape internals is "at least + * 32 bit signed integer" which is most convenient. Same for unsigned type. + * Prefer 'int' when large enough, as it is almost always a convenient type. + */ +#if defined(UINT_MAX) && (UINT_MAX >= 0xffffffffUL) +typedef int duk_int_t; +typedef unsigned int duk_uint_t; +#define DUK_INT_MIN INT_MIN +#define DUK_INT_MAX INT_MAX +#define DUK_UINT_MIN 0 +#define DUK_UINT_MAX UINT_MAX +#else +typedef duk_int_fast32_t duk_int_t; +typedef duk_uint_fast32_t duk_uint_t; +#define DUK_INT_MIN DUK_INT_FAST32_MIN +#define DUK_INT_MAX DUK_INT_FAST32_MAX +#define DUK_UINT_MIN DUK_UINT_FAST32_MIN +#define DUK_UINT_MAX DUK_UINT_FAST32_MAX +#endif + +/* Same as 'duk_int_t' but guaranteed to be a 'fast' variant if this + * distinction matters for the CPU. These types are used mainly in the + * executor where it might really matter. + */ +typedef duk_int_fast32_t duk_int_fast_t; +typedef duk_uint_fast32_t duk_uint_fast_t; +#define DUK_INT_FAST_MIN DUK_INT_FAST32_MIN +#define DUK_INT_FAST_MAX DUK_INT_FAST32_MAX +#define DUK_UINT_FAST_MIN DUK_UINT_FAST32_MIN +#define DUK_UINT_FAST_MAX DUK_UINT_FAST32_MAX + +/* Small integers (16 bits or more) can fall back to the 'int' type, but + * have a typedef so they are marked "small" explicitly. + */ +typedef int duk_small_int_t; +typedef unsigned int duk_small_uint_t; +#define DUK_SMALL_INT_MIN INT_MIN +#define DUK_SMALL_INT_MAX INT_MAX +#define DUK_SMALL_UINT_MIN 0 +#define DUK_SMALL_UINT_MAX UINT_MAX + +/* Fast variants of small integers, again for really fast paths like the + * executor. + */ +typedef duk_int_fast16_t duk_small_int_fast_t; +typedef duk_uint_fast16_t duk_small_uint_fast_t; +#define DUK_SMALL_INT_FAST_MIN DUK_INT_FAST16_MIN +#define DUK_SMALL_INT_FAST_MAX DUK_INT_FAST16_MAX +#define DUK_SMALL_UINT_FAST_MIN DUK_UINT_FAST16_MIN +#define DUK_SMALL_UINT_FAST_MAX DUK_UINT_FAST16_MAX + +/* Boolean values are represented with the platform 'unsigned int'. */ +typedef duk_small_uint_t duk_bool_t; +#define DUK_BOOL_MIN DUK_SMALL_UINT_MIN +#define DUK_BOOL_MAX DUK_SMALL_UINT_MAX + +/* Index values must have at least 32-bit signed range. */ +typedef duk_int_t duk_idx_t; +#define DUK_IDX_MIN DUK_INT_MIN +#define DUK_IDX_MAX DUK_INT_MAX + +/* Unsigned index variant. */ +typedef duk_uint_t duk_uidx_t; +#define DUK_UIDX_MIN DUK_UINT_MIN +#define DUK_UIDX_MAX DUK_UINT_MAX + +/* Array index values, could be exact 32 bits. + * Currently no need for signed duk_arridx_t. + */ +typedef duk_uint_t duk_uarridx_t; +#define DUK_UARRIDX_MIN DUK_UINT_MIN +#define DUK_UARRIDX_MAX DUK_UINT_MAX + +/* Duktape/C function return value, platform int is enough for now to + * represent 0, 1, or negative error code. Must be compatible with + * assigning truth values (e.g. duk_ret_t rc = (foo == bar);). + */ +typedef duk_small_int_t duk_ret_t; +#define DUK_RET_MIN DUK_SMALL_INT_MIN +#define DUK_RET_MAX DUK_SMALL_INT_MAX + +/* Error codes are represented with platform int. High bits are used + * for flags and such, so 32 bits are needed. + */ +typedef duk_int_t duk_errcode_t; +#define DUK_ERRCODE_MIN DUK_INT_MIN +#define DUK_ERRCODE_MAX DUK_INT_MAX + +/* Codepoint type. Must be 32 bits or more because it is used also for + * internal codepoints. The type is signed because negative codepoints + * are used as internal markers (e.g. to mark EOF or missing argument). + * (X)UTF-8/CESU-8 encode/decode take and return an unsigned variant to + * ensure duk_uint32_t casts back and forth nicely. Almost everything + * else uses the signed one. + */ +typedef duk_int_t duk_codepoint_t; +typedef duk_uint_t duk_ucodepoint_t; +#define DUK_CODEPOINT_MIN DUK_INT_MIN +#define DUK_CODEPOINT_MAX DUK_INT_MAX +#define DUK_UCODEPOINT_MIN DUK_UINT_MIN +#define DUK_UCODEPOINT_MAX DUK_UINT_MAX + +/* IEEE float/double typedef. */ +typedef float duk_float_t; +typedef double duk_double_t; + +/* We're generally assuming that we're working on a platform with a 32-bit + * address space. If DUK_SIZE_MAX is a typecast value (which is necessary + * if SIZE_MAX is missing), the check must be avoided because the + * preprocessor can't do a comparison. + */ +#if !defined(DUK_SIZE_MAX) +#error DUK_SIZE_MAX is undefined, probably missing SIZE_MAX +#elif !defined(DUK_SIZE_MAX_COMPUTED) +#if DUK_SIZE_MAX < 0xffffffffUL +/* On some systems SIZE_MAX can be smaller than max unsigned 32-bit value + * which seems incorrect if size_t is (at least) an unsigned 32-bit type. + * However, it doesn't seem useful to error out compilation if this is the + * case. + */ +#endif +#endif + +/* Type used in public API declarations and user code. Typedef maps to + * 'struct duk_hthread' like the 'duk_hthread' typedef which is used + * exclusively in internals. + */ +typedef struct duk_hthread duk_context; + +/* Check whether we should use 64-bit integers or not. + * + * Quite incomplete now. Use 64-bit types if detected (C99 or other detection) + * unless they are known to be unreliable. For instance, 64-bit types are + * available on VBCC but seem to misbehave. + */ +#if defined(DUK_F_HAVE_64BIT) && !defined(DUK_F_VBCC) +#define DUK_USE_64BIT_OPS +#else +#undef DUK_USE_64BIT_OPS +#endif + +/* + * Fill-ins for platform, architecture, and compiler + */ + +/* An abort()-like primitive is needed by the default fatal error handler. */ +#if !defined(DUK_ABORT) +#define DUK_ABORT abort +#endif + +#if !defined(DUK_SETJMP) +#define DUK_JMPBUF_TYPE jmp_buf +#define DUK_SETJMP(jb) setjmp((jb)) +#define DUK_LONGJMP(jb) longjmp((jb), 1) +#endif + +#if 0 +/* sigsetjmp() alternative */ +#define DUK_JMPBUF_TYPE sigjmp_buf +#define DUK_SETJMP(jb) sigsetjmp((jb)) +#define DUK_LONGJMP(jb) siglongjmp((jb), 1) +#endif + +/* Special naming to avoid conflict with e.g. DUK_FREE() in duk_heap.h + * (which is unfortunately named). May sometimes need replacement, e.g. + * some compilers don't handle zero length or NULL correctly in realloc(). + */ +#if !defined(DUK_ANSI_MALLOC) +#define DUK_ANSI_MALLOC malloc +#endif +#if !defined(DUK_ANSI_REALLOC) +#define DUK_ANSI_REALLOC realloc +#endif +#if !defined(DUK_ANSI_CALLOC) +#define DUK_ANSI_CALLOC calloc +#endif +#if !defined(DUK_ANSI_FREE) +#define DUK_ANSI_FREE free +#endif + +/* ANSI C (various versions) and some implementations require that the + * pointer arguments to memset(), memcpy(), and memmove() be valid values + * even when byte size is 0 (even a NULL pointer is considered invalid in + * this context). Zero-size operations as such are allowed, as long as their + * pointer arguments point to a valid memory area. The DUK_MEMSET(), + * DUK_MEMCPY(), and DUK_MEMMOVE() macros require this same behavior, i.e.: + * (1) pointers must be valid and non-NULL, (2) zero size must otherwise be + * allowed. If these are not fulfilled, a macro wrapper is needed. + * + * http://stackoverflow.com/questions/5243012/is-it-guaranteed-to-be-safe-to-perform-memcpy0-0-0 + * http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-October/011065.html + * + * Not sure what's the required behavior when a pointer points just past the + * end of a buffer, which often happens in practice (e.g. zero size memmoves). + * For example, if allocation size is 3, the following pointer would not + * technically point to a valid memory byte: + * + * <-- alloc --> + * | 0 | 1 | 2 | ..... + * ^-- p=3, points after last valid byte (2) + */ +#if !defined(DUK_MEMCPY) +#if defined(DUK_F_UCLIBC) +/* Old uclibcs have a broken memcpy so use memmove instead (this is overly wide + * now on purpose): http://lists.uclibc.org/pipermail/uclibc-cvs/2008-October/025511.html + */ +#define DUK_MEMCPY memmove +#else +#define DUK_MEMCPY memcpy +#endif +#endif +#if !defined(DUK_MEMMOVE) +#define DUK_MEMMOVE memmove +#endif +#if !defined(DUK_MEMCMP) +#define DUK_MEMCMP memcmp +#endif +#if !defined(DUK_MEMSET) +#define DUK_MEMSET memset +#endif +#if !defined(DUK_STRLEN) +#define DUK_STRLEN strlen +#endif +#if !defined(DUK_STRCMP) +#define DUK_STRCMP strcmp +#endif +#if !defined(DUK_STRNCMP) +#define DUK_STRNCMP strncmp +#endif +#if !defined(DUK_SPRINTF) +#define DUK_SPRINTF sprintf +#endif +#if !defined(DUK_SNPRINTF) +/* snprintf() is technically not part of C89 but usually available. */ +#define DUK_SNPRINTF snprintf +#endif +#if !defined(DUK_VSPRINTF) +#define DUK_VSPRINTF vsprintf +#endif +#if !defined(DUK_VSNPRINTF) +/* vsnprintf() is technically not part of C89 but usually available. */ +#define DUK_VSNPRINTF vsnprintf +#endif +#if !defined(DUK_SSCANF) +#define DUK_SSCANF sscanf +#endif +#if !defined(DUK_VSSCANF) +#define DUK_VSSCANF vsscanf +#endif +#if !defined(DUK_MEMZERO) +#define DUK_MEMZERO(p,n) DUK_MEMSET((p), 0, (n)) +#endif + +#if !defined(DUK_DOUBLE_INFINITY) +#undef DUK_USE_COMPUTED_INFINITY +#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION < 40600) +/* GCC older than 4.6: avoid overflow warnings related to using INFINITY */ +#define DUK_DOUBLE_INFINITY (__builtin_inf()) +#elif defined(INFINITY) +#define DUK_DOUBLE_INFINITY ((double) INFINITY) +#elif !defined(DUK_F_VBCC) && !defined(DUK_F_MSVC) && !defined(DUK_F_BCC) && \ + !defined(DUK_F_OLD_SOLARIS) && !defined(DUK_F_AIX) +#define DUK_DOUBLE_INFINITY (1.0 / 0.0) +#else +/* In VBCC (1.0 / 0.0) results in a warning and 0.0 instead of infinity. + * Use a computed infinity (initialized when a heap is created at the + * latest). + */ +#define DUK_USE_COMPUTED_INFINITY +#define DUK_DOUBLE_INFINITY duk_computed_infinity +#endif +#endif + +#if !defined(DUK_DOUBLE_NAN) +#undef DUK_USE_COMPUTED_NAN +#if defined(NAN) +#define DUK_DOUBLE_NAN NAN +#elif !defined(DUK_F_VBCC) && !defined(DUK_F_MSVC) && !defined(DUK_F_BCC) && \ + !defined(DUK_F_OLD_SOLARIS) && !defined(DUK_F_AIX) +#define DUK_DOUBLE_NAN (0.0 / 0.0) +#else +/* In VBCC (0.0 / 0.0) results in a warning and 0.0 instead of NaN. + * In MSVC (VS2010 Express) (0.0 / 0.0) results in a compile error. + * Use a computed NaN (initialized when a heap is created at the + * latest). + */ +#define DUK_USE_COMPUTED_NAN +#define DUK_DOUBLE_NAN duk_computed_nan +#endif +#endif + +/* Many platforms are missing fpclassify() and friends, so use replacements + * if necessary. The replacement constants (FP_NAN etc) can be anything but + * match Linux constants now. + */ +#undef DUK_USE_REPL_FPCLASSIFY +#undef DUK_USE_REPL_SIGNBIT +#undef DUK_USE_REPL_ISFINITE +#undef DUK_USE_REPL_ISNAN +#undef DUK_USE_REPL_ISINF + +/* Complex condition broken into separate parts. */ +#undef DUK_F_USE_REPL_ALL +#if !(defined(FP_NAN) && defined(FP_INFINITE) && defined(FP_ZERO) && \ + defined(FP_SUBNORMAL) && defined(FP_NORMAL)) +/* Missing some obvious constants. */ +#define DUK_F_USE_REPL_ALL +#elif defined(DUK_F_AMIGAOS) && defined(DUK_F_VBCC) +/* VBCC is missing the built-ins even in C99 mode (perhaps a header issue). */ +#define DUK_F_USE_REPL_ALL +#elif defined(DUK_F_AMIGAOS) && defined(DUK_F_M68K) +/* AmigaOS + M68K seems to have math issues even when using GCC cross + * compilation. Use replacements for all AmigaOS versions on M68K + * regardless of compiler. + */ +#define DUK_F_USE_REPL_ALL +#elif defined(DUK_F_FREEBSD) && defined(DUK_F_CLANG) +/* Placeholder fix for (detection is wider than necessary): + * http://llvm.org/bugs/show_bug.cgi?id=17788 + */ +#define DUK_F_USE_REPL_ALL +#elif defined(DUK_F_UCLIBC) +/* At least some uclibc versions have broken floating point math. For + * example, fpclassify() can incorrectly classify certain NaN formats. + * To be safe, use replacements. + */ +#define DUK_F_USE_REPL_ALL +#elif defined(DUK_F_AIX) +/* Older versions may be missing isnan(), etc. */ +#define DUK_F_USE_REPL_ALL +#endif + +#if defined(DUK_F_USE_REPL_ALL) +#define DUK_USE_REPL_FPCLASSIFY +#define DUK_USE_REPL_SIGNBIT +#define DUK_USE_REPL_ISFINITE +#define DUK_USE_REPL_ISNAN +#define DUK_USE_REPL_ISINF +#define DUK_FPCLASSIFY duk_repl_fpclassify +#define DUK_SIGNBIT duk_repl_signbit +#define DUK_ISFINITE duk_repl_isfinite +#define DUK_ISNAN duk_repl_isnan +#define DUK_ISINF duk_repl_isinf +#define DUK_FP_NAN 0 +#define DUK_FP_INFINITE 1 +#define DUK_FP_ZERO 2 +#define DUK_FP_SUBNORMAL 3 +#define DUK_FP_NORMAL 4 +#else +#define DUK_FPCLASSIFY fpclassify +#define DUK_SIGNBIT signbit +#define DUK_ISFINITE isfinite +#define DUK_ISNAN isnan +#define DUK_ISINF isinf +#define DUK_FP_NAN FP_NAN +#define DUK_FP_INFINITE FP_INFINITE +#define DUK_FP_ZERO FP_ZERO +#define DUK_FP_SUBNORMAL FP_SUBNORMAL +#define DUK_FP_NORMAL FP_NORMAL +#endif + +#if defined(DUK_F_USE_REPL_ALL) +#undef DUK_F_USE_REPL_ALL +#endif + +/* These functions don't currently need replacement but are wrapped for + * completeness. Because these are used as function pointers, they need + * to be defined as concrete C functions (not macros). + */ +#if !defined(DUK_FABS) +#define DUK_FABS fabs +#endif +#if !defined(DUK_FLOOR) +#define DUK_FLOOR floor +#endif +#if !defined(DUK_CEIL) +#define DUK_CEIL ceil +#endif +#if !defined(DUK_FMOD) +#define DUK_FMOD fmod +#endif +#if !defined(DUK_POW) +#define DUK_POW pow +#endif +#if !defined(DUK_ACOS) +#define DUK_ACOS acos +#endif +#if !defined(DUK_ASIN) +#define DUK_ASIN asin +#endif +#if !defined(DUK_ATAN) +#define DUK_ATAN atan +#endif +#if !defined(DUK_ATAN2) +#define DUK_ATAN2 atan2 +#endif +#if !defined(DUK_SIN) +#define DUK_SIN sin +#endif +#if !defined(DUK_COS) +#define DUK_COS cos +#endif +#if !defined(DUK_TAN) +#define DUK_TAN tan +#endif +#if !defined(DUK_EXP) +#define DUK_EXP exp +#endif +#if !defined(DUK_LOG) +#define DUK_LOG log +#endif +#if !defined(DUK_SQRT) +#define DUK_SQRT sqrt +#endif + +/* The functions below exist only in C99/C++11 or later and need a workaround + * for platforms that don't include them. MSVC isn't detected as C99, but + * these functions also exist in MSVC 2013 and later so include a clause for + * that too. Android doesn't have log2; disable all of these for Android. + */ +#if (defined(DUK_F_C99) || defined(DUK_F_CPP11) || (defined(_MSC_VER) && (_MSC_VER >= 1800))) && \ + !defined(DUK_F_ANDROID) && !defined(DUK_F_MINT) +#if !defined(DUK_CBRT) +#define DUK_CBRT cbrt +#endif +#if !defined(DUK_LOG2) +#define DUK_LOG2 log2 +#endif +#if !defined(DUK_LOG10) +#define DUK_LOG10 log10 +#endif +#if !defined(DUK_TRUNC) +#define DUK_TRUNC trunc +#endif +#endif /* DUK_F_C99 etc */ + +/* NetBSD 6.0 x86 (at least) has a few problems with pow() semantics, + * see test-bug-netbsd-math-pow.js. MinGW has similar (but different) + * issues, see test-bug-mingw-math-issues.js. Enable pow() workarounds + * for these targets. + */ +#undef DUK_USE_POW_WORKAROUNDS +#if defined(DUK_F_NETBSD) || defined(DUK_F_MINGW) +#define DUK_USE_POW_WORKAROUNDS +#endif + +/* Similar workarounds for atan2() semantics issues. MinGW issues are + * documented in test-bug-mingw-math-issues.js. + */ +#undef DUK_USE_ATAN2_WORKAROUNDS +#if defined(DUK_F_MINGW) +#define DUK_USE_ATAN2_WORKAROUNDS +#endif + +/* Rely as little as possible on compiler behavior for NaN comparison, + * signed zero handling, etc. Currently never activated but may be needed + * for broken compilers. + */ +#undef DUK_USE_PARANOID_MATH + +/* There was a curious bug where test-bi-date-canceling.js would fail e.g. + * on 64-bit Ubuntu, gcc-4.8.1, -m32, and no -std=c99. Some date computations + * using doubles would be optimized which then broke some corner case tests. + * The problem goes away by adding 'volatile' to the datetime computations. + * Not sure what the actual triggering conditions are, but using this on + * non-C99 systems solves the known issues and has relatively little cost + * on other platforms. + */ +#undef DUK_USE_PARANOID_DATE_COMPUTATION +#if !defined(DUK_F_C99) +#define DUK_USE_PARANOID_DATE_COMPUTATION +#endif + +/* + * Byte order and double memory layout detection + * + * Endianness detection is a major portability hassle because the macros + * and headers are not standardized. There's even variance across UNIX + * platforms. Even with "standard" headers, details like underscore count + * varies between platforms, e.g. both __BYTE_ORDER and _BYTE_ORDER are used + * (Crossbridge has a single underscore, for instance). + * + * The checks below are structured with this in mind: several approaches are + * used, and at the end we check if any of them worked. This allows generic + * approaches to be tried first, and platform/compiler specific hacks tried + * last. As a last resort, the user can force a specific endianness, as it's + * not likely that automatic detection will work on the most exotic platforms. + * + * Duktape supports little and big endian machines. There's also support + * for a hybrid used by some ARM machines where integers are little endian + * but IEEE double values use a mixed order (12345678 -> 43218765). This + * byte order for doubles is referred to as "mixed endian". + */ + +/* GCC and Clang provide endianness defines as built-in predefines, with + * leading and trailing double underscores (e.g. __BYTE_ORDER__). See + * output of "make gccpredefs" and "make clangpredefs". Clang doesn't + * seem to provide __FLOAT_WORD_ORDER__; assume not mixed endian for clang. + * http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html + */ +#if !defined(DUK_USE_BYTEORDER) && defined(__BYTE_ORDER__) +#if defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#if defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define DUK_USE_BYTEORDER 1 +#elif defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define DUK_USE_BYTEORDER 2 +#elif !defined(__FLOAT_WORD_ORDER__) +/* Float word order not known, assume not a hybrid. */ +#define DUK_USE_BYTEORDER 1 +#else +/* Byte order is little endian but cannot determine IEEE double word order. */ +#endif /* float word order */ +#elif defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#if defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define DUK_USE_BYTEORDER 3 +#elif !defined(__FLOAT_WORD_ORDER__) +/* Float word order not known, assume not a hybrid. */ +#define DUK_USE_BYTEORDER 3 +#else +/* Byte order is big endian but cannot determine IEEE double word order. */ +#endif /* float word order */ +#else +/* Cannot determine byte order; __ORDER_PDP_ENDIAN__ is related to 32-bit + * integer ordering and is not relevant. + */ +#endif /* integer byte order */ +#endif /* !defined(DUK_USE_BYTEORDER) && defined(__BYTE_ORDER__) */ + +/* More or less standard endianness predefines provided by header files. + * The ARM hybrid case is detected by assuming that __FLOAT_WORD_ORDER + * will be big endian, see: http://lists.mysql.com/internals/443. + * On some platforms some defines may be present with an empty value which + * causes comparisons to fail: https://github.com/svaarala/duktape/issues/453. + */ +#if !defined(DUK_USE_BYTEORDER) +#if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN) || \ + defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN) || \ + defined(__LITTLE_ENDIAN__) +#if defined(__FLOAT_WORD_ORDER) && defined(__LITTLE_ENDIAN) && (__FLOAT_WORD_ORDER == __LITTLE_ENDIAN) || \ + defined(_FLOAT_WORD_ORDER) && defined(_LITTLE_ENDIAN) && (_FLOAT_WORD_ORDER == _LITTLE_ENDIAN) +#define DUK_USE_BYTEORDER 1 +#elif defined(__FLOAT_WORD_ORDER) && defined(__BIG_ENDIAN) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN) || \ + defined(_FLOAT_WORD_ORDER) && defined(_BIG_ENDIAN) && (_FLOAT_WORD_ORDER == _BIG_ENDIAN) +#define DUK_USE_BYTEORDER 2 +#elif !defined(__FLOAT_WORD_ORDER) && !defined(_FLOAT_WORD_ORDER) +/* Float word order not known, assume not a hybrid. */ +#define DUK_USE_BYTEORDER 1 +#else +/* Byte order is little endian but cannot determine IEEE double word order. */ +#endif /* float word order */ +#elif defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN) || \ + defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN) || \ + defined(__BIG_ENDIAN__) +#if defined(__FLOAT_WORD_ORDER) && defined(__BIG_ENDIAN) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN) || \ + defined(_FLOAT_WORD_ORDER) && defined(_BIG_ENDIAN) && (_FLOAT_WORD_ORDER == _BIG_ENDIAN) +#define DUK_USE_BYTEORDER 3 +#elif !defined(__FLOAT_WORD_ORDER) && !defined(_FLOAT_WORD_ORDER) +/* Float word order not known, assume not a hybrid. */ +#define DUK_USE_BYTEORDER 3 +#else +/* Byte order is big endian but cannot determine IEEE double word order. */ +#endif /* float word order */ +#else +/* Cannot determine byte order. */ +#endif /* integer byte order */ +#endif /* !defined(DUK_USE_BYTEORDER) */ + +/* QNX gcc cross compiler seems to define e.g. __LITTLEENDIAN__ or __BIGENDIAN__: + * $ /opt/qnx650/host/linux/x86/usr/bin/i486-pc-nto-qnx6.5.0-gcc -dM -E - > 56U) | \ + ((((duk_uint64_t) (x)) >> 40U) & DUK_U64_CONSTANT(0xff00)) | \ + ((((duk_uint64_t) (x)) >> 24U) & DUK_U64_CONSTANT(0xff0000)) | \ + ((((duk_uint64_t) (x)) >> 8U) & DUK_U64_CONSTANT(0xff000000)) | \ + ((((duk_uint64_t) (x)) << 8U) & DUK_U64_CONSTANT(0xff00000000)) | \ + ((((duk_uint64_t) (x)) << 24U) & DUK_U64_CONSTANT(0xff0000000000)) | \ + ((((duk_uint64_t) (x)) << 40U) & DUK_U64_CONSTANT(0xff000000000000)) | \ + (((duk_uint64_t) (x)) << 56U)) +#endif +#endif +#if !defined(DUK_BSWAP32) +#define DUK_BSWAP32(x) \ + ((((duk_uint32_t) (x)) >> 24U) | \ + ((((duk_uint32_t) (x)) >> 8U) & 0xff00UL) | \ + ((((duk_uint32_t) (x)) << 8U) & 0xff0000UL) | \ + (((duk_uint32_t) (x)) << 24U)) +#endif +#if !defined(DUK_BSWAP16) +#define DUK_BSWAP16(x) \ + ((duk_uint16_t) (x) >> 8U) | \ + ((duk_uint16_t) (x) << 8U) +#endif + +/* DUK_USE_VARIADIC_MACROS: required from compilers, so no fill-in. */ +/* DUK_USE_UNION_INITIALIZERS: required from compilers, so no fill-in. */ + +#if !(defined(DUK_USE_FLEX_C99) || defined(DUK_USE_FLEX_ZEROSIZE) || defined(DUK_USE_FLEX_ONESIZE)) +#if defined(DUK_F_C99) +#define DUK_USE_FLEX_C99 +#else +#define DUK_USE_FLEX_ZEROSIZE /* Not standard but common enough */ +#endif +#endif + +#if !(defined(DUK_USE_PACK_GCC_ATTR) || defined(DUK_USE_PACK_CLANG_ATTR) || \ + defined(DUK_USE_PACK_MSVC_PRAGMA) || defined(DUK_USE_PACK_DUMMY_MEMBER)) +#define DUK_USE_PACK_DUMMY_MEMBER +#endif + +#if 0 /* not defined by default */ +#undef DUK_USE_GCC_PRAGMAS +#endif + +/* Workaround for GH-323: avoid inlining control when compiling from + * multiple sources, as it causes compiler portability trouble. + */ +#if !defined(DUK_SINGLE_FILE) +#undef DUK_NOINLINE +#undef DUK_INLINE +#undef DUK_ALWAYS_INLINE +#define DUK_NOINLINE /*nop*/ +#define DUK_INLINE /*nop*/ +#define DUK_ALWAYS_INLINE /*nop*/ +#endif + +/* + * Check whether or not a packed duk_tval representation is possible. + * What's basically required is that pointers are 32-bit values + * (sizeof(void *) == 4). Best effort check, not always accurate. + * If guess goes wrong, crashes may result; self tests also verify + * the guess. + */ + +/* Explicit marker needed; may be 'defined', 'undefined, 'or 'not provided'. */ +#if !defined(DUK_F_PACKED_TVAL_PROVIDED) +#undef DUK_F_PACKED_TVAL_POSSIBLE + +/* Strict C99 case: DUK_UINTPTR_MAX (= UINTPTR_MAX) should be very reliable */ +#if !defined(DUK_F_PACKED_TVAL_POSSIBLE) && defined(DUK_UINTPTR_MAX) +#if (DUK_UINTPTR_MAX <= 0xffffffffUL) +#define DUK_F_PACKED_TVAL_POSSIBLE +#endif +#endif + +/* Non-C99 case, still relying on DUK_UINTPTR_MAX, as long as it is not a computed value */ +#if !defined(DUK_F_PACKED_TVAL_POSSIBLE) && defined(DUK_UINTPTR_MAX) && !defined(DUK_UINTPTR_MAX_COMPUTED) +#if (DUK_UINTPTR_MAX <= 0xffffffffUL) +#define DUK_F_PACKED_TVAL_POSSIBLE +#endif +#endif + +/* DUK_SIZE_MAX (= SIZE_MAX) is often reliable */ +#if !defined(DUK_F_PACKED_TVAL_POSSIBLE) && defined(DUK_SIZE_MAX) && !defined(DUK_SIZE_MAX_COMPUTED) +#if (DUK_SIZE_MAX <= 0xffffffffUL) +#define DUK_F_PACKED_TVAL_POSSIBLE +#endif +#endif + +#undef DUK_USE_PACKED_TVAL +#if defined(DUK_F_PACKED_TVAL_POSSIBLE) +#define DUK_USE_PACKED_TVAL +#endif +#undef DUK_F_PACKED_TVAL_POSSIBLE + +#endif /* DUK_F_PACKED_TVAL_PROVIDED */ +/* Object property allocation layout has implications for memory and code + * footprint and generated code size/speed. The best layout also depends + * on whether the platform has alignment requirements or benefits from + * having mostly aligned accesses. + */ +#undef DUK_USE_HOBJECT_LAYOUT_1 +#undef DUK_USE_HOBJECT_LAYOUT_2 +#undef DUK_USE_HOBJECT_LAYOUT_3 +#if (DUK_USE_ALIGN_BY == 1) +/* On platforms without any alignment issues, layout 1 is preferable + * because it compiles to slightly less code and provides direct access + * to property keys. + */ +#define DUK_USE_HOBJECT_LAYOUT_1 +#else +/* On other platforms use layout 2, which requires some padding but + * is a bit more natural than layout 3 in ordering the entries. Layout + * 3 is currently not used. + */ +#define DUK_USE_HOBJECT_LAYOUT_2 +#endif + +/* GCC/clang inaccurate math would break compliance and probably duk_tval, + * so refuse to compile. Relax this if -ffast-math is tested to work. + */ +#if defined(__FAST_MATH__) +#error __FAST_MATH__ defined, refusing to compile +#endif + +/* + * Autogenerated defaults + */ + +#undef DUK_USE_ALLOW_UNDEFINED_BEHAVIOR +#define DUK_USE_ARRAY_BUILTIN +#define DUK_USE_ARRAY_FASTPATH +#define DUK_USE_ARRAY_PROP_FASTPATH +#undef DUK_USE_ASSERTIONS +#define DUK_USE_AUGMENT_ERROR_CREATE +#define DUK_USE_AUGMENT_ERROR_THROW +#define DUK_USE_AVOID_PLATFORM_FUNCPTRS +#define DUK_USE_BASE64_FASTPATH +#define DUK_USE_BASE64_SUPPORT +#define DUK_USE_BOOLEAN_BUILTIN +#define DUK_USE_BUFFEROBJECT_SUPPORT +#undef DUK_USE_BUFLEN16 +#define DUK_USE_BYTECODE_DUMP_SUPPORT +#define DUK_USE_CACHE_ACTIVATION +#define DUK_USE_CACHE_CATCHER +#define DUK_USE_CALLSTACK_LIMIT 10000 +#define DUK_USE_CBOR_BUILTIN +#define DUK_USE_CBOR_SUPPORT +#define DUK_USE_COMPILER_RECLIMIT 2500 +#define DUK_USE_COROUTINE_SUPPORT +#undef DUK_USE_CPP_EXCEPTIONS +#undef DUK_USE_DATAPTR16 +#undef DUK_USE_DATAPTR_DEC16 +#undef DUK_USE_DATAPTR_ENC16 +#define DUK_USE_DATE_BUILTIN +#undef DUK_USE_DATE_FORMAT_STRING +#undef DUK_USE_DATE_GET_LOCAL_TZOFFSET +#undef DUK_USE_DATE_GET_NOW +#undef DUK_USE_DATE_PARSE_STRING +#undef DUK_USE_DATE_PRS_GETDATE +#undef DUK_USE_DEBUG +#undef DUK_USE_DEBUGGER_DUMPHEAP +#undef DUK_USE_DEBUGGER_INSPECT +#undef DUK_USE_DEBUGGER_PAUSE_UNCAUGHT +#undef DUK_USE_DEBUGGER_SUPPORT +#define DUK_USE_DEBUGGER_THROW_NOTIFY +#undef DUK_USE_DEBUGGER_TRANSPORT_TORTURE +#define DUK_USE_DEBUG_BUFSIZE 65536L +#define DUK_USE_DEBUG_LEVEL 0 +#undef DUK_USE_DEBUG_WRITE +#define DUK_USE_DOUBLE_LINKED_HEAP +#define DUK_USE_DUKTAPE_BUILTIN +#define DUK_USE_ENCODING_BUILTINS +#define DUK_USE_ERRCREATE +#define DUK_USE_ERRTHROW +#define DUK_USE_ES6 +#define DUK_USE_ES6_OBJECT_PROTO_PROPERTY +#define DUK_USE_ES6_OBJECT_SETPROTOTYPEOF +#define DUK_USE_ES6_PROXY +#define DUK_USE_ES6_REGEXP_SYNTAX +#define DUK_USE_ES6_UNICODE_ESCAPE +#define DUK_USE_ES7 +#define DUK_USE_ES7_EXP_OPERATOR +#define DUK_USE_ES8 +#define DUK_USE_ES9 +#define DUK_USE_ESBC_LIMITS +#define DUK_USE_ESBC_MAX_BYTES 2147418112L +#define DUK_USE_ESBC_MAX_LINENUMBER 2147418112L +#undef DUK_USE_EXEC_FUN_LOCAL +#undef DUK_USE_EXEC_INDIRECT_BOUND_CHECK +#undef DUK_USE_EXEC_PREFER_SIZE +#define DUK_USE_EXEC_REGCONST_OPTIMIZE +#undef DUK_USE_EXEC_TIMEOUT_CHECK +#undef DUK_USE_EXPLICIT_NULL_INIT +#undef DUK_USE_EXTSTR_FREE +#undef DUK_USE_EXTSTR_INTERN_CHECK +#undef DUK_USE_FASTINT +#define DUK_USE_FAST_REFCOUNT_DEFAULT +#undef DUK_USE_FATAL_HANDLER +#define DUK_USE_FATAL_MAXLEN 128 +#define DUK_USE_FINALIZER_SUPPORT +#undef DUK_USE_FINALIZER_TORTURE +#undef DUK_USE_FUNCPTR16 +#undef DUK_USE_FUNCPTR_DEC16 +#undef DUK_USE_FUNCPTR_ENC16 +#define DUK_USE_FUNCTION_BUILTIN +#define DUK_USE_FUNC_FILENAME_PROPERTY +#define DUK_USE_FUNC_NAME_PROPERTY +#undef DUK_USE_GC_TORTURE +#undef DUK_USE_GET_MONOTONIC_TIME +#undef DUK_USE_GET_RANDOM_DOUBLE +#define DUK_USE_GLOBAL_BINDING +#define DUK_USE_GLOBAL_BUILTIN +#undef DUK_USE_HEAPPTR16 +#undef DUK_USE_HEAPPTR_DEC16 +#undef DUK_USE_HEAPPTR_ENC16 +#define DUK_USE_HEX_FASTPATH +#define DUK_USE_HEX_SUPPORT +#define DUK_USE_HOBJECT_ARRAY_ABANDON_LIMIT 2 +#define DUK_USE_HOBJECT_ARRAY_ABANDON_MINSIZE 257 +#define DUK_USE_HOBJECT_ARRAY_FAST_RESIZE_LIMIT 9 +#define DUK_USE_HOBJECT_ARRAY_MINGROW_ADD 16 +#define DUK_USE_HOBJECT_ARRAY_MINGROW_DIVISOR 8 +#define DUK_USE_HOBJECT_ENTRY_MINGROW_ADD 16 +#define DUK_USE_HOBJECT_ENTRY_MINGROW_DIVISOR 8 +#define DUK_USE_HOBJECT_HASH_PART +#define DUK_USE_HOBJECT_HASH_PROP_LIMIT 8 +#define DUK_USE_HSTRING_ARRIDX +#define DUK_USE_HSTRING_CLEN +#undef DUK_USE_HSTRING_EXTDATA +#define DUK_USE_HSTRING_LAZY_CLEN +#define DUK_USE_HTML_COMMENTS +#define DUK_USE_IDCHAR_FASTPATH +#undef DUK_USE_INJECT_HEAP_ALLOC_ERROR +#undef DUK_USE_INTERRUPT_COUNTER +#undef DUK_USE_INTERRUPT_DEBUG_FIXUP +#define DUK_USE_JC +#define DUK_USE_JSON_BUILTIN +#define DUK_USE_JSON_DECNUMBER_FASTPATH +#define DUK_USE_JSON_DECSTRING_FASTPATH +#define DUK_USE_JSON_DEC_RECLIMIT 1000 +#define DUK_USE_JSON_EATWHITE_FASTPATH +#define DUK_USE_JSON_ENC_RECLIMIT 1000 +#define DUK_USE_JSON_QUOTESTRING_FASTPATH +#undef DUK_USE_JSON_STRINGIFY_FASTPATH +#define DUK_USE_JSON_SUPPORT +#define DUK_USE_JX +#define DUK_USE_LEXER_SLIDING_WINDOW +#undef DUK_USE_LIGHTFUNC_BUILTINS +#define DUK_USE_LITCACHE_SIZE 256 +#define DUK_USE_MARK_AND_SWEEP_RECLIMIT 256 +#define DUK_USE_MATH_BUILTIN +#define DUK_USE_NATIVE_CALL_RECLIMIT 1000 +#undef DUK_USE_NATIVE_STACK_CHECK +#define DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT +#undef DUK_USE_NONSTD_FUNC_CALLER_PROPERTY +#undef DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY +#define DUK_USE_NONSTD_FUNC_STMT +#define DUK_USE_NONSTD_GETTER_KEY_ARGUMENT +#define DUK_USE_NONSTD_JSON_ESC_U2028_U2029 +#define DUK_USE_NONSTD_SETTER_KEY_ARGUMENT +#define DUK_USE_NONSTD_STRING_FROMCHARCODE_32BIT +#define DUK_USE_NUMBER_BUILTIN +#define DUK_USE_OBJECT_BUILTIN +#undef DUK_USE_OBJSIZES16 +#undef DUK_USE_PARANOID_ERRORS +#define DUK_USE_PC2LINE +#define DUK_USE_PERFORMANCE_BUILTIN +#undef DUK_USE_PREFER_SIZE +#undef DUK_USE_PROMISE_BUILTIN +#define DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS +#undef DUK_USE_REFCOUNT16 +#define DUK_USE_REFCOUNT32 +#define DUK_USE_REFERENCE_COUNTING +#define DUK_USE_REFLECT_BUILTIN +#define DUK_USE_REGEXP_CANON_BITMAP +#undef DUK_USE_REGEXP_CANON_WORKAROUND +#define DUK_USE_REGEXP_COMPILER_RECLIMIT 10000 +#define DUK_USE_REGEXP_EXECUTOR_RECLIMIT 10000 +#define DUK_USE_REGEXP_SUPPORT +#undef DUK_USE_ROM_GLOBAL_CLONE +#undef DUK_USE_ROM_GLOBAL_INHERIT +#undef DUK_USE_ROM_OBJECTS +#define DUK_USE_ROM_PTRCOMP_FIRST 63488L +#undef DUK_USE_ROM_STRINGS +#define DUK_USE_SECTION_B +#undef DUK_USE_SELF_TESTS +#define DUK_USE_SHEBANG_COMMENTS +#undef DUK_USE_SHUFFLE_TORTURE +#define DUK_USE_SOURCE_NONBMP +#undef DUK_USE_STRHASH16 +#undef DUK_USE_STRHASH_DENSE +#define DUK_USE_STRHASH_SKIP_SHIFT 5 +#define DUK_USE_STRICT_DECL +#undef DUK_USE_STRICT_UTF8_SOURCE +#define DUK_USE_STRING_BUILTIN +#undef DUK_USE_STRLEN16 +#define DUK_USE_STRTAB_GROW_LIMIT 17 +#define DUK_USE_STRTAB_MAXSIZE 268435456L +#define DUK_USE_STRTAB_MINSIZE 1024 +#undef DUK_USE_STRTAB_PTRCOMP +#define DUK_USE_STRTAB_RESIZE_CHECK_MASK 255 +#define DUK_USE_STRTAB_SHRINK_LIMIT 6 +#undef DUK_USE_STRTAB_TORTURE +#define DUK_USE_SYMBOL_BUILTIN +#define DUK_USE_TAILCALL +#define DUK_USE_TARGET_INFO "unknown" +#define DUK_USE_TRACEBACKS +#define DUK_USE_TRACEBACK_DEPTH 10 +#define DUK_USE_VALSTACK_GROW_SHIFT 2 +#define DUK_USE_VALSTACK_LIMIT 1000000L +#define DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT 2 +#define DUK_USE_VALSTACK_SHRINK_SLACK_SHIFT 4 +#undef DUK_USE_VALSTACK_UNSAFE +#define DUK_USE_VERBOSE_ERRORS +#define DUK_USE_VERBOSE_EXECUTOR_ERRORS +#define DUK_USE_VOLUNTARY_GC +#define DUK_USE_ZERO_BUFFER_DATA + +/* + * You may add overriding #define/#undef directives below for + * customization. You of course cannot un-#include or un-typedef + * anything; these require direct changes above. + */ + +/* __OVERRIDE_DEFINES__ */ + +/* + * Conditional includes + */ + +#if defined(DUK_F_CPP) && defined(DUK_USE_CPP_EXCEPTIONS) +#include /* std::exception */ +#include /* std::runtime_error */ +#endif + +/* + * Date provider selection + * + * User may define DUK_USE_DATE_GET_NOW() etc directly, in which case we'll + * rely on an external provider. If this is not done, revert to previous + * behavior and use Unix/Windows built-in provider. + */ + +#if defined(DUK_COMPILING_DUKTAPE) + +#if defined(DUK_USE_DATE_GET_NOW) +/* External provider already defined. */ +#elif defined(DUK_USE_DATE_NOW_GETTIMEOFDAY) +#define DUK_USE_DATE_GET_NOW(ctx) duk_bi_date_get_now_gettimeofday() +#elif defined(DUK_USE_DATE_NOW_TIME) +#define DUK_USE_DATE_GET_NOW(ctx) duk_bi_date_get_now_time() +#elif defined(DUK_USE_DATE_NOW_WINDOWS) +#define DUK_USE_DATE_GET_NOW(ctx) duk_bi_date_get_now_windows() +#elif defined(DUK_USE_DATE_NOW_WINDOWS_SUBMS) +#define DUK_USE_DATE_GET_NOW(ctx) duk_bi_date_get_now_windows_subms() +#else +#error no provider for DUK_USE_DATE_GET_NOW() +#endif + +#if defined(DUK_USE_DATE_GET_LOCAL_TZOFFSET) +/* External provider already defined. */ +#elif defined(DUK_USE_DATE_TZO_GMTIME_R) || defined(DUK_USE_DATE_TZO_GMTIME_S) || defined(DUK_USE_DATE_TZO_GMTIME) +#define DUK_USE_DATE_GET_LOCAL_TZOFFSET(d) duk_bi_date_get_local_tzoffset_gmtime((d)) +#elif defined(DUK_USE_DATE_TZO_WINDOWS) +#define DUK_USE_DATE_GET_LOCAL_TZOFFSET(d) duk_bi_date_get_local_tzoffset_windows((d)) +#elif defined(DUK_USE_DATE_TZO_WINDOWS_NO_DST) +#define DUK_USE_DATE_GET_LOCAL_TZOFFSET(d) duk_bi_date_get_local_tzoffset_windows_no_dst((d)) +#else +#error no provider for DUK_USE_DATE_GET_LOCAL_TZOFFSET() +#endif + +#if defined(DUK_USE_DATE_PARSE_STRING) +/* External provider already defined. */ +#elif defined(DUK_USE_DATE_PRS_STRPTIME) +#define DUK_USE_DATE_PARSE_STRING(ctx,str) duk_bi_date_parse_string_strptime((ctx), (str)) +#elif defined(DUK_USE_DATE_PRS_GETDATE) +#define DUK_USE_DATE_PARSE_STRING(ctx,str) duk_bi_date_parse_string_getdate((ctx), (str)) +#else +/* No provider for DUK_USE_DATE_PARSE_STRING(), fall back to ISO 8601 only. */ +#endif + +#if defined(DUK_USE_DATE_FORMAT_STRING) +/* External provider already defined. */ +#elif defined(DUK_USE_DATE_FMT_STRFTIME) +#define DUK_USE_DATE_FORMAT_STRING(ctx,parts,tzoffset,flags) \ + duk_bi_date_format_parts_strftime((ctx), (parts), (tzoffset), (flags)) +#else +/* No provider for DUK_USE_DATE_FORMAT_STRING(), fall back to ISO 8601 only. */ +#endif + +#if defined(DUK_USE_GET_MONOTONIC_TIME) +/* External provider already defined. */ +#elif defined(DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME) +#define DUK_USE_GET_MONOTONIC_TIME(ctx) duk_bi_date_get_monotonic_time_clock_gettime() +#elif defined(DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC) +#define DUK_USE_GET_MONOTONIC_TIME(ctx) duk_bi_date_get_monotonic_time_windows_qpc() +#else +/* No provider for DUK_USE_GET_MONOTONIC_TIME(), fall back to DUK_USE_DATE_GET_NOW(). */ +#endif + +#endif /* DUK_COMPILING_DUKTAPE */ + +/* + * Checks for legacy feature options (DUK_OPT_xxx) + */ + +#if defined(DUK_OPT_ASSERTIONS) +#error unsupported legacy feature option DUK_OPT_ASSERTIONS used +#endif +#if defined(DUK_OPT_BUFFEROBJECT_SUPPORT) +#error unsupported legacy feature option DUK_OPT_BUFFEROBJECT_SUPPORT used +#endif +#if defined(DUK_OPT_BUFLEN16) +#error unsupported legacy feature option DUK_OPT_BUFLEN16 used +#endif +#if defined(DUK_OPT_DATAPTR16) +#error unsupported legacy feature option DUK_OPT_DATAPTR16 used +#endif +#if defined(DUK_OPT_DATAPTR_DEC16) +#error unsupported legacy feature option DUK_OPT_DATAPTR_DEC16 used +#endif +#if defined(DUK_OPT_DATAPTR_ENC16) +#error unsupported legacy feature option DUK_OPT_DATAPTR_ENC16 used +#endif +#if defined(DUK_OPT_DDDPRINT) +#error unsupported legacy feature option DUK_OPT_DDDPRINT used +#endif +#if defined(DUK_OPT_DDPRINT) +#error unsupported legacy feature option DUK_OPT_DDPRINT used +#endif +#if defined(DUK_OPT_DEBUG) +#error unsupported legacy feature option DUK_OPT_DEBUG used +#endif +#if defined(DUK_OPT_DEBUGGER_DUMPHEAP) +#error unsupported legacy feature option DUK_OPT_DEBUGGER_DUMPHEAP used +#endif +#if defined(DUK_OPT_DEBUGGER_FWD_LOGGING) +#error unsupported legacy feature option DUK_OPT_DEBUGGER_FWD_LOGGING used +#endif +#if defined(DUK_OPT_DEBUGGER_FWD_PRINTALERT) +#error unsupported legacy feature option DUK_OPT_DEBUGGER_FWD_PRINTALERT used +#endif +#if defined(DUK_OPT_DEBUGGER_SUPPORT) +#error unsupported legacy feature option DUK_OPT_DEBUGGER_SUPPORT used +#endif +#if defined(DUK_OPT_DEBUGGER_TRANSPORT_TORTURE) +#error unsupported legacy feature option DUK_OPT_DEBUGGER_TRANSPORT_TORTURE used +#endif +#if defined(DUK_OPT_DEBUG_BUFSIZE) +#error unsupported legacy feature option DUK_OPT_DEBUG_BUFSIZE used +#endif +#if defined(DUK_OPT_DECLARE) +#error unsupported legacy feature option DUK_OPT_DECLARE used +#endif +#if defined(DUK_OPT_DEEP_C_STACK) +#error unsupported legacy feature option DUK_OPT_DEEP_C_STACK used +#endif +#if defined(DUK_OPT_DLL_BUILD) +#error unsupported legacy feature option DUK_OPT_DLL_BUILD used +#endif +#if defined(DUK_OPT_DPRINT) +#error unsupported legacy feature option DUK_OPT_DPRINT used +#endif +#if defined(DUK_OPT_DPRINT_COLORS) +#error unsupported legacy feature option DUK_OPT_DPRINT_COLORS used +#endif +#if defined(DUK_OPT_DPRINT_RDTSC) +#error unsupported legacy feature option DUK_OPT_DPRINT_RDTSC used +#endif +#if defined(DUK_OPT_EXEC_TIMEOUT_CHECK) +#error unsupported legacy feature option DUK_OPT_EXEC_TIMEOUT_CHECK used +#endif +#if defined(DUK_OPT_EXTERNAL_STRINGS) +#error unsupported legacy feature option DUK_OPT_EXTERNAL_STRINGS used +#endif +#if defined(DUK_OPT_EXTSTR_FREE) +#error unsupported legacy feature option DUK_OPT_EXTSTR_FREE used +#endif +#if defined(DUK_OPT_EXTSTR_INTERN_CHECK) +#error unsupported legacy feature option DUK_OPT_EXTSTR_INTERN_CHECK used +#endif +#if defined(DUK_OPT_FASTINT) +#error unsupported legacy feature option DUK_OPT_FASTINT used +#endif +#if defined(DUK_OPT_FORCE_ALIGN) +#error unsupported legacy feature option DUK_OPT_FORCE_ALIGN used +#endif +#if defined(DUK_OPT_FORCE_BYTEORDER) +#error unsupported legacy feature option DUK_OPT_FORCE_BYTEORDER used +#endif +#if defined(DUK_OPT_FUNCPTR16) +#error unsupported legacy feature option DUK_OPT_FUNCPTR16 used +#endif +#if defined(DUK_OPT_FUNCPTR_DEC16) +#error unsupported legacy feature option DUK_OPT_FUNCPTR_DEC16 used +#endif +#if defined(DUK_OPT_FUNCPTR_ENC16) +#error unsupported legacy feature option DUK_OPT_FUNCPTR_ENC16 used +#endif +#if defined(DUK_OPT_FUNC_NONSTD_CALLER_PROPERTY) +#error unsupported legacy feature option DUK_OPT_FUNC_NONSTD_CALLER_PROPERTY used +#endif +#if defined(DUK_OPT_FUNC_NONSTD_SOURCE_PROPERTY) +#error unsupported legacy feature option DUK_OPT_FUNC_NONSTD_SOURCE_PROPERTY used +#endif +#if defined(DUK_OPT_GC_TORTURE) +#error unsupported legacy feature option DUK_OPT_GC_TORTURE used +#endif +#if defined(DUK_OPT_HAVE_CUSTOM_H) +#error unsupported legacy feature option DUK_OPT_HAVE_CUSTOM_H used +#endif +#if defined(DUK_OPT_HEAPPTR16) +#error unsupported legacy feature option DUK_OPT_HEAPPTR16 used +#endif +#if defined(DUK_OPT_HEAPPTR_DEC16) +#error unsupported legacy feature option DUK_OPT_HEAPPTR_DEC16 used +#endif +#if defined(DUK_OPT_HEAPPTR_ENC16) +#error unsupported legacy feature option DUK_OPT_HEAPPTR_ENC16 used +#endif +#if defined(DUK_OPT_INTERRUPT_COUNTER) +#error unsupported legacy feature option DUK_OPT_INTERRUPT_COUNTER used +#endif +#if defined(DUK_OPT_JSON_STRINGIFY_FASTPATH) +#error unsupported legacy feature option DUK_OPT_JSON_STRINGIFY_FASTPATH used +#endif +#if defined(DUK_OPT_LIGHTFUNC_BUILTINS) +#error unsupported legacy feature option DUK_OPT_LIGHTFUNC_BUILTINS used +#endif +#if defined(DUK_OPT_NONSTD_FUNC_CALLER_PROPERTY) +#error unsupported legacy feature option DUK_OPT_NONSTD_FUNC_CALLER_PROPERTY used +#endif +#if defined(DUK_OPT_NONSTD_FUNC_SOURCE_PROPERTY) +#error unsupported legacy feature option DUK_OPT_NONSTD_FUNC_SOURCE_PROPERTY used +#endif +#if defined(DUK_OPT_NO_ARRAY_SPLICE_NONSTD_DELCOUNT) +#error unsupported legacy feature option DUK_OPT_NO_ARRAY_SPLICE_NONSTD_DELCOUNT used +#endif +#if defined(DUK_OPT_NO_AUGMENT_ERRORS) +#error unsupported legacy feature option DUK_OPT_NO_AUGMENT_ERRORS used +#endif +#if defined(DUK_OPT_NO_BROWSER_LIKE) +#error unsupported legacy feature option DUK_OPT_NO_BROWSER_LIKE used +#endif +#if defined(DUK_OPT_NO_BUFFEROBJECT_SUPPORT) +#error unsupported legacy feature option DUK_OPT_NO_BUFFEROBJECT_SUPPORT used +#endif +#if defined(DUK_OPT_NO_BYTECODE_DUMP_SUPPORT) +#error unsupported legacy feature option DUK_OPT_NO_BYTECODE_DUMP_SUPPORT used +#endif +#if defined(DUK_OPT_NO_COMMONJS_MODULES) +#error unsupported legacy feature option DUK_OPT_NO_COMMONJS_MODULES used +#endif +#if defined(DUK_OPT_NO_ES6_OBJECT_PROTO_PROPERTY) +#error unsupported legacy feature option DUK_OPT_NO_ES6_OBJECT_PROTO_PROPERTY used +#endif +#if defined(DUK_OPT_NO_ES6_OBJECT_SETPROTOTYPEOF) +#error unsupported legacy feature option DUK_OPT_NO_ES6_OBJECT_SETPROTOTYPEOF used +#endif +#if defined(DUK_OPT_NO_ES6_PROXY) +#error unsupported legacy feature option DUK_OPT_NO_ES6_PROXY used +#endif +#if defined(DUK_OPT_NO_FILE_IO) +#error unsupported legacy feature option DUK_OPT_NO_FILE_IO used +#endif +#if defined(DUK_OPT_NO_FUNC_STMT) +#error unsupported legacy feature option DUK_OPT_NO_FUNC_STMT used +#endif +#if defined(DUK_OPT_NO_JC) +#error unsupported legacy feature option DUK_OPT_NO_JC used +#endif +#if defined(DUK_OPT_NO_JSONC) +#error unsupported legacy feature option DUK_OPT_NO_JSONC used +#endif +#if defined(DUK_OPT_NO_JSONX) +#error unsupported legacy feature option DUK_OPT_NO_JSONX used +#endif +#if defined(DUK_OPT_NO_JX) +#error unsupported legacy feature option DUK_OPT_NO_JX used +#endif +#if defined(DUK_OPT_NO_MARK_AND_SWEEP) +#error unsupported legacy feature option DUK_OPT_NO_MARK_AND_SWEEP used +#endif +#if defined(DUK_OPT_NO_MS_STRINGTABLE_RESIZE) +#error unsupported legacy feature option DUK_OPT_NO_MS_STRINGTABLE_RESIZE used +#endif +#if defined(DUK_OPT_NO_NONSTD_ACCESSOR_KEY_ARGUMENT) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_ACCESSOR_KEY_ARGUMENT used +#endif +#if defined(DUK_OPT_NO_NONSTD_ARRAY_CONCAT_TRAILER) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_ARRAY_CONCAT_TRAILER used +#endif +#if defined(DUK_OPT_NO_NONSTD_ARRAY_MAP_TRAILER) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_ARRAY_MAP_TRAILER used +#endif +#if defined(DUK_OPT_NO_NONSTD_ARRAY_SPLICE_DELCOUNT) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_ARRAY_SPLICE_DELCOUNT used +#endif +#if defined(DUK_OPT_NO_NONSTD_FUNC_STMT) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_FUNC_STMT used +#endif +#if defined(DUK_OPT_NO_NONSTD_JSON_ESC_U2028_U2029) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_JSON_ESC_U2028_U2029 used +#endif +#if defined(DUK_OPT_NO_NONSTD_STRING_FROMCHARCODE_32BIT) +#error unsupported legacy feature option DUK_OPT_NO_NONSTD_STRING_FROMCHARCODE_32BIT used +#endif +#if defined(DUK_OPT_NO_OBJECT_ES6_PROTO_PROPERTY) +#error unsupported legacy feature option DUK_OPT_NO_OBJECT_ES6_PROTO_PROPERTY used +#endif +#if defined(DUK_OPT_NO_OBJECT_ES6_SETPROTOTYPEOF) +#error unsupported legacy feature option DUK_OPT_NO_OBJECT_ES6_SETPROTOTYPEOF used +#endif +#if defined(DUK_OPT_NO_OCTAL_SUPPORT) +#error unsupported legacy feature option DUK_OPT_NO_OCTAL_SUPPORT used +#endif +#if defined(DUK_OPT_NO_PACKED_TVAL) +#error unsupported legacy feature option DUK_OPT_NO_PACKED_TVAL used +#endif +#if defined(DUK_OPT_NO_PC2LINE) +#error unsupported legacy feature option DUK_OPT_NO_PC2LINE used +#endif +#if defined(DUK_OPT_NO_REFERENCE_COUNTING) +#error unsupported legacy feature option DUK_OPT_NO_REFERENCE_COUNTING used +#endif +#if defined(DUK_OPT_NO_REGEXP_SUPPORT) +#error unsupported legacy feature option DUK_OPT_NO_REGEXP_SUPPORT used +#endif +#if defined(DUK_OPT_NO_SECTION_B) +#error unsupported legacy feature option DUK_OPT_NO_SECTION_B used +#endif +#if defined(DUK_OPT_NO_SOURCE_NONBMP) +#error unsupported legacy feature option DUK_OPT_NO_SOURCE_NONBMP used +#endif +#if defined(DUK_OPT_NO_STRICT_DECL) +#error unsupported legacy feature option DUK_OPT_NO_STRICT_DECL used +#endif +#if defined(DUK_OPT_NO_TRACEBACKS) +#error unsupported legacy feature option DUK_OPT_NO_TRACEBACKS used +#endif +#if defined(DUK_OPT_NO_VERBOSE_ERRORS) +#error unsupported legacy feature option DUK_OPT_NO_VERBOSE_ERRORS used +#endif +#if defined(DUK_OPT_NO_VOLUNTARY_GC) +#error unsupported legacy feature option DUK_OPT_NO_VOLUNTARY_GC used +#endif +#if defined(DUK_OPT_NO_ZERO_BUFFER_DATA) +#error unsupported legacy feature option DUK_OPT_NO_ZERO_BUFFER_DATA used +#endif +#if defined(DUK_OPT_OBJSIZES16) +#error unsupported legacy feature option DUK_OPT_OBJSIZES16 used +#endif +#if defined(DUK_OPT_PANIC_HANDLER) +#error unsupported legacy feature option DUK_OPT_PANIC_HANDLER used +#endif +#if defined(DUK_OPT_REFCOUNT16) +#error unsupported legacy feature option DUK_OPT_REFCOUNT16 used +#endif +#if defined(DUK_OPT_SEGFAULT_ON_PANIC) +#error unsupported legacy feature option DUK_OPT_SEGFAULT_ON_PANIC used +#endif +#if defined(DUK_OPT_SELF_TESTS) +#error unsupported legacy feature option DUK_OPT_SELF_TESTS used +#endif +#if defined(DUK_OPT_SETJMP) +#error unsupported legacy feature option DUK_OPT_SETJMP used +#endif +#if defined(DUK_OPT_SHUFFLE_TORTURE) +#error unsupported legacy feature option DUK_OPT_SHUFFLE_TORTURE used +#endif +#if defined(DUK_OPT_SIGSETJMP) +#error unsupported legacy feature option DUK_OPT_SIGSETJMP used +#endif +#if defined(DUK_OPT_STRHASH16) +#error unsupported legacy feature option DUK_OPT_STRHASH16 used +#endif +#if defined(DUK_OPT_STRICT_UTF8_SOURCE) +#error unsupported legacy feature option DUK_OPT_STRICT_UTF8_SOURCE used +#endif +#if defined(DUK_OPT_STRLEN16) +#error unsupported legacy feature option DUK_OPT_STRLEN16 used +#endif +#if defined(DUK_OPT_STRTAB_CHAIN) +#error unsupported legacy feature option DUK_OPT_STRTAB_CHAIN used +#endif +#if defined(DUK_OPT_STRTAB_CHAIN_SIZE) +#error unsupported legacy feature option DUK_OPT_STRTAB_CHAIN_SIZE used +#endif +#if defined(DUK_OPT_TARGET_INFO) +#error unsupported legacy feature option DUK_OPT_TARGET_INFO used +#endif +#if defined(DUK_OPT_TRACEBACK_DEPTH) +#error unsupported legacy feature option DUK_OPT_TRACEBACK_DEPTH used +#endif +#if defined(DUK_OPT_UNDERSCORE_SETJMP) +#error unsupported legacy feature option DUK_OPT_UNDERSCORE_SETJMP used +#endif +#if defined(DUK_OPT_USER_INITJS) +#error unsupported legacy feature option DUK_OPT_USER_INITJS used +#endif + +/* + * Checks for config option consistency (DUK_USE_xxx) + */ + +#if defined(DUK_USE_32BIT_PTRS) +#error unsupported config option used (option has been removed): DUK_USE_32BIT_PTRS +#endif +#if defined(DUK_USE_ALIGN_4) +#error unsupported config option used (option has been removed): DUK_USE_ALIGN_4 +#endif +#if defined(DUK_USE_ALIGN_8) +#error unsupported config option used (option has been removed): DUK_USE_ALIGN_8 +#endif +#if defined(DUK_USE_BROWSER_LIKE) +#error unsupported config option used (option has been removed): DUK_USE_BROWSER_LIKE +#endif +#if defined(DUK_USE_BUILTIN_INITJS) +#error unsupported config option used (option has been removed): DUK_USE_BUILTIN_INITJS +#endif +#if defined(DUK_USE_BYTEORDER_FORCED) +#error unsupported config option used (option has been removed): DUK_USE_BYTEORDER_FORCED +#endif +#if defined(DUK_USE_COMMONJS_MODULES) +#error unsupported config option used (option has been removed): DUK_USE_COMMONJS_MODULES +#endif +#if defined(DUK_USE_DATAPTR_DEC16) && !defined(DUK_USE_DATAPTR16) +#error config option DUK_USE_DATAPTR_DEC16 requires option DUK_USE_DATAPTR16 (which is missing) +#endif +#if defined(DUK_USE_DATAPTR_ENC16) && !defined(DUK_USE_DATAPTR16) +#error config option DUK_USE_DATAPTR_ENC16 requires option DUK_USE_DATAPTR16 (which is missing) +#endif +#if defined(DUK_USE_DDDPRINT) +#error unsupported config option used (option has been removed): DUK_USE_DDDPRINT +#endif +#if defined(DUK_USE_DDPRINT) +#error unsupported config option used (option has been removed): DUK_USE_DDPRINT +#endif +#if defined(DUK_USE_DEBUGGER_FWD_LOGGING) +#error unsupported config option used (option has been removed): DUK_USE_DEBUGGER_FWD_LOGGING +#endif +#if defined(DUK_USE_DEBUGGER_FWD_PRINTALERT) +#error unsupported config option used (option has been removed): DUK_USE_DEBUGGER_FWD_PRINTALERT +#endif +#if defined(DUK_USE_DEBUGGER_SUPPORT) && !defined(DUK_USE_INTERRUPT_COUNTER) +#error config option DUK_USE_DEBUGGER_SUPPORT requires option DUK_USE_INTERRUPT_COUNTER (which is missing) +#endif +#if defined(DUK_USE_DEEP_C_STACK) +#error unsupported config option used (option has been removed): DUK_USE_DEEP_C_STACK +#endif +#if defined(DUK_USE_DOUBLE_BE) +#error unsupported config option used (option has been removed): DUK_USE_DOUBLE_BE +#endif +#if defined(DUK_USE_DOUBLE_BE) && defined(DUK_USE_DOUBLE_LE) +#error config option DUK_USE_DOUBLE_BE conflicts with option DUK_USE_DOUBLE_LE (which is also defined) +#endif +#if defined(DUK_USE_DOUBLE_BE) && defined(DUK_USE_DOUBLE_ME) +#error config option DUK_USE_DOUBLE_BE conflicts with option DUK_USE_DOUBLE_ME (which is also defined) +#endif +#if defined(DUK_USE_DOUBLE_LE) +#error unsupported config option used (option has been removed): DUK_USE_DOUBLE_LE +#endif +#if defined(DUK_USE_DOUBLE_LE) && defined(DUK_USE_DOUBLE_BE) +#error config option DUK_USE_DOUBLE_LE conflicts with option DUK_USE_DOUBLE_BE (which is also defined) +#endif +#if defined(DUK_USE_DOUBLE_LE) && defined(DUK_USE_DOUBLE_ME) +#error config option DUK_USE_DOUBLE_LE conflicts with option DUK_USE_DOUBLE_ME (which is also defined) +#endif +#if defined(DUK_USE_DOUBLE_ME) +#error unsupported config option used (option has been removed): DUK_USE_DOUBLE_ME +#endif +#if defined(DUK_USE_DOUBLE_ME) && defined(DUK_USE_DOUBLE_LE) +#error config option DUK_USE_DOUBLE_ME conflicts with option DUK_USE_DOUBLE_LE (which is also defined) +#endif +#if defined(DUK_USE_DOUBLE_ME) && defined(DUK_USE_DOUBLE_BE) +#error config option DUK_USE_DOUBLE_ME conflicts with option DUK_USE_DOUBLE_BE (which is also defined) +#endif +#if defined(DUK_USE_DPRINT) +#error unsupported config option used (option has been removed): DUK_USE_DPRINT +#endif +#if defined(DUK_USE_DPRINT) && !defined(DUK_USE_DEBUG) +#error config option DUK_USE_DPRINT requires option DUK_USE_DEBUG (which is missing) +#endif +#if defined(DUK_USE_DPRINT_COLORS) +#error unsupported config option used (option has been removed): DUK_USE_DPRINT_COLORS +#endif +#if defined(DUK_USE_DPRINT_RDTSC) +#error unsupported config option used (option has been removed): DUK_USE_DPRINT_RDTSC +#endif +#if defined(DUK_USE_ES6_REGEXP_BRACES) +#error unsupported config option used (option has been removed): DUK_USE_ES6_REGEXP_BRACES +#endif +#if defined(DUK_USE_ESBC_MAX_BYTES) && !defined(DUK_USE_ESBC_LIMITS) +#error config option DUK_USE_ESBC_MAX_BYTES requires option DUK_USE_ESBC_LIMITS (which is missing) +#endif +#if defined(DUK_USE_ESBC_MAX_LINENUMBER) && !defined(DUK_USE_ESBC_LIMITS) +#error config option DUK_USE_ESBC_MAX_LINENUMBER requires option DUK_USE_ESBC_LIMITS (which is missing) +#endif +#if defined(DUK_USE_EXEC_TIMEOUT_CHECK) && !defined(DUK_USE_INTERRUPT_COUNTER) +#error config option DUK_USE_EXEC_TIMEOUT_CHECK requires option DUK_USE_INTERRUPT_COUNTER (which is missing) +#endif +#if defined(DUK_USE_EXTSTR_FREE) && !defined(DUK_USE_HSTRING_EXTDATA) +#error config option DUK_USE_EXTSTR_FREE requires option DUK_USE_HSTRING_EXTDATA (which is missing) +#endif +#if defined(DUK_USE_EXTSTR_INTERN_CHECK) && !defined(DUK_USE_HSTRING_EXTDATA) +#error config option DUK_USE_EXTSTR_INTERN_CHECK requires option DUK_USE_HSTRING_EXTDATA (which is missing) +#endif +#if defined(DUK_USE_FASTINT) && !defined(DUK_USE_64BIT_OPS) +#error config option DUK_USE_FASTINT requires option DUK_USE_64BIT_OPS (which is missing) +#endif +#if defined(DUK_USE_FILE_IO) +#error unsupported config option used (option has been removed): DUK_USE_FILE_IO +#endif +#if defined(DUK_USE_FULL_TVAL) +#error unsupported config option used (option has been removed): DUK_USE_FULL_TVAL +#endif +#if defined(DUK_USE_FUNCPTR_DEC16) && !defined(DUK_USE_FUNCPTR16) +#error config option DUK_USE_FUNCPTR_DEC16 requires option DUK_USE_FUNCPTR16 (which is missing) +#endif +#if defined(DUK_USE_FUNCPTR_ENC16) && !defined(DUK_USE_FUNCPTR16) +#error config option DUK_USE_FUNCPTR_ENC16 requires option DUK_USE_FUNCPTR16 (which is missing) +#endif +#if defined(DUK_USE_HASHBYTES_UNALIGNED_U32_ACCESS) +#error unsupported config option used (option has been removed): DUK_USE_HASHBYTES_UNALIGNED_U32_ACCESS +#endif +#if defined(DUK_USE_HEAPPTR16) && defined(DUK_USE_DEBUG) +#error config option DUK_USE_HEAPPTR16 conflicts with option DUK_USE_DEBUG (which is also defined) +#endif +#if defined(DUK_USE_HEAPPTR_DEC16) && !defined(DUK_USE_HEAPPTR16) +#error config option DUK_USE_HEAPPTR_DEC16 requires option DUK_USE_HEAPPTR16 (which is missing) +#endif +#if defined(DUK_USE_HEAPPTR_ENC16) && !defined(DUK_USE_HEAPPTR16) +#error config option DUK_USE_HEAPPTR_ENC16 requires option DUK_USE_HEAPPTR16 (which is missing) +#endif +#if defined(DUK_USE_INTEGER_BE) +#error unsupported config option used (option has been removed): DUK_USE_INTEGER_BE +#endif +#if defined(DUK_USE_INTEGER_BE) && defined(DUK_USE_INTEGER_LE) +#error config option DUK_USE_INTEGER_BE conflicts with option DUK_USE_INTEGER_LE (which is also defined) +#endif +#if defined(DUK_USE_INTEGER_BE) && defined(DUK_USE_INTEGER_ME) +#error config option DUK_USE_INTEGER_BE conflicts with option DUK_USE_INTEGER_ME (which is also defined) +#endif +#if defined(DUK_USE_INTEGER_LE) +#error unsupported config option used (option has been removed): DUK_USE_INTEGER_LE +#endif +#if defined(DUK_USE_INTEGER_LE) && defined(DUK_USE_INTEGER_BE) +#error config option DUK_USE_INTEGER_LE conflicts with option DUK_USE_INTEGER_BE (which is also defined) +#endif +#if defined(DUK_USE_INTEGER_LE) && defined(DUK_USE_INTEGER_ME) +#error config option DUK_USE_INTEGER_LE conflicts with option DUK_USE_INTEGER_ME (which is also defined) +#endif +#if defined(DUK_USE_INTEGER_ME) +#error unsupported config option used (option has been removed): DUK_USE_INTEGER_ME +#endif +#if defined(DUK_USE_INTEGER_ME) && defined(DUK_USE_INTEGER_LE) +#error config option DUK_USE_INTEGER_ME conflicts with option DUK_USE_INTEGER_LE (which is also defined) +#endif +#if defined(DUK_USE_INTEGER_ME) && defined(DUK_USE_INTEGER_BE) +#error config option DUK_USE_INTEGER_ME conflicts with option DUK_USE_INTEGER_BE (which is also defined) +#endif +#if defined(DUK_USE_MARKANDSWEEP_FINALIZER_TORTURE) +#error unsupported config option used (option has been removed): DUK_USE_MARKANDSWEEP_FINALIZER_TORTURE +#endif +#if defined(DUK_USE_MARK_AND_SWEEP) +#error unsupported config option used (option has been removed): DUK_USE_MARK_AND_SWEEP +#endif +#if defined(DUK_USE_MATH_FMAX) +#error unsupported config option used (option has been removed): DUK_USE_MATH_FMAX +#endif +#if defined(DUK_USE_MATH_FMIN) +#error unsupported config option used (option has been removed): DUK_USE_MATH_FMIN +#endif +#if defined(DUK_USE_MATH_ROUND) +#error unsupported config option used (option has been removed): DUK_USE_MATH_ROUND +#endif +#if defined(DUK_USE_MS_STRINGTABLE_RESIZE) +#error unsupported config option used (option has been removed): DUK_USE_MS_STRINGTABLE_RESIZE +#endif +#if defined(DUK_USE_NONSTD_ARRAY_CONCAT_TRAILER) +#error unsupported config option used (option has been removed): DUK_USE_NONSTD_ARRAY_CONCAT_TRAILER +#endif +#if defined(DUK_USE_NONSTD_ARRAY_MAP_TRAILER) +#error unsupported config option used (option has been removed): DUK_USE_NONSTD_ARRAY_MAP_TRAILER +#endif +#if defined(DUK_USE_NONSTD_REGEXP_DOLLAR_ESCAPE) +#error unsupported config option used (option has been removed): DUK_USE_NONSTD_REGEXP_DOLLAR_ESCAPE +#endif +#if defined(DUK_USE_NO_DOUBLE_ALIASING_SELFTEST) +#error unsupported config option used (option has been removed): DUK_USE_NO_DOUBLE_ALIASING_SELFTEST +#endif +#if defined(DUK_USE_OCTAL_SUPPORT) +#error unsupported config option used (option has been removed): DUK_USE_OCTAL_SUPPORT +#endif +#if defined(DUK_USE_PACKED_TVAL_POSSIBLE) +#error unsupported config option used (option has been removed): DUK_USE_PACKED_TVAL_POSSIBLE +#endif +#if defined(DUK_USE_PANIC_ABORT) +#error unsupported config option used (option has been removed): DUK_USE_PANIC_ABORT +#endif +#if defined(DUK_USE_PANIC_EXIT) +#error unsupported config option used (option has been removed): DUK_USE_PANIC_EXIT +#endif +#if defined(DUK_USE_PANIC_HANDLER) +#error unsupported config option used (option has been removed): DUK_USE_PANIC_HANDLER +#endif +#if defined(DUK_USE_PANIC_SEGFAULT) +#error unsupported config option used (option has been removed): DUK_USE_PANIC_SEGFAULT +#endif +#if defined(DUK_USE_POW_NETBSD_WORKAROUND) +#error unsupported config option used (option has been removed): DUK_USE_POW_NETBSD_WORKAROUND +#endif +#if defined(DUK_USE_RDTSC) +#error unsupported config option used (option has been removed): DUK_USE_RDTSC +#endif +#if defined(DUK_USE_REFZERO_FINALIZER_TORTURE) +#error unsupported config option used (option has been removed): DUK_USE_REFZERO_FINALIZER_TORTURE +#endif +#if defined(DUK_USE_ROM_GLOBAL_CLONE) && !defined(DUK_USE_ROM_STRINGS) +#error config option DUK_USE_ROM_GLOBAL_CLONE requires option DUK_USE_ROM_STRINGS (which is missing) +#endif +#if defined(DUK_USE_ROM_GLOBAL_CLONE) && !defined(DUK_USE_ROM_OBJECTS) +#error config option DUK_USE_ROM_GLOBAL_CLONE requires option DUK_USE_ROM_OBJECTS (which is missing) +#endif +#if defined(DUK_USE_ROM_GLOBAL_CLONE) && defined(DUK_USE_ROM_GLOBAL_INHERIT) +#error config option DUK_USE_ROM_GLOBAL_CLONE conflicts with option DUK_USE_ROM_GLOBAL_INHERIT (which is also defined) +#endif +#if defined(DUK_USE_ROM_GLOBAL_INHERIT) && !defined(DUK_USE_ROM_STRINGS) +#error config option DUK_USE_ROM_GLOBAL_INHERIT requires option DUK_USE_ROM_STRINGS (which is missing) +#endif +#if defined(DUK_USE_ROM_GLOBAL_INHERIT) && !defined(DUK_USE_ROM_OBJECTS) +#error config option DUK_USE_ROM_GLOBAL_INHERIT requires option DUK_USE_ROM_OBJECTS (which is missing) +#endif +#if defined(DUK_USE_ROM_GLOBAL_INHERIT) && defined(DUK_USE_ROM_GLOBAL_CLONE) +#error config option DUK_USE_ROM_GLOBAL_INHERIT conflicts with option DUK_USE_ROM_GLOBAL_CLONE (which is also defined) +#endif +#if defined(DUK_USE_ROM_OBJECTS) && !defined(DUK_USE_ROM_STRINGS) +#error config option DUK_USE_ROM_OBJECTS requires option DUK_USE_ROM_STRINGS (which is missing) +#endif +#if defined(DUK_USE_ROM_STRINGS) && !defined(DUK_USE_ROM_OBJECTS) +#error config option DUK_USE_ROM_STRINGS requires option DUK_USE_ROM_OBJECTS (which is missing) +#endif +#if defined(DUK_USE_SETJMP) +#error unsupported config option used (option has been removed): DUK_USE_SETJMP +#endif +#if defined(DUK_USE_SIGSETJMP) +#error unsupported config option used (option has been removed): DUK_USE_SIGSETJMP +#endif +#if defined(DUK_USE_STRTAB_CHAIN) +#error unsupported config option used (option has been removed): DUK_USE_STRTAB_CHAIN +#endif +#if defined(DUK_USE_STRTAB_CHAIN_SIZE) +#error unsupported config option used (option has been removed): DUK_USE_STRTAB_CHAIN_SIZE +#endif +#if defined(DUK_USE_STRTAB_CHAIN_SIZE) && !defined(DUK_USE_STRTAB_CHAIN) +#error config option DUK_USE_STRTAB_CHAIN_SIZE requires option DUK_USE_STRTAB_CHAIN (which is missing) +#endif +#if defined(DUK_USE_STRTAB_PROBE) +#error unsupported config option used (option has been removed): DUK_USE_STRTAB_PROBE +#endif +#if defined(DUK_USE_STRTAB_PTRCOMP) && !defined(DUK_USE_HEAPPTR16) +#error config option DUK_USE_STRTAB_PTRCOMP requires option DUK_USE_HEAPPTR16 (which is missing) +#endif +#if defined(DUK_USE_TAILCALL) && defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) +#error config option DUK_USE_TAILCALL conflicts with option DUK_USE_NONSTD_FUNC_CALLER_PROPERTY (which is also defined) +#endif +#if defined(DUK_USE_UNALIGNED_ACCESSES_POSSIBLE) +#error unsupported config option used (option has been removed): DUK_USE_UNALIGNED_ACCESSES_POSSIBLE +#endif +#if defined(DUK_USE_UNDERSCORE_SETJMP) +#error unsupported config option used (option has been removed): DUK_USE_UNDERSCORE_SETJMP +#endif +#if defined(DUK_USE_USER_DECLARE) +#error unsupported config option used (option has been removed): DUK_USE_USER_DECLARE +#endif +#if defined(DUK_USE_USER_INITJS) +#error unsupported config option used (option has been removed): DUK_USE_USER_INITJS +#endif + +#if defined(DUK_USE_CPP_EXCEPTIONS) && !defined(__cplusplus) +#error DUK_USE_CPP_EXCEPTIONS enabled but not compiling with a C++ compiler +#endif + +/* + * Convert DUK_USE_BYTEORDER, from whatever source, into currently used + * internal defines. If detection failed, #error out. + */ + +#if defined(DUK_USE_BYTEORDER) +#if (DUK_USE_BYTEORDER == 1) +#define DUK_USE_INTEGER_LE +#define DUK_USE_DOUBLE_LE +#elif (DUK_USE_BYTEORDER == 2) +#define DUK_USE_INTEGER_LE /* integer endianness is little on purpose */ +#define DUK_USE_DOUBLE_ME +#elif (DUK_USE_BYTEORDER == 3) +#define DUK_USE_INTEGER_BE +#define DUK_USE_DOUBLE_BE +#else +#error unsupported: byte order invalid +#endif /* byte order */ +#else +#error unsupported: byte order detection failed +#endif /* defined(DUK_USE_BYTEORDER) */ + +#endif /* DUK_CONFIG_H_INCLUDED */ diff --git a/core/src/duktape/duk_console.c b/core/src/duktape/duk_console.c new file mode 100644 index 00000000..70ff6f05 --- /dev/null +++ b/core/src/duktape/duk_console.c @@ -0,0 +1,185 @@ +/* + * Minimal 'console' binding. + * + * https://github.com/DeveloperToolsWG/console-object/blob/master/api.md + * https://developers.google.com/web/tools/chrome-devtools/debug/console/console-reference + * https://developer.mozilla.org/en/docs/Web/API/console + */ + +#include +#include +#include "duktape.h" +#include "duk_console.h" + +/* XXX: Add some form of log level filtering. */ + +/* XXX: Should all output be written via e.g. console.write(formattedMsg)? + * This would make it easier for user code to redirect all console output + * to a custom backend. + */ + +/* XXX: Init console object using duk_def_prop() when that call is available. */ + +static duk_ret_t duk__console_log_helper(duk_context *ctx, const char *error_name) { + duk_uint_t flags = (duk_uint_t) duk_get_current_magic(ctx); + FILE *output = (flags & DUK_CONSOLE_STDOUT_ONLY) ? stdout : stderr; + duk_idx_t n = duk_get_top(ctx); + duk_idx_t i; + + duk_get_global_string(ctx, "console"); + duk_get_prop_string(ctx, -1, "format"); + + for (i = 0; i < n; i++) { + if (duk_check_type_mask(ctx, i, DUK_TYPE_MASK_OBJECT)) { + /* Slow path formatting. */ + duk_dup(ctx, -1); /* console.format */ + duk_dup(ctx, i); + duk_call(ctx, 1); + duk_replace(ctx, i); /* arg[i] = console.format(arg[i]); */ + } + } + + duk_pop_2(ctx); + + duk_push_string(ctx, " "); + duk_insert(ctx, 0); + duk_join(ctx, n); + + if (error_name) { + duk_push_error_object(ctx, DUK_ERR_ERROR, "%s", duk_require_string(ctx, -1)); + duk_push_string(ctx, "name"); + duk_push_string(ctx, error_name); + duk_def_prop(ctx, -3, DUK_DEFPROP_FORCE | DUK_DEFPROP_HAVE_VALUE); /* to get e.g. 'Trace: 1 2 3' */ + duk_get_prop_string(ctx, -1, "stack"); + } + + fprintf(output, "%s\n", duk_to_string(ctx, -1)); + if (flags & DUK_CONSOLE_FLUSH) { + fflush(output); + } + return 0; +} + +static duk_ret_t duk__console_assert(duk_context *ctx) { + if (duk_to_boolean(ctx, 0)) { + return 0; + } + duk_remove(ctx, 0); + + return duk__console_log_helper(ctx, "AssertionError"); +} + +static duk_ret_t duk__console_log(duk_context *ctx) { + return duk__console_log_helper(ctx, NULL); +} + +static duk_ret_t duk__console_trace(duk_context *ctx) { + return duk__console_log_helper(ctx, "Trace"); +} + +static duk_ret_t duk__console_info(duk_context *ctx) { + return duk__console_log_helper(ctx, NULL); +} + +static duk_ret_t duk__console_warn(duk_context *ctx) { + return duk__console_log_helper(ctx, NULL); +} + +static duk_ret_t duk__console_error(duk_context *ctx) { + return duk__console_log_helper(ctx, "Error"); +} + +static duk_ret_t duk__console_dir(duk_context *ctx) { + /* For now, just share the formatting of .log() */ + return duk__console_log_helper(ctx, 0); +} + +static void duk__console_reg_vararg_func(duk_context *ctx, duk_c_function func, const char *name, duk_uint_t flags) { + duk_push_c_function(ctx, func, DUK_VARARGS); + duk_push_string(ctx, "name"); + duk_push_string(ctx, name); + duk_def_prop(ctx, -3, DUK_DEFPROP_HAVE_VALUE | DUK_DEFPROP_FORCE); /* Improve stacktraces by displaying function name */ + duk_set_magic(ctx, -1, (duk_int_t) flags); + duk_put_prop_string(ctx, -2, name); +} + +void duk_console_init(duk_context *ctx, duk_uint_t flags) { + duk_uint_t flags_orig; + + /* If both DUK_CONSOLE_STDOUT_ONLY and DUK_CONSOLE_STDERR_ONLY where specified, + * just turn off DUK_CONSOLE_STDOUT_ONLY and keep DUK_CONSOLE_STDERR_ONLY. + */ + if ((flags & DUK_CONSOLE_STDOUT_ONLY) && (flags & DUK_CONSOLE_STDERR_ONLY)) { + flags &= ~DUK_CONSOLE_STDOUT_ONLY; + } + /* Remember the (possibly corrected) flags we received. */ + flags_orig = flags; + + duk_push_object(ctx); + + /* Custom function to format objects; user can replace. + * For now, try JX-formatting and if that fails, fall back + * to ToString(v). + */ + duk_eval_string(ctx, + "(function (E) {" + "return function format(v){" + "try{" + "return E('jx',v);" + "}catch(e){" + "return String(v);" /* String() allows symbols, ToString() internal algorithm doesn't. */ + "}" + "};" + "})(Duktape.enc)"); + duk_put_prop_string(ctx, -2, "format"); + + flags = flags_orig; + if (!(flags & DUK_CONSOLE_STDOUT_ONLY) && !(flags & DUK_CONSOLE_STDERR_ONLY)) { + /* No output indicators were specified; these levels go to stdout. */ + flags |= DUK_CONSOLE_STDOUT_ONLY; + } + duk__console_reg_vararg_func(ctx, duk__console_assert, "assert", flags); + duk__console_reg_vararg_func(ctx, duk__console_log, "log", flags); + duk__console_reg_vararg_func(ctx, duk__console_log, "debug", flags); /* alias to console.log */ + duk__console_reg_vararg_func(ctx, duk__console_trace, "trace", flags); + duk__console_reg_vararg_func(ctx, duk__console_info, "info", flags); + + flags = flags_orig; + if (!(flags & DUK_CONSOLE_STDOUT_ONLY) && !(flags & DUK_CONSOLE_STDERR_ONLY)) { + /* No output indicators were specified; these levels go to stderr. */ + flags |= DUK_CONSOLE_STDERR_ONLY; + } + duk__console_reg_vararg_func(ctx, duk__console_warn, "warn", flags); + duk__console_reg_vararg_func(ctx, duk__console_error, "error", flags); + duk__console_reg_vararg_func(ctx, duk__console_error, "exception", flags); /* alias to console.error */ + duk__console_reg_vararg_func(ctx, duk__console_dir, "dir", flags); + + duk_put_global_string(ctx, "console"); + + /* Proxy wrapping: ensures any undefined console method calls are + * ignored silently. This was required specifically by the + * DeveloperToolsWG proposal (and was implemented also by Firefox: + * https://bugzilla.mozilla.org/show_bug.cgi?id=629607). This is + * apparently no longer the preferred way of implementing console. + * When Proxy is enabled, whitelist at least .toJSON() to avoid + * confusing JX serialization of the console object. + */ + + if (flags & DUK_CONSOLE_PROXY_WRAPPER) { + /* Tolerate failure to initialize Proxy wrapper in case + * Proxy support is disabled. + */ + (void) duk_peval_string_noresult(ctx, + "(function(){" + "var D=function(){};" + "var W={toJSON:true};" /* whitelisted */ + "console=new Proxy(console,{" + "get:function(t,k){" + "var v=t[k];" + "return typeof v==='function'||W[k]?v:D;" + "}" + "});" + "})();" + ); + } +} diff --git a/core/src/duktape/duk_console.h b/core/src/duktape/duk_console.h new file mode 100644 index 00000000..d341e226 --- /dev/null +++ b/core/src/duktape/duk_console.h @@ -0,0 +1,29 @@ +#if !defined(DUK_CONSOLE_H_INCLUDED) +#define DUK_CONSOLE_H_INCLUDED + +#include "duktape.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Use a proxy wrapper to make undefined methods (console.foo()) no-ops. */ +#define DUK_CONSOLE_PROXY_WRAPPER (1U << 0) + +/* Flush output after every call. */ +#define DUK_CONSOLE_FLUSH (1U << 1) + +/* Send output to stdout only (default is mixed stdout/stderr). */ +#define DUK_CONSOLE_STDOUT_ONLY (1U << 2) + +/* Send output to stderr only (default is mixed stdout/stderr). */ +#define DUK_CONSOLE_STDERR_ONLY (1U << 3) + +/* Initialize the console system */ +extern void duk_console_init(duk_context *ctx, duk_uint_t flags); + +#if defined(__cplusplus) +} +#endif /* end 'extern "C"' wrapper */ + +#endif /* DUK_CONSOLE_H_INCLUDED */ diff --git a/core/src/duktape/duktape.c b/core/src/duktape/duktape.c new file mode 100644 index 00000000..366883c5 --- /dev/null +++ b/core/src/duktape/duktape.c @@ -0,0 +1,99755 @@ +/* + * Single source autogenerated distributable for Duktape 2.5.0. + * + * Git commit 6001888049cb42656f8649db020e804bcdeca6a7 (v2.5.0). + * Git branch master. + * + * See Duktape AUTHORS.rst and LICENSE.txt for copyright and + * licensing information. + */ + +/* LICENSE.txt */ +/* +* =============== +* Duktape license +* =============== +* +* (http://opensource.org/licenses/MIT) +* +* Copyright (c) 2013-2019 by Duktape authors (see AUTHORS.rst) +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + +/* AUTHORS.rst */ +/* +* =============== +* Duktape authors +* =============== +* +* Copyright +* ========= +* +* Duktape copyrights are held by its authors. Each author has a copyright +* to their contribution, and agrees to irrevocably license the contribution +* under the Duktape ``LICENSE.txt``. +* +* Authors +* ======= +* +* Please include an e-mail address, a link to your GitHub profile, or something +* similar to allow your contribution to be identified accurately. +* +* The following people have contributed code, website contents, or Wiki contents, +* and agreed to irrevocably license their contributions under the Duktape +* ``LICENSE.txt`` (in order of appearance): +* +* * Sami Vaarala +* * Niki Dobrev +* * Andreas \u00d6man +* * L\u00e1szl\u00f3 Lang\u00f3 +* * Legimet +* * Karl Skomski +* * Bruce Pascoe +* * Ren\u00e9 Hollander +* * Julien Hamaide (https://github.com/crazyjul) +* * Sebastian G\u00f6tte (https://github.com/jaseg) +* * Tomasz Magulski (https://github.com/magul) +* * \D. Bohdan (https://github.com/dbohdan) +* * Ond\u0159ej Jirman (https://github.com/megous) +* * Sa\u00fal Ibarra Corretg\u00e9 +* * Jeremy HU +* * Ole Andr\u00e9 Vadla Ravn\u00e5s (https://github.com/oleavr) +* * Harold Brenes (https://github.com/harold-b) +* * Oliver Crow (https://github.com/ocrow) +* * Jakub Ch\u0142api\u0144ski (https://github.com/jchlapinski) +* * Brett Vickers (https://github.com/beevik) +* * Dominik Okwieka (https://github.com/okitec) +* * Remko Tron\u00e7on (https://el-tramo.be) +* * Romero Malaquias (rbsm@ic.ufal.br) +* * Michael Drake +* * Steven Don (https://github.com/shdon) +* * Simon Stone (https://github.com/sstone1) +* * \J. McC. (https://github.com/jmhmccr) +* * Jakub Nowakowski (https://github.com/jimvonmoon) +* * Tommy Nguyen (https://github.com/tn0502) +* * Fabrice Fontaine (https://github.com/ffontaine) +* * Christopher Hiller (https://github.com/boneskull) +* * Gonzalo Diethelm (https://github.com/gonzus) +* * Michal Kasperek (https://github.com/michalkas) +* * Andrew Janke (https://github.com/apjanke) +* * Steve Fan (https://github.com/stevefan1999) +* * Edward Betts (https://github.com/edwardbetts) +* * Ozhan Duz (https://github.com/webfolderio) +* * Akos Kiss (https://github.com/akosthekiss) +* * TheBrokenRail (https://github.com/TheBrokenRail) +* * Jesse Doyle (https://github.com/jessedoyle) +* * Gero Kuehn (https://github.com/dc6jgk) +* * James Swift (https://github.com/phraemer) +* * Luis de Bethencourt (https://github.com/luisbg) +* * Ian Whyman (https://github.com/v00d00) +* * Rick Sayre (https://github.com/whorfin) +* +* Other contributions +* =================== +* +* The following people have contributed something other than code (e.g. reported +* bugs, provided ideas, etc; roughly in order of appearance): +* +* * Greg Burns +* * Anthony Rabine +* * Carlos Costa +* * Aur\u00e9lien Bouilland +* * Preet Desai (Pris Matic) +* * judofyr (http://www.reddit.com/user/judofyr) +* * Jason Woofenden +* * Micha\u0142 Przyby\u015b +* * Anthony Howe +* * Conrad Pankoff +* * Jim Schimpf +* * Rajaran Gaunker (https://github.com/zimbabao) +* * Andreas \u00d6man +* * Doug Sanden +* * Josh Engebretson (https://github.com/JoshEngebretson) +* * Remo Eichenberger (https://github.com/remoe) +* * Mamod Mehyar (https://github.com/mamod) +* * David Demelier (https://github.com/markand) +* * Tim Caswell (https://github.com/creationix) +* * Mitchell Blank Jr (https://github.com/mitchblank) +* * https://github.com/yushli +* * Seo Sanghyeon (https://github.com/sanxiyn) +* * Han ChoongWoo (https://github.com/tunz) +* * Joshua Peek (https://github.com/josh) +* * Bruce E. Pascoe (https://github.com/fatcerberus) +* * https://github.com/Kelledin +* * https://github.com/sstruchtrup +* * Michael Drake (https://github.com/tlsa) +* * https://github.com/chris-y +* * Laurent Zubiaur (https://github.com/lzubiaur) +* * Neil Kolban (https://github.com/nkolban) +* * Wilhelm Wanecek (https://github.com/wanecek) +* * Andrew Janke (https://github.com/apjanke) +* * Unamer (https://github.com/unamer) +* * Karl Dahlke (eklhad@gmail.com) +* +* If you are accidentally missing from this list, send me an e-mail +* (``sami.vaarala@iki.fi``) and I'll fix the omission. +*/ + +#line 1 "duk_replacements.c" +/* + * Replacements for missing platform functions. + * + * Unlike the originals, fpclassify() and signbit() replacements don't + * work on any floating point types, only doubles. The C typing here + * mimics the standard prototypes. + */ + +/* #include duk_internal.h */ +#line 1 "duk_internal.h" +/* + * Top-level include file to be used for all (internal) source files. + * + * Source files should not include individual header files, as they + * have not been designed to be individually included. + */ + +#if !defined(DUK_INTERNAL_H_INCLUDED) +#define DUK_INTERNAL_H_INCLUDED + +/* + * The 'duktape.h' header provides the public API, but also handles all + * compiler and platform specific feature detection, Duktape feature + * resolution, inclusion of system headers, etc. These have been merged + * because the public API is also dependent on e.g. detecting appropriate + * C types which is quite platform/compiler specific especially for a non-C99 + * build. The public API is also dependent on the resolved feature set. + * + * Some actions taken by the merged header (such as including system headers) + * are not appropriate for building a user application. The define + * DUK_COMPILING_DUKTAPE allows the merged header to skip/include some + * sections depending on what is being built. + */ + +#define DUK_COMPILING_DUKTAPE +#include "duktape.h" + +/* + * Duktape includes (other than duk_features.h) + * + * The header files expect to be included in an order which satisfies header + * dependencies correctly (the headers themselves don't include any other + * includes). Forward declarations are used to break circular struct/typedef + * dependencies. + */ + +/* #include duk_dblunion.h */ +#line 1 "duk_dblunion.h" +/* + * Union to access IEEE double memory representation, indexes for double + * memory representation, and some macros for double manipulation. + * + * Also used by packed duk_tval. Use a union for bit manipulation to + * minimize aliasing issues in practice. The C99 standard does not + * guarantee that this should work, but it's a very widely supported + * practice for low level manipulation. + * + * IEEE double format summary: + * + * seeeeeee eeeeffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff + * A B C D E F G H + * + * s sign bit + * eee... exponent field + * fff... fraction + * + * See http://en.wikipedia.org/wiki/Double_precision_floating-point_format. + * + * NaNs are represented as exponent 0x7ff and mantissa != 0. The NaN is a + * signaling NaN when the highest bit of the mantissa is zero, and a quiet + * NaN when the highest bit is set. + * + * At least three memory layouts are relevant here: + * + * A B C D E F G H Big endian (e.g. 68k) DUK_USE_DOUBLE_BE + * H G F E D C B A Little endian (e.g. x86) DUK_USE_DOUBLE_LE + * D C B A H G F E Mixed endian (e.g. ARM FPA) DUK_USE_DOUBLE_ME + * + * Legacy ARM (FPA) is a special case: ARM double values are in mixed + * endian format while ARM duk_uint64_t values are in standard little endian + * format (H G F E D C B A). When a double is read as a duk_uint64_t + * from memory, the register will contain the (logical) value + * E F G H A B C D. This requires some special handling below. + * See http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0056d/Bcfhgcgd.html. + * + * Indexes of various types (8-bit, 16-bit, 32-bit) in memory relative to + * the logical (big endian) order: + * + * byte order duk_uint8_t duk_uint16_t duk_uint32_t + * BE 01234567 0123 01 + * LE 76543210 3210 10 + * ME (ARM) 32107654 1032 01 + * + * Some processors may alter NaN values in a floating point load+store. + * For instance, on X86 a FLD + FSTP may convert a signaling NaN to a + * quiet one. This is catastrophic when NaN space is used in packed + * duk_tval values. See: misc/clang_aliasing.c. + */ + +#if !defined(DUK_DBLUNION_H_INCLUDED) +#define DUK_DBLUNION_H_INCLUDED + +/* + * Union for accessing double parts, also serves as packed duk_tval + */ + +union duk_double_union { + double d; + float f[2]; +#if defined(DUK_USE_64BIT_OPS) + duk_uint64_t ull[1]; +#endif + duk_uint32_t ui[2]; + duk_uint16_t us[4]; + duk_uint8_t uc[8]; +#if defined(DUK_USE_PACKED_TVAL) + void *vp[2]; /* used by packed duk_tval, assumes sizeof(void *) == 4 */ +#endif +}; + +typedef union duk_double_union duk_double_union; + +/* + * Indexes of various types with respect to big endian (logical) layout + */ + +#if defined(DUK_USE_DOUBLE_LE) +#if defined(DUK_USE_64BIT_OPS) +#define DUK_DBL_IDX_ULL0 0 +#endif +#define DUK_DBL_IDX_UI0 1 +#define DUK_DBL_IDX_UI1 0 +#define DUK_DBL_IDX_US0 3 +#define DUK_DBL_IDX_US1 2 +#define DUK_DBL_IDX_US2 1 +#define DUK_DBL_IDX_US3 0 +#define DUK_DBL_IDX_UC0 7 +#define DUK_DBL_IDX_UC1 6 +#define DUK_DBL_IDX_UC2 5 +#define DUK_DBL_IDX_UC3 4 +#define DUK_DBL_IDX_UC4 3 +#define DUK_DBL_IDX_UC5 2 +#define DUK_DBL_IDX_UC6 1 +#define DUK_DBL_IDX_UC7 0 +#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0 /* packed tval */ +#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1 /* packed tval */ +#elif defined(DUK_USE_DOUBLE_BE) +#if defined(DUK_USE_64BIT_OPS) +#define DUK_DBL_IDX_ULL0 0 +#endif +#define DUK_DBL_IDX_UI0 0 +#define DUK_DBL_IDX_UI1 1 +#define DUK_DBL_IDX_US0 0 +#define DUK_DBL_IDX_US1 1 +#define DUK_DBL_IDX_US2 2 +#define DUK_DBL_IDX_US3 3 +#define DUK_DBL_IDX_UC0 0 +#define DUK_DBL_IDX_UC1 1 +#define DUK_DBL_IDX_UC2 2 +#define DUK_DBL_IDX_UC3 3 +#define DUK_DBL_IDX_UC4 4 +#define DUK_DBL_IDX_UC5 5 +#define DUK_DBL_IDX_UC6 6 +#define DUK_DBL_IDX_UC7 7 +#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0 /* packed tval */ +#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1 /* packed tval */ +#elif defined(DUK_USE_DOUBLE_ME) +#if defined(DUK_USE_64BIT_OPS) +#define DUK_DBL_IDX_ULL0 0 /* not directly applicable, byte order differs from a double */ +#endif +#define DUK_DBL_IDX_UI0 0 +#define DUK_DBL_IDX_UI1 1 +#define DUK_DBL_IDX_US0 1 +#define DUK_DBL_IDX_US1 0 +#define DUK_DBL_IDX_US2 3 +#define DUK_DBL_IDX_US3 2 +#define DUK_DBL_IDX_UC0 3 +#define DUK_DBL_IDX_UC1 2 +#define DUK_DBL_IDX_UC2 1 +#define DUK_DBL_IDX_UC3 0 +#define DUK_DBL_IDX_UC4 7 +#define DUK_DBL_IDX_UC5 6 +#define DUK_DBL_IDX_UC6 5 +#define DUK_DBL_IDX_UC7 4 +#define DUK_DBL_IDX_VP0 DUK_DBL_IDX_UI0 /* packed tval */ +#define DUK_DBL_IDX_VP1 DUK_DBL_IDX_UI1 /* packed tval */ +#else +#error internal error +#endif + +/* + * Helper macros for reading/writing memory representation parts, used + * by duk_numconv.c and duk_tval.h. + */ + +#define DUK_DBLUNION_SET_DOUBLE(u,v) do { \ + (u)->d = (v); \ + } while (0) + +#define DUK_DBLUNION_SET_HIGH32(u,v) do { \ + (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) (v); \ + } while (0) + +#if defined(DUK_USE_64BIT_OPS) +#if defined(DUK_USE_DOUBLE_ME) +#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \ + (u)->ull[DUK_DBL_IDX_ULL0] = (duk_uint64_t) (v); \ + } while (0) +#else +#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \ + (u)->ull[DUK_DBL_IDX_ULL0] = ((duk_uint64_t) (v)) << 32; \ + } while (0) +#endif +#else /* DUK_USE_64BIT_OPS */ +#define DUK_DBLUNION_SET_HIGH32_ZERO_LOW32(u,v) do { \ + (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) (v); \ + (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) 0; \ + } while (0) +#endif /* DUK_USE_64BIT_OPS */ + +#define DUK_DBLUNION_SET_LOW32(u,v) do { \ + (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (v); \ + } while (0) + +#define DUK_DBLUNION_GET_DOUBLE(u) ((u)->d) +#define DUK_DBLUNION_GET_HIGH32(u) ((u)->ui[DUK_DBL_IDX_UI0]) +#define DUK_DBLUNION_GET_LOW32(u) ((u)->ui[DUK_DBL_IDX_UI1]) + +#if defined(DUK_USE_64BIT_OPS) +#if defined(DUK_USE_DOUBLE_ME) +#define DUK_DBLUNION_SET_UINT64(u,v) do { \ + (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) ((v) >> 32); \ + (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (v); \ + } while (0) +#define DUK_DBLUNION_GET_UINT64(u) \ + ((((duk_uint64_t) (u)->ui[DUK_DBL_IDX_UI0]) << 32) | \ + ((duk_uint64_t) (u)->ui[DUK_DBL_IDX_UI1])) +#else +#define DUK_DBLUNION_SET_UINT64(u,v) do { \ + (u)->ull[DUK_DBL_IDX_ULL0] = (duk_uint64_t) (v); \ + } while (0) +#define DUK_DBLUNION_GET_UINT64(u) ((u)->ull[DUK_DBL_IDX_ULL0]) +#endif +#define DUK_DBLUNION_SET_INT64(u,v) DUK_DBLUNION_SET_UINT64((u), (duk_uint64_t) (v)) +#define DUK_DBLUNION_GET_INT64(u) ((duk_int64_t) DUK_DBLUNION_GET_UINT64((u))) +#endif /* DUK_USE_64BIT_OPS */ + +/* + * Double NaN manipulation macros related to NaN normalization needed when + * using the packed duk_tval representation. NaN normalization is necessary + * to keep double values compatible with the duk_tval format. + * + * When packed duk_tval is used, the NaN space is used to store pointers + * and other tagged values in addition to NaNs. Actual NaNs are normalized + * to a specific quiet NaN. The macros below are used by the implementation + * to check and normalize NaN values when they might be created. The macros + * are essentially NOPs when the non-packed duk_tval representation is used. + * + * A FULL check is exact and checks all bits. A NOTFULL check is used by + * the packed duk_tval and works correctly for all NaNs except those that + * begin with 0x7ff0. Since the 'normalized NaN' values used with packed + * duk_tval begin with 0x7ff8, the partial check is reliable when packed + * duk_tval is used. The 0x7ff8 prefix means the normalized NaN will be a + * quiet NaN regardless of its remaining lower bits. + * + * The ME variant below is specifically for ARM byte order, which has the + * feature that while doubles have a mixed byte order (32107654), unsigned + * long long values has a little endian byte order (76543210). When writing + * a logical double value through a ULL pointer, the 32-bit words need to be + * swapped; hence the #if defined()s below for ULL writes with DUK_USE_DOUBLE_ME. + * This is not full ARM support but suffices for some environments. + */ + +#if defined(DUK_USE_64BIT_OPS) +#if defined(DUK_USE_DOUBLE_ME) +/* Macros for 64-bit ops + mixed endian doubles. */ +#define DUK__DBLUNION_SET_NAN_FULL(u) do { \ + (u)->ull[DUK_DBL_IDX_ULL0] = DUK_U64_CONSTANT(0x000000007ff80000); \ + } while (0) +#define DUK__DBLUNION_IS_NAN_FULL(u) \ + ((((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x000000007ff00000)) == DUK_U64_CONSTANT(0x000000007ff00000)) && \ + ((((u)->ull[DUK_DBL_IDX_ULL0]) & DUK_U64_CONSTANT(0xffffffff000fffff)) != 0)) +#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x000000007ff80000)) +#define DUK__DBLUNION_IS_ANYINF(u) \ + (((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0xffffffff7fffffff)) == DUK_U64_CONSTANT(0x000000007ff00000)) +#define DUK__DBLUNION_IS_POSINF(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x000000007ff00000)) +#define DUK__DBLUNION_IS_NEGINF(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x00000000fff00000)) +#define DUK__DBLUNION_IS_ANYZERO(u) \ + (((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0xffffffff7fffffff)) == DUK_U64_CONSTANT(0x0000000000000000)) +#define DUK__DBLUNION_IS_POSZERO(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x0000000000000000)) +#define DUK__DBLUNION_IS_NEGZERO(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x0000000080000000)) +#else +/* Macros for 64-bit ops + big/little endian doubles. */ +#define DUK__DBLUNION_SET_NAN_FULL(u) do { \ + (u)->ull[DUK_DBL_IDX_ULL0] = DUK_U64_CONSTANT(0x7ff8000000000000); \ + } while (0) +#define DUK__DBLUNION_IS_NAN_FULL(u) \ + ((((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x7ff0000000000000)) == DUK_U64_CONSTANT(0x7ff0000000000000)) && \ + ((((u)->ull[DUK_DBL_IDX_ULL0]) & DUK_U64_CONSTANT(0x000fffffffffffff)) != 0)) +#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x7ff8000000000000)) +#define DUK__DBLUNION_IS_ANYINF(u) \ + (((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x7fffffffffffffff)) == DUK_U64_CONSTANT(0x7ff0000000000000)) +#define DUK__DBLUNION_IS_POSINF(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x7ff0000000000000)) +#define DUK__DBLUNION_IS_NEGINF(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0xfff0000000000000)) +#define DUK__DBLUNION_IS_ANYZERO(u) \ + (((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x7fffffffffffffff)) == DUK_U64_CONSTANT(0x0000000000000000)) +#define DUK__DBLUNION_IS_POSZERO(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x0000000000000000)) +#define DUK__DBLUNION_IS_NEGZERO(u) \ + ((u)->ull[DUK_DBL_IDX_ULL0] == DUK_U64_CONSTANT(0x8000000000000000)) +#endif +#else /* DUK_USE_64BIT_OPS */ +/* Macros for no 64-bit ops, any endianness. */ +#define DUK__DBLUNION_SET_NAN_FULL(u) do { \ + (u)->ui[DUK_DBL_IDX_UI0] = (duk_uint32_t) 0x7ff80000UL; \ + (u)->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) 0x00000000UL; \ + } while (0) +#define DUK__DBLUNION_IS_NAN_FULL(u) \ + ((((u)->ui[DUK_DBL_IDX_UI0] & 0x7ff00000UL) == 0x7ff00000UL) && \ + (((u)->ui[DUK_DBL_IDX_UI0] & 0x000fffffUL) != 0 || \ + (u)->ui[DUK_DBL_IDX_UI1] != 0)) +#define DUK__DBLUNION_IS_NORMALIZED_NAN_FULL(u) \ + (((u)->ui[DUK_DBL_IDX_UI0] == 0x7ff80000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#define DUK__DBLUNION_IS_ANYINF(u) \ + ((((u)->ui[DUK_DBL_IDX_UI0] & 0x7fffffffUL) == 0x7ff00000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#define DUK__DBLUNION_IS_POSINF(u) \ + (((u)->ui[DUK_DBL_IDX_UI0] == 0x7ff00000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#define DUK__DBLUNION_IS_NEGINF(u) \ + (((u)->ui[DUK_DBL_IDX_UI0] == 0xfff00000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#define DUK__DBLUNION_IS_ANYZERO(u) \ + ((((u)->ui[DUK_DBL_IDX_UI0] & 0x7fffffffUL) == 0x00000000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#define DUK__DBLUNION_IS_POSZERO(u) \ + (((u)->ui[DUK_DBL_IDX_UI0] == 0x00000000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#define DUK__DBLUNION_IS_NEGZERO(u) \ + (((u)->ui[DUK_DBL_IDX_UI0] == 0x80000000UL) && \ + ((u)->ui[DUK_DBL_IDX_UI1] == 0x00000000UL)) +#endif /* DUK_USE_64BIT_OPS */ + +#define DUK__DBLUNION_SET_NAN_NOTFULL(u) do { \ + (u)->us[DUK_DBL_IDX_US0] = 0x7ff8UL; \ + } while (0) + +#define DUK__DBLUNION_IS_NAN_NOTFULL(u) \ + /* E == 0x7ff, topmost four bits of F != 0 => assume NaN */ \ + ((((u)->us[DUK_DBL_IDX_US0] & 0x7ff0UL) == 0x7ff0UL) && \ + (((u)->us[DUK_DBL_IDX_US0] & 0x000fUL) != 0x0000UL)) + +#define DUK__DBLUNION_IS_NORMALIZED_NAN_NOTFULL(u) \ + /* E == 0x7ff, F == 8 => normalized NaN */ \ + ((u)->us[DUK_DBL_IDX_US0] == 0x7ff8UL) + +#define DUK__DBLUNION_NORMALIZE_NAN_CHECK_FULL(u) do { \ + if (DUK__DBLUNION_IS_NAN_FULL((u))) { \ + DUK__DBLUNION_SET_NAN_FULL((u)); \ + } \ + } while (0) + +#define DUK__DBLUNION_NORMALIZE_NAN_CHECK_NOTFULL(u) do { \ + if (DUK__DBLUNION_IS_NAN_NOTFULL((u))) { \ + DUK__DBLUNION_SET_NAN_NOTFULL((u)); \ + } \ + } while (0) + +/* Concrete macros for NaN handling used by the implementation internals. + * Chosen so that they match the duk_tval representation: with a packed + * duk_tval, ensure NaNs are properly normalized; with a non-packed duk_tval + * these are essentially NOPs. + */ + +#if defined(DUK_USE_PACKED_TVAL) +#if defined(DUK_USE_FULL_TVAL) +#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) DUK__DBLUNION_NORMALIZE_NAN_CHECK_FULL((u)) +#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_FULL((u)) +#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NORMALIZED_NAN_FULL((u)) +#define DUK_DBLUNION_SET_NAN(d) DUK__DBLUNION_SET_NAN_FULL((d)) +#else +#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) DUK__DBLUNION_NORMALIZE_NAN_CHECK_NOTFULL((u)) +#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_NOTFULL((u)) +#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NORMALIZED_NAN_NOTFULL((u)) +#define DUK_DBLUNION_SET_NAN(d) DUK__DBLUNION_SET_NAN_NOTFULL((d)) +#endif +#define DUK_DBLUNION_IS_NORMALIZED(u) \ + (!DUK_DBLUNION_IS_NAN((u)) || /* either not a NaN */ \ + DUK_DBLUNION_IS_NORMALIZED_NAN((u))) /* or is a normalized NaN */ +#else /* DUK_USE_PACKED_TVAL */ +#define DUK_DBLUNION_NORMALIZE_NAN_CHECK(u) /* nop: no need to normalize */ +#define DUK_DBLUNION_IS_NAN(u) DUK__DBLUNION_IS_NAN_FULL((u)) /* (DUK_ISNAN((u)->d)) */ +#define DUK_DBLUNION_IS_NORMALIZED_NAN(u) DUK__DBLUNION_IS_NAN_FULL((u)) /* (DUK_ISNAN((u)->d)) */ +#define DUK_DBLUNION_IS_NORMALIZED(u) 1 /* all doubles are considered normalized */ +#define DUK_DBLUNION_SET_NAN(u) do { \ + /* in non-packed representation we don't care about which NaN is used */ \ + (u)->d = DUK_DOUBLE_NAN; \ + } while (0) +#endif /* DUK_USE_PACKED_TVAL */ + +#define DUK_DBLUNION_IS_ANYINF(u) DUK__DBLUNION_IS_ANYINF((u)) +#define DUK_DBLUNION_IS_POSINF(u) DUK__DBLUNION_IS_POSINF((u)) +#define DUK_DBLUNION_IS_NEGINF(u) DUK__DBLUNION_IS_NEGINF((u)) + +#define DUK_DBLUNION_IS_ANYZERO(u) DUK__DBLUNION_IS_ANYZERO((u)) +#define DUK_DBLUNION_IS_POSZERO(u) DUK__DBLUNION_IS_POSZERO((u)) +#define DUK_DBLUNION_IS_NEGZERO(u) DUK__DBLUNION_IS_NEGZERO((u)) + +/* XXX: native 64-bit byteswaps when available */ + +/* 64-bit byteswap, same operation independent of target endianness. */ +#define DUK_DBLUNION_BSWAP64(u) do { \ + duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \ + duk__bswaptmp1 = (u)->ui[0]; \ + duk__bswaptmp2 = (u)->ui[1]; \ + duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \ + duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \ + (u)->ui[0] = duk__bswaptmp2; \ + (u)->ui[1] = duk__bswaptmp1; \ + } while (0) + +/* Byteswap an IEEE double in the duk_double_union from host to network + * order. For a big endian target this is a no-op. + */ +#if defined(DUK_USE_DOUBLE_LE) +#define DUK_DBLUNION_DOUBLE_HTON(u) do { \ + duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \ + duk__bswaptmp1 = (u)->ui[0]; \ + duk__bswaptmp2 = (u)->ui[1]; \ + duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \ + duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \ + (u)->ui[0] = duk__bswaptmp2; \ + (u)->ui[1] = duk__bswaptmp1; \ + } while (0) +#elif defined(DUK_USE_DOUBLE_ME) +#define DUK_DBLUNION_DOUBLE_HTON(u) do { \ + duk_uint32_t duk__bswaptmp1, duk__bswaptmp2; \ + duk__bswaptmp1 = (u)->ui[0]; \ + duk__bswaptmp2 = (u)->ui[1]; \ + duk__bswaptmp1 = DUK_BSWAP32(duk__bswaptmp1); \ + duk__bswaptmp2 = DUK_BSWAP32(duk__bswaptmp2); \ + (u)->ui[0] = duk__bswaptmp1; \ + (u)->ui[1] = duk__bswaptmp2; \ + } while (0) +#elif defined(DUK_USE_DOUBLE_BE) +#define DUK_DBLUNION_DOUBLE_HTON(u) do { } while (0) +#else +#error internal error, double endianness insane +#endif + +/* Reverse operation is the same. */ +#define DUK_DBLUNION_DOUBLE_NTOH(u) DUK_DBLUNION_DOUBLE_HTON((u)) + +/* Some sign bit helpers. */ +#if defined(DUK_USE_64BIT_OPS) +#define DUK_DBLUNION_HAS_SIGNBIT(u) (((u)->ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x8000000000000000)) != 0) +#define DUK_DBLUNION_GET_SIGNBIT(u) (((u)->ull[DUK_DBL_IDX_ULL0] >> 63U)) +#else +#define DUK_DBLUNION_HAS_SIGNBIT(u) (((u)->ui[DUK_DBL_IDX_UI0] & 0x80000000UL) != 0) +#define DUK_DBLUNION_GET_SIGNBIT(u) (((u)->ui[DUK_DBL_IDX_UI0] >> 31U)) +#endif + +#endif /* DUK_DBLUNION_H_INCLUDED */ +/* #include duk_fltunion.h */ +#line 1 "duk_fltunion.h" +/* + * Union to access IEEE float memory representation. + */ + +#if !defined(DUK_FLTUNION_H_INCLUDED) +#define DUK_FLTUNION_H_INCLUDED + +/* #include duk_internal.h -> already included */ + +union duk_float_union { + float f; + duk_uint32_t ui[1]; + duk_uint16_t us[2]; + duk_uint8_t uc[4]; +}; + +typedef union duk_float_union duk_float_union; + +#if defined(DUK_USE_DOUBLE_LE) || defined(DUK_USE_DOUBLE_ME) +#define DUK_FLT_IDX_UI0 0 +#define DUK_FLT_IDX_US0 1 +#define DUK_FLT_IDX_US1 0 +#define DUK_FLT_IDX_UC0 3 +#define DUK_FLT_IDX_UC1 2 +#define DUK_FLT_IDX_UC2 1 +#define DUK_FLT_IDX_UC3 0 +#elif defined(DUK_USE_DOUBLE_BE) +#define DUK_FLT_IDX_UI0 0 +#define DUK_FLT_IDX_US0 0 +#define DUK_FLT_IDX_US1 1 +#define DUK_FLT_IDX_UC0 0 +#define DUK_FLT_IDX_UC1 1 +#define DUK_FLT_IDX_UC2 2 +#define DUK_FLT_IDX_UC3 3 +#else +#error internal error +#endif + +#endif /* DUK_FLTUNION_H_INCLUDED */ +/* #include duk_replacements.h */ +#line 1 "duk_replacements.h" +#if !defined(DUK_REPLACEMENTS_H_INCLUDED) +#define DUK_REPLACEMENTS_H_INCLUDED + +#if !defined(DUK_SINGLE_FILE) +#if defined(DUK_USE_COMPUTED_INFINITY) +DUK_INTERNAL_DECL double duk_computed_infinity; +#endif +#if defined(DUK_USE_COMPUTED_NAN) +DUK_INTERNAL_DECL double duk_computed_nan; +#endif +#endif /* !DUK_SINGLE_FILE */ + +#if defined(DUK_USE_REPL_FPCLASSIFY) +DUK_INTERNAL_DECL int duk_repl_fpclassify(double x); +#endif +#if defined(DUK_USE_REPL_SIGNBIT) +DUK_INTERNAL_DECL int duk_repl_signbit(double x); +#endif +#if defined(DUK_USE_REPL_ISFINITE) +DUK_INTERNAL_DECL int duk_repl_isfinite(double x); +#endif +#if defined(DUK_USE_REPL_ISNAN) +DUK_INTERNAL_DECL int duk_repl_isnan(double x); +#endif +#if defined(DUK_USE_REPL_ISINF) +DUK_INTERNAL_DECL int duk_repl_isinf(double x); +#endif + +#endif /* DUK_REPLACEMENTS_H_INCLUDED */ +/* #include duk_jmpbuf.h */ +#line 1 "duk_jmpbuf.h" +/* + * Wrapper for jmp_buf. + * + * This is used because jmp_buf is an array type for backward compatibility. + * Wrapping jmp_buf in a struct makes pointer references, sizeof, etc, + * behave more intuitively. + * + * http://en.wikipedia.org/wiki/Setjmp.h#Member_types + */ + +#if !defined(DUK_JMPBUF_H_INCLUDED) +#define DUK_JMPBUF_H_INCLUDED + +#if defined(DUK_USE_CPP_EXCEPTIONS) +struct duk_jmpbuf { + duk_small_int_t dummy; /* unused */ +}; +#else +struct duk_jmpbuf { + DUK_JMPBUF_TYPE jb; +}; +#endif + +#endif /* DUK_JMPBUF_H_INCLUDED */ +/* #include duk_exception.h */ +#line 1 "duk_exception.h" +/* + * Exceptions for Duktape internal throws when C++ exceptions are used + * for long control transfers. + */ + +#if !defined(DUK_EXCEPTION_H_INCLUDED) +#define DUK_EXCEPTION_H_INCLUDED + +#if defined(DUK_USE_CPP_EXCEPTIONS) +/* Internal exception used as a setjmp-longjmp replacement. User code should + * NEVER see or catch this exception, so it doesn't inherit from any base + * class which should minimize the chance of user code accidentally catching + * the exception. + */ +class duk_internal_exception { + /* intentionally empty */ +}; + +/* Fatal error, thrown as a specific C++ exception with C++ exceptions + * enabled. It is unsafe to continue; doing so may cause crashes or memory + * leaks. This is intended to be either uncaught, or caught by user code + * aware of the "unsafe to continue" semantics. + */ +class duk_fatal_exception : public virtual std::runtime_error { + public: + duk_fatal_exception(const char *message) : std::runtime_error(message) {} +}; +#endif + +#endif /* DUK_EXCEPTION_H_INCLUDED */ +/* #include duk_forwdecl.h */ +#line 1 "duk_forwdecl.h" +/* + * Forward declarations for all Duktape structures. + */ + +#if !defined(DUK_FORWDECL_H_INCLUDED) +#define DUK_FORWDECL_H_INCLUDED + +/* + * Forward declarations + */ + +#if defined(DUK_USE_CPP_EXCEPTIONS) +class duk_internal_exception; +#else +struct duk_jmpbuf; +#endif + +/* duk_tval intentionally skipped */ +struct duk_heaphdr; +struct duk_heaphdr_string; +struct duk_harray; +struct duk_hstring; +struct duk_hstring_external; +struct duk_hobject; +struct duk_hcompfunc; +struct duk_hnatfunc; +struct duk_hboundfunc; +struct duk_hthread; +struct duk_hbufobj; +struct duk_hdecenv; +struct duk_hobjenv; +struct duk_hproxy; +struct duk_hbuffer; +struct duk_hbuffer_fixed; +struct duk_hbuffer_dynamic; +struct duk_hbuffer_external; + +struct duk_propaccessor; +union duk_propvalue; +struct duk_propdesc; + +struct duk_heap; +struct duk_breakpoint; + +struct duk_activation; +struct duk_catcher; +struct duk_ljstate; +struct duk_strcache_entry; +struct duk_litcache_entry; +struct duk_strtab_entry; + +#if defined(DUK_USE_DEBUG) +struct duk_fixedbuffer; +#endif + +struct duk_bitdecoder_ctx; +struct duk_bitencoder_ctx; +struct duk_bufwriter_ctx; + +struct duk_token; +struct duk_re_token; +struct duk_lexer_point; +struct duk_lexer_ctx; +struct duk_lexer_codepoint; + +struct duk_compiler_instr; +struct duk_compiler_func; +struct duk_compiler_ctx; + +struct duk_re_matcher_ctx; +struct duk_re_compiler_ctx; + +#if defined(DUK_USE_CPP_EXCEPTIONS) +/* no typedef */ +#else +typedef struct duk_jmpbuf duk_jmpbuf; +#endif + +/* duk_tval intentionally skipped */ +typedef struct duk_heaphdr duk_heaphdr; +typedef struct duk_heaphdr_string duk_heaphdr_string; +typedef struct duk_harray duk_harray; +typedef struct duk_hstring duk_hstring; +typedef struct duk_hstring_external duk_hstring_external; +typedef struct duk_hobject duk_hobject; +typedef struct duk_hcompfunc duk_hcompfunc; +typedef struct duk_hnatfunc duk_hnatfunc; +typedef struct duk_hboundfunc duk_hboundfunc; +typedef struct duk_hthread duk_hthread; +typedef struct duk_hbufobj duk_hbufobj; +typedef struct duk_hdecenv duk_hdecenv; +typedef struct duk_hobjenv duk_hobjenv; +typedef struct duk_hproxy duk_hproxy; +typedef struct duk_hbuffer duk_hbuffer; +typedef struct duk_hbuffer_fixed duk_hbuffer_fixed; +typedef struct duk_hbuffer_dynamic duk_hbuffer_dynamic; +typedef struct duk_hbuffer_external duk_hbuffer_external; + +typedef struct duk_propaccessor duk_propaccessor; +typedef union duk_propvalue duk_propvalue; +typedef struct duk_propdesc duk_propdesc; + +typedef struct duk_heap duk_heap; +typedef struct duk_breakpoint duk_breakpoint; + +typedef struct duk_activation duk_activation; +typedef struct duk_catcher duk_catcher; +typedef struct duk_ljstate duk_ljstate; +typedef struct duk_strcache_entry duk_strcache_entry; +typedef struct duk_litcache_entry duk_litcache_entry; +typedef struct duk_strtab_entry duk_strtab_entry; + +#if defined(DUK_USE_DEBUG) +typedef struct duk_fixedbuffer duk_fixedbuffer; +#endif + +typedef struct duk_bitdecoder_ctx duk_bitdecoder_ctx; +typedef struct duk_bitencoder_ctx duk_bitencoder_ctx; +typedef struct duk_bufwriter_ctx duk_bufwriter_ctx; + +typedef struct duk_token duk_token; +typedef struct duk_re_token duk_re_token; +typedef struct duk_lexer_point duk_lexer_point; +typedef struct duk_lexer_ctx duk_lexer_ctx; +typedef struct duk_lexer_codepoint duk_lexer_codepoint; + +typedef struct duk_compiler_instr duk_compiler_instr; +typedef struct duk_compiler_func duk_compiler_func; +typedef struct duk_compiler_ctx duk_compiler_ctx; + +typedef struct duk_re_matcher_ctx duk_re_matcher_ctx; +typedef struct duk_re_compiler_ctx duk_re_compiler_ctx; + +#endif /* DUK_FORWDECL_H_INCLUDED */ +/* #include duk_tval.h */ +#line 1 "duk_tval.h" +/* + * Tagged type definition (duk_tval) and accessor macros. + * + * Access all fields through the accessor macros, as the representation + * is quite tricky. + * + * There are two packed type alternatives: an 8-byte representation + * based on an IEEE double (preferred for compactness), and a 12-byte + * representation (portability). The latter is needed also in e.g. + * 64-bit environments (it usually pads to 16 bytes per value). + * + * Selecting the tagged type format involves many trade-offs (memory + * use, size and performance of generated code, portability, etc). + * + * NB: because macro arguments are often expressions, macros should + * avoid evaluating their argument more than once. + */ + +#if !defined(DUK_TVAL_H_INCLUDED) +#define DUK_TVAL_H_INCLUDED + +/* sanity */ +#if !defined(DUK_USE_DOUBLE_LE) && !defined(DUK_USE_DOUBLE_ME) && !defined(DUK_USE_DOUBLE_BE) +#error unsupported: cannot determine byte order variant +#endif + +#if defined(DUK_USE_PACKED_TVAL) +/* ======================================================================== */ + +/* + * Packed 8-byte representation + */ + +/* use duk_double_union as duk_tval directly */ +typedef union duk_double_union duk_tval; +typedef struct { + duk_uint16_t a; + duk_uint16_t b; + duk_uint16_t c; + duk_uint16_t d; +} duk_tval_unused; + +/* tags */ +#define DUK_TAG_NORMALIZED_NAN 0x7ff8UL /* the NaN variant we use */ +/* avoid tag 0xfff0, no risk of confusion with negative infinity */ +#define DUK_TAG_MIN 0xfff1UL +#if defined(DUK_USE_FASTINT) +#define DUK_TAG_FASTINT 0xfff1UL /* embed: integer value */ +#endif +#define DUK_TAG_UNUSED 0xfff2UL /* marker; not actual tagged value */ +#define DUK_TAG_UNDEFINED 0xfff3UL /* embed: nothing */ +#define DUK_TAG_NULL 0xfff4UL /* embed: nothing */ +#define DUK_TAG_BOOLEAN 0xfff5UL /* embed: 0 or 1 (false or true) */ +/* DUK_TAG_NUMBER would logically go here, but it has multiple 'tags' */ +#define DUK_TAG_POINTER 0xfff6UL /* embed: void ptr */ +#define DUK_TAG_LIGHTFUNC 0xfff7UL /* embed: func ptr */ +#define DUK_TAG_STRING 0xfff8UL /* embed: duk_hstring ptr */ +#define DUK_TAG_OBJECT 0xfff9UL /* embed: duk_hobject ptr */ +#define DUK_TAG_BUFFER 0xfffaUL /* embed: duk_hbuffer ptr */ +#define DUK_TAG_MAX 0xfffaUL + +/* for convenience */ +#define DUK_XTAG_BOOLEAN_FALSE 0xfff50000UL +#define DUK_XTAG_BOOLEAN_TRUE 0xfff50001UL + +#define DUK_TVAL_IS_VALID_TAG(tv) \ + (DUK_TVAL_GET_TAG((tv)) - DUK_TAG_MIN <= DUK_TAG_MAX - DUK_TAG_MIN) + +/* DUK_TVAL_UNUSED initializer for duk_tval_unused, works for any endianness. */ +#define DUK_TVAL_UNUSED_INITIALIZER() \ + { DUK_TAG_UNUSED, DUK_TAG_UNUSED, DUK_TAG_UNUSED, DUK_TAG_UNUSED } + +/* two casts to avoid gcc warning: "warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]" */ +#if defined(DUK_USE_64BIT_OPS) +#if defined(DUK_USE_DOUBLE_ME) +#define DUK__TVAL_SET_TAGGEDPOINTER(tv,h,tag) do { \ + (tv)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) (tag)) << 16) | (((duk_uint64_t) (duk_uint32_t) (h)) << 32); \ + } while (0) +#else +#define DUK__TVAL_SET_TAGGEDPOINTER(tv,h,tag) do { \ + (tv)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) (tag)) << 48) | ((duk_uint64_t) (duk_uint32_t) (h)); \ + } while (0) +#endif +#else /* DUK_USE_64BIT_OPS */ +#define DUK__TVAL_SET_TAGGEDPOINTER(tv,h,tag) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->ui[DUK_DBL_IDX_UI0] = ((duk_uint32_t) (tag)) << 16; \ + duk__tv->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (h); \ + } while (0) +#endif /* DUK_USE_64BIT_OPS */ + +#if defined(DUK_USE_64BIT_OPS) +/* Double casting for pointer to avoid gcc warning (cast from pointer to integer of different size) */ +#if defined(DUK_USE_DOUBLE_ME) +#define DUK__TVAL_SET_LIGHTFUNC(tv,fp,flags) do { \ + (tv)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_LIGHTFUNC) << 16) | \ + ((duk_uint64_t) (flags)) | \ + (((duk_uint64_t) (duk_uint32_t) (fp)) << 32); \ + } while (0) +#else +#define DUK__TVAL_SET_LIGHTFUNC(tv,fp,flags) do { \ + (tv)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_LIGHTFUNC) << 48) | \ + (((duk_uint64_t) (flags)) << 32) | \ + ((duk_uint64_t) (duk_uint32_t) (fp)); \ + } while (0) +#endif +#else /* DUK_USE_64BIT_OPS */ +#define DUK__TVAL_SET_LIGHTFUNC(tv,fp,flags) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->ui[DUK_DBL_IDX_UI0] = (((duk_uint32_t) DUK_TAG_LIGHTFUNC) << 16) | ((duk_uint32_t) (flags)); \ + duk__tv->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (fp); \ + } while (0) +#endif /* DUK_USE_64BIT_OPS */ + +#if defined(DUK_USE_FASTINT) +/* Note: masking is done for 'i' to deal with negative numbers correctly */ +#if defined(DUK_USE_DOUBLE_ME) +#define DUK__TVAL_SET_I48(tv,i) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->ui[DUK_DBL_IDX_UI0] = ((duk_uint32_t) DUK_TAG_FASTINT) << 16 | (((duk_uint32_t) ((i) >> 32)) & 0x0000ffffUL); \ + duk__tv->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (i); \ + } while (0) +#define DUK__TVAL_SET_U32(tv,i) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->ui[DUK_DBL_IDX_UI0] = ((duk_uint32_t) DUK_TAG_FASTINT) << 16; \ + duk__tv->ui[DUK_DBL_IDX_UI1] = (duk_uint32_t) (i); \ + } while (0) +#else +#define DUK__TVAL_SET_I48(tv,i) do { \ + (tv)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_FASTINT) << 48) | (((duk_uint64_t) (i)) & DUK_U64_CONSTANT(0x0000ffffffffffff)); \ + } while (0) +#define DUK__TVAL_SET_U32(tv,i) do { \ + (tv)->ull[DUK_DBL_IDX_ULL0] = (((duk_uint64_t) DUK_TAG_FASTINT) << 48) | (duk_uint64_t) (i); \ + } while (0) +#endif + +/* This needs to go through a cast because sign extension is needed. */ +#define DUK__TVAL_SET_I32(tv,i) do { \ + duk_int64_t duk__tmp = (duk_int64_t) (i); \ + DUK_TVAL_SET_I48((tv), duk__tmp); \ + } while (0) + +/* XXX: Clumsy sign extend and masking of 16 topmost bits. */ +#if defined(DUK_USE_DOUBLE_ME) +#define DUK__TVAL_GET_FASTINT(tv) (((duk_int64_t) ((((duk_uint64_t) (tv)->ui[DUK_DBL_IDX_UI0]) << 32) | ((duk_uint64_t) (tv)->ui[DUK_DBL_IDX_UI1]))) << 16 >> 16) +#else +#define DUK__TVAL_GET_FASTINT(tv) ((((duk_int64_t) (tv)->ull[DUK_DBL_IDX_ULL0]) << 16) >> 16) +#endif +#define DUK__TVAL_GET_FASTINT_U32(tv) ((tv)->ui[DUK_DBL_IDX_UI1]) +#define DUK__TVAL_GET_FASTINT_I32(tv) ((duk_int32_t) (tv)->ui[DUK_DBL_IDX_UI1]) +#endif /* DUK_USE_FASTINT */ + +#define DUK_TVAL_SET_UNDEFINED(tv) do { \ + (tv)->us[DUK_DBL_IDX_US0] = (duk_uint16_t) DUK_TAG_UNDEFINED; \ + } while (0) +#define DUK_TVAL_SET_UNUSED(tv) do { \ + (tv)->us[DUK_DBL_IDX_US0] = (duk_uint16_t) DUK_TAG_UNUSED; \ + } while (0) +#define DUK_TVAL_SET_NULL(tv) do { \ + (tv)->us[DUK_DBL_IDX_US0] = (duk_uint16_t) DUK_TAG_NULL; \ + } while (0) + +#define DUK_TVAL_SET_BOOLEAN(tv,val) DUK_DBLUNION_SET_HIGH32((tv), (((duk_uint32_t) DUK_TAG_BOOLEAN) << 16) | ((duk_uint32_t) (val))) + +#define DUK_TVAL_SET_NAN(tv) DUK_DBLUNION_SET_NAN_FULL((tv)) + +/* Assumes that caller has normalized NaNs, otherwise trouble ahead. */ +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_SET_DOUBLE(tv,d) do { \ + duk_double_t duk__dblval; \ + duk__dblval = (d); \ + DUK_ASSERT_DOUBLE_IS_NORMALIZED(duk__dblval); \ + DUK_DBLUNION_SET_DOUBLE((tv), duk__dblval); \ + } while (0) +#define DUK_TVAL_SET_I48(tv,i) DUK__TVAL_SET_I48((tv), (i)) +#define DUK_TVAL_SET_I32(tv,i) DUK__TVAL_SET_I32((tv), (i)) +#define DUK_TVAL_SET_U32(tv,i) DUK__TVAL_SET_U32((tv), (i)) +#define DUK_TVAL_SET_NUMBER_CHKFAST_FAST(tv,d) duk_tval_set_number_chkfast_fast((tv), (d)) +#define DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(tv,d) duk_tval_set_number_chkfast_slow((tv), (d)) +#define DUK_TVAL_SET_NUMBER(tv,d) DUK_TVAL_SET_DOUBLE((tv), (d)) +#define DUK_TVAL_CHKFAST_INPLACE_FAST(tv) do { \ + duk_tval *duk__tv; \ + duk_double_t duk__d; \ + duk__tv = (tv); \ + if (DUK_TVAL_IS_DOUBLE(duk__tv)) { \ + duk__d = DUK_TVAL_GET_DOUBLE(duk__tv); \ + DUK_TVAL_SET_NUMBER_CHKFAST_FAST(duk__tv, duk__d); \ + } \ + } while (0) +#define DUK_TVAL_CHKFAST_INPLACE_SLOW(tv) do { \ + duk_tval *duk__tv; \ + duk_double_t duk__d; \ + duk__tv = (tv); \ + if (DUK_TVAL_IS_DOUBLE(duk__tv)) { \ + duk__d = DUK_TVAL_GET_DOUBLE(duk__tv); \ + DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(duk__tv, duk__d); \ + } \ + } while (0) +#else /* DUK_USE_FASTINT */ +#define DUK_TVAL_SET_DOUBLE(tv,d) do { \ + duk_double_t duk__dblval; \ + duk__dblval = (d); \ + DUK_ASSERT_DOUBLE_IS_NORMALIZED(duk__dblval); \ + DUK_DBLUNION_SET_DOUBLE((tv), duk__dblval); \ + } while (0) +#define DUK_TVAL_SET_I48(tv,i) DUK_TVAL_SET_DOUBLE((tv), (duk_double_t) (i)) /* XXX: fast int-to-double */ +#define DUK_TVAL_SET_I32(tv,i) DUK_TVAL_SET_DOUBLE((tv), (duk_double_t) (i)) +#define DUK_TVAL_SET_U32(tv,i) DUK_TVAL_SET_DOUBLE((tv), (duk_double_t) (i)) +#define DUK_TVAL_SET_NUMBER_CHKFAST_FAST(tv,d) DUK_TVAL_SET_DOUBLE((tv), (d)) +#define DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(tv,d) DUK_TVAL_SET_DOUBLE((tv), (d)) +#define DUK_TVAL_SET_NUMBER(tv,d) DUK_TVAL_SET_DOUBLE((tv), (d)) +#define DUK_TVAL_CHKFAST_INPLACE_FAST(tv) do { } while (0) +#define DUK_TVAL_CHKFAST_INPLACE_SLOW(tv) do { } while (0) +#endif /* DUK_USE_FASTINT */ + +#define DUK_TVAL_SET_FASTINT(tv,i) DUK_TVAL_SET_I48((tv), (i)) /* alias */ + +#define DUK_TVAL_SET_LIGHTFUNC(tv,fp,flags) DUK__TVAL_SET_LIGHTFUNC((tv), (fp), (flags)) +#define DUK_TVAL_SET_STRING(tv,h) DUK__TVAL_SET_TAGGEDPOINTER((tv), (h), DUK_TAG_STRING) +#define DUK_TVAL_SET_OBJECT(tv,h) DUK__TVAL_SET_TAGGEDPOINTER((tv), (h), DUK_TAG_OBJECT) +#define DUK_TVAL_SET_BUFFER(tv,h) DUK__TVAL_SET_TAGGEDPOINTER((tv), (h), DUK_TAG_BUFFER) +#define DUK_TVAL_SET_POINTER(tv,p) DUK__TVAL_SET_TAGGEDPOINTER((tv), (p), DUK_TAG_POINTER) + +#define DUK_TVAL_SET_TVAL(tv,x) do { *(tv) = *(x); } while (0) + +/* getters */ +#define DUK_TVAL_GET_BOOLEAN(tv) ((duk_small_uint_t) (tv)->us[DUK_DBL_IDX_US1]) +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_GET_DOUBLE(tv) ((tv)->d) +#define DUK_TVAL_GET_FASTINT(tv) DUK__TVAL_GET_FASTINT((tv)) +#define DUK_TVAL_GET_FASTINT_U32(tv) DUK__TVAL_GET_FASTINT_U32((tv)) +#define DUK_TVAL_GET_FASTINT_I32(tv) DUK__TVAL_GET_FASTINT_I32((tv)) +#define DUK_TVAL_GET_NUMBER(tv) duk_tval_get_number_packed((tv)) +#else +#define DUK_TVAL_GET_NUMBER(tv) ((tv)->d) +#define DUK_TVAL_GET_DOUBLE(tv) ((tv)->d) +#endif +#define DUK_TVAL_GET_LIGHTFUNC(tv,out_fp,out_flags) do { \ + (out_flags) = (tv)->ui[DUK_DBL_IDX_UI0] & 0xffffUL; \ + (out_fp) = (duk_c_function) (tv)->ui[DUK_DBL_IDX_UI1]; \ + } while (0) +#define DUK_TVAL_GET_LIGHTFUNC_FUNCPTR(tv) ((duk_c_function) ((tv)->ui[DUK_DBL_IDX_UI1])) +#define DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv) (((duk_small_uint_t) (tv)->ui[DUK_DBL_IDX_UI0]) & 0xffffUL) +#define DUK_TVAL_GET_STRING(tv) ((duk_hstring *) (tv)->vp[DUK_DBL_IDX_VP1]) +#define DUK_TVAL_GET_OBJECT(tv) ((duk_hobject *) (tv)->vp[DUK_DBL_IDX_VP1]) +#define DUK_TVAL_GET_BUFFER(tv) ((duk_hbuffer *) (tv)->vp[DUK_DBL_IDX_VP1]) +#define DUK_TVAL_GET_POINTER(tv) ((void *) (tv)->vp[DUK_DBL_IDX_VP1]) +#define DUK_TVAL_GET_HEAPHDR(tv) ((duk_heaphdr *) (tv)->vp[DUK_DBL_IDX_VP1]) + +/* decoding */ +#define DUK_TVAL_GET_TAG(tv) ((duk_small_uint_t) (tv)->us[DUK_DBL_IDX_US0]) + +#define DUK_TVAL_IS_UNDEFINED(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_UNDEFINED) +#define DUK_TVAL_IS_UNUSED(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_UNUSED) +#define DUK_TVAL_IS_NULL(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_NULL) +#define DUK_TVAL_IS_BOOLEAN(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_BOOLEAN) +#define DUK_TVAL_IS_BOOLEAN_TRUE(tv) ((tv)->ui[DUK_DBL_IDX_UI0] == DUK_XTAG_BOOLEAN_TRUE) +#define DUK_TVAL_IS_BOOLEAN_FALSE(tv) ((tv)->ui[DUK_DBL_IDX_UI0] == DUK_XTAG_BOOLEAN_FALSE) +#define DUK_TVAL_IS_LIGHTFUNC(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_LIGHTFUNC) +#define DUK_TVAL_IS_STRING(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_STRING) +#define DUK_TVAL_IS_OBJECT(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_OBJECT) +#define DUK_TVAL_IS_BUFFER(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_BUFFER) +#define DUK_TVAL_IS_POINTER(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_POINTER) +#if defined(DUK_USE_FASTINT) +/* 0xfff0 is -Infinity */ +#define DUK_TVAL_IS_DOUBLE(tv) (DUK_TVAL_GET_TAG((tv)) <= 0xfff0UL) +#define DUK_TVAL_IS_FASTINT(tv) (DUK_TVAL_GET_TAG((tv)) == DUK_TAG_FASTINT) +#define DUK_TVAL_IS_NUMBER(tv) (DUK_TVAL_GET_TAG((tv)) <= 0xfff1UL) +#else +#define DUK_TVAL_IS_NUMBER(tv) (DUK_TVAL_GET_TAG((tv)) <= 0xfff0UL) +#define DUK_TVAL_IS_DOUBLE(tv) DUK_TVAL_IS_NUMBER((tv)) +#endif + +/* This is performance critical because it appears in every DECREF. */ +#define DUK_TVAL_IS_HEAP_ALLOCATED(tv) (DUK_TVAL_GET_TAG((tv)) >= DUK_TAG_STRING) + +#if defined(DUK_USE_FASTINT) +DUK_INTERNAL_DECL duk_double_t duk_tval_get_number_packed(duk_tval *tv); +#endif + +#else /* DUK_USE_PACKED_TVAL */ +/* ======================================================================== */ + +/* + * Portable 12-byte representation + */ + +/* Note: not initializing all bytes is normally not an issue: Duktape won't + * read or use the uninitialized bytes so valgrind won't issue warnings. + * In some special cases a harmless valgrind warning may be issued though. + * For example, the DumpHeap debugger command writes out a compiled function's + * 'data' area as is, including any uninitialized bytes, which causes a + * valgrind warning. + */ + +typedef struct duk_tval_struct duk_tval; + +struct duk_tval_struct { + duk_small_uint_t t; + duk_small_uint_t v_extra; + union { + duk_double_t d; + duk_small_int_t i; +#if defined(DUK_USE_FASTINT) + duk_int64_t fi; /* if present, forces 16-byte duk_tval */ +#endif + void *voidptr; + duk_hstring *hstring; + duk_hobject *hobject; + duk_hcompfunc *hcompfunc; + duk_hnatfunc *hnatfunc; + duk_hthread *hthread; + duk_hbuffer *hbuffer; + duk_heaphdr *heaphdr; + duk_c_function lightfunc; + } v; +}; + +typedef struct { + duk_small_uint_t t; + duk_small_uint_t v_extra; + /* The rest of the fields don't matter except for debug dumps and such + * for which a partial initializer may trigger out-ot-bounds memory + * reads. Include a double field which is usually as large or larger + * than pointers (not always however). + */ + duk_double_t d; +} duk_tval_unused; + +#define DUK_TVAL_UNUSED_INITIALIZER() \ + { DUK_TAG_UNUSED, 0, 0.0 } + +#define DUK_TAG_MIN 0 +#define DUK_TAG_NUMBER 0 /* DUK_TAG_NUMBER only defined for non-packed duk_tval */ +#if defined(DUK_USE_FASTINT) +#define DUK_TAG_FASTINT 1 +#endif +#define DUK_TAG_UNDEFINED 2 +#define DUK_TAG_NULL 3 +#define DUK_TAG_BOOLEAN 4 +#define DUK_TAG_POINTER 5 +#define DUK_TAG_LIGHTFUNC 6 +#define DUK_TAG_UNUSED 7 /* marker; not actual tagged type */ +#define DUK_TAG_STRING 8 /* first heap allocated, match bit boundary */ +#define DUK_TAG_OBJECT 9 +#define DUK_TAG_BUFFER 10 +#define DUK_TAG_MAX 10 + +#define DUK_TVAL_IS_VALID_TAG(tv) \ + (DUK_TVAL_GET_TAG((tv)) - DUK_TAG_MIN <= DUK_TAG_MAX - DUK_TAG_MIN) + +/* DUK_TAG_NUMBER is intentionally first, as it is the default clause in code + * to support the 8-byte representation. Further, it is a non-heap-allocated + * type so it should come before DUK_TAG_STRING. Finally, it should not break + * the tag value ranges covered by case-clauses in a switch-case. + */ + +/* setters */ +#define DUK_TVAL_SET_UNDEFINED(tv) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_UNDEFINED; \ + } while (0) + +#define DUK_TVAL_SET_UNUSED(tv) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_UNUSED; \ + } while (0) + +#define DUK_TVAL_SET_NULL(tv) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_NULL; \ + } while (0) + +#define DUK_TVAL_SET_BOOLEAN(tv,val) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_BOOLEAN; \ + duk__tv->v.i = (duk_small_int_t) (val); \ + } while (0) + +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_SET_DOUBLE(tv,val) do { \ + duk_tval *duk__tv; \ + duk_double_t duk__dblval; \ + duk__dblval = (val); \ + DUK_ASSERT_DOUBLE_IS_NORMALIZED(duk__dblval); /* nop for unpacked duk_tval */ \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_NUMBER; \ + duk__tv->v.d = duk__dblval; \ + } while (0) +#define DUK_TVAL_SET_I48(tv,val) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_FASTINT; \ + duk__tv->v.fi = (val); \ + } while (0) +#define DUK_TVAL_SET_U32(tv,val) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_FASTINT; \ + duk__tv->v.fi = (duk_int64_t) (val); \ + } while (0) +#define DUK_TVAL_SET_I32(tv,val) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_FASTINT; \ + duk__tv->v.fi = (duk_int64_t) (val); \ + } while (0) +#define DUK_TVAL_SET_NUMBER_CHKFAST_FAST(tv,d) \ + duk_tval_set_number_chkfast_fast((tv), (d)) +#define DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(tv,d) \ + duk_tval_set_number_chkfast_slow((tv), (d)) +#define DUK_TVAL_SET_NUMBER(tv,val) \ + DUK_TVAL_SET_DOUBLE((tv), (val)) +#define DUK_TVAL_CHKFAST_INPLACE_FAST(tv) do { \ + duk_tval *duk__tv; \ + duk_double_t duk__d; \ + duk__tv = (tv); \ + if (DUK_TVAL_IS_DOUBLE(duk__tv)) { \ + duk__d = DUK_TVAL_GET_DOUBLE(duk__tv); \ + DUK_TVAL_SET_NUMBER_CHKFAST_FAST(duk__tv, duk__d); \ + } \ + } while (0) +#define DUK_TVAL_CHKFAST_INPLACE_SLOW(tv) do { \ + duk_tval *duk__tv; \ + duk_double_t duk__d; \ + duk__tv = (tv); \ + if (DUK_TVAL_IS_DOUBLE(duk__tv)) { \ + duk__d = DUK_TVAL_GET_DOUBLE(duk__tv); \ + DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(duk__tv, duk__d); \ + } \ + } while (0) +#else /* DUK_USE_FASTINT */ +#define DUK_TVAL_SET_DOUBLE(tv,d) \ + DUK_TVAL_SET_NUMBER((tv), (d)) +#define DUK_TVAL_SET_I48(tv,val) \ + DUK_TVAL_SET_NUMBER((tv), (duk_double_t) (val)) /* XXX: fast int-to-double */ +#define DUK_TVAL_SET_U32(tv,val) \ + DUK_TVAL_SET_NUMBER((tv), (duk_double_t) (val)) +#define DUK_TVAL_SET_I32(tv,val) \ + DUK_TVAL_SET_NUMBER((tv), (duk_double_t) (val)) +#define DUK_TVAL_SET_NUMBER(tv,val) do { \ + duk_tval *duk__tv; \ + duk_double_t duk__dblval; \ + duk__dblval = (val); \ + DUK_ASSERT_DOUBLE_IS_NORMALIZED(duk__dblval); /* nop for unpacked duk_tval */ \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_NUMBER; \ + duk__tv->v.d = duk__dblval; \ + } while (0) +#define DUK_TVAL_SET_NUMBER_CHKFAST_FAST(tv,d) \ + DUK_TVAL_SET_NUMBER((tv), (d)) +#define DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(tv,d) \ + DUK_TVAL_SET_NUMBER((tv), (d)) +#define DUK_TVAL_CHKFAST_INPLACE_FAST(tv) do { } while (0) +#define DUK_TVAL_CHKFAST_INPLACE_SLOW(tv) do { } while (0) +#endif /* DUK_USE_FASTINT */ + +#define DUK_TVAL_SET_FASTINT(tv,i) \ + DUK_TVAL_SET_I48((tv), (i)) /* alias */ + +#define DUK_TVAL_SET_POINTER(tv,hptr) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_POINTER; \ + duk__tv->v.voidptr = (hptr); \ + } while (0) + +#define DUK_TVAL_SET_LIGHTFUNC(tv,fp,flags) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_LIGHTFUNC; \ + duk__tv->v_extra = (flags); \ + duk__tv->v.lightfunc = (duk_c_function) (fp); \ + } while (0) + +#define DUK_TVAL_SET_STRING(tv,hptr) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_STRING; \ + duk__tv->v.hstring = (hptr); \ + } while (0) + +#define DUK_TVAL_SET_OBJECT(tv,hptr) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_OBJECT; \ + duk__tv->v.hobject = (hptr); \ + } while (0) + +#define DUK_TVAL_SET_BUFFER(tv,hptr) do { \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_BUFFER; \ + duk__tv->v.hbuffer = (hptr); \ + } while (0) + +#define DUK_TVAL_SET_NAN(tv) do { \ + /* in non-packed representation we don't care about which NaN is used */ \ + duk_tval *duk__tv; \ + duk__tv = (tv); \ + duk__tv->t = DUK_TAG_NUMBER; \ + duk__tv->v.d = DUK_DOUBLE_NAN; \ + } while (0) + +#define DUK_TVAL_SET_TVAL(tv,x) do { *(tv) = *(x); } while (0) + +/* getters */ +#define DUK_TVAL_GET_BOOLEAN(tv) ((duk_small_uint_t) (tv)->v.i) +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_GET_DOUBLE(tv) ((tv)->v.d) +#define DUK_TVAL_GET_FASTINT(tv) ((tv)->v.fi) +#define DUK_TVAL_GET_FASTINT_U32(tv) ((duk_uint32_t) ((tv)->v.fi)) +#define DUK_TVAL_GET_FASTINT_I32(tv) ((duk_int32_t) ((tv)->v.fi)) +#if 0 +#define DUK_TVAL_GET_NUMBER(tv) (DUK_TVAL_IS_FASTINT((tv)) ? \ + (duk_double_t) DUK_TVAL_GET_FASTINT((tv)) : \ + DUK_TVAL_GET_DOUBLE((tv))) +#define DUK_TVAL_GET_NUMBER(tv) duk_tval_get_number_unpacked((tv)) +#else +/* This seems reasonable overall. */ +#define DUK_TVAL_GET_NUMBER(tv) (DUK_TVAL_IS_FASTINT((tv)) ? \ + duk_tval_get_number_unpacked_fastint((tv)) : \ + DUK_TVAL_GET_DOUBLE((tv))) +#endif +#else +#define DUK_TVAL_GET_NUMBER(tv) ((tv)->v.d) +#define DUK_TVAL_GET_DOUBLE(tv) ((tv)->v.d) +#endif /* DUK_USE_FASTINT */ +#define DUK_TVAL_GET_POINTER(tv) ((tv)->v.voidptr) +#define DUK_TVAL_GET_LIGHTFUNC(tv,out_fp,out_flags) do { \ + (out_flags) = (duk_uint32_t) (tv)->v_extra; \ + (out_fp) = (tv)->v.lightfunc; \ + } while (0) +#define DUK_TVAL_GET_LIGHTFUNC_FUNCPTR(tv) ((tv)->v.lightfunc) +#define DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv) ((duk_small_uint_t) ((tv)->v_extra)) +#define DUK_TVAL_GET_STRING(tv) ((tv)->v.hstring) +#define DUK_TVAL_GET_OBJECT(tv) ((tv)->v.hobject) +#define DUK_TVAL_GET_BUFFER(tv) ((tv)->v.hbuffer) +#define DUK_TVAL_GET_HEAPHDR(tv) ((tv)->v.heaphdr) + +/* decoding */ +#define DUK_TVAL_GET_TAG(tv) ((tv)->t) +#define DUK_TVAL_IS_UNDEFINED(tv) ((tv)->t == DUK_TAG_UNDEFINED) +#define DUK_TVAL_IS_UNUSED(tv) ((tv)->t == DUK_TAG_UNUSED) +#define DUK_TVAL_IS_NULL(tv) ((tv)->t == DUK_TAG_NULL) +#define DUK_TVAL_IS_BOOLEAN(tv) ((tv)->t == DUK_TAG_BOOLEAN) +#define DUK_TVAL_IS_BOOLEAN_TRUE(tv) (((tv)->t == DUK_TAG_BOOLEAN) && ((tv)->v.i != 0)) +#define DUK_TVAL_IS_BOOLEAN_FALSE(tv) (((tv)->t == DUK_TAG_BOOLEAN) && ((tv)->v.i == 0)) +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_IS_DOUBLE(tv) ((tv)->t == DUK_TAG_NUMBER) +#define DUK_TVAL_IS_FASTINT(tv) ((tv)->t == DUK_TAG_FASTINT) +#define DUK_TVAL_IS_NUMBER(tv) ((tv)->t == DUK_TAG_NUMBER || \ + (tv)->t == DUK_TAG_FASTINT) +#else +#define DUK_TVAL_IS_NUMBER(tv) ((tv)->t == DUK_TAG_NUMBER) +#define DUK_TVAL_IS_DOUBLE(tv) DUK_TVAL_IS_NUMBER((tv)) +#endif /* DUK_USE_FASTINT */ +#define DUK_TVAL_IS_POINTER(tv) ((tv)->t == DUK_TAG_POINTER) +#define DUK_TVAL_IS_LIGHTFUNC(tv) ((tv)->t == DUK_TAG_LIGHTFUNC) +#define DUK_TVAL_IS_STRING(tv) ((tv)->t == DUK_TAG_STRING) +#define DUK_TVAL_IS_OBJECT(tv) ((tv)->t == DUK_TAG_OBJECT) +#define DUK_TVAL_IS_BUFFER(tv) ((tv)->t == DUK_TAG_BUFFER) + +/* This is performance critical because it's needed for every DECREF. + * Take advantage of the fact that the first heap allocated tag is 8, + * so that bit 3 is set for all heap allocated tags (and never set for + * non-heap-allocated tags). + */ +#if 0 +#define DUK_TVAL_IS_HEAP_ALLOCATED(tv) ((tv)->t >= DUK_TAG_STRING) +#endif +#define DUK_TVAL_IS_HEAP_ALLOCATED(tv) ((tv)->t & 0x08) + +#if defined(DUK_USE_FASTINT) +#if 0 +DUK_INTERNAL_DECL duk_double_t duk_tval_get_number_unpacked(duk_tval *tv); +#endif +DUK_INTERNAL_DECL duk_double_t duk_tval_get_number_unpacked_fastint(duk_tval *tv); +#endif + +#endif /* DUK_USE_PACKED_TVAL */ + +/* + * Convenience (independent of representation) + */ + +#define DUK_TVAL_SET_BOOLEAN_TRUE(tv) DUK_TVAL_SET_BOOLEAN((tv), 1) +#define DUK_TVAL_SET_BOOLEAN_FALSE(tv) DUK_TVAL_SET_BOOLEAN((tv), 0) + +#define DUK_TVAL_STRING_IS_SYMBOL(tv) \ + DUK_HSTRING_HAS_SYMBOL(DUK_TVAL_GET_STRING((tv))) + +/* Lightfunc flags packing and unpacking. */ +/* Sign extend: 0x0000##00 -> 0x##000000 -> sign extend to 0xssssss##. + * Avoid signed shifts due to portability limitations. + */ +#define DUK_LFUNC_FLAGS_GET_MAGIC(lf_flags) \ + ((duk_int32_t) (duk_int8_t) (((duk_uint16_t) (lf_flags)) >> 8)) +#define DUK_LFUNC_FLAGS_GET_LENGTH(lf_flags) \ + (((lf_flags) >> 4) & 0x0fU) +#define DUK_LFUNC_FLAGS_GET_NARGS(lf_flags) \ + ((lf_flags) & 0x0fU) +#define DUK_LFUNC_FLAGS_PACK(magic,length,nargs) \ + ((((duk_small_uint_t) (magic)) & 0xffU) << 8) | ((length) << 4) | (nargs) + +#define DUK_LFUNC_NARGS_VARARGS 0x0f /* varargs marker */ +#define DUK_LFUNC_NARGS_MIN 0x00 +#define DUK_LFUNC_NARGS_MAX 0x0e /* max, excl. varargs marker */ +#define DUK_LFUNC_LENGTH_MIN 0x00 +#define DUK_LFUNC_LENGTH_MAX 0x0f +#define DUK_LFUNC_MAGIC_MIN (-0x80) +#define DUK_LFUNC_MAGIC_MAX 0x7f + +/* fastint constants etc */ +#if defined(DUK_USE_FASTINT) +#define DUK_FASTINT_MIN (DUK_I64_CONSTANT(-0x800000000000)) +#define DUK_FASTINT_MAX (DUK_I64_CONSTANT(0x7fffffffffff)) +#define DUK_FASTINT_BITS 48 + +DUK_INTERNAL_DECL void duk_tval_set_number_chkfast_fast(duk_tval *tv, duk_double_t x); +DUK_INTERNAL_DECL void duk_tval_set_number_chkfast_slow(duk_tval *tv, duk_double_t x); +#endif + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_tval_assert_valid(duk_tval *tv); +#define DUK_TVAL_ASSERT_VALID(tv) do { duk_tval_assert_valid((tv)); } while (0) +#else +#define DUK_TVAL_ASSERT_VALID(tv) do {} while (0) +#endif + +#endif /* DUK_TVAL_H_INCLUDED */ +/* #include duk_builtins.h */ +#line 1 "duk_builtins.h" +/* + * Automatically generated by genbuiltins.py, do not edit! + */ + +#if !defined(DUK_BUILTINS_H_INCLUDED) +#define DUK_BUILTINS_H_INCLUDED + +#if defined(DUK_USE_ROM_STRINGS) +#error ROM support not enabled, rerun configure.py with --rom-support +#else /* DUK_USE_ROM_STRINGS */ +#define DUK_STRIDX_UC_UNDEFINED 0 /* 'Undefined' */ +#define DUK_HEAP_STRING_UC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_UNDEFINED) +#define DUK_HTHREAD_STRING_UC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_UNDEFINED) +#define DUK_STRIDX_UC_NULL 1 /* 'Null' */ +#define DUK_HEAP_STRING_UC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NULL) +#define DUK_HTHREAD_STRING_UC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NULL) +#define DUK_STRIDX_UC_SYMBOL 2 /* 'Symbol' */ +#define DUK_HEAP_STRING_UC_SYMBOL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_SYMBOL) +#define DUK_HTHREAD_STRING_UC_SYMBOL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_SYMBOL) +#define DUK_STRIDX_UC_ARGUMENTS 3 /* 'Arguments' */ +#define DUK_HEAP_STRING_UC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ARGUMENTS) +#define DUK_HTHREAD_STRING_UC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ARGUMENTS) +#define DUK_STRIDX_UC_OBJECT 4 /* 'Object' */ +#define DUK_HEAP_STRING_UC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_OBJECT) +#define DUK_HTHREAD_STRING_UC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_OBJECT) +#define DUK_STRIDX_UC_FUNCTION 5 /* 'Function' */ +#define DUK_HEAP_STRING_UC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_FUNCTION) +#define DUK_HTHREAD_STRING_UC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_FUNCTION) +#define DUK_STRIDX_UC_ARRAY 6 /* 'Array' */ +#define DUK_HEAP_STRING_UC_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ARRAY) +#define DUK_HTHREAD_STRING_UC_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ARRAY) +#define DUK_STRIDX_UC_STRING 7 /* 'String' */ +#define DUK_HEAP_STRING_UC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_STRING) +#define DUK_HTHREAD_STRING_UC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_STRING) +#define DUK_STRIDX_UC_BOOLEAN 8 /* 'Boolean' */ +#define DUK_HEAP_STRING_UC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BOOLEAN) +#define DUK_HTHREAD_STRING_UC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BOOLEAN) +#define DUK_STRIDX_UC_NUMBER 9 /* 'Number' */ +#define DUK_HEAP_STRING_UC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_NUMBER) +#define DUK_HTHREAD_STRING_UC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_NUMBER) +#define DUK_STRIDX_UC_DATE 10 /* 'Date' */ +#define DUK_HEAP_STRING_UC_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_DATE) +#define DUK_HTHREAD_STRING_UC_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_DATE) +#define DUK_STRIDX_REG_EXP 11 /* 'RegExp' */ +#define DUK_HEAP_STRING_REG_EXP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_REG_EXP) +#define DUK_HTHREAD_STRING_REG_EXP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_REG_EXP) +#define DUK_STRIDX_UC_ERROR 12 /* 'Error' */ +#define DUK_HEAP_STRING_UC_ERROR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_ERROR) +#define DUK_HTHREAD_STRING_UC_ERROR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_ERROR) +#define DUK_STRIDX_MATH 13 /* 'Math' */ +#define DUK_HEAP_STRING_MATH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MATH) +#define DUK_HTHREAD_STRING_MATH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MATH) +#define DUK_STRIDX_JSON 14 /* 'JSON' */ +#define DUK_HEAP_STRING_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON) +#define DUK_HTHREAD_STRING_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON) +#define DUK_STRIDX_EMPTY_STRING 15 /* '' */ +#define DUK_HEAP_STRING_EMPTY_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EMPTY_STRING) +#define DUK_HTHREAD_STRING_EMPTY_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EMPTY_STRING) +#define DUK_STRIDX_ARRAY_BUFFER 16 /* 'ArrayBuffer' */ +#define DUK_HEAP_STRING_ARRAY_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ARRAY_BUFFER) +#define DUK_HTHREAD_STRING_ARRAY_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ARRAY_BUFFER) +#define DUK_STRIDX_DATA_VIEW 17 /* 'DataView' */ +#define DUK_HEAP_STRING_DATA_VIEW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DATA_VIEW) +#define DUK_HTHREAD_STRING_DATA_VIEW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DATA_VIEW) +#define DUK_STRIDX_INT8_ARRAY 18 /* 'Int8Array' */ +#define DUK_HEAP_STRING_INT8_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT8_ARRAY) +#define DUK_HTHREAD_STRING_INT8_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT8_ARRAY) +#define DUK_STRIDX_UINT8_ARRAY 19 /* 'Uint8Array' */ +#define DUK_HEAP_STRING_UINT8_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UINT8_ARRAY) +#define DUK_HTHREAD_STRING_UINT8_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UINT8_ARRAY) +#define DUK_STRIDX_UINT8_CLAMPED_ARRAY 20 /* 'Uint8ClampedArray' */ +#define DUK_HEAP_STRING_UINT8_CLAMPED_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UINT8_CLAMPED_ARRAY) +#define DUK_HTHREAD_STRING_UINT8_CLAMPED_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UINT8_CLAMPED_ARRAY) +#define DUK_STRIDX_INT16_ARRAY 21 /* 'Int16Array' */ +#define DUK_HEAP_STRING_INT16_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT16_ARRAY) +#define DUK_HTHREAD_STRING_INT16_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT16_ARRAY) +#define DUK_STRIDX_UINT16_ARRAY 22 /* 'Uint16Array' */ +#define DUK_HEAP_STRING_UINT16_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UINT16_ARRAY) +#define DUK_HTHREAD_STRING_UINT16_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UINT16_ARRAY) +#define DUK_STRIDX_INT32_ARRAY 23 /* 'Int32Array' */ +#define DUK_HEAP_STRING_INT32_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT32_ARRAY) +#define DUK_HTHREAD_STRING_INT32_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT32_ARRAY) +#define DUK_STRIDX_UINT32_ARRAY 24 /* 'Uint32Array' */ +#define DUK_HEAP_STRING_UINT32_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UINT32_ARRAY) +#define DUK_HTHREAD_STRING_UINT32_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UINT32_ARRAY) +#define DUK_STRIDX_FLOAT32_ARRAY 25 /* 'Float32Array' */ +#define DUK_HEAP_STRING_FLOAT32_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FLOAT32_ARRAY) +#define DUK_HTHREAD_STRING_FLOAT32_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FLOAT32_ARRAY) +#define DUK_STRIDX_FLOAT64_ARRAY 26 /* 'Float64Array' */ +#define DUK_HEAP_STRING_FLOAT64_ARRAY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FLOAT64_ARRAY) +#define DUK_HTHREAD_STRING_FLOAT64_ARRAY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FLOAT64_ARRAY) +#define DUK_STRIDX_GLOBAL 27 /* 'global' */ +#define DUK_HEAP_STRING_GLOBAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GLOBAL) +#define DUK_HTHREAD_STRING_GLOBAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GLOBAL) +#define DUK_STRIDX_OBJ_ENV 28 /* 'ObjEnv' */ +#define DUK_HEAP_STRING_OBJ_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OBJ_ENV) +#define DUK_HTHREAD_STRING_OBJ_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OBJ_ENV) +#define DUK_STRIDX_DEC_ENV 29 /* 'DecEnv' */ +#define DUK_HEAP_STRING_DEC_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEC_ENV) +#define DUK_HTHREAD_STRING_DEC_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEC_ENV) +#define DUK_STRIDX_UC_BUFFER 30 /* 'Buffer' */ +#define DUK_HEAP_STRING_UC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_BUFFER) +#define DUK_HTHREAD_STRING_UC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_BUFFER) +#define DUK_STRIDX_UC_POINTER 31 /* 'Pointer' */ +#define DUK_HEAP_STRING_UC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_POINTER) +#define DUK_HTHREAD_STRING_UC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_POINTER) +#define DUK_STRIDX_UC_THREAD 32 /* 'Thread' */ +#define DUK_HEAP_STRING_UC_THREAD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_UC_THREAD) +#define DUK_HTHREAD_STRING_UC_THREAD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_UC_THREAD) +#define DUK_STRIDX_EVAL 33 /* 'eval' */ +#define DUK_HEAP_STRING_EVAL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EVAL) +#define DUK_HTHREAD_STRING_EVAL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EVAL) +#define DUK_STRIDX_VALUE 34 /* 'value' */ +#define DUK_HEAP_STRING_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE) +#define DUK_HTHREAD_STRING_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE) +#define DUK_STRIDX_WRITABLE 35 /* 'writable' */ +#define DUK_HEAP_STRING_WRITABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WRITABLE) +#define DUK_HTHREAD_STRING_WRITABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WRITABLE) +#define DUK_STRIDX_CONFIGURABLE 36 /* 'configurable' */ +#define DUK_HEAP_STRING_CONFIGURABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONFIGURABLE) +#define DUK_HTHREAD_STRING_CONFIGURABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONFIGURABLE) +#define DUK_STRIDX_ENUMERABLE 37 /* 'enumerable' */ +#define DUK_HEAP_STRING_ENUMERABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUMERABLE) +#define DUK_HTHREAD_STRING_ENUMERABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUMERABLE) +#define DUK_STRIDX_JOIN 38 /* 'join' */ +#define DUK_HEAP_STRING_JOIN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JOIN) +#define DUK_HTHREAD_STRING_JOIN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JOIN) +#define DUK_STRIDX_TO_LOCALE_STRING 39 /* 'toLocaleString' */ +#define DUK_HEAP_STRING_TO_LOCALE_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_LOCALE_STRING) +#define DUK_HTHREAD_STRING_TO_LOCALE_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_LOCALE_STRING) +#define DUK_STRIDX_VALUE_OF 40 /* 'valueOf' */ +#define DUK_HEAP_STRING_VALUE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VALUE_OF) +#define DUK_HTHREAD_STRING_VALUE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VALUE_OF) +#define DUK_STRIDX_TO_UTC_STRING 41 /* 'toUTCString' */ +#define DUK_HEAP_STRING_TO_UTC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_UTC_STRING) +#define DUK_HTHREAD_STRING_TO_UTC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_UTC_STRING) +#define DUK_STRIDX_TO_ISO_STRING 42 /* 'toISOString' */ +#define DUK_HEAP_STRING_TO_ISO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_ISO_STRING) +#define DUK_HTHREAD_STRING_TO_ISO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_ISO_STRING) +#define DUK_STRIDX_TO_GMT_STRING 43 /* 'toGMTString' */ +#define DUK_HEAP_STRING_TO_GMT_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_GMT_STRING) +#define DUK_HTHREAD_STRING_TO_GMT_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_GMT_STRING) +#define DUK_STRIDX_SOURCE 44 /* 'source' */ +#define DUK_HEAP_STRING_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SOURCE) +#define DUK_HTHREAD_STRING_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SOURCE) +#define DUK_STRIDX_IGNORE_CASE 45 /* 'ignoreCase' */ +#define DUK_HEAP_STRING_IGNORE_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IGNORE_CASE) +#define DUK_HTHREAD_STRING_IGNORE_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IGNORE_CASE) +#define DUK_STRIDX_MULTILINE 46 /* 'multiline' */ +#define DUK_HEAP_STRING_MULTILINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MULTILINE) +#define DUK_HTHREAD_STRING_MULTILINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MULTILINE) +#define DUK_STRIDX_LAST_INDEX 47 /* 'lastIndex' */ +#define DUK_HEAP_STRING_LAST_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LAST_INDEX) +#define DUK_HTHREAD_STRING_LAST_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LAST_INDEX) +#define DUK_STRIDX_FLAGS 48 /* 'flags' */ +#define DUK_HEAP_STRING_FLAGS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FLAGS) +#define DUK_HTHREAD_STRING_FLAGS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FLAGS) +#define DUK_STRIDX_INDEX 49 /* 'index' */ +#define DUK_HEAP_STRING_INDEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INDEX) +#define DUK_HTHREAD_STRING_INDEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INDEX) +#define DUK_STRIDX_PROTOTYPE 50 /* 'prototype' */ +#define DUK_HEAP_STRING_PROTOTYPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTOTYPE) +#define DUK_HTHREAD_STRING_PROTOTYPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTOTYPE) +#define DUK_STRIDX_CONSTRUCTOR 51 /* 'constructor' */ +#define DUK_HEAP_STRING_CONSTRUCTOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONSTRUCTOR) +#define DUK_HTHREAD_STRING_CONSTRUCTOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONSTRUCTOR) +#define DUK_STRIDX_MESSAGE 52 /* 'message' */ +#define DUK_HEAP_STRING_MESSAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MESSAGE) +#define DUK_HTHREAD_STRING_MESSAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MESSAGE) +#define DUK_STRIDX_LC_BOOLEAN 53 /* 'boolean' */ +#define DUK_HEAP_STRING_LC_BOOLEAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BOOLEAN) +#define DUK_HTHREAD_STRING_LC_BOOLEAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BOOLEAN) +#define DUK_STRIDX_LC_NUMBER 54 /* 'number' */ +#define DUK_HEAP_STRING_LC_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NUMBER) +#define DUK_HTHREAD_STRING_LC_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NUMBER) +#define DUK_STRIDX_LC_STRING 55 /* 'string' */ +#define DUK_HEAP_STRING_LC_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_STRING) +#define DUK_HTHREAD_STRING_LC_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_STRING) +#define DUK_STRIDX_LC_SYMBOL 56 /* 'symbol' */ +#define DUK_HEAP_STRING_LC_SYMBOL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_SYMBOL) +#define DUK_HTHREAD_STRING_LC_SYMBOL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_SYMBOL) +#define DUK_STRIDX_LC_OBJECT 57 /* 'object' */ +#define DUK_HEAP_STRING_LC_OBJECT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_OBJECT) +#define DUK_HTHREAD_STRING_LC_OBJECT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_OBJECT) +#define DUK_STRIDX_LC_UNDEFINED 58 /* 'undefined' */ +#define DUK_HEAP_STRING_LC_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_UNDEFINED) +#define DUK_HTHREAD_STRING_LC_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_UNDEFINED) +#define DUK_STRIDX_NAN 59 /* 'NaN' */ +#define DUK_HEAP_STRING_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAN) +#define DUK_HTHREAD_STRING_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAN) +#define DUK_STRIDX_INFINITY 60 /* 'Infinity' */ +#define DUK_HEAP_STRING_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INFINITY) +#define DUK_HTHREAD_STRING_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INFINITY) +#define DUK_STRIDX_MINUS_INFINITY 61 /* '-Infinity' */ +#define DUK_HEAP_STRING_MINUS_INFINITY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_INFINITY) +#define DUK_HTHREAD_STRING_MINUS_INFINITY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_INFINITY) +#define DUK_STRIDX_MINUS_ZERO 62 /* '-0' */ +#define DUK_HEAP_STRING_MINUS_ZERO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_MINUS_ZERO) +#define DUK_HTHREAD_STRING_MINUS_ZERO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_MINUS_ZERO) +#define DUK_STRIDX_COMMA 63 /* ',' */ +#define DUK_HEAP_STRING_COMMA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMMA) +#define DUK_HTHREAD_STRING_COMMA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMMA) +#define DUK_STRIDX_NEWLINE_4SPACE 64 /* '\n ' */ +#define DUK_HEAP_STRING_NEWLINE_4SPACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEWLINE_4SPACE) +#define DUK_HTHREAD_STRING_NEWLINE_4SPACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEWLINE_4SPACE) +#define DUK_STRIDX_BRACKETED_ELLIPSIS 65 /* '[...]' */ +#define DUK_HEAP_STRING_BRACKETED_ELLIPSIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BRACKETED_ELLIPSIS) +#define DUK_HTHREAD_STRING_BRACKETED_ELLIPSIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BRACKETED_ELLIPSIS) +#define DUK_STRIDX_INVALID_DATE 66 /* 'Invalid Date' */ +#define DUK_HEAP_STRING_INVALID_DATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INVALID_DATE) +#define DUK_HTHREAD_STRING_INVALID_DATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INVALID_DATE) +#define DUK_STRIDX_LC_ARGUMENTS 67 /* 'arguments' */ +#define DUK_HEAP_STRING_LC_ARGUMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_ARGUMENTS) +#define DUK_HTHREAD_STRING_LC_ARGUMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_ARGUMENTS) +#define DUK_STRIDX_CALLEE 68 /* 'callee' */ +#define DUK_HEAP_STRING_CALLEE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLEE) +#define DUK_HTHREAD_STRING_CALLEE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLEE) +#define DUK_STRIDX_CALLER 69 /* 'caller' */ +#define DUK_HEAP_STRING_CALLER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CALLER) +#define DUK_HTHREAD_STRING_CALLER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CALLER) +#define DUK_STRIDX_APPLY 70 /* 'apply' */ +#define DUK_HEAP_STRING_APPLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_APPLY) +#define DUK_HTHREAD_STRING_APPLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_APPLY) +#define DUK_STRIDX_CONSTRUCT 71 /* 'construct' */ +#define DUK_HEAP_STRING_CONSTRUCT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONSTRUCT) +#define DUK_HTHREAD_STRING_CONSTRUCT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONSTRUCT) +#define DUK_STRIDX_DELETE_PROPERTY 72 /* 'deleteProperty' */ +#define DUK_HEAP_STRING_DELETE_PROPERTY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE_PROPERTY) +#define DUK_HTHREAD_STRING_DELETE_PROPERTY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE_PROPERTY) +#define DUK_STRIDX_GET 73 /* 'get' */ +#define DUK_HEAP_STRING_GET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_GET) +#define DUK_HTHREAD_STRING_GET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_GET) +#define DUK_STRIDX_HAS 74 /* 'has' */ +#define DUK_HEAP_STRING_HAS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HAS) +#define DUK_HTHREAD_STRING_HAS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HAS) +#define DUK_STRIDX_OWN_KEYS 75 /* 'ownKeys' */ +#define DUK_HEAP_STRING_OWN_KEYS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_OWN_KEYS) +#define DUK_HTHREAD_STRING_OWN_KEYS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_OWN_KEYS) +#define DUK_STRIDX_WELLKNOWN_SYMBOL_TO_PRIMITIVE 76 /* '\x81Symbol.toPrimitive\xff' */ +#define DUK_HEAP_STRING_WELLKNOWN_SYMBOL_TO_PRIMITIVE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WELLKNOWN_SYMBOL_TO_PRIMITIVE) +#define DUK_HTHREAD_STRING_WELLKNOWN_SYMBOL_TO_PRIMITIVE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WELLKNOWN_SYMBOL_TO_PRIMITIVE) +#define DUK_STRIDX_WELLKNOWN_SYMBOL_HAS_INSTANCE 77 /* '\x81Symbol.hasInstance\xff' */ +#define DUK_HEAP_STRING_WELLKNOWN_SYMBOL_HAS_INSTANCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WELLKNOWN_SYMBOL_HAS_INSTANCE) +#define DUK_HTHREAD_STRING_WELLKNOWN_SYMBOL_HAS_INSTANCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WELLKNOWN_SYMBOL_HAS_INSTANCE) +#define DUK_STRIDX_WELLKNOWN_SYMBOL_TO_STRING_TAG 78 /* '\x81Symbol.toStringTag\xff' */ +#define DUK_HEAP_STRING_WELLKNOWN_SYMBOL_TO_STRING_TAG(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WELLKNOWN_SYMBOL_TO_STRING_TAG) +#define DUK_HTHREAD_STRING_WELLKNOWN_SYMBOL_TO_STRING_TAG(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WELLKNOWN_SYMBOL_TO_STRING_TAG) +#define DUK_STRIDX_WELLKNOWN_SYMBOL_IS_CONCAT_SPREADABLE 79 /* '\x81Symbol.isConcatSpreadable\xff' */ +#define DUK_HEAP_STRING_WELLKNOWN_SYMBOL_IS_CONCAT_SPREADABLE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WELLKNOWN_SYMBOL_IS_CONCAT_SPREADABLE) +#define DUK_HTHREAD_STRING_WELLKNOWN_SYMBOL_IS_CONCAT_SPREADABLE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WELLKNOWN_SYMBOL_IS_CONCAT_SPREADABLE) +#define DUK_STRIDX_SET_PROTOTYPE_OF 80 /* 'setPrototypeOf' */ +#define DUK_HEAP_STRING_SET_PROTOTYPE_OF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET_PROTOTYPE_OF) +#define DUK_HTHREAD_STRING_SET_PROTOTYPE_OF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET_PROTOTYPE_OF) +#define DUK_STRIDX___PROTO__ 81 /* '__proto__' */ +#define DUK_HEAP_STRING___PROTO__(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX___PROTO__) +#define DUK_HTHREAD_STRING___PROTO__(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX___PROTO__) +#define DUK_STRIDX_TO_STRING 82 /* 'toString' */ +#define DUK_HEAP_STRING_TO_STRING(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_STRING) +#define DUK_HTHREAD_STRING_TO_STRING(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_STRING) +#define DUK_STRIDX_TO_JSON 83 /* 'toJSON' */ +#define DUK_HEAP_STRING_TO_JSON(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TO_JSON) +#define DUK_HTHREAD_STRING_TO_JSON(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TO_JSON) +#define DUK_STRIDX_TYPE 84 /* 'type' */ +#define DUK_HEAP_STRING_TYPE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPE) +#define DUK_HTHREAD_STRING_TYPE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPE) +#define DUK_STRIDX_DATA 85 /* 'data' */ +#define DUK_HEAP_STRING_DATA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DATA) +#define DUK_HTHREAD_STRING_DATA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DATA) +#define DUK_STRIDX_LC_BUFFER 86 /* 'buffer' */ +#define DUK_HEAP_STRING_LC_BUFFER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_BUFFER) +#define DUK_HTHREAD_STRING_LC_BUFFER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_BUFFER) +#define DUK_STRIDX_LENGTH 87 /* 'length' */ +#define DUK_HEAP_STRING_LENGTH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LENGTH) +#define DUK_HTHREAD_STRING_LENGTH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LENGTH) +#define DUK_STRIDX_SET 88 /* 'set' */ +#define DUK_HEAP_STRING_SET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SET) +#define DUK_HTHREAD_STRING_SET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SET) +#define DUK_STRIDX_STACK 89 /* 'stack' */ +#define DUK_HEAP_STRING_STACK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STACK) +#define DUK_HTHREAD_STRING_STACK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STACK) +#define DUK_STRIDX_PC 90 /* 'pc' */ +#define DUK_HEAP_STRING_PC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PC) +#define DUK_HTHREAD_STRING_PC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PC) +#define DUK_STRIDX_LINE_NUMBER 91 /* 'lineNumber' */ +#define DUK_HEAP_STRING_LINE_NUMBER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LINE_NUMBER) +#define DUK_HTHREAD_STRING_LINE_NUMBER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LINE_NUMBER) +#define DUK_STRIDX_INT_TRACEDATA 92 /* '\x82Tracedata' */ +#define DUK_HEAP_STRING_INT_TRACEDATA(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TRACEDATA) +#define DUK_HTHREAD_STRING_INT_TRACEDATA(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TRACEDATA) +#define DUK_STRIDX_NAME 93 /* 'name' */ +#define DUK_HEAP_STRING_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NAME) +#define DUK_HTHREAD_STRING_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NAME) +#define DUK_STRIDX_FILE_NAME 94 /* 'fileName' */ +#define DUK_HEAP_STRING_FILE_NAME(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FILE_NAME) +#define DUK_HTHREAD_STRING_FILE_NAME(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FILE_NAME) +#define DUK_STRIDX_LC_POINTER 95 /* 'pointer' */ +#define DUK_HEAP_STRING_LC_POINTER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_POINTER) +#define DUK_HTHREAD_STRING_LC_POINTER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_POINTER) +#define DUK_STRIDX_INT_TARGET 96 /* '\x82Target' */ +#define DUK_HEAP_STRING_INT_TARGET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_TARGET) +#define DUK_HTHREAD_STRING_INT_TARGET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_TARGET) +#define DUK_STRIDX_INT_NEXT 97 /* '\x82Next' */ +#define DUK_HEAP_STRING_INT_NEXT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_NEXT) +#define DUK_HTHREAD_STRING_INT_NEXT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_NEXT) +#define DUK_STRIDX_INT_BYTECODE 98 /* '\x82Bytecode' */ +#define DUK_HEAP_STRING_INT_BYTECODE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_BYTECODE) +#define DUK_HTHREAD_STRING_INT_BYTECODE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_BYTECODE) +#define DUK_STRIDX_INT_FORMALS 99 /* '\x82Formals' */ +#define DUK_HEAP_STRING_INT_FORMALS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FORMALS) +#define DUK_HTHREAD_STRING_INT_FORMALS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FORMALS) +#define DUK_STRIDX_INT_VARMAP 100 /* '\x82Varmap' */ +#define DUK_HEAP_STRING_INT_VARMAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARMAP) +#define DUK_HTHREAD_STRING_INT_VARMAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARMAP) +#define DUK_STRIDX_INT_SOURCE 101 /* '\x82Source' */ +#define DUK_HEAP_STRING_INT_SOURCE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_SOURCE) +#define DUK_HTHREAD_STRING_INT_SOURCE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_SOURCE) +#define DUK_STRIDX_INT_PC2LINE 102 /* '\x82Pc2line' */ +#define DUK_HEAP_STRING_INT_PC2LINE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_PC2LINE) +#define DUK_HTHREAD_STRING_INT_PC2LINE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_PC2LINE) +#define DUK_STRIDX_INT_MAP 103 /* '\x82Map' */ +#define DUK_HEAP_STRING_INT_MAP(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_MAP) +#define DUK_HTHREAD_STRING_INT_MAP(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_MAP) +#define DUK_STRIDX_INT_VARENV 104 /* '\x82Varenv' */ +#define DUK_HEAP_STRING_INT_VARENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VARENV) +#define DUK_HTHREAD_STRING_INT_VARENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VARENV) +#define DUK_STRIDX_INT_FINALIZER 105 /* '\x82Finalizer' */ +#define DUK_HEAP_STRING_INT_FINALIZER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_FINALIZER) +#define DUK_HTHREAD_STRING_INT_FINALIZER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_FINALIZER) +#define DUK_STRIDX_INT_VALUE 106 /* '\x82Value' */ +#define DUK_HEAP_STRING_INT_VALUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INT_VALUE) +#define DUK_HTHREAD_STRING_INT_VALUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INT_VALUE) +#define DUK_STRIDX_COMPILE 107 /* 'compile' */ +#define DUK_HEAP_STRING_COMPILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_COMPILE) +#define DUK_HTHREAD_STRING_COMPILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_COMPILE) +#define DUK_STRIDX_INPUT 108 /* 'input' */ +#define DUK_HEAP_STRING_INPUT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INPUT) +#define DUK_HTHREAD_STRING_INPUT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INPUT) +#define DUK_STRIDX_ERR_CREATE 109 /* 'errCreate' */ +#define DUK_HEAP_STRING_ERR_CREATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_CREATE) +#define DUK_HTHREAD_STRING_ERR_CREATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_CREATE) +#define DUK_STRIDX_ERR_THROW 110 /* 'errThrow' */ +#define DUK_HEAP_STRING_ERR_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ERR_THROW) +#define DUK_HTHREAD_STRING_ERR_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ERR_THROW) +#define DUK_STRIDX_ENV 111 /* 'env' */ +#define DUK_HEAP_STRING_ENV(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENV) +#define DUK_HTHREAD_STRING_ENV(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENV) +#define DUK_STRIDX_HEX 112 /* 'hex' */ +#define DUK_HEAP_STRING_HEX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_HEX) +#define DUK_HTHREAD_STRING_HEX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_HEX) +#define DUK_STRIDX_BASE64 113 /* 'base64' */ +#define DUK_HEAP_STRING_BASE64(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BASE64) +#define DUK_HTHREAD_STRING_BASE64(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BASE64) +#define DUK_STRIDX_JX 114 /* 'jx' */ +#define DUK_HEAP_STRING_JX(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JX) +#define DUK_HTHREAD_STRING_JX(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JX) +#define DUK_STRIDX_JC 115 /* 'jc' */ +#define DUK_HEAP_STRING_JC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JC) +#define DUK_HTHREAD_STRING_JC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JC) +#define DUK_STRIDX_JSON_EXT_UNDEFINED 116 /* '{"_undef":true}' */ +#define DUK_HEAP_STRING_JSON_EXT_UNDEFINED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_UNDEFINED) +#define DUK_HTHREAD_STRING_JSON_EXT_UNDEFINED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_UNDEFINED) +#define DUK_STRIDX_JSON_EXT_NAN 117 /* '{"_nan":true}' */ +#define DUK_HEAP_STRING_JSON_EXT_NAN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NAN) +#define DUK_HTHREAD_STRING_JSON_EXT_NAN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NAN) +#define DUK_STRIDX_JSON_EXT_POSINF 118 /* '{"_inf":true}' */ +#define DUK_HEAP_STRING_JSON_EXT_POSINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_POSINF) +#define DUK_HTHREAD_STRING_JSON_EXT_POSINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_POSINF) +#define DUK_STRIDX_JSON_EXT_NEGINF 119 /* '{"_ninf":true}' */ +#define DUK_HEAP_STRING_JSON_EXT_NEGINF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_NEGINF) +#define DUK_HTHREAD_STRING_JSON_EXT_NEGINF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_NEGINF) +#define DUK_STRIDX_JSON_EXT_FUNCTION1 120 /* '{"_func":true}' */ +#define DUK_HEAP_STRING_JSON_EXT_FUNCTION1(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION1) +#define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION1(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION1) +#define DUK_STRIDX_JSON_EXT_FUNCTION2 121 /* '{_func:true}' */ +#define DUK_HEAP_STRING_JSON_EXT_FUNCTION2(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_JSON_EXT_FUNCTION2) +#define DUK_HTHREAD_STRING_JSON_EXT_FUNCTION2(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_JSON_EXT_FUNCTION2) +#define DUK_STRIDX_BREAK 122 /* 'break' */ +#define DUK_HEAP_STRING_BREAK(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_BREAK) +#define DUK_HTHREAD_STRING_BREAK(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_BREAK) +#define DUK_STRIDX_CASE 123 /* 'case' */ +#define DUK_HEAP_STRING_CASE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CASE) +#define DUK_HTHREAD_STRING_CASE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CASE) +#define DUK_STRIDX_CATCH 124 /* 'catch' */ +#define DUK_HEAP_STRING_CATCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CATCH) +#define DUK_HTHREAD_STRING_CATCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CATCH) +#define DUK_STRIDX_CONTINUE 125 /* 'continue' */ +#define DUK_HEAP_STRING_CONTINUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONTINUE) +#define DUK_HTHREAD_STRING_CONTINUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONTINUE) +#define DUK_STRIDX_DEBUGGER 126 /* 'debugger' */ +#define DUK_HEAP_STRING_DEBUGGER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEBUGGER) +#define DUK_HTHREAD_STRING_DEBUGGER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEBUGGER) +#define DUK_STRIDX_DEFAULT 127 /* 'default' */ +#define DUK_HEAP_STRING_DEFAULT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DEFAULT) +#define DUK_HTHREAD_STRING_DEFAULT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DEFAULT) +#define DUK_STRIDX_DELETE 128 /* 'delete' */ +#define DUK_HEAP_STRING_DELETE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DELETE) +#define DUK_HTHREAD_STRING_DELETE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DELETE) +#define DUK_STRIDX_DO 129 /* 'do' */ +#define DUK_HEAP_STRING_DO(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_DO) +#define DUK_HTHREAD_STRING_DO(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_DO) +#define DUK_STRIDX_ELSE 130 /* 'else' */ +#define DUK_HEAP_STRING_ELSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ELSE) +#define DUK_HTHREAD_STRING_ELSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ELSE) +#define DUK_STRIDX_FINALLY 131 /* 'finally' */ +#define DUK_HEAP_STRING_FINALLY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FINALLY) +#define DUK_HTHREAD_STRING_FINALLY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FINALLY) +#define DUK_STRIDX_FOR 132 /* 'for' */ +#define DUK_HEAP_STRING_FOR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FOR) +#define DUK_HTHREAD_STRING_FOR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FOR) +#define DUK_STRIDX_LC_FUNCTION 133 /* 'function' */ +#define DUK_HEAP_STRING_LC_FUNCTION(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_FUNCTION) +#define DUK_HTHREAD_STRING_LC_FUNCTION(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_FUNCTION) +#define DUK_STRIDX_IF 134 /* 'if' */ +#define DUK_HEAP_STRING_IF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IF) +#define DUK_HTHREAD_STRING_IF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IF) +#define DUK_STRIDX_IN 135 /* 'in' */ +#define DUK_HEAP_STRING_IN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IN) +#define DUK_HTHREAD_STRING_IN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IN) +#define DUK_STRIDX_INSTANCEOF 136 /* 'instanceof' */ +#define DUK_HEAP_STRING_INSTANCEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INSTANCEOF) +#define DUK_HTHREAD_STRING_INSTANCEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INSTANCEOF) +#define DUK_STRIDX_NEW 137 /* 'new' */ +#define DUK_HEAP_STRING_NEW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_NEW) +#define DUK_HTHREAD_STRING_NEW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_NEW) +#define DUK_STRIDX_RETURN 138 /* 'return' */ +#define DUK_HEAP_STRING_RETURN(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_RETURN) +#define DUK_HTHREAD_STRING_RETURN(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_RETURN) +#define DUK_STRIDX_SWITCH 139 /* 'switch' */ +#define DUK_HEAP_STRING_SWITCH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SWITCH) +#define DUK_HTHREAD_STRING_SWITCH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SWITCH) +#define DUK_STRIDX_THIS 140 /* 'this' */ +#define DUK_HEAP_STRING_THIS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THIS) +#define DUK_HTHREAD_STRING_THIS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THIS) +#define DUK_STRIDX_THROW 141 /* 'throw' */ +#define DUK_HEAP_STRING_THROW(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_THROW) +#define DUK_HTHREAD_STRING_THROW(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_THROW) +#define DUK_STRIDX_TRY 142 /* 'try' */ +#define DUK_HEAP_STRING_TRY(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRY) +#define DUK_HTHREAD_STRING_TRY(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRY) +#define DUK_STRIDX_TYPEOF 143 /* 'typeof' */ +#define DUK_HEAP_STRING_TYPEOF(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TYPEOF) +#define DUK_HTHREAD_STRING_TYPEOF(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TYPEOF) +#define DUK_STRIDX_VAR 144 /* 'var' */ +#define DUK_HEAP_STRING_VAR(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VAR) +#define DUK_HTHREAD_STRING_VAR(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VAR) +#define DUK_STRIDX_CONST 145 /* 'const' */ +#define DUK_HEAP_STRING_CONST(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CONST) +#define DUK_HTHREAD_STRING_CONST(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CONST) +#define DUK_STRIDX_VOID 146 /* 'void' */ +#define DUK_HEAP_STRING_VOID(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_VOID) +#define DUK_HTHREAD_STRING_VOID(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_VOID) +#define DUK_STRIDX_WHILE 147 /* 'while' */ +#define DUK_HEAP_STRING_WHILE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WHILE) +#define DUK_HTHREAD_STRING_WHILE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WHILE) +#define DUK_STRIDX_WITH 148 /* 'with' */ +#define DUK_HEAP_STRING_WITH(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_WITH) +#define DUK_HTHREAD_STRING_WITH(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_WITH) +#define DUK_STRIDX_CLASS 149 /* 'class' */ +#define DUK_HEAP_STRING_CLASS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_CLASS) +#define DUK_HTHREAD_STRING_CLASS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_CLASS) +#define DUK_STRIDX_ENUM 150 /* 'enum' */ +#define DUK_HEAP_STRING_ENUM(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_ENUM) +#define DUK_HTHREAD_STRING_ENUM(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_ENUM) +#define DUK_STRIDX_EXPORT 151 /* 'export' */ +#define DUK_HEAP_STRING_EXPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXPORT) +#define DUK_HTHREAD_STRING_EXPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXPORT) +#define DUK_STRIDX_EXTENDS 152 /* 'extends' */ +#define DUK_HEAP_STRING_EXTENDS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_EXTENDS) +#define DUK_HTHREAD_STRING_EXTENDS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_EXTENDS) +#define DUK_STRIDX_IMPORT 153 /* 'import' */ +#define DUK_HEAP_STRING_IMPORT(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPORT) +#define DUK_HTHREAD_STRING_IMPORT(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPORT) +#define DUK_STRIDX_SUPER 154 /* 'super' */ +#define DUK_HEAP_STRING_SUPER(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_SUPER) +#define DUK_HTHREAD_STRING_SUPER(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_SUPER) +#define DUK_STRIDX_LC_NULL 155 /* 'null' */ +#define DUK_HEAP_STRING_LC_NULL(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LC_NULL) +#define DUK_HTHREAD_STRING_LC_NULL(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LC_NULL) +#define DUK_STRIDX_TRUE 156 /* 'true' */ +#define DUK_HEAP_STRING_TRUE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_TRUE) +#define DUK_HTHREAD_STRING_TRUE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_TRUE) +#define DUK_STRIDX_FALSE 157 /* 'false' */ +#define DUK_HEAP_STRING_FALSE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_FALSE) +#define DUK_HTHREAD_STRING_FALSE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_FALSE) +#define DUK_STRIDX_IMPLEMENTS 158 /* 'implements' */ +#define DUK_HEAP_STRING_IMPLEMENTS(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_IMPLEMENTS) +#define DUK_HTHREAD_STRING_IMPLEMENTS(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_IMPLEMENTS) +#define DUK_STRIDX_INTERFACE 159 /* 'interface' */ +#define DUK_HEAP_STRING_INTERFACE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_INTERFACE) +#define DUK_HTHREAD_STRING_INTERFACE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_INTERFACE) +#define DUK_STRIDX_LET 160 /* 'let' */ +#define DUK_HEAP_STRING_LET(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_LET) +#define DUK_HTHREAD_STRING_LET(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_LET) +#define DUK_STRIDX_PACKAGE 161 /* 'package' */ +#define DUK_HEAP_STRING_PACKAGE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PACKAGE) +#define DUK_HTHREAD_STRING_PACKAGE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PACKAGE) +#define DUK_STRIDX_PRIVATE 162 /* 'private' */ +#define DUK_HEAP_STRING_PRIVATE(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PRIVATE) +#define DUK_HTHREAD_STRING_PRIVATE(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PRIVATE) +#define DUK_STRIDX_PROTECTED 163 /* 'protected' */ +#define DUK_HEAP_STRING_PROTECTED(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PROTECTED) +#define DUK_HTHREAD_STRING_PROTECTED(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PROTECTED) +#define DUK_STRIDX_PUBLIC 164 /* 'public' */ +#define DUK_HEAP_STRING_PUBLIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_PUBLIC) +#define DUK_HTHREAD_STRING_PUBLIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_PUBLIC) +#define DUK_STRIDX_STATIC 165 /* 'static' */ +#define DUK_HEAP_STRING_STATIC(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_STATIC) +#define DUK_HTHREAD_STRING_STATIC(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_STATIC) +#define DUK_STRIDX_YIELD 166 /* 'yield' */ +#define DUK_HEAP_STRING_YIELD(heap) DUK_HEAP_GET_STRING((heap),DUK_STRIDX_YIELD) +#define DUK_HTHREAD_STRING_YIELD(thr) DUK_HTHREAD_GET_STRING((thr),DUK_STRIDX_YIELD) + +#define DUK_HEAP_NUM_STRINGS 167 +#define DUK_STRIDX_START_RESERVED 122 +#define DUK_STRIDX_START_STRICT_RESERVED 158 +#define DUK_STRIDX_END_RESERVED 167 /* exclusive endpoint */ + +/* To convert a heap stridx to a token number, subtract + * DUK_STRIDX_START_RESERVED and add DUK_TOK_START_RESERVED. + */ +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_uint8_t duk_strings_data[972]; +#endif /* !DUK_SINGLE_FILE */ +#define DUK_STRDATA_MAX_STRLEN 27 +#define DUK_STRDATA_DATA_LENGTH 972 +#endif /* DUK_USE_ROM_STRINGS */ + +#if defined(DUK_USE_ROM_OBJECTS) +#error RAM support not enabled, rerun configure.py with --ram-support +#else /* DUK_USE_ROM_OBJECTS */ +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_boolean_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_regexp_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_constructor_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_type_error_thrower(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_parse_int(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_parse_float(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_thread_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_pointer_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_proxy_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_symbol_constructor_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_arraybuffer_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_dataview_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_typedarray_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_textencoder_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_textdecoder_constructor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_eval(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_is_nan(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_is_finite(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_decode_uri(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_decode_uri_component(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_encode_uri(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_encode_uri_component(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_escape(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_global_object_unescape(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_getprototype_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_setprototype_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_get_own_property_descriptor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_keys_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_assign(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_create(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_define_property(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_define_properties(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_seal_freeze_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_prevent_extensions(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_is_sealed_frozen_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_is_extensible(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_constructor_is(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_to_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_to_locale_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_value_of(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_has_own_property(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_is_prototype_of(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_property_is_enumerable(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_defineaccessor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_lookupaccessor(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype_to_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype_apply(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype_call(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype_bind(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype_hasinstance(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_native_function_length(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_native_function_name(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_constructor_is_array(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_to_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_join_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_concat(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_pop(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_push(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_reverse(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_shift(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_slice(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_sort(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_splice(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_unshift(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_indexof_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_iter_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_array_prototype_reduce_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_constructor_from_char_code(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_constructor_from_code_point(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_to_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_char_at(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_char_code_at(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_concat(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_indexof_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_locale_compare(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_match(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_replace(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_search(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_slice(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_split(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_substring(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_caseconv_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_trim(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_repeat(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_startswith_endswith(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_includes(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_string_prototype_substr(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_boolean_prototype_tostring_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_check_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_prototype_to_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_prototype_to_locale_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_prototype_value_of(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_prototype_to_fixed(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_prototype_to_exponential(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_number_prototype_to_precision(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_constructor_parse(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_constructor_utc(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_constructor_now(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_tostring_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_to_json(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_value_of(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_get_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_get_timezone_offset(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_set_time(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_set_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_date_prototype_toprimitive(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_regexp_prototype_exec(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_regexp_prototype_test(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_regexp_prototype_tostring(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_regexp_prototype_flags(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_regexp_prototype_shared_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_stack_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_stack_setter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_filename_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_filename_setter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_linenumber_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_linenumber_setter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_error_prototype_to_string(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_onearg_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_twoarg_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_clz32(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_hypot(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_imul(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_max(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_min(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_random(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_math_object_sign(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_json_object_parse(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_json_object_stringify(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_info(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_act(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_gc(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_fin(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_enc(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_dec(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_duktape_object_compact(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_thread_yield(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_thread_resume(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_thread_current(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_pointer_prototype_tostring_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_reflect_apply(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_reflect_construct(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_reflect_object_delete_property(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_reflect_object_get(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_reflect_object_has(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_reflect_object_set(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_symbol_key_for(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_symbol_tostring_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_symbol_toprimitive(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_arraybuffer_isview(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_typedarray_bytelength_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_buffer_slice_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_typedarray_byteoffset_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_typedarray_buffer_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_buffer_readfield(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_buffer_writefield(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_typedarray_set(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_uint8array_allocplain(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_uint8array_plainof(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_concat(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_is_encoding(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_is_buffer(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_byte_length(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_buffer_compare_shared(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_tostring(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_tojson(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_fill(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_copy(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_nodejs_buffer_write(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_cbor_encode(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_cbor_decode(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_textencoder_prototype_encoding_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_textencoder_prototype_encode(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_textdecoder_prototype_shared_getter(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_textdecoder_prototype_decode(duk_context *ctx); +DUK_INTERNAL_DECL duk_ret_t duk_bi_performance_now(duk_context *ctx); +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_c_function duk_bi_native_functions[185]; +#endif /* !DUK_SINGLE_FILE */ +#define DUK_BIDX_GLOBAL 0 +#define DUK_BIDX_GLOBAL_ENV 1 +#define DUK_BIDX_OBJECT_CONSTRUCTOR 2 +#define DUK_BIDX_OBJECT_PROTOTYPE 3 +#define DUK_BIDX_FUNCTION_CONSTRUCTOR 4 +#define DUK_BIDX_FUNCTION_PROTOTYPE 5 +#define DUK_BIDX_NATIVE_FUNCTION_PROTOTYPE 6 +#define DUK_BIDX_ARRAY_CONSTRUCTOR 7 +#define DUK_BIDX_ARRAY_PROTOTYPE 8 +#define DUK_BIDX_STRING_CONSTRUCTOR 9 +#define DUK_BIDX_STRING_PROTOTYPE 10 +#define DUK_BIDX_BOOLEAN_CONSTRUCTOR 11 +#define DUK_BIDX_BOOLEAN_PROTOTYPE 12 +#define DUK_BIDX_NUMBER_CONSTRUCTOR 13 +#define DUK_BIDX_NUMBER_PROTOTYPE 14 +#define DUK_BIDX_DATE_CONSTRUCTOR 15 +#define DUK_BIDX_DATE_PROTOTYPE 16 +#define DUK_BIDX_REGEXP_CONSTRUCTOR 17 +#define DUK_BIDX_REGEXP_PROTOTYPE 18 +#define DUK_BIDX_ERROR_CONSTRUCTOR 19 +#define DUK_BIDX_ERROR_PROTOTYPE 20 +#define DUK_BIDX_EVAL_ERROR_CONSTRUCTOR 21 +#define DUK_BIDX_EVAL_ERROR_PROTOTYPE 22 +#define DUK_BIDX_RANGE_ERROR_CONSTRUCTOR 23 +#define DUK_BIDX_RANGE_ERROR_PROTOTYPE 24 +#define DUK_BIDX_REFERENCE_ERROR_CONSTRUCTOR 25 +#define DUK_BIDX_REFERENCE_ERROR_PROTOTYPE 26 +#define DUK_BIDX_SYNTAX_ERROR_CONSTRUCTOR 27 +#define DUK_BIDX_SYNTAX_ERROR_PROTOTYPE 28 +#define DUK_BIDX_TYPE_ERROR_CONSTRUCTOR 29 +#define DUK_BIDX_TYPE_ERROR_PROTOTYPE 30 +#define DUK_BIDX_URI_ERROR_CONSTRUCTOR 31 +#define DUK_BIDX_URI_ERROR_PROTOTYPE 32 +#define DUK_BIDX_TYPE_ERROR_THROWER 33 +#define DUK_BIDX_DUKTAPE 34 +#define DUK_BIDX_THREAD_PROTOTYPE 35 +#define DUK_BIDX_POINTER_PROTOTYPE 36 +#define DUK_BIDX_DOUBLE_ERROR 37 +#define DUK_BIDX_SYMBOL_PROTOTYPE 38 +#define DUK_BIDX_ARRAYBUFFER_PROTOTYPE 39 +#define DUK_BIDX_DATAVIEW_PROTOTYPE 40 +#define DUK_BIDX_INT8ARRAY_PROTOTYPE 41 +#define DUK_BIDX_UINT8ARRAY_PROTOTYPE 42 +#define DUK_BIDX_UINT8CLAMPEDARRAY_PROTOTYPE 43 +#define DUK_BIDX_INT16ARRAY_PROTOTYPE 44 +#define DUK_BIDX_UINT16ARRAY_PROTOTYPE 45 +#define DUK_BIDX_INT32ARRAY_PROTOTYPE 46 +#define DUK_BIDX_UINT32ARRAY_PROTOTYPE 47 +#define DUK_BIDX_FLOAT32ARRAY_PROTOTYPE 48 +#define DUK_BIDX_FLOAT64ARRAY_PROTOTYPE 49 +#define DUK_BIDX_NODEJS_BUFFER_PROTOTYPE 50 +#define DUK_NUM_BUILTINS 51 +#define DUK_NUM_BIDX_BUILTINS 51 +#define DUK_NUM_ALL_BUILTINS 80 +#if defined(DUK_USE_DOUBLE_LE) +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_uint8_t duk_builtins_data[4281]; +#endif /* !DUK_SINGLE_FILE */ +#define DUK_BUILTINS_DATA_LENGTH 4281 +#elif defined(DUK_USE_DOUBLE_BE) +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_uint8_t duk_builtins_data[4281]; +#endif /* !DUK_SINGLE_FILE */ +#define DUK_BUILTINS_DATA_LENGTH 4281 +#elif defined(DUK_USE_DOUBLE_ME) +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_uint8_t duk_builtins_data[4281]; +#endif /* !DUK_SINGLE_FILE */ +#define DUK_BUILTINS_DATA_LENGTH 4281 +#else +#error invalid endianness defines +#endif +#endif /* DUK_USE_ROM_OBJECTS */ +#endif /* DUK_BUILTINS_H_INCLUDED */ +#line 45 "duk_internal.h" + +/* #include duk_util.h */ +#line 1 "duk_util.h" +/* + * Utilities + */ + +#if !defined(DUK_UTIL_H_INCLUDED) +#define DUK_UTIL_H_INCLUDED + +#if defined(DUK_USE_GET_RANDOM_DOUBLE) +#define DUK_UTIL_GET_RANDOM_DOUBLE(thr) DUK_USE_GET_RANDOM_DOUBLE((thr)->heap_udata) +#else +#define DUK_UTIL_GET_RANDOM_DOUBLE(thr) duk_util_tinyrandom_get_double(thr) +#endif + +/* + * Some useful constants + */ + +#define DUK_DOUBLE_2TO32 4294967296.0 +#define DUK_DOUBLE_2TO31 2147483648.0 +#define DUK_DOUBLE_LOG2E 1.4426950408889634 +#define DUK_DOUBLE_LOG10E 0.4342944819032518 + +/* + * Endian conversion + */ + +#if defined(DUK_USE_INTEGER_LE) +#define DUK_HTON32(x) DUK_BSWAP32((x)) +#define DUK_NTOH32(x) DUK_BSWAP32((x)) +#define DUK_HTON16(x) DUK_BSWAP16((x)) +#define DUK_NTOH16(x) DUK_BSWAP16((x)) +#elif defined(DUK_USE_INTEGER_BE) +#define DUK_HTON32(x) (x) +#define DUK_NTOH32(x) (x) +#define DUK_HTON16(x) (x) +#define DUK_NTOH16(x) (x) +#else +#error internal error, endianness defines broken +#endif + +/* + * Bitstream decoder + */ + +struct duk_bitdecoder_ctx { + const duk_uint8_t *data; + duk_size_t offset; + duk_size_t length; + duk_uint32_t currval; + duk_small_int_t currbits; +}; + +#define DUK_BD_BITPACKED_STRING_MAXLEN 256 + +/* + * Bitstream encoder + */ + +struct duk_bitencoder_ctx { + duk_uint8_t *data; + duk_size_t offset; + duk_size_t length; + duk_uint32_t currval; + duk_small_int_t currbits; + duk_small_int_t truncated; +}; + +/* + * Raw write/read macros for big endian, unaligned basic values. + * Caller ensures there's enough space. The INC macro variants + * update the pointer argument automatically. + */ + +#define DUK_RAW_WRITE_U8(ptr,val) do { \ + *(ptr) = (duk_uint8_t) (val); \ + } while (0) +#define DUK_RAW_WRITE_U16_BE(ptr,val) duk_raw_write_u16_be((ptr), (duk_uint16_t) (val)) +#define DUK_RAW_WRITE_U32_BE(ptr,val) duk_raw_write_u32_be((ptr), (duk_uint32_t) (val)) +#define DUK_RAW_WRITE_FLOAT_BE(ptr,val) duk_raw_write_float_be((ptr), (duk_float_t) (val)) +#define DUK_RAW_WRITE_DOUBLE_BE(ptr,val) duk_raw_write_double_be((ptr), (duk_double_t) (val)) +#define DUK_RAW_WRITE_XUTF8(ptr,val) duk_raw_write_xutf8((ptr), (duk_ucodepoint_t) (val)) + +#define DUK_RAW_WRITEINC_U8(ptr,val) do { \ + *(ptr)++ = (duk_uint8_t) (val); \ + } while (0) +#define DUK_RAW_WRITEINC_U16_BE(ptr,val) duk_raw_writeinc_u16_be(&(ptr), (duk_uint16_t) (val)) +#define DUK_RAW_WRITEINC_U32_BE(ptr,val) duk_raw_writeinc_u32_be(&(ptr), (duk_uint32_t) (val)) +#define DUK_RAW_WRITEINC_FLOAT_BE(ptr,val) duk_raw_writeinc_float_be(&(ptr), (duk_float_t) (val)) +#define DUK_RAW_WRITEINC_DOUBLE_BE(ptr,val) duk_raw_writeinc_double_be(&(ptr), (duk_double_t) (val)) +#define DUK_RAW_WRITEINC_XUTF8(ptr,val) duk_raw_writeinc_xutf8(&(ptr), (duk_ucodepoint_t) (val)) +#define DUK_RAW_WRITEINC_CESU8(ptr,val) duk_raw_writeinc_cesu8(&(ptr), (duk_ucodepoint_t) (val)) + +#define DUK_RAW_READ_U8(ptr) ((duk_uint8_t) (*(ptr))) +#define DUK_RAW_READ_U16_BE(ptr) duk_raw_read_u16_be((ptr)); +#define DUK_RAW_READ_U32_BE(ptr) duk_raw_read_u32_be((ptr)); +#define DUK_RAW_READ_DOUBLE_BE(ptr) duk_raw_read_double_be((ptr)); + +#define DUK_RAW_READINC_U8(ptr) ((duk_uint8_t) (*(ptr)++)) +#define DUK_RAW_READINC_U16_BE(ptr) duk_raw_readinc_u16_be(&(ptr)); +#define DUK_RAW_READINC_U32_BE(ptr) duk_raw_readinc_u32_be(&(ptr)); +#define DUK_RAW_READINC_DOUBLE_BE(ptr) duk_raw_readinc_double_be(&(ptr)); + +/* + * Double and float byte order operations. + */ + +DUK_INTERNAL_DECL void duk_dblunion_host_to_little(duk_double_union *u); +DUK_INTERNAL_DECL void duk_dblunion_little_to_host(duk_double_union *u); +DUK_INTERNAL_DECL void duk_dblunion_host_to_big(duk_double_union *u); +DUK_INTERNAL_DECL void duk_dblunion_big_to_host(duk_double_union *u); +DUK_INTERNAL_DECL void duk_fltunion_host_to_big(duk_float_union *u); +DUK_INTERNAL_DECL void duk_fltunion_big_to_host(duk_float_union *u); + +/* + * Buffer writer (dynamic buffer only) + * + * Helper for writing to a dynamic buffer with a concept of a "slack" area + * to reduce resizes. You can ensure there is enough space beforehand and + * then write for a while without further checks, relying on a stable data + * pointer. Slack handling is automatic so call sites only indicate how + * much data they need right now. + * + * There are several ways to write using bufwriter. The best approach + * depends mainly on how much performance matters over code footprint. + * The key issues are (1) ensuring there is space and (2) keeping the + * pointers consistent. Fast code should ensure space for multiple writes + * with one ensure call. Fastest inner loop code can temporarily borrow + * the 'p' pointer but must write it back eventually. + * + * Be careful to ensure all macro arguments (other than static pointers like + * 'thr' and 'bw_ctx') are evaluated exactly once, using temporaries if + * necessary (if that's not possible, there should be a note near the macro). + * Buffer write arguments often contain arithmetic etc so this is + * particularly important here. + */ + +/* XXX: Migrate bufwriter and other read/write helpers to its own header? */ + +struct duk_bufwriter_ctx { + duk_uint8_t *p; + duk_uint8_t *p_base; + duk_uint8_t *p_limit; + duk_hbuffer_dynamic *buf; +}; + +#if defined(DUK_USE_PREFER_SIZE) +#define DUK_BW_SLACK_ADD 64 +#define DUK_BW_SLACK_SHIFT 4 /* 2^4 -> 1/16 = 6.25% slack */ +#else +#define DUK_BW_SLACK_ADD 64 +#define DUK_BW_SLACK_SHIFT 2 /* 2^2 -> 1/4 = 25% slack */ +#endif + +/* Initialization and finalization (compaction), converting to other types. */ + +#define DUK_BW_INIT_PUSHBUF(thr,bw_ctx,sz) do { \ + duk_bw_init_pushbuf((thr), (bw_ctx), (sz)); \ + } while (0) +#define DUK_BW_INIT_WITHBUF(thr,bw_ctx,buf) do { \ + duk_bw_init((thr), (bw_ctx), (buf)); \ + } while (0) +#define DUK_BW_COMPACT(thr,bw_ctx) do { \ + /* Make underlying buffer compact to match DUK_BW_GET_SIZE(). */ \ + duk_bw_compact((thr), (bw_ctx)); \ + } while (0) +#define DUK_BW_PUSH_AS_STRING(thr,bw_ctx) do { \ + duk_push_lstring((thr), \ + (const char *) (bw_ctx)->p_base, \ + (duk_size_t) ((bw_ctx)->p - (bw_ctx)->p_base)); \ + } while (0) + +/* Pointers may be NULL for a while when 'buf' size is zero and before any + * ENSURE calls have been made. Once an ENSURE has been made, the pointers + * are required to be non-NULL so that it's always valid to use memcpy() and + * memmove(), even for zero size. + */ +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_bw_assert_valid(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx); +#define DUK_BW_ASSERT_VALID_EXPR(thr,bw_ctx) (duk_bw_assert_valid((thr), (bw_ctx))) +#define DUK_BW_ASSERT_VALID(thr,bw_ctx) do { duk_bw_assert_valid((thr), (bw_ctx)); } while (0) +#else +#define DUK_BW_ASSERT_VALID_EXPR(thr,bw_ctx) DUK_ASSERT_EXPR(1) +#define DUK_BW_ASSERT_VALID(thr,bw_ctx) do {} while (0) +#endif + +/* Working with the pointer and current size. */ + +#define DUK_BW_GET_PTR(thr,bw_ctx) \ + ((bw_ctx)->p) +#define DUK_BW_SET_PTR(thr,bw_ctx,ptr) do { \ + (bw_ctx)->p = (ptr); \ + } while (0) +#define DUK_BW_ADD_PTR(thr,bw_ctx,delta) do { \ + (bw_ctx)->p += (delta); \ + } while (0) +#define DUK_BW_GET_BASEPTR(thr,bw_ctx) \ + ((bw_ctx)->p_base) +#define DUK_BW_GET_LIMITPTR(thr,bw_ctx) \ + ((bw_ctx)->p_limit) +#define DUK_BW_GET_SIZE(thr,bw_ctx) \ + ((duk_size_t) ((bw_ctx)->p - (bw_ctx)->p_base)) +#define DUK_BW_SET_SIZE(thr,bw_ctx,sz) do { \ + DUK_ASSERT((duk_size_t) (sz) <= (duk_size_t) ((bw_ctx)->p - (bw_ctx)->p_base)); \ + (bw_ctx)->p = (bw_ctx)->p_base + (sz); \ + } while (0) +#define DUK_BW_RESET_SIZE(thr,bw_ctx) do { \ + /* Reset to zero size, keep current limit. */ \ + (bw_ctx)->p = (bw_ctx)->p_base; \ + } while (0) +#define DUK_BW_GET_BUFFER(thr,bw_ctx) \ + ((bw_ctx)->buf) + +/* Ensuring (reserving) space. */ + +#define DUK_BW_ENSURE(thr,bw_ctx,sz) do { \ + duk_size_t duk__sz, duk__space; \ + DUK_BW_ASSERT_VALID((thr), (bw_ctx)); \ + duk__sz = (sz); \ + duk__space = (duk_size_t) ((bw_ctx)->p_limit - (bw_ctx)->p); \ + if (duk__space < duk__sz) { \ + (void) duk_bw_resize((thr), (bw_ctx), duk__sz); \ + } \ + } while (0) +/* NOTE: Multiple evaluation of 'ptr' in this macro. */ +/* XXX: Rework to use an always-inline function? */ +#define DUK_BW_ENSURE_RAW(thr,bw_ctx,sz,ptr) \ + (((duk_size_t) ((bw_ctx)->p_limit - (ptr)) >= (sz)) ? \ + (ptr) : \ + ((bw_ctx)->p = (ptr), duk_bw_resize((thr),(bw_ctx),(sz)))) +#define DUK_BW_ENSURE_GETPTR(thr,bw_ctx,sz) \ + DUK_BW_ENSURE_RAW((thr), (bw_ctx), (sz), (bw_ctx)->p) +#define DUK_BW_ASSERT_SPACE_EXPR(thr,bw_ctx,sz) \ + (DUK_BW_ASSERT_VALID_EXPR((thr), (bw_ctx)), \ + DUK_ASSERT_EXPR((duk_size_t) ((bw_ctx)->p_limit - (bw_ctx)->p) >= (duk_size_t) (sz))) +#define DUK_BW_ASSERT_SPACE(thr,bw_ctx,sz) do { \ + DUK_BW_ASSERT_SPACE_EXPR((thr), (bw_ctx), (sz)); \ + } while (0) + +/* Miscellaneous. */ + +#define DUK_BW_SETPTR_AND_COMPACT(thr,bw_ctx,ptr) do { \ + (bw_ctx)->p = (ptr); \ + duk_bw_compact((thr), (bw_ctx)); \ + } while (0) + +/* Fast write calls which assume you control the slack beforehand. + * Multibyte write variants exist and use a temporary write pointer + * because byte writes alias with anything: with a stored pointer + * explicit pointer load/stores get generated (e.g. gcc -Os). + */ + +#define DUK_BW_WRITE_RAW_U8(thr,bw_ctx,val) do { \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), 1); \ + *(bw_ctx)->p++ = (duk_uint8_t) (val); \ + } while (0) +#define DUK_BW_WRITE_RAW_U8_2(thr,bw_ctx,val1,val2) do { \ + duk_uint8_t *duk__p; \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), 2); \ + duk__p = (bw_ctx)->p; \ + *duk__p++ = (duk_uint8_t) (val1); \ + *duk__p++ = (duk_uint8_t) (val2); \ + (bw_ctx)->p = duk__p; \ + } while (0) +#define DUK_BW_WRITE_RAW_U8_3(thr,bw_ctx,val1,val2,val3) do { \ + duk_uint8_t *duk__p; \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), 3); \ + duk__p = (bw_ctx)->p; \ + *duk__p++ = (duk_uint8_t) (val1); \ + *duk__p++ = (duk_uint8_t) (val2); \ + *duk__p++ = (duk_uint8_t) (val3); \ + (bw_ctx)->p = duk__p; \ + } while (0) +#define DUK_BW_WRITE_RAW_U8_4(thr,bw_ctx,val1,val2,val3,val4) do { \ + duk_uint8_t *duk__p; \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), 4); \ + duk__p = (bw_ctx)->p; \ + *duk__p++ = (duk_uint8_t) (val1); \ + *duk__p++ = (duk_uint8_t) (val2); \ + *duk__p++ = (duk_uint8_t) (val3); \ + *duk__p++ = (duk_uint8_t) (val4); \ + (bw_ctx)->p = duk__p; \ + } while (0) +#define DUK_BW_WRITE_RAW_U8_5(thr,bw_ctx,val1,val2,val3,val4,val5) do { \ + duk_uint8_t *duk__p; \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), 5); \ + duk__p = (bw_ctx)->p; \ + *duk__p++ = (duk_uint8_t) (val1); \ + *duk__p++ = (duk_uint8_t) (val2); \ + *duk__p++ = (duk_uint8_t) (val3); \ + *duk__p++ = (duk_uint8_t) (val4); \ + *duk__p++ = (duk_uint8_t) (val5); \ + (bw_ctx)->p = duk__p; \ + } while (0) +#define DUK_BW_WRITE_RAW_U8_6(thr,bw_ctx,val1,val2,val3,val4,val5,val6) do { \ + duk_uint8_t *duk__p; \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), 6); \ + duk__p = (bw_ctx)->p; \ + *duk__p++ = (duk_uint8_t) (val1); \ + *duk__p++ = (duk_uint8_t) (val2); \ + *duk__p++ = (duk_uint8_t) (val3); \ + *duk__p++ = (duk_uint8_t) (val4); \ + *duk__p++ = (duk_uint8_t) (val5); \ + *duk__p++ = (duk_uint8_t) (val6); \ + (bw_ctx)->p = duk__p; \ + } while (0) +#define DUK_BW_WRITE_RAW_XUTF8(thr,bw_ctx,cp) do { \ + duk_ucodepoint_t duk__cp; \ + duk_small_int_t duk__enc_len; \ + duk__cp = (duk_ucodepoint_t) (cp); \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), duk_unicode_get_xutf8_length(duk__cp)); \ + duk__enc_len = duk_unicode_encode_xutf8(duk__cp, (bw_ctx)->p); \ + (bw_ctx)->p += duk__enc_len; \ + } while (0) +#define DUK_BW_WRITE_RAW_CESU8(thr,bw_ctx,cp) do { \ + duk_ucodepoint_t duk__cp; \ + duk_small_int_t duk__enc_len; \ + duk__cp = (duk_ucodepoint_t) (cp); \ + DUK_BW_ASSERT_SPACE((thr), (bw_ctx), duk_unicode_get_cesu8_length(duk__cp)); \ + duk__enc_len = duk_unicode_encode_cesu8(duk__cp, (bw_ctx)->p); \ + (bw_ctx)->p += duk__enc_len; \ + } while (0) +/* XXX: add temporary duk__p pointer here too; sharing */ +/* XXX: avoid unsafe variants */ +#define DUK_BW_WRITE_RAW_BYTES(thr,bw_ctx,valptr,valsz) do { \ + const void *duk__valptr; \ + duk_size_t duk__valsz; \ + duk__valptr = (const void *) (valptr); \ + duk__valsz = (duk_size_t) (valsz); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), duk__valptr, duk__valsz); \ + (bw_ctx)->p += duk__valsz; \ + } while (0) +#define DUK_BW_WRITE_RAW_CSTRING(thr,bw_ctx,val) do { \ + const duk_uint8_t *duk__val; \ + duk_size_t duk__val_len; \ + duk__val = (const duk_uint8_t *) (val); \ + duk__val_len = DUK_STRLEN((const char *) duk__val); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) duk__val, duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_RAW_HSTRING(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HSTRING_GET_BYTELEN((val)); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HSTRING_GET_DATA((val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_RAW_HBUFFER(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HBUFFER_GET_SIZE((val)); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HBUFFER_GET_DATA_PTR((thr)->heap, (val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_RAW_HBUFFER_FIXED(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HBUFFER_FIXED_GET_SIZE((val)); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HBUFFER_FIXED_GET_DATA_PTR((thr)->heap, (val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_RAW_HBUFFER_DYNAMIC(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HBUFFER_DYNAMIC_GET_SIZE((val)); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR((thr)->heap, (val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) + +/* Append bytes from a slice already in the buffer. */ +#define DUK_BW_WRITE_RAW_SLICE(thr,bw,dst_off,dst_len) \ + duk_bw_write_raw_slice((thr), (bw), (dst_off), (dst_len)) + +/* Insert bytes in the middle of the buffer from an external buffer. */ +#define DUK_BW_INSERT_RAW_BYTES(thr,bw,dst_off,buf,len) \ + duk_bw_insert_raw_bytes((thr), (bw), (dst_off), (buf), (len)) + +/* Insert bytes in the middle of the buffer from a slice already + * in the buffer. Source offset is interpreted "before" the operation. + */ +#define DUK_BW_INSERT_RAW_SLICE(thr,bw,dst_off,src_off,len) \ + duk_bw_insert_raw_slice((thr), (bw), (dst_off), (src_off), (len)) + +/* Insert a reserved area somewhere in the buffer; caller fills it. + * Evaluates to a (duk_uint_t *) pointing to the start of the reserved + * area for convenience. + */ +#define DUK_BW_INSERT_RAW_AREA(thr,bw,off,len) \ + duk_bw_insert_raw_area((thr), (bw), (off), (len)) + +/* Remove a slice from inside buffer. */ +#define DUK_BW_REMOVE_RAW_SLICE(thr,bw,off,len) \ + duk_bw_remove_raw_slice((thr), (bw), (off), (len)) + +/* Safe write calls which will ensure space first. */ + +#define DUK_BW_WRITE_ENSURE_U8(thr,bw_ctx,val) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), 1); \ + DUK_BW_WRITE_RAW_U8((thr), (bw_ctx), (val)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_U8_2(thr,bw_ctx,val1,val2) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), 2); \ + DUK_BW_WRITE_RAW_U8_2((thr), (bw_ctx), (val1), (val2)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_U8_3(thr,bw_ctx,val1,val2,val3) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), 3); \ + DUK_BW_WRITE_RAW_U8_3((thr), (bw_ctx), (val1), (val2), (val3)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_U8_4(thr,bw_ctx,val1,val2,val3,val4) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), 4); \ + DUK_BW_WRITE_RAW_U8_4((thr), (bw_ctx), (val1), (val2), (val3), (val4)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_U8_5(thr,bw_ctx,val1,val2,val3,val4,val5) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), 5); \ + DUK_BW_WRITE_RAW_U8_5((thr), (bw_ctx), (val1), (val2), (val3), (val4), (val5)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_U8_6(thr,bw_ctx,val1,val2,val3,val4,val5,val6) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), 6); \ + DUK_BW_WRITE_RAW_U8_6((thr), (bw_ctx), (val1), (val2), (val3), (val4), (val5), (val6)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_XUTF8(thr,bw_ctx,cp) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), DUK_UNICODE_MAX_XUTF8_LENGTH); \ + DUK_BW_WRITE_RAW_XUTF8((thr), (bw_ctx), (cp)); \ + } while (0) +#define DUK_BW_WRITE_ENSURE_CESU8(thr,bw_ctx,cp) do { \ + DUK_BW_ENSURE((thr), (bw_ctx), DUK_UNICODE_MAX_CESU8_LENGTH); \ + DUK_BW_WRITE_RAW_CESU8((thr), (bw_ctx), (cp)); \ + } while (0) +/* XXX: add temporary duk__p pointer here too; sharing */ +/* XXX: avoid unsafe */ +#define DUK_BW_WRITE_ENSURE_BYTES(thr,bw_ctx,valptr,valsz) do { \ + const void *duk__valptr; \ + duk_size_t duk__valsz; \ + duk__valptr = (const void *) (valptr); \ + duk__valsz = (duk_size_t) (valsz); \ + DUK_BW_ENSURE((thr), (bw_ctx), duk__valsz); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), duk__valptr, duk__valsz); \ + (bw_ctx)->p += duk__valsz; \ + } while (0) +#define DUK_BW_WRITE_ENSURE_CSTRING(thr,bw_ctx,val) do { \ + const duk_uint8_t *duk__val; \ + duk_size_t duk__val_len; \ + duk__val = (const duk_uint8_t *) (val); \ + duk__val_len = DUK_STRLEN((const char *) duk__val); \ + DUK_BW_ENSURE((thr), (bw_ctx), duk__val_len); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) duk__val, duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_ENSURE_HSTRING(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HSTRING_GET_BYTELEN((val)); \ + DUK_BW_ENSURE((thr), (bw_ctx), duk__val_len); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HSTRING_GET_DATA((val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_ENSURE_HBUFFER(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HBUFFER_GET_SIZE((val)); \ + DUK_BW_ENSURE((thr), (bw_ctx), duk__val_len); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HBUFFER_GET_DATA_PTR((thr)->heap, (val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_ENSURE_HBUFFER_FIXED(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HBUFFER_FIXED_GET_SIZE((val)); \ + DUK_BW_ENSURE((thr), (bw_ctx), duk__val_len); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HBUFFER_FIXED_GET_DATA_PTR((thr)->heap, (val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) +#define DUK_BW_WRITE_ENSURE_HBUFFER_DYNAMIC(thr,bw_ctx,val) do { \ + duk_size_t duk__val_len; \ + duk__val_len = DUK_HBUFFER_DYNAMIC_GET_SIZE((val)); \ + DUK_BW_ENSURE((thr), (bw_ctx), duk__val_len); \ + duk_memcpy_unsafe((void *) ((bw_ctx)->p), (const void *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR((thr)->heap, (val)), duk__val_len); \ + (bw_ctx)->p += duk__val_len; \ + } while (0) + +#define DUK_BW_WRITE_ENSURE_SLICE(thr,bw,dst_off,dst_len) \ + duk_bw_write_ensure_slice((thr), (bw), (dst_off), (dst_len)) +#define DUK_BW_INSERT_ENSURE_BYTES(thr,bw,dst_off,buf,len) \ + duk_bw_insert_ensure_bytes((thr), (bw), (dst_off), (buf), (len)) +#define DUK_BW_INSERT_ENSURE_SLICE(thr,bw,dst_off,src_off,len) \ + duk_bw_insert_ensure_slice((thr), (bw), (dst_off), (src_off), (len)) +#define DUK_BW_INSERT_ENSURE_AREA(thr,bw,off,len) \ + /* Evaluates to (duk_uint8_t *) pointing to start of area. */ \ + duk_bw_insert_ensure_area((thr), (bw), (off), (len)) +#define DUK_BW_REMOVE_ENSURE_SLICE(thr,bw,off,len) \ + /* No difference between raw/ensure because the buffer shrinks. */ \ + DUK_BW_REMOVE_RAW_SLICE((thr), (bw), (off), (len)) + +/* + * Externs and prototypes + */ + +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_uint8_t duk_lc_digits[36]; +DUK_INTERNAL_DECL const duk_uint8_t duk_uc_nybbles[16]; +DUK_INTERNAL_DECL const duk_int8_t duk_hex_dectab[256]; +#if defined(DUK_USE_HEX_FASTPATH) +DUK_INTERNAL_DECL const duk_int16_t duk_hex_dectab_shift4[256]; +DUK_INTERNAL_DECL const duk_uint16_t duk_hex_enctab[256]; +#endif +#endif /* !DUK_SINGLE_FILE */ + +/* Note: assumes that duk_util_probe_steps size is 32 */ +#if defined(DUK_USE_HOBJECT_HASH_PART) +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL duk_uint8_t duk_util_probe_steps[32]; +#endif /* !DUK_SINGLE_FILE */ +#endif + +#if defined(DUK_USE_STRHASH_DENSE) +DUK_INTERNAL_DECL duk_uint32_t duk_util_hashbytes(const duk_uint8_t *data, duk_size_t len, duk_uint32_t seed); +#endif + +DUK_INTERNAL_DECL duk_uint32_t duk_bd_decode(duk_bitdecoder_ctx *ctx, duk_small_int_t bits); +DUK_INTERNAL_DECL duk_small_uint_t duk_bd_decode_flag(duk_bitdecoder_ctx *ctx); +DUK_INTERNAL_DECL duk_uint32_t duk_bd_decode_flagged(duk_bitdecoder_ctx *ctx, duk_small_int_t bits, duk_uint32_t def_value); +DUK_INTERNAL_DECL duk_int32_t duk_bd_decode_flagged_signed(duk_bitdecoder_ctx *ctx, duk_small_int_t bits, duk_int32_t def_value); +DUK_INTERNAL_DECL duk_uint32_t duk_bd_decode_varuint(duk_bitdecoder_ctx *ctx); +DUK_INTERNAL_DECL duk_small_uint_t duk_bd_decode_bitpacked_string(duk_bitdecoder_ctx *bd, duk_uint8_t *out); + +DUK_INTERNAL_DECL void duk_be_encode(duk_bitencoder_ctx *ctx, duk_uint32_t data, duk_small_int_t bits); +DUK_INTERNAL_DECL void duk_be_finish(duk_bitencoder_ctx *ctx); + +#if !defined(DUK_USE_GET_RANDOM_DOUBLE) +DUK_INTERNAL_DECL duk_double_t duk_util_tinyrandom_get_double(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_util_tinyrandom_prepare_seed(duk_hthread *thr); +#endif + +DUK_INTERNAL_DECL void duk_bw_init(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_hbuffer_dynamic *h_buf); +DUK_INTERNAL_DECL void duk_bw_init_pushbuf(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_size_t buf_size); +DUK_INTERNAL_DECL duk_uint8_t *duk_bw_resize(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_size_t sz); +DUK_INTERNAL_DECL void duk_bw_compact(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx); +DUK_INTERNAL_DECL void duk_bw_write_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t src_off, duk_size_t len); +DUK_INTERNAL_DECL void duk_bw_write_ensure_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t src_off, duk_size_t len); +DUK_INTERNAL_DECL void duk_bw_insert_raw_bytes(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, const duk_uint8_t *buf, duk_size_t len); +DUK_INTERNAL_DECL void duk_bw_insert_ensure_bytes(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, const duk_uint8_t *buf, duk_size_t len); +DUK_INTERNAL_DECL void duk_bw_insert_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, duk_size_t src_off, duk_size_t len); +DUK_INTERNAL_DECL void duk_bw_insert_ensure_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, duk_size_t src_off, duk_size_t len); +DUK_INTERNAL_DECL duk_uint8_t *duk_bw_insert_raw_area(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len); +DUK_INTERNAL_DECL duk_uint8_t *duk_bw_insert_ensure_area(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len); +DUK_INTERNAL_DECL void duk_bw_remove_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len); +/* No duk_bw_remove_ensure_slice(), functionality would be identical. */ + +DUK_INTERNAL_DECL duk_uint16_t duk_raw_read_u16_be(const duk_uint8_t *p); +DUK_INTERNAL_DECL duk_uint32_t duk_raw_read_u32_be(const duk_uint8_t *p); +DUK_INTERNAL_DECL duk_float_t duk_raw_read_float_be(const duk_uint8_t *p); +DUK_INTERNAL_DECL duk_double_t duk_raw_read_double_be(const duk_uint8_t *p); +DUK_INTERNAL_DECL duk_uint16_t duk_raw_readinc_u16_be(const duk_uint8_t **p); +DUK_INTERNAL_DECL duk_uint32_t duk_raw_readinc_u32_be(const duk_uint8_t **p); +DUK_INTERNAL_DECL duk_float_t duk_raw_readinc_float_be(const duk_uint8_t **p); +DUK_INTERNAL_DECL duk_double_t duk_raw_readinc_double_be(const duk_uint8_t **p); +DUK_INTERNAL_DECL void duk_raw_write_u16_be(duk_uint8_t *p, duk_uint16_t val); +DUK_INTERNAL_DECL void duk_raw_write_u32_be(duk_uint8_t *p, duk_uint32_t val); +DUK_INTERNAL_DECL void duk_raw_write_float_be(duk_uint8_t *p, duk_float_t val); +DUK_INTERNAL_DECL void duk_raw_write_double_be(duk_uint8_t *p, duk_double_t val); +DUK_INTERNAL_DECL duk_small_int_t duk_raw_write_xutf8(duk_uint8_t *p, duk_ucodepoint_t val); +DUK_INTERNAL_DECL duk_small_int_t duk_raw_write_cesu8(duk_uint8_t *p, duk_ucodepoint_t val); +DUK_INTERNAL_DECL void duk_raw_writeinc_u16_be(duk_uint8_t **p, duk_uint16_t val); +DUK_INTERNAL_DECL void duk_raw_writeinc_u32_be(duk_uint8_t **p, duk_uint32_t val); +DUK_INTERNAL_DECL void duk_raw_writeinc_float_be(duk_uint8_t **p, duk_float_t val); +DUK_INTERNAL_DECL void duk_raw_writeinc_double_be(duk_uint8_t **p, duk_double_t val); +DUK_INTERNAL_DECL void duk_raw_writeinc_xutf8(duk_uint8_t **p, duk_ucodepoint_t val); +DUK_INTERNAL_DECL void duk_raw_writeinc_cesu8(duk_uint8_t **p, duk_ucodepoint_t val); + +#if defined(DUK_USE_DEBUGGER_SUPPORT) /* For now only needed by the debugger. */ +DUK_INTERNAL_DECL void duk_byteswap_bytes(duk_uint8_t *p, duk_small_uint_t len); +#endif + +/* memcpy(), memmove() etc wrappers. The plain variants like duk_memcpy() + * assume C99+ and 'src' and 'dst' pointers must be non-NULL even when the + * operation size is zero. The unsafe variants like duk_memcpy_safe() deal + * with the zero size case explicitly, and allow NULL pointers in that case + * (which is undefined behavior in C99+). For the majority of actual targets + * a NULL pointer with a zero length is fine in practice. These wrappers are + * macros to force inlining; because there are hundreds of call sites, even a + * few extra bytes per call site adds up to ~1kB footprint. + */ +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) +#define duk_memcpy(dst,src,len) do { \ + void *duk__dst = (dst); \ + const void *duk__src = (src); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + DUK_ASSERT(duk__src != NULL || duk__len == 0U); \ + (void) DUK_MEMCPY(duk__dst, duk__src, (size_t) duk__len); \ + } while (0) +#define duk_memcpy_unsafe(dst,src,len) duk_memcpy((dst), (src), (len)) +#define duk_memmove(dst,src,len) do { \ + void *duk__dst = (dst); \ + const void *duk__src = (src); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + DUK_ASSERT(duk__src != NULL || duk__len == 0U); \ + (void) DUK_MEMMOVE(duk__dst, duk__src, (size_t) duk__len); \ + } while (0) +#define duk_memmove_unsafe(dst,src,len) duk_memmove((dst), (src), (len)) +#define duk_memset(dst,val,len) do { \ + void *duk__dst = (dst); \ + duk_small_int_t duk__val = (val); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + (void) DUK_MEMSET(duk__dst, duk__val, (size_t) duk__len); \ + } while (0) +#define duk_memset_unsafe(dst,val,len) duk_memset((dst), (val), (len)) +#define duk_memzero(dst,len) do { \ + void *duk__dst = (dst); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + (void) DUK_MEMZERO(duk__dst, (size_t) duk__len); \ + } while (0) +#define duk_memzero_unsafe(dst,len) duk_memzero((dst), (len)) +#else /* DUK_USE_ALLOW_UNDEFINED_BEHAVIOR */ +#define duk_memcpy(dst,src,len) do { \ + void *duk__dst = (dst); \ + const void *duk__src = (src); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL); \ + DUK_ASSERT(duk__src != NULL); \ + (void) DUK_MEMCPY(duk__dst, duk__src, (size_t) duk__len); \ + } while (0) +#define duk_memcpy_unsafe(dst,src,len) do { \ + void *duk__dst = (dst); \ + const void *duk__src = (src); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + DUK_ASSERT(duk__src != NULL || duk__len == 0U); \ + if (DUK_LIKELY(duk__len > 0U)) { \ + DUK_ASSERT(duk__dst != NULL); \ + DUK_ASSERT(duk__src != NULL); \ + (void) DUK_MEMCPY(duk__dst, duk__src, (size_t) duk__len); \ + } \ + } while (0) +#define duk_memmove(dst,src,len) do { \ + void *duk__dst = (dst); \ + const void *duk__src = (src); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL); \ + DUK_ASSERT(duk__src != NULL); \ + (void) DUK_MEMMOVE(duk__dst, duk__src, (size_t) duk__len); \ + } while (0) +#define duk_memmove_unsafe(dst,src,len) do { \ + void *duk__dst = (dst); \ + const void *duk__src = (src); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + DUK_ASSERT(duk__src != NULL || duk__len == 0U); \ + if (DUK_LIKELY(duk__len > 0U)) { \ + DUK_ASSERT(duk__dst != NULL); \ + DUK_ASSERT(duk__src != NULL); \ + (void) DUK_MEMMOVE(duk__dst, duk__src, (size_t) duk__len); \ + } \ + } while (0) +#define duk_memset(dst,val,len) do { \ + void *duk__dst = (dst); \ + duk_small_int_t duk__val = (val); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL); \ + (void) DUK_MEMSET(duk__dst, duk__val, (size_t) duk__len); \ + } while (0) +#define duk_memset_unsafe(dst,val,len) do { \ + void *duk__dst = (dst); \ + duk_small_int_t duk__val = (val); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + if (DUK_LIKELY(duk__len > 0U)) { \ + DUK_ASSERT(duk__dst != NULL); \ + (void) DUK_MEMSET(duk__dst, duk__val, (size_t) duk__len); \ + } \ + } while (0) +#define duk_memzero(dst,len) do { \ + void *duk__dst = (dst); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL); \ + (void) DUK_MEMZERO(duk__dst, (size_t) duk__len); \ + } while (0) +#define duk_memzero_unsafe(dst,len) do { \ + void *duk__dst = (dst); \ + duk_size_t duk__len = (len); \ + DUK_ASSERT(duk__dst != NULL || duk__len == 0U); \ + if (DUK_LIKELY(duk__len > 0U)) { \ + DUK_ASSERT(duk__dst != NULL); \ + (void) DUK_MEMZERO(duk__dst, (size_t) duk__len); \ + } \ + } while (0) +#endif /* DUK_USE_ALLOW_UNDEFINED_BEHAVIOR */ + +DUK_INTERNAL_DECL duk_small_int_t duk_memcmp(const void *s1, const void *s2, duk_size_t len); +DUK_INTERNAL_DECL duk_small_int_t duk_memcmp_unsafe(const void *s1, const void *s2, duk_size_t len); + +DUK_INTERNAL_DECL duk_bool_t duk_is_whole_get_int32_nonegzero(duk_double_t x, duk_int32_t *ival); +DUK_INTERNAL_DECL duk_bool_t duk_is_whole_get_int32(duk_double_t x, duk_int32_t *ival); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_anyinf(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_posinf(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_neginf(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_nan(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_nan_or_zero(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_nan_or_inf(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_nan_zero_inf(duk_double_t x); +DUK_INTERNAL_DECL duk_small_uint_t duk_double_signbit(duk_double_t x); +DUK_INTERNAL_DECL duk_double_t duk_double_trunc_towards_zero(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_same_sign(duk_double_t x, duk_double_t y); +DUK_INTERNAL_DECL duk_double_t duk_double_fmin(duk_double_t x, duk_double_t y); +DUK_INTERNAL_DECL duk_double_t duk_double_fmax(duk_double_t x, duk_double_t y); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_finite(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_integer(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_is_safe_integer(duk_double_t x); + +DUK_INTERNAL_DECL duk_double_t duk_double_div(duk_double_t x, duk_double_t y); +DUK_INTERNAL_DECL duk_int_t duk_double_to_int_t(duk_double_t x); +DUK_INTERNAL_DECL duk_uint_t duk_double_to_uint_t(duk_double_t x); +DUK_INTERNAL_DECL duk_int32_t duk_double_to_int32_t(duk_double_t x); +DUK_INTERNAL_DECL duk_uint32_t duk_double_to_uint32_t(duk_double_t x); +DUK_INTERNAL_DECL duk_float_t duk_double_to_float_t(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_double_equals(duk_double_t x, duk_double_t y); +DUK_INTERNAL_DECL duk_bool_t duk_float_equals(duk_float_t x, duk_float_t y); + +/* + * Miscellaneous + */ + +/* Example: x = 0x10 = 0b00010000 + * x - 1 = 0x0f = 0b00001111 + * x & (x - 1) == 0 + * + * x = 0x07 = 0b00000111 + * x - 1 = 0x06 = 0b00000110 + * x & (x - 1) != 0 + * + * However, incorrectly true for x == 0 so check for that explicitly. + */ +#define DUK_IS_POWER_OF_TWO(x) \ + ((x) != 0U && ((x) & ((x) - 1U)) == 0U) + +#endif /* DUK_UTIL_H_INCLUDED */ +/* #include duk_strings.h */ +#line 1 "duk_strings.h" +/* + * Shared string macros. + * + * Using shared macros helps minimize strings data size because it's easy + * to check if an existing string could be used. String constants don't + * need to be all defined here; defining a string here makes sense if there's + * a high chance the string could be reused. Also, using macros allows + * a call site express the exact string needed, but the macro may map to an + * approximate string to reduce unique string count. Macros can also be + * more easily tuned for low memory targets than #if defined()s throughout + * the code base. + * + * Because format strings behave differently in the call site (they need to + * be followed by format arguments), they use a special prefix DUK_STR_FMT_. + * + * On some compilers using explicit shared strings is preferable; on others + * it may be better to use straight literals because the compiler will combine + * them anyway, and such strings won't end up unnecessarily in a symbol table. + */ + +#if !defined(DUK_ERRMSG_H_INCLUDED) +#define DUK_ERRMSG_H_INCLUDED + +/* Mostly API and built-in method related */ +#define DUK_STR_INTERNAL_ERROR "internal error" +#define DUK_STR_UNSUPPORTED "unsupported" +#define DUK_STR_INVALID_COUNT "invalid count" +#define DUK_STR_INVALID_ARGS "invalid args" +#define DUK_STR_INVALID_STATE "invalid state" +#define DUK_STR_INVALID_INPUT "invalid input" +#define DUK_STR_INVALID_LENGTH "invalid length" +#define DUK_STR_NOT_CONSTRUCTABLE "not constructable" +#define DUK_STR_CONSTRUCT_ONLY "constructor requires 'new'" +#define DUK_STR_NOT_CALLABLE "not callable" +#define DUK_STR_NOT_EXTENSIBLE "not extensible" +#define DUK_STR_NOT_WRITABLE "not writable" +#define DUK_STR_NOT_CONFIGURABLE "not configurable" +#define DUK_STR_INVALID_CONTEXT "invalid context" +#define DUK_STR_INVALID_INDEX "invalid args" +#define DUK_STR_PUSH_BEYOND_ALLOC_STACK "cannot push beyond allocated stack" +#define DUK_STR_NOT_UNDEFINED "unexpected type" +#define DUK_STR_NOT_NULL "unexpected type" +#define DUK_STR_NOT_BOOLEAN "unexpected type" +#define DUK_STR_NOT_NUMBER "unexpected type" +#define DUK_STR_NOT_STRING "unexpected type" +#define DUK_STR_NOT_OBJECT "unexpected type" +#define DUK_STR_NOT_POINTER "unexpected type" +#define DUK_STR_NOT_BUFFER "not buffer" /* still in use with verbose messages */ +#define DUK_STR_UNEXPECTED_TYPE "unexpected type" +#define DUK_STR_NOT_THREAD "unexpected type" +#define DUK_STR_NOT_COMPFUNC "unexpected type" +#define DUK_STR_NOT_NATFUNC "unexpected type" +#define DUK_STR_NOT_C_FUNCTION "unexpected type" +#define DUK_STR_NOT_FUNCTION "unexpected type" +#define DUK_STR_NOT_REGEXP "unexpected type" +#define DUK_STR_TOPRIMITIVE_FAILED "coercion to primitive failed" +#define DUK_STR_NUMBER_OUTSIDE_RANGE "number outside range" +#define DUK_STR_NOT_OBJECT_COERCIBLE "not object coercible" +#define DUK_STR_CANNOT_NUMBER_COERCE_SYMBOL "cannot number coerce Symbol" +#define DUK_STR_CANNOT_STRING_COERCE_SYMBOL "cannot string coerce Symbol" +#define DUK_STR_STRING_TOO_LONG "string too long" +#define DUK_STR_BUFFER_TOO_LONG "buffer too long" +#define DUK_STR_ALLOC_FAILED "alloc failed" +#define DUK_STR_WRONG_BUFFER_TYPE "wrong buffer type" +#define DUK_STR_BASE64_ENCODE_FAILED "base64 encode failed" +#define DUK_STR_SOURCE_DECODE_FAILED "source decode failed" +#define DUK_STR_UTF8_DECODE_FAILED "utf-8 decode failed" +#define DUK_STR_BASE64_DECODE_FAILED "base64 decode failed" +#define DUK_STR_HEX_DECODE_FAILED "hex decode failed" +#define DUK_STR_INVALID_BYTECODE "invalid bytecode" +#define DUK_STR_NO_SOURCECODE "no sourcecode" +#define DUK_STR_RESULT_TOO_LONG "result too long" +#define DUK_STR_INVALID_CFUNC_RC "invalid C function rc" +#define DUK_STR_INVALID_INSTANCEOF_RVAL "invalid instanceof rval" +#define DUK_STR_INVALID_INSTANCEOF_RVAL_NOPROTO "instanceof rval has no .prototype" + +/* JSON */ +#define DUK_STR_FMT_PTR "%p" +#define DUK_STR_FMT_INVALID_JSON "invalid json (at offset %ld)" +#define DUK_STR_JSONDEC_RECLIMIT "json decode recursion limit" +#define DUK_STR_JSONENC_RECLIMIT "json encode recursion limit" +#define DUK_STR_CYCLIC_INPUT "cyclic input" + +/* Object property access */ +#define DUK_STR_INVALID_BASE "invalid base value" +#define DUK_STR_STRICT_CALLER_READ "cannot read strict 'caller'" +#define DUK_STR_PROXY_REJECTED "proxy rejected" +#define DUK_STR_INVALID_ARRAY_LENGTH "invalid array length" +#define DUK_STR_SETTER_UNDEFINED "setter undefined" +#define DUK_STR_INVALID_DESCRIPTOR "invalid descriptor" + +/* Proxy */ +#define DUK_STR_PROXY_REVOKED "proxy revoked" +#define DUK_STR_INVALID_TRAP_RESULT "invalid trap result" + +/* Variables */ + +/* Lexer */ +#define DUK_STR_INVALID_ESCAPE "invalid escape" +#define DUK_STR_UNTERMINATED_STRING "unterminated string" +#define DUK_STR_UNTERMINATED_COMMENT "unterminated comment" +#define DUK_STR_UNTERMINATED_REGEXP "unterminated regexp" +#define DUK_STR_TOKEN_LIMIT "token limit" +#define DUK_STR_REGEXP_SUPPORT_DISABLED "regexp support disabled" +#define DUK_STR_INVALID_NUMBER_LITERAL "invalid number literal" +#define DUK_STR_INVALID_TOKEN "invalid token" + +/* Compiler */ +#define DUK_STR_PARSE_ERROR "parse error" +#define DUK_STR_DUPLICATE_LABEL "duplicate label" +#define DUK_STR_INVALID_LABEL "invalid label" +#define DUK_STR_INVALID_ARRAY_LITERAL "invalid array literal" +#define DUK_STR_INVALID_OBJECT_LITERAL "invalid object literal" +#define DUK_STR_INVALID_VAR_DECLARATION "invalid variable declaration" +#define DUK_STR_CANNOT_DELETE_IDENTIFIER "cannot delete identifier" +#define DUK_STR_INVALID_EXPRESSION "invalid expression" +#define DUK_STR_INVALID_LVALUE "invalid lvalue" +#define DUK_STR_INVALID_NEWTARGET "invalid new.target" +#define DUK_STR_EXPECTED_IDENTIFIER "expected identifier" +#define DUK_STR_EMPTY_EXPR_NOT_ALLOWED "empty expression not allowed" +#define DUK_STR_INVALID_FOR "invalid for statement" +#define DUK_STR_INVALID_SWITCH "invalid switch statement" +#define DUK_STR_INVALID_BREAK_CONT_LABEL "invalid break/continue label" +#define DUK_STR_INVALID_RETURN "invalid return" +#define DUK_STR_INVALID_TRY "invalid try" +#define DUK_STR_INVALID_THROW "invalid throw" +#define DUK_STR_WITH_IN_STRICT_MODE "with in strict mode" +#define DUK_STR_FUNC_STMT_NOT_ALLOWED "function statement not allowed" +#define DUK_STR_UNTERMINATED_STMT "unterminated statement" +#define DUK_STR_INVALID_ARG_NAME "invalid argument name" +#define DUK_STR_INVALID_FUNC_NAME "invalid function name" +#define DUK_STR_INVALID_GETSET_NAME "invalid getter/setter name" +#define DUK_STR_FUNC_NAME_REQUIRED "function name required" + +/* RegExp */ +#define DUK_STR_INVALID_QUANTIFIER "invalid regexp quantifier" +#define DUK_STR_INVALID_QUANTIFIER_NO_ATOM "quantifier without preceding atom" +#define DUK_STR_INVALID_QUANTIFIER_VALUES "quantifier values invalid (qmin > qmax)" +#define DUK_STR_QUANTIFIER_TOO_MANY_COPIES "quantifier requires too many atom copies" +#define DUK_STR_UNEXPECTED_CLOSING_PAREN "unexpected closing parenthesis" +#define DUK_STR_UNEXPECTED_END_OF_PATTERN "unexpected end of pattern" +#define DUK_STR_UNEXPECTED_REGEXP_TOKEN "unexpected token in regexp" +#define DUK_STR_INVALID_REGEXP_FLAGS "invalid regexp flags" +#define DUK_STR_INVALID_REGEXP_ESCAPE "invalid regexp escape" +#define DUK_STR_INVALID_BACKREFS "invalid backreference(s)" +#define DUK_STR_INVALID_REGEXP_CHARACTER "invalid regexp character" +#define DUK_STR_INVALID_REGEXP_GROUP "invalid regexp group" +#define DUK_STR_UNTERMINATED_CHARCLASS "unterminated character class" +#define DUK_STR_INVALID_RANGE "invalid range" + +/* Limits */ +#define DUK_STR_VALSTACK_LIMIT "valstack limit" +#define DUK_STR_CALLSTACK_LIMIT "callstack limit" +#define DUK_STR_PROTOTYPE_CHAIN_LIMIT "prototype chain limit" +#define DUK_STR_BOUND_CHAIN_LIMIT "function call bound chain limit" +#define DUK_STR_NATIVE_STACK_LIMIT "C stack depth limit" +#define DUK_STR_COMPILER_RECURSION_LIMIT "compiler recursion limit" +#define DUK_STR_BYTECODE_LIMIT "bytecode limit" +#define DUK_STR_REG_LIMIT "register limit" +#define DUK_STR_TEMP_LIMIT "temp limit" +#define DUK_STR_CONST_LIMIT "const limit" +#define DUK_STR_FUNC_LIMIT "function limit" +#define DUK_STR_REGEXP_COMPILER_RECURSION_LIMIT "regexp compiler recursion limit" +#define DUK_STR_REGEXP_EXECUTOR_RECURSION_LIMIT "regexp executor recursion limit" +#define DUK_STR_REGEXP_EXECUTOR_STEP_LIMIT "regexp step limit" + +#endif /* DUK_ERRMSG_H_INCLUDED */ +/* #include duk_js_bytecode.h */ +#line 1 "duk_js_bytecode.h" +/* + * ECMAScript bytecode + */ + +#if !defined(DUK_JS_BYTECODE_H_INCLUDED) +#define DUK_JS_BYTECODE_H_INCLUDED + +/* + * Bytecode instruction layout + * =========================== + * + * Instructions are unsigned 32-bit integers divided as follows: + * + * !3!3!2!2!2!2!2!2!2!2!2!2!1!1!1!1!1!1!1!1!1!1! ! ! ! ! ! ! ! ! ! ! + * !1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0! + * +-----------------------------------------------+---------------+ + * ! C ! B ! A ! OP ! + * +-----------------------------------------------+---------------+ + * + * OP (8 bits): opcode (DUK_OP_*), access should be fastest + * consecutive opcodes allocated when opcode needs flags + * A (8 bits): typically a target register number + * B (8 bits): typically first source register/constant number + * C (8 bits): typically second source register/constant number + * + * Some instructions combine BC or ABC together for larger parameter values. + * Signed integers (e.g. jump offsets) are encoded as unsigned, with an + * opcode specific bias. + * + * Some opcodes have flags which are handled by allocating consecutive + * opcodes to make space for 1-N flags. Flags can also be e.g. in the 'A' + * field when there's room for the specific opcode. + * + * For example, if three flags were needed, they could be allocated from + * the opcode field as follows: + * + * !3!3!2!2!2!2!2!2!2!2!2!2!1!1!1!1!1!1!1!1!1!1! ! ! ! ! ! ! ! ! ! ! + * !1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0! + * +-----------------------------------------------+---------------+ + * ! C ! B ! A ! OP !Z!Y!X! + * +-----------------------------------------------+---------------+ + * + * Some opcodes accept a reg/const argument which is handled by allocating + * flags in the OP field, see DUK_BC_ISREG() and DUK_BC_ISCONST(). The + * following convention is shared by most opcodes, so that the compiler + * can handle reg/const flagging without opcode specific code paths: + * + * !3!3!2!2!2!2!2!2!2!2!2!2!1!1!1!1!1!1!1!1!1!1! ! ! ! ! ! ! ! ! ! ! + * !1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0!9!8!7!6!5!4!3!2!1!0! + * +-----------------------------------------------+---------------+ + * ! C ! B ! A ! OP !Y!X! + * +-----------------------------------------------+---------------+ + * + * X 1=B is const, 0=B is reg + * Y 1=C is const, 0=C is reg + * + * In effect OP, OP + 1, OP + 2, and OP + 3 are allocated from the + * 8-bit opcode space for a single logical opcode. The base opcode + * number should be divisible by 4. If the opcode is called 'FOO' + * the following opcode constants would be defined: + * + * DUK_OP_FOO 100 // base opcode number + * DUK_OP_FOO_RR 100 // FOO, B=reg, C=reg + * DUK_OP_FOO_CR 101 // FOO, B=const, C=reg + * DUK_OP_FOO_RC 102 // FOO, B=reg, C=const + * DUK_OP_FOO_CC 103 // FOO, B=const, C=const + * + * If only B or C is a reg/const, the unused opcode combinations can be + * used for other opcodes (which take no reg/const argument). However, + * such opcode values are initially reserved, at least while opcode space + * is available. For example, if 'BAR' uses B for a register field and + * C is a reg/const: + * + * DUK_OP_BAR 116 // base opcode number + * DUK_OP_BAR_RR 116 // BAR, B=reg, C=reg + * DUK_OP_BAR_CR_UNUSED 117 // unused, could be repurposed + * DUK_OP_BAR_RC 118 // BAR, B=reg, C=const + * DUK_OP_BAR_CC_UNUSED 119 // unused, could be repurposed + * + * Macro naming is a bit misleading, e.g. "ABC" in macro name but the + * field layout is concretely "CBA" in the register. + */ + +typedef duk_uint32_t duk_instr_t; + +#define DUK_BC_SHIFT_OP 0 +#define DUK_BC_SHIFT_A 8 +#define DUK_BC_SHIFT_B 16 +#define DUK_BC_SHIFT_C 24 +#define DUK_BC_SHIFT_BC DUK_BC_SHIFT_B +#define DUK_BC_SHIFT_ABC DUK_BC_SHIFT_A + +#define DUK_BC_UNSHIFTED_MASK_OP 0xffUL +#define DUK_BC_UNSHIFTED_MASK_A 0xffUL +#define DUK_BC_UNSHIFTED_MASK_B 0xffUL +#define DUK_BC_UNSHIFTED_MASK_C 0xffUL +#define DUK_BC_UNSHIFTED_MASK_BC 0xffffUL +#define DUK_BC_UNSHIFTED_MASK_ABC 0xffffffUL + +#define DUK_BC_SHIFTED_MASK_OP (DUK_BC_UNSHIFTED_MASK_OP << DUK_BC_SHIFT_OP) +#define DUK_BC_SHIFTED_MASK_A (DUK_BC_UNSHIFTED_MASK_A << DUK_BC_SHIFT_A) +#define DUK_BC_SHIFTED_MASK_B (DUK_BC_UNSHIFTED_MASK_B << DUK_BC_SHIFT_B) +#define DUK_BC_SHIFTED_MASK_C (DUK_BC_UNSHIFTED_MASK_C << DUK_BC_SHIFT_C) +#define DUK_BC_SHIFTED_MASK_BC (DUK_BC_UNSHIFTED_MASK_BC << DUK_BC_SHIFT_BC) +#define DUK_BC_SHIFTED_MASK_ABC (DUK_BC_UNSHIFTED_MASK_ABC << DUK_BC_SHIFT_ABC) + +#define DUK_DEC_OP(x) ((x) & 0xffUL) +#define DUK_DEC_A(x) (((x) >> 8) & 0xffUL) +#define DUK_DEC_B(x) (((x) >> 16) & 0xffUL) +#define DUK_DEC_C(x) (((x) >> 24) & 0xffUL) +#define DUK_DEC_BC(x) (((x) >> 16) & 0xffffUL) +#define DUK_DEC_ABC(x) (((x) >> 8) & 0xffffffUL) + +#define DUK_ENC_OP(op) ((duk_instr_t) (op)) +#define DUK_ENC_OP_ABC(op,abc) ((duk_instr_t) ( \ + (((duk_instr_t) (abc)) << 8) | \ + ((duk_instr_t) (op)) \ + )) +#define DUK_ENC_OP_A_BC(op,a,bc) ((duk_instr_t) ( \ + (((duk_instr_t) (bc)) << 16) | \ + (((duk_instr_t) (a)) << 8) | \ + ((duk_instr_t) (op)) \ + )) +#define DUK_ENC_OP_A_B_C(op,a,b,c) ((duk_instr_t) ( \ + (((duk_instr_t) (c)) << 24) | \ + (((duk_instr_t) (b)) << 16) | \ + (((duk_instr_t) (a)) << 8) | \ + ((duk_instr_t) (op)) \ + )) +#define DUK_ENC_OP_A_B(op,a,b) DUK_ENC_OP_A_B_C((op),(a),(b),0) +#define DUK_ENC_OP_A(op,a) DUK_ENC_OP_A_B_C((op),(a),0,0) +#define DUK_ENC_OP_BC(op,bc) DUK_ENC_OP_A_BC((op),0,(bc)) + +/* Get opcode base value with B/C reg/const flags cleared. */ +#define DUK_BC_NOREGCONST_OP(op) ((op) & 0xfc) + +/* Constants should be signed so that signed arithmetic involving them + * won't cause values to be coerced accidentally to unsigned. + */ +#define DUK_BC_OP_MIN 0 +#define DUK_BC_OP_MAX 0xffL +#define DUK_BC_A_MIN 0 +#define DUK_BC_A_MAX 0xffL +#define DUK_BC_B_MIN 0 +#define DUK_BC_B_MAX 0xffL +#define DUK_BC_C_MIN 0 +#define DUK_BC_C_MAX 0xffL +#define DUK_BC_BC_MIN 0 +#define DUK_BC_BC_MAX 0xffffL +#define DUK_BC_ABC_MIN 0 +#define DUK_BC_ABC_MAX 0xffffffL + +/* Masks for B/C reg/const indicator in opcode field. */ +#define DUK_BC_REGCONST_B (0x01UL) +#define DUK_BC_REGCONST_C (0x02UL) + +/* Misc. masks for opcode field. */ +#define DUK_BC_INCDECP_FLAG_DEC (0x04UL) +#define DUK_BC_INCDECP_FLAG_POST (0x08UL) + +/* Opcodes. */ +#define DUK_OP_LDREG 0 +#define DUK_OP_STREG 1 +#define DUK_OP_JUMP 2 +#define DUK_OP_LDCONST 3 +#define DUK_OP_LDINT 4 +#define DUK_OP_LDINTX 5 +#define DUK_OP_LDTHIS 6 +#define DUK_OP_LDUNDEF 7 +#define DUK_OP_LDNULL 8 +#define DUK_OP_LDTRUE 9 +#define DUK_OP_LDFALSE 10 +#define DUK_OP_GETVAR 11 +#define DUK_OP_BNOT 12 +#define DUK_OP_LNOT 13 +#define DUK_OP_UNM 14 +#define DUK_OP_UNP 15 +#define DUK_OP_EQ 16 +#define DUK_OP_EQ_RR 16 +#define DUK_OP_EQ_CR 17 +#define DUK_OP_EQ_RC 18 +#define DUK_OP_EQ_CC 19 +#define DUK_OP_NEQ 20 +#define DUK_OP_NEQ_RR 20 +#define DUK_OP_NEQ_CR 21 +#define DUK_OP_NEQ_RC 22 +#define DUK_OP_NEQ_CC 23 +#define DUK_OP_SEQ 24 +#define DUK_OP_SEQ_RR 24 +#define DUK_OP_SEQ_CR 25 +#define DUK_OP_SEQ_RC 26 +#define DUK_OP_SEQ_CC 27 +#define DUK_OP_SNEQ 28 +#define DUK_OP_SNEQ_RR 28 +#define DUK_OP_SNEQ_CR 29 +#define DUK_OP_SNEQ_RC 30 +#define DUK_OP_SNEQ_CC 31 +#define DUK_OP_GT 32 +#define DUK_OP_GT_RR 32 +#define DUK_OP_GT_CR 33 +#define DUK_OP_GT_RC 34 +#define DUK_OP_GT_CC 35 +#define DUK_OP_GE 36 +#define DUK_OP_GE_RR 36 +#define DUK_OP_GE_CR 37 +#define DUK_OP_GE_RC 38 +#define DUK_OP_GE_CC 39 +#define DUK_OP_LT 40 +#define DUK_OP_LT_RR 40 +#define DUK_OP_LT_CR 41 +#define DUK_OP_LT_RC 42 +#define DUK_OP_LT_CC 43 +#define DUK_OP_LE 44 +#define DUK_OP_LE_RR 44 +#define DUK_OP_LE_CR 45 +#define DUK_OP_LE_RC 46 +#define DUK_OP_LE_CC 47 +#define DUK_OP_IFTRUE 48 +#define DUK_OP_IFTRUE_R 48 +#define DUK_OP_IFTRUE_C 49 +#define DUK_OP_IFFALSE 50 +#define DUK_OP_IFFALSE_R 50 +#define DUK_OP_IFFALSE_C 51 +#define DUK_OP_ADD 52 +#define DUK_OP_ADD_RR 52 +#define DUK_OP_ADD_CR 53 +#define DUK_OP_ADD_RC 54 +#define DUK_OP_ADD_CC 55 +#define DUK_OP_SUB 56 +#define DUK_OP_SUB_RR 56 +#define DUK_OP_SUB_CR 57 +#define DUK_OP_SUB_RC 58 +#define DUK_OP_SUB_CC 59 +#define DUK_OP_MUL 60 +#define DUK_OP_MUL_RR 60 +#define DUK_OP_MUL_CR 61 +#define DUK_OP_MUL_RC 62 +#define DUK_OP_MUL_CC 63 +#define DUK_OP_DIV 64 +#define DUK_OP_DIV_RR 64 +#define DUK_OP_DIV_CR 65 +#define DUK_OP_DIV_RC 66 +#define DUK_OP_DIV_CC 67 +#define DUK_OP_MOD 68 +#define DUK_OP_MOD_RR 68 +#define DUK_OP_MOD_CR 69 +#define DUK_OP_MOD_RC 70 +#define DUK_OP_MOD_CC 71 +#define DUK_OP_EXP 72 +#define DUK_OP_EXP_RR 72 +#define DUK_OP_EXP_CR 73 +#define DUK_OP_EXP_RC 74 +#define DUK_OP_EXP_CC 75 +#define DUK_OP_BAND 76 +#define DUK_OP_BAND_RR 76 +#define DUK_OP_BAND_CR 77 +#define DUK_OP_BAND_RC 78 +#define DUK_OP_BAND_CC 79 +#define DUK_OP_BOR 80 +#define DUK_OP_BOR_RR 80 +#define DUK_OP_BOR_CR 81 +#define DUK_OP_BOR_RC 82 +#define DUK_OP_BOR_CC 83 +#define DUK_OP_BXOR 84 +#define DUK_OP_BXOR_RR 84 +#define DUK_OP_BXOR_CR 85 +#define DUK_OP_BXOR_RC 86 +#define DUK_OP_BXOR_CC 87 +#define DUK_OP_BASL 88 +#define DUK_OP_BASL_RR 88 +#define DUK_OP_BASL_CR 89 +#define DUK_OP_BASL_RC 90 +#define DUK_OP_BASL_CC 91 +#define DUK_OP_BLSR 92 +#define DUK_OP_BLSR_RR 92 +#define DUK_OP_BLSR_CR 93 +#define DUK_OP_BLSR_RC 94 +#define DUK_OP_BLSR_CC 95 +#define DUK_OP_BASR 96 +#define DUK_OP_BASR_RR 96 +#define DUK_OP_BASR_CR 97 +#define DUK_OP_BASR_RC 98 +#define DUK_OP_BASR_CC 99 +#define DUK_OP_INSTOF 100 +#define DUK_OP_INSTOF_RR 100 +#define DUK_OP_INSTOF_CR 101 +#define DUK_OP_INSTOF_RC 102 +#define DUK_OP_INSTOF_CC 103 +#define DUK_OP_IN 104 +#define DUK_OP_IN_RR 104 +#define DUK_OP_IN_CR 105 +#define DUK_OP_IN_RC 106 +#define DUK_OP_IN_CC 107 +#define DUK_OP_GETPROP 108 +#define DUK_OP_GETPROP_RR 108 +#define DUK_OP_GETPROP_CR 109 +#define DUK_OP_GETPROP_RC 110 +#define DUK_OP_GETPROP_CC 111 +#define DUK_OP_PUTPROP 112 +#define DUK_OP_PUTPROP_RR 112 +#define DUK_OP_PUTPROP_CR 113 +#define DUK_OP_PUTPROP_RC 114 +#define DUK_OP_PUTPROP_CC 115 +#define DUK_OP_DELPROP 116 +#define DUK_OP_DELPROP_RR 116 +#define DUK_OP_DELPROP_CR_UNUSED 117 /* unused now */ +#define DUK_OP_DELPROP_RC 118 +#define DUK_OP_DELPROP_CC_UNUSED 119 /* unused now */ +#define DUK_OP_PREINCR 120 /* pre/post opcode values have constraints, */ +#define DUK_OP_PREDECR 121 /* see duk_js_executor.c and duk_js_compiler.c. */ +#define DUK_OP_POSTINCR 122 +#define DUK_OP_POSTDECR 123 +#define DUK_OP_PREINCV 124 +#define DUK_OP_PREDECV 125 +#define DUK_OP_POSTINCV 126 +#define DUK_OP_POSTDECV 127 +#define DUK_OP_PREINCP 128 /* pre/post inc/dec prop opcodes have constraints */ +#define DUK_OP_PREINCP_RR 128 +#define DUK_OP_PREINCP_CR 129 +#define DUK_OP_PREINCP_RC 130 +#define DUK_OP_PREINCP_CC 131 +#define DUK_OP_PREDECP 132 +#define DUK_OP_PREDECP_RR 132 +#define DUK_OP_PREDECP_CR 133 +#define DUK_OP_PREDECP_RC 134 +#define DUK_OP_PREDECP_CC 135 +#define DUK_OP_POSTINCP 136 +#define DUK_OP_POSTINCP_RR 136 +#define DUK_OP_POSTINCP_CR 137 +#define DUK_OP_POSTINCP_RC 138 +#define DUK_OP_POSTINCP_CC 139 +#define DUK_OP_POSTDECP 140 +#define DUK_OP_POSTDECP_RR 140 +#define DUK_OP_POSTDECP_CR 141 +#define DUK_OP_POSTDECP_RC 142 +#define DUK_OP_POSTDECP_CC 143 +#define DUK_OP_DECLVAR 144 +#define DUK_OP_DECLVAR_RR 144 +#define DUK_OP_DECLVAR_CR 145 +#define DUK_OP_DECLVAR_RC 146 +#define DUK_OP_DECLVAR_CC 147 +#define DUK_OP_REGEXP 148 +#define DUK_OP_REGEXP_RR 148 +#define DUK_OP_REGEXP_CR 149 +#define DUK_OP_REGEXP_RC 150 +#define DUK_OP_REGEXP_CC 151 +#define DUK_OP_CLOSURE 152 +#define DUK_OP_TYPEOF 153 +#define DUK_OP_TYPEOFID 154 +#define DUK_OP_PUTVAR 155 +#define DUK_OP_DELVAR 156 +#define DUK_OP_RETREG 157 +#define DUK_OP_RETUNDEF 158 +#define DUK_OP_RETCONST 159 +#define DUK_OP_RETCONSTN 160 /* return const without incref (e.g. number) */ +#define DUK_OP_LABEL 161 +#define DUK_OP_ENDLABEL 162 +#define DUK_OP_BREAK 163 +#define DUK_OP_CONTINUE 164 +#define DUK_OP_TRYCATCH 165 +#define DUK_OP_ENDTRY 166 +#define DUK_OP_ENDCATCH 167 +#define DUK_OP_ENDFIN 168 +#define DUK_OP_THROW 169 +#define DUK_OP_INVLHS 170 +#define DUK_OP_CSREG 171 +#define DUK_OP_CSVAR 172 +#define DUK_OP_CSVAR_RR 172 +#define DUK_OP_CSVAR_CR 173 +#define DUK_OP_CSVAR_RC 174 +#define DUK_OP_CSVAR_CC 175 +#define DUK_OP_CALL0 176 /* DUK_OP_CALL0 & 0x0F must be zero. */ +#define DUK_OP_CALL1 177 +#define DUK_OP_CALL2 178 +#define DUK_OP_CALL3 179 +#define DUK_OP_CALL4 180 +#define DUK_OP_CALL5 181 +#define DUK_OP_CALL6 182 +#define DUK_OP_CALL7 183 +#define DUK_OP_CALL8 184 +#define DUK_OP_CALL9 185 +#define DUK_OP_CALL10 186 +#define DUK_OP_CALL11 187 +#define DUK_OP_CALL12 188 +#define DUK_OP_CALL13 189 +#define DUK_OP_CALL14 190 +#define DUK_OP_CALL15 191 +#define DUK_OP_NEWOBJ 192 +#define DUK_OP_NEWARR 193 +#define DUK_OP_MPUTOBJ 194 +#define DUK_OP_MPUTOBJI 195 +#define DUK_OP_INITSET 196 +#define DUK_OP_INITGET 197 +#define DUK_OP_MPUTARR 198 +#define DUK_OP_MPUTARRI 199 +#define DUK_OP_SETALEN 200 +#define DUK_OP_INITENUM 201 +#define DUK_OP_NEXTENUM 202 +#define DUK_OP_NEWTARGET 203 +#define DUK_OP_DEBUGGER 204 +#define DUK_OP_NOP 205 +#define DUK_OP_INVALID 206 +#define DUK_OP_UNUSED207 207 +#define DUK_OP_GETPROPC 208 +#define DUK_OP_GETPROPC_RR 208 +#define DUK_OP_GETPROPC_CR 209 +#define DUK_OP_GETPROPC_RC 210 +#define DUK_OP_GETPROPC_CC 211 +#define DUK_OP_UNUSED212 212 +#define DUK_OP_UNUSED213 213 +#define DUK_OP_UNUSED214 214 +#define DUK_OP_UNUSED215 215 +#define DUK_OP_UNUSED216 216 +#define DUK_OP_UNUSED217 217 +#define DUK_OP_UNUSED218 218 +#define DUK_OP_UNUSED219 219 +#define DUK_OP_UNUSED220 220 +#define DUK_OP_UNUSED221 221 +#define DUK_OP_UNUSED222 222 +#define DUK_OP_UNUSED223 223 +#define DUK_OP_UNUSED224 224 +#define DUK_OP_UNUSED225 225 +#define DUK_OP_UNUSED226 226 +#define DUK_OP_UNUSED227 227 +#define DUK_OP_UNUSED228 228 +#define DUK_OP_UNUSED229 229 +#define DUK_OP_UNUSED230 230 +#define DUK_OP_UNUSED231 231 +#define DUK_OP_UNUSED232 232 +#define DUK_OP_UNUSED233 233 +#define DUK_OP_UNUSED234 234 +#define DUK_OP_UNUSED235 235 +#define DUK_OP_UNUSED236 236 +#define DUK_OP_UNUSED237 237 +#define DUK_OP_UNUSED238 238 +#define DUK_OP_UNUSED239 239 +#define DUK_OP_UNUSED240 240 +#define DUK_OP_UNUSED241 241 +#define DUK_OP_UNUSED242 242 +#define DUK_OP_UNUSED243 243 +#define DUK_OP_UNUSED244 244 +#define DUK_OP_UNUSED245 245 +#define DUK_OP_UNUSED246 246 +#define DUK_OP_UNUSED247 247 +#define DUK_OP_UNUSED248 248 +#define DUK_OP_UNUSED249 249 +#define DUK_OP_UNUSED250 250 +#define DUK_OP_UNUSED251 251 +#define DUK_OP_UNUSED252 252 +#define DUK_OP_UNUSED253 253 +#define DUK_OP_UNUSED254 254 +#define DUK_OP_UNUSED255 255 +#define DUK_OP_NONE 256 /* dummy value used as marker (doesn't fit in 8-bit field) */ + +/* XXX: Allocate flags from opcode field? Would take 16 opcode slots + * but avoids shuffling in more cases. Maybe not worth it. + */ +/* DUK_OP_TRYCATCH flags in A. */ +#define DUK_BC_TRYCATCH_FLAG_HAVE_CATCH (1U << 0) +#define DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY (1U << 1) +#define DUK_BC_TRYCATCH_FLAG_CATCH_BINDING (1U << 2) +#define DUK_BC_TRYCATCH_FLAG_WITH_BINDING (1U << 3) + +/* DUK_OP_DECLVAR flags in A; bottom bits are reserved for propdesc flags + * (DUK_PROPDESC_FLAG_XXX). + */ +#define DUK_BC_DECLVAR_FLAG_FUNC_DECL (1U << 4) /* function declaration */ + +/* DUK_OP_CALLn flags, part of opcode field. Three lowest bits must match + * DUK_CALL_FLAG_xxx directly. + */ +#define DUK_BC_CALL_FLAG_TAILCALL (1U << 0) +#define DUK_BC_CALL_FLAG_CONSTRUCT (1U << 1) +#define DUK_BC_CALL_FLAG_CALLED_AS_EVAL (1U << 2) +#define DUK_BC_CALL_FLAG_INDIRECT (1U << 3) + +/* Misc constants and helper macros. */ +#define DUK_BC_LDINT_BIAS (1L << 15) +#define DUK_BC_LDINTX_SHIFT 16 +#define DUK_BC_JUMP_BIAS (1L << 23) + +#endif /* DUK_JS_BYTECODE_H_INCLUDED */ +/* #include duk_lexer.h */ +#line 1 "duk_lexer.h" +/* + * Lexer defines. + */ + +#if !defined(DUK_LEXER_H_INCLUDED) +#define DUK_LEXER_H_INCLUDED + +typedef void (*duk_re_range_callback)(void *user, duk_codepoint_t r1, duk_codepoint_t r2, duk_bool_t direct); + +/* + * A token is interpreted as any possible production of InputElementDiv + * and InputElementRegExp, see E5 Section 7 in its entirety. Note that + * the E5 "Token" production does not cover all actual tokens of the + * language (which is explicitly stated in the specification, Section 7.5). + * Null and boolean literals are defined as part of both ReservedWord + * (E5 Section 7.6.1) and Literal (E5 Section 7.8) productions. Here, + * null and boolean values have literal tokens, and are not reserved + * words. + * + * Decimal literal negative/positive sign is -not- part of DUK_TOK_NUMBER. + * The number tokens always have a non-negative value. The unary minus + * operator in "-1.0" is optimized during compilation to yield a single + * negative constant. + * + * Token numbering is free except that reserved words are required to be + * in a continuous range and in a particular order. See genstrings.py. + */ + +#define DUK_LEXER_INITCTX(ctx) duk_lexer_initctx((ctx)) + +#define DUK_LEXER_SETPOINT(ctx,pt) duk_lexer_setpoint((ctx), (pt)) + +#define DUK_LEXER_GETPOINT(ctx,pt) duk_lexer_getpoint((ctx), (pt)) + +/* Currently 6 characters of lookup are actually needed (duk_lexer.c). */ +#define DUK_LEXER_WINDOW_SIZE 6 +#if defined(DUK_USE_LEXER_SLIDING_WINDOW) +#define DUK_LEXER_BUFFER_SIZE 64 +#endif + +#define DUK_TOK_MINVAL 0 + +/* returned after EOF (infinite amount) */ +#define DUK_TOK_EOF 0 + +/* identifier names (E5 Section 7.6) */ +#define DUK_TOK_IDENTIFIER 1 + +/* reserved words: keywords */ +#define DUK_TOK_START_RESERVED 2 +#define DUK_TOK_BREAK 2 +#define DUK_TOK_CASE 3 +#define DUK_TOK_CATCH 4 +#define DUK_TOK_CONTINUE 5 +#define DUK_TOK_DEBUGGER 6 +#define DUK_TOK_DEFAULT 7 +#define DUK_TOK_DELETE 8 +#define DUK_TOK_DO 9 +#define DUK_TOK_ELSE 10 +#define DUK_TOK_FINALLY 11 +#define DUK_TOK_FOR 12 +#define DUK_TOK_FUNCTION 13 +#define DUK_TOK_IF 14 +#define DUK_TOK_IN 15 +#define DUK_TOK_INSTANCEOF 16 +#define DUK_TOK_NEW 17 +#define DUK_TOK_RETURN 18 +#define DUK_TOK_SWITCH 19 +#define DUK_TOK_THIS 20 +#define DUK_TOK_THROW 21 +#define DUK_TOK_TRY 22 +#define DUK_TOK_TYPEOF 23 +#define DUK_TOK_VAR 24 +#define DUK_TOK_CONST 25 +#define DUK_TOK_VOID 26 +#define DUK_TOK_WHILE 27 +#define DUK_TOK_WITH 28 + +/* reserved words: future reserved words */ +#define DUK_TOK_CLASS 29 +#define DUK_TOK_ENUM 30 +#define DUK_TOK_EXPORT 31 +#define DUK_TOK_EXTENDS 32 +#define DUK_TOK_IMPORT 33 +#define DUK_TOK_SUPER 34 + +/* "null", "true", and "false" are always reserved words. + * Note that "get" and "set" are not! + */ +#define DUK_TOK_NULL 35 +#define DUK_TOK_TRUE 36 +#define DUK_TOK_FALSE 37 + +/* reserved words: additional future reserved words in strict mode */ +#define DUK_TOK_START_STRICT_RESERVED 38 /* inclusive */ +#define DUK_TOK_IMPLEMENTS 38 +#define DUK_TOK_INTERFACE 39 +#define DUK_TOK_LET 40 +#define DUK_TOK_PACKAGE 41 +#define DUK_TOK_PRIVATE 42 +#define DUK_TOK_PROTECTED 43 +#define DUK_TOK_PUBLIC 44 +#define DUK_TOK_STATIC 45 +#define DUK_TOK_YIELD 46 + +#define DUK_TOK_END_RESERVED 47 /* exclusive */ + +/* "get" and "set" are tokens but NOT ReservedWords. They are currently + * parsed and identifiers and these defines are actually now unused. + */ +#define DUK_TOK_GET 47 +#define DUK_TOK_SET 48 + +/* punctuators (unlike the spec, also includes "/" and "/=") */ +#define DUK_TOK_LCURLY 49 +#define DUK_TOK_RCURLY 50 +#define DUK_TOK_LBRACKET 51 +#define DUK_TOK_RBRACKET 52 +#define DUK_TOK_LPAREN 53 +#define DUK_TOK_RPAREN 54 +#define DUK_TOK_PERIOD 55 +#define DUK_TOK_SEMICOLON 56 +#define DUK_TOK_COMMA 57 +#define DUK_TOK_LT 58 +#define DUK_TOK_GT 59 +#define DUK_TOK_LE 60 +#define DUK_TOK_GE 61 +#define DUK_TOK_EQ 62 +#define DUK_TOK_NEQ 63 +#define DUK_TOK_SEQ 64 +#define DUK_TOK_SNEQ 65 +#define DUK_TOK_ADD 66 +#define DUK_TOK_SUB 67 +#define DUK_TOK_MUL 68 +#define DUK_TOK_DIV 69 +#define DUK_TOK_MOD 70 +#define DUK_TOK_EXP 71 +#define DUK_TOK_INCREMENT 72 +#define DUK_TOK_DECREMENT 73 +#define DUK_TOK_ALSHIFT 74 /* named "arithmetic" because result is signed */ +#define DUK_TOK_ARSHIFT 75 +#define DUK_TOK_RSHIFT 76 +#define DUK_TOK_BAND 77 +#define DUK_TOK_BOR 78 +#define DUK_TOK_BXOR 79 +#define DUK_TOK_LNOT 80 +#define DUK_TOK_BNOT 81 +#define DUK_TOK_LAND 82 +#define DUK_TOK_LOR 83 +#define DUK_TOK_QUESTION 84 +#define DUK_TOK_COLON 85 +#define DUK_TOK_EQUALSIGN 86 +#define DUK_TOK_ADD_EQ 87 +#define DUK_TOK_SUB_EQ 88 +#define DUK_TOK_MUL_EQ 89 +#define DUK_TOK_DIV_EQ 90 +#define DUK_TOK_MOD_EQ 91 +#define DUK_TOK_EXP_EQ 92 +#define DUK_TOK_ALSHIFT_EQ 93 +#define DUK_TOK_ARSHIFT_EQ 94 +#define DUK_TOK_RSHIFT_EQ 95 +#define DUK_TOK_BAND_EQ 96 +#define DUK_TOK_BOR_EQ 97 +#define DUK_TOK_BXOR_EQ 98 + +/* literals (E5 Section 7.8), except null, true, false, which are treated + * like reserved words (above). + */ +#define DUK_TOK_NUMBER 99 +#define DUK_TOK_STRING 100 +#define DUK_TOK_REGEXP 101 + +#define DUK_TOK_MAXVAL 101 /* inclusive */ + +#define DUK_TOK_INVALID DUK_SMALL_UINT_MAX + +/* Convert heap string index to a token (reserved words) */ +#define DUK_STRIDX_TO_TOK(x) ((x) - DUK_STRIDX_START_RESERVED + DUK_TOK_START_RESERVED) + +/* Sanity check */ +#if (DUK_TOK_MAXVAL > 255) +#error DUK_TOK_MAXVAL too large, code assumes it fits into 8 bits +#endif + +/* Sanity checks for string and token defines */ +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_BREAK) != DUK_TOK_BREAK) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CASE) != DUK_TOK_CASE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CATCH) != DUK_TOK_CATCH) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CONTINUE) != DUK_TOK_CONTINUE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DEBUGGER) != DUK_TOK_DEBUGGER) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DEFAULT) != DUK_TOK_DEFAULT) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DELETE) != DUK_TOK_DELETE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_DO) != DUK_TOK_DO) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_ELSE) != DUK_TOK_ELSE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_FINALLY) != DUK_TOK_FINALLY) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_FOR) != DUK_TOK_FOR) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_LC_FUNCTION) != DUK_TOK_FUNCTION) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IF) != DUK_TOK_IF) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IN) != DUK_TOK_IN) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_INSTANCEOF) != DUK_TOK_INSTANCEOF) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_NEW) != DUK_TOK_NEW) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_RETURN) != DUK_TOK_RETURN) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_SWITCH) != DUK_TOK_SWITCH) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_THIS) != DUK_TOK_THIS) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_THROW) != DUK_TOK_THROW) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_TRY) != DUK_TOK_TRY) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_TYPEOF) != DUK_TOK_TYPEOF) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_VAR) != DUK_TOK_VAR) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_VOID) != DUK_TOK_VOID) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_WHILE) != DUK_TOK_WHILE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_WITH) != DUK_TOK_WITH) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CLASS) != DUK_TOK_CLASS) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_CONST) != DUK_TOK_CONST) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_ENUM) != DUK_TOK_ENUM) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_EXPORT) != DUK_TOK_EXPORT) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_EXTENDS) != DUK_TOK_EXTENDS) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IMPORT) != DUK_TOK_IMPORT) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_SUPER) != DUK_TOK_SUPER) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_LC_NULL) != DUK_TOK_NULL) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_TRUE) != DUK_TOK_TRUE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_FALSE) != DUK_TOK_FALSE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_IMPLEMENTS) != DUK_TOK_IMPLEMENTS) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_INTERFACE) != DUK_TOK_INTERFACE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_LET) != DUK_TOK_LET) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PACKAGE) != DUK_TOK_PACKAGE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PRIVATE) != DUK_TOK_PRIVATE) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PROTECTED) != DUK_TOK_PROTECTED) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_PUBLIC) != DUK_TOK_PUBLIC) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_STATIC) != DUK_TOK_STATIC) +#error mismatch in token defines +#endif +#if (DUK_STRIDX_TO_TOK(DUK_STRIDX_YIELD) != DUK_TOK_YIELD) +#error mismatch in token defines +#endif + +/* Regexp tokens */ +#define DUK_RETOK_EOF 0 +#define DUK_RETOK_DISJUNCTION 1 +#define DUK_RETOK_QUANTIFIER 2 +#define DUK_RETOK_ASSERT_START 3 +#define DUK_RETOK_ASSERT_END 4 +#define DUK_RETOK_ASSERT_WORD_BOUNDARY 5 +#define DUK_RETOK_ASSERT_NOT_WORD_BOUNDARY 6 +#define DUK_RETOK_ASSERT_START_POS_LOOKAHEAD 7 +#define DUK_RETOK_ASSERT_START_NEG_LOOKAHEAD 8 +#define DUK_RETOK_ATOM_PERIOD 9 +#define DUK_RETOK_ATOM_CHAR 10 +#define DUK_RETOK_ATOM_DIGIT 11 /* assumptions in regexp compiler */ +#define DUK_RETOK_ATOM_NOT_DIGIT 12 /* -""- */ +#define DUK_RETOK_ATOM_WHITE 13 /* -""- */ +#define DUK_RETOK_ATOM_NOT_WHITE 14 /* -""- */ +#define DUK_RETOK_ATOM_WORD_CHAR 15 /* -""- */ +#define DUK_RETOK_ATOM_NOT_WORD_CHAR 16 /* -""- */ +#define DUK_RETOK_ATOM_BACKREFERENCE 17 +#define DUK_RETOK_ATOM_START_CAPTURE_GROUP 18 +#define DUK_RETOK_ATOM_START_NONCAPTURE_GROUP 19 +#define DUK_RETOK_ATOM_START_CHARCLASS 20 +#define DUK_RETOK_ATOM_START_CHARCLASS_INVERTED 21 +#define DUK_RETOK_ATOM_END_GROUP 22 + +/* Constants for duk_lexer_ctx.buf. */ +#define DUK_LEXER_TEMP_BUF_LIMIT 256 + +/* A token value. Can be memcpy()'d, but note that slot1/slot2 values are on the valstack. + * Some fields (like num, str1, str2) are only valid for specific token types and may have + * stale values otherwise. + */ +struct duk_token { + duk_small_uint_t t; /* token type (with reserved word identification) */ + duk_small_uint_t t_nores; /* token type (with reserved words as DUK_TOK_IDENTIFER) */ + duk_double_t num; /* numeric value of token */ + duk_hstring *str1; /* string 1 of token (borrowed, stored to ctx->slot1_idx) */ + duk_hstring *str2; /* string 2 of token (borrowed, stored to ctx->slot2_idx) */ + duk_size_t start_offset; /* start byte offset of token in lexer input */ + duk_int_t start_line; /* start line of token (first char) */ + duk_int_t num_escapes; /* number of escapes and line continuations (for directive prologue) */ + duk_bool_t lineterm; /* token was preceded by a lineterm */ + duk_bool_t allow_auto_semi; /* token allows automatic semicolon insertion (eof or preceded by newline) */ +}; + +#define DUK_RE_QUANTIFIER_INFINITE ((duk_uint32_t) 0xffffffffUL) + +/* A regexp token value. */ +struct duk_re_token { + duk_small_uint_t t; /* token type */ + duk_small_uint_t greedy; + duk_uint32_t num; /* numeric value (character, count) */ + duk_uint32_t qmin; + duk_uint32_t qmax; +}; + +/* A structure for 'snapshotting' a point for rewinding */ +struct duk_lexer_point { + duk_size_t offset; + duk_int_t line; +}; + +/* Lexer codepoint with additional info like offset/line number */ +struct duk_lexer_codepoint { + duk_codepoint_t codepoint; + duk_size_t offset; + duk_int_t line; +}; + +/* Lexer context. Same context is used for ECMAScript and Regexp parsing. */ +struct duk_lexer_ctx { +#if defined(DUK_USE_LEXER_SLIDING_WINDOW) + duk_lexer_codepoint *window; /* unicode code points, window[0] is always next, points to 'buffer' */ + duk_lexer_codepoint buffer[DUK_LEXER_BUFFER_SIZE]; +#else + duk_lexer_codepoint window[DUK_LEXER_WINDOW_SIZE]; /* unicode code points, window[0] is always next */ +#endif + + duk_hthread *thr; /* thread; minimizes argument passing */ + + const duk_uint8_t *input; /* input string (may be a user pointer) */ + duk_size_t input_length; /* input byte length */ + duk_size_t input_offset; /* input offset for window leading edge (not window[0]) */ + duk_int_t input_line; /* input linenumber at input_offset (not window[0]), init to 1 */ + + duk_idx_t slot1_idx; /* valstack slot for 1st token value */ + duk_idx_t slot2_idx; /* valstack slot for 2nd token value */ + duk_idx_t buf_idx; /* valstack slot for temp buffer */ + duk_hbuffer_dynamic *buf; /* temp accumulation buffer */ + duk_bufwriter_ctx bw; /* bufwriter for temp accumulation */ + + duk_int_t token_count; /* number of tokens parsed */ + duk_int_t token_limit; /* maximum token count before error (sanity backstop) */ + + duk_small_uint_t flags; /* lexer flags, use compiler flag defines for now */ +}; + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL void duk_lexer_initctx(duk_lexer_ctx *lex_ctx); + +DUK_INTERNAL_DECL void duk_lexer_getpoint(duk_lexer_ctx *lex_ctx, duk_lexer_point *pt); +DUK_INTERNAL_DECL void duk_lexer_setpoint(duk_lexer_ctx *lex_ctx, duk_lexer_point *pt); + +DUK_INTERNAL_DECL +void duk_lexer_parse_js_input_element(duk_lexer_ctx *lex_ctx, + duk_token *out_token, + duk_bool_t strict_mode, + duk_bool_t regexp_mode); +#if defined(DUK_USE_REGEXP_SUPPORT) +DUK_INTERNAL_DECL void duk_lexer_parse_re_token(duk_lexer_ctx *lex_ctx, duk_re_token *out_token); +DUK_INTERNAL_DECL void duk_lexer_parse_re_ranges(duk_lexer_ctx *lex_ctx, duk_re_range_callback gen_range, void *userdata); +#endif /* DUK_USE_REGEXP_SUPPORT */ + +#endif /* DUK_LEXER_H_INCLUDED */ +/* #include duk_js_compiler.h */ +#line 1 "duk_js_compiler.h" +/* + * ECMAScript compiler. + */ + +#if !defined(DUK_JS_COMPILER_H_INCLUDED) +#define DUK_JS_COMPILER_H_INCLUDED + +/* ECMAScript compiler limits */ +#define DUK_COMPILER_TOKEN_LIMIT 100000000L /* 1e8: protects against deeply nested inner functions */ + +/* maximum loopcount for peephole optimization */ +#define DUK_COMPILER_PEEPHOLE_MAXITER 3 + +/* maximum bytecode length in instructions */ +#define DUK_COMPILER_MAX_BYTECODE_LENGTH (256L * 1024L * 1024L) /* 1 GB */ + +/* + * Compiler intermediate values + * + * Intermediate values describe either plain values (e.g. strings or + * numbers) or binary operations which have not yet been coerced into + * either a left-hand-side or right-hand-side role (e.g. object property). + */ + +#define DUK_IVAL_NONE 0 /* no value */ +#define DUK_IVAL_PLAIN 1 /* register, constant, or value */ +#define DUK_IVAL_ARITH 2 /* binary arithmetic; DUK_OP_ADD, DUK_OP_EQ, other binary ops */ +#define DUK_IVAL_PROP 3 /* property access */ +#define DUK_IVAL_VAR 4 /* variable access */ + +#define DUK_ISPEC_NONE 0 /* no value */ +#define DUK_ISPEC_VALUE 1 /* value resides in 'valstack_idx' */ +#define DUK_ISPEC_REGCONST 2 /* value resides in a register or constant */ + +/* Bit mask which indicates that a regconst is a constant instead of a register. + * Chosen so that when a regconst is cast to duk_int32_t, all consts are + * negative values. + */ +#define DUK_REGCONST_CONST_MARKER DUK_INT32_MIN /* = -0x80000000 */ + +/* Type to represent a reg/const reference during compilation, with <0 + * indicating a constant. Some call sites also use -1 to indicate 'none'. + */ +typedef duk_int32_t duk_regconst_t; + +typedef struct { + duk_small_uint_t t; /* DUK_ISPEC_XXX */ + duk_regconst_t regconst; + duk_idx_t valstack_idx; /* always set; points to a reserved valstack slot */ +} duk_ispec; + +typedef struct { + /* + * PLAIN: x1 + * ARITH: x1 x2 + * PROP: x1.x2 + * VAR: x1 (name) + */ + + /* XXX: can be optimized for smaller footprint esp. on 32-bit environments */ + duk_small_uint_t t; /* DUK_IVAL_XXX */ + duk_small_uint_t op; /* bytecode opcode for binary ops */ + duk_ispec x1; + duk_ispec x2; +} duk_ivalue; + +/* + * Bytecode instruction representation during compilation + * + * Contains the actual instruction and (optionally) debug info. + */ + +struct duk_compiler_instr { + duk_instr_t ins; +#if defined(DUK_USE_PC2LINE) + duk_uint32_t line; +#endif +}; + +/* + * Compiler state + */ + +#define DUK_LABEL_FLAG_ALLOW_BREAK (1U << 0) +#define DUK_LABEL_FLAG_ALLOW_CONTINUE (1U << 1) + +#define DUK_DECL_TYPE_VAR 0 +#define DUK_DECL_TYPE_FUNC 1 + +/* XXX: optimize to 16 bytes */ +typedef struct { + duk_small_uint_t flags; + duk_int_t label_id; /* numeric label_id (-1 reserved as marker) */ + duk_hstring *h_label; /* borrowed label name */ + duk_int_t catch_depth; /* catch depth at point of definition */ + duk_int_t pc_label; /* pc of label statement: + * pc+1: break jump site + * pc+2: continue jump site + */ + + /* Fast jumps (which avoid longjmp) jump directly to the jump sites + * which are always known even while the iteration/switch statement + * is still being parsed. A final peephole pass "straightens out" + * the jumps. + */ +} duk_labelinfo; + +/* Compiling state of one function, eventually converted to duk_hcompfunc */ +struct duk_compiler_func { + /* These pointers are at the start of the struct so that they pack + * nicely. Mixing pointers and integer values is bad on some + * platforms (e.g. if int is 32 bits and pointers are 64 bits). + */ + + duk_bufwriter_ctx bw_code; /* bufwriter for code */ + + duk_hstring *h_name; /* function name (borrowed reference), ends up in _name */ + /* h_code: held in bw_code */ + duk_hobject *h_consts; /* array */ + duk_hobject *h_funcs; /* array of function templates: [func1, offset1, line1, func2, offset2, line2] + * offset/line points to closing brace to allow skipping on pass 2 + */ + duk_hobject *h_decls; /* array of declarations: [ name1, val1, name2, val2, ... ] + * valN = (typeN) | (fnum << 8), where fnum is inner func number (0 for vars) + * record function and variable declarations in pass 1 + */ + duk_hobject *h_labelnames; /* array of active label names */ + duk_hbuffer_dynamic *h_labelinfos; /* C array of duk_labelinfo */ + duk_hobject *h_argnames; /* array of formal argument names (-> _Formals) */ + duk_hobject *h_varmap; /* variable map for pass 2 (identifier -> register number or null (unmapped)) */ + + /* Value stack indices for tracking objects. */ + /* code_idx: not needed */ + duk_idx_t consts_idx; + duk_idx_t funcs_idx; + duk_idx_t decls_idx; + duk_idx_t labelnames_idx; + duk_idx_t labelinfos_idx; + duk_idx_t argnames_idx; + duk_idx_t varmap_idx; + + /* Temp reg handling. */ + duk_regconst_t temp_first; /* first register that is a temporary (below: variables) */ + duk_regconst_t temp_next; /* next temporary register to allocate */ + duk_regconst_t temp_max; /* highest value of temp_reg (temp_max - 1 is highest used reg) */ + + /* Shuffle registers if large number of regs/consts. */ + duk_regconst_t shuffle1; + duk_regconst_t shuffle2; + duk_regconst_t shuffle3; + + /* Stats for current expression being parsed. */ + duk_int_t nud_count; + duk_int_t led_count; + duk_int_t paren_level; /* parenthesis count, 0 = top level */ + duk_bool_t expr_lhs; /* expression is left-hand-side compatible */ + duk_bool_t allow_in; /* current paren level allows 'in' token */ + + /* Misc. */ + duk_int_t stmt_next; /* statement id allocation (running counter) */ + duk_int_t label_next; /* label id allocation (running counter) */ + duk_int_t catch_depth; /* catch stack depth */ + duk_int_t with_depth; /* with stack depth (affects identifier lookups) */ + duk_int_t fnum_next; /* inner function numbering */ + duk_int_t num_formals; /* number of formal arguments */ + duk_regconst_t reg_stmt_value; /* register for writing value of 'non-empty' statements (global or eval code), -1 is marker */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_int_t min_line; /* XXX: typing (duk_hcompfunc has duk_uint32_t) */ + duk_int_t max_line; +#endif + + /* Status booleans. */ + duk_uint8_t is_function; /* is an actual function (not global/eval code) */ + duk_uint8_t is_eval; /* is eval code */ + duk_uint8_t is_global; /* is global code */ + duk_uint8_t is_namebinding; /* needs a name binding */ + duk_uint8_t is_constructable; /* result is constructable */ + duk_uint8_t is_setget; /* is a setter/getter */ + duk_uint8_t is_strict; /* function is strict */ + duk_uint8_t is_notail; /* function must not be tail called */ + duk_uint8_t in_directive_prologue; /* parsing in "directive prologue", recognize directives */ + duk_uint8_t in_scanning; /* parsing in "scanning" phase (first pass) */ + duk_uint8_t may_direct_eval; /* function may call direct eval */ + duk_uint8_t id_access_arguments; /* function refers to 'arguments' identifier */ + duk_uint8_t id_access_slow; /* function makes one or more slow path accesses that won't match own static variables */ + duk_uint8_t id_access_slow_own; /* function makes one or more slow path accesses that may match own static variables */ + duk_uint8_t is_arguments_shadowed; /* argument/function declaration shadows 'arguments' */ + duk_uint8_t needs_shuffle; /* function needs shuffle registers */ + duk_uint8_t reject_regexp_in_adv; /* reject RegExp literal on next advance() call; needed for handling IdentifierName productions */ + duk_uint8_t allow_regexp_in_adv; /* allow RegExp literal on next advance() call */ +}; + +struct duk_compiler_ctx { + duk_hthread *thr; + + /* filename being compiled (ends up in functions' '_filename' property) */ + duk_hstring *h_filename; /* borrowed reference */ + + /* lexing (tokenization) state (contains two valstack slot indices) */ + duk_lexer_ctx lex; + + /* current and previous token for parsing */ + duk_token prev_token; + duk_token curr_token; + duk_idx_t tok11_idx; /* curr_token slot1 (matches 'lex' slot1_idx) */ + duk_idx_t tok12_idx; /* curr_token slot2 (matches 'lex' slot2_idx) */ + duk_idx_t tok21_idx; /* prev_token slot1 */ + duk_idx_t tok22_idx; /* prev_token slot2 */ + + /* recursion limit */ + duk_int_t recursion_depth; + duk_int_t recursion_limit; + + /* code emission temporary */ + duk_int_t emit_jumpslot_pc; + + /* current function being compiled (embedded instead of pointer for more compact access) */ + duk_compiler_func curr_func; +}; + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL void duk_js_compile(duk_hthread *thr, const duk_uint8_t *src_buffer, duk_size_t src_length, duk_small_uint_t flags); + +#endif /* DUK_JS_COMPILER_H_INCLUDED */ +/* #include duk_regexp.h */ +#line 1 "duk_regexp.h" +/* + * Regular expression structs, constants, and bytecode defines. + */ + +#if !defined(DUK_REGEXP_H_INCLUDED) +#define DUK_REGEXP_H_INCLUDED + +/* maximum bytecode copies for {n,m} quantifiers */ +#define DUK_RE_MAX_ATOM_COPIES 1000 + +/* regexp compilation limits */ +#define DUK_RE_COMPILE_TOKEN_LIMIT 100000000L /* 1e8 */ + +/* regexp execution limits */ +#define DUK_RE_EXECUTE_STEPS_LIMIT 1000000000L /* 1e9 */ + +/* regexp opcodes */ +#define DUK_REOP_MATCH 1 +#define DUK_REOP_CHAR 2 +#define DUK_REOP_PERIOD 3 +#define DUK_REOP_RANGES 4 +#define DUK_REOP_INVRANGES 5 +#define DUK_REOP_JUMP 6 +#define DUK_REOP_SPLIT1 7 +#define DUK_REOP_SPLIT2 8 +#define DUK_REOP_SQMINIMAL 9 +#define DUK_REOP_SQGREEDY 10 +#define DUK_REOP_SAVE 11 +#define DUK_REOP_WIPERANGE 12 +#define DUK_REOP_LOOKPOS 13 +#define DUK_REOP_LOOKNEG 14 +#define DUK_REOP_BACKREFERENCE 15 +#define DUK_REOP_ASSERT_START 16 +#define DUK_REOP_ASSERT_END 17 +#define DUK_REOP_ASSERT_WORD_BOUNDARY 18 +#define DUK_REOP_ASSERT_NOT_WORD_BOUNDARY 19 + +/* flags */ +#define DUK_RE_FLAG_GLOBAL (1U << 0) +#define DUK_RE_FLAG_IGNORE_CASE (1U << 1) +#define DUK_RE_FLAG_MULTILINE (1U << 2) + +struct duk_re_matcher_ctx { + duk_hthread *thr; + + duk_uint32_t re_flags; + const duk_uint8_t *input; + const duk_uint8_t *input_end; + const duk_uint8_t *bytecode; + const duk_uint8_t *bytecode_end; + const duk_uint8_t **saved; /* allocated from valstack (fixed buffer) */ + duk_uint32_t nsaved; + duk_uint32_t recursion_depth; + duk_uint32_t recursion_limit; + duk_uint32_t steps_count; + duk_uint32_t steps_limit; +}; + +struct duk_re_compiler_ctx { + duk_hthread *thr; + + duk_uint32_t re_flags; + duk_lexer_ctx lex; + duk_re_token curr_token; + duk_bufwriter_ctx bw; + duk_uint32_t captures; /* highest capture number emitted so far (used as: ++captures) */ + duk_uint32_t highest_backref; + duk_uint32_t recursion_depth; + duk_uint32_t recursion_limit; + duk_uint32_t nranges; /* internal temporary value, used for char classes */ +}; + +/* + * Prototypes + */ + +#if defined(DUK_USE_REGEXP_SUPPORT) +DUK_INTERNAL_DECL void duk_regexp_compile(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_regexp_create_instance(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_regexp_match(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_regexp_match_force_global(duk_hthread *thr); /* hacky helper for String.prototype.split() */ +#endif + +#endif /* DUK_REGEXP_H_INCLUDED */ +/* #include duk_heaphdr.h */ +#line 1 "duk_heaphdr.h" +/* + * Heap header definition and assorted macros, including ref counting. + * Access all fields through the accessor macros. + */ + +#if !defined(DUK_HEAPHDR_H_INCLUDED) +#define DUK_HEAPHDR_H_INCLUDED + +/* + * Common heap header + * + * All heap objects share the same flags and refcount fields. Objects other + * than strings also need to have a single or double linked list pointers + * for insertion into the "heap allocated" list. Strings have single linked + * list pointers for string table chaining. + * + * Technically, 'h_refcount' must be wide enough to guarantee that it cannot + * wrap; otherwise objects might be freed incorrectly after wrapping. The + * default refcount field is 32 bits even on 64-bit systems: while that's in + * theory incorrect, the Duktape heap needs to be larger than 64GB for the + * count to actually wrap (assuming 16-byte duk_tvals). This is very unlikely + * to ever be an issue, but if it is, disabling DUK_USE_REFCOUNT32 causes + * Duktape to use size_t for refcounts which should always be safe. + * + * Heap header size on 32-bit platforms: 8 bytes without reference counting, + * 16 bytes with reference counting. + * + * Note that 'raw' macros such as DUK_HEAPHDR_GET_REFCOUNT() are not + * defined without DUK_USE_REFERENCE_COUNTING, so caller must #if defined() + * around them. + */ + +/* XXX: macro for shared header fields (avoids some padding issues) */ + +struct duk_heaphdr { + duk_uint32_t h_flags; + +#if defined(DUK_USE_REFERENCE_COUNTING) +#if defined(DUK_USE_ASSERTIONS) + /* When assertions enabled, used by mark-and-sweep for refcount + * validation. Largest reasonable type; also detects overflows. + */ + duk_size_t h_assert_refcount; +#endif +#if defined(DUK_USE_REFCOUNT16) + duk_uint16_t h_refcount; +#elif defined(DUK_USE_REFCOUNT32) + duk_uint32_t h_refcount; +#else + duk_size_t h_refcount; +#endif +#endif /* DUK_USE_REFERENCE_COUNTING */ + +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t h_next16; +#else + duk_heaphdr *h_next; +#endif + +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) + /* refcounting requires direct heap frees, which in turn requires a dual linked heap */ +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t h_prev16; +#else + duk_heaphdr *h_prev; +#endif +#endif + + /* When DUK_USE_HEAPPTR16 (and DUK_USE_REFCOUNT16) is in use, the + * struct won't align nicely to 4 bytes. This 16-bit extra field + * is added to make the alignment clean; the field can be used by + * heap objects when 16-bit packing is used. This field is now + * conditional to DUK_USE_HEAPPTR16 only, but it is intended to be + * used with DUK_USE_REFCOUNT16 and DUK_USE_DOUBLE_LINKED_HEAP; + * this only matter to low memory environments anyway. + */ +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t h_extra16; +#endif +}; + +struct duk_heaphdr_string { + /* 16 bits would be enough for shared heaphdr flags and duk_hstring + * flags. The initial parts of duk_heaphdr_string and duk_heaphdr + * must match so changing the flags field size here would be quite + * awkward. However, to minimize struct size, we can pack at least + * 16 bits of duk_hstring data into the flags field. + */ + duk_uint32_t h_flags; + +#if defined(DUK_USE_REFERENCE_COUNTING) +#if defined(DUK_USE_ASSERTIONS) + /* When assertions enabled, used by mark-and-sweep for refcount + * validation. Largest reasonable type; also detects overflows. + */ + duk_size_t h_assert_refcount; +#endif +#if defined(DUK_USE_REFCOUNT16) + duk_uint16_t h_refcount; + duk_uint16_t h_strextra16; /* round out to 8 bytes */ +#elif defined(DUK_USE_REFCOUNT32) + duk_uint32_t h_refcount; +#else + duk_size_t h_refcount; +#endif +#else + duk_uint16_t h_strextra16; +#endif /* DUK_USE_REFERENCE_COUNTING */ + + duk_hstring *h_next; + /* No 'h_prev' pointer for strings. */ +}; + +#define DUK_HEAPHDR_FLAGS_TYPE_MASK 0x00000003UL +#define DUK_HEAPHDR_FLAGS_FLAG_MASK (~DUK_HEAPHDR_FLAGS_TYPE_MASK) + + /* 2 bits for heap type */ +#define DUK_HEAPHDR_FLAGS_HEAP_START 2 /* 5 heap flags */ +#define DUK_HEAPHDR_FLAGS_USER_START 7 /* 25 user flags */ + +#define DUK_HEAPHDR_HEAP_FLAG_NUMBER(n) (DUK_HEAPHDR_FLAGS_HEAP_START + (n)) +#define DUK_HEAPHDR_USER_FLAG_NUMBER(n) (DUK_HEAPHDR_FLAGS_USER_START + (n)) +#define DUK_HEAPHDR_HEAP_FLAG(n) (1UL << (DUK_HEAPHDR_FLAGS_HEAP_START + (n))) +#define DUK_HEAPHDR_USER_FLAG(n) (1UL << (DUK_HEAPHDR_FLAGS_USER_START + (n))) + +#define DUK_HEAPHDR_FLAG_REACHABLE DUK_HEAPHDR_HEAP_FLAG(0) /* mark-and-sweep: reachable */ +#define DUK_HEAPHDR_FLAG_TEMPROOT DUK_HEAPHDR_HEAP_FLAG(1) /* mark-and-sweep: children not processed */ +#define DUK_HEAPHDR_FLAG_FINALIZABLE DUK_HEAPHDR_HEAP_FLAG(2) /* mark-and-sweep: finalizable (on current pass) */ +#define DUK_HEAPHDR_FLAG_FINALIZED DUK_HEAPHDR_HEAP_FLAG(3) /* mark-and-sweep: finalized (on previous pass) */ +#define DUK_HEAPHDR_FLAG_READONLY DUK_HEAPHDR_HEAP_FLAG(4) /* read-only object, in code section */ + +#define DUK_HTYPE_MIN 0 +#define DUK_HTYPE_STRING 0 +#define DUK_HTYPE_OBJECT 1 +#define DUK_HTYPE_BUFFER 2 +#define DUK_HTYPE_MAX 2 + +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HEAPHDR_GET_NEXT(heap,h) \ + ((duk_heaphdr *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->h_next16)) +#define DUK_HEAPHDR_SET_NEXT(heap,h,val) do { \ + (h)->h_next16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) val); \ + } while (0) +#else +#define DUK_HEAPHDR_GET_NEXT(heap,h) ((h)->h_next) +#define DUK_HEAPHDR_SET_NEXT(heap,h,val) do { \ + (h)->h_next = (val); \ + } while (0) +#endif + +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HEAPHDR_GET_PREV(heap,h) \ + ((duk_heaphdr *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->h_prev16)) +#define DUK_HEAPHDR_SET_PREV(heap,h,val) do { \ + (h)->h_prev16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (val)); \ + } while (0) +#else +#define DUK_HEAPHDR_GET_PREV(heap,h) ((h)->h_prev) +#define DUK_HEAPHDR_SET_PREV(heap,h,val) do { \ + (h)->h_prev = (val); \ + } while (0) +#endif +#endif + +#if defined(DUK_USE_REFERENCE_COUNTING) +#define DUK_HEAPHDR_GET_REFCOUNT(h) ((h)->h_refcount) +#define DUK_HEAPHDR_SET_REFCOUNT(h,val) do { \ + (h)->h_refcount = (val); \ + DUK_ASSERT((h)->h_refcount == (val)); /* No truncation. */ \ + } while (0) +#define DUK_HEAPHDR_PREINC_REFCOUNT(h) (++(h)->h_refcount) /* result: updated refcount */ +#define DUK_HEAPHDR_PREDEC_REFCOUNT(h) (--(h)->h_refcount) /* result: updated refcount */ +#else +/* refcount macros not defined without refcounting, caller must #if defined() now */ +#endif /* DUK_USE_REFERENCE_COUNTING */ + +/* + * Note: type is treated as a field separate from flags, so some masking is + * involved in the macros below. + */ + +#define DUK_HEAPHDR_GET_FLAGS_RAW(h) ((h)->h_flags) +#define DUK_HEAPHDR_SET_FLAGS_RAW(h,val) do { \ + (h)->h_flags = (val); } \ + } +#define DUK_HEAPHDR_GET_FLAGS(h) ((h)->h_flags & DUK_HEAPHDR_FLAGS_FLAG_MASK) +#define DUK_HEAPHDR_SET_FLAGS(h,val) do { \ + (h)->h_flags = ((h)->h_flags & ~(DUK_HEAPHDR_FLAGS_FLAG_MASK)) | (val); \ + } while (0) +#define DUK_HEAPHDR_GET_TYPE(h) ((h)->h_flags & DUK_HEAPHDR_FLAGS_TYPE_MASK) +#define DUK_HEAPHDR_SET_TYPE(h,val) do { \ + (h)->h_flags = ((h)->h_flags & ~(DUK_HEAPHDR_FLAGS_TYPE_MASK)) | (val); \ + } while (0) + +/* Comparison for type >= DUK_HTYPE_MIN skipped; because DUK_HTYPE_MIN is zero + * and the comparison is unsigned, it's always true and generates warnings. + */ +#define DUK_HEAPHDR_HTYPE_VALID(h) ( \ + DUK_HEAPHDR_GET_TYPE((h)) <= DUK_HTYPE_MAX \ + ) + +#define DUK_HEAPHDR_SET_TYPE_AND_FLAGS(h,tval,fval) do { \ + (h)->h_flags = ((tval) & DUK_HEAPHDR_FLAGS_TYPE_MASK) | \ + ((fval) & DUK_HEAPHDR_FLAGS_FLAG_MASK); \ + } while (0) + +#define DUK_HEAPHDR_SET_FLAG_BITS(h,bits) do { \ + DUK_ASSERT(((bits) & ~(DUK_HEAPHDR_FLAGS_FLAG_MASK)) == 0); \ + (h)->h_flags |= (bits); \ + } while (0) + +#define DUK_HEAPHDR_CLEAR_FLAG_BITS(h,bits) do { \ + DUK_ASSERT(((bits) & ~(DUK_HEAPHDR_FLAGS_FLAG_MASK)) == 0); \ + (h)->h_flags &= ~((bits)); \ + } while (0) + +#define DUK_HEAPHDR_CHECK_FLAG_BITS(h,bits) (((h)->h_flags & (bits)) != 0) + +#define DUK_HEAPHDR_SET_REACHABLE(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_REACHABLE) +#define DUK_HEAPHDR_CLEAR_REACHABLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_REACHABLE) +#define DUK_HEAPHDR_HAS_REACHABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_REACHABLE) + +#define DUK_HEAPHDR_SET_TEMPROOT(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_TEMPROOT) +#define DUK_HEAPHDR_CLEAR_TEMPROOT(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_TEMPROOT) +#define DUK_HEAPHDR_HAS_TEMPROOT(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_TEMPROOT) + +#define DUK_HEAPHDR_SET_FINALIZABLE(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZABLE) +#define DUK_HEAPHDR_CLEAR_FINALIZABLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZABLE) +#define DUK_HEAPHDR_HAS_FINALIZABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZABLE) + +#define DUK_HEAPHDR_SET_FINALIZED(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZED) +#define DUK_HEAPHDR_CLEAR_FINALIZED(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZED) +#define DUK_HEAPHDR_HAS_FINALIZED(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_FINALIZED) + +#define DUK_HEAPHDR_SET_READONLY(h) DUK_HEAPHDR_SET_FLAG_BITS((h),DUK_HEAPHDR_FLAG_READONLY) +#define DUK_HEAPHDR_CLEAR_READONLY(h) DUK_HEAPHDR_CLEAR_FLAG_BITS((h),DUK_HEAPHDR_FLAG_READONLY) +#define DUK_HEAPHDR_HAS_READONLY(h) DUK_HEAPHDR_CHECK_FLAG_BITS((h),DUK_HEAPHDR_FLAG_READONLY) + +/* get or set a range of flags; m=first bit number, n=number of bits */ +#define DUK_HEAPHDR_GET_FLAG_RANGE(h,m,n) (((h)->h_flags >> (m)) & ((1UL << (n)) - 1UL)) + +#define DUK_HEAPHDR_SET_FLAG_RANGE(h,m,n,v) do { \ + (h)->h_flags = \ + ((h)->h_flags & (~(((1UL << (n)) - 1UL) << (m)))) \ + | ((v) << (m)); \ + } while (0) + +/* init pointer fields to null */ +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) +#define DUK_HEAPHDR_INIT_NULLS(h) do { \ + DUK_HEAPHDR_SET_NEXT((h), (void *) NULL); \ + DUK_HEAPHDR_SET_PREV((h), (void *) NULL); \ + } while (0) +#else +#define DUK_HEAPHDR_INIT_NULLS(h) do { \ + DUK_HEAPHDR_SET_NEXT((h), (void *) NULL); \ + } while (0) +#endif + +#define DUK_HEAPHDR_STRING_INIT_NULLS(h) do { \ + (h)->h_next = NULL; \ + } while (0) + +/* + * Type tests + */ + +/* Take advantage of the fact that for DUK_HTYPE_xxx numbers the lowest bit + * is only set for DUK_HTYPE_OBJECT (= 1). + */ +#if 0 +#define DUK_HEAPHDR_IS_OBJECT(h) (DUK_HEAPHDR_GET_TYPE((h)) == DUK_HTYPE_OBJECT) +#endif +#define DUK_HEAPHDR_IS_OBJECT(h) ((h)->h_flags & 0x01UL) +#define DUK_HEAPHDR_IS_STRING(h) (DUK_HEAPHDR_GET_TYPE((h)) == DUK_HTYPE_STRING) +#define DUK_HEAPHDR_IS_BUFFER(h) (DUK_HEAPHDR_GET_TYPE((h)) == DUK_HTYPE_BUFFER) + +/* + * Assert helpers + */ + +/* Check that prev/next links are consistent: if e.g. h->prev is != NULL, + * h->prev->next should point back to h. + */ +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_heaphdr_assert_valid_subclassed(duk_heaphdr *h); +DUK_INTERNAL_DECL void duk_heaphdr_assert_links(duk_heap *heap, duk_heaphdr *h); +DUK_INTERNAL_DECL void duk_heaphdr_assert_valid(duk_heaphdr *h); +#define DUK_HEAPHDR_ASSERT_LINKS(heap,h) do { duk_heaphdr_assert_links((heap), (h)); } while (0) +#define DUK_HEAPHDR_ASSERT_VALID(h) do { duk_heaphdr_assert_valid((h)); } while (0) +#else +#define DUK_HEAPHDR_ASSERT_LINKS(heap,h) do {} while (0) +#define DUK_HEAPHDR_ASSERT_VALID(h) do {} while (0) +#endif + +#endif /* DUK_HEAPHDR_H_INCLUDED */ +/* #include duk_refcount.h */ +#line 1 "duk_refcount.h" +/* + * Reference counting helper macros. The macros take a thread argument + * and must thus always be executed in a specific thread context. The + * thread argument is not really needed anymore: DECREF can operate with + * a heap pointer only, and INCREF needs neither. + */ + +#if !defined(DUK_REFCOUNT_H_INCLUDED) +#define DUK_REFCOUNT_H_INCLUDED + +#if defined(DUK_USE_REFERENCE_COUNTING) + +#if defined(DUK_USE_ROM_OBJECTS) +/* With ROM objects "needs refcount update" is true when the value is + * heap allocated and is not a ROM object. + */ +/* XXX: double evaluation for 'tv' argument. */ +#define DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv) \ + (DUK_TVAL_IS_HEAP_ALLOCATED((tv)) && !DUK_HEAPHDR_HAS_READONLY(DUK_TVAL_GET_HEAPHDR((tv)))) +#define DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE(h) (!DUK_HEAPHDR_HAS_READONLY((h))) +#else /* DUK_USE_ROM_OBJECTS */ +/* Without ROM objects "needs refcount update" == is heap allocated. */ +#define DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv) DUK_TVAL_IS_HEAP_ALLOCATED((tv)) +#define DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE(h) 1 +#endif /* DUK_USE_ROM_OBJECTS */ + +/* Fast variants, inline refcount operations except for refzero handling. + * Can be used explicitly when speed is always more important than size. + * For a good compiler and a single file build, these are basically the + * same as a forced inline. + */ +#define DUK_TVAL_INCREF_FAST(thr,tv) do { \ + duk_tval *duk__tv = (tv); \ + DUK_ASSERT(duk__tv != NULL); \ + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(duk__tv)) { \ + duk_heaphdr *duk__h = DUK_TVAL_GET_HEAPHDR(duk__tv); \ + DUK_ASSERT(duk__h != NULL); \ + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \ + DUK_HEAPHDR_PREINC_REFCOUNT(duk__h); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) != 0); /* No wrapping. */ \ + } \ + } while (0) +#define DUK_TVAL_DECREF_FAST(thr,tv) do { \ + duk_tval *duk__tv = (tv); \ + DUK_ASSERT(duk__tv != NULL); \ + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(duk__tv)) { \ + duk_heaphdr *duk__h = DUK_TVAL_GET_HEAPHDR(duk__tv); \ + DUK_ASSERT(duk__h != NULL); \ + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) > 0); \ + if (DUK_HEAPHDR_PREDEC_REFCOUNT(duk__h) == 0) { \ + duk_heaphdr_refzero((thr), duk__h); \ + } \ + } \ + } while (0) +#define DUK_TVAL_DECREF_NORZ_FAST(thr,tv) do { \ + duk_tval *duk__tv = (tv); \ + DUK_ASSERT(duk__tv != NULL); \ + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(duk__tv)) { \ + duk_heaphdr *duk__h = DUK_TVAL_GET_HEAPHDR(duk__tv); \ + DUK_ASSERT(duk__h != NULL); \ + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) > 0); \ + if (DUK_HEAPHDR_PREDEC_REFCOUNT(duk__h) == 0) { \ + duk_heaphdr_refzero_norz((thr), duk__h); \ + } \ + } \ + } while (0) +#define DUK_HEAPHDR_INCREF_FAST(thr,h) do { \ + duk_heaphdr *duk__h = (duk_heaphdr *) (h); \ + DUK_ASSERT(duk__h != NULL); \ + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \ + if (DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE(duk__h)) { \ + DUK_HEAPHDR_PREINC_REFCOUNT(duk__h); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) != 0); /* No wrapping. */ \ + } \ + } while (0) +#define DUK_HEAPHDR_DECREF_FAST_RAW(thr,h,rzcall,rzcast) do { \ + duk_heaphdr *duk__h = (duk_heaphdr *) (h); \ + DUK_ASSERT(duk__h != NULL); \ + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(duk__h)); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(duk__h) > 0); \ + if (DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE(duk__h)) { \ + if (DUK_HEAPHDR_PREDEC_REFCOUNT(duk__h) == 0) { \ + (rzcall)((thr), (rzcast) duk__h); \ + } \ + } \ + } while (0) +#define DUK_HEAPHDR_DECREF_FAST(thr,h) \ + DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_heaphdr_refzero,duk_heaphdr *) +#define DUK_HEAPHDR_DECREF_NORZ_FAST(thr,h) \ + DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_heaphdr_refzero_norz,duk_heaphdr *) + +/* Slow variants, call to a helper to reduce code size. + * Can be used explicitly when size is always more important than speed. + */ +#define DUK_TVAL_INCREF_SLOW(thr,tv) do { duk_tval_incref((tv)); } while (0) +#define DUK_TVAL_DECREF_SLOW(thr,tv) do { duk_tval_decref((thr), (tv)); } while (0) +#define DUK_TVAL_DECREF_NORZ_SLOW(thr,tv) do { duk_tval_decref_norz((thr), (tv)); } while (0) +#define DUK_HEAPHDR_INCREF_SLOW(thr,h) do { duk_heaphdr_incref((duk_heaphdr *) (h)); } while (0) +#define DUK_HEAPHDR_DECREF_SLOW(thr,h) do { duk_heaphdr_decref((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HEAPHDR_DECREF_NORZ_SLOW(thr,h) do { duk_heaphdr_decref_norz((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HSTRING_INCREF_SLOW(thr,h) do { duk_heaphdr_incref((duk_heaphdr *) (h)); } while (0) +#define DUK_HSTRING_DECREF_SLOW(thr,h) do { duk_heaphdr_decref((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HSTRING_DECREF_NORZ_SLOW(thr,h) do { duk_heaphdr_decref_norz((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HBUFFER_INCREF_SLOW(thr,h) do { duk_heaphdr_incref((duk_heaphdr *) (h)); } while (0) +#define DUK_HBUFFER_DECREF_SLOW(thr,h) do { duk_heaphdr_decref((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HBUFFER_DECREF_NORZ_SLOW(thr,h) do { duk_heaphdr_decref_norz((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HOBJECT_INCREF_SLOW(thr,h) do { duk_heaphdr_incref((duk_heaphdr *) (h)); } while (0) +#define DUK_HOBJECT_DECREF_SLOW(thr,h) do { duk_heaphdr_decref((thr), (duk_heaphdr *) (h)); } while (0) +#define DUK_HOBJECT_DECREF_NORZ_SLOW(thr,h) do { duk_heaphdr_decref_norz((thr), (duk_heaphdr *) (h)); } while (0) + +/* Default variants. Selection depends on speed/size preference. + * Concretely: with gcc 4.8.1 -Os x64 the difference in final binary + * is about +1kB for _FAST variants. + */ +#if defined(DUK_USE_FAST_REFCOUNT_DEFAULT) +/* XXX: It would be nice to specialize for specific duk_hobject subtypes + * but current refzero queue handling prevents that. + */ +#define DUK_TVAL_INCREF(thr,tv) DUK_TVAL_INCREF_FAST((thr),(tv)) +#define DUK_TVAL_DECREF(thr,tv) DUK_TVAL_DECREF_FAST((thr),(tv)) +#define DUK_TVAL_DECREF_NORZ(thr,tv) DUK_TVAL_DECREF_NORZ_FAST((thr),(tv)) +#define DUK_HEAPHDR_INCREF(thr,h) DUK_HEAPHDR_INCREF_FAST((thr),(h)) +#define DUK_HEAPHDR_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_heaphdr_refzero,duk_heaphdr *) +#define DUK_HEAPHDR_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_heaphdr_refzero_norz,duk_heaphdr *) +#define DUK_HSTRING_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h)) +#define DUK_HSTRING_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hstring_refzero,duk_hstring *) +#define DUK_HSTRING_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hstring_refzero,duk_hstring *) /* no 'norz' variant */ +#define DUK_HOBJECT_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h)) +#define DUK_HOBJECT_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero,duk_hobject *) +#define DUK_HOBJECT_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero_norz,duk_hobject *) +#define DUK_HBUFFER_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h)) +#define DUK_HBUFFER_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hbuffer_refzero,duk_hbuffer *) +#define DUK_HBUFFER_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hbuffer_refzero,duk_hbuffer *) /* no 'norz' variant */ +#define DUK_HCOMPFUNC_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HCOMPFUNC_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero,duk_hobject *) +#define DUK_HCOMPFUNC_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero_norz,duk_hobject *) +#define DUK_HNATFUNC_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HNATFUNC_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero,duk_hobject *) +#define DUK_HNATFUNC_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero_norz,duk_hobject *) +#define DUK_HBUFOBJ_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HBUFOBJ_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero,duk_hobject *) +#define DUK_HBUFOBJ_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero_norz,duk_hobject *) +#define DUK_HTHREAD_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HTHREAD_DECREF(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero,duk_hobject *) +#define DUK_HTHREAD_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_FAST_RAW((thr),(h),duk_hobject_refzero_norz,duk_hobject *) +#else +#define DUK_TVAL_INCREF(thr,tv) DUK_TVAL_INCREF_SLOW((thr),(tv)) +#define DUK_TVAL_DECREF(thr,tv) DUK_TVAL_DECREF_SLOW((thr),(tv)) +#define DUK_TVAL_DECREF_NORZ(thr,tv) DUK_TVAL_DECREF_NORZ_SLOW((thr),(tv)) +#define DUK_HEAPHDR_INCREF(thr,h) DUK_HEAPHDR_INCREF_SLOW((thr),(h)) +#define DUK_HEAPHDR_DECREF(thr,h) DUK_HEAPHDR_DECREF_SLOW((thr),(h)) +#define DUK_HEAPHDR_DECREF_NORZ(thr,h) DUK_HEAPHDR_DECREF_NORZ_SLOW((thr),(h)) +#define DUK_HSTRING_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h)) +#define DUK_HSTRING_DECREF(thr,h) DUK_HSTRING_DECREF_SLOW((thr),(h)) +#define DUK_HSTRING_DECREF_NORZ(thr,h) DUK_HSTRING_DECREF_NORZ_SLOW((thr),(h)) +#define DUK_HOBJECT_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h)) +#define DUK_HOBJECT_DECREF(thr,h) DUK_HOBJECT_DECREF_SLOW((thr),(h)) +#define DUK_HOBJECT_DECREF_NORZ(thr,h) DUK_HOBJECT_DECREF_NORZ_SLOW((thr),(h)) +#define DUK_HBUFFER_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) (h)) +#define DUK_HBUFFER_DECREF(thr,h) DUK_HBUFFER_DECREF_SLOW((thr),(h)) +#define DUK_HBUFFER_DECREF_NORZ(thr,h) DUK_HBUFFER_DECREF_NORZ_SLOW((thr),(h)) +#define DUK_HCOMPFUNC_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HCOMPFUNC_DECREF(thr,h) DUK_HOBJECT_DECREF_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HCOMPFUNC_DECREF_NORZ(thr,h) DUK_HOBJECT_DECREF_NORZ_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HNATFUNC_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HNATFUNC_DECREF(thr,h) DUK_HOBJECT_DECREF_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HNATFUNC_DECREF_NORZ(thr,h) DUK_HOBJECT_DECREF_NORZ_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HBUFOBJ_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HBUFOBJ_DECREF(thr,h) DUK_HOBJECT_DECREF_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HBUFOB_DECREF_NORZ(thr,h) DUK_HOBJECT_DECREF_NORZ_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HTHREAD_INCREF(thr,h) DUK_HEAPHDR_INCREF((thr),(duk_heaphdr *) &(h)->obj) +#define DUK_HTHREAD_DECREF(thr,h) DUK_HOBJECT_DECREF_SLOW((thr),(duk_hobject *) &(h)->obj) +#define DUK_HTHREAD_DECREF_NORZ(thr,h) DUK_HOBJECT_DECREF_NORZ_SLOW((thr),(duk_hobject *) &(h)->obj) +#endif + +/* Convenience for some situations; the above macros don't allow NULLs + * for performance reasons. Macros cover only actually needed cases. + */ +#define DUK_HEAPHDR_INCREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HEAPHDR_INCREF((thr), (duk_heaphdr *) (h)); \ + } \ + } while (0) +#define DUK_HEAPHDR_DECREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HEAPHDR_DECREF((thr), (duk_heaphdr *) (h)); \ + } \ + } while (0) +#define DUK_HEAPHDR_DECREF_NORZ_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HEAPHDR_DECREF_NORZ((thr), (duk_heaphdr *) (h)); \ + } \ + } while (0) +#define DUK_HOBJECT_INCREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HOBJECT_INCREF((thr), (h)); \ + } \ + } while (0) +#define DUK_HOBJECT_DECREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HOBJECT_DECREF((thr), (h)); \ + } \ + } while (0) +#define DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HOBJECT_DECREF_NORZ((thr), (h)); \ + } \ + } while (0) +#define DUK_HBUFFER_INCREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HBUFFER_INCREF((thr), (h)); \ + } \ + } while (0) +#define DUK_HBUFFER_DECREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HBUFFER_DECREF((thr), (h)); \ + } \ + } while (0) +#define DUK_HBUFFER_DECREF_NORZ_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HBUFFER_DECREF_NORZ((thr), (h)); \ + } \ + } while (0) +#define DUK_HTHREAD_INCREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HTHREAD_INCREF((thr), (h)); \ + } \ + } while (0) +#define DUK_HTHREAD_DECREF_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HTHREAD_DECREF((thr), (h)); \ + } \ + } while (0) +#define DUK_HTHREAD_DECREF_NORZ_ALLOWNULL(thr,h) do { \ + if ((h) != NULL) { \ + DUK_HTHREAD_DECREF_NORZ((thr), (h)); \ + } \ + } while (0) + +/* Called after one or more DECREF NORZ calls to handle pending side effects. + * At present DECREF NORZ does freeing inline but doesn't execute finalizers, + * so these macros check for pending finalizers and execute them. The FAST + * variant is performance critical. + */ +#if defined(DUK_USE_FINALIZER_SUPPORT) +#define DUK_REFZERO_CHECK_FAST(thr) do { \ + duk_refzero_check_fast((thr)); \ + } while (0) +#define DUK_REFZERO_CHECK_SLOW(thr) do { \ + duk_refzero_check_slow((thr)); \ + } while (0) +#else /* DUK_USE_FINALIZER_SUPPORT */ +#define DUK_REFZERO_CHECK_FAST(thr) do { } while (0) +#define DUK_REFZERO_CHECK_SLOW(thr) do { } while (0) +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +/* + * Macros to set a duk_tval and update refcount of the target (decref the + * old value and incref the new value if necessary). This is both performance + * and footprint critical; any changes made should be measured for size/speed. + */ + +#define DUK_TVAL_SET_UNDEFINED_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_UNDEFINED(tv__dst); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_UNDEFINED(tv__dst); \ + DUK_TVAL_DECREF_NORZ((thr), &tv__tmp); \ + } while (0) + +#define DUK_TVAL_SET_UNUSED_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_UNUSED(tv__dst); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_NULL_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_NULL(tv__dst); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_BOOLEAN_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_BOOLEAN(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_NUMBER_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_NUMBER(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#define DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_NUMBER_CHKFAST_FAST(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#define DUK_TVAL_SET_DOUBLE_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_DOUBLE(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#define DUK_TVAL_SET_NAN_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_NAN(tv__dst); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_SET_I48_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_I48(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#define DUK_TVAL_SET_I32_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_I32(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#define DUK_TVAL_SET_U32_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_U32(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) +#else +#define DUK_TVAL_SET_DOUBLE_CAST_UPDREF(thr,tvptr_dst,newval) \ + DUK_TVAL_SET_DOUBLE_UPDREF((thr), (tvptr_dst), (duk_double_t) (newval)) +#endif /* DUK_USE_FASTINT */ + +#define DUK_TVAL_SET_LIGHTFUNC_UPDREF_ALT0(thr,tvptr_dst,lf_v,lf_fp,lf_flags) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_LIGHTFUNC(tv__dst, (lf_v), (lf_fp), (lf_flags)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_STRING_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_STRING(tv__dst, (newval)); \ + DUK_HSTRING_INCREF((thr), (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_OBJECT_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_OBJECT(tv__dst, (newval)); \ + DUK_HOBJECT_INCREF((thr), (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_BUFFER_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_BUFFER(tv__dst, (newval)); \ + DUK_HBUFFER_INCREF((thr), (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +#define DUK_TVAL_SET_POINTER_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; duk_tval tv__tmp; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_POINTER(tv__dst, (newval)); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +/* DUK_TVAL_SET_TVAL_UPDREF() is used a lot in executor, property lookups, + * etc, so it's very important for performance. Measure when changing. + * + * NOTE: the source and destination duk_tval pointers may be the same, and + * the macros MUST deal with that correctly. + */ + +/* Original idiom used, minimal code size. */ +#define DUK_TVAL_SET_TVAL_UPDREF_ALT0(thr,tvptr_dst,tvptr_src) do { \ + duk_tval *tv__dst, *tv__src; duk_tval tv__tmp; \ + tv__dst = (tvptr_dst); tv__src = (tvptr_src); \ + DUK_TVAL_SET_TVAL(&tv__tmp, tv__dst); \ + DUK_TVAL_SET_TVAL(tv__dst, tv__src); \ + DUK_TVAL_INCREF((thr), tv__src); \ + DUK_TVAL_DECREF((thr), &tv__tmp); /* side effects */ \ + } while (0) + +/* Faster alternative: avoid making a temporary copy of tvptr_dst and use + * fast incref/decref macros. + */ +#define DUK_TVAL_SET_TVAL_UPDREF_ALT1(thr,tvptr_dst,tvptr_src) do { \ + duk_tval *tv__dst, *tv__src; duk_heaphdr *h__obj; \ + tv__dst = (tvptr_dst); tv__src = (tvptr_src); \ + DUK_TVAL_INCREF_FAST((thr), tv__src); \ + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv__dst)) { \ + h__obj = DUK_TVAL_GET_HEAPHDR(tv__dst); \ + DUK_ASSERT(h__obj != NULL); \ + DUK_TVAL_SET_TVAL(tv__dst, tv__src); \ + DUK_HEAPHDR_DECREF_FAST((thr), h__obj); /* side effects */ \ + } else { \ + DUK_TVAL_SET_TVAL(tv__dst, tv__src); \ + } \ + } while (0) + +/* XXX: no optimized variants yet */ +#define DUK_TVAL_SET_UNDEFINED_UPDREF DUK_TVAL_SET_UNDEFINED_UPDREF_ALT0 +#define DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ_ALT0 +#define DUK_TVAL_SET_UNUSED_UPDREF DUK_TVAL_SET_UNUSED_UPDREF_ALT0 +#define DUK_TVAL_SET_NULL_UPDREF DUK_TVAL_SET_NULL_UPDREF_ALT0 +#define DUK_TVAL_SET_BOOLEAN_UPDREF DUK_TVAL_SET_BOOLEAN_UPDREF_ALT0 +#define DUK_TVAL_SET_NUMBER_UPDREF DUK_TVAL_SET_NUMBER_UPDREF_ALT0 +#define DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF_ALT0 +#define DUK_TVAL_SET_DOUBLE_UPDREF DUK_TVAL_SET_DOUBLE_UPDREF_ALT0 +#define DUK_TVAL_SET_NAN_UPDREF DUK_TVAL_SET_NAN_UPDREF_ALT0 +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_SET_I48_UPDREF DUK_TVAL_SET_I48_UPDREF_ALT0 +#define DUK_TVAL_SET_I32_UPDREF DUK_TVAL_SET_I32_UPDREF_ALT0 +#define DUK_TVAL_SET_U32_UPDREF DUK_TVAL_SET_U32_UPDREF_ALT0 +#else +#define DUK_TVAL_SET_I48_UPDREF DUK_TVAL_SET_DOUBLE_CAST_UPDREF /* XXX: fast int-to-double */ +#define DUK_TVAL_SET_I32_UPDREF DUK_TVAL_SET_DOUBLE_CAST_UPDREF +#define DUK_TVAL_SET_U32_UPDREF DUK_TVAL_SET_DOUBLE_CAST_UPDREF +#endif /* DUK_USE_FASTINT */ +#define DUK_TVAL_SET_FASTINT_UPDREF DUK_TVAL_SET_I48_UPDREF /* convenience */ +#define DUK_TVAL_SET_LIGHTFUNC_UPDREF DUK_TVAL_SET_LIGHTFUNC_UPDREF_ALT0 +#define DUK_TVAL_SET_STRING_UPDREF DUK_TVAL_SET_STRING_UPDREF_ALT0 +#define DUK_TVAL_SET_OBJECT_UPDREF DUK_TVAL_SET_OBJECT_UPDREF_ALT0 +#define DUK_TVAL_SET_BUFFER_UPDREF DUK_TVAL_SET_BUFFER_UPDREF_ALT0 +#define DUK_TVAL_SET_POINTER_UPDREF DUK_TVAL_SET_POINTER_UPDREF_ALT0 + +#if defined(DUK_USE_FAST_REFCOUNT_DEFAULT) +/* Optimized for speed. */ +#define DUK_TVAL_SET_TVAL_UPDREF DUK_TVAL_SET_TVAL_UPDREF_ALT1 +#define DUK_TVAL_SET_TVAL_UPDREF_FAST DUK_TVAL_SET_TVAL_UPDREF_ALT1 +#define DUK_TVAL_SET_TVAL_UPDREF_SLOW DUK_TVAL_SET_TVAL_UPDREF_ALT0 +#else +/* Optimized for size. */ +#define DUK_TVAL_SET_TVAL_UPDREF DUK_TVAL_SET_TVAL_UPDREF_ALT0 +#define DUK_TVAL_SET_TVAL_UPDREF_FAST DUK_TVAL_SET_TVAL_UPDREF_ALT0 +#define DUK_TVAL_SET_TVAL_UPDREF_SLOW DUK_TVAL_SET_TVAL_UPDREF_ALT0 +#endif + +#else /* DUK_USE_REFERENCE_COUNTING */ + +#define DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv) 0 +#define DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE(h) 0 + +#define DUK_TVAL_INCREF_FAST(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_DECREF_FAST(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_DECREF_NORZ_FAST(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_INCREF_SLOW(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_DECREF_SLOW(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_DECREF_NORZ_SLOW(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_INCREF(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_DECREF(thr,v) do {} while (0) /* nop */ +#define DUK_TVAL_DECREF_NORZ(thr,v) do {} while (0) /* nop */ +#define DUK_HEAPHDR_INCREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_DECREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_DECREF_NORZ_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_INCREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_DECREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_DECREF_NORZ_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HEAPHDR_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_INCREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_DECREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_DECREF_NORZ_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_INCREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_DECREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_DECREF_NORZ_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HSTRING_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_INCREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_NORZ_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_INCREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_NORZ_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_INCREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_NORZ_FAST(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_INCREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_NORZ_SLOW(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_NORZ(thr,h) do {} while (0) /* nop */ + +#define DUK_HCOMPFUNC_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HCOMPFUNC_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HCOMPFUNC_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HNATFUNC_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HNATFUNC_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HNATFUNC_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFOBJ_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFOBJ_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFOBJ_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HTHREAD_INCREF(thr,h) do {} while (0) /* nop */ +#define DUK_HTHREAD_DECREF(thr,h) do {} while (0) /* nop */ +#define DUK_HTHREAD_DECREF_NORZ(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_INCREF_ALLOWNULL(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_ALLOWNULL(thr,h) do {} while (0) /* nop */ +#define DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_INCREF_ALLOWNULL(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_ALLOWNULL(thr,h) do {} while (0) /* nop */ +#define DUK_HBUFFER_DECREF_NORZ_ALLOWNULL(thr,h) do {} while (0) /* nop */ + +#define DUK_REFZERO_CHECK_FAST(thr) do {} while (0) /* nop */ +#define DUK_REFZERO_CHECK_SLOW(thr) do {} while (0) /* nop */ + +#define DUK_TVAL_SET_UNDEFINED_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_UNDEFINED(tv__dst); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_UNUSED_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_UNUSED(tv__dst); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_NULL_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_NULL(tv__dst); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_BOOLEAN_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_BOOLEAN(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_NUMBER_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_NUMBER(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) +#define DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_NUMBER_CHKFAST_FAST(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) +#define DUK_TVAL_SET_DOUBLE_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_DOUBLE(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) +#define DUK_TVAL_SET_NAN_UPDREF_ALT0(thr,tvptr_dst) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_NAN(tv__dst); \ + DUK_UNREF((thr)); \ + } while (0) +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_SET_I48_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_I48(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) +#define DUK_TVAL_SET_I32_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_I32(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) +#define DUK_TVAL_SET_U32_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_U32(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) +#else +#define DUK_TVAL_SET_DOUBLE_CAST_UPDREF(thr,tvptr_dst,newval) \ + DUK_TVAL_SET_DOUBLE_UPDREF((thr), (tvptr_dst), (duk_double_t) (newval)) +#endif /* DUK_USE_FASTINT */ + +#define DUK_TVAL_SET_LIGHTFUNC_UPDREF_ALT0(thr,tvptr_dst,lf_v,lf_fp,lf_flags) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_LIGHTFUNC(tv__dst, (lf_v), (lf_fp), (lf_flags)); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_STRING_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_STRING(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_OBJECT_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_OBJECT(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_BUFFER_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_BUFFER(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_POINTER_UPDREF_ALT0(thr,tvptr_dst,newval) do { \ + duk_tval *tv__dst; tv__dst = (tvptr_dst); \ + DUK_TVAL_SET_POINTER(tv__dst, (newval)); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_TVAL_UPDREF_ALT0(thr,tvptr_dst,tvptr_src) do { \ + duk_tval *tv__dst, *tv__src; \ + tv__dst = (tvptr_dst); tv__src = (tvptr_src); \ + DUK_TVAL_SET_TVAL(tv__dst, tv__src); \ + DUK_UNREF((thr)); \ + } while (0) + +#define DUK_TVAL_SET_UNDEFINED_UPDREF DUK_TVAL_SET_UNDEFINED_UPDREF_ALT0 +#define DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ DUK_TVAL_SET_UNDEFINED_UPDREF_ALT0 +#define DUK_TVAL_SET_UNUSED_UPDREF DUK_TVAL_SET_UNUSED_UPDREF_ALT0 +#define DUK_TVAL_SET_NULL_UPDREF DUK_TVAL_SET_NULL_UPDREF_ALT0 +#define DUK_TVAL_SET_BOOLEAN_UPDREF DUK_TVAL_SET_BOOLEAN_UPDREF_ALT0 +#define DUK_TVAL_SET_NUMBER_UPDREF DUK_TVAL_SET_NUMBER_UPDREF_ALT0 +#define DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF_ALT0 +#define DUK_TVAL_SET_DOUBLE_UPDREF DUK_TVAL_SET_DOUBLE_UPDREF_ALT0 +#define DUK_TVAL_SET_NAN_UPDREF DUK_TVAL_SET_NAN_UPDREF_ALT0 +#if defined(DUK_USE_FASTINT) +#define DUK_TVAL_SET_I48_UPDREF DUK_TVAL_SET_I48_UPDREF_ALT0 +#define DUK_TVAL_SET_I32_UPDREF DUK_TVAL_SET_I32_UPDREF_ALT0 +#define DUK_TVAL_SET_U32_UPDREF DUK_TVAL_SET_U32_UPDREF_ALT0 +#else +#define DUK_TVAL_SET_I48_UPDREF DUK_TVAL_SET_DOUBLE_CAST_UPDREF /* XXX: fast-int-to-double */ +#define DUK_TVAL_SET_I32_UPDREF DUK_TVAL_SET_DOUBLE_CAST_UPDREF +#define DUK_TVAL_SET_U32_UPDREF DUK_TVAL_SET_DOUBLE_CAST_UPDREF +#endif /* DUK_USE_FASTINT */ +#define DUK_TVAL_SET_FASTINT_UPDREF DUK_TVAL_SET_I48_UPDREF /* convenience */ +#define DUK_TVAL_SET_LIGHTFUNC_UPDREF DUK_TVAL_SET_LIGHTFUNC_UPDREF_ALT0 +#define DUK_TVAL_SET_STRING_UPDREF DUK_TVAL_SET_STRING_UPDREF_ALT0 +#define DUK_TVAL_SET_OBJECT_UPDREF DUK_TVAL_SET_OBJECT_UPDREF_ALT0 +#define DUK_TVAL_SET_BUFFER_UPDREF DUK_TVAL_SET_BUFFER_UPDREF_ALT0 +#define DUK_TVAL_SET_POINTER_UPDREF DUK_TVAL_SET_POINTER_UPDREF_ALT0 + +#define DUK_TVAL_SET_TVAL_UPDREF DUK_TVAL_SET_TVAL_UPDREF_ALT0 +#define DUK_TVAL_SET_TVAL_UPDREF_FAST DUK_TVAL_SET_TVAL_UPDREF_ALT0 +#define DUK_TVAL_SET_TVAL_UPDREF_SLOW DUK_TVAL_SET_TVAL_UPDREF_ALT0 + +#endif /* DUK_USE_REFERENCE_COUNTING */ + +/* + * Some convenience macros that don't have optimized implementations now. + */ + +#define DUK_TVAL_SET_TVAL_UPDREF_NORZ(thr,tv_dst,tv_src) do { \ + duk_hthread *duk__thr = (thr); \ + duk_tval *duk__dst = (tv_dst); \ + duk_tval *duk__src = (tv_src); \ + DUK_UNREF(duk__thr); \ + DUK_TVAL_DECREF_NORZ(thr, duk__dst); \ + DUK_TVAL_SET_TVAL(duk__dst, duk__src); \ + DUK_TVAL_INCREF(thr, duk__dst); \ + } while (0) + +#define DUK_TVAL_SET_U32_UPDREF_NORZ(thr,tv_dst,val) do { \ + duk_hthread *duk__thr = (thr); \ + duk_tval *duk__dst = (tv_dst); \ + duk_uint32_t duk__val = (duk_uint32_t) (val); \ + DUK_UNREF(duk__thr); \ + DUK_TVAL_DECREF_NORZ(thr, duk__dst); \ + DUK_TVAL_SET_U32(duk__dst, duk__val); \ + } while (0) + +/* + * Prototypes + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL_DECL void duk_refzero_check_slow(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_refzero_check_fast(duk_hthread *thr); +#endif +DUK_INTERNAL_DECL void duk_heaphdr_refcount_finalize_norz(duk_heap *heap, duk_heaphdr *hdr); +DUK_INTERNAL_DECL void duk_hobject_refcount_finalize_norz(duk_heap *heap, duk_hobject *h); +#if 0 /* Not needed: fast path handles inline; slow path uses duk_heaphdr_decref() which is needed anyway. */ +DUK_INTERNAL_DECL void duk_hstring_decref(duk_hthread *thr, duk_hstring *h); +DUK_INTERNAL_DECL void duk_hstring_decref_norz(duk_hthread *thr, duk_hstring *h); +DUK_INTERNAL_DECL void duk_hbuffer_decref(duk_hthread *thr, duk_hbuffer *h); +DUK_INTERNAL_DECL void duk_hbuffer_decref_norz(duk_hthread *thr, duk_hbuffer *h); +DUK_INTERNAL_DECL void duk_hobject_decref(duk_hthread *thr, duk_hobject *h); +DUK_INTERNAL_DECL void duk_hobject_decref_norz(duk_hthread *thr, duk_hobject *h); +#endif +DUK_INTERNAL_DECL void duk_heaphdr_refzero(duk_hthread *thr, duk_heaphdr *h); +DUK_INTERNAL_DECL void duk_heaphdr_refzero_norz(duk_hthread *thr, duk_heaphdr *h); +#if defined(DUK_USE_FAST_REFCOUNT_DEFAULT) +DUK_INTERNAL_DECL void duk_hstring_refzero(duk_hthread *thr, duk_hstring *h); /* no 'norz' variant */ +DUK_INTERNAL_DECL void duk_hbuffer_refzero(duk_hthread *thr, duk_hbuffer *h); /* no 'norz' variant */ +DUK_INTERNAL_DECL void duk_hobject_refzero(duk_hthread *thr, duk_hobject *h); +DUK_INTERNAL_DECL void duk_hobject_refzero_norz(duk_hthread *thr, duk_hobject *h); +#else +DUK_INTERNAL_DECL void duk_tval_incref(duk_tval *tv); +DUK_INTERNAL_DECL void duk_tval_decref(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL void duk_tval_decref_norz(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL void duk_heaphdr_incref(duk_heaphdr *h); +DUK_INTERNAL_DECL void duk_heaphdr_decref(duk_hthread *thr, duk_heaphdr *h); +DUK_INTERNAL_DECL void duk_heaphdr_decref_norz(duk_hthread *thr, duk_heaphdr *h); +#endif +#else /* DUK_USE_REFERENCE_COUNTING */ +/* no refcounting */ +#endif /* DUK_USE_REFERENCE_COUNTING */ + +#endif /* DUK_REFCOUNT_H_INCLUDED */ +/* #include duk_api_internal.h */ +#line 1 "duk_api_internal.h" +/* + * Internal API calls which have (stack and other) semantics similar + * to the public API. + */ + +#if !defined(DUK_API_INTERNAL_H_INCLUDED) +#define DUK_API_INTERNAL_H_INCLUDED + +/* Inline macro helpers. */ +#if defined(DUK_USE_PREFER_SIZE) +#define DUK_INLINE_PERF +#define DUK_ALWAYS_INLINE_PERF +#define DUK_NOINLINE_PERF +#else +#define DUK_INLINE_PERF DUK_INLINE +#define DUK_ALWAYS_INLINE_PERF DUK_ALWAYS_INLINE +#define DUK_NOINLINE_PERF DUK_NOINLINE +#endif + +/* Inline macro helpers, for bytecode executor. */ +#if defined(DUK_USE_EXEC_PREFER_SIZE) +#define DUK_EXEC_INLINE_PERF +#define DUK_EXEC_ALWAYS_INLINE_PERF +#define DUK_EXEC_NOINLINE_PERF +#else +#define DUK_EXEC_INLINE_PERF DUK_INLINE +#define DUK_EXEC_ALWAYS_INLINE_PERF DUK_ALWAYS_INLINE +#define DUK_EXEC_NOINLINE_PERF DUK_NOINLINE +#endif + +/* duk_push_sprintf constants */ +#define DUK_PUSH_SPRINTF_INITIAL_SIZE 256L +#define DUK_PUSH_SPRINTF_SANITY_LIMIT (1L * 1024L * 1024L * 1024L) + +/* Flag ORed to err_code to indicate __FILE__ / __LINE__ is not + * blamed as source of error for error fileName / lineNumber. + */ +#define DUK_ERRCODE_FLAG_NOBLAME_FILELINE (1L << 24) + +/* Current convention is to use duk_size_t for value stack sizes and global indices, + * and duk_idx_t for local frame indices. + */ +DUK_INTERNAL_DECL void duk_valstack_grow_check_throw(duk_hthread *thr, duk_size_t min_bytes); +DUK_INTERNAL_DECL duk_bool_t duk_valstack_grow_check_nothrow(duk_hthread *thr, duk_size_t min_bytes); +DUK_INTERNAL_DECL void duk_valstack_shrink_check_nothrow(duk_hthread *thr, duk_bool_t snug); + +DUK_INTERNAL_DECL void duk_copy_tvals_incref(duk_hthread *thr, duk_tval *tv_dst, duk_tval *tv_src, duk_size_t count); + +DUK_INTERNAL_DECL duk_tval *duk_reserve_gap(duk_hthread *thr, duk_idx_t idx_base, duk_idx_t count); + +DUK_INTERNAL_DECL void duk_set_top_unsafe(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL void duk_set_top_and_wipe(duk_hthread *thr, duk_idx_t top, duk_idx_t idx_wipe_start); + +DUK_INTERNAL_DECL void duk_dup_0(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_dup_1(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_dup_2(duk_hthread *thr); +/* duk_dup_m1() would be same as duk_dup_top() */ +DUK_INTERNAL_DECL void duk_dup_m2(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_dup_m3(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_dup_m4(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_remove_unsafe(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL void duk_remove_m2(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_remove_n(duk_hthread *thr, duk_idx_t idx, duk_idx_t count); +DUK_INTERNAL_DECL void duk_remove_n_unsafe(duk_hthread *thr, duk_idx_t idx, duk_idx_t count); + +DUK_INTERNAL_DECL duk_int_t duk_get_type_tval(duk_tval *tv); +DUK_INTERNAL_DECL duk_uint_t duk_get_type_mask_tval(duk_tval *tv); + +#if defined(DUK_USE_VERBOSE_ERRORS) && defined(DUK_USE_PARANOID_ERRORS) +DUK_INTERNAL_DECL const char *duk_get_type_name(duk_hthread *thr, duk_idx_t idx); +#endif +DUK_INTERNAL_DECL duk_small_uint_t duk_get_class_number(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_tval *duk_get_tval(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_tval *duk_get_tval_or_unused(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_tval *duk_require_tval(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL void duk_push_tval(duk_hthread *thr, duk_tval *tv); + +/* Push the current 'this' binding; throw TypeError if binding is not object + * coercible (CheckObjectCoercible). + */ +DUK_INTERNAL_DECL void duk_push_this_check_object_coercible(duk_hthread *thr); + +/* duk_push_this() + CheckObjectCoercible() + duk_to_object() */ +DUK_INTERNAL_DECL duk_hobject *duk_push_this_coercible_to_object(duk_hthread *thr); + +/* duk_push_this() + CheckObjectCoercible() + duk_to_string() */ +DUK_INTERNAL_DECL duk_hstring *duk_push_this_coercible_to_string(duk_hthread *thr); + +DUK_INTERNAL_DECL duk_hstring *duk_push_uint_to_hstring(duk_hthread *thr, duk_uint_t i); + +/* Get a borrowed duk_tval pointer to the current 'this' binding. Caller must + * make sure there's an active callstack entry. Note that the returned pointer + * is unstable with regards to side effects. + */ +DUK_INTERNAL_DECL duk_tval *duk_get_borrowed_this_tval(duk_hthread *thr); + +/* XXX: add fastint support? */ +#define duk_push_u64(thr,val) \ + duk_push_number((thr), (duk_double_t) (val)) +#define duk_push_i64(thr,val) \ + duk_push_number((thr), (duk_double_t) (val)) + +/* duk_push_(u)int() is guaranteed to support at least (un)signed 32-bit range */ +#define duk_push_u32(thr,val) \ + duk_push_uint((thr), (duk_uint_t) (val)) +#define duk_push_i32(thr,val) \ + duk_push_int((thr), (duk_int_t) (val)) + +/* sometimes stack and array indices need to go on the stack */ +#define duk_push_idx(thr,val) \ + duk_push_int((thr), (duk_int_t) (val)) +#define duk_push_uarridx(thr,val) \ + duk_push_uint((thr), (duk_uint_t) (val)) +#define duk_push_size_t(thr,val) \ + duk_push_uint((thr), (duk_uint_t) (val)) /* XXX: assumed to fit for now */ + +DUK_INTERNAL_DECL duk_bool_t duk_is_string_notsymbol(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_bool_t duk_is_callable_tval(duk_hthread *thr, duk_tval *tv); + +DUK_INTERNAL_DECL duk_bool_t duk_is_bare_object(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_hstring *duk_get_hstring(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hstring *duk_get_hstring_notsymbol(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL const char *duk_get_string_notsymbol(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hobject *duk_get_hobject(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hbuffer *duk_get_hbuffer(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hthread *duk_get_hthread(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hcompfunc *duk_get_hcompfunc(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hnatfunc *duk_get_hnatfunc(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL void *duk_get_buffer_data_raw(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_len, duk_bool_t throw_flag, duk_bool_t *out_isbuffer); + +DUK_INTERNAL_DECL duk_hobject *duk_get_hobject_with_class(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t classnum); + +DUK_INTERNAL_DECL duk_hobject *duk_get_hobject_promote_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask); +DUK_INTERNAL_DECL duk_hobject *duk_require_hobject_promote_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask); +DUK_INTERNAL_DECL duk_hobject *duk_require_hobject_accept_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask); +#define duk_require_hobject_promote_lfunc(thr,idx) \ + duk_require_hobject_promote_mask((thr), (idx), DUK_TYPE_MASK_LIGHTFUNC) +#define duk_get_hobject_promote_lfunc(thr,idx) \ + duk_get_hobject_promote_mask((thr), (idx), DUK_TYPE_MASK_LIGHTFUNC) + +#if 0 /*unused*/ +DUK_INTERNAL_DECL void *duk_get_voidptr(duk_hthread *thr, duk_idx_t idx); +#endif + +DUK_INTERNAL_DECL duk_hstring *duk_known_hstring(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hobject *duk_known_hobject(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hbuffer *duk_known_hbuffer(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hcompfunc *duk_known_hcompfunc(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hnatfunc *duk_known_hnatfunc(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_double_t duk_to_number_tval(duk_hthread *thr, duk_tval *tv); + +DUK_INTERNAL_DECL duk_hstring *duk_to_hstring(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hstring *duk_to_hstring_m1(duk_hthread *thr); +DUK_INTERNAL_DECL duk_hstring *duk_to_hstring_acceptsymbol(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_hobject *duk_to_hobject(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_double_t duk_to_number_m1(duk_hthread *thr); +DUK_INTERNAL_DECL duk_double_t duk_to_number_m2(duk_hthread *thr); + +DUK_INTERNAL_DECL duk_bool_t duk_to_boolean_top_pop(duk_hthread *thr); + +#if defined(DUK_USE_DEBUGGER_SUPPORT) /* only needed by debugger for now */ +DUK_INTERNAL_DECL duk_hstring *duk_safe_to_hstring(duk_hthread *thr, duk_idx_t idx); +#endif +DUK_INTERNAL_DECL void duk_push_class_string_tval(duk_hthread *thr, duk_tval *tv, duk_bool_t avoid_side_effects); + +DUK_INTERNAL_DECL duk_int_t duk_to_int_clamped_raw(duk_hthread *thr, duk_idx_t idx, duk_int_t minval, duk_int_t maxval, duk_bool_t *out_clamped); /* out_clamped=NULL, RangeError if outside range */ +DUK_INTERNAL_DECL duk_int_t duk_to_int_clamped(duk_hthread *thr, duk_idx_t idx, duk_int_t minval, duk_int_t maxval); +DUK_INTERNAL_DECL duk_int_t duk_to_int_check_range(duk_hthread *thr, duk_idx_t idx, duk_int_t minval, duk_int_t maxval); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL_DECL duk_uint8_t duk_to_uint8clamped(duk_hthread *thr, duk_idx_t idx); +#endif +DUK_INTERNAL_DECL duk_hstring *duk_to_property_key_hstring(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_hstring *duk_require_hstring(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hstring *duk_require_hstring_notsymbol(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL const char *duk_require_lstring_notsymbol(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len); +DUK_INTERNAL_DECL const char *duk_require_string_notsymbol(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hobject *duk_require_hobject(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hbuffer *duk_require_hbuffer(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hthread *duk_require_hthread(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hcompfunc *duk_require_hcompfunc(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL duk_hnatfunc *duk_require_hnatfunc(duk_hthread *thr, duk_idx_t idx); + +DUK_INTERNAL_DECL duk_hobject *duk_require_hobject_with_class(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t classnum); + +DUK_INTERNAL_DECL void duk_push_hstring(duk_hthread *thr, duk_hstring *h); +DUK_INTERNAL_DECL void duk_push_hstring_stridx(duk_hthread *thr, duk_small_uint_t stridx); +DUK_INTERNAL_DECL void duk_push_hstring_empty(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_push_hobject(duk_hthread *thr, duk_hobject *h); +DUK_INTERNAL_DECL void duk_push_hbuffer(duk_hthread *thr, duk_hbuffer *h); +#define duk_push_hthread(thr,h) \ + duk_push_hobject((thr), (duk_hobject *) (h)) +#define duk_push_hnatfunc(thr,h) \ + duk_push_hobject((thr), (duk_hobject *) (h)) +DUK_INTERNAL_DECL void duk_push_hobject_bidx(duk_hthread *thr, duk_small_int_t builtin_idx); +DUK_INTERNAL_DECL duk_hobject *duk_push_object_helper(duk_hthread *thr, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx); +DUK_INTERNAL_DECL duk_hobject *duk_push_object_helper_proto(duk_hthread *thr, duk_uint_t hobject_flags_and_class, duk_hobject *proto); +DUK_INTERNAL_DECL duk_hcompfunc *duk_push_hcompfunc(duk_hthread *thr); +DUK_INTERNAL_DECL duk_hboundfunc *duk_push_hboundfunc(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_push_c_function_builtin(duk_hthread *thr, duk_c_function func, duk_int_t nargs); +DUK_INTERNAL_DECL void duk_push_c_function_builtin_noconstruct(duk_hthread *thr, duk_c_function func, duk_int_t nargs); + +/* XXX: duk_push_harray() and duk_push_hcompfunc() are inconsistent with + * duk_push_hobject() etc which don't create a new value. + */ +DUK_INTERNAL_DECL duk_harray *duk_push_harray(duk_hthread *thr); +DUK_INTERNAL_DECL duk_harray *duk_push_harray_with_size(duk_hthread *thr, duk_uint32_t size); +DUK_INTERNAL_DECL duk_tval *duk_push_harray_with_size_outptr(duk_hthread *thr, duk_uint32_t size); + +DUK_INTERNAL_DECL void duk_push_string_funcptr(duk_hthread *thr, duk_uint8_t *ptr, duk_size_t sz); +DUK_INTERNAL_DECL void duk_push_lightfunc_name_raw(duk_hthread *thr, duk_c_function func, duk_small_uint_t lf_flags); +DUK_INTERNAL_DECL void duk_push_lightfunc_name(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL void duk_push_lightfunc_tostring(duk_hthread *thr, duk_tval *tv); +#if 0 /* not used yet */ +DUK_INTERNAL_DECL void duk_push_hnatfunc_name(duk_hthread *thr, duk_hnatfunc *h); +#endif +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL_DECL duk_hbufobj *duk_push_bufobj_raw(duk_hthread *thr, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx); +#endif + +DUK_INTERNAL_DECL void *duk_push_fixed_buffer_nozero(duk_hthread *thr, duk_size_t len); +DUK_INTERNAL_DECL void *duk_push_fixed_buffer_zero(duk_hthread *thr, duk_size_t len); + +DUK_INTERNAL_DECL const char *duk_push_string_readable(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL const char *duk_push_string_tval_readable(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL const char *duk_push_string_tval_readable_error(duk_hthread *thr, duk_tval *tv); + +/* The duk_xxx_prop_stridx_short() variants expect their arguments to be short + * enough to be packed into a single 32-bit integer argument. Argument limits + * vary per call; typically 16 bits are assigned to the signed value stack index + * and the stridx. In practice these work well for footprint with constant + * arguments and such call sites are also easiest to verify to be correct. + */ + +DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx); /* [] -> [val] */ +DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args); +#define duk_get_prop_stridx_short(thr,obj_idx,stridx) \ + (DUK_ASSERT_EXPR((duk_int_t) (obj_idx) >= -0x8000L && (duk_int_t) (obj_idx) <= 0x7fffL), \ + DUK_ASSERT_EXPR((duk_int_t) (stridx) >= 0 && (duk_int_t) (stridx) <= 0xffffL), \ + duk_get_prop_stridx_short_raw((thr), (((duk_uint_t) (obj_idx)) << 16) + ((duk_uint_t) (stridx)))) +DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx_boolean(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx, duk_bool_t *out_has_prop); /* [] -> [] */ + +DUK_INTERNAL_DECL duk_bool_t duk_xget_owndataprop(duk_hthread *thr, duk_idx_t obj_idx); +DUK_INTERNAL_DECL duk_bool_t duk_xget_owndataprop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx); +DUK_INTERNAL_DECL duk_bool_t duk_xget_owndataprop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args); +#define duk_xget_owndataprop_stridx_short(thr,obj_idx,stridx) \ + (DUK_ASSERT_EXPR((duk_int_t) (obj_idx) >= -0x8000L && (duk_int_t) (obj_idx) <= 0x7fffL), \ + DUK_ASSERT_EXPR((duk_int_t) (stridx) >= 0 && (duk_int_t) (stridx) <= 0xffffL), \ + duk_xget_owndataprop_stridx_short_raw((thr), (((duk_uint_t) (obj_idx)) << 16) + ((duk_uint_t) (stridx)))) + +DUK_INTERNAL_DECL duk_bool_t duk_put_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx); /* [val] -> [] */ +DUK_INTERNAL_DECL duk_bool_t duk_put_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args); +#define duk_put_prop_stridx_short(thr,obj_idx,stridx) \ + (DUK_ASSERT_EXPR((duk_int_t) (obj_idx) >= -0x8000L && (duk_int_t) (obj_idx) <= 0x7fffL), \ + DUK_ASSERT_EXPR((duk_int_t) (stridx) >= 0 && (duk_int_t) (stridx) <= 0xffffL), \ + duk_put_prop_stridx_short_raw((thr), (((duk_uint_t) (obj_idx)) << 16) + ((duk_uint_t) (stridx)))) + +DUK_INTERNAL_DECL duk_bool_t duk_del_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx); /* [] -> [] */ +#if 0 /* Too few call sites to be useful. */ +DUK_INTERNAL_DECL duk_bool_t duk_del_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args); +#define duk_del_prop_stridx_short(thr,obj_idx,stridx) \ + (DUK_ASSERT_EXPR((obj_idx) >= -0x8000L && (obj_idx) <= 0x7fffL), \ + DUK_ASSERT_EXPR((stridx) >= 0 && (stridx) <= 0xffffL), \ + duk_del_prop_stridx_short_raw((thr), (((duk_uint_t) (obj_idx)) << 16) + ((duk_uint_t) (stridx)))) +#endif +#define duk_del_prop_stridx_short(thr,obj_idx,stridx) \ + duk_del_prop_stridx((thr), (obj_idx), (stridx)) + +DUK_INTERNAL_DECL duk_bool_t duk_has_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx); /* [] -> [] */ +#if 0 /* Too few call sites to be useful. */ +DUK_INTERNAL_DECL duk_bool_t duk_has_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args); +#define duk_has_prop_stridx_short(thr,obj_idx,stridx) \ + (DUK_ASSERT_EXPR((obj_idx) >= -0x8000L && (obj_idx) <= 0x7fffL), \ + DUK_ASSERT_EXPR((stridx) >= 0 && (stridx) <= 0xffffL), \ + duk_has_prop_stridx_short_raw((thr), (((duk_uint_t) (obj_idx)) << 16) + ((duk_uint_t) (stridx)))) +#endif +#define duk_has_prop_stridx_short(thr,obj_idx,stridx) \ + duk_has_prop_stridx((thr), (obj_idx), (stridx)) + +DUK_INTERNAL_DECL void duk_xdef_prop(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t desc_flags); /* [key val] -> [] */ + +DUK_INTERNAL_DECL void duk_xdef_prop_index(duk_hthread *thr, duk_idx_t obj_idx, duk_uarridx_t arr_idx, duk_small_uint_t desc_flags); /* [val] -> [] */ + +/* XXX: Because stridx and desc_flags have a limited range, this call could + * always pack stridx and desc_flags into a single argument. + */ +DUK_INTERNAL_DECL void duk_xdef_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx, duk_small_uint_t desc_flags); /* [val] -> [] */ +DUK_INTERNAL_DECL void duk_xdef_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args); +#define duk_xdef_prop_stridx_short(thr,obj_idx,stridx,desc_flags) \ + (DUK_ASSERT_EXPR((duk_int_t) (obj_idx) >= -0x80L && (duk_int_t) (obj_idx) <= 0x7fL), \ + DUK_ASSERT_EXPR((duk_int_t) (stridx) >= 0 && (duk_int_t) (stridx) <= 0xffffL), \ + DUK_ASSERT_EXPR((duk_int_t) (desc_flags) >= 0 && (duk_int_t) (desc_flags) <= 0xffL), \ + duk_xdef_prop_stridx_short_raw((thr), (((duk_uint_t) (obj_idx)) << 24) + (((duk_uint_t) (stridx)) << 8) + (duk_uint_t) (desc_flags))) + +#define duk_xdef_prop_wec(thr,obj_idx) \ + duk_xdef_prop((thr), (obj_idx), DUK_PROPDESC_FLAGS_WEC) +#define duk_xdef_prop_index_wec(thr,obj_idx,arr_idx) \ + duk_xdef_prop_index((thr), (obj_idx), (arr_idx), DUK_PROPDESC_FLAGS_WEC) +#define duk_xdef_prop_stridx_wec(thr,obj_idx,stridx) \ + duk_xdef_prop_stridx((thr), (obj_idx), (stridx), DUK_PROPDESC_FLAGS_WEC) +#define duk_xdef_prop_stridx_short_wec(thr,obj_idx,stridx) \ + duk_xdef_prop_stridx_short((thr), (obj_idx), (stridx), DUK_PROPDESC_FLAGS_WEC) + +#if 0 /*unused*/ +DUK_INTERNAL_DECL void duk_xdef_prop_stridx_builtin(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx, duk_small_int_t builtin_idx, duk_small_uint_t desc_flags); /* [] -> [] */ +#endif + +DUK_INTERNAL_DECL void duk_xdef_prop_stridx_thrower(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx); /* [] -> [] */ + +DUK_INTERNAL_DECL duk_bool_t duk_get_method_stridx(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t stridx); + +DUK_INTERNAL_DECL void duk_pack(duk_hthread *thr, duk_idx_t count); +DUK_INTERNAL_DECL duk_idx_t duk_unpack_array_like(duk_hthread *thr, duk_idx_t idx); +#if 0 +DUK_INTERNAL_DECL void duk_unpack(duk_hthread *thr); +#endif + +DUK_INTERNAL_DECL void duk_push_symbol_descriptive_string(duk_hthread *thr, duk_hstring *h); + +DUK_INTERNAL_DECL void duk_resolve_nonbound_function(duk_hthread *thr); + +DUK_INTERNAL_DECL duk_idx_t duk_get_top_require_min(duk_hthread *thr, duk_idx_t min_top); +DUK_INTERNAL_DECL duk_idx_t duk_get_top_index_unsafe(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_pop_n_unsafe(duk_hthread *thr, duk_idx_t count); +DUK_INTERNAL_DECL void duk_pop_unsafe(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_pop_2_unsafe(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_pop_3_unsafe(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_pop_n_nodecref_unsafe(duk_hthread *thr, duk_idx_t count); +DUK_INTERNAL_DECL void duk_pop_nodecref_unsafe(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_pop_2_nodecref_unsafe(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_pop_3_nodecref_unsafe(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_pop_undefined(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_compact_m1(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_seal_freeze_raw(duk_hthread *thr, duk_idx_t obj_idx, duk_bool_t is_freeze); + +DUK_INTERNAL_DECL void duk_insert_undefined(duk_hthread *thr, duk_idx_t idx); +DUK_INTERNAL_DECL void duk_insert_undefined_n(duk_hthread *thr, duk_idx_t idx, duk_idx_t count); + +DUK_INTERNAL_DECL void duk_concat_2(duk_hthread *thr); + +DUK_INTERNAL_DECL duk_int_t duk_pcall_method_flags(duk_hthread *thr, duk_idx_t nargs, duk_small_uint_t call_flags); + +#if defined(DUK_USE_SYMBOL_BUILTIN) +DUK_INTERNAL_DECL void duk_to_primitive_ordinary(duk_hthread *thr, duk_idx_t idx, duk_int_t hint); +#endif + +DUK_INTERNAL_DECL void duk_clear_prototype(duk_hthread *thr, duk_idx_t idx); + +/* Raw internal valstack access macros: access is unsafe so call site + * must have a guarantee that the index is valid. When that is the case, + * using these macro results in faster and smaller code than duk_get_tval(). + * Both 'ctx' and 'idx' are evaluted multiple times, but only for asserts. + */ +#define DUK_ASSERT_VALID_NEGIDX(thr,idx) \ + (DUK_ASSERT_EXPR((duk_int_t) (idx) < 0), DUK_ASSERT_EXPR(duk_is_valid_index((thr), (idx)))) +#define DUK_ASSERT_VALID_POSIDX(thr,idx) \ + (DUK_ASSERT_EXPR((duk_int_t) (idx) >= 0), DUK_ASSERT_EXPR(duk_is_valid_index((thr), (idx)))) +#define DUK_GET_TVAL_NEGIDX(thr,idx) \ + (DUK_ASSERT_VALID_NEGIDX((thr),(idx)), ((duk_hthread *) (thr))->valstack_top + (idx)) +#define DUK_GET_TVAL_POSIDX(thr,idx) \ + (DUK_ASSERT_VALID_POSIDX((thr),(idx)), ((duk_hthread *) (thr))->valstack_bottom + (idx)) +#define DUK_GET_HOBJECT_NEGIDX(thr,idx) \ + (DUK_ASSERT_VALID_NEGIDX((thr),(idx)), DUK_TVAL_GET_OBJECT(((duk_hthread *) (thr))->valstack_top + (idx))) +#define DUK_GET_HOBJECT_POSIDX(thr,idx) \ + (DUK_ASSERT_VALID_POSIDX((thr),(idx)), DUK_TVAL_GET_OBJECT(((duk_hthread *) (thr))->valstack_bottom + (idx))) + +#define DUK_GET_THIS_TVAL_PTR(thr) \ + (DUK_ASSERT_EXPR((thr)->valstack_bottom > (thr)->valstack), \ + (thr)->valstack_bottom - 1) + +DUK_INTERNAL_DECL duk_double_t duk_time_get_ecmascript_time(duk_hthread *thr); +DUK_INTERNAL_DECL duk_double_t duk_time_get_ecmascript_time_nofrac(duk_hthread *thr); +DUK_INTERNAL_DECL duk_double_t duk_time_get_monotonic_time(duk_hthread *thr); + +#endif /* DUK_API_INTERNAL_H_INCLUDED */ +/* #include duk_hstring.h */ +#line 1 "duk_hstring.h" +/* + * Heap string representation. + * + * Strings are byte sequences ordinarily stored in extended UTF-8 format, + * allowing values larger than the official UTF-8 range (used internally) + * and also allowing UTF-8 encoding of surrogate pairs (CESU-8 format). + * Strings may also be invalid UTF-8 altogether which is the case e.g. with + * strings used as internal property names and raw buffers converted to + * strings. In such cases the 'clen' field contains an inaccurate value. + * + * ECMAScript requires support for 32-bit long strings. However, since each + * 16-bit codepoint can take 3 bytes in CESU-8, this representation can only + * support about 1.4G codepoint long strings in extreme cases. This is not + * really a practical issue. + */ + +#if !defined(DUK_HSTRING_H_INCLUDED) +#define DUK_HSTRING_H_INCLUDED + +/* Impose a maximum string length for now. Restricted artificially to + * ensure adding a heap header length won't overflow size_t. The limit + * should be synchronized with DUK_HBUFFER_MAX_BYTELEN. + * + * E5.1 makes provisions to support strings longer than 4G characters. + * This limit should be eliminated on 64-bit platforms (and increased + * closer to maximum support on 32-bit platforms). + */ + +#if defined(DUK_USE_STRLEN16) +#define DUK_HSTRING_MAX_BYTELEN (0x0000ffffUL) +#else +#define DUK_HSTRING_MAX_BYTELEN (0x7fffffffUL) +#endif + +/* XXX: could add flags for "is valid CESU-8" (ECMAScript compatible strings), + * "is valid UTF-8", "is valid extended UTF-8" (internal strings are not, + * regexp bytecode is), and "contains non-BMP characters". These are not + * needed right now. + */ + +/* With lowmem builds the high 16 bits of duk_heaphdr are used for other + * purposes, so this leaves 7 duk_heaphdr flags and 9 duk_hstring flags. + */ +#define DUK_HSTRING_FLAG_ASCII DUK_HEAPHDR_USER_FLAG(0) /* string is ASCII, clen == blen */ +#define DUK_HSTRING_FLAG_ARRIDX DUK_HEAPHDR_USER_FLAG(1) /* string is a valid array index */ +#define DUK_HSTRING_FLAG_SYMBOL DUK_HEAPHDR_USER_FLAG(2) /* string is a symbol (invalid utf-8) */ +#define DUK_HSTRING_FLAG_HIDDEN DUK_HEAPHDR_USER_FLAG(3) /* string is a hidden symbol (implies symbol, Duktape 1.x internal string) */ +#define DUK_HSTRING_FLAG_RESERVED_WORD DUK_HEAPHDR_USER_FLAG(4) /* string is a reserved word (non-strict) */ +#define DUK_HSTRING_FLAG_STRICT_RESERVED_WORD DUK_HEAPHDR_USER_FLAG(5) /* string is a reserved word (strict) */ +#define DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS DUK_HEAPHDR_USER_FLAG(6) /* string is 'eval' or 'arguments' */ +#define DUK_HSTRING_FLAG_EXTDATA DUK_HEAPHDR_USER_FLAG(7) /* string data is external (duk_hstring_external) */ +#define DUK_HSTRING_FLAG_PINNED_LITERAL DUK_HEAPHDR_USER_FLAG(8) /* string is a literal, and pinned */ + +#define DUK_HSTRING_HAS_ASCII(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII) +#define DUK_HSTRING_HAS_ARRIDX(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX) +#define DUK_HSTRING_HAS_SYMBOL(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_SYMBOL) +#define DUK_HSTRING_HAS_HIDDEN(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_HIDDEN) +#define DUK_HSTRING_HAS_RESERVED_WORD(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD) +#define DUK_HSTRING_HAS_STRICT_RESERVED_WORD(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD) +#define DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS) +#define DUK_HSTRING_HAS_EXTDATA(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA) +#define DUK_HSTRING_HAS_PINNED_LITERAL(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_PINNED_LITERAL) + +#define DUK_HSTRING_SET_ASCII(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII) +#define DUK_HSTRING_SET_ARRIDX(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX) +#define DUK_HSTRING_SET_SYMBOL(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_SYMBOL) +#define DUK_HSTRING_SET_HIDDEN(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_HIDDEN) +#define DUK_HSTRING_SET_RESERVED_WORD(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD) +#define DUK_HSTRING_SET_STRICT_RESERVED_WORD(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD) +#define DUK_HSTRING_SET_EVAL_OR_ARGUMENTS(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS) +#define DUK_HSTRING_SET_EXTDATA(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA) +#define DUK_HSTRING_SET_PINNED_LITERAL(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_PINNED_LITERAL) + +#define DUK_HSTRING_CLEAR_ASCII(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII) +#define DUK_HSTRING_CLEAR_ARRIDX(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX) +#define DUK_HSTRING_CLEAR_SYMBOL(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_SYMBOL) +#define DUK_HSTRING_CLEAR_HIDDEN(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_HIDDEN) +#define DUK_HSTRING_CLEAR_RESERVED_WORD(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD) +#define DUK_HSTRING_CLEAR_STRICT_RESERVED_WORD(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD) +#define DUK_HSTRING_CLEAR_EVAL_OR_ARGUMENTS(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS) +#define DUK_HSTRING_CLEAR_EXTDATA(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA) +#define DUK_HSTRING_CLEAR_PINNED_LITERAL(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_PINNED_LITERAL) + +#if 0 /* Slightly smaller code without explicit flag, but explicit flag + * is very useful when 'clen' is dropped. + */ +#define DUK_HSTRING_IS_ASCII(x) (DUK_HSTRING_GET_BYTELEN((x)) == DUK_HSTRING_GET_CHARLEN((x))) +#endif +#define DUK_HSTRING_IS_ASCII(x) DUK_HSTRING_HAS_ASCII((x)) /* lazily set! */ +#define DUK_HSTRING_IS_EMPTY(x) (DUK_HSTRING_GET_BYTELEN((x)) == 0) + +#if defined(DUK_USE_STRHASH16) +#define DUK_HSTRING_GET_HASH(x) ((x)->hdr.h_flags >> 16) +#define DUK_HSTRING_SET_HASH(x,v) do { \ + (x)->hdr.h_flags = ((x)->hdr.h_flags & 0x0000ffffUL) | ((v) << 16); \ + } while (0) +#else +#define DUK_HSTRING_GET_HASH(x) ((x)->hash) +#define DUK_HSTRING_SET_HASH(x,v) do { \ + (x)->hash = (v); \ + } while (0) +#endif + +#if defined(DUK_USE_STRLEN16) +#define DUK_HSTRING_GET_BYTELEN(x) ((x)->hdr.h_strextra16) +#define DUK_HSTRING_SET_BYTELEN(x,v) do { \ + (x)->hdr.h_strextra16 = (v); \ + } while (0) +#if defined(DUK_USE_HSTRING_CLEN) +#define DUK_HSTRING_GET_CHARLEN(x) duk_hstring_get_charlen((x)) +#define DUK_HSTRING_SET_CHARLEN(x,v) do { \ + (x)->clen16 = (v); \ + } while (0) +#else +#define DUK_HSTRING_GET_CHARLEN(x) duk_hstring_get_charlen((x)) +#define DUK_HSTRING_SET_CHARLEN(x,v) do { \ + DUK_ASSERT(0); /* should never be called */ \ + } while (0) +#endif +#else +#define DUK_HSTRING_GET_BYTELEN(x) ((x)->blen) +#define DUK_HSTRING_SET_BYTELEN(x,v) do { \ + (x)->blen = (v); \ + } while (0) +#define DUK_HSTRING_GET_CHARLEN(x) duk_hstring_get_charlen((x)) +#define DUK_HSTRING_SET_CHARLEN(x,v) do { \ + (x)->clen = (v); \ + } while (0) +#endif + +#if defined(DUK_USE_HSTRING_EXTDATA) +#define DUK_HSTRING_GET_EXTDATA(x) \ + ((x)->extdata) +#define DUK_HSTRING_GET_DATA(x) \ + (DUK_HSTRING_HAS_EXTDATA((x)) ? \ + DUK_HSTRING_GET_EXTDATA((const duk_hstring_external *) (x)) : ((const duk_uint8_t *) ((x) + 1))) +#else +#define DUK_HSTRING_GET_DATA(x) \ + ((const duk_uint8_t *) ((x) + 1)) +#endif + +#define DUK_HSTRING_GET_DATA_END(x) \ + (DUK_HSTRING_GET_DATA((x)) + (x)->blen) + +/* Marker value; in E5 2^32-1 is not a valid array index (2^32-2 is highest + * valid). + */ +#define DUK_HSTRING_NO_ARRAY_INDEX (0xffffffffUL) + +#if defined(DUK_USE_HSTRING_ARRIDX) +#define DUK_HSTRING_GET_ARRIDX_FAST(h) ((h)->arridx) +#define DUK_HSTRING_GET_ARRIDX_SLOW(h) ((h)->arridx) +#else +/* Get array index related to string (or return DUK_HSTRING_NO_ARRAY_INDEX); + * avoids helper call if string has no array index value. + */ +#define DUK_HSTRING_GET_ARRIDX_FAST(h) \ + (DUK_HSTRING_HAS_ARRIDX((h)) ? duk_js_to_arrayindex_hstring_fast_known((h)) : DUK_HSTRING_NO_ARRAY_INDEX) + +/* Slower but more compact variant. */ +#define DUK_HSTRING_GET_ARRIDX_SLOW(h) \ + (duk_js_to_arrayindex_hstring_fast((h))) +#endif + +/* XXX: these actually fit into duk_hstring */ +#define DUK_SYMBOL_TYPE_HIDDEN 0 +#define DUK_SYMBOL_TYPE_GLOBAL 1 +#define DUK_SYMBOL_TYPE_LOCAL 2 +#define DUK_SYMBOL_TYPE_WELLKNOWN 3 + +/* Assertion for duk_hstring validity. */ +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hstring_assert_valid(duk_hstring *h); +#define DUK_HSTRING_ASSERT_VALID(h) do { duk_hstring_assert_valid((h)); } while (0) +#else +#define DUK_HSTRING_ASSERT_VALID(h) do {} while (0) +#endif + +/* + * Misc + */ + +struct duk_hstring { + /* Smaller heaphdr than for other objects, because strings are held + * in string intern table which requires no link pointers. Much of + * the 32-bit flags field is unused by flags, so we can stuff a 16-bit + * field in there. + */ + duk_heaphdr_string hdr; + + /* String hash. */ +#if defined(DUK_USE_STRHASH16) + /* If 16-bit hash is in use, stuff it into duk_heaphdr_string flags. */ +#else + duk_uint32_t hash; +#endif + + /* Precomputed array index (or DUK_HSTRING_NO_ARRAY_INDEX). */ +#if defined(DUK_USE_HSTRING_ARRIDX) + duk_uarridx_t arridx; +#endif + + /* Length in bytes (not counting NUL term). */ +#if defined(DUK_USE_STRLEN16) + /* placed in duk_heaphdr_string */ +#else + duk_uint32_t blen; +#endif + + /* Length in codepoints (must be E5 compatible). */ +#if defined(DUK_USE_STRLEN16) +#if defined(DUK_USE_HSTRING_CLEN) + duk_uint16_t clen16; +#else + /* computed live */ +#endif +#else + duk_uint32_t clen; +#endif + + /* + * String data of 'blen+1' bytes follows (+1 for NUL termination + * convenience for C API). No alignment needs to be guaranteed + * for strings, but fields above should guarantee alignment-by-4 + * (but not alignment-by-8). + */ +}; + +/* The external string struct is defined even when the feature is inactive. */ +struct duk_hstring_external { + duk_hstring str; + + /* + * For an external string, the NUL-terminated string data is stored + * externally. The user must guarantee that data behind this pointer + * doesn't change while it's used. + */ + + const duk_uint8_t *extdata; +}; + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL duk_ucodepoint_t duk_hstring_char_code_at_raw(duk_hthread *thr, duk_hstring *h, duk_uint_t pos, duk_bool_t surrogate_aware); +DUK_INTERNAL_DECL duk_bool_t duk_hstring_equals_ascii_cstring(duk_hstring *h, const char *cstr); +DUK_INTERNAL_DECL duk_size_t duk_hstring_get_charlen(duk_hstring *h); +#if !defined(DUK_USE_HSTRING_LAZY_CLEN) +DUK_INTERNAL_DECL void duk_hstring_init_charlen(duk_hstring *h); +#endif + +#endif /* DUK_HSTRING_H_INCLUDED */ +/* #include duk_hobject.h */ +#line 1 "duk_hobject.h" +/* + * Heap object representation. + * + * Heap objects are used for ECMAScript objects, arrays, and functions, + * but also for internal control like declarative and object environment + * records. Compiled functions, native functions, and threads are also + * objects but with an extended C struct. + * + * Objects provide the required ECMAScript semantics and exotic behaviors + * especially for property access. + * + * Properties are stored in three conceptual parts: + * + * 1. A linear 'entry part' contains ordered key-value-attributes triples + * and is the main method of string properties. + * + * 2. An optional linear 'array part' is used for array objects to store a + * (dense) range of [0,N[ array indexed entries with default attributes + * (writable, enumerable, configurable). If the array part would become + * sparse or non-default attributes are required, the array part is + * abandoned and moved to the 'entry part'. + * + * 3. An optional 'hash part' is used to optimize lookups of the entry + * part; it is used only for objects with sufficiently many properties + * and can be abandoned without loss of information. + * + * These three conceptual parts are stored in a single memory allocated area. + * This minimizes memory allocation overhead but also means that all three + * parts are resized together, and makes property access a bit complicated. + */ + +#if !defined(DUK_HOBJECT_H_INCLUDED) +#define DUK_HOBJECT_H_INCLUDED + +/* Object flags. Make sure this stays in sync with debugger object + * inspection code. + */ + +/* XXX: some flags are object subtype specific (e.g. common to all function + * subtypes, duk_harray, etc) and could be reused for different subtypes. + */ +#define DUK_HOBJECT_FLAG_EXTENSIBLE DUK_HEAPHDR_USER_FLAG(0) /* object is extensible */ +#define DUK_HOBJECT_FLAG_CONSTRUCTABLE DUK_HEAPHDR_USER_FLAG(1) /* object is constructable */ +#define DUK_HOBJECT_FLAG_CALLABLE DUK_HEAPHDR_USER_FLAG(2) /* object is callable */ +#define DUK_HOBJECT_FLAG_BOUNDFUNC DUK_HEAPHDR_USER_FLAG(3) /* object established using Function.prototype.bind() */ +#define DUK_HOBJECT_FLAG_COMPFUNC DUK_HEAPHDR_USER_FLAG(4) /* object is a compiled function (duk_hcompfunc) */ +#define DUK_HOBJECT_FLAG_NATFUNC DUK_HEAPHDR_USER_FLAG(5) /* object is a native function (duk_hnatfunc) */ +#define DUK_HOBJECT_FLAG_BUFOBJ DUK_HEAPHDR_USER_FLAG(6) /* object is a buffer object (duk_hbufobj) (always exotic) */ +#define DUK_HOBJECT_FLAG_FASTREFS DUK_HEAPHDR_USER_FLAG(7) /* object has no fields needing DECREF/marking beyond base duk_hobject header */ +#define DUK_HOBJECT_FLAG_ARRAY_PART DUK_HEAPHDR_USER_FLAG(8) /* object has an array part (a_size may still be 0) */ +#define DUK_HOBJECT_FLAG_STRICT DUK_HEAPHDR_USER_FLAG(9) /* function: function object is strict */ +#define DUK_HOBJECT_FLAG_NOTAIL DUK_HEAPHDR_USER_FLAG(10) /* function: function must not be tail called */ +#define DUK_HOBJECT_FLAG_NEWENV DUK_HEAPHDR_USER_FLAG(11) /* function: create new environment when called (see duk_hcompfunc) */ +#define DUK_HOBJECT_FLAG_NAMEBINDING DUK_HEAPHDR_USER_FLAG(12) /* function: create binding for func name (function templates only, used for named function expressions) */ +#define DUK_HOBJECT_FLAG_CREATEARGS DUK_HEAPHDR_USER_FLAG(13) /* function: create an arguments object on function call */ +#define DUK_HOBJECT_FLAG_HAVE_FINALIZER DUK_HEAPHDR_USER_FLAG(14) /* object has a callable (own) finalizer property */ +#define DUK_HOBJECT_FLAG_EXOTIC_ARRAY DUK_HEAPHDR_USER_FLAG(15) /* 'Array' object, array length and index exotic behavior */ +#define DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ DUK_HEAPHDR_USER_FLAG(16) /* 'String' object, array index exotic behavior */ +#define DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS DUK_HEAPHDR_USER_FLAG(17) /* 'Arguments' object and has arguments exotic behavior (non-strict callee) */ +#define DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ DUK_HEAPHDR_USER_FLAG(18) /* 'Proxy' object */ +#define DUK_HOBJECT_FLAG_SPECIAL_CALL DUK_HEAPHDR_USER_FLAG(19) /* special casing in call behavior, for .call(), .apply(), etc. */ + +#define DUK_HOBJECT_FLAG_CLASS_BASE DUK_HEAPHDR_USER_FLAG_NUMBER(20) +#define DUK_HOBJECT_FLAG_CLASS_BITS 5 + +#define DUK_HOBJECT_GET_CLASS_NUMBER(h) \ + DUK_HEAPHDR_GET_FLAG_RANGE(&(h)->hdr, DUK_HOBJECT_FLAG_CLASS_BASE, DUK_HOBJECT_FLAG_CLASS_BITS) +#define DUK_HOBJECT_SET_CLASS_NUMBER(h,v) \ + DUK_HEAPHDR_SET_FLAG_RANGE(&(h)->hdr, DUK_HOBJECT_FLAG_CLASS_BASE, DUK_HOBJECT_FLAG_CLASS_BITS, (v)) + +#define DUK_HOBJECT_GET_CLASS_MASK(h) \ + (1UL << DUK_HEAPHDR_GET_FLAG_RANGE(&(h)->hdr, DUK_HOBJECT_FLAG_CLASS_BASE, DUK_HOBJECT_FLAG_CLASS_BITS)) + +/* Macro for creating flag initializer from a class number. + * Unsigned type cast is needed to avoid warnings about coercing + * a signed integer to an unsigned one; the largest class values + * have the highest bit (bit 31) set which causes this. + */ +#define DUK_HOBJECT_CLASS_AS_FLAGS(v) (((duk_uint_t) (v)) << DUK_HOBJECT_FLAG_CLASS_BASE) + +/* E5 Section 8.6.2 + custom classes */ +#define DUK_HOBJECT_CLASS_NONE 0 +#define DUK_HOBJECT_CLASS_OBJECT 1 +#define DUK_HOBJECT_CLASS_ARRAY 2 +#define DUK_HOBJECT_CLASS_FUNCTION 3 +#define DUK_HOBJECT_CLASS_ARGUMENTS 4 +#define DUK_HOBJECT_CLASS_BOOLEAN 5 +#define DUK_HOBJECT_CLASS_DATE 6 +#define DUK_HOBJECT_CLASS_ERROR 7 +#define DUK_HOBJECT_CLASS_JSON 8 +#define DUK_HOBJECT_CLASS_MATH 9 +#define DUK_HOBJECT_CLASS_NUMBER 10 +#define DUK_HOBJECT_CLASS_REGEXP 11 +#define DUK_HOBJECT_CLASS_STRING 12 +#define DUK_HOBJECT_CLASS_GLOBAL 13 +#define DUK_HOBJECT_CLASS_SYMBOL 14 +#define DUK_HOBJECT_CLASS_OBJENV 15 /* custom */ +#define DUK_HOBJECT_CLASS_DECENV 16 /* custom */ +#define DUK_HOBJECT_CLASS_POINTER 17 /* custom */ +#define DUK_HOBJECT_CLASS_THREAD 18 /* custom; implies DUK_HOBJECT_IS_THREAD */ +#define DUK_HOBJECT_CLASS_BUFOBJ_MIN 19 +#define DUK_HOBJECT_CLASS_ARRAYBUFFER 19 /* implies DUK_HOBJECT_IS_BUFOBJ */ +#define DUK_HOBJECT_CLASS_DATAVIEW 20 +#define DUK_HOBJECT_CLASS_INT8ARRAY 21 +#define DUK_HOBJECT_CLASS_UINT8ARRAY 22 +#define DUK_HOBJECT_CLASS_UINT8CLAMPEDARRAY 23 +#define DUK_HOBJECT_CLASS_INT16ARRAY 24 +#define DUK_HOBJECT_CLASS_UINT16ARRAY 25 +#define DUK_HOBJECT_CLASS_INT32ARRAY 26 +#define DUK_HOBJECT_CLASS_UINT32ARRAY 27 +#define DUK_HOBJECT_CLASS_FLOAT32ARRAY 28 +#define DUK_HOBJECT_CLASS_FLOAT64ARRAY 29 +#define DUK_HOBJECT_CLASS_BUFOBJ_MAX 29 +#define DUK_HOBJECT_CLASS_MAX 29 + +/* Class masks. */ +#define DUK_HOBJECT_CMASK_ALL ((1UL << (DUK_HOBJECT_CLASS_MAX + 1)) - 1UL) +#define DUK_HOBJECT_CMASK_NONE (1UL << DUK_HOBJECT_CLASS_NONE) +#define DUK_HOBJECT_CMASK_ARGUMENTS (1UL << DUK_HOBJECT_CLASS_ARGUMENTS) +#define DUK_HOBJECT_CMASK_ARRAY (1UL << DUK_HOBJECT_CLASS_ARRAY) +#define DUK_HOBJECT_CMASK_BOOLEAN (1UL << DUK_HOBJECT_CLASS_BOOLEAN) +#define DUK_HOBJECT_CMASK_DATE (1UL << DUK_HOBJECT_CLASS_DATE) +#define DUK_HOBJECT_CMASK_ERROR (1UL << DUK_HOBJECT_CLASS_ERROR) +#define DUK_HOBJECT_CMASK_FUNCTION (1UL << DUK_HOBJECT_CLASS_FUNCTION) +#define DUK_HOBJECT_CMASK_JSON (1UL << DUK_HOBJECT_CLASS_JSON) +#define DUK_HOBJECT_CMASK_MATH (1UL << DUK_HOBJECT_CLASS_MATH) +#define DUK_HOBJECT_CMASK_NUMBER (1UL << DUK_HOBJECT_CLASS_NUMBER) +#define DUK_HOBJECT_CMASK_OBJECT (1UL << DUK_HOBJECT_CLASS_OBJECT) +#define DUK_HOBJECT_CMASK_REGEXP (1UL << DUK_HOBJECT_CLASS_REGEXP) +#define DUK_HOBJECT_CMASK_STRING (1UL << DUK_HOBJECT_CLASS_STRING) +#define DUK_HOBJECT_CMASK_GLOBAL (1UL << DUK_HOBJECT_CLASS_GLOBAL) +#define DUK_HOBJECT_CMASK_SYMBOL (1UL << DUK_HOBJECT_CLASS_SYMBOL) +#define DUK_HOBJECT_CMASK_OBJENV (1UL << DUK_HOBJECT_CLASS_OBJENV) +#define DUK_HOBJECT_CMASK_DECENV (1UL << DUK_HOBJECT_CLASS_DECENV) +#define DUK_HOBJECT_CMASK_POINTER (1UL << DUK_HOBJECT_CLASS_POINTER) +#define DUK_HOBJECT_CMASK_ARRAYBUFFER (1UL << DUK_HOBJECT_CLASS_ARRAYBUFFER) +#define DUK_HOBJECT_CMASK_DATAVIEW (1UL << DUK_HOBJECT_CLASS_DATAVIEW) +#define DUK_HOBJECT_CMASK_INT8ARRAY (1UL << DUK_HOBJECT_CLASS_INT8ARRAY) +#define DUK_HOBJECT_CMASK_UINT8ARRAY (1UL << DUK_HOBJECT_CLASS_UINT8ARRAY) +#define DUK_HOBJECT_CMASK_UINT8CLAMPEDARRAY (1UL << DUK_HOBJECT_CLASS_UINT8CLAMPEDARRAY) +#define DUK_HOBJECT_CMASK_INT16ARRAY (1UL << DUK_HOBJECT_CLASS_INT16ARRAY) +#define DUK_HOBJECT_CMASK_UINT16ARRAY (1UL << DUK_HOBJECT_CLASS_UINT16ARRAY) +#define DUK_HOBJECT_CMASK_INT32ARRAY (1UL << DUK_HOBJECT_CLASS_INT32ARRAY) +#define DUK_HOBJECT_CMASK_UINT32ARRAY (1UL << DUK_HOBJECT_CLASS_UINT32ARRAY) +#define DUK_HOBJECT_CMASK_FLOAT32ARRAY (1UL << DUK_HOBJECT_CLASS_FLOAT32ARRAY) +#define DUK_HOBJECT_CMASK_FLOAT64ARRAY (1UL << DUK_HOBJECT_CLASS_FLOAT64ARRAY) + +#define DUK_HOBJECT_CMASK_ALL_BUFOBJS \ + (DUK_HOBJECT_CMASK_ARRAYBUFFER | \ + DUK_HOBJECT_CMASK_DATAVIEW | \ + DUK_HOBJECT_CMASK_INT8ARRAY | \ + DUK_HOBJECT_CMASK_UINT8ARRAY | \ + DUK_HOBJECT_CMASK_UINT8CLAMPEDARRAY | \ + DUK_HOBJECT_CMASK_INT16ARRAY | \ + DUK_HOBJECT_CMASK_UINT16ARRAY | \ + DUK_HOBJECT_CMASK_INT32ARRAY | \ + DUK_HOBJECT_CMASK_UINT32ARRAY | \ + DUK_HOBJECT_CMASK_FLOAT32ARRAY | \ + DUK_HOBJECT_CMASK_FLOAT64ARRAY) + +#define DUK_HOBJECT_IS_OBJENV(h) (DUK_HOBJECT_GET_CLASS_NUMBER((h)) == DUK_HOBJECT_CLASS_OBJENV) +#define DUK_HOBJECT_IS_DECENV(h) (DUK_HOBJECT_GET_CLASS_NUMBER((h)) == DUK_HOBJECT_CLASS_DECENV) +#define DUK_HOBJECT_IS_ENV(h) (DUK_HOBJECT_IS_OBJENV((h)) || DUK_HOBJECT_IS_DECENV((h))) +#define DUK_HOBJECT_IS_ARRAY(h) DUK_HOBJECT_HAS_EXOTIC_ARRAY((h)) /* Rely on class Array <=> exotic Array */ +#define DUK_HOBJECT_IS_BOUNDFUNC(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BOUNDFUNC) +#define DUK_HOBJECT_IS_COMPFUNC(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_COMPFUNC) +#define DUK_HOBJECT_IS_NATFUNC(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NATFUNC) +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#define DUK_HOBJECT_IS_BUFOBJ(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BUFOBJ) +#else +#define DUK_HOBJECT_IS_BUFOBJ(h) 0 +#endif +#define DUK_HOBJECT_IS_THREAD(h) (DUK_HOBJECT_GET_CLASS_NUMBER((h)) == DUK_HOBJECT_CLASS_THREAD) +#if defined(DUK_USE_ES6_PROXY) +#define DUK_HOBJECT_IS_PROXY(h) DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ((h)) +#else +#define DUK_HOBJECT_IS_PROXY(h) 0 +#endif + +#define DUK_HOBJECT_IS_NONBOUND_FUNCTION(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, \ + DUK_HOBJECT_FLAG_COMPFUNC | \ + DUK_HOBJECT_FLAG_NATFUNC) + +#define DUK_HOBJECT_IS_FUNCTION(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, \ + DUK_HOBJECT_FLAG_BOUNDFUNC | \ + DUK_HOBJECT_FLAG_COMPFUNC | \ + DUK_HOBJECT_FLAG_NATFUNC) + +#define DUK_HOBJECT_IS_CALLABLE(h) DUK_HOBJECT_HAS_CALLABLE((h)) + +/* Object has any exotic behavior(s). */ +#define DUK_HOBJECT_EXOTIC_BEHAVIOR_FLAGS (DUK_HOBJECT_FLAG_EXOTIC_ARRAY | \ + DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS | \ + DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ | \ + DUK_HOBJECT_FLAG_BUFOBJ | \ + DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ) +#define DUK_HOBJECT_HAS_EXOTIC_BEHAVIOR(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_EXOTIC_BEHAVIOR_FLAGS) + +/* Object has any virtual properties (not counting Proxy behavior). */ +#define DUK_HOBJECT_VIRTUAL_PROPERTY_FLAGS (DUK_HOBJECT_FLAG_EXOTIC_ARRAY | \ + DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ | \ + DUK_HOBJECT_FLAG_BUFOBJ) +#define DUK_HOBJECT_HAS_VIRTUAL_PROPERTIES(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_VIRTUAL_PROPERTY_FLAGS) + +#define DUK_HOBJECT_HAS_EXTENSIBLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXTENSIBLE) +#define DUK_HOBJECT_HAS_CONSTRUCTABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CONSTRUCTABLE) +#define DUK_HOBJECT_HAS_CALLABLE(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CALLABLE) +#define DUK_HOBJECT_HAS_BOUNDFUNC(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BOUNDFUNC) +#define DUK_HOBJECT_HAS_COMPFUNC(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_COMPFUNC) +#define DUK_HOBJECT_HAS_NATFUNC(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NATFUNC) +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#define DUK_HOBJECT_HAS_BUFOBJ(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BUFOBJ) +#else +#define DUK_HOBJECT_HAS_BUFOBJ(h) 0 +#endif +#define DUK_HOBJECT_HAS_FASTREFS(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_FASTREFS) +#define DUK_HOBJECT_HAS_ARRAY_PART(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_ARRAY_PART) +#define DUK_HOBJECT_HAS_STRICT(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_STRICT) +#define DUK_HOBJECT_HAS_NOTAIL(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NOTAIL) +#define DUK_HOBJECT_HAS_NEWENV(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NEWENV) +#define DUK_HOBJECT_HAS_NAMEBINDING(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NAMEBINDING) +#define DUK_HOBJECT_HAS_CREATEARGS(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CREATEARGS) +#define DUK_HOBJECT_HAS_HAVE_FINALIZER(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_HAVE_FINALIZER) +#define DUK_HOBJECT_HAS_EXOTIC_ARRAY(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_ARRAY) +#define DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ) +#define DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS) +#if defined(DUK_USE_ES6_PROXY) +#define DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ) +#else +#define DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h) 0 +#endif +#define DUK_HOBJECT_HAS_SPECIAL_CALL(h) DUK_HEAPHDR_CHECK_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_SPECIAL_CALL) + +#define DUK_HOBJECT_SET_EXTENSIBLE(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXTENSIBLE) +#define DUK_HOBJECT_SET_CONSTRUCTABLE(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CONSTRUCTABLE) +#define DUK_HOBJECT_SET_CALLABLE(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CALLABLE) +#define DUK_HOBJECT_SET_BOUNDFUNC(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BOUNDFUNC) +#define DUK_HOBJECT_SET_COMPFUNC(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_COMPFUNC) +#define DUK_HOBJECT_SET_NATFUNC(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NATFUNC) +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#define DUK_HOBJECT_SET_BUFOBJ(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BUFOBJ) +#endif +#define DUK_HOBJECT_SET_FASTREFS(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_FASTREFS) +#define DUK_HOBJECT_SET_ARRAY_PART(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_ARRAY_PART) +#define DUK_HOBJECT_SET_STRICT(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_STRICT) +#define DUK_HOBJECT_SET_NOTAIL(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NOTAIL) +#define DUK_HOBJECT_SET_NEWENV(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NEWENV) +#define DUK_HOBJECT_SET_NAMEBINDING(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NAMEBINDING) +#define DUK_HOBJECT_SET_CREATEARGS(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CREATEARGS) +#define DUK_HOBJECT_SET_HAVE_FINALIZER(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_HAVE_FINALIZER) +#define DUK_HOBJECT_SET_EXOTIC_ARRAY(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_ARRAY) +#define DUK_HOBJECT_SET_EXOTIC_STRINGOBJ(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ) +#define DUK_HOBJECT_SET_EXOTIC_ARGUMENTS(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS) +#if defined(DUK_USE_ES6_PROXY) +#define DUK_HOBJECT_SET_EXOTIC_PROXYOBJ(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ) +#endif +#define DUK_HOBJECT_SET_SPECIAL_CALL(h) DUK_HEAPHDR_SET_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_SPECIAL_CALL) + +#define DUK_HOBJECT_CLEAR_EXTENSIBLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXTENSIBLE) +#define DUK_HOBJECT_CLEAR_CONSTRUCTABLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CONSTRUCTABLE) +#define DUK_HOBJECT_CLEAR_CALLABLE(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CALLABLE) +#define DUK_HOBJECT_CLEAR_BOUNDFUNC(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BOUNDFUNC) +#define DUK_HOBJECT_CLEAR_COMPFUNC(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_COMPFUNC) +#define DUK_HOBJECT_CLEAR_NATFUNC(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NATFUNC) +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#define DUK_HOBJECT_CLEAR_BUFOBJ(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_BUFOBJ) +#endif +#define DUK_HOBJECT_CLEAR_FASTREFS(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_FASTREFS) +#define DUK_HOBJECT_CLEAR_ARRAY_PART(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_ARRAY_PART) +#define DUK_HOBJECT_CLEAR_STRICT(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_STRICT) +#define DUK_HOBJECT_CLEAR_NOTAIL(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NOTAIL) +#define DUK_HOBJECT_CLEAR_NEWENV(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NEWENV) +#define DUK_HOBJECT_CLEAR_NAMEBINDING(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_NAMEBINDING) +#define DUK_HOBJECT_CLEAR_CREATEARGS(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_CREATEARGS) +#define DUK_HOBJECT_CLEAR_HAVE_FINALIZER(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_HAVE_FINALIZER) +#define DUK_HOBJECT_CLEAR_EXOTIC_ARRAY(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_ARRAY) +#define DUK_HOBJECT_CLEAR_EXOTIC_STRINGOBJ(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ) +#define DUK_HOBJECT_CLEAR_EXOTIC_ARGUMENTS(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS) +#if defined(DUK_USE_ES6_PROXY) +#define DUK_HOBJECT_CLEAR_EXOTIC_PROXYOBJ(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ) +#endif +#define DUK_HOBJECT_CLEAR_SPECIAL_CALL(h) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(h)->hdr, DUK_HOBJECT_FLAG_SPECIAL_CALL) + +/* Object can/cannot use FASTREFS, i.e. has no strong reference fields beyond + * duk_hobject base header. This is used just for asserts so doesn't need to + * be optimized. + */ +#define DUK_HOBJECT_PROHIBITS_FASTREFS(h) \ + (DUK_HOBJECT_IS_COMPFUNC((h)) || DUK_HOBJECT_IS_DECENV((h)) || DUK_HOBJECT_IS_OBJENV((h)) || \ + DUK_HOBJECT_IS_BUFOBJ((h)) || DUK_HOBJECT_IS_THREAD((h)) || DUK_HOBJECT_IS_PROXY((h)) || \ + DUK_HOBJECT_IS_BOUNDFUNC((h))) +#define DUK_HOBJECT_ALLOWS_FASTREFS(h) (!DUK_HOBJECT_PROHIBITS_FASTREFS((h))) + +/* Flags used for property attributes in duk_propdesc and packed flags. + * Must fit into 8 bits. + */ +#define DUK_PROPDESC_FLAG_WRITABLE (1U << 0) /* E5 Section 8.6.1 */ +#define DUK_PROPDESC_FLAG_ENUMERABLE (1U << 1) /* E5 Section 8.6.1 */ +#define DUK_PROPDESC_FLAG_CONFIGURABLE (1U << 2) /* E5 Section 8.6.1 */ +#define DUK_PROPDESC_FLAG_ACCESSOR (1U << 3) /* accessor */ +#define DUK_PROPDESC_FLAG_VIRTUAL (1U << 4) /* property is virtual: used in duk_propdesc, never stored + * (used by e.g. buffer virtual properties) + */ +#define DUK_PROPDESC_FLAGS_MASK (DUK_PROPDESC_FLAG_WRITABLE | \ + DUK_PROPDESC_FLAG_ENUMERABLE | \ + DUK_PROPDESC_FLAG_CONFIGURABLE | \ + DUK_PROPDESC_FLAG_ACCESSOR) + +/* Additional flags which are passed in the same flags argument as property + * flags but are not stored in object properties. + */ +#define DUK_PROPDESC_FLAG_NO_OVERWRITE (1U << 4) /* internal define property: skip write silently if exists */ + +/* Convenience defines for property attributes. */ +#define DUK_PROPDESC_FLAGS_NONE 0 +#define DUK_PROPDESC_FLAGS_W (DUK_PROPDESC_FLAG_WRITABLE) +#define DUK_PROPDESC_FLAGS_E (DUK_PROPDESC_FLAG_ENUMERABLE) +#define DUK_PROPDESC_FLAGS_C (DUK_PROPDESC_FLAG_CONFIGURABLE) +#define DUK_PROPDESC_FLAGS_WE (DUK_PROPDESC_FLAG_WRITABLE | DUK_PROPDESC_FLAG_ENUMERABLE) +#define DUK_PROPDESC_FLAGS_WC (DUK_PROPDESC_FLAG_WRITABLE | DUK_PROPDESC_FLAG_CONFIGURABLE) +#define DUK_PROPDESC_FLAGS_EC (DUK_PROPDESC_FLAG_ENUMERABLE | DUK_PROPDESC_FLAG_CONFIGURABLE) +#define DUK_PROPDESC_FLAGS_WEC (DUK_PROPDESC_FLAG_WRITABLE | \ + DUK_PROPDESC_FLAG_ENUMERABLE | \ + DUK_PROPDESC_FLAG_CONFIGURABLE) + +/* Flags for duk_hobject_get_own_propdesc() and variants. */ +#define DUK_GETDESC_FLAG_PUSH_VALUE (1U << 0) /* push value to stack */ +#define DUK_GETDESC_FLAG_IGNORE_PROTOLOOP (1U << 1) /* don't throw for prototype loop */ + +/* + * Macro for object validity check + * + * Assert for currently guaranteed relations between flags, for instance. + */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hobject_assert_valid(duk_hobject *h); +#define DUK_HOBJECT_ASSERT_VALID(h) do { duk_hobject_assert_valid((h)); } while (0) +#else +#define DUK_HOBJECT_ASSERT_VALID(h) do {} while (0) +#endif + +/* + * Macros to access the 'props' allocation. + */ + +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HOBJECT_GET_PROPS(heap,h) \ + ((duk_uint8_t *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, ((duk_heaphdr *) (h))->h_extra16)) +#define DUK_HOBJECT_SET_PROPS(heap,h,x) do { \ + ((duk_heaphdr *) (h))->h_extra16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (x)); \ + } while (0) +#else +#define DUK_HOBJECT_GET_PROPS(heap,h) \ + ((h)->props) +#define DUK_HOBJECT_SET_PROPS(heap,h,x) do { \ + (h)->props = (duk_uint8_t *) (x); \ + } while (0) +#endif + +#if defined(DUK_USE_HOBJECT_LAYOUT_1) +/* LAYOUT 1 */ +#define DUK_HOBJECT_E_GET_KEY_BASE(heap,h) \ + ((duk_hstring **) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) \ + )) +#define DUK_HOBJECT_E_GET_VALUE_BASE(heap,h) \ + ((duk_propvalue *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * sizeof(duk_hstring *) \ + )) +#define DUK_HOBJECT_E_GET_FLAGS_BASE(heap,h) \ + ((duk_uint8_t *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_hstring *) + sizeof(duk_propvalue)) \ + )) +#define DUK_HOBJECT_A_GET_BASE(heap,h) \ + ((duk_tval *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_hstring *) + sizeof(duk_propvalue) + sizeof(duk_uint8_t)) \ + )) +#define DUK_HOBJECT_H_GET_BASE(heap,h) \ + ((duk_uint32_t *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_hstring *) + sizeof(duk_propvalue) + sizeof(duk_uint8_t)) + \ + DUK_HOBJECT_GET_ASIZE((h)) * sizeof(duk_tval) \ + )) +#define DUK_HOBJECT_P_COMPUTE_SIZE(n_ent,n_arr,n_hash) \ + ( \ + (n_ent) * (sizeof(duk_hstring *) + sizeof(duk_propvalue) + sizeof(duk_uint8_t)) + \ + (n_arr) * sizeof(duk_tval) + \ + (n_hash) * sizeof(duk_uint32_t) \ + ) +#define DUK_HOBJECT_P_SET_REALLOC_PTRS(p_base,set_e_k,set_e_pv,set_e_f,set_a,set_h,n_ent,n_arr,n_hash) do { \ + (set_e_k) = (duk_hstring **) (void *) (p_base); \ + (set_e_pv) = (duk_propvalue *) (void *) ((set_e_k) + (n_ent)); \ + (set_e_f) = (duk_uint8_t *) (void *) ((set_e_pv) + (n_ent)); \ + (set_a) = (duk_tval *) (void *) ((set_e_f) + (n_ent)); \ + (set_h) = (duk_uint32_t *) (void *) ((set_a) + (n_arr)); \ + } while (0) +#elif defined(DUK_USE_HOBJECT_LAYOUT_2) +/* LAYOUT 2 */ +#if (DUK_USE_ALIGN_BY == 4) +#define DUK_HOBJECT_E_FLAG_PADDING(e_sz) ((4 - (e_sz)) & 0x03) +#elif (DUK_USE_ALIGN_BY == 8) +#define DUK_HOBJECT_E_FLAG_PADDING(e_sz) ((8 - (e_sz)) & 0x07) +#elif (DUK_USE_ALIGN_BY == 1) +#define DUK_HOBJECT_E_FLAG_PADDING(e_sz) 0 +#else +#error invalid DUK_USE_ALIGN_BY +#endif +#define DUK_HOBJECT_E_GET_KEY_BASE(heap,h) \ + ((duk_hstring **) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * sizeof(duk_propvalue) \ + )) +#define DUK_HOBJECT_E_GET_VALUE_BASE(heap,h) \ + ((duk_propvalue *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) \ + )) +#define DUK_HOBJECT_E_GET_FLAGS_BASE(heap,h) \ + ((duk_uint8_t *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_hstring *) + sizeof(duk_propvalue)) \ + )) +#define DUK_HOBJECT_A_GET_BASE(heap,h) \ + ((duk_tval *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_hstring *) + sizeof(duk_propvalue) + sizeof(duk_uint8_t)) + \ + DUK_HOBJECT_E_FLAG_PADDING(DUK_HOBJECT_GET_ESIZE((h))) \ + )) +#define DUK_HOBJECT_H_GET_BASE(heap,h) \ + ((duk_uint32_t *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_hstring *) + sizeof(duk_propvalue) + sizeof(duk_uint8_t)) + \ + DUK_HOBJECT_E_FLAG_PADDING(DUK_HOBJECT_GET_ESIZE((h))) + \ + DUK_HOBJECT_GET_ASIZE((h)) * sizeof(duk_tval) \ + )) +#define DUK_HOBJECT_P_COMPUTE_SIZE(n_ent,n_arr,n_hash) \ + ( \ + (n_ent) * (sizeof(duk_hstring *) + sizeof(duk_propvalue) + sizeof(duk_uint8_t)) + \ + DUK_HOBJECT_E_FLAG_PADDING((n_ent)) + \ + (n_arr) * sizeof(duk_tval) + \ + (n_hash) * sizeof(duk_uint32_t) \ + ) +#define DUK_HOBJECT_P_SET_REALLOC_PTRS(p_base,set_e_k,set_e_pv,set_e_f,set_a,set_h,n_ent,n_arr,n_hash) do { \ + (set_e_pv) = (duk_propvalue *) (void *) (p_base); \ + (set_e_k) = (duk_hstring **) (void *) ((set_e_pv) + (n_ent)); \ + (set_e_f) = (duk_uint8_t *) (void *) ((set_e_k) + (n_ent)); \ + (set_a) = (duk_tval *) (void *) (((duk_uint8_t *) (set_e_f)) + \ + sizeof(duk_uint8_t) * (n_ent) + \ + DUK_HOBJECT_E_FLAG_PADDING((n_ent))); \ + (set_h) = (duk_uint32_t *) (void *) ((set_a) + (n_arr)); \ + } while (0) +#elif defined(DUK_USE_HOBJECT_LAYOUT_3) +/* LAYOUT 3 */ +#define DUK_HOBJECT_E_GET_KEY_BASE(heap,h) \ + ((duk_hstring **) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * sizeof(duk_propvalue) + \ + DUK_HOBJECT_GET_ASIZE((h)) * sizeof(duk_tval) \ + )) +#define DUK_HOBJECT_E_GET_VALUE_BASE(heap,h) \ + ((duk_propvalue *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) \ + )) +#define DUK_HOBJECT_E_GET_FLAGS_BASE(heap,h) \ + ((duk_uint8_t *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_propvalue) + sizeof(duk_hstring *)) + \ + DUK_HOBJECT_GET_ASIZE((h)) * sizeof(duk_tval) + \ + DUK_HOBJECT_GET_HSIZE((h)) * sizeof(duk_uint32_t) \ + )) +#define DUK_HOBJECT_A_GET_BASE(heap,h) \ + ((duk_tval *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * sizeof(duk_propvalue) \ + )) +#define DUK_HOBJECT_H_GET_BASE(heap,h) \ + ((duk_uint32_t *) (void *) ( \ + DUK_HOBJECT_GET_PROPS((heap), (h)) + \ + DUK_HOBJECT_GET_ESIZE((h)) * (sizeof(duk_propvalue) + sizeof(duk_hstring *)) + \ + DUK_HOBJECT_GET_ASIZE((h)) * sizeof(duk_tval) \ + )) +#define DUK_HOBJECT_P_COMPUTE_SIZE(n_ent,n_arr,n_hash) \ + ( \ + (n_ent) * (sizeof(duk_propvalue) + sizeof(duk_hstring *) + sizeof(duk_uint8_t)) + \ + (n_arr) * sizeof(duk_tval) + \ + (n_hash) * sizeof(duk_uint32_t) \ + ) +#define DUK_HOBJECT_P_SET_REALLOC_PTRS(p_base,set_e_k,set_e_pv,set_e_f,set_a,set_h,n_ent,n_arr,n_hash) do { \ + (set_e_pv) = (duk_propvalue *) (void *) (p_base); \ + (set_a) = (duk_tval *) (void *) ((set_e_pv) + (n_ent)); \ + (set_e_k) = (duk_hstring **) (void *) ((set_a) + (n_arr)); \ + (set_h) = (duk_uint32_t *) (void *) ((set_e_k) + (n_ent)); \ + (set_e_f) = (duk_uint8_t *) (void *) ((set_h) + (n_hash)); \ + } while (0) +#else +#error invalid hobject layout defines +#endif /* hobject property layout */ + +#define DUK_HOBJECT_P_ALLOC_SIZE(h) \ + DUK_HOBJECT_P_COMPUTE_SIZE(DUK_HOBJECT_GET_ESIZE((h)), DUK_HOBJECT_GET_ASIZE((h)), DUK_HOBJECT_GET_HSIZE((h))) + +#define DUK_HOBJECT_E_GET_KEY(heap,h,i) (DUK_HOBJECT_E_GET_KEY_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_E_GET_KEY_PTR(heap,h,i) (&DUK_HOBJECT_E_GET_KEY_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_E_GET_VALUE(heap,h,i) (DUK_HOBJECT_E_GET_VALUE_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_E_GET_VALUE_PTR(heap,h,i) (&DUK_HOBJECT_E_GET_VALUE_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_E_GET_VALUE_TVAL(heap,h,i) (DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).v) +#define DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(heap,h,i) (&DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).v) +#define DUK_HOBJECT_E_GET_VALUE_GETTER(heap,h,i) (DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).a.get) +#define DUK_HOBJECT_E_GET_VALUE_GETTER_PTR(heap,h,i) (&DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).a.get) +#define DUK_HOBJECT_E_GET_VALUE_SETTER(heap,h,i) (DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).a.set) +#define DUK_HOBJECT_E_GET_VALUE_SETTER_PTR(heap,h,i) (&DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).a.set) +#define DUK_HOBJECT_E_GET_FLAGS(heap,h,i) (DUK_HOBJECT_E_GET_FLAGS_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_E_GET_FLAGS_PTR(heap,h,i) (&DUK_HOBJECT_E_GET_FLAGS_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_A_GET_VALUE(heap,h,i) (DUK_HOBJECT_A_GET_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_A_GET_VALUE_PTR(heap,h,i) (&DUK_HOBJECT_A_GET_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_H_GET_INDEX(heap,h,i) (DUK_HOBJECT_H_GET_BASE((heap), (h))[(i)]) +#define DUK_HOBJECT_H_GET_INDEX_PTR(heap,h,i) (&DUK_HOBJECT_H_GET_BASE((heap), (h))[(i)]) + +#define DUK_HOBJECT_E_SET_KEY(heap,h,i,k) do { \ + DUK_HOBJECT_E_GET_KEY((heap), (h), (i)) = (k); \ + } while (0) +#define DUK_HOBJECT_E_SET_VALUE(heap,h,i,v) do { \ + DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)) = (v); \ + } while (0) +#define DUK_HOBJECT_E_SET_VALUE_TVAL(heap,h,i,v) do { \ + DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).v = (v); \ + } while (0) +#define DUK_HOBJECT_E_SET_VALUE_GETTER(heap,h,i,v) do { \ + DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).a.get = (v); \ + } while (0) +#define DUK_HOBJECT_E_SET_VALUE_SETTER(heap,h,i,v) do { \ + DUK_HOBJECT_E_GET_VALUE((heap), (h), (i)).a.set = (v); \ + } while (0) +#define DUK_HOBJECT_E_SET_FLAGS(heap,h,i,f) do { \ + DUK_HOBJECT_E_GET_FLAGS((heap), (h), (i)) = (duk_uint8_t) (f); \ + } while (0) +#define DUK_HOBJECT_A_SET_VALUE(heap,h,i,v) do { \ + DUK_HOBJECT_A_GET_VALUE((heap), (h), (i)) = (v); \ + } while (0) +#define DUK_HOBJECT_A_SET_VALUE_TVAL(heap,h,i,v) \ + DUK_HOBJECT_A_SET_VALUE((heap), (h), (i), (v)) /* alias for above */ +#define DUK_HOBJECT_H_SET_INDEX(heap,h,i,v) do { \ + DUK_HOBJECT_H_GET_INDEX((heap), (h), (i)) = (v); \ + } while (0) + +#define DUK_HOBJECT_E_SET_FLAG_BITS(heap,h,i,mask) do { \ + DUK_HOBJECT_E_GET_FLAGS_BASE((heap), (h))[(i)] |= (mask); \ + } while (0) + +#define DUK_HOBJECT_E_CLEAR_FLAG_BITS(heap,h,i,mask) do { \ + DUK_HOBJECT_E_GET_FLAGS_BASE((heap), (h))[(i)] &= ~(mask); \ + } while (0) + +#define DUK_HOBJECT_E_SLOT_IS_WRITABLE(heap,h,i) ((DUK_HOBJECT_E_GET_FLAGS((heap), (h), (i)) & DUK_PROPDESC_FLAG_WRITABLE) != 0) +#define DUK_HOBJECT_E_SLOT_IS_ENUMERABLE(heap,h,i) ((DUK_HOBJECT_E_GET_FLAGS((heap), (h), (i)) & DUK_PROPDESC_FLAG_ENUMERABLE) != 0) +#define DUK_HOBJECT_E_SLOT_IS_CONFIGURABLE(heap,h,i) ((DUK_HOBJECT_E_GET_FLAGS((heap), (h), (i)) & DUK_PROPDESC_FLAG_CONFIGURABLE) != 0) +#define DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap,h,i) ((DUK_HOBJECT_E_GET_FLAGS((heap), (h), (i)) & DUK_PROPDESC_FLAG_ACCESSOR) != 0) + +#define DUK_HOBJECT_E_SLOT_SET_WRITABLE(heap,h,i) DUK_HOBJECT_E_SET_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_WRITABLE) +#define DUK_HOBJECT_E_SLOT_SET_ENUMERABLE(heap,h,i) DUK_HOBJECT_E_SET_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_ENUMERABLE) +#define DUK_HOBJECT_E_SLOT_SET_CONFIGURABLE(heap,h,i) DUK_HOBJECT_E_SET_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_CONFIGURABLE) +#define DUK_HOBJECT_E_SLOT_SET_ACCESSOR(heap,h,i) DUK_HOBJECT_E_SET_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_ACCESSOR) + +#define DUK_HOBJECT_E_SLOT_CLEAR_WRITABLE(heap,h,i) DUK_HOBJECT_E_CLEAR_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_WRITABLE) +#define DUK_HOBJECT_E_SLOT_CLEAR_ENUMERABLE(heap,h,i) DUK_HOBJECT_E_CLEAR_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_ENUMERABLE) +#define DUK_HOBJECT_E_SLOT_CLEAR_CONFIGURABLE(heap,h,i) DUK_HOBJECT_E_CLEAR_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_CONFIGURABLE) +#define DUK_HOBJECT_E_SLOT_CLEAR_ACCESSOR(heap,h,i) DUK_HOBJECT_E_CLEAR_FLAG_BITS((heap), (h), (i),DUK_PROPDESC_FLAG_ACCESSOR) + +#define DUK_PROPDESC_IS_WRITABLE(p) (((p)->flags & DUK_PROPDESC_FLAG_WRITABLE) != 0) +#define DUK_PROPDESC_IS_ENUMERABLE(p) (((p)->flags & DUK_PROPDESC_FLAG_ENUMERABLE) != 0) +#define DUK_PROPDESC_IS_CONFIGURABLE(p) (((p)->flags & DUK_PROPDESC_FLAG_CONFIGURABLE) != 0) +#define DUK_PROPDESC_IS_ACCESSOR(p) (((p)->flags & DUK_PROPDESC_FLAG_ACCESSOR) != 0) + +#define DUK_HOBJECT_HASHIDX_UNUSED 0xffffffffUL +#define DUK_HOBJECT_HASHIDX_DELETED 0xfffffffeUL + +/* + * Macros for accessing size fields + */ + +#if defined(DUK_USE_OBJSIZES16) +#define DUK_HOBJECT_GET_ESIZE(h) ((h)->e_size16) +#define DUK_HOBJECT_SET_ESIZE(h,v) do { (h)->e_size16 = (v); } while (0) +#define DUK_HOBJECT_GET_ENEXT(h) ((h)->e_next16) +#define DUK_HOBJECT_SET_ENEXT(h,v) do { (h)->e_next16 = (v); } while (0) +#define DUK_HOBJECT_POSTINC_ENEXT(h) ((h)->e_next16++) +#define DUK_HOBJECT_GET_ASIZE(h) ((h)->a_size16) +#define DUK_HOBJECT_SET_ASIZE(h,v) do { (h)->a_size16 = (v); } while (0) +#if defined(DUK_USE_HOBJECT_HASH_PART) +#define DUK_HOBJECT_GET_HSIZE(h) ((h)->h_size16) +#define DUK_HOBJECT_SET_HSIZE(h,v) do { (h)->h_size16 = (v); } while (0) +#else +#define DUK_HOBJECT_GET_HSIZE(h) 0 +#define DUK_HOBJECT_SET_HSIZE(h,v) do { DUK_ASSERT((v) == 0); } while (0) +#endif +#else +#define DUK_HOBJECT_GET_ESIZE(h) ((h)->e_size) +#define DUK_HOBJECT_SET_ESIZE(h,v) do { (h)->e_size = (v); } while (0) +#define DUK_HOBJECT_GET_ENEXT(h) ((h)->e_next) +#define DUK_HOBJECT_SET_ENEXT(h,v) do { (h)->e_next = (v); } while (0) +#define DUK_HOBJECT_POSTINC_ENEXT(h) ((h)->e_next++) +#define DUK_HOBJECT_GET_ASIZE(h) ((h)->a_size) +#define DUK_HOBJECT_SET_ASIZE(h,v) do { (h)->a_size = (v); } while (0) +#if defined(DUK_USE_HOBJECT_HASH_PART) +#define DUK_HOBJECT_GET_HSIZE(h) ((h)->h_size) +#define DUK_HOBJECT_SET_HSIZE(h,v) do { (h)->h_size = (v); } while (0) +#else +#define DUK_HOBJECT_GET_HSIZE(h) 0 +#define DUK_HOBJECT_SET_HSIZE(h,v) do { DUK_ASSERT((v) == 0); } while (0) +#endif +#endif + +/* + * Misc + */ + +/* Maximum prototype traversal depth. Sanity limit which handles e.g. + * prototype loops (even complex ones like 1->2->3->4->2->3->4->2->3->4). + */ +#define DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY 10000L + +/* + * ECMAScript [[Class]] + */ + +/* range check not necessary because all 4-bit values are mapped */ +#define DUK_HOBJECT_CLASS_NUMBER_TO_STRIDX(n) duk_class_number_to_stridx[(n)] + +#define DUK_HOBJECT_GET_CLASS_STRING(heap,h) \ + DUK_HEAP_GET_STRING( \ + (heap), \ + DUK_HOBJECT_CLASS_NUMBER_TO_STRIDX(DUK_HOBJECT_GET_CLASS_NUMBER((h))) \ + ) + +/* + * Macros for property handling + */ + +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HOBJECT_GET_PROTOTYPE(heap,h) \ + ((duk_hobject *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->prototype16)) +#define DUK_HOBJECT_SET_PROTOTYPE(heap,h,x) do { \ + (h)->prototype16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (x)); \ + } while (0) +#else +#define DUK_HOBJECT_GET_PROTOTYPE(heap,h) \ + ((h)->prototype) +#define DUK_HOBJECT_SET_PROTOTYPE(heap,h,x) do { \ + (h)->prototype = (x); \ + } while (0) +#endif + +/* Set prototype, DECREF earlier value, INCREF new value (tolerating NULLs). */ +#define DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr,h,p) duk_hobject_set_prototype_updref((thr), (h), (p)) + +/* Set initial prototype, assume NULL previous prototype, INCREF new value, + * tolerate NULL. + */ +#define DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr,h,proto) do { \ + duk_hthread *duk__thr = (thr); \ + duk_hobject *duk__obj = (h); \ + duk_hobject *duk__proto = (proto); \ + DUK_UNREF(duk__thr); \ + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(duk__thr->heap, duk__obj) == NULL); \ + DUK_HOBJECT_SET_PROTOTYPE(duk__thr->heap, duk__obj, duk__proto); \ + DUK_HOBJECT_INCREF_ALLOWNULL(duk__thr, duk__proto); \ + } while (0) + +/* + * Finalizer check + */ + +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HOBJECT_HAS_FINALIZER_FAST(heap,h) duk_hobject_has_finalizer_fast_raw((heap), (h)) +#else +#define DUK_HOBJECT_HAS_FINALIZER_FAST(heap,h) duk_hobject_has_finalizer_fast_raw((h)) +#endif + +/* + * Resizing and hash behavior + */ + +/* Sanity limit on max number of properties (allocated, not necessarily used). + * This is somewhat arbitrary, but if we're close to 2**32 properties some + * algorithms will fail (e.g. hash size selection, next prime selection). + * Also, we use negative array/entry table indices to indicate 'not found', + * so anything above 0x80000000 will cause trouble now. + */ +#if defined(DUK_USE_OBJSIZES16) +#define DUK_HOBJECT_MAX_PROPERTIES 0x0000ffffUL +#else +#define DUK_HOBJECT_MAX_PROPERTIES 0x3fffffffUL /* 2**30-1 ~= 1G properties */ +#endif + +/* internal align target for props allocation, must be 2*n for some n */ +#if (DUK_USE_ALIGN_BY == 4) +#define DUK_HOBJECT_ALIGN_TARGET 4 +#elif (DUK_USE_ALIGN_BY == 8) +#define DUK_HOBJECT_ALIGN_TARGET 8 +#elif (DUK_USE_ALIGN_BY == 1) +#define DUK_HOBJECT_ALIGN_TARGET 1 +#else +#error invalid DUK_USE_ALIGN_BY +#endif + +/* + * PC-to-line constants + */ + +#define DUK_PC2LINE_SKIP 64 + +/* maximum length for a SKIP-1 diffstream: 35 bits per entry, rounded up to bytes */ +#define DUK_PC2LINE_MAX_DIFF_LENGTH (((DUK_PC2LINE_SKIP - 1) * 35 + 7) / 8) + +/* + * Struct defs + */ + +struct duk_propaccessor { + duk_hobject *get; + duk_hobject *set; +}; + +union duk_propvalue { + /* The get/set pointers could be 16-bit pointer compressed but it + * would make no difference on 32-bit platforms because duk_tval is + * 8 bytes or more anyway. + */ + duk_tval v; + duk_propaccessor a; +}; + +struct duk_propdesc { + /* read-only values 'lifted' for ease of use */ + duk_small_uint_t flags; + duk_hobject *get; + duk_hobject *set; + + /* for updating (all are set to < 0 for virtual properties) */ + duk_int_t e_idx; /* prop index in 'entry part', < 0 if not there */ + duk_int_t h_idx; /* prop index in 'hash part', < 0 if not there */ + duk_int_t a_idx; /* prop index in 'array part', < 0 if not there */ +}; + +struct duk_hobject { + duk_heaphdr hdr; + + /* + * 'props' contains {key,value,flags} entries, optional array entries, and + * an optional hash lookup table for non-array entries in a single 'sliced' + * allocation. There are several layout options, which differ slightly in + * generated code size/speed and alignment/padding; duk_features.h selects + * the layout used. + * + * Layout 1 (DUK_USE_HOBJECT_LAYOUT_1): + * + * e_size * sizeof(duk_hstring *) bytes of entry keys (e_next gc reachable) + * e_size * sizeof(duk_propvalue) bytes of entry values (e_next gc reachable) + * e_size * sizeof(duk_uint8_t) bytes of entry flags (e_next gc reachable) + * a_size * sizeof(duk_tval) bytes of (opt) array values (plain only) (all gc reachable) + * h_size * sizeof(duk_uint32_t) bytes of (opt) hash indexes to entries (e_size), + * 0xffffffffUL = unused, 0xfffffffeUL = deleted + * + * Layout 2 (DUK_USE_HOBJECT_LAYOUT_2): + * + * e_size * sizeof(duk_propvalue) bytes of entry values (e_next gc reachable) + * e_size * sizeof(duk_hstring *) bytes of entry keys (e_next gc reachable) + * e_size * sizeof(duk_uint8_t) + pad bytes of entry flags (e_next gc reachable) + * a_size * sizeof(duk_tval) bytes of (opt) array values (plain only) (all gc reachable) + * h_size * sizeof(duk_uint32_t) bytes of (opt) hash indexes to entries (e_size), + * 0xffffffffUL = unused, 0xfffffffeUL = deleted + * + * Layout 3 (DUK_USE_HOBJECT_LAYOUT_3): + * + * e_size * sizeof(duk_propvalue) bytes of entry values (e_next gc reachable) + * a_size * sizeof(duk_tval) bytes of (opt) array values (plain only) (all gc reachable) + * e_size * sizeof(duk_hstring *) bytes of entry keys (e_next gc reachable) + * h_size * sizeof(duk_uint32_t) bytes of (opt) hash indexes to entries (e_size), + * 0xffffffffUL = unused, 0xfffffffeUL = deleted + * e_size * sizeof(duk_uint8_t) bytes of entry flags (e_next gc reachable) + * + * In layout 1, the 'e_next' count is rounded to 4 or 8 on platforms + * requiring 4 or 8 byte alignment. This ensures proper alignment + * for the entries, at the cost of memory footprint. However, it's + * probably preferable to use another layout on such platforms instead. + * + * In layout 2, the key and value parts are swapped to avoid padding + * the key array on platforms requiring alignment by 8. The flags part + * is padded to get alignment for array entries. The 'e_next' count does + * not need to be rounded as in layout 1. + * + * In layout 3, entry values and array values are always aligned properly, + * and assuming pointers are at most 8 bytes, so are the entry keys. Hash + * indices will be properly aligned (assuming pointers are at least 4 bytes). + * Finally, flags don't need additional alignment. This layout provides + * compact allocations without padding (even on platforms with alignment + * requirements) at the cost of a bit slower lookups. + * + * Objects with few keys don't have a hash index; keys are looked up linearly, + * which is cache efficient because the keys are consecutive. Larger objects + * have a hash index part which contains integer indexes to the entries part. + * + * A single allocation reduces memory allocation overhead but requires more + * work when any part needs to be resized. A sliced allocation for entries + * makes linear key matching faster on most platforms (more locality) and + * skimps on flags size (which would be followed by 3 bytes of padding in + * most architectures if entries were placed in a struct). + * + * 'props' also contains internal properties distinguished with a non-BMP + * prefix. Often used properties should be placed early in 'props' whenever + * possible to make accessing them as fast a possible. + */ + +#if defined(DUK_USE_HEAPPTR16) + /* Located in duk_heaphdr h_extra16. Subclasses of duk_hobject (like + * duk_hcompfunc) are not free to use h_extra16 for this reason. + */ +#else + duk_uint8_t *props; +#endif + + /* prototype: the only internal property lifted outside 'e' as it is so central */ +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t prototype16; +#else + duk_hobject *prototype; +#endif + +#if defined(DUK_USE_OBJSIZES16) + duk_uint16_t e_size16; + duk_uint16_t e_next16; + duk_uint16_t a_size16; +#if defined(DUK_USE_HOBJECT_HASH_PART) + duk_uint16_t h_size16; +#endif +#else + duk_uint32_t e_size; /* entry part size */ + duk_uint32_t e_next; /* index for next new key ([0,e_next[ are gc reachable) */ + duk_uint32_t a_size; /* array part size (entirely gc reachable) */ +#if defined(DUK_USE_HOBJECT_HASH_PART) + duk_uint32_t h_size; /* hash part size or 0 if unused */ +#endif +#endif +}; + +/* + * Exposed data + */ + +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL duk_uint8_t duk_class_number_to_stridx[32]; +#endif /* !DUK_SINGLE_FILE */ + +/* + * Prototypes + */ + +/* alloc and init */ +DUK_INTERNAL_DECL duk_hobject *duk_hobject_alloc_unchecked(duk_heap *heap, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hobject *duk_hobject_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_harray *duk_harray_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hcompfunc *duk_hcompfunc_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hnatfunc *duk_hnatfunc_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hboundfunc *duk_hboundfunc_alloc(duk_heap *heap, duk_uint_t hobject_flags); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL_DECL duk_hbufobj *duk_hbufobj_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +#endif +DUK_INTERNAL_DECL duk_hthread *duk_hthread_alloc_unchecked(duk_heap *heap, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hthread *duk_hthread_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hdecenv *duk_hdecenv_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hobjenv *duk_hobjenv_alloc(duk_hthread *thr, duk_uint_t hobject_flags); +DUK_INTERNAL_DECL duk_hproxy *duk_hproxy_alloc(duk_hthread *thr, duk_uint_t hobject_flags); + +/* resize */ +DUK_INTERNAL_DECL void duk_hobject_realloc_props(duk_hthread *thr, + duk_hobject *obj, + duk_uint32_t new_e_size, + duk_uint32_t new_a_size, + duk_uint32_t new_h_size, + duk_bool_t abandon_array); +DUK_INTERNAL_DECL void duk_hobject_resize_entrypart(duk_hthread *thr, + duk_hobject *obj, + duk_uint32_t new_e_size); +#if 0 /*unused*/ +DUK_INTERNAL_DECL void duk_hobject_resize_arraypart(duk_hthread *thr, + duk_hobject *obj, + duk_uint32_t new_a_size); +#endif + +/* low-level property functions */ +DUK_INTERNAL_DECL duk_bool_t duk_hobject_find_entry(duk_heap *heap, duk_hobject *obj, duk_hstring *key, duk_int_t *e_idx, duk_int_t *h_idx); +DUK_INTERNAL_DECL duk_tval *duk_hobject_find_entry_tval_ptr(duk_heap *heap, duk_hobject *obj, duk_hstring *key); +DUK_INTERNAL_DECL duk_tval *duk_hobject_find_entry_tval_ptr_stridx(duk_heap *heap, duk_hobject *obj, duk_small_uint_t stridx); +DUK_INTERNAL_DECL duk_tval *duk_hobject_find_entry_tval_ptr_and_attrs(duk_heap *heap, duk_hobject *obj, duk_hstring *key, duk_uint_t *out_attrs); +DUK_INTERNAL_DECL duk_tval *duk_hobject_find_array_entry_tval_ptr(duk_heap *heap, duk_hobject *obj, duk_uarridx_t i); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_get_own_propdesc(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *out_desc, duk_small_uint_t flags); + +/* core property functions */ +DUK_INTERNAL_DECL duk_bool_t duk_hobject_getprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_putprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key, duk_tval *tv_val, duk_bool_t throw_flag); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_delprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key, duk_bool_t throw_flag); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_hasprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key); + +/* internal property functions */ +#define DUK_DELPROP_FLAG_THROW (1U << 0) +#define DUK_DELPROP_FLAG_FORCE (1U << 1) +DUK_INTERNAL_DECL duk_bool_t duk_hobject_delprop_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_small_uint_t flags); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_hasprop_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key); +DUK_INTERNAL_DECL void duk_hobject_define_property_internal(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_small_uint_t flags); +DUK_INTERNAL_DECL void duk_hobject_define_property_internal_arridx(duk_hthread *thr, duk_hobject *obj, duk_uarridx_t arr_idx, duk_small_uint_t flags); +DUK_INTERNAL_DECL duk_size_t duk_hobject_get_length(duk_hthread *thr, duk_hobject *obj); +#if defined(DUK_USE_HEAPPTR16) +DUK_INTERNAL_DECL duk_bool_t duk_hobject_has_finalizer_fast_raw(duk_heap *heap, duk_hobject *obj); +#else +DUK_INTERNAL_DECL duk_bool_t duk_hobject_has_finalizer_fast_raw(duk_hobject *obj); +#endif + +/* helpers for defineProperty() and defineProperties() */ +DUK_INTERNAL_DECL void duk_hobject_prepare_property_descriptor(duk_hthread *thr, + duk_idx_t idx_in, + duk_uint_t *out_defprop_flags, + duk_idx_t *out_idx_value, + duk_hobject **out_getter, + duk_hobject **out_setter); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_define_property_helper(duk_hthread *thr, + duk_uint_t defprop_flags, + duk_hobject *obj, + duk_hstring *key, + duk_idx_t idx_value, + duk_hobject *get, + duk_hobject *set, + duk_bool_t throw_flag); + +/* Object built-in methods */ +DUK_INTERNAL_DECL void duk_hobject_object_get_own_property_descriptor(duk_hthread *thr, duk_idx_t obj_idx); +DUK_INTERNAL_DECL void duk_hobject_object_seal_freeze_helper(duk_hthread *thr, duk_hobject *obj, duk_bool_t is_freeze); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_object_is_sealed_frozen_helper(duk_hthread *thr, duk_hobject *obj, duk_bool_t is_frozen); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_object_ownprop_helper(duk_hthread *thr, duk_small_uint_t required_desc_flags); + +/* internal properties */ +DUK_INTERNAL_DECL duk_tval *duk_hobject_get_internal_value_tval_ptr(duk_heap *heap, duk_hobject *obj); +DUK_INTERNAL_DECL duk_hstring *duk_hobject_get_internal_value_string(duk_heap *heap, duk_hobject *obj); +DUK_INTERNAL_DECL duk_harray *duk_hobject_get_formals(duk_hthread *thr, duk_hobject *obj); +DUK_INTERNAL_DECL duk_hobject *duk_hobject_get_varmap(duk_hthread *thr, duk_hobject *obj); + +/* hobject management functions */ +DUK_INTERNAL_DECL void duk_hobject_compact_props(duk_hthread *thr, duk_hobject *obj); + +/* ES2015 proxy */ +#if defined(DUK_USE_ES6_PROXY) +DUK_INTERNAL_DECL duk_bool_t duk_hobject_proxy_check(duk_hobject *obj, duk_hobject **out_target, duk_hobject **out_handler); +DUK_INTERNAL_DECL duk_hobject *duk_hobject_resolve_proxy_target(duk_hobject *obj); +#endif + +/* enumeration */ +DUK_INTERNAL_DECL void duk_hobject_enumerator_create(duk_hthread *thr, duk_small_uint_t enum_flags); +DUK_INTERNAL_DECL duk_ret_t duk_hobject_get_enumerated_keys(duk_hthread *thr, duk_small_uint_t enum_flags); +DUK_INTERNAL_DECL duk_bool_t duk_hobject_enumerator_next(duk_hthread *thr, duk_bool_t get_value); + +/* macros */ +DUK_INTERNAL_DECL void duk_hobject_set_prototype_updref(duk_hthread *thr, duk_hobject *h, duk_hobject *p); + +/* pc2line */ +#if defined(DUK_USE_PC2LINE) +DUK_INTERNAL_DECL void duk_hobject_pc2line_pack(duk_hthread *thr, duk_compiler_instr *instrs, duk_uint_fast32_t length); +DUK_INTERNAL_DECL duk_uint_fast32_t duk_hobject_pc2line_query(duk_hthread *thr, duk_idx_t idx_func, duk_uint_fast32_t pc); +#endif + +/* misc */ +DUK_INTERNAL_DECL duk_bool_t duk_hobject_prototype_chain_contains(duk_hthread *thr, duk_hobject *h, duk_hobject *p, duk_bool_t ignore_loop); + +#if !defined(DUK_USE_OBJECT_BUILTIN) +/* These declarations are needed when related built-in is disabled and + * genbuiltins.py won't automatically emit the declerations. + */ +DUK_INTERNAL_DECL duk_ret_t duk_bi_object_prototype_to_string(duk_hthread *thr); +DUK_INTERNAL_DECL duk_ret_t duk_bi_function_prototype(duk_hthread *thr); +#endif + +#endif /* DUK_HOBJECT_H_INCLUDED */ +/* #include duk_hcompfunc.h */ +#line 1 "duk_hcompfunc.h" +/* + * Heap compiled function (ECMAScript function) representation. + * + * There is a single data buffer containing the ECMAScript function's + * bytecode, constants, and inner functions. + */ + +#if !defined(DUK_HCOMPFUNC_H_INCLUDED) +#define DUK_HCOMPFUNC_H_INCLUDED + +/* + * Field accessor macros + */ + +/* XXX: casts could be improved, especially for GET/SET DATA */ + +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HCOMPFUNC_GET_DATA(heap,h) \ + ((duk_hbuffer_fixed *) (void *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->data16)) +#define DUK_HCOMPFUNC_SET_DATA(heap,h,v) do { \ + (h)->data16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (v)); \ + } while (0) +#define DUK_HCOMPFUNC_GET_FUNCS(heap,h) \ + ((duk_hobject **) (void *) (DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->funcs16))) +#define DUK_HCOMPFUNC_SET_FUNCS(heap,h,v) do { \ + (h)->funcs16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (v)); \ + } while (0) +#define DUK_HCOMPFUNC_GET_BYTECODE(heap,h) \ + ((duk_instr_t *) (void *) (DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->bytecode16))) +#define DUK_HCOMPFUNC_SET_BYTECODE(heap,h,v) do { \ + (h)->bytecode16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (v)); \ + } while (0) +#define DUK_HCOMPFUNC_GET_LEXENV(heap,h) \ + ((duk_hobject *) (void *) (DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->lex_env16))) +#define DUK_HCOMPFUNC_SET_LEXENV(heap,h,v) do { \ + (h)->lex_env16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (v)); \ + } while (0) +#define DUK_HCOMPFUNC_GET_VARENV(heap,h) \ + ((duk_hobject *) (void *) (DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (h)->var_env16))) +#define DUK_HCOMPFUNC_SET_VARENV(heap,h,v) do { \ + (h)->var_env16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (v)); \ + } while (0) +#else +#define DUK_HCOMPFUNC_GET_DATA(heap,h) ((duk_hbuffer_fixed *) (void *) (h)->data) +#define DUK_HCOMPFUNC_SET_DATA(heap,h,v) do { \ + (h)->data = (duk_hbuffer *) (v); \ + } while (0) +#define DUK_HCOMPFUNC_GET_FUNCS(heap,h) ((h)->funcs) +#define DUK_HCOMPFUNC_SET_FUNCS(heap,h,v) do { \ + (h)->funcs = (v); \ + } while (0) +#define DUK_HCOMPFUNC_GET_BYTECODE(heap,h) ((h)->bytecode) +#define DUK_HCOMPFUNC_SET_BYTECODE(heap,h,v) do { \ + (h)->bytecode = (v); \ + } while (0) +#define DUK_HCOMPFUNC_GET_LEXENV(heap,h) ((h)->lex_env) +#define DUK_HCOMPFUNC_SET_LEXENV(heap,h,v) do { \ + (h)->lex_env = (v); \ + } while (0) +#define DUK_HCOMPFUNC_GET_VARENV(heap,h) ((h)->var_env) +#define DUK_HCOMPFUNC_SET_VARENV(heap,h,v) do { \ + (h)->var_env = (v); \ + } while (0) +#endif + +/* + * Accessor macros for function specific data areas + */ + +/* Note: assumes 'data' is always a fixed buffer */ +#define DUK_HCOMPFUNC_GET_BUFFER_BASE(heap,h) \ + DUK_HBUFFER_FIXED_GET_DATA_PTR((heap), DUK_HCOMPFUNC_GET_DATA((heap), (h))) + +#define DUK_HCOMPFUNC_GET_CONSTS_BASE(heap,h) \ + ((duk_tval *) (void *) DUK_HCOMPFUNC_GET_BUFFER_BASE((heap), (h))) + +#define DUK_HCOMPFUNC_GET_FUNCS_BASE(heap,h) \ + DUK_HCOMPFUNC_GET_FUNCS((heap), (h)) + +#define DUK_HCOMPFUNC_GET_CODE_BASE(heap,h) \ + DUK_HCOMPFUNC_GET_BYTECODE((heap), (h)) + +#define DUK_HCOMPFUNC_GET_CONSTS_END(heap,h) \ + ((duk_tval *) (void *) DUK_HCOMPFUNC_GET_FUNCS((heap), (h))) + +#define DUK_HCOMPFUNC_GET_FUNCS_END(heap,h) \ + ((duk_hobject **) (void *) DUK_HCOMPFUNC_GET_BYTECODE((heap), (h))) + +/* XXX: double evaluation of DUK_HCOMPFUNC_GET_DATA() */ +#define DUK_HCOMPFUNC_GET_CODE_END(heap,h) \ + ((duk_instr_t *) (void *) (DUK_HBUFFER_FIXED_GET_DATA_PTR((heap), DUK_HCOMPFUNC_GET_DATA((heap), (h))) + \ + DUK_HBUFFER_GET_SIZE((duk_hbuffer *) DUK_HCOMPFUNC_GET_DATA((heap), h)))) + +#define DUK_HCOMPFUNC_GET_CONSTS_SIZE(heap,h) \ + ( \ + (duk_size_t) \ + ( \ + ((const duk_uint8_t *) DUK_HCOMPFUNC_GET_CONSTS_END((heap), (h))) - \ + ((const duk_uint8_t *) DUK_HCOMPFUNC_GET_CONSTS_BASE((heap), (h))) \ + ) \ + ) + +#define DUK_HCOMPFUNC_GET_FUNCS_SIZE(heap,h) \ + ( \ + (duk_size_t) \ + ( \ + ((const duk_uint8_t *) DUK_HCOMPFUNC_GET_FUNCS_END((heap), (h))) - \ + ((const duk_uint8_t *) DUK_HCOMPFUNC_GET_FUNCS_BASE((heap), (h))) \ + ) \ + ) + +#define DUK_HCOMPFUNC_GET_CODE_SIZE(heap,h) \ + ( \ + (duk_size_t) \ + ( \ + ((const duk_uint8_t *) DUK_HCOMPFUNC_GET_CODE_END((heap),(h))) - \ + ((const duk_uint8_t *) DUK_HCOMPFUNC_GET_CODE_BASE((heap),(h))) \ + ) \ + ) + +#define DUK_HCOMPFUNC_GET_CONSTS_COUNT(heap,h) \ + ((duk_size_t) (DUK_HCOMPFUNC_GET_CONSTS_SIZE((heap), (h)) / sizeof(duk_tval))) + +#define DUK_HCOMPFUNC_GET_FUNCS_COUNT(heap,h) \ + ((duk_size_t) (DUK_HCOMPFUNC_GET_FUNCS_SIZE((heap), (h)) / sizeof(duk_hobject *))) + +#define DUK_HCOMPFUNC_GET_CODE_COUNT(heap,h) \ + ((duk_size_t) (DUK_HCOMPFUNC_GET_CODE_SIZE((heap), (h)) / sizeof(duk_instr_t))) + +/* + * Validity assert + */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hcompfunc_assert_valid(duk_hcompfunc *h); +#define DUK_HCOMPFUNC_ASSERT_VALID(h) do { duk_hcompfunc_assert_valid((h)); } while (0) +#else +#define DUK_HCOMPFUNC_ASSERT_VALID(h) do {} while (0) +#endif + +/* + * Main struct + */ + +struct duk_hcompfunc { + /* shared object part */ + duk_hobject obj; + + /* + * Pointers to function data area for faster access. Function + * data is a buffer shared between all closures of the same + * "template" function. The data buffer is always fixed (non- + * dynamic, hence stable), with a layout as follows: + * + * constants (duk_tval) + * inner functions (duk_hobject *) + * bytecode (duk_instr_t) + * + * Note: bytecode end address can be computed from 'data' buffer + * size. It is not strictly necessary functionally, assuming + * bytecode never jumps outside its allocated area. However, + * it's a safety/robustness feature for avoiding the chance of + * executing random data as bytecode due to a compiler error. + * + * Note: values in the data buffer must be incref'd (they will + * be decref'd on release) for every compiledfunction referring + * to the 'data' element. + */ + + /* Data area, fixed allocation, stable data ptrs. */ +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t data16; +#else + duk_hbuffer *data; +#endif + + /* No need for constants pointer (= same as data). + * + * When using 16-bit packing alignment to 4 is nice. 'funcs' will be + * 4-byte aligned because 'constants' are duk_tvals. For now the + * inner function pointers are not compressed, so that 'bytecode' will + * also be 4-byte aligned. + */ +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t funcs16; + duk_uint16_t bytecode16; +#else + duk_hobject **funcs; + duk_instr_t *bytecode; +#endif + + /* Lexenv: lexical environment of closure, NULL for templates. + * Varenv: variable environment of closure, NULL for templates. + */ +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t lex_env16; + duk_uint16_t var_env16; +#else + duk_hobject *lex_env; + duk_hobject *var_env; +#endif + + /* + * 'nregs' registers are allocated on function entry, at most 'nargs' + * are initialized to arguments, and the rest to undefined. Arguments + * above 'nregs' are not mapped to registers. All registers in the + * active stack range must be initialized because they are GC reachable. + * 'nargs' is needed so that if the function is given more than 'nargs' + * arguments, the additional arguments do not 'clobber' registers + * beyond 'nregs' which must be consistently initialized to undefined. + * + * Usually there is no need to know which registers are mapped to + * local variables. Registers may be allocated to variable in any + * way (even including gaps). However, a register-variable mapping + * must be the same for the duration of the function execution and + * the register cannot be used for anything else. + * + * When looking up variables by name, the '_Varmap' map is used. + * When an activation closes, registers mapped to arguments are + * copied into the environment record based on the same map. The + * reverse map (from register to variable) is not currently needed + * at run time, except for debugging, so it is not maintained. + */ + + duk_uint16_t nregs; /* regs to allocate */ + duk_uint16_t nargs; /* number of arguments allocated to regs */ + + /* + * Additional control information is placed into the object itself + * as internal properties to avoid unnecessary fields for the + * majority of functions. The compiler tries to omit internal + * control fields when possible. + * + * Function templates: + * + * { + * name: "func", // declaration, named function expressions + * fileName: + * _Varmap: { "arg1": 0, "arg2": 1, "varname": 2 }, + * _Formals: [ "arg1", "arg2" ], + * _Source: "function func(arg1, arg2) { ... }", + * _Pc2line: , + * } + * + * Function instances: + * + * { + * length: 2, + * prototype: { constructor: }, + * caller: , + * arguments: , + * name: "func", // declaration, named function expressions + * fileName: + * _Varmap: { "arg1": 0, "arg2": 1, "varname": 2 }, + * _Formals: [ "arg1", "arg2" ], + * _Source: "function func(arg1, arg2) { ... }", + * _Pc2line: , + * } + * + * More detailed description of these properties can be found + * in the documentation. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + /* Line number range for function. Needed during debugging to + * determine active breakpoints. + */ + duk_uint32_t start_line; + duk_uint32_t end_line; +#endif +}; + +#endif /* DUK_HCOMPFUNC_H_INCLUDED */ +/* #include duk_hnatfunc.h */ +#line 1 "duk_hnatfunc.h" +/* + * Heap native function representation. + */ + +#if !defined(DUK_HNATFUNC_H_INCLUDED) +#define DUK_HNATFUNC_H_INCLUDED + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hnatfunc_assert_valid(duk_hnatfunc *h); +#define DUK_HNATFUNC_ASSERT_VALID(h) do { duk_hnatfunc_assert_valid((h)); } while (0) +#else +#define DUK_HNATFUNC_ASSERT_VALID(h) do {} while (0) +#endif + +#define DUK_HNATFUNC_NARGS_VARARGS ((duk_int16_t) -1) +#define DUK_HNATFUNC_NARGS_MAX ((duk_int16_t) 0x7fff) + +struct duk_hnatfunc { + /* shared object part */ + duk_hobject obj; + + duk_c_function func; + duk_int16_t nargs; + duk_int16_t magic; + + /* The 'magic' field allows an opaque 16-bit field to be accessed by the + * Duktape/C function. This allows, for instance, the same native function + * to be used for a set of very similar functions, with the 'magic' field + * providing the necessary non-argument flags / values to guide the behavior + * of the native function. The value is signed on purpose: it is easier to + * convert a signed value to unsigned (simply AND with 0xffff) than vice + * versa. + * + * Note: cannot place nargs/magic into the heaphdr flags, because + * duk_hobject takes almost all flags already. + */ +}; + +#endif /* DUK_HNATFUNC_H_INCLUDED */ +/* #include duk_hboundfunc.h */ +#line 1 "duk_hboundfunc.h" +/* + * Bound function representation. + */ + +#if !defined(DUK_HBOUNDFUNC_H_INCLUDED) +#define DUK_HBOUNDFUNC_H_INCLUDED + +/* Artificial limit for args length. Ensures arithmetic won't overflow + * 32 bits when combining bound functions. + */ +#define DUK_HBOUNDFUNC_MAX_ARGS 0x20000000UL + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hboundfunc_assert_valid(duk_hboundfunc *h); +#define DUK_HBOUNDFUNC_ASSERT_VALID(h) do { duk_hboundfunc_assert_valid((h)); } while (0) +#else +#define DUK_HBOUNDFUNC_ASSERT_VALID(h) do {} while (0) +#endif + +struct duk_hboundfunc { + /* Shared object part. */ + duk_hobject obj; + + /* Final target function, stored as duk_tval so that lightfunc can be + * represented too. + */ + duk_tval target; + + /* This binding. */ + duk_tval this_binding; + + /* Arguments to prepend. */ + duk_tval *args; /* Separate allocation. */ + duk_idx_t nargs; +}; + +#endif /* DUK_HBOUNDFUNC_H_INCLUDED */ +/* #include duk_hbufobj.h */ +#line 1 "duk_hbufobj.h" +/* + * Heap Buffer object representation. Used for all Buffer variants. + */ + +#if !defined(DUK_HBUFOBJ_H_INCLUDED) +#define DUK_HBUFOBJ_H_INCLUDED + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + +/* All element accessors are host endian now (driven by TypedArray spec). */ +#define DUK_HBUFOBJ_ELEM_UINT8 0 +#define DUK_HBUFOBJ_ELEM_UINT8CLAMPED 1 +#define DUK_HBUFOBJ_ELEM_INT8 2 +#define DUK_HBUFOBJ_ELEM_UINT16 3 +#define DUK_HBUFOBJ_ELEM_INT16 4 +#define DUK_HBUFOBJ_ELEM_UINT32 5 +#define DUK_HBUFOBJ_ELEM_INT32 6 +#define DUK_HBUFOBJ_ELEM_FLOAT32 7 +#define DUK_HBUFOBJ_ELEM_FLOAT64 8 +#define DUK_HBUFOBJ_ELEM_MAX 8 + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hbufobj_assert_valid(duk_hbufobj *h); +#define DUK_HBUFOBJ_ASSERT_VALID(h) do { duk_hbufobj_assert_valid((h)); } while (0) +#else +#define DUK_HBUFOBJ_ASSERT_VALID(h) do {} while (0) +#endif + +/* Get the current data pointer (caller must ensure buf != NULL) as a + * duk_uint8_t ptr. Note that the result may be NULL if the underlying + * buffer has zero size and is not a fixed buffer. + */ +#define DUK_HBUFOBJ_GET_SLICE_BASE(heap,h) \ + (DUK_ASSERT_EXPR((h) != NULL), DUK_ASSERT_EXPR((h)->buf != NULL), \ + (((duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR((heap), (h)->buf)) + (h)->offset)) + +/* True if slice is full, i.e. offset is zero and length covers the entire + * buffer. This status may change independently of the duk_hbufobj if + * the underlying buffer is dynamic and changes without the hbufobj + * being changed. + */ +#define DUK_HBUFOBJ_FULL_SLICE(h) \ + (DUK_ASSERT_EXPR((h) != NULL), DUK_ASSERT_EXPR((h)->buf != NULL), \ + ((h)->offset == 0 && (h)->length == DUK_HBUFFER_GET_SIZE((h)->buf))) + +/* Validate that the whole slice [0,length[ is contained in the underlying + * buffer. Caller must ensure 'buf' != NULL. + */ +#define DUK_HBUFOBJ_VALID_SLICE(h) \ + (DUK_ASSERT_EXPR((h) != NULL), DUK_ASSERT_EXPR((h)->buf != NULL), \ + ((h)->offset + (h)->length <= DUK_HBUFFER_GET_SIZE((h)->buf))) + +/* Validate byte read/write for virtual 'offset', i.e. check that the + * offset, taking into account h->offset, is within the underlying + * buffer size. This is a safety check which is needed to ensure + * that even a misconfigured duk_hbufobj never causes memory unsafe + * behavior (e.g. if an underlying dynamic buffer changes after being + * setup). Caller must ensure 'buf' != NULL. + */ +#define DUK_HBUFOBJ_VALID_BYTEOFFSET_INCL(h,off) \ + (DUK_ASSERT_EXPR((h) != NULL), DUK_ASSERT_EXPR((h)->buf != NULL), \ + ((h)->offset + (off) < DUK_HBUFFER_GET_SIZE((h)->buf))) + +#define DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h,off) \ + (DUK_ASSERT_EXPR((h) != NULL), DUK_ASSERT_EXPR((h)->buf != NULL), \ + ((h)->offset + (off) <= DUK_HBUFFER_GET_SIZE((h)->buf))) + +/* Clamp an input byte length (already assumed to be within the nominal + * duk_hbufobj 'length') to the current dynamic buffer limits to yield + * a byte length limit that's safe for memory accesses. This value can + * be invalidated by any side effect because it may trigger a user + * callback that resizes the underlying buffer. + */ +#define DUK_HBUFOBJ_CLAMP_BYTELENGTH(h,len) \ + (DUK_ASSERT_EXPR((h) != NULL), \ + duk_hbufobj_clamp_bytelength((h), (len))) + +/* Typed arrays have virtual indices, ArrayBuffer and DataView do not. */ +#define DUK_HBUFOBJ_HAS_VIRTUAL_INDICES(h) ((h)->is_typedarray) + +struct duk_hbufobj { + /* Shared object part. */ + duk_hobject obj; + + /* Underlying buffer (refcounted), may be NULL. */ + duk_hbuffer *buf; + + /* .buffer reference to an ArrayBuffer, may be NULL. */ + duk_hobject *buf_prop; + + /* Slice and accessor information. + * + * Because the underlying buffer may be dynamic, these may be + * invalidated by the buffer being modified so that both offset + * and length should be validated before every access. Behavior + * when the underlying buffer has changed doesn't need to be clean: + * virtual 'length' doesn't need to be affected, reads can return + * zero/NaN, and writes can be ignored. + * + * Note that a data pointer cannot be precomputed because 'buf' may + * be dynamic and its pointer unstable. + */ + + duk_uint_t offset; /* byte offset to buf */ + duk_uint_t length; /* byte index limit for element access, exclusive */ + duk_uint8_t shift; /* element size shift: + * 0 = u8/i8 + * 1 = u16/i16 + * 2 = u32/i32/float + * 3 = double + */ + duk_uint8_t elem_type; /* element type */ + duk_uint8_t is_typedarray; +}; + +DUK_INTERNAL_DECL duk_uint_t duk_hbufobj_clamp_bytelength(duk_hbufobj *h_bufobj, duk_uint_t len); +DUK_INTERNAL_DECL void duk_hbufobj_push_uint8array_from_plain(duk_hthread *thr, duk_hbuffer *h_buf); +DUK_INTERNAL_DECL void duk_hbufobj_push_validated_read(duk_hthread *thr, duk_hbufobj *h_bufobj, duk_uint8_t *p, duk_small_uint_t elem_size); +DUK_INTERNAL_DECL void duk_hbufobj_validated_write(duk_hthread *thr, duk_hbufobj *h_bufobj, duk_uint8_t *p, duk_small_uint_t elem_size); +DUK_INTERNAL_DECL void duk_hbufobj_promote_plain(duk_hthread *thr, duk_idx_t idx); + +#else /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* nothing */ + +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ +#endif /* DUK_HBUFOBJ_H_INCLUDED */ +/* #include duk_hthread.h */ +#line 1 "duk_hthread.h" +/* + * Heap thread object representation. + * + * duk_hthread is also the 'context' for public API functions via a + * different typedef. Most API calls operate on the topmost frame + * of the value stack only. + */ + +#if !defined(DUK_HTHREAD_H_INCLUDED) +#define DUK_HTHREAD_H_INCLUDED + +/* + * Stack constants + */ + +/* Initial valstack size, roughly 0.7kiB. */ +#define DUK_VALSTACK_INITIAL_SIZE 96U + +/* Internal extra elements assumed on function entry, always added to + * user-defined 'extra' for e.g. the duk_check_stack() call. + */ +#define DUK_VALSTACK_INTERNAL_EXTRA 32U + +/* Number of elements guaranteed to be user accessible (in addition to call + * arguments) on Duktape/C function entry. This is the major public API + * commitment. + */ +#define DUK_VALSTACK_API_ENTRY_MINIMUM DUK_API_ENTRY_STACK + +/* + * Activation defines + */ + +#define DUK_ACT_FLAG_STRICT (1U << 0) /* function executes in strict mode */ +#define DUK_ACT_FLAG_TAILCALLED (1U << 1) /* activation has tail called one or more times */ +#define DUK_ACT_FLAG_CONSTRUCT (1U << 2) /* function executes as a constructor (called via "new") */ +#define DUK_ACT_FLAG_PREVENT_YIELD (1U << 3) /* activation prevents yield (native call or "new") */ +#define DUK_ACT_FLAG_DIRECT_EVAL (1U << 4) /* activation is a direct eval call */ +#define DUK_ACT_FLAG_CONSTRUCT_PROXY (1U << 5) /* activation is for Proxy 'construct' call, special return value handling */ +#define DUK_ACT_FLAG_BREAKPOINT_ACTIVE (1U << 6) /* activation has active breakpoint(s) */ + +#define DUK_ACT_GET_FUNC(act) ((act)->func) + +/* + * Flags for __FILE__ / __LINE__ registered into tracedata + */ + +#define DUK_TB_FLAG_NOBLAME_FILELINE (1U << 0) /* don't report __FILE__ / __LINE__ as fileName/lineNumber */ + +/* + * Catcher defines + */ + +/* XXX: remove catcher type entirely */ + +/* flags field: LLLLLLFT, L = label (24 bits), F = flags (4 bits), T = type (4 bits) */ +#define DUK_CAT_TYPE_MASK 0x0000000fUL +#define DUK_CAT_TYPE_BITS 4 +#define DUK_CAT_LABEL_MASK 0xffffff00UL +#define DUK_CAT_LABEL_BITS 24 +#define DUK_CAT_LABEL_SHIFT 8 + +#define DUK_CAT_FLAG_CATCH_ENABLED (1U << 4) /* catch part will catch */ +#define DUK_CAT_FLAG_FINALLY_ENABLED (1U << 5) /* finally part will catch */ +#define DUK_CAT_FLAG_CATCH_BINDING_ENABLED (1U << 6) /* request to create catch binding */ +#define DUK_CAT_FLAG_LEXENV_ACTIVE (1U << 7) /* catch or with binding is currently active */ + +#define DUK_CAT_TYPE_UNKNOWN 0 +#define DUK_CAT_TYPE_TCF 1 +#define DUK_CAT_TYPE_LABEL 2 + +#define DUK_CAT_GET_TYPE(c) ((c)->flags & DUK_CAT_TYPE_MASK) +#define DUK_CAT_GET_LABEL(c) (((c)->flags & DUK_CAT_LABEL_MASK) >> DUK_CAT_LABEL_SHIFT) + +#define DUK_CAT_HAS_CATCH_ENABLED(c) ((c)->flags & DUK_CAT_FLAG_CATCH_ENABLED) +#define DUK_CAT_HAS_FINALLY_ENABLED(c) ((c)->flags & DUK_CAT_FLAG_FINALLY_ENABLED) +#define DUK_CAT_HAS_CATCH_BINDING_ENABLED(c) ((c)->flags & DUK_CAT_FLAG_CATCH_BINDING_ENABLED) +#define DUK_CAT_HAS_LEXENV_ACTIVE(c) ((c)->flags & DUK_CAT_FLAG_LEXENV_ACTIVE) + +#define DUK_CAT_SET_CATCH_ENABLED(c) do { \ + (c)->flags |= DUK_CAT_FLAG_CATCH_ENABLED; \ + } while (0) +#define DUK_CAT_SET_FINALLY_ENABLED(c) do { \ + (c)->flags |= DUK_CAT_FLAG_FINALLY_ENABLED; \ + } while (0) +#define DUK_CAT_SET_CATCH_BINDING_ENABLED(c) do { \ + (c)->flags |= DUK_CAT_FLAG_CATCH_BINDING_ENABLED; \ + } while (0) +#define DUK_CAT_SET_LEXENV_ACTIVE(c) do { \ + (c)->flags |= DUK_CAT_FLAG_LEXENV_ACTIVE; \ + } while (0) + +#define DUK_CAT_CLEAR_CATCH_ENABLED(c) do { \ + (c)->flags &= ~DUK_CAT_FLAG_CATCH_ENABLED; \ + } while (0) +#define DUK_CAT_CLEAR_FINALLY_ENABLED(c) do { \ + (c)->flags &= ~DUK_CAT_FLAG_FINALLY_ENABLED; \ + } while (0) +#define DUK_CAT_CLEAR_CATCH_BINDING_ENABLED(c) do { \ + (c)->flags &= ~DUK_CAT_FLAG_CATCH_BINDING_ENABLED; \ + } while (0) +#define DUK_CAT_CLEAR_LEXENV_ACTIVE(c) do { \ + (c)->flags &= ~DUK_CAT_FLAG_LEXENV_ACTIVE; \ + } while (0) + +/* + * Thread defines + */ + +#if defined(DUK_USE_ROM_STRINGS) +#define DUK_HTHREAD_GET_STRING(thr,idx) \ + ((duk_hstring *) DUK_LOSE_CONST(duk_rom_strings_stridx[(idx)])) +#else /* DUK_USE_ROM_STRINGS */ +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HTHREAD_GET_STRING(thr,idx) \ + ((duk_hstring *) DUK_USE_HEAPPTR_DEC16((thr)->heap->heap_udata, (thr)->strs16[(idx)])) +#else +#define DUK_HTHREAD_GET_STRING(thr,idx) \ + ((thr)->strs[(idx)]) +#endif +#endif /* DUK_USE_ROM_STRINGS */ + +/* values for the state field */ +#define DUK_HTHREAD_STATE_INACTIVE 1 /* thread not currently running */ +#define DUK_HTHREAD_STATE_RUNNING 2 /* thread currently running (only one at a time) */ +#define DUK_HTHREAD_STATE_RESUMED 3 /* thread resumed another thread (active but not running) */ +#define DUK_HTHREAD_STATE_YIELDED 4 /* thread has yielded */ +#define DUK_HTHREAD_STATE_TERMINATED 5 /* thread has terminated */ + +/* Executor interrupt default interval when nothing else requires a + * smaller value. The default interval must be small enough to allow + * for reasonable execution timeout checking but large enough to keep + * impact on execution performance low. + */ +#if defined(DUK_USE_INTERRUPT_COUNTER) +#define DUK_HTHREAD_INTCTR_DEFAULT (256L * 1024L) +#endif + +/* + * Assert context is valid: non-NULL pointer, fields look sane. + * + * This is used by public API call entrypoints to catch invalid 'ctx' pointers + * as early as possible; invalid 'ctx' pointers cause very odd and difficult to + * diagnose behavior so it's worth checking even when the check is not 100%. + */ + +#if defined(DUK_USE_ASSERTIONS) +/* Assertions for internals. */ +DUK_INTERNAL_DECL void duk_hthread_assert_valid(duk_hthread *thr); +#define DUK_HTHREAD_ASSERT_VALID(thr) do { duk_hthread_assert_valid((thr)); } while (0) + +/* Assertions for public API calls; a bit stronger. */ +DUK_INTERNAL_DECL void duk_ctx_assert_valid(duk_hthread *thr); +#define DUK_CTX_ASSERT_VALID(thr) do { duk_ctx_assert_valid((thr)); } while (0) +#else +#define DUK_HTHREAD_ASSERT_VALID(thr) do {} while (0) +#define DUK_CTX_ASSERT_VALID(thr) do {} while (0) +#endif + +/* Assertions for API call entry specifically. Checks 'ctx' but also may + * check internal state (e.g. not in a debugger transport callback). + */ +#define DUK_ASSERT_API_ENTRY(thr) do { \ + DUK_CTX_ASSERT_VALID((thr)); \ + DUK_ASSERT((thr)->heap != NULL); \ + DUK_ASSERT((thr)->heap->dbg_calling_transport == 0); \ + } while (0) + +/* + * Assertion helpers. + */ + +#define DUK_ASSERT_STRIDX_VALID(val) \ + DUK_ASSERT((duk_uint_t) (val) < DUK_HEAP_NUM_STRINGS) + +#define DUK_ASSERT_BIDX_VALID(val) \ + DUK_ASSERT((duk_uint_t) (val) < DUK_NUM_BUILTINS) + +/* + * Misc + */ + +/* Fast access to 'this' binding. Assumes there's a call in progress. */ +#define DUK_HTHREAD_THIS_PTR(thr) \ + (DUK_ASSERT_EXPR((thr) != NULL), \ + DUK_ASSERT_EXPR((thr)->valstack_bottom > (thr)->valstack), \ + (thr)->valstack_bottom - 1) + +/* + * Struct defines + */ + +/* Fields are ordered for alignment/packing. */ +struct duk_activation { + duk_tval tv_func; /* borrowed: full duk_tval for function being executed; for lightfuncs */ + duk_hobject *func; /* borrowed: function being executed; for bound function calls, this is the final, real function, NULL for lightfuncs */ + duk_activation *parent; /* previous (parent) activation (or NULL if none) */ + duk_hobject *var_env; /* current variable environment (may be NULL if delayed) */ + duk_hobject *lex_env; /* current lexical environment (may be NULL if delayed) */ + duk_catcher *cat; /* current catcher (or NULL) */ + +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + /* Previous value of 'func' caller, restored when unwound. Only in use + * when 'func' is non-strict. + */ + duk_hobject *prev_caller; +#endif + + duk_instr_t *curr_pc; /* next instruction to execute (points to 'func' bytecode, stable pointer), NULL for native calls */ + + /* bottom_byteoff and retval_byteoff are only used for book-keeping + * of ECMAScript-initiated calls, to allow returning to an ECMAScript + * function properly. + */ + + /* Bottom of valstack for this activation, used to reset + * valstack_bottom on return; offset is absolute. There's + * no need to track 'top' because native call handling deals + * with that using locals, and for ECMAScript returns 'nregs' + * indicates the necessary top. + */ + duk_size_t bottom_byteoff; + + /* Return value when returning to this activation (points to caller + * reg, not callee reg); offset is absolute (only set if activation is + * not topmost). + * + * Note: bottom_byteoff is always set, while retval_byteoff is only + * applicable for activations below the topmost one. Currently + * retval_byteoff for the topmost activation is considered garbage + * (and it not initialized on entry or cleared on return; may contain + * previous or garbage values). + */ + duk_size_t retval_byteoff; + + /* Current 'this' binding is the value just below bottom. + * Previously, 'this' binding was handled with an index to the + * (calling) valstack. This works for everything except tail + * calls, which must not "accumulate" valstack temps. + */ + + /* Value stack reserve (valstack_end) byte offset to be restored + * when returning to this activation. Only used by the bytecode + * executor. + */ + duk_size_t reserve_byteoff; + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_uint32_t prev_line; /* needed for stepping */ +#endif + + duk_small_uint_t flags; +}; + +struct duk_catcher { + duk_catcher *parent; /* previous (parent) catcher (or NULL if none) */ + duk_hstring *h_varname; /* borrowed reference to catch variable name (or NULL if none) */ + /* (reference is valid as long activation exists) */ + duk_instr_t *pc_base; /* resume execution from pc_base or pc_base+1 (points to 'func' bytecode, stable pointer) */ + duk_size_t idx_base; /* idx_base and idx_base+1 get completion value and type */ + duk_uint32_t flags; /* type and control flags, label number */ + /* XXX: could pack 'flags' and 'idx_base' to same value in practice, + * on 32-bit targets this would make duk_catcher 16 bytes. + */ +}; + +struct duk_hthread { + /* Shared object part */ + duk_hobject obj; + + /* Pointer to bytecode executor's 'curr_pc' variable. Used to copy + * the current PC back into the topmost activation when activation + * state is about to change (or "syncing" is otherwise needed). This + * is rather awkward but important for performance, see execution.rst. + */ + duk_instr_t **ptr_curr_pc; + + /* Backpointers. */ + duk_heap *heap; + + /* Current strictness flag: affects API calls. */ + duk_uint8_t strict; + + /* Thread state. */ + duk_uint8_t state; + duk_uint8_t unused1; + duk_uint8_t unused2; + + /* XXX: Valstack and callstack are currently assumed to have non-NULL + * pointers. Relaxing this would not lead to big benefits (except + * perhaps for terminated threads). + */ + + /* Value stack: these are expressed as pointers for faster stack + * manipulation. [valstack,valstack_top[ is GC-reachable, + * [valstack_top,valstack_alloc_end[ is not GC-reachable but kept + * initialized as 'undefined'. [valstack,valstack_end[ is the + * guaranteed/reserved space and the valstack cannot be resized to + * a smaller size. [valstack_end,valstack_alloc_end[ is currently + * allocated slack that can be used to grow the current guaranteed + * space but may be shrunk away without notice. + * + * + * <----------------------- guaranteed ---> + * <---- slack ---> + * <--- frame ---> + * .-------------+=============+----------+--------------. + * |xxxxxxxxxxxxx|yyyyyyyyyyyyy|uuuuuuuuuu|uuuuuuuuuuuuuu| + * `-------------+=============+----------+--------------' + * + * ^ ^ ^ ^ ^ + * | | | | | + * valstack bottom top end alloc_end + * + * xxx = arbitrary values, below current frame + * yyy = arbitrary values, inside current frame + * uuu = outside active value stack, initialized to 'undefined' + */ + duk_tval *valstack; /* start of valstack allocation */ + duk_tval *valstack_end; /* end of valstack reservation/guarantee (exclusive) */ + duk_tval *valstack_alloc_end; /* end of valstack allocation */ + duk_tval *valstack_bottom; /* bottom of current frame */ + duk_tval *valstack_top; /* top of current frame (exclusive) */ + + /* Call stack, represented as a linked list starting from the current + * activation (or NULL if nothing is active). + */ + duk_activation *callstack_curr; /* current activation (or NULL if none) */ + duk_size_t callstack_top; /* number of activation records in callstack (0 if none) */ + duk_size_t callstack_preventcount; /* number of activation records in callstack preventing a yield */ + + /* Yield/resume book-keeping. */ + duk_hthread *resumer; /* who resumed us (if any) */ + + /* Current compiler state (if any), used for augmenting SyntaxErrors. */ + duk_compiler_ctx *compile_ctx; + +#if defined(DUK_USE_INTERRUPT_COUNTER) + /* Interrupt counter for triggering a slow path check for execution + * timeout, debugger interaction such as breakpoints, etc. The value + * is valid for the current running thread, and both the init and + * counter values are copied whenever a thread switch occurs. It's + * important for the counter to be conveniently accessible for the + * bytecode executor inner loop for performance reasons. + */ + duk_int_t interrupt_counter; /* countdown state */ + duk_int_t interrupt_init; /* start value for current countdown */ +#endif + + /* Builtin-objects; may or may not be shared with other threads, + * threads existing in different "compartments" will have different + * built-ins. Must be stored on a per-thread basis because there + * is no intermediate structure for a thread group / compartment. + * This takes quite a lot of space, currently 43x4 = 172 bytes on + * 32-bit platforms. + * + * In some cases the builtins array could be ROM based, but it's + * sometimes edited (e.g. for sandboxing) so it's better to keep + * this array in RAM. + */ + duk_hobject *builtins[DUK_NUM_BUILTINS]; + + /* Convenience copies from heap/vm for faster access. */ +#if defined(DUK_USE_ROM_STRINGS) + /* No field needed when strings are in ROM. */ +#else +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t *strs16; +#else + duk_hstring **strs; +#endif +#endif +}; + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL void duk_hthread_copy_builtin_objects(duk_hthread *thr_from, duk_hthread *thr_to); +DUK_INTERNAL_DECL void duk_hthread_create_builtin_objects(duk_hthread *thr); +DUK_INTERNAL_DECL duk_bool_t duk_hthread_init_stacks(duk_heap *heap, duk_hthread *thr); +DUK_INTERNAL_DECL void duk_hthread_terminate(duk_hthread *thr); + +DUK_INTERNAL_DECL duk_activation *duk_hthread_activation_alloc(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_hthread_activation_free(duk_hthread *thr, duk_activation *act); +DUK_INTERNAL_DECL void duk_hthread_activation_unwind_norz(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_hthread_activation_unwind_reuse_norz(duk_hthread *thr); +DUK_INTERNAL_DECL duk_activation *duk_hthread_get_activation_for_level(duk_hthread *thr, duk_int_t level); + +DUK_INTERNAL_DECL duk_catcher *duk_hthread_catcher_alloc(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_hthread_catcher_free(duk_hthread *thr, duk_catcher *cat); +DUK_INTERNAL_DECL void duk_hthread_catcher_unwind_norz(duk_hthread *thr, duk_activation *act); +DUK_INTERNAL_DECL void duk_hthread_catcher_unwind_nolexenv_norz(duk_hthread *thr, duk_activation *act); + +#if defined(DUK_USE_FINALIZER_TORTURE) +DUK_INTERNAL_DECL void duk_hthread_valstack_torture_realloc(duk_hthread *thr); +#endif + +DUK_INTERNAL_DECL void *duk_hthread_get_valstack_ptr(duk_heap *heap, void *ud); /* indirect allocs */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_INTERNAL_DECL duk_uint_fast32_t duk_hthread_get_act_curr_pc(duk_hthread *thr, duk_activation *act); +#endif +DUK_INTERNAL_DECL duk_uint_fast32_t duk_hthread_get_act_prev_pc(duk_hthread *thr, duk_activation *act); +DUK_INTERNAL_DECL void duk_hthread_sync_currpc(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_hthread_sync_and_null_currpc(duk_hthread *thr); + +#endif /* DUK_HTHREAD_H_INCLUDED */ +/* #include duk_harray.h */ +#line 1 "duk_harray.h" +/* + * Array object representation, used for actual Array instances. + * + * All objects with the exotic array behavior (which must coincide with having + * internal class array) MUST be duk_harrays. No other object can be a + * duk_harray. However, duk_harrays may not always have an array part. + */ + +#if !defined(DUK_HARRAY_H_INCLUDED) +#define DUK_HARRAY_H_INCLUDED + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_harray_assert_valid(duk_harray *h); +#define DUK_HARRAY_ASSERT_VALID(h) do { duk_harray_assert_valid((h)); } while (0) +#else +#define DUK_HARRAY_ASSERT_VALID(h) do {} while (0) +#endif + +#define DUK_HARRAY_LENGTH_WRITABLE(h) (!(h)->length_nonwritable) +#define DUK_HARRAY_LENGTH_NONWRITABLE(h) ((h)->length_nonwritable) +#define DUK_HARRAY_SET_LENGTH_WRITABLE(h) do { (h)->length_nonwritable = 0; } while (0) +#define DUK_HARRAY_SET_LENGTH_NONWRITABLE(h) do { (h)->length_nonwritable = 1; } while (0) + +struct duk_harray { + /* Shared object part. */ + duk_hobject obj; + + /* Array .length. + * + * At present Array .length may be smaller, equal, or even larger + * than the allocated underlying array part. Fast path code must + * always take this into account carefully. + */ + duk_uint32_t length; + + /* Array .length property attributes. The property is always + * non-enumerable and non-configurable. It's initially writable + * but per Object.defineProperty() rules it can be made non-writable + * even if it is non-configurable. Thus we need to track the + * writability explicitly. + * + * XXX: this field to be eliminated and moved into duk_hobject + * flags field to save space. + */ + duk_bool_t length_nonwritable; +}; + +#endif /* DUK_HARRAY_H_INCLUDED */ +/* #include duk_henv.h */ +#line 1 "duk_henv.h" +/* + * Environment object representation. + */ + +#if !defined(DUK_HENV_H_INCLUDED) +#define DUK_HENV_H_INCLUDED + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hdecenv_assert_valid(duk_hdecenv *h); +DUK_INTERNAL_DECL void duk_hobjenv_assert_valid(duk_hobjenv *h); +#define DUK_HDECENV_ASSERT_VALID(h) do { duk_hdecenv_assert_valid((h)); } while (0) +#define DUK_HOBJENV_ASSERT_VALID(h) do { duk_hobjenv_assert_valid((h)); } while (0) +#else +#define DUK_HDECENV_ASSERT_VALID(h) do {} while (0) +#define DUK_HOBJENV_ASSERT_VALID(h) do {} while (0) +#endif + +struct duk_hdecenv { + /* Shared object part. */ + duk_hobject obj; + + /* These control variables provide enough information to access live + * variables for a closure that is still open. If thread == NULL, + * the record is closed and the identifiers are in the property table. + */ + duk_hthread *thread; + duk_hobject *varmap; + duk_size_t regbase_byteoff; +}; + +struct duk_hobjenv { + /* Shared object part. */ + duk_hobject obj; + + /* Target object and 'this' binding for object binding. */ + duk_hobject *target; + + /* The 'target' object is used as a this binding in only some object + * environments. For example, the global environment does not provide + * a this binding, but a with statement does. + */ + duk_bool_t has_this; +}; + +#endif /* DUK_HENV_H_INCLUDED */ +/* #include duk_hbuffer.h */ +#line 1 "duk_hbuffer.h" +/* + * Heap buffer representation. + * + * Heap allocated user data buffer which is either: + * + * 1. A fixed size buffer (data follows header statically) + * 2. A dynamic size buffer (data pointer follows header) + * + * The data pointer for a variable size buffer of zero size may be NULL. + */ + +#if !defined(DUK_HBUFFER_H_INCLUDED) +#define DUK_HBUFFER_H_INCLUDED + +/* + * Flags + * + * Fixed buffer: 0 + * Dynamic buffer: DUK_HBUFFER_FLAG_DYNAMIC + * External buffer: DUK_HBUFFER_FLAG_DYNAMIC | DUK_HBUFFER_FLAG_EXTERNAL + */ + +#define DUK_HBUFFER_FLAG_DYNAMIC DUK_HEAPHDR_USER_FLAG(0) /* buffer is behind a pointer, dynamic or external */ +#define DUK_HBUFFER_FLAG_EXTERNAL DUK_HEAPHDR_USER_FLAG(1) /* buffer pointer is to an externally allocated buffer */ + +#define DUK_HBUFFER_HAS_DYNAMIC(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HBUFFER_FLAG_DYNAMIC) +#define DUK_HBUFFER_HAS_EXTERNAL(x) DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HBUFFER_FLAG_EXTERNAL) + +#define DUK_HBUFFER_SET_DYNAMIC(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HBUFFER_FLAG_DYNAMIC) +#define DUK_HBUFFER_SET_EXTERNAL(x) DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HBUFFER_FLAG_EXTERNAL) + +#define DUK_HBUFFER_CLEAR_DYNAMIC(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HBUFFER_FLAG_DYNAMIC) +#define DUK_HBUFFER_CLEAR_EXTERNAL(x) DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HBUFFER_FLAG_EXTERNAL) + +/* + * Misc defines + */ + +/* Impose a maximum buffer length for now. Restricted artificially to + * ensure resize computations or adding a heap header length won't + * overflow size_t and that a signed duk_int_t can hold a buffer + * length. The limit should be synchronized with DUK_HSTRING_MAX_BYTELEN. + */ + +#if defined(DUK_USE_BUFLEN16) +#define DUK_HBUFFER_MAX_BYTELEN (0x0000ffffUL) +#else +/* Intentionally not 0x7fffffffUL; at least JSON code expects that + * 2*len + 2 fits in 32 bits. + */ +#define DUK_HBUFFER_MAX_BYTELEN (0x7ffffffeUL) +#endif + +/* + * Field access + */ + +#if defined(DUK_USE_BUFLEN16) +/* size stored in duk_heaphdr unused flag bits */ +#define DUK_HBUFFER_GET_SIZE(x) ((x)->hdr.h_flags >> 16) +#define DUK_HBUFFER_SET_SIZE(x,v) do { \ + duk_size_t duk__v; \ + duk__v = (v); \ + DUK_ASSERT(duk__v <= 0xffffUL); \ + (x)->hdr.h_flags = ((x)->hdr.h_flags & 0x0000ffffUL) | (((duk_uint32_t) duk__v) << 16); \ + } while (0) +#define DUK_HBUFFER_ADD_SIZE(x,dv) do { \ + (x)->hdr.h_flags += ((dv) << 16); \ + } while (0) +#define DUK_HBUFFER_SUB_SIZE(x,dv) do { \ + (x)->hdr.h_flags -= ((dv) << 16); \ + } while (0) +#else +#define DUK_HBUFFER_GET_SIZE(x) (((duk_hbuffer *) (x))->size) +#define DUK_HBUFFER_SET_SIZE(x,v) do { \ + ((duk_hbuffer *) (x))->size = (v); \ + } while (0) +#define DUK_HBUFFER_ADD_SIZE(x,dv) do { \ + (x)->size += (dv); \ + } while (0) +#define DUK_HBUFFER_SUB_SIZE(x,dv) do { \ + (x)->size -= (dv); \ + } while (0) +#endif + +#define DUK_HBUFFER_FIXED_GET_SIZE(x) DUK_HBUFFER_GET_SIZE((duk_hbuffer *) (x)) +#define DUK_HBUFFER_FIXED_SET_SIZE(x,v) DUK_HBUFFER_SET_SIZE((duk_hbuffer *) (x)) + +#define DUK_HBUFFER_DYNAMIC_GET_SIZE(x) DUK_HBUFFER_GET_SIZE((duk_hbuffer *) (x)) +#define DUK_HBUFFER_DYNAMIC_SET_SIZE(x,v) DUK_HBUFFER_SET_SIZE((duk_hbuffer *) (x), (v)) +#define DUK_HBUFFER_DYNAMIC_ADD_SIZE(x,dv) DUK_HBUFFER_ADD_SIZE((duk_hbuffer *) (x), (dv)) +#define DUK_HBUFFER_DYNAMIC_SUB_SIZE(x,dv) DUK_HBUFFER_SUB_SIZE((duk_hbuffer *) (x), (dv)) + +#define DUK_HBUFFER_EXTERNAL_GET_SIZE(x) DUK_HBUFFER_GET_SIZE((duk_hbuffer *) (x)) +#define DUK_HBUFFER_EXTERNAL_SET_SIZE(x,v) DUK_HBUFFER_SET_SIZE((duk_hbuffer *) (x), (v)) + +#define DUK_HBUFFER_FIXED_GET_DATA_PTR(heap,x) ((duk_uint8_t *) (((duk_hbuffer_fixed *) (void *) (x)) + 1)) + +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap,x) \ + ((void *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, ((duk_heaphdr *) (x))->h_extra16)) +#define DUK_HBUFFER_DYNAMIC_SET_DATA_PTR(heap,x,v) do { \ + ((duk_heaphdr *) (x))->h_extra16 = DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (void *) (v)); \ + } while (0) +#define DUK_HBUFFER_DYNAMIC_SET_DATA_PTR_NULL(heap,x) do { \ + ((duk_heaphdr *) (x))->h_extra16 = 0; /* assume 0 <=> NULL */ \ + } while (0) +#else +#define DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap,x) ((x)->curr_alloc) +#define DUK_HBUFFER_DYNAMIC_SET_DATA_PTR(heap,x,v) do { \ + (x)->curr_alloc = (void *) (v); \ + } while (0) +#define DUK_HBUFFER_DYNAMIC_SET_DATA_PTR_NULL(heap,x) do { \ + (x)->curr_alloc = (void *) NULL; \ + } while (0) +#endif + +/* No pointer compression because pointer is potentially outside of + * Duktape heap. + */ +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HBUFFER_EXTERNAL_GET_DATA_PTR(heap,x) \ + ((void *) (x)->curr_alloc) +#define DUK_HBUFFER_EXTERNAL_SET_DATA_PTR(heap,x,v) do { \ + (x)->curr_alloc = (void *) (v); \ + } while (0) +#define DUK_HBUFFER_EXTERNAL_SET_DATA_PTR_NULL(heap,x) do { \ + (x)->curr_alloc = (void *) NULL; \ + } while (0) +#else +#define DUK_HBUFFER_EXTERNAL_GET_DATA_PTR(heap,x) \ + ((void *) (x)->curr_alloc) +#define DUK_HBUFFER_EXTERNAL_SET_DATA_PTR(heap,x,v) do { \ + (x)->curr_alloc = (void *) (v); \ + } while (0) +#define DUK_HBUFFER_EXTERNAL_SET_DATA_PTR_NULL(heap,x) do { \ + (x)->curr_alloc = (void *) NULL; \ + } while (0) +#endif + +/* Get a pointer to the current buffer contents (matching current allocation + * size). May be NULL for zero size dynamic/external buffer. + */ +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HBUFFER_GET_DATA_PTR(heap,x) ( \ + DUK_HBUFFER_HAS_DYNAMIC((x)) ? \ + ( \ + DUK_HBUFFER_HAS_EXTERNAL((x)) ? \ + DUK_HBUFFER_EXTERNAL_GET_DATA_PTR((heap), (duk_hbuffer_external *) (x)) : \ + DUK_HBUFFER_DYNAMIC_GET_DATA_PTR((heap), (duk_hbuffer_dynamic *) (x)) \ + ) : \ + DUK_HBUFFER_FIXED_GET_DATA_PTR((heap), (duk_hbuffer_fixed *) (void *) (x)) \ + ) +#else +/* Without heap pointer compression duk_hbuffer_dynamic and duk_hbuffer_external + * have the same layout so checking for fixed vs. dynamic (or external) is enough. + */ +#define DUK_HBUFFER_GET_DATA_PTR(heap,x) ( \ + DUK_HBUFFER_HAS_DYNAMIC((x)) ? \ + DUK_HBUFFER_DYNAMIC_GET_DATA_PTR((heap), (duk_hbuffer_dynamic *) (x)) : \ + DUK_HBUFFER_FIXED_GET_DATA_PTR((heap), (duk_hbuffer_fixed *) (void *) (x)) \ + ) +#endif + +/* Validity assert. */ +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hbuffer_assert_valid(duk_hbuffer *h); +#define DUK_HBUFFER_ASSERT_VALID(h) do { duk_hbuffer_assert_valid((h)); } while (0) +#else +#define DUK_HBUFFER_ASSERT_VALID(h) do {} while (0) +#endif + +/* + * Structs + */ + +/* Shared prefix for all buffer types. */ +struct duk_hbuffer { + duk_heaphdr hdr; + + /* It's not strictly necessary to track the current size, but + * it is useful for writing robust native code. + */ + + /* Current size. */ +#if defined(DUK_USE_BUFLEN16) + /* Stored in duk_heaphdr unused flags. */ +#else + duk_size_t size; +#endif + + /* + * Data following the header depends on the DUK_HBUFFER_FLAG_DYNAMIC + * flag. + * + * If the flag is clear (the buffer is a fixed size one), the buffer + * data follows the header directly, consisting of 'size' bytes. + * + * If the flag is set, the actual buffer is allocated separately, and + * a few control fields follow the header. Specifically: + * + * - a "void *" pointing to the current allocation + * - a duk_size_t indicating the full allocated size (always >= 'size') + * + * If DUK_HBUFFER_FLAG_EXTERNAL is set, the buffer has been allocated + * by user code, so that Duktape won't be able to resize it and won't + * free it. This allows buffers to point to e.g. an externally + * allocated structure such as a frame buffer. + * + * Unlike strings, no terminator byte (NUL) is guaranteed after the + * data. This would be convenient, but would pad aligned user buffers + * unnecessarily upwards in size. For instance, if user code requested + * a 64-byte dynamic buffer, 65 bytes would actually be allocated which + * would then potentially round upwards to perhaps 68 or 72 bytes. + */ +}; + +/* Fixed buffer; data follows struct, with proper alignment guaranteed by + * struct size. + */ +#if (DUK_USE_ALIGN_BY == 8) && defined(DUK_USE_PACK_MSVC_PRAGMA) +#pragma pack(push, 8) +#endif +struct duk_hbuffer_fixed { + /* A union is used here as a portable struct size / alignment trick: + * by adding a 32-bit or a 64-bit (unused) union member, the size of + * the struct is effectively forced to be a multiple of 4 or 8 bytes + * (respectively) without increasing the size of the struct unless + * necessary. + */ + union { + struct { + duk_heaphdr hdr; +#if defined(DUK_USE_BUFLEN16) + /* Stored in duk_heaphdr unused flags. */ +#else + duk_size_t size; +#endif + } s; +#if (DUK_USE_ALIGN_BY == 4) + duk_uint32_t dummy_for_align4; +#elif (DUK_USE_ALIGN_BY == 8) + duk_double_t dummy_for_align8_1; +#if defined(DUK_USE_64BIT_OPS) + duk_uint64_t dummy_for_align8_2; +#endif +#elif (DUK_USE_ALIGN_BY == 1) + /* no extra padding */ +#else +#error invalid DUK_USE_ALIGN_BY +#endif + } u; + + /* + * Data follows the struct header. The struct size is padded by the + * compiler based on the struct members. This guarantees that the + * buffer data will be aligned-by-4 but not necessarily aligned-by-8. + * + * On platforms where alignment does not matter, the struct padding + * could be removed (if there is any). On platforms where alignment + * by 8 is required, the struct size must be forced to be a multiple + * of 8 by some means. Without it, some user code may break, and also + * Duktape itself breaks (e.g. the compiler stores duk_tvals in a + * dynamic buffer). + */ +} +#if (DUK_USE_ALIGN_BY == 8) && defined(DUK_USE_PACK_GCC_ATTR) +__attribute__ ((aligned (8))) +#elif (DUK_USE_ALIGN_BY == 8) && defined(DUK_USE_PACK_CLANG_ATTR) +__attribute__ ((aligned (8))) +#endif +; +#if (DUK_USE_ALIGN_BY == 8) && defined(DUK_USE_PACK_MSVC_PRAGMA) +#pragma pack(pop) +#endif + +/* Dynamic buffer with 'curr_alloc' pointing to a dynamic area allocated using + * heap allocation primitives. Also used for external buffers when low memory + * options are not used. + */ +struct duk_hbuffer_dynamic { + duk_heaphdr hdr; + +#if defined(DUK_USE_BUFLEN16) + /* Stored in duk_heaphdr unused flags. */ +#else + duk_size_t size; +#endif + +#if defined(DUK_USE_HEAPPTR16) + /* Stored in duk_heaphdr h_extra16. */ +#else + void *curr_alloc; /* may be NULL if alloc_size == 0 */ +#endif + + /* + * Allocation size for 'curr_alloc' is alloc_size. There is no + * automatic NUL terminator for buffers (see above for rationale). + * + * 'curr_alloc' is explicitly allocated with heap allocation + * primitives and will thus always have alignment suitable for + * e.g. duk_tval and an IEEE double. + */ +}; + +/* External buffer with 'curr_alloc' managed by user code and pointing to an + * arbitrary address. When heap pointer compression is not used, this struct + * has the same layout as duk_hbuffer_dynamic. + */ +struct duk_hbuffer_external { + duk_heaphdr hdr; + +#if defined(DUK_USE_BUFLEN16) + /* Stored in duk_heaphdr unused flags. */ +#else + duk_size_t size; +#endif + + /* Cannot be compressed as a heap pointer because may point to + * an arbitrary address. + */ + void *curr_alloc; /* may be NULL if alloc_size == 0 */ +}; + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL duk_hbuffer *duk_hbuffer_alloc(duk_heap *heap, duk_size_t size, duk_small_uint_t flags, void **out_bufdata); +DUK_INTERNAL_DECL void *duk_hbuffer_get_dynalloc_ptr(duk_heap *heap, void *ud); /* indirect allocs */ + +/* dynamic buffer ops */ +DUK_INTERNAL_DECL void duk_hbuffer_resize(duk_hthread *thr, duk_hbuffer_dynamic *buf, duk_size_t new_size); +DUK_INTERNAL_DECL void duk_hbuffer_reset(duk_hthread *thr, duk_hbuffer_dynamic *buf); + +#endif /* DUK_HBUFFER_H_INCLUDED */ +/* #include duk_hproxy.h */ +#line 1 "duk_hproxy.h" +/* + * Proxy object representation. + */ + +#if !defined(DUK_HPROXY_H_INCLUDED) +#define DUK_HPROXY_H_INCLUDED + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_hproxy_assert_valid(duk_hproxy *h); +#define DUK_HPROXY_ASSERT_VALID(h) do { duk_hproxy_assert_valid((h)); } while (0) +#else +#define DUK_HPROXY_ASSERT_VALID(h) do {} while (0) +#endif + +struct duk_hproxy { + /* Shared object part. */ + duk_hobject obj; + + /* Proxy target object. */ + duk_hobject *target; + + /* Proxy handlers (traps). */ + duk_hobject *handler; +}; + +#endif /* DUK_HPROXY_H_INCLUDED */ +/* #include duk_heap.h */ +#line 1 "duk_heap.h" +/* + * Heap structure. + * + * Heap contains allocated heap objects, interned strings, and built-in + * strings for one or more threads. + */ + +#if !defined(DUK_HEAP_H_INCLUDED) +#define DUK_HEAP_H_INCLUDED + +/* alloc function typedefs in duktape.h */ + +/* + * Heap flags + */ + +#define DUK_HEAP_FLAG_MARKANDSWEEP_RECLIMIT_REACHED (1U << 0) /* mark-and-sweep marking reached a recursion limit and must use multi-pass marking */ +#define DUK_HEAP_FLAG_INTERRUPT_RUNNING (1U << 1) /* executor interrupt running (used to avoid nested interrupts) */ +#define DUK_HEAP_FLAG_FINALIZER_NORESCUE (1U << 2) /* heap destruction ongoing, finalizer rescue no longer possible */ +#define DUK_HEAP_FLAG_DEBUGGER_PAUSED (1U << 3) /* debugger is paused: talk with debug client until step/resume */ + +#define DUK__HEAP_HAS_FLAGS(heap,bits) ((heap)->flags & (bits)) +#define DUK__HEAP_SET_FLAGS(heap,bits) do { \ + (heap)->flags |= (bits); \ + } while (0) +#define DUK__HEAP_CLEAR_FLAGS(heap,bits) do { \ + (heap)->flags &= ~(bits); \ + } while (0) + +#define DUK_HEAP_HAS_MARKANDSWEEP_RECLIMIT_REACHED(heap) DUK__HEAP_HAS_FLAGS((heap), DUK_HEAP_FLAG_MARKANDSWEEP_RECLIMIT_REACHED) +#define DUK_HEAP_HAS_INTERRUPT_RUNNING(heap) DUK__HEAP_HAS_FLAGS((heap), DUK_HEAP_FLAG_INTERRUPT_RUNNING) +#define DUK_HEAP_HAS_FINALIZER_NORESCUE(heap) DUK__HEAP_HAS_FLAGS((heap), DUK_HEAP_FLAG_FINALIZER_NORESCUE) +#define DUK_HEAP_HAS_DEBUGGER_PAUSED(heap) DUK__HEAP_HAS_FLAGS((heap), DUK_HEAP_FLAG_DEBUGGER_PAUSED) + +#define DUK_HEAP_SET_MARKANDSWEEP_RECLIMIT_REACHED(heap) DUK__HEAP_SET_FLAGS((heap), DUK_HEAP_FLAG_MARKANDSWEEP_RECLIMIT_REACHED) +#define DUK_HEAP_SET_INTERRUPT_RUNNING(heap) DUK__HEAP_SET_FLAGS((heap), DUK_HEAP_FLAG_INTERRUPT_RUNNING) +#define DUK_HEAP_SET_FINALIZER_NORESCUE(heap) DUK__HEAP_SET_FLAGS((heap), DUK_HEAP_FLAG_FINALIZER_NORESCUE) +#define DUK_HEAP_SET_DEBUGGER_PAUSED(heap) DUK__HEAP_SET_FLAGS((heap), DUK_HEAP_FLAG_DEBUGGER_PAUSED) + +#define DUK_HEAP_CLEAR_MARKANDSWEEP_RECLIMIT_REACHED(heap) DUK__HEAP_CLEAR_FLAGS((heap), DUK_HEAP_FLAG_MARKANDSWEEP_RECLIMIT_REACHED) +#define DUK_HEAP_CLEAR_INTERRUPT_RUNNING(heap) DUK__HEAP_CLEAR_FLAGS((heap), DUK_HEAP_FLAG_INTERRUPT_RUNNING) +#define DUK_HEAP_CLEAR_FINALIZER_NORESCUE(heap) DUK__HEAP_CLEAR_FLAGS((heap), DUK_HEAP_FLAG_FINALIZER_NORESCUE) +#define DUK_HEAP_CLEAR_DEBUGGER_PAUSED(heap) DUK__HEAP_CLEAR_FLAGS((heap), DUK_HEAP_FLAG_DEBUGGER_PAUSED) + +/* + * Longjmp types, also double as identifying continuation type for a rethrow (in 'finally') + */ + +#define DUK_LJ_TYPE_UNKNOWN 0 /* unused */ +#define DUK_LJ_TYPE_THROW 1 /* value1 -> error object */ +#define DUK_LJ_TYPE_YIELD 2 /* value1 -> yield value, iserror -> error / normal */ +#define DUK_LJ_TYPE_RESUME 3 /* value1 -> resume value, value2 -> resumee thread, iserror -> error/normal */ +#define DUK_LJ_TYPE_BREAK 4 /* value1 -> label number, pseudo-type to indicate a break continuation (for ENDFIN) */ +#define DUK_LJ_TYPE_CONTINUE 5 /* value1 -> label number, pseudo-type to indicate a continue continuation (for ENDFIN) */ +#define DUK_LJ_TYPE_RETURN 6 /* value1 -> return value, pseudo-type to indicate a return continuation (for ENDFIN) */ +#define DUK_LJ_TYPE_NORMAL 7 /* no value, pseudo-type to indicate a normal continuation (for ENDFIN) */ + +/* + * Mark-and-sweep flags + * + * These are separate from heap level flags now but could be merged. + * The heap structure only contains a 'base mark-and-sweep flags' + * field and the GC caller can impose further flags. + */ + +/* Emergency mark-and-sweep: try extra hard, even at the cost of + * performance. + */ +#define DUK_MS_FLAG_EMERGENCY (1U << 0) + +/* Postpone rescue decisions for reachable objects with FINALIZED set. + * Used during finalize_list processing to avoid incorrect rescue + * decisions due to finalize_list being a reachability root. + */ +#define DUK_MS_FLAG_POSTPONE_RESCUE (1U << 1) + +/* Don't compact objects; needed during object property table resize + * to prevent a recursive resize. It would suffice to protect only the + * current object being resized, but this is not yet implemented. + */ +#define DUK_MS_FLAG_NO_OBJECT_COMPACTION (1U << 2) + +/* + * Thread switching + * + * To switch heap->curr_thread, use the macro below so that interrupt counters + * get updated correctly. The macro allows a NULL target thread because that + * happens e.g. in call handling. + */ + +#if defined(DUK_USE_INTERRUPT_COUNTER) +#define DUK_HEAP_SWITCH_THREAD(heap,newthr) duk_heap_switch_thread((heap), (newthr)) +#else +#define DUK_HEAP_SWITCH_THREAD(heap,newthr) do { \ + (heap)->curr_thread = (newthr); \ + } while (0) +#endif + +/* + * Stats + */ + +#if defined(DUK_USE_DEBUG) +#define DUK_STATS_INC(heap,fieldname) do { \ + (heap)->fieldname += 1; \ + } while (0) +#else +#define DUK_STATS_INC(heap,fieldname) do {} while (0) +#endif + +/* + * Other heap related defines + */ + +/* Mark-and-sweep interval is relative to combined count of objects and + * strings kept in the heap during the latest mark-and-sweep pass. + * Fixed point .8 multiplier and .0 adder. Trigger count (interval) is + * decreased by each (re)allocation attempt (regardless of size), and each + * refzero processed object. + * + * 'SKIP' indicates how many (re)allocations to wait until a retry if + * GC is skipped because there is no thread do it with yet (happens + * only during init phases). + */ +#if defined(DUK_USE_REFERENCE_COUNTING) +#define DUK_HEAP_MARK_AND_SWEEP_TRIGGER_MULT 12800L /* 50x heap size */ +#define DUK_HEAP_MARK_AND_SWEEP_TRIGGER_ADD 1024L +#define DUK_HEAP_MARK_AND_SWEEP_TRIGGER_SKIP 256L +#else +#define DUK_HEAP_MARK_AND_SWEEP_TRIGGER_MULT 256L /* 1x heap size */ +#define DUK_HEAP_MARK_AND_SWEEP_TRIGGER_ADD 1024L +#define DUK_HEAP_MARK_AND_SWEEP_TRIGGER_SKIP 256L +#endif + +/* GC torture. */ +#if defined(DUK_USE_GC_TORTURE) +#define DUK_GC_TORTURE(heap) do { duk_heap_mark_and_sweep((heap), 0); } while (0) +#else +#define DUK_GC_TORTURE(heap) do { } while (0) +#endif + +/* Stringcache is used for speeding up char-offset-to-byte-offset + * translations for non-ASCII strings. + */ +#define DUK_HEAP_STRCACHE_SIZE 4 +#define DUK_HEAP_STRINGCACHE_NOCACHE_LIMIT 16 /* strings up to the this length are not cached */ + +/* Some list management macros. */ +#define DUK_HEAP_INSERT_INTO_HEAP_ALLOCATED(heap,hdr) duk_heap_insert_into_heap_allocated((heap), (hdr)) +#if defined(DUK_USE_REFERENCE_COUNTING) +#define DUK_HEAP_REMOVE_FROM_HEAP_ALLOCATED(heap,hdr) duk_heap_remove_from_heap_allocated((heap), (hdr)) +#endif +#if defined(DUK_USE_FINALIZER_SUPPORT) +#define DUK_HEAP_INSERT_INTO_FINALIZE_LIST(heap,hdr) duk_heap_insert_into_finalize_list((heap), (hdr)) +#define DUK_HEAP_REMOVE_FROM_FINALIZE_LIST(heap,hdr) duk_heap_remove_from_finalize_list((heap), (hdr)) +#endif + +/* + * Built-in strings + */ + +/* heap string indices are autogenerated in duk_strings.h */ +#if defined(DUK_USE_ROM_STRINGS) +#define DUK_HEAP_GET_STRING(heap,idx) \ + ((duk_hstring *) DUK_LOSE_CONST(duk_rom_strings_stridx[(idx)])) +#else /* DUK_USE_ROM_STRINGS */ +#if defined(DUK_USE_HEAPPTR16) +#define DUK_HEAP_GET_STRING(heap,idx) \ + ((duk_hstring *) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (heap)->strs16[(idx)])) +#else +#define DUK_HEAP_GET_STRING(heap,idx) \ + ((heap)->strs[(idx)]) +#endif +#endif /* DUK_USE_ROM_STRINGS */ + +/* + * Raw memory calls: relative to heap, but no GC interaction + */ + +#define DUK_ALLOC_RAW(heap,size) \ + ((heap)->alloc_func((heap)->heap_udata, (size))) + +#define DUK_REALLOC_RAW(heap,ptr,newsize) \ + ((heap)->realloc_func((heap)->heap_udata, (void *) (ptr), (newsize))) + +#define DUK_FREE_RAW(heap,ptr) \ + ((heap)->free_func((heap)->heap_udata, (void *) (ptr))) + +/* + * Memory calls: relative to heap, GC interaction, but no error throwing. + * + * XXX: Currently a mark-and-sweep triggered by memory allocation will run + * using the heap->heap_thread. This thread is also used for running + * mark-and-sweep finalization; this is not ideal because it breaks the + * isolation between multiple global environments. + * + * Notes: + * + * - DUK_FREE() is required to ignore NULL and any other possible return + * value of a zero-sized alloc/realloc (same as ANSI C free()). + * + * - There is no DUK_REALLOC_ZEROED because we don't assume to know the + * old size. Caller must zero the reallocated memory. + * + * - DUK_REALLOC_INDIRECT() must be used when a mark-and-sweep triggered + * by an allocation failure might invalidate the original 'ptr', thus + * causing a realloc retry to use an invalid pointer. Example: we're + * reallocating the value stack and a finalizer resizes the same value + * stack during mark-and-sweep. The indirect variant requests for the + * current location of the pointer being reallocated using a callback + * right before every realloc attempt; this circuitous approach is used + * to avoid strict aliasing issues in a more straightforward indirect + * pointer (void **) approach. Note: the pointer in the storage + * location is read but is NOT updated; the caller must do that. + */ + +/* callback for indirect reallocs, request for current pointer */ +typedef void *(*duk_mem_getptr)(duk_heap *heap, void *ud); + +#define DUK_ALLOC(heap,size) duk_heap_mem_alloc((heap), (size)) +#define DUK_ALLOC_ZEROED(heap,size) duk_heap_mem_alloc_zeroed((heap), (size)) +#define DUK_REALLOC(heap,ptr,newsize) duk_heap_mem_realloc((heap), (ptr), (newsize)) +#define DUK_REALLOC_INDIRECT(heap,cb,ud,newsize) duk_heap_mem_realloc_indirect((heap), (cb), (ud), (newsize)) +#define DUK_FREE(heap,ptr) duk_heap_mem_free((heap), (ptr)) + +/* + * Checked allocation, relative to a thread + * + * DUK_FREE_CHECKED() doesn't actually throw, but accepts a 'thr' argument + * for convenience. + */ + +#define DUK_ALLOC_CHECKED(thr,size) duk_heap_mem_alloc_checked((thr), (size)) +#define DUK_ALLOC_CHECKED_ZEROED(thr,size) duk_heap_mem_alloc_checked_zeroed((thr), (size)) +#define DUK_FREE_CHECKED(thr,ptr) duk_heap_mem_free((thr)->heap, (ptr)) + +/* + * Memory constants + */ + +#define DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_LIMIT 10 /* Retry allocation after mark-and-sweep for this + * many times. A single mark-and-sweep round is + * not guaranteed to free all unreferenced memory + * because of finalization (in fact, ANY number of + * rounds is strictly not enough). + */ + +#define DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_EMERGENCY_LIMIT 3 /* Starting from this round, use emergency mode + * for mark-and-sweep. + */ + +/* + * Debugger support + */ + +/* Maximum number of breakpoints. Only breakpoints that are set are + * consulted so increasing this has no performance impact. + */ +#define DUK_HEAP_MAX_BREAKPOINTS 16 + +/* Opcode interval for a Date-based status/peek rate limit check. Only + * relevant when debugger is attached. Requesting a timestamp may be a + * slow operation on some platforms so this shouldn't be too low. On the + * other hand a high value makes Duktape react to a pause request slowly. + */ +#define DUK_HEAP_DBG_RATELIMIT_OPCODES 4000 + +/* Milliseconds between status notify and transport peeks. */ +#define DUK_HEAP_DBG_RATELIMIT_MILLISECS 200 + +/* Debugger pause flags. */ +#define DUK_PAUSE_FLAG_ONE_OPCODE (1U << 0) /* pause when a single opcode has been executed */ +#define DUK_PAUSE_FLAG_ONE_OPCODE_ACTIVE (1U << 1) /* one opcode pause actually active; artifact of current implementation */ +#define DUK_PAUSE_FLAG_LINE_CHANGE (1U << 2) /* pause when current line number changes */ +#define DUK_PAUSE_FLAG_FUNC_ENTRY (1U << 3) /* pause when entering a function */ +#define DUK_PAUSE_FLAG_FUNC_EXIT (1U << 4) /* pause when exiting current function */ +#define DUK_PAUSE_FLAG_CAUGHT_ERROR (1U << 5) /* pause when about to throw an error that is caught */ +#define DUK_PAUSE_FLAG_UNCAUGHT_ERROR (1U << 6) /* pause when about to throw an error that won't be caught */ + +struct duk_breakpoint { + duk_hstring *filename; + duk_uint32_t line; +}; + +/* + * String cache should ideally be at duk_hthread level, but that would + * cause string finalization to slow down relative to the number of + * threads; string finalization must check the string cache for "weak" + * references to the string being finalized to avoid dead pointers. + * + * Thus, string caches are now at the heap level now. + */ + +struct duk_strcache_entry { + duk_hstring *h; + duk_uint32_t bidx; + duk_uint32_t cidx; +}; + +/* + * Longjmp state, contains the information needed to perform a longjmp. + * Longjmp related values are written to value1, value2, and iserror. + */ + +struct duk_ljstate { + duk_jmpbuf *jmpbuf_ptr; /* current setjmp() catchpoint */ + duk_small_uint_t type; /* longjmp type */ + duk_bool_t iserror; /* isError flag for yield */ + duk_tval value1; /* 1st related value (type specific) */ + duk_tval value2; /* 2nd related value (type specific) */ +}; + +#define DUK_ASSERT_LJSTATE_UNSET(heap) do { \ + DUK_ASSERT(heap != NULL); \ + DUK_ASSERT(heap->lj.type == DUK_LJ_TYPE_UNKNOWN); \ + DUK_ASSERT(heap->lj.iserror == 0); \ + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&heap->lj.value1)); \ + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&heap->lj.value2)); \ + } while (0) +#define DUK_ASSERT_LJSTATE_SET(heap) do { \ + DUK_ASSERT(heap != NULL); \ + DUK_ASSERT(heap->lj.type != DUK_LJ_TYPE_UNKNOWN); \ + } while (0) + +/* + * Literal intern cache + */ + +struct duk_litcache_entry { + const duk_uint8_t *addr; + duk_hstring *h; +}; + +/* + * Main heap structure + */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL void duk_heap_assert_valid(duk_heap *heap); +#define DUK_HEAP_ASSERT_VALID(heap) do { duk_heap_assert_valid((heap)); } while (0) +#else +#define DUK_HEAP_ASSERT_VALID(heap) do {} while (0) +#endif + +struct duk_heap { + duk_small_uint_t flags; + + /* Allocator functions. */ + duk_alloc_function alloc_func; + duk_realloc_function realloc_func; + duk_free_function free_func; + + /* Heap udata, used for allocator functions but also for other heap + * level callbacks like fatal function, pointer compression, etc. + */ + void *heap_udata; + + /* Fatal error handling, called e.g. when a longjmp() is needed but + * lj.jmpbuf_ptr is NULL. fatal_func must never return; it's not + * declared as "noreturn" because doing that for typedefs is a bit + * challenging portability-wise. + */ + duk_fatal_function fatal_func; + + /* Main list of allocated heap objects. Objects are either here, + * in finalize_list waiting for processing, or in refzero_list + * temporarily while a DECREF refzero cascade finishes. + */ + duk_heaphdr *heap_allocated; + + /* Temporary work list for freeing a cascade of objects when a DECREF + * (or DECREF_NORZ) encounters a zero refcount. Using a work list + * allows fixed C stack size when refcounts go to zero for a chain of + * objects. Outside of DECREF this is always a NULL because DECREF is + * processed without side effects (only memory free calls). + */ +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_heaphdr *refzero_list; +#endif + +#if defined(DUK_USE_FINALIZER_SUPPORT) + /* Work list for objects to be finalized. */ + duk_heaphdr *finalize_list; +#if defined(DUK_USE_ASSERTIONS) + /* Object whose finalizer is executing right now (no nesting). */ + duk_heaphdr *currently_finalizing; +#endif +#endif + + /* Freelist for duk_activations and duk_catchers. */ +#if defined(DUK_USE_CACHE_ACTIVATION) + duk_activation *activation_free; +#endif +#if defined(DUK_USE_CACHE_CATCHER) + duk_catcher *catcher_free; +#endif + + /* Voluntary mark-and-sweep trigger counter. Intentionally signed + * because we continue decreasing the value when voluntary GC cannot + * run. + */ +#if defined(DUK_USE_VOLUNTARY_GC) + duk_int_t ms_trigger_counter; +#endif + + /* Mark-and-sweep recursion control: too deep recursion causes + * multi-pass processing to avoid growing C stack without bound. + */ + duk_uint_t ms_recursion_depth; + + /* Mark-and-sweep flags automatically active (used for critical sections). */ + duk_small_uint_t ms_base_flags; + + /* Mark-and-sweep running flag. Prevents re-entry, and also causes + * refzero events to be ignored (= objects won't be queued to refzero_list). + * + * 0: mark-and-sweep not running + * 1: mark-and-sweep is running + * 2: heap destruction active or debugger active, prevent mark-and-sweep + * and refzero processing (but mark-and-sweep not itself running) + */ + duk_uint_t ms_running; + + /* Mark-and-sweep prevent count, stacking. Used to avoid M&S side + * effects (besides finalizers which are controlled separately) such + * as compacting the string table or object property tables. This + * is also bumped when ms_running is set to prevent recursive re-entry. + * Can also be bumped when mark-and-sweep is not running. + */ + duk_uint_t ms_prevent_count; + + /* Finalizer processing prevent count, stacking. Bumped when finalizers + * are processed to prevent recursive finalizer processing (first call site + * processing finalizers handles all finalizers until the list is empty). + * Can also be bumped explicitly to prevent finalizer execution. + */ + duk_uint_t pf_prevent_count; + + /* When processing finalize_list, don't actually run finalizers but + * queue finalizable objects back to heap_allocated as is. This is + * used during heap destruction to deal with finalizers that keep + * on creating more finalizable garbage. + */ + duk_uint_t pf_skip_finalizers; + +#if defined(DUK_USE_ASSERTIONS) + /* Set when we're in a critical path where an error throw would cause + * e.g. sandboxing/protected call violations or state corruption. This + * is just used for asserts. + */ + duk_bool_t error_not_allowed; +#endif + +#if defined(DUK_USE_ASSERTIONS) + /* Set when heap is still being initialized, helps with writing + * some assertions. + */ + duk_bool_t heap_initializing; +#endif + + /* Marker for detecting internal "double faults", errors thrown when + * we're trying to create an error object, see duk_error_throw.c. + */ + duk_bool_t creating_error; + + /* Marker for indicating we're calling a user error augmentation + * (errCreate/errThrow) function. Errors created/thrown during + * such a call are not augmented. + */ +#if defined(DUK_USE_AUGMENT_ERROR_THROW) || defined(DUK_USE_AUGMENT_ERROR_CREATE) + duk_bool_t augmenting_error; +#endif + + /* Longjmp state. */ + duk_ljstate lj; + + /* Heap thread, used internally and for finalization. */ + duk_hthread *heap_thread; + + /* Current running thread. */ + duk_hthread *curr_thread; + + /* Heap level "stash" object (e.g., various reachability roots). */ + duk_hobject *heap_object; + + /* duk_handle_call / duk_handle_safe_call recursion depth limiting */ + duk_int_t call_recursion_depth; + duk_int_t call_recursion_limit; + + /* Mix-in value for computing string hashes; should be reasonably unpredictable. */ + duk_uint32_t hash_seed; + + /* Random number state for duk_util_tinyrandom.c. */ +#if !defined(DUK_USE_GET_RANDOM_DOUBLE) +#if defined(DUK_USE_PREFER_SIZE) || !defined(DUK_USE_64BIT_OPS) + duk_uint32_t rnd_state; /* State for Shamir's three-op algorithm */ +#else + duk_uint64_t rnd_state[2]; /* State for xoroshiro128+ */ +#endif +#endif + + /* Counter for unique local symbol creation. */ + /* XXX: When 64-bit types are available, it would be more efficient to + * use a duk_uint64_t at least for incrementing but maybe also for + * string formatting in the Symbol constructor. + */ + duk_uint32_t sym_counter[2]; + + /* For manual debugging: instruction count based on executor and + * interrupt counter book-keeping. Inspect debug logs to see how + * they match up. + */ +#if defined(DUK_USE_INTERRUPT_COUNTER) && defined(DUK_USE_DEBUG) + duk_int_t inst_count_exec; + duk_int_t inst_count_interrupt; +#endif + + /* Debugger state. */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + /* Callbacks and udata; dbg_read_cb != NULL is used to indicate attached state. */ + duk_debug_read_function dbg_read_cb; /* required, NULL implies detached */ + duk_debug_write_function dbg_write_cb; /* required */ + duk_debug_peek_function dbg_peek_cb; + duk_debug_read_flush_function dbg_read_flush_cb; + duk_debug_write_flush_function dbg_write_flush_cb; + duk_debug_request_function dbg_request_cb; + duk_debug_detached_function dbg_detached_cb; + void *dbg_udata; + + /* The following are only relevant when debugger is attached. */ + duk_bool_t dbg_processing; /* currently processing messages or breakpoints: don't enter message processing recursively (e.g. no breakpoints when processing debugger eval) */ + duk_bool_t dbg_state_dirty; /* resend state next time executor is about to run */ + duk_bool_t dbg_force_restart; /* force executor restart to recheck breakpoints; used to handle function returns (see GH-303) */ + duk_bool_t dbg_detaching; /* debugger detaching; used to avoid calling detach handler recursively */ + duk_small_uint_t dbg_pause_flags; /* flags for automatic pause behavior */ + duk_activation *dbg_pause_act; /* activation related to pause behavior (pause on line change, function entry/exit) */ + duk_uint32_t dbg_pause_startline; /* starting line number for line change related pause behavior */ + duk_breakpoint dbg_breakpoints[DUK_HEAP_MAX_BREAKPOINTS]; /* breakpoints: [0,breakpoint_count[ gc reachable */ + duk_small_uint_t dbg_breakpoint_count; + duk_breakpoint *dbg_breakpoints_active[DUK_HEAP_MAX_BREAKPOINTS + 1]; /* currently active breakpoints: NULL term, borrowed pointers */ + /* XXX: make active breakpoints actual copies instead of pointers? */ + + /* These are for rate limiting Status notifications and transport peeking. */ + duk_uint_t dbg_exec_counter; /* cumulative opcode execution count (overflows are OK) */ + duk_uint_t dbg_last_counter; /* value of dbg_exec_counter when we last did a Date-based check */ + duk_double_t dbg_last_time; /* time when status/peek was last done (Date-based rate limit) */ + + /* Used to support single-byte stream lookahead. */ + duk_bool_t dbg_have_next_byte; + duk_uint8_t dbg_next_byte; +#endif /* DUK_USE_DEBUGGER_SUPPORT */ +#if defined(DUK_USE_ASSERTIONS) + duk_bool_t dbg_calling_transport; /* transport call in progress, calling into Duktape forbidden */ +#endif + + /* String intern table (weak refs). */ +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *strtable16; +#else + duk_hstring **strtable; +#endif + duk_uint32_t st_mask; /* mask for lookup, st_size - 1 */ + duk_uint32_t st_size; /* stringtable size */ +#if (DUK_USE_STRTAB_MINSIZE != DUK_USE_STRTAB_MAXSIZE) + duk_uint32_t st_count; /* string count for resize load factor checks */ +#endif + duk_bool_t st_resizing; /* string table is being resized; avoid recursive resize */ + + /* String access cache (codepoint offset -> byte offset) for fast string + * character looping; 'weak' reference which needs special handling in GC. + */ + duk_strcache_entry strcache[DUK_HEAP_STRCACHE_SIZE]; + +#if defined(DUK_USE_LITCACHE_SIZE) + /* Literal intern cache. When enabled, strings interned as literals + * (e.g. duk_push_literal()) will be pinned and cached for the lifetime + * of the heap. + */ + duk_litcache_entry litcache[DUK_USE_LITCACHE_SIZE]; +#endif + + /* Built-in strings. */ +#if defined(DUK_USE_ROM_STRINGS) + /* No field needed when strings are in ROM. */ +#else +#if defined(DUK_USE_HEAPPTR16) + duk_uint16_t strs16[DUK_HEAP_NUM_STRINGS]; +#else + duk_hstring *strs[DUK_HEAP_NUM_STRINGS]; +#endif +#endif + + /* Stats. */ +#if defined(DUK_USE_DEBUG) + duk_int_t stats_exec_opcodes; + duk_int_t stats_exec_interrupt; + duk_int_t stats_exec_throw; + duk_int_t stats_call_all; + duk_int_t stats_call_tailcall; + duk_int_t stats_call_ecmatoecma; + duk_int_t stats_safecall_all; + duk_int_t stats_safecall_nothrow; + duk_int_t stats_safecall_throw; + duk_int_t stats_ms_try_count; + duk_int_t stats_ms_skip_count; + duk_int_t stats_ms_emergency_count; + duk_int_t stats_strtab_intern_hit; + duk_int_t stats_strtab_intern_miss; + duk_int_t stats_strtab_resize_check; + duk_int_t stats_strtab_resize_grow; + duk_int_t stats_strtab_resize_shrink; + duk_int_t stats_strtab_litcache_hit; + duk_int_t stats_strtab_litcache_miss; + duk_int_t stats_strtab_litcache_pin; + duk_int_t stats_object_realloc_props; + duk_int_t stats_object_abandon_array; + duk_int_t stats_getownpropdesc_count; + duk_int_t stats_getownpropdesc_hit; + duk_int_t stats_getownpropdesc_miss; + duk_int_t stats_getpropdesc_count; + duk_int_t stats_getpropdesc_hit; + duk_int_t stats_getpropdesc_miss; + duk_int_t stats_getprop_all; + duk_int_t stats_getprop_arrayidx; + duk_int_t stats_getprop_bufobjidx; + duk_int_t stats_getprop_bufferidx; + duk_int_t stats_getprop_bufferlen; + duk_int_t stats_getprop_stringidx; + duk_int_t stats_getprop_stringlen; + duk_int_t stats_getprop_proxy; + duk_int_t stats_getprop_arguments; + duk_int_t stats_putprop_all; + duk_int_t stats_putprop_arrayidx; + duk_int_t stats_putprop_bufobjidx; + duk_int_t stats_putprop_bufferidx; + duk_int_t stats_putprop_proxy; + duk_int_t stats_getvar_all; + duk_int_t stats_putvar_all; + duk_int_t stats_envrec_delayedcreate; + duk_int_t stats_envrec_create; + duk_int_t stats_envrec_newenv; + duk_int_t stats_envrec_oldenv; + duk_int_t stats_envrec_pushclosure; +#endif +}; + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL +duk_heap *duk_heap_alloc(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *heap_udata, + duk_fatal_function fatal_func); +DUK_INTERNAL_DECL void duk_heap_free(duk_heap *heap); +DUK_INTERNAL_DECL void duk_free_hobject(duk_heap *heap, duk_hobject *h); +DUK_INTERNAL_DECL void duk_free_hbuffer(duk_heap *heap, duk_hbuffer *h); +DUK_INTERNAL_DECL void duk_free_hstring(duk_heap *heap, duk_hstring *h); +DUK_INTERNAL_DECL void duk_heap_free_heaphdr_raw(duk_heap *heap, duk_heaphdr *hdr); + +DUK_INTERNAL_DECL void duk_heap_insert_into_heap_allocated(duk_heap *heap, duk_heaphdr *hdr); +#if defined(DUK_USE_REFERENCE_COUNTING) +DUK_INTERNAL_DECL void duk_heap_remove_from_heap_allocated(duk_heap *heap, duk_heaphdr *hdr); +#endif +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL_DECL void duk_heap_insert_into_finalize_list(duk_heap *heap, duk_heaphdr *hdr); +DUK_INTERNAL_DECL void duk_heap_remove_from_finalize_list(duk_heap *heap, duk_heaphdr *hdr); +#endif +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL duk_bool_t duk_heap_in_heap_allocated(duk_heap *heap, duk_heaphdr *ptr); +#endif +#if defined(DUK_USE_INTERRUPT_COUNTER) +DUK_INTERNAL_DECL void duk_heap_switch_thread(duk_heap *heap, duk_hthread *new_thr); +#endif + +DUK_INTERNAL_DECL duk_hstring *duk_heap_strtable_intern(duk_heap *heap, const duk_uint8_t *str, duk_uint32_t blen); +DUK_INTERNAL_DECL duk_hstring *duk_heap_strtable_intern_checked(duk_hthread *thr, const duk_uint8_t *str, duk_uint32_t len); +#if defined(DUK_USE_LITCACHE_SIZE) +DUK_INTERNAL_DECL duk_hstring *duk_heap_strtable_intern_literal_checked(duk_hthread *thr, const duk_uint8_t *str, duk_uint32_t blen); +#endif +DUK_INTERNAL_DECL duk_hstring *duk_heap_strtable_intern_u32(duk_heap *heap, duk_uint32_t val); +DUK_INTERNAL_DECL duk_hstring *duk_heap_strtable_intern_u32_checked(duk_hthread *thr, duk_uint32_t val); +#if defined(DUK_USE_REFERENCE_COUNTING) +DUK_INTERNAL_DECL void duk_heap_strtable_unlink(duk_heap *heap, duk_hstring *h); +#endif +DUK_INTERNAL_DECL void duk_heap_strtable_unlink_prev(duk_heap *heap, duk_hstring *h, duk_hstring *prev); +DUK_INTERNAL_DECL void duk_heap_strtable_force_resize(duk_heap *heap); +DUK_INTERNAL void duk_heap_strtable_free(duk_heap *heap); +#if defined(DUK_USE_DEBUG) +DUK_INTERNAL void duk_heap_strtable_dump(duk_heap *heap); +#endif + +DUK_INTERNAL_DECL void duk_heap_strcache_string_remove(duk_heap *heap, duk_hstring *h); +DUK_INTERNAL_DECL duk_uint_fast32_t duk_heap_strcache_offset_char2byte(duk_hthread *thr, duk_hstring *h, duk_uint_fast32_t char_offset); + +#if defined(DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS) +DUK_INTERNAL_DECL void *duk_default_alloc_function(void *udata, duk_size_t size); +DUK_INTERNAL_DECL void *duk_default_realloc_function(void *udata, void *ptr, duk_size_t newsize); +DUK_INTERNAL_DECL void duk_default_free_function(void *udata, void *ptr); +#endif + +DUK_INTERNAL_DECL void *duk_heap_mem_alloc(duk_heap *heap, duk_size_t size); +DUK_INTERNAL_DECL void *duk_heap_mem_alloc_zeroed(duk_heap *heap, duk_size_t size); +DUK_INTERNAL_DECL void *duk_heap_mem_alloc_checked(duk_hthread *thr, duk_size_t size); +DUK_INTERNAL_DECL void *duk_heap_mem_alloc_checked_zeroed(duk_hthread *thr, duk_size_t size); +DUK_INTERNAL_DECL void *duk_heap_mem_realloc(duk_heap *heap, void *ptr, duk_size_t newsize); +DUK_INTERNAL_DECL void *duk_heap_mem_realloc_indirect(duk_heap *heap, duk_mem_getptr cb, void *ud, duk_size_t newsize); +DUK_INTERNAL_DECL void duk_heap_mem_free(duk_heap *heap, void *ptr); + +DUK_INTERNAL_DECL void duk_heap_free_freelists(duk_heap *heap); + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL_DECL void duk_heap_run_finalizer(duk_heap *heap, duk_hobject *obj); +DUK_INTERNAL_DECL void duk_heap_process_finalize_list(duk_heap *heap); +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +DUK_INTERNAL_DECL void duk_heap_mark_and_sweep(duk_heap *heap, duk_small_uint_t flags); + +DUK_INTERNAL_DECL duk_uint32_t duk_heap_hashstring(duk_heap *heap, const duk_uint8_t *str, duk_size_t len); + +#endif /* DUK_HEAP_H_INCLUDED */ +/* #include duk_debugger.h */ +#line 1 "duk_debugger.h" +#if !defined(DUK_DEBUGGER_H_INCLUDED) +#define DUK_DEBUGGER_H_INCLUDED + +/* Debugger protocol version is defined in the public API header. */ + +/* Initial bytes for markers. */ +#define DUK_DBG_IB_EOM 0x00 +#define DUK_DBG_IB_REQUEST 0x01 +#define DUK_DBG_IB_REPLY 0x02 +#define DUK_DBG_IB_ERROR 0x03 +#define DUK_DBG_IB_NOTIFY 0x04 + +/* Other initial bytes. */ +#define DUK_DBG_IB_INT4 0x10 +#define DUK_DBG_IB_STR4 0x11 +#define DUK_DBG_IB_STR2 0x12 +#define DUK_DBG_IB_BUF4 0x13 +#define DUK_DBG_IB_BUF2 0x14 +#define DUK_DBG_IB_UNUSED 0x15 +#define DUK_DBG_IB_UNDEFINED 0x16 +#define DUK_DBG_IB_NULL 0x17 +#define DUK_DBG_IB_TRUE 0x18 +#define DUK_DBG_IB_FALSE 0x19 +#define DUK_DBG_IB_NUMBER 0x1a +#define DUK_DBG_IB_OBJECT 0x1b +#define DUK_DBG_IB_POINTER 0x1c +#define DUK_DBG_IB_LIGHTFUNC 0x1d +#define DUK_DBG_IB_HEAPPTR 0x1e +/* The short string/integer initial bytes starting from 0x60 don't have + * defines now. + */ + +/* Error codes. */ +#define DUK_DBG_ERR_UNKNOWN 0x00 +#define DUK_DBG_ERR_UNSUPPORTED 0x01 +#define DUK_DBG_ERR_TOOMANY 0x02 +#define DUK_DBG_ERR_NOTFOUND 0x03 +#define DUK_DBG_ERR_APPLICATION 0x04 + +/* Commands and notifys initiated by Duktape. */ +#define DUK_DBG_CMD_STATUS 0x01 +#define DUK_DBG_CMD_UNUSED_2 0x02 /* Duktape 1.x: print notify */ +#define DUK_DBG_CMD_UNUSED_3 0x03 /* Duktape 1.x: alert notify */ +#define DUK_DBG_CMD_UNUSED_4 0x04 /* Duktape 1.x: log notify */ +#define DUK_DBG_CMD_THROW 0x05 +#define DUK_DBG_CMD_DETACHING 0x06 +#define DUK_DBG_CMD_APPNOTIFY 0x07 + +/* Commands initiated by debug client. */ +#define DUK_DBG_CMD_BASICINFO 0x10 +#define DUK_DBG_CMD_TRIGGERSTATUS 0x11 +#define DUK_DBG_CMD_PAUSE 0x12 +#define DUK_DBG_CMD_RESUME 0x13 +#define DUK_DBG_CMD_STEPINTO 0x14 +#define DUK_DBG_CMD_STEPOVER 0x15 +#define DUK_DBG_CMD_STEPOUT 0x16 +#define DUK_DBG_CMD_LISTBREAK 0x17 +#define DUK_DBG_CMD_ADDBREAK 0x18 +#define DUK_DBG_CMD_DELBREAK 0x19 +#define DUK_DBG_CMD_GETVAR 0x1a +#define DUK_DBG_CMD_PUTVAR 0x1b +#define DUK_DBG_CMD_GETCALLSTACK 0x1c +#define DUK_DBG_CMD_GETLOCALS 0x1d +#define DUK_DBG_CMD_EVAL 0x1e +#define DUK_DBG_CMD_DETACH 0x1f +#define DUK_DBG_CMD_DUMPHEAP 0x20 +#define DUK_DBG_CMD_GETBYTECODE 0x21 +#define DUK_DBG_CMD_APPREQUEST 0x22 +#define DUK_DBG_CMD_GETHEAPOBJINFO 0x23 +#define DUK_DBG_CMD_GETOBJPROPDESC 0x24 +#define DUK_DBG_CMD_GETOBJPROPDESCRANGE 0x25 + +/* The low 8 bits map directly to duk_hobject.h DUK_PROPDESC_FLAG_xxx. + * The remaining flags are specific to the debugger. + */ +#define DUK_DBG_PROPFLAG_SYMBOL (1U << 8) +#define DUK_DBG_PROPFLAG_HIDDEN (1U << 9) + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_INTERNAL_DECL void duk_debug_do_detach(duk_heap *heap); + +DUK_INTERNAL_DECL duk_bool_t duk_debug_read_peek(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_debug_write_flush(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_debug_skip_bytes(duk_hthread *thr, duk_size_t length); +DUK_INTERNAL_DECL void duk_debug_skip_byte(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_debug_read_bytes(duk_hthread *thr, duk_uint8_t *data, duk_size_t length); +DUK_INTERNAL_DECL duk_uint8_t duk_debug_read_byte(duk_hthread *thr); +DUK_INTERNAL_DECL duk_int32_t duk_debug_read_int(duk_hthread *thr); +DUK_INTERNAL_DECL duk_hstring *duk_debug_read_hstring(duk_hthread *thr); +/* XXX: exposed duk_debug_read_pointer */ +/* XXX: exposed duk_debug_read_buffer */ +/* XXX: exposed duk_debug_read_hbuffer */ +#if 0 +DUK_INTERNAL_DECL duk_heaphdr *duk_debug_read_heapptr(duk_hthread *thr); +#endif +#if defined(DUK_USE_DEBUGGER_INSPECT) +DUK_INTERNAL_DECL duk_heaphdr *duk_debug_read_any_ptr(duk_hthread *thr); +#endif +DUK_INTERNAL_DECL duk_tval *duk_debug_read_tval(duk_hthread *thr); + +DUK_INTERNAL_DECL void duk_debug_write_bytes(duk_hthread *thr, const duk_uint8_t *data, duk_size_t length); +DUK_INTERNAL_DECL void duk_debug_write_byte(duk_hthread *thr, duk_uint8_t x); +DUK_INTERNAL_DECL void duk_debug_write_unused(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_debug_write_undefined(duk_hthread *thr); +#if defined(DUK_USE_DEBUGGER_INSPECT) +DUK_INTERNAL_DECL void duk_debug_write_null(duk_hthread *thr); +#endif +DUK_INTERNAL_DECL void duk_debug_write_boolean(duk_hthread *thr, duk_uint_t val); +DUK_INTERNAL_DECL void duk_debug_write_int(duk_hthread *thr, duk_int32_t x); +DUK_INTERNAL_DECL void duk_debug_write_uint(duk_hthread *thr, duk_uint32_t x); +DUK_INTERNAL_DECL void duk_debug_write_string(duk_hthread *thr, const char *data, duk_size_t length); +DUK_INTERNAL_DECL void duk_debug_write_cstring(duk_hthread *thr, const char *data); +DUK_INTERNAL_DECL void duk_debug_write_hstring(duk_hthread *thr, duk_hstring *h); +DUK_INTERNAL_DECL void duk_debug_write_buffer(duk_hthread *thr, const char *data, duk_size_t length); +DUK_INTERNAL_DECL void duk_debug_write_hbuffer(duk_hthread *thr, duk_hbuffer *h); +DUK_INTERNAL_DECL void duk_debug_write_pointer(duk_hthread *thr, void *ptr); +#if defined(DUK_USE_DEBUGGER_DUMPHEAP) || defined(DUK_USE_DEBUGGER_INSPECT) +DUK_INTERNAL_DECL void duk_debug_write_heapptr(duk_hthread *thr, duk_heaphdr *h); +#endif +DUK_INTERNAL_DECL void duk_debug_write_hobject(duk_hthread *thr, duk_hobject *obj); +DUK_INTERNAL_DECL void duk_debug_write_tval(duk_hthread *thr, duk_tval *tv); +#if 0 /* unused */ +DUK_INTERNAL_DECL void duk_debug_write_request(duk_hthread *thr, duk_small_uint_t command); +#endif +DUK_INTERNAL_DECL void duk_debug_write_reply(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_debug_write_error_eom(duk_hthread *thr, duk_small_uint_t err_code, const char *msg); +DUK_INTERNAL_DECL void duk_debug_write_notify(duk_hthread *thr, duk_small_uint_t command); +DUK_INTERNAL_DECL void duk_debug_write_eom(duk_hthread *thr); + +DUK_INTERNAL_DECL duk_uint_fast32_t duk_debug_curr_line(duk_hthread *thr); +DUK_INTERNAL_DECL void duk_debug_send_status(duk_hthread *thr); +#if defined(DUK_USE_DEBUGGER_THROW_NOTIFY) +DUK_INTERNAL_DECL void duk_debug_send_throw(duk_hthread *thr, duk_bool_t fatal); +#endif + +DUK_INTERNAL_DECL void duk_debug_halt_execution(duk_hthread *thr, duk_bool_t use_prev_pc); +DUK_INTERNAL_DECL duk_bool_t duk_debug_process_messages(duk_hthread *thr, duk_bool_t no_block); + +DUK_INTERNAL_DECL duk_small_int_t duk_debug_add_breakpoint(duk_hthread *thr, duk_hstring *filename, duk_uint32_t line); +DUK_INTERNAL_DECL duk_bool_t duk_debug_remove_breakpoint(duk_hthread *thr, duk_small_uint_t breakpoint_index); + +DUK_INTERNAL_DECL duk_bool_t duk_debug_is_attached(duk_heap *heap); +DUK_INTERNAL_DECL duk_bool_t duk_debug_is_paused(duk_heap *heap); +DUK_INTERNAL_DECL void duk_debug_set_paused(duk_heap *heap); +DUK_INTERNAL_DECL void duk_debug_clear_paused(duk_heap *heap); +DUK_INTERNAL_DECL void duk_debug_clear_pause_state(duk_heap *heap); +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +#endif /* DUK_DEBUGGER_H_INCLUDED */ +/* #include duk_debug.h */ +#line 1 "duk_debug.h" +/* + * Debugging macros, DUK_DPRINT() and its variants in particular. + * + * DUK_DPRINT() allows formatted debug prints, and supports standard + * and Duktape specific formatters. See duk_debug_vsnprintf.c for details. + * + * DUK_D(x), DUK_DD(x), and DUK_DDD(x) are used together with log macros + * for technical reasons. They are concretely used to hide 'x' from the + * compiler when the corresponding log level is disabled. This allows + * clean builds on non-C99 compilers, at the cost of more verbose code. + * Examples: + * + * DUK_D(DUK_DPRINT("foo")); + * DUK_DD(DUK_DDPRINT("foo")); + * DUK_DDD(DUK_DDDPRINT("foo")); + * + * This approach is preferable to the old "double parentheses" hack because + * double parentheses make the C99 solution worse: __FILE__ and __LINE__ can + * no longer be added transparently without going through globals, which + * works poorly with threading. + */ + +#if !defined(DUK_DEBUG_H_INCLUDED) +#define DUK_DEBUG_H_INCLUDED + +#if defined(DUK_USE_DEBUG) + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 0) +#define DUK_D(x) x +#else +#define DUK_D(x) do { } while (0) /* omit */ +#endif + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 1) +#define DUK_DD(x) x +#else +#define DUK_DD(x) do { } while (0) /* omit */ +#endif + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) +#define DUK_DDD(x) x +#else +#define DUK_DDD(x) do { } while (0) /* omit */ +#endif + +/* + * Exposed debug macros: debugging enabled + */ + +#if defined(DUK_USE_VARIADIC_MACROS) + +/* Note: combining __FILE__, __LINE__, and __func__ into fmt would be + * possible compile time, but waste some space with shared function names. + */ +#define DUK__DEBUG_LOG(lev,...) duk_debug_log((duk_int_t) (lev), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, DUK_FUNC_MACRO, __VA_ARGS__); + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 0) +#define DUK_DPRINT(...) DUK__DEBUG_LOG(DUK_LEVEL_DEBUG, __VA_ARGS__) +#else +#define DUK_DPRINT(...) +#endif + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 1) +#define DUK_DDPRINT(...) DUK__DEBUG_LOG(DUK_LEVEL_DDEBUG, __VA_ARGS__) +#else +#define DUK_DDPRINT(...) +#endif + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) +#define DUK_DDDPRINT(...) DUK__DEBUG_LOG(DUK_LEVEL_DDDEBUG, __VA_ARGS__) +#else +#define DUK_DDDPRINT(...) +#endif + +#else /* DUK_USE_VARIADIC_MACROS */ + +#define DUK__DEBUG_STASH(lev) \ + (void) DUK_SNPRINTF(duk_debug_file_stash, DUK_DEBUG_STASH_SIZE, "%s", (const char *) DUK_FILE_MACRO), \ + (void) (duk_debug_file_stash[DUK_DEBUG_STASH_SIZE - 1] = (char) 0), \ + (void) (duk_debug_line_stash = (duk_int_t) DUK_LINE_MACRO), \ + (void) DUK_SNPRINTF(duk_debug_func_stash, DUK_DEBUG_STASH_SIZE, "%s", (const char *) DUK_FUNC_MACRO), \ + (void) (duk_debug_func_stash[DUK_DEBUG_STASH_SIZE - 1] = (char) 0), \ + (void) (duk_debug_level_stash = (lev)) + +/* Without variadic macros resort to comma expression trickery to handle debug + * prints. This generates a lot of harmless warnings. These hacks are not + * needed normally because DUK_D() and friends will hide the entire debug log + * statement from the compiler. + */ + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 0) +#define DUK_DPRINT DUK__DEBUG_STASH(DUK_LEVEL_DEBUG), (void) duk_debug_log /* args go here in parens */ +#else +#define DUK_DPRINT 0 && /* args go here as a comma expression in parens */ +#endif + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 1) +#define DUK_DDPRINT DUK__DEBUG_STASH(DUK_LEVEL_DDEBUG), (void) duk_debug_log /* args go here in parens */ +#else +#define DUK_DDPRINT 0 && /* args */ +#endif + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) +#define DUK_DDDPRINT DUK__DEBUG_STASH(DUK_LEVEL_DDDEBUG), (void) duk_debug_log /* args go here in parens */ +#else +#define DUK_DDDPRINT 0 && /* args */ +#endif + +#endif /* DUK_USE_VARIADIC_MACROS */ + +#else /* DUK_USE_DEBUG */ + +/* + * Exposed debug macros: debugging disabled + */ + +#define DUK_D(x) do { } while (0) /* omit */ +#define DUK_DD(x) do { } while (0) /* omit */ +#define DUK_DDD(x) do { } while (0) /* omit */ + +#if defined(DUK_USE_VARIADIC_MACROS) + +#define DUK_DPRINT(...) +#define DUK_DDPRINT(...) +#define DUK_DDDPRINT(...) + +#else /* DUK_USE_VARIADIC_MACROS */ + +#define DUK_DPRINT 0 && /* args go here as a comma expression in parens */ +#define DUK_DDPRINT 0 && /* args */ +#define DUK_DDDPRINT 0 && /* args */ + +#endif /* DUK_USE_VARIADIC_MACROS */ + +#endif /* DUK_USE_DEBUG */ + +/* + * Structs + */ + +#if defined(DUK_USE_DEBUG) +struct duk_fixedbuffer { + duk_uint8_t *buffer; + duk_size_t length; + duk_size_t offset; + duk_bool_t truncated; +}; +#endif + +/* + * Prototypes + */ + +#if defined(DUK_USE_DEBUG) +DUK_INTERNAL_DECL duk_int_t duk_debug_vsnprintf(char *str, duk_size_t size, const char *format, va_list ap); +#if 0 /*unused*/ +DUK_INTERNAL_DECL duk_int_t duk_debug_snprintf(char *str, duk_size_t size, const char *format, ...); +#endif +DUK_INTERNAL_DECL void duk_debug_format_funcptr(char *buf, duk_size_t buf_size, duk_uint8_t *fptr, duk_size_t fptr_size); + +#if defined(DUK_USE_VARIADIC_MACROS) +DUK_INTERNAL_DECL void duk_debug_log(duk_int_t level, const char *file, duk_int_t line, const char *func, const char *fmt, ...); +#else /* DUK_USE_VARIADIC_MACROS */ +/* parameter passing, not thread safe */ +#define DUK_DEBUG_STASH_SIZE 128 +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL char duk_debug_file_stash[DUK_DEBUG_STASH_SIZE]; +DUK_INTERNAL_DECL duk_int_t duk_debug_line_stash; +DUK_INTERNAL_DECL char duk_debug_func_stash[DUK_DEBUG_STASH_SIZE]; +DUK_INTERNAL_DECL duk_int_t duk_debug_level_stash; +#endif +DUK_INTERNAL_DECL void duk_debug_log(const char *fmt, ...); +#endif /* DUK_USE_VARIADIC_MACROS */ + +DUK_INTERNAL_DECL void duk_fb_put_bytes(duk_fixedbuffer *fb, const duk_uint8_t *buffer, duk_size_t length); +DUK_INTERNAL_DECL void duk_fb_put_byte(duk_fixedbuffer *fb, duk_uint8_t x); +DUK_INTERNAL_DECL void duk_fb_put_cstring(duk_fixedbuffer *fb, const char *x); +DUK_INTERNAL_DECL void duk_fb_sprintf(duk_fixedbuffer *fb, const char *fmt, ...); +DUK_INTERNAL_DECL void duk_fb_put_funcptr(duk_fixedbuffer *fb, duk_uint8_t *fptr, duk_size_t fptr_size); +DUK_INTERNAL_DECL duk_bool_t duk_fb_is_full(duk_fixedbuffer *fb); + +#endif /* DUK_USE_DEBUG */ + +#endif /* DUK_DEBUG_H_INCLUDED */ +/* #include duk_error.h */ +#line 1 "duk_error.h" +/* + * Error handling macros, assertion macro, error codes. + * + * There are three types of 'errors': + * + * 1. Ordinary errors relative to a thread, cause a longjmp, catchable. + * 2. Fatal errors relative to a heap, cause fatal handler to be called. + * 3. Fatal errors without context, cause the default (not heap specific) + * fatal handler to be called. + * + * Fatal errors without context are used by debug code such as assertions. + * By providing a fatal error handler for a Duktape heap, user code can + * avoid fatal errors without context in non-debug builds. + */ + +#if !defined(DUK_ERROR_H_INCLUDED) +#define DUK_ERROR_H_INCLUDED + +/* + * Error codes: defined in duktape.h + * + * Error codes are used as a shorthand to throw exceptions from inside + * the implementation. The appropriate ECMAScript object is constructed + * based on the code. ECMAScript code throws objects directly. The error + * codes are defined in the public API header because they are also used + * by calling code. + */ + +/* + * Normal error + * + * Normal error is thrown with a longjmp() through the current setjmp() + * catchpoint record in the duk_heap. The 'curr_thread' of the duk_heap + * identifies the throwing thread. + * + * Error formatting is usually unnecessary. The error macros provide a + * zero argument version (no formatting) and separate macros for small + * argument counts. Variadic macros are not used to avoid portability + * issues and avoid the need for stash-based workarounds when they're not + * available. Vararg calls are avoided for non-formatted error calls + * because vararg call sites are larger than normal, and there are a lot + * of call sites with no formatting. + * + * Note that special formatting provided by debug macros is NOT available. + * + * The _RAW variants allow the caller to specify file and line. This makes + * it easier to write checked calls which want to use the call site of the + * checked function, not the error macro call inside the checked function. + */ + +#if defined(DUK_USE_VERBOSE_ERRORS) + +/* Because there are quite many call sites, pack error code (require at most + * 8-bit) into a single argument. + */ +#define DUK_ERROR(thr,err,msg) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) DUK_LINE_MACRO; \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error((thr), DUK_FILE_MACRO, (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (msg)); \ + } while (0) +#define DUK_ERROR_RAW(thr,file,line,err,msg) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) (line); \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error((thr), (file), (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (msg)); \ + } while (0) + +#define DUK_ERROR_FMT1(thr,err,fmt,arg1) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) DUK_LINE_MACRO; \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), DUK_FILE_MACRO, (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1)); \ + } while (0) +#define DUK_ERROR_RAW_FMT1(thr,file,line,err,fmt,arg1) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) (line); \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), (file), (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1)); \ + } while (0) + +#define DUK_ERROR_FMT2(thr,err,fmt,arg1,arg2) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) DUK_LINE_MACRO; \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), DUK_FILE_MACRO, (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1), (arg2)); \ + } while (0) +#define DUK_ERROR_RAW_FMT2(thr,file,line,err,fmt,arg1,arg2) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) (line); \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), (file), (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1), (arg2)); \ + } while (0) + +#define DUK_ERROR_FMT3(thr,err,fmt,arg1,arg2,arg3) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) DUK_LINE_MACRO; \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), DUK_FILE_MACRO, (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1), (arg2), (arg3)); \ + } while (0) +#define DUK_ERROR_RAW_FMT3(thr,file,line,err,fmt,arg1,arg2,arg3) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) (line); \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), (file), (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1), (arg2), (arg3)); \ + } while (0) + +#define DUK_ERROR_FMT4(thr,err,fmt,arg1,arg2,arg3,arg4) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) DUK_LINE_MACRO; \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), DUK_FILE_MACRO, (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1), (arg2), (arg3), (arg4)); \ + } while (0) +#define DUK_ERROR_RAW_FMT4(thr,file,line,err,fmt,arg1,arg2,arg3,arg4) do { \ + duk_errcode_t duk__err = (err); duk_int_t duk__line = (duk_int_t) (line); \ + DUK_ASSERT(duk__err >= 0 && duk__err <= 0xff); DUK_ASSERT(duk__line >= 0 && duk__line <= 0x00ffffffL); \ + duk_err_handle_error_fmt((thr), (file), (((duk_uint_t) duk__err) << 24) | ((duk_uint_t) duk__line), (fmt), (arg1), (arg2), (arg3), (arg4)); \ + } while (0) + +#else /* DUK_USE_VERBOSE_ERRORS */ + +#define DUK_ERROR(thr,err,msg) duk_err_handle_error((thr), (err)) +#define DUK_ERROR_RAW(thr,file,line,err,msg) duk_err_handle_error((thr), (err)) + +#define DUK_ERROR_FMT1(thr,err,fmt,arg1) DUK_ERROR((thr),(err),(fmt)) +#define DUK_ERROR_RAW_FMT1(thr,file,line,err,fmt,arg1) DUK_ERROR_RAW((thr),(file),(line),(err),(fmt)) + +#define DUK_ERROR_FMT2(thr,err,fmt,arg1,arg2) DUK_ERROR((thr),(err),(fmt)) +#define DUK_ERROR_RAW_FMT2(thr,file,line,err,fmt,arg1,arg2) DUK_ERROR_RAW((thr),(file),(line),(err),(fmt)) + +#define DUK_ERROR_FMT3(thr,err,fmt,arg1,arg2,arg3) DUK_ERROR((thr),(err),(fmt)) +#define DUK_ERROR_RAW_FMT3(thr,file,line,err,fmt,arg1,arg2,arg3) DUK_ERROR_RAW((thr),(file),(line),(err),(fmt)) + +#define DUK_ERROR_FMT4(thr,err,fmt,arg1,arg2,arg3,arg4) DUK_ERROR((thr),(err),(fmt)) +#define DUK_ERROR_RAW_FMT4(thr,file,line,err,fmt,arg1,arg2,arg3,arg4) DUK_ERROR_RAW((thr),(file),(line),(err),(fmt)) + +#endif /* DUK_USE_VERBOSE_ERRORS */ + +/* + * Fatal error without context + * + * The macro is an expression to make it compatible with DUK_ASSERT_EXPR(). + */ + +#define DUK_FATAL_WITHOUT_CONTEXT(msg) \ + duk_default_fatal_handler(NULL, (msg)) + +/* + * Error throwing helpers + * + * The goal is to provide verbose and configurable error messages. Call + * sites should be clean in source code and compile to a small footprint. + * Small footprint is also useful for performance because small cold paths + * reduce code cache pressure. Adding macros here only makes sense if there + * are enough call sites to get concrete benefits. + * + * DUK_ERROR_xxx() macros are generic and can be used anywhere. + * + * DUK_DCERROR_xxx() macros can only be used in Duktape/C functions where + * the "return DUK_RET_xxx;" shorthand is available for low memory targets. + * The DUK_DCERROR_xxx() macros always either throw or perform a + * 'return DUK_RET_xxx' from the calling function. + */ + +#if defined(DUK_USE_VERBOSE_ERRORS) +/* Verbose errors with key/value summaries (non-paranoid) or without key/value + * summaries (paranoid, for some security sensitive environments), the paranoid + * vs. non-paranoid distinction affects only a few specific errors. + */ +#if defined(DUK_USE_PARANOID_ERRORS) +#define DUK_ERROR_REQUIRE_TYPE_INDEX(thr,idx,expectname,lowmemstr) do { \ + duk_err_require_type_index((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, (idx), (expectname)); \ + } while (0) +#else /* DUK_USE_PARANOID_ERRORS */ +#define DUK_ERROR_REQUIRE_TYPE_INDEX(thr,idx,expectname,lowmemstr) do { \ + duk_err_require_type_index((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, (idx), (expectname)); \ + } while (0) +#endif /* DUK_USE_PARANOID_ERRORS */ + +#define DUK_ERROR_INTERNAL(thr) do { \ + duk_err_error_internal((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO); \ + } while (0) +#define DUK_DCERROR_INTERNAL(thr) do { \ + DUK_ERROR_INTERNAL((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_ALLOC_FAILED(thr) do { \ + duk_err_error_alloc_failed((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO); \ + } while (0) +#define DUK_ERROR_UNSUPPORTED(thr) do { \ + DUK_ERROR((thr), DUK_ERR_ERROR, DUK_STR_UNSUPPORTED); \ + } while (0) +#define DUK_DCERROR_UNSUPPORTED(thr) do { \ + DUK_ERROR_UNSUPPORTED((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_ERROR(thr,msg) do { \ + duk_err_error((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, (msg)); \ + } while (0) +#define DUK_ERROR_RANGE_INDEX(thr,idx) do { \ + duk_err_range_index((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, (idx)); \ + } while (0) +#define DUK_ERROR_RANGE_PUSH_BEYOND(thr) do { \ + duk_err_range_push_beyond((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO); \ + } while (0) +#define DUK_ERROR_RANGE_INVALID_ARGS(thr) do { \ + DUK_ERROR_RANGE((thr), DUK_STR_INVALID_ARGS); \ + } while (0) +#define DUK_DCERROR_RANGE_INVALID_ARGS(thr) do { \ + DUK_ERROR_RANGE_INVALID_ARGS((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_RANGE_INVALID_COUNT(thr) do { \ + DUK_ERROR_RANGE((thr), DUK_STR_INVALID_COUNT); \ + } while (0) +#define DUK_DCERROR_RANGE_INVALID_COUNT(thr) do { \ + DUK_ERROR_RANGE_INVALID_COUNT((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_RANGE_INVALID_LENGTH(thr) do { \ + DUK_ERROR_RANGE((thr), DUK_STR_INVALID_LENGTH); \ + } while (0) +#define DUK_DCERROR_RANGE_INVALID_LENGTH(thr) do { \ + DUK_ERROR_RANGE_INVALID_LENGTH((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_RANGE(thr,msg) do { \ + duk_err_range((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, (msg)); \ + } while (0) +#define DUK_ERROR_EVAL(thr,msg) do { \ + DUK_ERROR((thr), DUK_ERR_EVAL_ERROR, (msg)); \ + } while (0) +#define DUK_ERROR_REFERENCE(thr,msg) do { \ + DUK_ERROR((thr), DUK_ERR_REFERENCE_ERROR, (msg)); \ + } while (0) +#define DUK_ERROR_SYNTAX(thr,msg) do { \ + DUK_ERROR((thr), DUK_ERR_SYNTAX_ERROR, (msg)); \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_ARGS(thr) do { \ + duk_err_type_invalid_args((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO); \ + } while (0) +#define DUK_DCERROR_TYPE_INVALID_ARGS(thr) do { \ + DUK_ERROR_TYPE_INVALID_ARGS((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_STATE(thr) do { \ + duk_err_type_invalid_state((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO); \ + } while (0) +#define DUK_DCERROR_TYPE_INVALID_STATE(thr) do { \ + DUK_ERROR_TYPE_INVALID_STATE((thr)); \ + return 0; \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_TRAP_RESULT(thr) do { \ + duk_err_type_invalid_trap_result((thr), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO); \ + } while (0) +#define DUK_DCERROR_TYPE_INVALID_TRAP_RESULT(thr) do { \ + DUK_ERROR_TYPE((thr), DUK_STR_INVALID_TRAP_RESULT); \ + } while (0) +#define DUK_ERROR_TYPE(thr,msg) do { \ + DUK_ERROR((thr), DUK_ERR_TYPE_ERROR, (msg)); \ + } while (0) +#define DUK_ERROR_URI(thr,msg) do { \ + DUK_ERROR((thr), DUK_ERR_URI_ERROR, (msg)); \ + } while (0) +#else /* DUK_USE_VERBOSE_ERRORS */ +/* Non-verbose errors for low memory targets: no file, line, or message. */ + +#define DUK_ERROR_REQUIRE_TYPE_INDEX(thr,idx,expectname,lowmemstr) do { \ + duk_err_type((thr)); \ + } while (0) + +#define DUK_ERROR_INTERNAL(thr) do { \ + duk_err_error((thr)); \ + } while (0) +#define DUK_DCERROR_INTERNAL(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_ERROR; \ + } while (0) +#define DUK_ERROR_ALLOC_FAILED(thr) do { \ + duk_err_error((thr)); \ + } while (0) +#define DUK_ERROR_UNSUPPORTED(thr) do { \ + duk_err_error((thr)); \ + } while (0) +#define DUK_DCERROR_UNSUPPORTED(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_ERROR; \ + } while (0) +#define DUK_ERROR_ERROR(thr,msg) do { \ + duk_err_error((thr)); \ + } while (0) +#define DUK_ERROR_RANGE_INDEX(thr,idx) do { \ + duk_err_range((thr)); \ + } while (0) +#define DUK_ERROR_RANGE_PUSH_BEYOND(thr) do { \ + duk_err_range((thr)); \ + } while (0) +#define DUK_ERROR_RANGE_INVALID_ARGS(thr) do { \ + duk_err_range((thr)); \ + } while (0) +#define DUK_DCERROR_RANGE_INVALID_ARGS(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_RANGE_ERROR; \ + } while (0) +#define DUK_ERROR_RANGE_INVALID_COUNT(thr) do { \ + duk_err_range((thr)); \ + } while (0) +#define DUK_DCERROR_RANGE_INVALID_COUNT(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_RANGE_ERROR; \ + } while (0) +#define DUK_ERROR_RANGE_INVALID_LENGTH(thr) do { \ + duk_err_range((thr)); \ + } while (0) +#define DUK_DCERROR_RANGE_INVALID_LENGTH(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_RANGE_ERROR; \ + } while (0) +#define DUK_ERROR_RANGE(thr,msg) do { \ + duk_err_range((thr)); \ + } while (0) +#define DUK_ERROR_EVAL(thr,msg) do { \ + duk_err_eval((thr)); \ + } while (0) +#define DUK_ERROR_REFERENCE(thr,msg) do { \ + duk_err_reference((thr)); \ + } while (0) +#define DUK_ERROR_SYNTAX(thr,msg) do { \ + duk_err_syntax((thr)); \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_ARGS(thr) do { \ + duk_err_type((thr)); \ + } while (0) +#define DUK_DCERROR_TYPE_INVALID_ARGS(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_TYPE_ERROR; \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_STATE(thr) do { \ + duk_err_type((thr)); \ + } while (0) +#define DUK_DCERROR_TYPE_INVALID_STATE(thr) do { \ + duk_err_type((thr)); \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_TRAP_RESULT(thr) do { \ + duk_err_type((thr)); \ + } while (0) +#define DUK_DCERROR_TYPE_INVALID_TRAP_RESULT(thr) do { \ + DUK_UNREF((thr)); \ + return DUK_RET_TYPE_ERROR; \ + } while (0) +#define DUK_ERROR_TYPE_INVALID_TRAP_RESULT(thr) do { \ + duk_err_type((thr)); \ + } while (0) +#define DUK_ERROR_TYPE(thr,msg) do { \ + duk_err_type((thr)); \ + } while (0) +#define DUK_ERROR_URI(thr,msg) do { \ + duk_err_uri((thr)); \ + } while (0) +#endif /* DUK_USE_VERBOSE_ERRORS */ + +/* + * Assert macro: failure causes a fatal error. + * + * NOTE: since the assert macro doesn't take a heap/context argument, there's + * no way to look up a heap/context specific fatal error handler which may have + * been given by the application. Instead, assertion failures always use the + * internal default fatal error handler; it can be replaced via duk_config.h + * and then applies to all Duktape heaps. + */ + +#if defined(DUK_USE_ASSERTIONS) + +/* The message should be a compile time constant without formatting (less risk); + * we don't care about assertion text size because they're not used in production + * builds. + */ +#define DUK_ASSERT(x) do { \ + if (!(x)) { \ + DUK_FATAL_WITHOUT_CONTEXT("assertion failed: " #x \ + " (" DUK_FILE_MACRO ":" DUK_MACRO_STRINGIFY(DUK_LINE_MACRO) ")"); \ + } \ + } while (0) + +/* Assertion compatible inside a comma expression, evaluates to void. */ +#define DUK_ASSERT_EXPR(x) \ + ((void) ((x) ? 0 : (DUK_FATAL_WITHOUT_CONTEXT("assertion failed: " #x \ + " (" DUK_FILE_MACRO ":" DUK_MACRO_STRINGIFY(DUK_LINE_MACRO) ")"), 0))) + +#else /* DUK_USE_ASSERTIONS */ + +#define DUK_ASSERT(x) do { /* assertion omitted */ } while (0) + +#define DUK_ASSERT_EXPR(x) ((void) 0) + +#endif /* DUK_USE_ASSERTIONS */ + +/* this variant is used when an assert would generate a compile warning by + * being always true (e.g. >= 0 comparison for an unsigned value + */ +#define DUK_ASSERT_DISABLE(x) do { /* assertion disabled */ } while (0) + +/* + * Assertion helpers + */ + +#if defined(DUK_USE_ASSERTIONS) && defined(DUK_USE_REFERENCE_COUNTING) +#define DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(h) do { \ + DUK_ASSERT((h) == NULL || DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) (h)) > 0); \ + } while (0) +#define DUK_ASSERT_REFCOUNT_NONZERO_TVAL(tv) do { \ + if ((tv) != NULL && DUK_TVAL_IS_HEAP_ALLOCATED((tv))) { \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(DUK_TVAL_GET_HEAPHDR((tv))) > 0); \ + } \ + } while (0) +#else +#define DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(h) /* no refcount check */ +#define DUK_ASSERT_REFCOUNT_NONZERO_TVAL(tv) /* no refcount check */ +#endif + +#define DUK_ASSERT_TOP(ctx,n) DUK_ASSERT((duk_idx_t) duk_get_top((ctx)) == (duk_idx_t) (n)) + +#if defined(DUK_USE_ASSERTIONS) && defined(DUK_USE_PACKED_TVAL) +#define DUK_ASSERT_DOUBLE_IS_NORMALIZED(dval) do { \ + duk_double_union duk__assert_tmp_du; \ + duk__assert_tmp_du.d = (dval); \ + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&duk__assert_tmp_du)); \ + } while (0) +#else +#define DUK_ASSERT_DOUBLE_IS_NORMALIZED(dval) /* nop */ +#endif + +#define DUK_ASSERT_VS_SPACE(thr) \ + DUK_ASSERT(thr->valstack_top < thr->valstack_end) + +/* + * Helper to initialize a memory area (e.g. struct) with garbage when + * assertions enabled. + */ + +#if defined(DUK_USE_ASSERTIONS) +#define DUK_ASSERT_SET_GARBAGE(ptr,size) do { \ + duk_memset_unsafe((void *) (ptr), 0x5a, size); \ + } while (0) +#else +#define DUK_ASSERT_SET_GARBAGE(ptr,size) do {} while (0) +#endif + +/* + * Helper for valstack space + * + * Caller of DUK_ASSERT_VALSTACK_SPACE() estimates the number of free stack entries + * required for its own use, and any child calls which are not (a) Duktape API calls + * or (b) Duktape calls which involve extending the valstack (e.g. getter call). + */ + +#define DUK_VALSTACK_ASSERT_EXTRA 5 /* this is added to checks to allow for Duktape + * API calls in addition to function's own use + */ +#if defined(DUK_USE_ASSERTIONS) +#define DUK_ASSERT_VALSTACK_SPACE(thr,n) do { \ + DUK_ASSERT((thr) != NULL); \ + DUK_ASSERT((thr)->valstack_end - (thr)->valstack_top >= (n) + DUK_VALSTACK_ASSERT_EXTRA); \ + } while (0) +#else +#define DUK_ASSERT_VALSTACK_SPACE(thr,n) /* no valstack space check */ +#endif + +/* + * Prototypes + */ + +#if defined(DUK_USE_VERBOSE_ERRORS) +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_handle_error(duk_hthread *thr, const char *filename, duk_uint_t line_and_code, const char *msg)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_handle_error_fmt(duk_hthread *thr, const char *filename, duk_uint_t line_and_code, const char *fmt, ...)); +#else /* DUK_USE_VERBOSE_ERRORS */ +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_handle_error(duk_hthread *thr, duk_errcode_t code)); +#endif /* DUK_USE_VERBOSE_ERRORS */ + +#if defined(DUK_USE_VERBOSE_ERRORS) +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_create_and_throw(duk_hthread *thr, duk_errcode_t code, const char *msg, const char *filename, duk_int_t line)); +#else +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_create_and_throw(duk_hthread *thr, duk_errcode_t code)); +#endif + +DUK_NORETURN(DUK_INTERNAL_DECL void duk_error_throw_from_negative_rc(duk_hthread *thr, duk_ret_t rc)); + +#define DUK_AUGMENT_FLAG_NOBLAME_FILELINE (1U << 0) /* if set, don't blame C file/line for .fileName and .lineNumber */ +#define DUK_AUGMENT_FLAG_SKIP_ONE (1U << 1) /* if set, skip topmost activation in traceback construction */ + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) +DUK_INTERNAL_DECL void duk_err_augment_error_create(duk_hthread *thr, duk_hthread *thr_callstack, const char *filename, duk_int_t line, duk_small_uint_t flags); +#endif +#if defined(DUK_USE_AUGMENT_ERROR_THROW) +DUK_INTERNAL_DECL void duk_err_augment_error_throw(duk_hthread *thr); +#endif + +#if defined(DUK_USE_VERBOSE_ERRORS) +#if defined(DUK_USE_PARANOID_ERRORS) +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_require_type_index(duk_hthread *thr, const char *filename, duk_int_t linenumber, duk_idx_t idx, const char *expect_name)); +#else +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_require_type_index(duk_hthread *thr, const char *filename, duk_int_t linenumber, duk_idx_t idx, const char *expect_name)); +#endif +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_error_internal(duk_hthread *thr, const char *filename, duk_int_t linenumber)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_error_alloc_failed(duk_hthread *thr, const char *filename, duk_int_t linenumber)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_error(duk_hthread *thr, const char *filename, duk_int_t linenumber, const char *message)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_range_index(duk_hthread *thr, const char *filename, duk_int_t linenumber, duk_idx_t idx)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_range_push_beyond(duk_hthread *thr, const char *filename, duk_int_t linenumber)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_range(duk_hthread *thr, const char *filename, duk_int_t linenumber, const char *message)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_type_invalid_args(duk_hthread *thr, const char *filename, duk_int_t linenumber)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_type_invalid_state(duk_hthread *thr, const char *filename, duk_int_t linenumber)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_type_invalid_trap_result(duk_hthread *thr, const char *filename, duk_int_t linenumber)); +#else /* DUK_VERBOSE_ERRORS */ +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_error(duk_hthread *thr)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_range(duk_hthread *thr)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_eval(duk_hthread *thr)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_reference(duk_hthread *thr)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_syntax(duk_hthread *thr)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_type(duk_hthread *thr)); +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_uri(duk_hthread *thr)); +#endif /* DUK_VERBOSE_ERRORS */ + +DUK_NORETURN(DUK_INTERNAL_DECL void duk_err_longjmp(duk_hthread *thr)); + +DUK_NORETURN(DUK_INTERNAL_DECL void duk_default_fatal_handler(void *udata, const char *msg)); + +DUK_INTERNAL_DECL void duk_err_setup_ljstate1(duk_hthread *thr, duk_small_uint_t lj_type, duk_tval *tv_val); +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_INTERNAL_DECL void duk_err_check_debugger_integration(duk_hthread *thr); +#endif + +DUK_INTERNAL_DECL duk_hobject *duk_error_prototype_from_code(duk_hthread *thr, duk_errcode_t err_code); + +#endif /* DUK_ERROR_H_INCLUDED */ +/* #include duk_unicode.h */ +#line 1 "duk_unicode.h" +/* + * Unicode helpers + */ + +#if !defined(DUK_UNICODE_H_INCLUDED) +#define DUK_UNICODE_H_INCLUDED + +/* + * UTF-8 / XUTF-8 / CESU-8 constants + */ + +#define DUK_UNICODE_MAX_XUTF8_LENGTH 7 /* up to 36 bit codepoints */ +#define DUK_UNICODE_MAX_XUTF8_BMP_LENGTH 3 /* all codepoints up to U+FFFF */ +#define DUK_UNICODE_MAX_CESU8_LENGTH 6 /* all codepoints up to U+10FFFF */ +#define DUK_UNICODE_MAX_CESU8_BMP_LENGTH 3 /* all codepoints up to U+FFFF */ + +/* + * Useful Unicode codepoints + * + * Integer constants must be signed to avoid unexpected coercions + * in comparisons. + */ + +#define DUK_UNICODE_CP_ZWNJ 0x200cL /* zero-width non-joiner */ +#define DUK_UNICODE_CP_ZWJ 0x200dL /* zero-width joiner */ +#define DUK_UNICODE_CP_REPLACEMENT_CHARACTER 0xfffdL /* http://en.wikipedia.org/wiki/Replacement_character#Replacement_character */ + +/* + * ASCII character constants + * + * C character literals like 'x' have a platform specific value and do + * not match ASCII (UTF-8) values on e.g. EBCDIC platforms. So, use + * these (admittedly awkward) constants instead. These constants must + * also have signed values to avoid unexpected coercions in comparisons. + * + * http://en.wikipedia.org/wiki/ASCII + */ + +#define DUK_ASC_NUL 0x00 +#define DUK_ASC_SOH 0x01 +#define DUK_ASC_STX 0x02 +#define DUK_ASC_ETX 0x03 +#define DUK_ASC_EOT 0x04 +#define DUK_ASC_ENQ 0x05 +#define DUK_ASC_ACK 0x06 +#define DUK_ASC_BEL 0x07 +#define DUK_ASC_BS 0x08 +#define DUK_ASC_HT 0x09 +#define DUK_ASC_LF 0x0a +#define DUK_ASC_VT 0x0b +#define DUK_ASC_FF 0x0c +#define DUK_ASC_CR 0x0d +#define DUK_ASC_SO 0x0e +#define DUK_ASC_SI 0x0f +#define DUK_ASC_DLE 0x10 +#define DUK_ASC_DC1 0x11 +#define DUK_ASC_DC2 0x12 +#define DUK_ASC_DC3 0x13 +#define DUK_ASC_DC4 0x14 +#define DUK_ASC_NAK 0x15 +#define DUK_ASC_SYN 0x16 +#define DUK_ASC_ETB 0x17 +#define DUK_ASC_CAN 0x18 +#define DUK_ASC_EM 0x19 +#define DUK_ASC_SUB 0x1a +#define DUK_ASC_ESC 0x1b +#define DUK_ASC_FS 0x1c +#define DUK_ASC_GS 0x1d +#define DUK_ASC_RS 0x1e +#define DUK_ASC_US 0x1f +#define DUK_ASC_SPACE 0x20 +#define DUK_ASC_EXCLAMATION 0x21 +#define DUK_ASC_DOUBLEQUOTE 0x22 +#define DUK_ASC_HASH 0x23 +#define DUK_ASC_DOLLAR 0x24 +#define DUK_ASC_PERCENT 0x25 +#define DUK_ASC_AMP 0x26 +#define DUK_ASC_SINGLEQUOTE 0x27 +#define DUK_ASC_LPAREN 0x28 +#define DUK_ASC_RPAREN 0x29 +#define DUK_ASC_STAR 0x2a +#define DUK_ASC_PLUS 0x2b +#define DUK_ASC_COMMA 0x2c +#define DUK_ASC_MINUS 0x2d +#define DUK_ASC_PERIOD 0x2e +#define DUK_ASC_SLASH 0x2f +#define DUK_ASC_0 0x30 +#define DUK_ASC_1 0x31 +#define DUK_ASC_2 0x32 +#define DUK_ASC_3 0x33 +#define DUK_ASC_4 0x34 +#define DUK_ASC_5 0x35 +#define DUK_ASC_6 0x36 +#define DUK_ASC_7 0x37 +#define DUK_ASC_8 0x38 +#define DUK_ASC_9 0x39 +#define DUK_ASC_COLON 0x3a +#define DUK_ASC_SEMICOLON 0x3b +#define DUK_ASC_LANGLE 0x3c +#define DUK_ASC_EQUALS 0x3d +#define DUK_ASC_RANGLE 0x3e +#define DUK_ASC_QUESTION 0x3f +#define DUK_ASC_ATSIGN 0x40 +#define DUK_ASC_UC_A 0x41 +#define DUK_ASC_UC_B 0x42 +#define DUK_ASC_UC_C 0x43 +#define DUK_ASC_UC_D 0x44 +#define DUK_ASC_UC_E 0x45 +#define DUK_ASC_UC_F 0x46 +#define DUK_ASC_UC_G 0x47 +#define DUK_ASC_UC_H 0x48 +#define DUK_ASC_UC_I 0x49 +#define DUK_ASC_UC_J 0x4a +#define DUK_ASC_UC_K 0x4b +#define DUK_ASC_UC_L 0x4c +#define DUK_ASC_UC_M 0x4d +#define DUK_ASC_UC_N 0x4e +#define DUK_ASC_UC_O 0x4f +#define DUK_ASC_UC_P 0x50 +#define DUK_ASC_UC_Q 0x51 +#define DUK_ASC_UC_R 0x52 +#define DUK_ASC_UC_S 0x53 +#define DUK_ASC_UC_T 0x54 +#define DUK_ASC_UC_U 0x55 +#define DUK_ASC_UC_V 0x56 +#define DUK_ASC_UC_W 0x57 +#define DUK_ASC_UC_X 0x58 +#define DUK_ASC_UC_Y 0x59 +#define DUK_ASC_UC_Z 0x5a +#define DUK_ASC_LBRACKET 0x5b +#define DUK_ASC_BACKSLASH 0x5c +#define DUK_ASC_RBRACKET 0x5d +#define DUK_ASC_CARET 0x5e +#define DUK_ASC_UNDERSCORE 0x5f +#define DUK_ASC_GRAVE 0x60 +#define DUK_ASC_LC_A 0x61 +#define DUK_ASC_LC_B 0x62 +#define DUK_ASC_LC_C 0x63 +#define DUK_ASC_LC_D 0x64 +#define DUK_ASC_LC_E 0x65 +#define DUK_ASC_LC_F 0x66 +#define DUK_ASC_LC_G 0x67 +#define DUK_ASC_LC_H 0x68 +#define DUK_ASC_LC_I 0x69 +#define DUK_ASC_LC_J 0x6a +#define DUK_ASC_LC_K 0x6b +#define DUK_ASC_LC_L 0x6c +#define DUK_ASC_LC_M 0x6d +#define DUK_ASC_LC_N 0x6e +#define DUK_ASC_LC_O 0x6f +#define DUK_ASC_LC_P 0x70 +#define DUK_ASC_LC_Q 0x71 +#define DUK_ASC_LC_R 0x72 +#define DUK_ASC_LC_S 0x73 +#define DUK_ASC_LC_T 0x74 +#define DUK_ASC_LC_U 0x75 +#define DUK_ASC_LC_V 0x76 +#define DUK_ASC_LC_W 0x77 +#define DUK_ASC_LC_X 0x78 +#define DUK_ASC_LC_Y 0x79 +#define DUK_ASC_LC_Z 0x7a +#define DUK_ASC_LCURLY 0x7b +#define DUK_ASC_PIPE 0x7c +#define DUK_ASC_RCURLY 0x7d +#define DUK_ASC_TILDE 0x7e +#define DUK_ASC_DEL 0x7f + +/* + * Miscellaneous + */ + +/* Uppercase A is 0x41, lowercase a is 0x61; OR 0x20 to convert uppercase + * to lowercase. + */ +#define DUK_LOWERCASE_CHAR_ASCII(x) ((x) | 0x20) + +/* + * Unicode tables + */ + +#if defined(DUK_USE_SOURCE_NONBMP) +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_ids_noa[1116]; +#else +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_ids_noabmp[625]; +#endif + +#if defined(DUK_USE_SOURCE_NONBMP) +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_ids_m_let_noa[42]; +#else +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_ids_m_let_noabmp[24]; +#endif + +#if defined(DUK_USE_SOURCE_NONBMP) +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_idp_m_ids_noa[576]; +#else +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_idp_m_ids_noabmp[358]; +#endif + +/* + * Automatically generated by extract_caseconv.py, do not edit! + */ + +extern const duk_uint8_t duk_unicode_caseconv_uc[1411]; +extern const duk_uint8_t duk_unicode_caseconv_lc[706]; + +#if defined(DUK_USE_REGEXP_CANON_WORKAROUND) +/* + * Automatically generated by extract_caseconv.py, do not edit! + */ + +extern const duk_uint16_t duk_unicode_re_canon_lookup[65536]; +#endif + +#if defined(DUK_USE_REGEXP_CANON_BITMAP) +/* + * Automatically generated by extract_caseconv.py, do not edit! + */ + +#define DUK_CANON_BITMAP_BLKSIZE 32 +#define DUK_CANON_BITMAP_BLKSHIFT 5 +#define DUK_CANON_BITMAP_BLKMASK 31 +extern const duk_uint8_t duk_unicode_re_canon_bitmap[256]; +#endif + +/* + * Extern + */ + +/* duk_unicode_support.c */ +#if !defined(DUK_SINGLE_FILE) +DUK_INTERNAL_DECL const duk_uint8_t duk_unicode_xutf8_markers[7]; +DUK_INTERNAL_DECL const duk_uint16_t duk_unicode_re_ranges_digit[2]; +DUK_INTERNAL_DECL const duk_uint16_t duk_unicode_re_ranges_white[22]; +DUK_INTERNAL_DECL const duk_uint16_t duk_unicode_re_ranges_wordchar[8]; +DUK_INTERNAL_DECL const duk_uint16_t duk_unicode_re_ranges_not_digit[4]; +DUK_INTERNAL_DECL const duk_uint16_t duk_unicode_re_ranges_not_white[24]; +DUK_INTERNAL_DECL const duk_uint16_t duk_unicode_re_ranges_not_wordchar[10]; +DUK_INTERNAL_DECL const duk_int8_t duk_is_idchar_tab[128]; +#endif /* !DUK_SINGLE_FILE */ + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_get_xutf8_length(duk_ucodepoint_t cp); +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_get_cesu8_length(duk_ucodepoint_t cp); +#endif +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_encode_xutf8(duk_ucodepoint_t cp, duk_uint8_t *out); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_encode_cesu8(duk_ucodepoint_t cp, duk_uint8_t *out); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_decode_xutf8(duk_hthread *thr, const duk_uint8_t **ptr, const duk_uint8_t *ptr_start, const duk_uint8_t *ptr_end, duk_ucodepoint_t *out_cp); +DUK_INTERNAL_DECL duk_ucodepoint_t duk_unicode_decode_xutf8_checked(duk_hthread *thr, const duk_uint8_t **ptr, const duk_uint8_t *ptr_start, const duk_uint8_t *ptr_end); +DUK_INTERNAL_DECL duk_size_t duk_unicode_unvalidated_utf8_length(const duk_uint8_t *data, duk_size_t blen); +DUK_INTERNAL_DECL duk_bool_t duk_unicode_is_utf8_compatible(const duk_uint8_t *buf, duk_size_t len); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_is_whitespace(duk_codepoint_t cp); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_is_line_terminator(duk_codepoint_t cp); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_is_identifier_start(duk_codepoint_t cp); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_is_identifier_part(duk_codepoint_t cp); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_is_letter(duk_codepoint_t cp); +DUK_INTERNAL_DECL void duk_unicode_case_convert_string(duk_hthread *thr, duk_bool_t uppercase); +#if defined(DUK_USE_REGEXP_SUPPORT) +DUK_INTERNAL_DECL duk_codepoint_t duk_unicode_re_canonicalize_char(duk_hthread *thr, duk_codepoint_t cp); +DUK_INTERNAL_DECL duk_small_int_t duk_unicode_re_is_wordchar(duk_codepoint_t cp); +#endif + +#endif /* DUK_UNICODE_H_INCLUDED */ +/* #include duk_json.h */ +#line 1 "duk_json.h" +/* + * Defines for JSON, especially duk_bi_json.c. + */ + +#if !defined(DUK_JSON_H_INCLUDED) +#define DUK_JSON_H_INCLUDED + +/* Encoding/decoding flags */ +#define DUK_JSON_FLAG_ASCII_ONLY (1U << 0) /* escape any non-ASCII characters */ +#define DUK_JSON_FLAG_AVOID_KEY_QUOTES (1U << 1) /* avoid key quotes when key is an ASCII Identifier */ +#define DUK_JSON_FLAG_EXT_CUSTOM (1U << 2) /* extended types: custom encoding */ +#define DUK_JSON_FLAG_EXT_COMPATIBLE (1U << 3) /* extended types: compatible encoding */ + +/* How much stack to require on entry to object/array encode */ +#define DUK_JSON_ENC_REQSTACK 32 + +/* How much stack to require on entry to object/array decode */ +#define DUK_JSON_DEC_REQSTACK 32 + +/* How large a loop detection stack to use */ +#define DUK_JSON_ENC_LOOPARRAY 64 + +/* Encoding state. Heap object references are all borrowed. */ +typedef struct { + duk_hthread *thr; + duk_bufwriter_ctx bw; /* output bufwriter */ + duk_hobject *h_replacer; /* replacer function */ + duk_hstring *h_gap; /* gap (if empty string, NULL) */ + duk_idx_t idx_proplist; /* explicit PropertyList */ + duk_idx_t idx_loop; /* valstack index of loop detection object */ + duk_small_uint_t flags; + duk_small_uint_t flag_ascii_only; + duk_small_uint_t flag_avoid_key_quotes; +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + duk_small_uint_t flag_ext_custom; + duk_small_uint_t flag_ext_compatible; + duk_small_uint_t flag_ext_custom_or_compatible; +#endif + duk_uint_t recursion_depth; + duk_uint_t recursion_limit; + duk_uint_t mask_for_undefined; /* type bit mask: types which certainly produce 'undefined' */ +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + duk_small_uint_t stridx_custom_undefined; + duk_small_uint_t stridx_custom_nan; + duk_small_uint_t stridx_custom_neginf; + duk_small_uint_t stridx_custom_posinf; + duk_small_uint_t stridx_custom_function; +#endif + duk_hobject *visiting[DUK_JSON_ENC_LOOPARRAY]; /* indexed by recursion_depth */ +} duk_json_enc_ctx; + +typedef struct { + duk_hthread *thr; + const duk_uint8_t *p; + const duk_uint8_t *p_start; + const duk_uint8_t *p_end; + duk_idx_t idx_reviver; + duk_small_uint_t flags; +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + duk_small_uint_t flag_ext_custom; + duk_small_uint_t flag_ext_compatible; + duk_small_uint_t flag_ext_custom_or_compatible; +#endif + duk_int_t recursion_depth; + duk_int_t recursion_limit; +} duk_json_dec_ctx; + +#endif /* DUK_JSON_H_INCLUDED */ +/* #include duk_js.h */ +#line 1 "duk_js.h" +/* + * ECMAScript execution, support primitives. + */ + +#if !defined(DUK_JS_H_INCLUDED) +#define DUK_JS_H_INCLUDED + +/* Flags for call handling. Lowest flags must match bytecode DUK_BC_CALL_FLAG_xxx 1:1. */ +#define DUK_CALL_FLAG_TAILCALL (1U << 0) /* setup for a tail call */ +#define DUK_CALL_FLAG_CONSTRUCT (1U << 1) /* constructor call (i.e. called as 'new Foo()') */ +#define DUK_CALL_FLAG_CALLED_AS_EVAL (1U << 2) /* call was made using the identifier 'eval' */ +#define DUK_CALL_FLAG_ALLOW_ECMATOECMA (1U << 3) /* ecma-to-ecma call with executor reuse is possible */ +#define DUK_CALL_FLAG_DIRECT_EVAL (1U << 4) /* call is a direct eval call */ +#define DUK_CALL_FLAG_CONSTRUCT_PROXY (1U << 5) /* handled via 'construct' proxy trap, check return value invariant(s) */ +#define DUK_CALL_FLAG_DEFAULT_INSTANCE_UPDATED (1U << 6) /* prototype of 'default instance' updated, temporary flag in call handling */ + +/* Flags for duk_js_equals_helper(). */ +#define DUK_EQUALS_FLAG_SAMEVALUE (1U << 0) /* use SameValue instead of non-strict equality */ +#define DUK_EQUALS_FLAG_STRICT (1U << 1) /* use strict equality instead of non-strict equality */ + +/* Flags for duk_js_compare_helper(). */ +#define DUK_COMPARE_FLAG_NEGATE (1U << 0) /* negate result */ +#define DUK_COMPARE_FLAG_EVAL_LEFT_FIRST (1U << 1) /* eval left argument first */ + +/* conversions, coercions, comparison, etc */ +DUK_INTERNAL_DECL duk_bool_t duk_js_toboolean(duk_tval *tv); +DUK_INTERNAL_DECL duk_double_t duk_js_tonumber(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL duk_double_t duk_js_tointeger_number(duk_double_t x); +DUK_INTERNAL_DECL duk_double_t duk_js_tointeger(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL duk_uint32_t duk_js_touint32(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL duk_int32_t duk_js_toint32(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL duk_uint16_t duk_js_touint16(duk_hthread *thr, duk_tval *tv); +DUK_INTERNAL_DECL duk_uarridx_t duk_js_to_arrayindex_string(const duk_uint8_t *str, duk_uint32_t blen); +#if !defined(DUK_USE_HSTRING_ARRIDX) +DUK_INTERNAL_DECL duk_uarridx_t duk_js_to_arrayindex_hstring_fast_known(duk_hstring *h); +DUK_INTERNAL_DECL duk_uarridx_t duk_js_to_arrayindex_hstring_fast(duk_hstring *h); +#endif +DUK_INTERNAL_DECL duk_bool_t duk_js_equals_helper(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_small_uint_t flags); +DUK_INTERNAL_DECL duk_small_int_t duk_js_data_compare(const duk_uint8_t *buf1, const duk_uint8_t *buf2, duk_size_t len1, duk_size_t len2); +DUK_INTERNAL_DECL duk_small_int_t duk_js_string_compare(duk_hstring *h1, duk_hstring *h2); +#if 0 /* unused */ +DUK_INTERNAL_DECL duk_small_int_t duk_js_buffer_compare(duk_heap *heap, duk_hbuffer *h1, duk_hbuffer *h2); +#endif +DUK_INTERNAL_DECL duk_bool_t duk_js_compare_helper(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_small_uint_t flags); +DUK_INTERNAL_DECL duk_bool_t duk_js_instanceof(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y); +#if defined(DUK_USE_SYMBOL_BUILTIN) +DUK_INTERNAL_DECL duk_bool_t duk_js_instanceof_ordinary(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y); +#endif +DUK_INTERNAL_DECL duk_bool_t duk_js_in(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y); +DUK_INTERNAL_DECL duk_small_uint_t duk_js_typeof_stridx(duk_tval *tv_x); +DUK_INTERNAL_DECL duk_bool_t duk_js_isarray_hobject(duk_hobject *h); +DUK_INTERNAL_DECL duk_bool_t duk_js_isarray(duk_tval *tv); + +/* arithmetic */ +DUK_INTERNAL_DECL double duk_js_arith_pow(double x, double y); +DUK_INTERNAL_DECL double duk_js_arith_mod(double x, double y); + +#define duk_js_equals(thr,tv_x,tv_y) \ + duk_js_equals_helper((thr), (tv_x), (tv_y), 0) +#define duk_js_strict_equals(tv_x,tv_y) \ + duk_js_equals_helper(NULL, (tv_x), (tv_y), DUK_EQUALS_FLAG_STRICT) +#define duk_js_samevalue(tv_x,tv_y) \ + duk_js_equals_helper(NULL, (tv_x), (tv_y), DUK_EQUALS_FLAG_SAMEVALUE) + +/* E5 Sections 11.8.1, 11.8.5; x < y */ +#define duk_js_lessthan(thr,tv_x,tv_y) \ + duk_js_compare_helper((thr), (tv_x), (tv_Y), DUK_COMPARE_FLAG_EVAL_LEFT_FIRST) + +/* E5 Sections 11.8.2, 11.8.5; x > y --> y < x */ +#define duk_js_greaterthan(thr,tv_x,tv_y) \ + duk_js_compare_helper((thr), (tv_y), (tv_x), 0) + +/* E5 Sections 11.8.3, 11.8.5; x <= y --> not (x > y) --> not (y < x) */ +#define duk_js_lessthanorequal(thr,tv_x,tv_y) \ + duk_js_compare_helper((thr), (tv_y), (tv_x), DUK_COMPARE_FLAG_NEGATE) + +/* E5 Sections 11.8.4, 11.8.5; x >= y --> not (x < y) */ +#define duk_js_greaterthanorequal(thr,tv_x,tv_y) \ + duk_js_compare_helper((thr), (tv_x), (tv_y), DUK_COMPARE_FLAG_EVAL_LEFT_FIRST | DUK_COMPARE_FLAG_NEGATE) + +/* identifiers and environment handling */ +#if 0 /*unused*/ +DUK_INTERNAL duk_bool_t duk_js_hasvar_envrec(duk_hthread *thr, duk_hobject *env, duk_hstring *name); +#endif +DUK_INTERNAL_DECL duk_bool_t duk_js_getvar_envrec(duk_hthread *thr, duk_hobject *env, duk_hstring *name, duk_bool_t throw_flag); +DUK_INTERNAL_DECL duk_bool_t duk_js_getvar_activation(duk_hthread *thr, duk_activation *act, duk_hstring *name, duk_bool_t throw_flag); +DUK_INTERNAL_DECL void duk_js_putvar_envrec(duk_hthread *thr, duk_hobject *env, duk_hstring *name, duk_tval *val, duk_bool_t strict); +DUK_INTERNAL_DECL void duk_js_putvar_activation(duk_hthread *thr, duk_activation *act, duk_hstring *name, duk_tval *val, duk_bool_t strict); +#if 0 /*unused*/ +DUK_INTERNAL_DECL duk_bool_t duk_js_delvar_envrec(duk_hthread *thr, duk_hobject *env, duk_hstring *name); +#endif +DUK_INTERNAL_DECL duk_bool_t duk_js_delvar_activation(duk_hthread *thr, duk_activation *act, duk_hstring *name); +DUK_INTERNAL_DECL duk_bool_t duk_js_declvar_activation(duk_hthread *thr, duk_activation *act, duk_hstring *name, duk_tval *val, duk_small_uint_t prop_flags, duk_bool_t is_func_decl); +DUK_INTERNAL_DECL void duk_js_init_activation_environment_records_delayed(duk_hthread *thr, duk_activation *act); +DUK_INTERNAL_DECL void duk_js_close_environment_record(duk_hthread *thr, duk_hobject *env); +DUK_INTERNAL_DECL duk_hobject *duk_create_activation_environment_record(duk_hthread *thr, duk_hobject *func, duk_size_t bottom_byteoff); +DUK_INTERNAL_DECL void duk_js_push_closure(duk_hthread *thr, + duk_hcompfunc *fun_temp, + duk_hobject *outer_var_env, + duk_hobject *outer_lex_env, + duk_bool_t add_auto_proto); + +/* call handling */ +DUK_INTERNAL_DECL void duk_native_stack_check(duk_hthread *thr); +DUK_INTERNAL_DECL duk_int_t duk_handle_call_unprotected(duk_hthread *thr, duk_idx_t idx_func, duk_small_uint_t call_flags); +DUK_INTERNAL_DECL duk_int_t duk_handle_call_unprotected_nargs(duk_hthread *thr, duk_idx_t nargs, duk_small_uint_t call_flags); +DUK_INTERNAL_DECL duk_int_t duk_handle_safe_call(duk_hthread *thr, duk_safe_call_function func, void *udata, duk_idx_t num_stack_args, duk_idx_t num_stack_res); +DUK_INTERNAL_DECL void duk_call_construct_postprocess(duk_hthread *thr, duk_small_uint_t proxy_invariant); +#if defined(DUK_USE_VERBOSE_ERRORS) +DUK_INTERNAL_DECL void duk_call_setup_propcall_error(duk_hthread *thr, duk_tval *tv_base, duk_tval *tv_key); +#endif + +/* bytecode execution */ +DUK_INTERNAL_DECL void duk_js_execute_bytecode(duk_hthread *exec_thr); + +#endif /* DUK_JS_H_INCLUDED */ +/* #include duk_numconv.h */ +#line 1 "duk_numconv.h" +/* + * Number-to-string conversion. The semantics of these is very tightly + * bound with the ECMAScript semantics required for call sites. + */ + +#if !defined(DUK_NUMCONV_H_INCLUDED) +#define DUK_NUMCONV_H_INCLUDED + +/* Output a specified number of digits instead of using the shortest + * form. Used for toPrecision() and toFixed(). + */ +#define DUK_N2S_FLAG_FIXED_FORMAT (1U << 0) + +/* Force exponential format. Used for toExponential(). */ +#define DUK_N2S_FLAG_FORCE_EXP (1U << 1) + +/* If number would need zero padding (for whole number part), use + * exponential format instead. E.g. if input number is 12300, 3 + * digits are generated ("123"), output "1.23e+4" instead of "12300". + * Used for toPrecision(). + */ +#define DUK_N2S_FLAG_NO_ZERO_PAD (1U << 2) + +/* Digit count indicates number of fractions (i.e. an absolute + * digit index instead of a relative one). Used together with + * DUK_N2S_FLAG_FIXED_FORMAT for toFixed(). + */ +#define DUK_N2S_FLAG_FRACTION_DIGITS (1U << 3) + +/* + * String-to-number conversion + */ + +/* Maximum exponent value when parsing numbers. This is not strictly + * compliant as there should be no upper limit, but as we parse the + * exponent without a bigint, impose some limit. The limit should be + * small enough that multiplying it (or limit-1 to be precise) won't + * overflow signed 32-bit integer range. Exponent is only parsed with + * radix 10, but with maximum radix (36) a safe limit is: + * (10000000*36).toString(16) -> '15752a00' + */ +#define DUK_S2N_MAX_EXPONENT 10000000L + +/* Trim white space (= allow leading and trailing whitespace) */ +#define DUK_S2N_FLAG_TRIM_WHITE (1U << 0) + +/* Allow exponent */ +#define DUK_S2N_FLAG_ALLOW_EXP (1U << 1) + +/* Allow trailing garbage (e.g. treat "123foo" as "123) */ +#define DUK_S2N_FLAG_ALLOW_GARBAGE (1U << 2) + +/* Allow leading plus sign */ +#define DUK_S2N_FLAG_ALLOW_PLUS (1U << 3) + +/* Allow leading minus sign */ +#define DUK_S2N_FLAG_ALLOW_MINUS (1U << 4) + +/* Allow 'Infinity' */ +#define DUK_S2N_FLAG_ALLOW_INF (1U << 5) + +/* Allow fraction part */ +#define DUK_S2N_FLAG_ALLOW_FRAC (1U << 6) + +/* Allow naked fraction (e.g. ".123") */ +#define DUK_S2N_FLAG_ALLOW_NAKED_FRAC (1U << 7) + +/* Allow empty fraction (e.g. "123.") */ +#define DUK_S2N_FLAG_ALLOW_EMPTY_FRAC (1U << 8) + +/* Allow empty string to be interpreted as 0 */ +#define DUK_S2N_FLAG_ALLOW_EMPTY_AS_ZERO (1U << 9) + +/* Allow leading zeroes (e.g. "0123" -> "123") */ +#define DUK_S2N_FLAG_ALLOW_LEADING_ZERO (1U << 10) + +/* Allow automatic detection of hex base ("0x" or "0X" prefix), + * overrides radix argument and forces integer mode. + */ +#define DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT (1U << 11) + +/* Allow automatic detection of legacy octal base ("0n"), + * overrides radix argument and forces integer mode. + */ +#define DUK_S2N_FLAG_ALLOW_AUTO_LEGACY_OCT_INT (1U << 12) + +/* Allow automatic detection of ES2015 octal base ("0o123"), + * overrides radix argument and forces integer mode. + */ +#define DUK_S2N_FLAG_ALLOW_AUTO_OCT_INT (1U << 13) + +/* Allow automatic detection of ES2015 binary base ("0b10001"), + * overrides radix argument and forces integer mode. + */ +#define DUK_S2N_FLAG_ALLOW_AUTO_BIN_INT (1U << 14) + +/* + * Prototypes + */ + +DUK_INTERNAL_DECL void duk_numconv_stringify(duk_hthread *thr, duk_small_int_t radix, duk_small_int_t digits, duk_small_uint_t flags); +DUK_INTERNAL_DECL void duk_numconv_parse(duk_hthread *thr, duk_small_int_t radix, duk_small_uint_t flags); + +#endif /* DUK_NUMCONV_H_INCLUDED */ +/* #include duk_bi_protos.h */ +#line 1 "duk_bi_protos.h" +/* + * Prototypes for built-in functions not automatically covered by the + * header declarations emitted by genbuiltins.py. + */ + +#if !defined(DUK_BUILTIN_PROTOS_H_INCLUDED) +#define DUK_BUILTIN_PROTOS_H_INCLUDED + +/* Buffer size needed for ISO 8601 formatting. + * Accurate value is 32 + 1 for NUL termination: + * >>> len('+123456-01-23T12:34:56.123+12:34') + * 32 + * Include additional space to be safe. + */ +#define DUK_BI_DATE_ISO8601_BUFSIZE 40 + +/* Helpers exposed for internal use */ +DUK_INTERNAL_DECL void duk_bi_date_timeval_to_parts(duk_double_t d, duk_int_t *parts, duk_double_t *dparts, duk_small_uint_t flags); +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_timeval_from_dparts(duk_double_t *dparts, duk_small_uint_t flags); +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_is_leap_year(duk_int_t year); +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_timeval_in_valid_range(duk_double_t x); +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_year_in_valid_range(duk_double_t year); +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_timeval_in_leeway_range(duk_double_t x); +/* Built-in providers */ +#if defined(DUK_USE_DATE_NOW_GETTIMEOFDAY) +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_gettimeofday(void); +#endif +#if defined(DUK_USE_DATE_NOW_TIME) +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_time(void); +#endif +#if defined(DUK_USE_DATE_NOW_WINDOWS) +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_windows(void); +#endif +#if defined(DUK_USE_DATE_NOW_WINDOWS_SUBMS) +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_windows_subms(void); +#endif +#if defined(DUK_USE_DATE_TZO_GMTIME_R) || defined(DUK_USE_DATE_TZO_GMTIME_S) || defined(DUK_USE_DATE_TZO_GMTIME) +DUK_INTERNAL_DECL duk_int_t duk_bi_date_get_local_tzoffset_gmtime(duk_double_t d); +#endif +#if defined(DUK_USE_DATE_TZO_WINDOWS) +DUK_INTERNAL_DECL duk_int_t duk_bi_date_get_local_tzoffset_windows(duk_double_t d); +#endif +#if defined(DUK_USE_DATE_TZO_WINDOWS_NO_DST) +DUK_INTERNAL_DECL duk_int_t duk_bi_date_get_local_tzoffset_windows_no_dst(duk_double_t d); +#endif +#if defined(DUK_USE_DATE_PRS_STRPTIME) +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_parse_string_strptime(duk_hthread *thr, const char *str); +#endif +#if defined(DUK_USE_DATE_PRS_GETDATE) +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_parse_string_getdate(duk_hthread *thr, const char *str); +#endif +#if defined(DUK_USE_DATE_FMT_STRFTIME) +DUK_INTERNAL_DECL duk_bool_t duk_bi_date_format_parts_strftime(duk_hthread *thr, duk_int_t *parts, duk_int_t tzoffset, duk_small_uint_t flags); +#endif + +#if defined(DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME) +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_monotonic_time_clock_gettime(void); +#endif +#if defined(DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC) +DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_monotonic_time_windows_qpc(void); +#endif + +DUK_INTERNAL_DECL +void duk_bi_json_parse_helper(duk_hthread *thr, + duk_idx_t idx_value, + duk_idx_t idx_reviver, + duk_small_uint_t flags); +DUK_INTERNAL_DECL +void duk_bi_json_stringify_helper(duk_hthread *thr, + duk_idx_t idx_value, + duk_idx_t idx_replacer, + duk_idx_t idx_space, + duk_small_uint_t flags); + +DUK_INTERNAL_DECL duk_ret_t duk_textdecoder_decode_utf8_nodejs(duk_hthread *thr); + +#if defined(DUK_USE_ES6_PROXY) +DUK_INTERNAL_DECL void duk_proxy_ownkeys_postprocess(duk_hthread *thr, duk_hobject *h_proxy_target, duk_uint_t flags); +#endif + +#endif /* DUK_BUILTIN_PROTOS_H_INCLUDED */ +/* #include duk_selftest.h */ +#line 1 "duk_selftest.h" +/* + * Selftest code + */ + +#if !defined(DUK_SELFTEST_H_INCLUDED) +#define DUK_SELFTEST_H_INCLUDED + +#if defined(DUK_USE_SELF_TESTS) +DUK_INTERNAL_DECL duk_uint_t duk_selftest_run_tests(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *udata); +#endif + +#endif /* DUK_SELFTEST_H_INCLUDED */ +#line 76 "duk_internal.h" + +#endif /* DUK_INTERNAL_H_INCLUDED */ +#line 10 "duk_replacements.c" + +#if defined(DUK_USE_COMPUTED_NAN) +DUK_INTERNAL double duk_computed_nan; +#endif + +#if defined(DUK_USE_COMPUTED_INFINITY) +DUK_INTERNAL double duk_computed_infinity; +#endif + +#if defined(DUK_USE_REPL_FPCLASSIFY) +DUK_INTERNAL int duk_repl_fpclassify(double x) { + duk_double_union u; + duk_uint_fast16_t expt; + duk_small_int_t mzero; + + u.d = x; + expt = (duk_uint_fast16_t) (u.us[DUK_DBL_IDX_US0] & 0x7ff0UL); + if (expt > 0x0000UL && expt < 0x7ff0UL) { + /* expt values [0x001,0x7fe] = normal */ + return DUK_FP_NORMAL; + } + + mzero = (u.ui[DUK_DBL_IDX_UI1] == 0 && (u.ui[DUK_DBL_IDX_UI0] & 0x000fffffUL) == 0); + if (expt == 0x0000UL) { + /* expt 0x000 is zero/subnormal */ + if (mzero) { + return DUK_FP_ZERO; + } else { + return DUK_FP_SUBNORMAL; + } + } else { + /* expt 0xfff is infinite/nan */ + if (mzero) { + return DUK_FP_INFINITE; + } else { + return DUK_FP_NAN; + } + } +} +#endif + +#if defined(DUK_USE_REPL_SIGNBIT) +DUK_INTERNAL int duk_repl_signbit(double x) { + duk_double_union u; + u.d = x; + return (int) (u.uc[DUK_DBL_IDX_UC0] & 0x80UL); +} +#endif + +#if defined(DUK_USE_REPL_ISFINITE) +DUK_INTERNAL int duk_repl_isfinite(double x) { + int c = DUK_FPCLASSIFY(x); + if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) { + return 0; + } else { + return 1; + } +} +#endif + +#if defined(DUK_USE_REPL_ISNAN) +DUK_INTERNAL int duk_repl_isnan(double x) { + int c = DUK_FPCLASSIFY(x); + return (c == DUK_FP_NAN); +} +#endif + +#if defined(DUK_USE_REPL_ISINF) +DUK_INTERNAL int duk_repl_isinf(double x) { + int c = DUK_FPCLASSIFY(x); + return (c == DUK_FP_INFINITE); +} +#endif +#line 1 "duk_debug_macros.c" +/* + * Debugging macro calls. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_DEBUG) + +/* + * Debugging enabled + */ + +#include +#include +#include + +#if !defined(DUK_USE_DEBUG_WRITE) +#error debugging enabled (DUK_USE_DEBUG) but DUK_USE_DEBUG_WRITE not defined +#endif + +#define DUK__DEBUG_BUFSIZE DUK_USE_DEBUG_BUFSIZE + +#if defined(DUK_USE_VARIADIC_MACROS) + +DUK_INTERNAL void duk_debug_log(duk_int_t level, const char *file, duk_int_t line, const char *func, const char *fmt, ...) { + va_list ap; + long arg_level; + const char *arg_file; + long arg_line; + const char *arg_func; + const char *arg_msg; + char buf[DUK__DEBUG_BUFSIZE]; + + va_start(ap, fmt); + + duk_memzero((void *) buf, (size_t) DUK__DEBUG_BUFSIZE); + duk_debug_vsnprintf(buf, DUK__DEBUG_BUFSIZE - 1, fmt, ap); + + arg_level = (long) level; + arg_file = (const char *) file; + arg_line = (long) line; + arg_func = (const char *) func; + arg_msg = (const char *) buf; + DUK_USE_DEBUG_WRITE(arg_level, arg_file, arg_line, arg_func, arg_msg); + + va_end(ap); +} + +#else /* DUK_USE_VARIADIC_MACROS */ + +DUK_INTERNAL char duk_debug_file_stash[DUK_DEBUG_STASH_SIZE]; +DUK_INTERNAL duk_int_t duk_debug_line_stash; +DUK_INTERNAL char duk_debug_func_stash[DUK_DEBUG_STASH_SIZE]; +DUK_INTERNAL duk_int_t duk_debug_level_stash; + +DUK_INTERNAL void duk_debug_log(const char *fmt, ...) { + va_list ap; + long arg_level; + const char *arg_file; + long arg_line; + const char *arg_func; + const char *arg_msg; + char buf[DUK__DEBUG_BUFSIZE]; + + va_start(ap, fmt); + + duk_memzero((void *) buf, (size_t) DUK__DEBUG_BUFSIZE); + duk_debug_vsnprintf(buf, DUK__DEBUG_BUFSIZE - 1, fmt, ap); + + arg_level = (long) duk_debug_level_stash; + arg_file = (const char *) duk_debug_file_stash; + arg_line = (long) duk_debug_line_stash; + arg_func = (const char *) duk_debug_func_stash; + arg_msg = (const char *) buf; + DUK_USE_DEBUG_WRITE(arg_level, arg_file, arg_line, arg_func, arg_msg); + + va_end(ap); +} + +#endif /* DUK_USE_VARIADIC_MACROS */ + +#else /* DUK_USE_DEBUG */ + +/* + * Debugging disabled + */ + +#endif /* DUK_USE_DEBUG */ + +/* automatic undefs */ +#undef DUK__DEBUG_BUFSIZE +#line 1 "duk_builtins.c" +/* + * Automatically generated by genbuiltins.py, do not edit! + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ASSERTIONS) +#define DUK__REFCINIT(refc) 0 /*h_assert_refcount*/, (refc) /*actual*/ +#else +#define DUK__REFCINIT(refc) (refc) /*actual*/ +#endif + +#if defined(DUK_USE_ROM_STRINGS) +#error ROM support not enabled, rerun configure.py with --rom-support +#else /* DUK_USE_ROM_STRINGS */ +DUK_INTERNAL const duk_uint8_t duk_strings_data[972] = { +79,40,209,144,168,105,6,78,54,139,89,185,44,48,46,90,120,8,154,140,35,103, +35,113,193,73,5,52,112,180,104,166,135,52,188,4,98,12,27,146,156,80,211,31, +129,115,150,64,52,220,109,24,18,68,156,24,38,67,114,36,55,9,119,151,132, +140,93,18,113,128,153,201,212,201,205,2,248,8,196,24,224,104,82,146,40,224, +193,48,114,168,37,147,196,54,123,28,4,98,12,43,148,67,103,177,192,70,32, +196,121,68,54,123,28,18,192,199,144,124,4,98,12,43,136,108,244,117,184,8, +196,24,95,40,134,207,71,91,128,140,65,133,113,13,158,158,151,1,24,131,11, +229,16,217,233,233,112,17,136,48,206,21,110,4,244,244,184,8,196,24,103,10, +183,2,122,218,156,4,98,12,24,203,112,64,179,113,193,79,8,218,155,131,32, +184,70,212,220,13,10,82,68,252,123,144,217,146,38,228,207,18,0,100,37,64, +178,212,11,161,17,104,162,96,10,200,193,57,165,65,169,16,5,100,81,27,70,18, +32,10,200,68,185,13,116,221,197,184,64,89,57,41,197,13,49,234,5,208,156, +113,87,55,118,147,20,187,56,161,166,92,221,212,73,210,236,226,134,153,115, +119,76,201,203,179,138,26,99,73,212,136,136,164,25,174,137,56,32,72,137, +101,23,52,45,13,34,86,9,79,136,104,201,114,149,96,52,138,134,140,151,75, +226,233,186,120,121,22,39,54,83,141,5,55,68,236,36,164,3,16,225,115,150,64, +52,205,163,2,72,154,83,138,26,99,75,12,11,150,103,5,36,20,211,70,140,133, +67,72,49,241,160,227,81,196,52,168,106,39,132,252,183,136,105,80,212,79,2, +249,110,128,126,88,95,133,109,237,237,237,151,235,127,46,249,119,203,190, +186,206,33,181,2,208,61,190,12,19,34,65,19,81,132,108,228,97,1,107,33,12, +32,45,100,137,64,247,175,9,19,155,41,198,130,155,134,69,146,100,227,226, +231,146,51,192,204,73,140,224,145,221,102,241,68,196,169,248,30,75,12,11, +151,242,233,187,143,138,24,137,162,164,255,253,63,3,201,97,129,114,254,92, +112,75,136,108,166,6,136,159,255,167,224,121,44,48,46,95,203,166,238,74, +113,67,77,201,128,223,255,223,224,121,44,48,46,95,203,145,46,9,205,16,39, +201,62,36,0,192,21,147,255,238,145,39,199,197,211,116,240,242,113,197,78, +214,211,226,233,187,107,105,19,119,37,56,161,166,52,221,212,201,205,36,240, +242,16,96,152,12,26,20,164,137,150,70,154,103,28,137,50,202,96,18,132,241, +41,104,105,56,218,48,36,138,183,57,56,128,68,24,38,2,52,12,34,10,133,147, +141,3,8,119,185,13,153,34,125,206,76,17,49,38,93,206,52,151,154,119,56,28, +76,130,112,200,141,206,21,209,96,23,35,238,114,160,139,0,243,238,114,78, +164,68,68,110,113,226,210,90,26,66,110,113,128,121,247,57,80,68,141,170, +183,56,84,52,11,70,73,19,110,114,160,93,8,113,57,143,66,200,84,53,244,154, +73,24,240,81,32,38,68,18,49,228,207,23,88,100,109,70,114,92,193,4,137,173, +168,36,220,73,19,247,247,182,168,209,144,187,223,58,156,104,79,190,183,127, +123,105,160,110,247,206,167,26,19,239,173,223,222,218,67,75,189,243,169, +198,132,251,235,183,247,182,154,134,151,123,231,83,141,9,247,215,111,239, +109,22,141,22,247,206,167,26,19,239,172,223,218,45,26,47,157,78,52,39,223, +74,24,144,10,32,129,34,20,64,152,142,129,57,179,67,104,68,12,129,161,140, +72,156,100,40,40,185,152,100,89,38,65,13,196,34,228,67,149,13,2,215,129, +149,209,65,104,209,77,14,104,144,81,33,170,67,101,48,52,68,113,70,210,88, +209,36,233,22,154,86,68,196,114,76,232,145,102,120,186,195,156,112,105,225, +228,113,71,80,68,162,115,101,50,85,200,25,108,116,44,132,178,38,114,137,96, +148,136,70,209,134,37,222,232,204,228,188,200,209,200,200,99,221,25,150,84, +121,34,70,209,107,36,227,66,20,160,92,136,164,49,235,35,8,217,201,40,108, +201,18,128,68,26,201,51,188,2,80,12,67,190,40,168,38,68,190,46,153,5,50,12, +207,160,86,129,26,83,4,208,34,225,4,88,192, +}; +#endif /* DUK_USE_ROM_STRINGS */ + +#if defined(DUK_USE_ROM_OBJECTS) +#error ROM support not enabled, rerun configure.py with --rom-support +#else /* DUK_USE_ROM_OBJECTS */ +/* native functions: 185 */ +DUK_INTERNAL const duk_c_function duk_bi_native_functions[185] = { + NULL, + duk_bi_array_constructor, + duk_bi_array_constructor_is_array, + duk_bi_array_prototype_concat, + duk_bi_array_prototype_indexof_shared, + duk_bi_array_prototype_iter_shared, + duk_bi_array_prototype_join_shared, + duk_bi_array_prototype_pop, + duk_bi_array_prototype_push, + duk_bi_array_prototype_reduce_shared, + duk_bi_array_prototype_reverse, + duk_bi_array_prototype_shift, + duk_bi_array_prototype_slice, + duk_bi_array_prototype_sort, + duk_bi_array_prototype_splice, + duk_bi_array_prototype_to_string, + duk_bi_array_prototype_unshift, + duk_bi_arraybuffer_constructor, + duk_bi_arraybuffer_isview, + duk_bi_boolean_constructor, + duk_bi_boolean_prototype_tostring_shared, + duk_bi_buffer_compare_shared, + duk_bi_buffer_readfield, + duk_bi_buffer_slice_shared, + duk_bi_buffer_writefield, + duk_bi_cbor_decode, + duk_bi_cbor_encode, + duk_bi_dataview_constructor, + duk_bi_date_constructor, + duk_bi_date_constructor_now, + duk_bi_date_constructor_parse, + duk_bi_date_constructor_utc, + duk_bi_date_prototype_get_shared, + duk_bi_date_prototype_get_timezone_offset, + duk_bi_date_prototype_set_shared, + duk_bi_date_prototype_set_time, + duk_bi_date_prototype_to_json, + duk_bi_date_prototype_toprimitive, + duk_bi_date_prototype_tostring_shared, + duk_bi_date_prototype_value_of, + duk_bi_duktape_object_act, + duk_bi_duktape_object_compact, + duk_bi_duktape_object_dec, + duk_bi_duktape_object_enc, + duk_bi_duktape_object_fin, + duk_bi_duktape_object_gc, + duk_bi_duktape_object_info, + duk_bi_error_constructor_shared, + duk_bi_error_prototype_filename_getter, + duk_bi_error_prototype_filename_setter, + duk_bi_error_prototype_linenumber_getter, + duk_bi_error_prototype_linenumber_setter, + duk_bi_error_prototype_stack_getter, + duk_bi_error_prototype_stack_setter, + duk_bi_error_prototype_to_string, + duk_bi_function_constructor, + duk_bi_function_prototype, + duk_bi_function_prototype_apply, + duk_bi_function_prototype_bind, + duk_bi_function_prototype_call, + duk_bi_function_prototype_hasinstance, + duk_bi_function_prototype_to_string, + duk_bi_global_object_decode_uri, + duk_bi_global_object_decode_uri_component, + duk_bi_global_object_encode_uri, + duk_bi_global_object_encode_uri_component, + duk_bi_global_object_escape, + duk_bi_global_object_eval, + duk_bi_global_object_is_finite, + duk_bi_global_object_is_nan, + duk_bi_global_object_parse_float, + duk_bi_global_object_parse_int, + duk_bi_global_object_unescape, + duk_bi_json_object_parse, + duk_bi_json_object_stringify, + duk_bi_math_object_clz32, + duk_bi_math_object_hypot, + duk_bi_math_object_imul, + duk_bi_math_object_max, + duk_bi_math_object_min, + duk_bi_math_object_onearg_shared, + duk_bi_math_object_random, + duk_bi_math_object_sign, + duk_bi_math_object_twoarg_shared, + duk_bi_native_function_length, + duk_bi_native_function_name, + duk_bi_nodejs_buffer_byte_length, + duk_bi_nodejs_buffer_concat, + duk_bi_nodejs_buffer_constructor, + duk_bi_nodejs_buffer_copy, + duk_bi_nodejs_buffer_fill, + duk_bi_nodejs_buffer_is_buffer, + duk_bi_nodejs_buffer_is_encoding, + duk_bi_nodejs_buffer_tojson, + duk_bi_nodejs_buffer_tostring, + duk_bi_nodejs_buffer_write, + duk_bi_number_check_shared, + duk_bi_number_constructor, + duk_bi_number_prototype_to_exponential, + duk_bi_number_prototype_to_fixed, + duk_bi_number_prototype_to_locale_string, + duk_bi_number_prototype_to_precision, + duk_bi_number_prototype_to_string, + duk_bi_number_prototype_value_of, + duk_bi_object_constructor, + duk_bi_object_constructor_assign, + duk_bi_object_constructor_create, + duk_bi_object_constructor_define_properties, + duk_bi_object_constructor_define_property, + duk_bi_object_constructor_get_own_property_descriptor, + duk_bi_object_constructor_is, + duk_bi_object_constructor_is_extensible, + duk_bi_object_constructor_is_sealed_frozen_shared, + duk_bi_object_constructor_keys_shared, + duk_bi_object_constructor_prevent_extensions, + duk_bi_object_constructor_seal_freeze_shared, + duk_bi_object_getprototype_shared, + duk_bi_object_prototype_defineaccessor, + duk_bi_object_prototype_has_own_property, + duk_bi_object_prototype_is_prototype_of, + duk_bi_object_prototype_lookupaccessor, + duk_bi_object_prototype_property_is_enumerable, + duk_bi_object_prototype_to_locale_string, + duk_bi_object_prototype_to_string, + duk_bi_object_prototype_value_of, + duk_bi_object_setprototype_shared, + duk_bi_performance_now, + duk_bi_pointer_constructor, + duk_bi_pointer_prototype_tostring_shared, + duk_bi_proxy_constructor, + duk_bi_reflect_apply, + duk_bi_reflect_construct, + duk_bi_reflect_object_delete_property, + duk_bi_reflect_object_get, + duk_bi_reflect_object_has, + duk_bi_reflect_object_set, + duk_bi_regexp_constructor, + duk_bi_regexp_prototype_exec, + duk_bi_regexp_prototype_flags, + duk_bi_regexp_prototype_shared_getter, + duk_bi_regexp_prototype_test, + duk_bi_regexp_prototype_tostring, + duk_bi_string_constructor, + duk_bi_string_constructor_from_char_code, + duk_bi_string_constructor_from_code_point, + duk_bi_string_prototype_caseconv_shared, + duk_bi_string_prototype_char_at, + duk_bi_string_prototype_char_code_at, + duk_bi_string_prototype_concat, + duk_bi_string_prototype_includes, + duk_bi_string_prototype_indexof_shared, + duk_bi_string_prototype_locale_compare, + duk_bi_string_prototype_match, + duk_bi_string_prototype_repeat, + duk_bi_string_prototype_replace, + duk_bi_string_prototype_search, + duk_bi_string_prototype_slice, + duk_bi_string_prototype_split, + duk_bi_string_prototype_startswith_endswith, + duk_bi_string_prototype_substr, + duk_bi_string_prototype_substring, + duk_bi_string_prototype_to_string, + duk_bi_string_prototype_trim, + duk_bi_symbol_constructor_shared, + duk_bi_symbol_key_for, + duk_bi_symbol_toprimitive, + duk_bi_symbol_tostring_shared, + duk_bi_textdecoder_constructor, + duk_bi_textdecoder_prototype_decode, + duk_bi_textdecoder_prototype_shared_getter, + duk_bi_textencoder_constructor, + duk_bi_textencoder_prototype_encode, + duk_bi_textencoder_prototype_encoding_getter, + duk_bi_thread_constructor, + duk_bi_thread_current, + duk_bi_thread_resume, + duk_bi_thread_yield, + duk_bi_type_error_thrower, + duk_bi_typedarray_buffer_getter, + duk_bi_typedarray_bytelength_getter, + duk_bi_typedarray_byteoffset_getter, + duk_bi_typedarray_constructor, + duk_bi_typedarray_set, + duk_bi_uint8array_allocplain, + duk_bi_uint8array_plainof, +}; +#if defined(DUK_USE_DOUBLE_LE) +DUK_INTERNAL const duk_uint8_t duk_builtins_data[4281] = { +144,148,105,226,32,68,52,228,254,12,104,202,37,132,52,167,194,138,105,245, +124,57,28,211,57,18,64,52,239,126,44,138,111,175,241,164,19,87,145,30,33, +167,22,145,159,8,211,139,9,225,42,5,240,145,139,163,163,8,211,139,10,228, +64,211,19,132,140,93,29,56,70,156,88,119,34,66,146,36,104,137,194,70,46, +142,172,35,78,44,47,146,195,102,11,240,145,139,163,175,8,211,139,9,228,240, +242,112,145,139,163,179,8,211,139,8,237,34,130,118,49,116,118,225,26,48,0, +1,98,29,201,158,46,183,39,135,147,132,140,93,16,132,76,66,33,8,66,16,132, +33,8,66,26,180,105,97,167,68,150,34,33,154,112,0,1,91,247,35,79,111,237, +198,174,232,47,31,23,95,17,13,31,249,96,211,49,50,53,214,77,141,24,0,0,181, +10,228,240,242,15,128,140,65,128,134,188,0,0,90,167,97,181,224,0,2,213,62, +53,224,0,2,213,66,237,120,0,0,181,81,204,107,192,0,5,170,150,67,94,0,0,45, +84,245,90,240,0,1,106,169,162,215,128,0,11,85,93,150,188,0,0,90,171,111,53, +109,22,162,26,48,0,1,84,23,201,146,243,225,26,39,12,145,136,104,192,0,5,61, +11,228,201,121,240,100,19,134,72,196,33,195,14,40,203,112,64,190,76,232, +145,153,136,0,0,0,0,0,0,31,15,249,152,0,0,0,0,0,0,30,15,249,120,144,13,96, +155,194,56,80,206,36,67,141,20,228,70,57,81,206,100,131,156,39,132,168,23, +194,70,46,137,208,21,200,129,166,39,9,24,186,39,72,119,34,66,146,36,104, +137,194,70,46,137,212,23,201,97,179,5,248,72,197,209,58,194,121,60,60,156, +36,98,232,157,129,29,164,80,78,198,46,137,218,146,121,25,71,146,9,209,5, +209,61,48,126,14,138,152,30,67,186,23,143,139,175,131,202,135,228,72,85, +144,83,60,179,30,94,209,233,102,30,98,105,230,103,30,114,121,231,104,30, +122,137,231,233,30,130,153,232,106,30,138,169,232,235,30,144,67,193,25,19, +136,108,207,30,41,224,140,137,194,173,192,153,228,5,242,100,188,248,70,137, +195,36,79,78,47,147,37,231,193,144,78,25,34,122,145,111,36,74,232,176,13, +17,61,234,226,93,207,148,160,84,75,141,7,27,161,32,33,18,225,80,212,76,154, +2,2,70,65,56,100,237,34,140,209,2,67,32,156,50,118,145,64,186,230,61,205, +35,103,155,32,36,141,19,134,78,210,40,206,16,36,70,137,195,39,105,20,11, +174,99,220,210,54,121,210,1,137,33,1,228,207,16,17,70,146,66,3,201,164,32, +0,65,112,152,56,196,159,31,23,77,211,195,201,199,23,160,72,214,246,81,6,12, +73,241,214,111,31,23,60,145,158,56,50,72,81,67,230,232,242,80,19,49,39,199, +89,188,124,92,242,70,120,227,64,194,75,154,72,12,9,73,6,111,21,120,12,40, +144,19,39,25,0,225,144,168,105,56,248,185,228,140,241,200,96,64,100,42,26, +78,62,46,121,35,52,18,92,116,1,36,64,47,158,64,49,98,66,100,156,242,65,23, +196,149,35,103,194,94,100,108,144,230,203,156,64,66,37,201,16,11,32,249, +132,4,34,92,44,93,146,55,152,72,24,137,112,151,153,27,36,5,100,229,144,8, +162,98,92,210,5,76,73,241,214,111,31,23,60,145,158,57,44,48,46,92,185,164, +160,72,151,41,0,50,107,179,244,59,36,93,127,92,6,19,172,3,11,216,0,56,224, +151,29,102,241,241,115,201,25,227,164,64,106,37,199,197,211,116,240,242, +113,197,233,144,40,248,185,228,140,241,196,75,132,109,24,72,128,43,39,84, +129,13,173,161,144,168,105,56,98,78,100,142,214,215,69,1,13,173,161,144, +168,105,57,34,78,100,142,214,215,69,16,67,107,105,110,114,168,254,24,147, +153,35,181,181,212,32,67,107,105,110,114,168,254,72,147,153,35,181,181,212, +36,65,130,3,144,8,26,252,200,13,30,85,16,16,64,90,242,231,192,64,161,163, +203,31,26,172,193,17,4,23,105,159,96,27,172,251,16,32,196,4,14,137,112,17, +136,48,164,28,134,80,215,202,1,132,130,8,12,39,52,64,155,31,24,56,36,1,189, +207,132,0,35,233,35,195,62,3,196,149,36,100,72,160,2,200,232,44,227,0,11, +37,160,68,142,128,36,157,25,200,32,26,79,90,4,73,43,192,122,54,71,65,103, +44,248,14,134,140,151,227,138,231,208,45,96,148,248,134,140,151,227,138, +231,240,1,255,254,10,74,146,56,128,104,4,147,152,72,6,144,28,174,143,8,1, +30,1,165,3,96,31,0,211,3,21,11,153,35,0,211,131,68,131,160,137,16,250,5, +196,131,160,137,200,160,199,156,67,248,0,255,255,65,140,10,48,177,115,56, +35,130,60,19,134,79,89,240,52,177,115,56,39,12,156,123,144,217,251,15,135, +34,167,30,20,170,154,255,232,12,47,244,0,97,28,17,224,39,238,32,40,71,4, +120,39,12,156,4,253,228,5,137,195,39,30,228,54,124,4,253,228,128,194,115, +68,9,252,15,128,232,104,201,126,56,191,35,64,90,193,41,241,13,25,47,199,23, +228,105,3,86,225,1,100,224,156,199,130,36,249,144,10,192,76,71,250,16,15, +18,61,96,17,62,200,3,72,128,136,143,247,32,22,75,64,137,248,64,22,79,90,39, +249,64,38,84,12,167,20,52,223,196,2,230,238,45,214,36,120,32,72,158,208,4, +102,238,45,194,2,201,197,186,196,143,4,9,19,218,0,92,221,202,61,228,143,4, +9,19,218,8,35,55,113,110,16,22,78,81,239,36,120,32,72,158,208,64,73,197,12, +255,0,13,18,60,128,159,212,128,169,76,17,156,185,100,76,255,163,64,65,26, +57,114,200,153,255,70,144,33,13,18,232,50,75,226,104,6,149,3,41,199,246, +130,12,128,28,142,156,120,203,175,158,8,194,207,1,6,81,20,79,88,11,237,84, +11,161,32,127,255,255,255,255,255,247,191,137,235,16,221,170,129,116,36,0, +16,0,0,0,0,0,0,12,196,0,0,0,0,0,0,15,135,242,61,123,164,137,162,164,218,67, +74,134,162,120,128,0,0,0,0,0,1,224,254,71,173,33,129,52,84,155,72,105,80, +212,79,16,0,0,0,0,0,0,60,63,195,244,143,146,22,230,192,0,0,0,0,0,0,176,60, +33,214,2,251,82,1,73,180,134,204,134,36,96,127,255,255,255,255,255,159,161, +144,235,16,221,169,0,164,218,67,102,67,18,48,63,255,255,255,255,255,207, +240,196,60,17,145,56,134,204,241,226,158,8,200,156,42,220,9,158,65,196,34, +92,42,26,137,147,120,64,74,37,196,54,100,49,35,188,36,5,68,184,208,113,187, +194,80,212,75,146,1,73,196,54,100,49,35,188,38,57,37,56,240,0,0,0,0,0,0,0, +0,32,235,248,68,48,156,2,24,94,24,0,243,119,10,139,144,123,242,3,102,238, +18,239,115,72,217,160,11,223,16,23,55,113,241,32,145,36,57,188,18,16,102,3, +5,120,35,34,89,32,15,180,152,173,127,0,218,235,88,0,228,180,227,200,0,0,0, +0,0,0,248,127,197,107,240,64,6,77,220,24,38,78,74,113,67,77,130,4,12,155, +185,52,48,156,148,226,134,155,4,10,194,96,129,132,166,238,45,194,2,201,193, +130,100,228,167,20,52,216,32,113,41,187,139,112,128,178,114,104,97,57,41, +197,13,54,8,32,48,216,32,130,195,224,130,19,97,124,134,23,6,0,57,137,62,77, +12,38,12,0,179,18,124,45,22,190,96,128,141,176,134,28,98,79,180,152,139, +218,45,124,193,1,27,97,16,32,196,159,24,230,204,246,194,40,89,137,62,210, +98,103,92,217,158,216,70,7,49,39,193,130,100,182,17,194,140,73,246,147,16, +250,9,146,216,72,6,49,39,193,131,22,194,72,73,137,62,210,98,31,65,139,97, +40,32,196,159,14,234,70,86,194,88,89,137,62,210,98,63,93,72,202,216,76,10, +49,39,198,33,180,153,37,108,38,134,152,147,237,38,38,117,13,164,201,43,97, +56,40,196,159,36,65,57,163,149,176,158,26,98,79,180,152,165,210,9,205,28, +173,133,0,243,18,124,98,22,180,72,130,115,71,43,97,68,72,196,159,105,49,51, +168,90,209,34,9,205,28,173,133,33,19,18,124,154,24,76,185,164,227,138,89, +18,119,0,7,145,39,201,161,132,188,64,124,137,62,49,11,90,36,65,57,163,149, +210,166,37,34,79,180,152,153,212,45,104,145,4,230,142,87,74,160,84,137,62, +72,130,115,71,43,171,234,134,200,147,237,38,41,116,130,115,71,43,171,235,5, +72,147,227,16,218,76,146,186,254,184,108,137,62,210,98,103,80,218,76,146, +186,254,192,68,137,62,29,212,140,174,207,178,23,34,79,180,152,143,215,82, +50,187,62,208,60,137,62,12,19,37,210,182,21,34,79,180,152,135,208,76,151, +74,224,68,137,62,49,205,153,238,175,186,23,34,79,180,152,153,215,54,103, +186,190,240,92,137,62,22,139,95,48,64,70,235,251,225,210,36,251,73,136,189, +162,215,204,16,17,186,255,2,14,98,79,152,32,35,108,48,64,242,36,249,130,2, +55,75,6,212,224,72,200,51,128,114,108,28,100,128,0,0,0,0,0,0,0,12,110,127, +48,98,115,249,201,117,243,249,195,21,159,206,38,47,63,156,86,8,75,144,94, +82,1,38,73,79,208,67,95,233,1,6,128,14,79,129,186,40,249,18,149,182,207, +144,200,155,188,248,204,105,184,207,142,199,137,175,201,0,159,72,10,5,21, +221,10,120,74,129,124,36,98,232,228,74,81,62,160,20,10,107,186,21,114,32, +105,137,194,70,46,142,68,165,19,235,1,64,170,187,161,119,34,66,146,36,104, +137,194,70,46,142,68,165,19,236,1,64,174,187,161,95,37,134,204,23,225,35, +23,71,34,82,137,246,128,160,89,93,208,167,147,195,201,194,70,46,142,68,165, +19,238,1,64,182,187,161,71,105,20,19,177,139,163,145,41,68,16,7,6,15,82,70, +72,115,96,0,0,0,0,0,2,234,32,91,60,165,195,201,194,8,134,149,216,162,0,192, +41,225,8,2,48,177,36,1,149,13,196,15,0,200,209,97,199,128,99,32,176,195, +192,113,57,143,0,167,133,32,230,80,28,202,139,175,238,2,48,189,192,20,1, +119,80,87,193,186,129,89,56,72,197,209,200,193,185,35,23,71,109,13,219,36, +98,232,237,156,13,26,208,211,14,102,19,87,137,91,95,128,0,10,96,24,92,0,0, +83,2,53,56,0,0,165,3,28,204,160,160,226,100,226,200,211,76,241,240,0,1,102, +8,22,75,64,137,73,20,230,105,133,7,19,39,22,70,154,103,143,128,0,11,48,20, +28,76,156,113,75,34,78,62,0,0,45,3,103,31,0,0,22,65,44,57,137,62,33,179, +216,162,152,192,131,18,124,162,27,61,138,41,108,32,196,159,16,217,232,235, +81,76,104,73,137,62,81,13,158,142,181,20,184,16,98,79,136,108,244,244,168, +166,56,36,196,159,40,134,207,79,74,138,93,10,49,39,194,173,192,158,158,149, +20,188,20,98,79,133,91,129,61,109,74,41,124,30,68,159,16,217,236,83,108,96, +68,137,62,81,13,158,197,54,182,17,34,79,136,108,244,117,169,182,52,38,68, +159,40,134,207,71,90,155,92,8,145,39,196,54,122,122,84,219,28,19,34,79,148, +67,103,167,165,77,174,133,72,147,225,86,224,79,79,74,155,94,10,145,39,194, +173,192,158,182,165,54,190,206,25,212,35,208,226,100,150,211,201,29,162,44, +140,35,103,0,0,0,0,0,0,3,192,252,206,25,228,35,208,226,100,150,211,201,29, +162,44,140,35,103,0,0,0,0,0,0,3,192,252,206,25,244,35,208,226,100,150,211, +201,29,162,44,140,35,103,0,0,0,0,0,0,3,192,252,206,26,4,35,208,226,100,150, +211,201,29,162,44,140,35,103,0,0,0,0,0,0,0,1,0,206,26,20,35,208,226,100, +150,211,201,29,162,44,140,35,103,0,0,0,0,0,0,0,1,0,206,26,36,35,208,226, +100,150,211,201,29,162,44,140,35,103,0,0,0,0,0,0,0,65,0,206,26,52,35,208, +226,100,150,211,201,29,162,44,140,35,103,0,0,0,0,0,0,0,65,0,206,26,68,35, +208,226,100,150,211,201,29,162,44,140,35,103,0,0,0,0,0,0,0,65,0,206,26,84, +35,208,226,100,150,211,201,29,162,44,140,35,103,0,0,0,0,0,0,0,129,0,195, +154,99,16,38,36,0,251,68,117,179,216,162,128,68,72,1,241,13,158,197,20,150, +25,18,0,125,162,58,217,232,235,117,100,162,136,25,18,0,125,162,58,217,232, +235,116,36,162,145,2,226,64,15,136,108,244,117,186,178,81,73,129,113,32,7, +196,54,122,58,221,9,40,165,64,200,144,3,237,17,214,207,79,75,171,37,20,80, +200,144,3,237,17,214,207,79,75,161,37,20,138,23,18,0,124,67,103,167,165, +213,146,138,77,11,137,0,62,33,179,211,210,232,73,69,42,133,196,128,31,10, +183,2,125,89,40,163,5,196,128,31,10,183,2,125,9,40,164,96,200,144,3,224, +221,64,172,157,89,40,163,134,68,128,31,6,234,5,100,232,73,69,35,133,68,128, +31,104,142,182,125,89,40,180,0,168,144,3,237,17,214,207,161,37,22,144,19, +18,0,124,67,103,213,146,139,80,9,137,0,62,33,179,232,73,69,172,5,90,40,153, +59,68,117,179,216,166,192,77,162,137,147,136,108,246,41,180,176,219,69,19, +39,104,142,182,122,58,221,89,41,178,6,218,40,153,59,68,117,179,209,214,232, +73,77,162,6,90,40,153,56,134,207,71,91,171,37,54,152,25,104,162,100,226,27, +61,29,110,132,148,218,160,109,162,137,147,180,71,91,61,61,46,172,148,217, +67,109,20,76,157,162,58,217,233,233,116,36,166,209,67,45,20,76,156,67,103, +167,165,213,146,155,77,12,180,81,50,113,13,158,158,151,66,74,109,84,50,209, +68,201,194,173,192,159,86,74,108,193,150,138,38,78,21,110,4,250,18,83,104, +193,182,138,38,78,13,212,10,201,213,146,155,56,109,162,137,147,131,117,2, +178,116,36,166,209,194,237,20,76,157,162,58,217,245,100,167,16,2,237,20,76, +157,162,58,217,244,36,167,18,2,173,20,76,156,67,103,213,146,156,80,10,180, +81,50,113,13,159,66,74,113,97,175,221,48,216,110,64,4,42,22,189,179,0,196, +133,0,185,80,32,28,78,99,193,18,80,36,4,19,159,141,172,0,178,90,4,74,73,0, +22,209,68,201,187,129,4,2,8,3,132,64,60,36,6,149,113,72,176,171,240,84,0, +157,91,116,116,32,11,42,218,221,216,181,129,32,3,234,219,165,3,188,231,235, +249,8,187,152,252,47,86,227,105,18,7,244,17,91,42,56,175,185,248,110,173, +198,209,208,36,0,238,82,97,87,188,189,179,240,93,122,32,12,22,162,42,125, +144,132,160,7,236,161,25,232,237,105,64,205,59,127,102,158,160,230,63,11, +217,66,51,210,129,154,118,254,205,61,65,236,127,171,197,34,168,48,6,90,194, +1,0,39,75,88,72,8,9,33,186,194,80,64,76,13,214,19,2,130,96,110,150,189,0, +65,6,51,214,20,128,65,17,11,214,19,130,137,121,211,210,211,144,6,39,75,88, +80,0,201,119,235,10,8,41,86,231,71,88,80,129,79,135,186,122,133,224,34,25, +69,234,80,3,91,141,172,40,96,139,113,180,181,133,36,21,110,54,142,134,176, +165,1,176,23,213,47,0,216,134,234,215,128,111,117,181,232,128,209,3,70,230, +107,64,5,139,168,209,235,10,32,36,144,102,235,136,3,146,27,172,40,160,146, +132,103,172,40,192,115,3,117,133,28,22,113,163,69,172,41,103,1,66,188,17, +145,52,168,4,202,113,67,76,130,227,76,194,13,240,108,0,0,83,224,0,2,193,0, +104,146,84,97,48,0,1,94,192,56,169,24,145,179,192,0,5,112,8,56,16,32,128, +56,18,52,125,230,86,147,190,140,28,50,21,13,39,31,23,60,145,158,57,12,141, +47,129,6,155,194,188,24,49,39,199,89,188,124,92,242,70,120,224,201,33,69, +15,155,163,201,68,14,49,39,199,197,211,116,240,242,113,197,232,18,180,254, +36,3,17,46,18,243,35,100,128,172,156,178,70,163,154,76,34,248,146,164,108, +248,75,204,141,146,28,217,115,137,27,95,27,241,173,236,162,160,224,200,2, +206,9,113,13,148,192,209,18,22,164,146,37,193,57,162,4,249,39,196,128,24,2, +178,66,213,136,68,201,16,77,209,131,31,192,242,88,96,92,191,151,34,100,136, +38,232,255,252,92,221,199,197,12,68,209,82,66,212,11,155,185,41,197,13,55, +38,3,66,213,47,135,254,72,12,162,99,133,116,112,0,1,72,66,14,16,16,50,37, +202,160,150,154,66,14,20,8,57,192,28,24,80,113,50,113,100,105,166,120,248, +0,0,179,1,65,196,201,199,20,178,36,227,224,0,2,208,54,113,240,0,1,100,11, +181,192,0,5,178,1,18,160,65,24,131,20,145,25,188,48,132,122,28,76,146,218, +121,35,180,69,145,132,108,224,0,0,0,0,0,0,120,31,153,188,56,132,122,28,76, +146,218,121,35,180,69,145,132,108,224,0,0,0,0,0,0,120,31,168,160,45,110,23, +30,176,33,184,0,0,183,32,29,235,2,27,199,23,0,0,23,4,51,120,129,8,244,56, +153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,240,63,51,120,145,8,244, +56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,0,64,51,120,161,8, +244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,0,64,51,120,177, +8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,16,64,51,120, +193,8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,16,64,51, +120,209,8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,16,64, +51,120,225,8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,0,0,0,32, +64,32,227,194,0,97,57,162,4,246,104,5,34,92,35,68,225,161,166,220,16,16, +137,112,52,41,73,29,185,1,65,196,201,197,145,166,153,246,72,3,137,204,120, +34,74,8,199,1,67,17,162,112,201,84,128,97,144,78,25,42,16,131,169,1,205,66, +8,35,68,225,161,166,239,128,0,10,192,64,196,104,156,50,96,0,2,172,73,240, +117,96,57,170,97,4,104,156,52,52,221,240,0,1,82,1,74,9,129,125,240,0,1,82, +32,148,25,174,137,58,23,51,190,0,0,42,69,64,195,32,156,50,96,0,2,160,81, +238,2,3,107,173,218,3,192, +}; +#elif defined(DUK_USE_DOUBLE_BE) +DUK_INTERNAL const duk_uint8_t duk_builtins_data[4281] = { +144,148,105,226,32,68,52,228,254,12,104,202,37,132,52,167,194,138,105,245, +124,57,28,211,57,18,64,52,239,126,44,138,111,175,241,164,19,87,145,30,33, +167,22,145,159,8,211,139,9,225,42,5,240,145,139,163,163,8,211,139,10,228, +64,211,19,132,140,93,29,56,70,156,88,119,34,66,146,36,104,137,194,70,46, +142,172,35,78,44,47,146,195,102,11,240,145,139,163,175,8,211,139,9,228,240, +242,112,145,139,163,179,8,211,139,8,237,34,130,118,49,116,118,225,26,48,0, +1,98,29,201,158,46,183,39,135,147,132,140,93,16,132,76,66,33,8,66,16,132, +33,8,66,26,180,105,97,167,68,150,34,33,154,112,0,1,91,247,35,79,111,237, +198,174,232,47,31,23,95,17,13,31,249,96,211,49,50,53,214,77,141,24,0,0,181, +10,228,240,242,15,128,140,65,128,134,188,0,0,90,167,97,181,224,0,2,213,62, +53,224,0,2,213,66,237,120,0,0,181,81,204,107,192,0,5,170,150,67,94,0,0,45, +84,245,90,240,0,1,106,169,162,215,128,0,11,85,93,150,188,0,0,90,171,111,53, +109,22,162,26,48,0,1,84,23,201,146,243,225,26,39,12,145,136,104,192,0,5,61, +11,228,201,121,240,100,19,134,72,196,33,195,14,40,203,112,64,190,76,232, +145,153,136,15,255,0,0,0,0,0,0,25,152,15,254,0,0,0,0,0,0,25,120,144,13,96, +155,194,56,80,206,36,67,141,20,228,70,57,81,206,100,131,156,39,132,168,23, +194,70,46,137,208,21,200,129,166,39,9,24,186,39,72,119,34,66,146,36,104, +137,194,70,46,137,212,23,201,97,179,5,248,72,197,209,58,194,121,60,60,156, +36,98,232,157,129,29,164,80,78,198,46,137,218,146,121,25,71,146,9,209,5, +209,61,48,126,14,138,152,30,67,186,23,143,139,175,131,202,135,228,72,85, +144,83,60,179,30,94,209,233,102,30,98,105,230,103,30,114,121,231,104,30, +122,137,231,233,30,130,153,232,106,30,138,169,232,235,30,144,67,193,25,19, +136,108,207,30,41,224,140,137,194,173,192,153,228,5,242,100,188,248,70,137, +195,36,79,78,47,147,37,231,193,144,78,25,34,122,145,111,36,74,232,176,13, +17,61,234,226,93,207,148,160,84,75,141,7,27,161,32,33,18,225,80,212,76,154, +2,2,70,65,56,100,237,34,140,209,2,67,32,156,50,118,145,64,186,230,61,205, +35,103,155,32,36,141,19,134,78,210,40,206,16,36,70,137,195,39,105,20,11, +174,99,220,210,54,121,210,1,137,33,1,228,207,16,17,70,146,66,3,201,164,32, +0,65,112,152,56,196,159,31,23,77,211,195,201,199,23,160,72,214,246,81,6,12, +73,241,214,111,31,23,60,145,158,56,50,72,81,67,230,232,242,80,19,49,39,199, +89,188,124,92,242,70,120,227,64,194,75,154,72,12,9,73,6,111,21,120,12,40, +144,19,39,25,0,225,144,168,105,56,248,185,228,140,241,200,96,64,100,42,26, +78,62,46,121,35,52,18,92,116,1,36,64,47,158,64,49,98,66,100,156,242,65,23, +196,149,35,103,194,94,100,108,144,230,203,156,64,66,37,201,16,11,32,249, +132,4,34,92,44,93,146,55,152,72,24,137,112,151,153,27,36,5,100,229,144,8, +162,98,92,210,5,76,73,241,214,111,31,23,60,145,158,57,44,48,46,92,185,164, +160,72,151,41,0,50,107,179,244,59,36,93,127,92,6,19,172,3,11,216,0,56,224, +151,29,102,241,241,115,201,25,227,164,64,106,37,199,197,211,116,240,242, +113,197,233,144,40,248,185,228,140,241,196,75,132,109,24,72,128,43,39,84, +129,13,173,161,144,168,105,56,98,78,100,142,214,215,69,1,13,173,161,144, +168,105,57,34,78,100,142,214,215,69,16,67,107,105,110,114,168,254,24,147, +153,35,181,181,212,32,67,107,105,110,114,168,254,72,147,153,35,181,181,212, +36,65,130,3,144,8,26,252,200,13,30,85,16,16,64,90,242,231,192,64,161,163, +203,31,26,172,193,17,4,23,105,159,96,27,172,251,16,32,196,4,14,137,112,17, +136,48,164,28,134,80,215,202,1,132,130,8,12,39,52,64,155,31,24,56,36,1,189, +207,132,0,35,233,35,195,62,3,196,149,36,100,72,160,2,200,232,44,227,0,11, +37,160,68,142,128,36,157,25,200,32,26,79,90,4,73,43,192,122,54,71,65,103, +44,248,14,134,140,151,227,138,231,208,45,96,148,248,134,140,151,227,138, +231,240,1,255,254,10,74,146,56,128,104,4,147,152,72,6,144,28,174,143,8,1, +30,1,165,3,96,31,0,211,3,21,11,153,35,0,211,131,68,131,160,137,16,250,5, +196,131,160,137,200,160,199,156,67,248,0,255,255,65,140,10,48,177,115,56, +35,130,60,19,134,79,89,240,52,177,115,56,39,12,156,123,144,217,251,15,135, +34,167,30,20,170,154,255,232,12,47,244,0,97,28,17,224,39,238,32,40,71,4, +120,39,12,156,4,253,228,5,137,195,39,30,228,54,124,4,253,228,128,194,115, +68,9,252,15,128,232,104,201,126,56,191,35,64,90,193,41,241,13,25,47,199,23, +228,105,3,86,225,1,100,224,156,199,130,36,249,144,10,192,76,71,250,16,15, +18,61,96,17,62,200,3,72,128,136,143,247,32,22,75,64,137,248,64,22,79,90,39, +249,64,38,84,12,167,20,52,223,196,2,230,238,45,214,36,120,32,72,158,208,4, +102,238,45,194,2,201,197,186,196,143,4,9,19,218,0,92,221,202,61,228,143,4, +9,19,218,8,35,55,113,110,16,22,78,81,239,36,120,32,72,158,208,64,73,197,12, +255,0,13,18,60,128,159,212,128,169,76,17,156,185,100,76,255,163,64,65,26, +57,114,200,153,255,70,144,33,13,18,232,50,75,226,104,6,149,3,41,199,246, +130,12,128,28,142,156,120,203,175,158,8,194,207,1,6,81,20,79,88,11,237,84, +11,161,32,63,247,255,255,255,255,255,255,137,235,16,221,170,129,116,36,0,0, +0,0,0,0,0,0,28,196,7,255,128,0,0,0,0,0,2,61,123,164,137,162,164,218,67,74, +134,162,120,128,255,224,0,0,0,0,0,0,71,173,33,129,52,84,155,72,105,80,212, +79,16,63,252,0,0,0,0,0,0,3,244,143,146,22,230,192,60,176,0,0,0,0,0,0,33, +214,2,251,82,1,73,180,134,204,134,36,96,33,159,255,255,255,255,255,255,144, +235,16,221,169,0,164,218,67,102,67,18,48,48,207,255,255,255,255,255,255, +196,60,17,145,56,134,204,241,226,158,8,200,156,42,220,9,158,65,196,34,92, +42,26,137,147,120,64,74,37,196,54,100,49,35,188,36,5,68,184,208,113,187, +194,80,212,75,146,1,73,196,54,100,49,35,188,38,57,37,56,240,0,0,0,0,0,0,0, +0,32,235,248,68,48,156,2,24,94,24,0,243,119,10,139,144,123,242,3,102,238, +18,239,115,72,217,160,11,223,16,23,55,113,241,32,145,36,57,188,18,16,102,3, +5,120,35,34,89,32,15,180,152,173,127,0,218,235,88,0,228,180,227,200,127, +248,0,0,0,0,0,0,197,107,240,64,6,77,220,24,38,78,74,113,67,77,130,4,12,155, +185,52,48,156,148,226,134,155,4,10,194,96,129,132,166,238,45,194,2,201,193, +130,100,228,167,20,52,216,32,113,41,187,139,112,128,178,114,104,97,57,41, +197,13,54,8,32,48,216,32,130,195,224,130,19,97,124,134,23,6,0,57,137,62,77, +12,38,12,0,179,18,124,45,22,190,96,128,141,176,134,28,98,79,180,152,139, +218,45,124,193,1,27,97,16,32,196,159,24,230,204,246,194,40,89,137,62,210, +98,103,92,217,158,216,70,7,49,39,193,130,100,182,17,194,140,73,246,147,16, +250,9,146,216,72,6,49,39,193,131,22,194,72,73,137,62,210,98,31,65,139,97, +40,32,196,159,14,234,70,86,194,88,89,137,62,210,98,63,93,72,202,216,76,10, +49,39,198,33,180,153,37,108,38,134,152,147,237,38,38,117,13,164,201,43,97, +56,40,196,159,36,65,57,163,149,176,158,26,98,79,180,152,165,210,9,205,28, +173,133,0,243,18,124,98,22,180,72,130,115,71,43,97,68,72,196,159,105,49,51, +168,90,209,34,9,205,28,173,133,33,19,18,124,154,24,76,185,164,227,138,89, +18,119,0,7,145,39,201,161,132,188,64,124,137,62,49,11,90,36,65,57,163,149, +210,166,37,34,79,180,152,153,212,45,104,145,4,230,142,87,74,160,84,137,62, +72,130,115,71,43,171,234,134,200,147,237,38,41,116,130,115,71,43,171,235,5, +72,147,227,16,218,76,146,186,254,184,108,137,62,210,98,103,80,218,76,146, +186,254,192,68,137,62,29,212,140,174,207,178,23,34,79,180,152,143,215,82, +50,187,62,208,60,137,62,12,19,37,210,182,21,34,79,180,152,135,208,76,151, +74,224,68,137,62,49,205,153,238,175,186,23,34,79,180,152,153,215,54,103, +186,190,240,92,137,62,22,139,95,48,64,70,235,251,225,210,36,251,73,136,189, +162,215,204,16,17,186,255,2,14,98,79,152,32,35,108,48,64,242,36,249,130,2, +55,75,6,212,224,72,200,51,128,114,108,28,100,128,0,0,0,0,0,0,0,12,110,127, +48,98,115,249,201,117,243,249,195,21,159,206,38,47,63,156,86,8,75,144,94, +82,1,38,73,79,208,67,95,233,1,6,128,14,79,129,186,40,249,18,149,182,207, +144,200,155,188,248,204,105,184,207,142,199,137,175,201,0,159,72,10,5,21, +221,10,120,74,129,124,36,98,232,228,74,81,62,160,20,10,107,186,21,114,32, +105,137,194,70,46,142,68,165,19,235,1,64,170,187,161,119,34,66,146,36,104, +137,194,70,46,142,68,165,19,236,1,64,174,187,161,95,37,134,204,23,225,35, +23,71,34,82,137,246,128,160,89,93,208,167,147,195,201,194,70,46,142,68,165, +19,238,1,64,182,187,161,71,105,20,19,177,139,163,145,41,68,16,7,6,15,82,70, +72,115,96,32,106,2,128,0,0,0,0,91,60,165,195,201,194,8,134,149,216,162,0, +192,41,225,8,2,48,177,36,1,149,13,196,15,0,200,209,97,199,128,99,32,176, +195,192,113,57,143,0,167,133,32,230,80,28,202,139,175,238,2,48,189,192,20, +1,119,80,87,193,186,129,89,56,72,197,209,200,193,185,35,23,71,109,13,219, +36,98,232,237,156,13,26,208,211,14,102,19,87,137,91,95,128,0,10,96,24,92,0, +0,83,2,53,56,0,0,165,3,28,204,160,160,226,100,226,200,211,76,241,240,0,1, +102,8,22,75,64,137,73,20,230,105,133,7,19,39,22,70,154,103,143,128,0,11,48, +20,28,76,156,113,75,34,78,62,0,0,45,3,103,31,0,0,22,65,44,57,137,62,33,179, +216,162,152,192,131,18,124,162,27,61,138,41,108,32,196,159,16,217,232,235, +81,76,104,73,137,62,81,13,158,142,181,20,184,16,98,79,136,108,244,244,168, +166,56,36,196,159,40,134,207,79,74,138,93,10,49,39,194,173,192,158,158,149, +20,188,20,98,79,133,91,129,61,109,74,41,124,30,68,159,16,217,236,83,108,96, +68,137,62,81,13,158,197,54,182,17,34,79,136,108,244,117,169,182,52,38,68, +159,40,134,207,71,90,155,92,8,145,39,196,54,122,122,84,219,28,19,34,79,148, +67,103,167,165,77,174,133,72,147,225,86,224,79,79,74,155,94,10,145,39,194, +173,192,158,182,165,54,190,206,25,212,35,208,226,100,150,211,201,29,162,44, +140,35,103,0,255,192,0,0,0,0,0,0,206,25,228,35,208,226,100,150,211,201,29, +162,44,140,35,103,0,255,192,0,0,0,0,0,0,206,25,244,35,208,226,100,150,211, +201,29,162,44,140,35,103,0,255,192,0,0,0,0,0,0,206,26,4,35,208,226,100,150, +211,201,29,162,44,140,35,103,1,0,0,0,0,0,0,0,0,206,26,20,35,208,226,100, +150,211,201,29,162,44,140,35,103,1,0,0,0,0,0,0,0,0,206,26,36,35,208,226, +100,150,211,201,29,162,44,140,35,103,1,0,64,0,0,0,0,0,0,206,26,52,35,208, +226,100,150,211,201,29,162,44,140,35,103,1,0,64,0,0,0,0,0,0,206,26,68,35, +208,226,100,150,211,201,29,162,44,140,35,103,1,0,64,0,0,0,0,0,0,206,26,84, +35,208,226,100,150,211,201,29,162,44,140,35,103,1,0,128,0,0,0,0,0,0,195, +154,99,16,38,36,0,251,68,117,179,216,162,128,68,72,1,241,13,158,197,20,150, +25,18,0,125,162,58,217,232,235,117,100,162,136,25,18,0,125,162,58,217,232, +235,116,36,162,145,2,226,64,15,136,108,244,117,186,178,81,73,129,113,32,7, +196,54,122,58,221,9,40,165,64,200,144,3,237,17,214,207,79,75,171,37,20,80, +200,144,3,237,17,214,207,79,75,161,37,20,138,23,18,0,124,67,103,167,165, +213,146,138,77,11,137,0,62,33,179,211,210,232,73,69,42,133,196,128,31,10, +183,2,125,89,40,163,5,196,128,31,10,183,2,125,9,40,164,96,200,144,3,224, +221,64,172,157,89,40,163,134,68,128,31,6,234,5,100,232,73,69,35,133,68,128, +31,104,142,182,125,89,40,180,0,168,144,3,237,17,214,207,161,37,22,144,19, +18,0,124,67,103,213,146,139,80,9,137,0,62,33,179,232,73,69,172,5,90,40,153, +59,68,117,179,216,166,192,77,162,137,147,136,108,246,41,180,176,219,69,19, +39,104,142,182,122,58,221,89,41,178,6,218,40,153,59,68,117,179,209,214,232, +73,77,162,6,90,40,153,56,134,207,71,91,171,37,54,152,25,104,162,100,226,27, +61,29,110,132,148,218,160,109,162,137,147,180,71,91,61,61,46,172,148,217, +67,109,20,76,157,162,58,217,233,233,116,36,166,209,67,45,20,76,156,67,103, +167,165,213,146,155,77,12,180,81,50,113,13,158,158,151,66,74,109,84,50,209, +68,201,194,173,192,159,86,74,108,193,150,138,38,78,21,110,4,250,18,83,104, +193,182,138,38,78,13,212,10,201,213,146,155,56,109,162,137,147,131,117,2, +178,116,36,166,209,194,237,20,76,157,162,58,217,245,100,167,16,2,237,20,76, +157,162,58,217,244,36,167,18,2,173,20,76,156,67,103,213,146,156,80,10,180, +81,50,113,13,159,66,74,113,97,175,221,48,216,110,64,4,42,22,189,179,0,196, +133,0,185,80,32,28,78,99,193,18,80,36,4,19,159,141,172,0,178,90,4,74,73,0, +22,209,68,201,187,129,4,2,8,3,132,64,60,36,4,0,91,240,168,177,69,118,144, +157,91,116,116,32,32,1,53,216,221,218,170,139,3,234,219,165,0,255,152,185, +11,251,232,231,188,47,86,227,105,18,1,255,184,170,59,41,92,23,240,110,173, +198,209,208,36,3,253,188,183,177,82,110,80,224,93,122,32,32,4,144,253,170, +34,22,140,7,236,161,25,232,237,105,64,63,230,160,158,102,127,59,205,11,217, +66,51,210,128,127,237,65,60,204,254,119,155,171,197,34,168,48,6,90,194,1,0, +39,75,88,72,8,9,33,186,194,80,64,76,13,214,19,2,130,96,110,150,189,0,65,6, +51,214,20,128,65,17,11,214,19,130,137,121,211,210,211,144,6,39,75,88,80,0, +201,119,235,10,8,41,86,231,71,88,80,129,79,135,186,122,133,224,34,25,69, +234,80,3,91,141,172,40,96,139,113,180,181,133,36,21,110,54,142,134,176,165, +1,176,23,213,47,0,216,134,234,215,128,111,117,181,232,128,209,3,70,230,107, +64,5,139,168,209,235,10,32,36,144,102,235,136,3,146,27,172,40,160,146,132, +103,172,40,192,115,3,117,133,28,22,113,163,69,172,41,103,1,66,188,17,145, +52,168,4,202,113,67,76,130,227,76,194,13,240,108,0,0,83,224,0,2,193,0,104, +146,84,97,48,0,1,94,192,56,169,24,145,179,192,0,5,112,8,56,16,32,128,56,18, +52,125,230,86,147,190,140,28,50,21,13,39,31,23,60,145,158,57,12,141,47,129, +6,155,194,188,24,49,39,199,89,188,124,92,242,70,120,224,201,33,69,15,155, +163,201,68,14,49,39,199,197,211,116,240,242,113,197,232,18,180,254,36,3,17, +46,18,243,35,100,128,172,156,178,70,163,154,76,34,248,146,164,108,248,75, +204,141,146,28,217,115,137,27,95,27,241,173,236,162,160,224,200,2,206,9, +113,13,148,192,209,18,22,164,146,37,193,57,162,4,249,39,196,128,24,2,178, +66,213,136,68,201,16,77,209,131,31,192,242,88,96,92,191,151,34,100,136,38, +232,255,252,92,221,199,197,12,68,209,82,66,212,11,155,185,41,197,13,55,38, +3,66,213,47,135,254,72,12,162,99,133,116,112,0,1,72,66,14,16,16,50,37,202, +160,150,154,66,14,20,8,57,192,28,24,80,113,50,113,100,105,166,120,248,0,0, +179,1,65,196,201,199,20,178,36,227,224,0,2,208,54,113,240,0,1,100,11,181, +192,0,5,178,1,18,160,65,24,131,20,145,25,188,48,132,122,28,76,146,218,121, +35,180,69,145,132,108,224,31,248,0,0,0,0,0,0,25,188,56,132,122,28,76,146, +218,121,35,180,69,145,132,108,224,31,248,0,0,0,0,0,0,40,160,45,110,23,30, +176,33,184,0,0,183,32,29,235,2,27,199,23,0,0,23,4,51,120,129,8,244,56,153, +37,180,242,71,104,139,35,8,217,192,63,240,0,0,0,0,0,0,51,120,145,8,244,56, +153,37,180,242,71,104,139,35,8,217,192,64,0,0,0,0,0,0,0,51,120,161,8,244, +56,153,37,180,242,71,104,139,35,8,217,192,64,0,0,0,0,0,0,0,51,120,177,8, +244,56,153,37,180,242,71,104,139,35,8,217,192,64,16,0,0,0,0,0,0,51,120,193, +8,244,56,153,37,180,242,71,104,139,35,8,217,192,64,16,0,0,0,0,0,0,51,120, +209,8,244,56,153,37,180,242,71,104,139,35,8,217,192,64,16,0,0,0,0,0,0,51, +120,225,8,244,56,153,37,180,242,71,104,139,35,8,217,192,64,32,0,0,0,0,0,0, +32,227,194,0,97,57,162,4,246,104,5,34,92,35,68,225,161,166,220,16,16,137, +112,52,41,73,29,185,1,65,196,201,197,145,166,153,246,72,3,137,204,120,34, +74,8,199,1,67,17,162,112,201,84,128,97,144,78,25,42,16,131,169,1,205,66,8, +35,68,225,161,166,239,128,0,10,192,64,196,104,156,50,96,0,2,172,73,240,117, +96,57,170,97,4,104,156,52,52,221,240,0,1,82,1,74,9,129,125,240,0,1,82,32, +148,25,174,137,58,23,51,190,0,0,42,69,64,195,32,156,50,96,0,2,160,81,238,2, +3,107,173,218,3,192, +}; +#elif defined(DUK_USE_DOUBLE_ME) +DUK_INTERNAL const duk_uint8_t duk_builtins_data[4281] = { +144,148,105,226,32,68,52,228,254,12,104,202,37,132,52,167,194,138,105,245, +124,57,28,211,57,18,64,52,239,126,44,138,111,175,241,164,19,87,145,30,33, +167,22,145,159,8,211,139,9,225,42,5,240,145,139,163,163,8,211,139,10,228, +64,211,19,132,140,93,29,56,70,156,88,119,34,66,146,36,104,137,194,70,46, +142,172,35,78,44,47,146,195,102,11,240,145,139,163,175,8,211,139,9,228,240, +242,112,145,139,163,179,8,211,139,8,237,34,130,118,49,116,118,225,26,48,0, +1,98,29,201,158,46,183,39,135,147,132,140,93,16,132,76,66,33,8,66,16,132, +33,8,66,26,180,105,97,167,68,150,34,33,154,112,0,1,91,247,35,79,111,237, +198,174,232,47,31,23,95,17,13,31,249,96,211,49,50,53,214,77,141,24,0,0,181, +10,228,240,242,15,128,140,65,128,134,188,0,0,90,167,97,181,224,0,2,213,62, +53,224,0,2,213,66,237,120,0,0,181,81,204,107,192,0,5,170,150,67,94,0,0,45, +84,245,90,240,0,1,106,169,162,215,128,0,11,85,93,150,188,0,0,90,171,111,53, +109,22,162,26,48,0,1,84,23,201,146,243,225,26,39,12,145,136,104,192,0,5,61, +11,228,201,121,240,100,19,134,72,196,33,195,14,40,203,112,64,190,76,232, +145,153,136,0,0,31,15,224,0,0,0,25,152,0,0,30,15,224,0,0,0,25,120,144,13, +96,155,194,56,80,206,36,67,141,20,228,70,57,81,206,100,131,156,39,132,168, +23,194,70,46,137,208,21,200,129,166,39,9,24,186,39,72,119,34,66,146,36,104, +137,194,70,46,137,212,23,201,97,179,5,248,72,197,209,58,194,121,60,60,156, +36,98,232,157,129,29,164,80,78,198,46,137,218,146,121,25,71,146,9,209,5, +209,61,48,126,14,138,152,30,67,186,23,143,139,175,131,202,135,228,72,85, +144,83,60,179,30,94,209,233,102,30,98,105,230,103,30,114,121,231,104,30, +122,137,231,233,30,130,153,232,106,30,138,169,232,235,30,144,67,193,25,19, +136,108,207,30,41,224,140,137,194,173,192,153,228,5,242,100,188,248,70,137, +195,36,79,78,47,147,37,231,193,144,78,25,34,122,145,111,36,74,232,176,13, +17,61,234,226,93,207,148,160,84,75,141,7,27,161,32,33,18,225,80,212,76,154, +2,2,70,65,56,100,237,34,140,209,2,67,32,156,50,118,145,64,186,230,61,205, +35,103,155,32,36,141,19,134,78,210,40,206,16,36,70,137,195,39,105,20,11, +174,99,220,210,54,121,210,1,137,33,1,228,207,16,17,70,146,66,3,201,164,32, +0,65,112,152,56,196,159,31,23,77,211,195,201,199,23,160,72,214,246,81,6,12, +73,241,214,111,31,23,60,145,158,56,50,72,81,67,230,232,242,80,19,49,39,199, +89,188,124,92,242,70,120,227,64,194,75,154,72,12,9,73,6,111,21,120,12,40, +144,19,39,25,0,225,144,168,105,56,248,185,228,140,241,200,96,64,100,42,26, +78,62,46,121,35,52,18,92,116,1,36,64,47,158,64,49,98,66,100,156,242,65,23, +196,149,35,103,194,94,100,108,144,230,203,156,64,66,37,201,16,11,32,249, +132,4,34,92,44,93,146,55,152,72,24,137,112,151,153,27,36,5,100,229,144,8, +162,98,92,210,5,76,73,241,214,111,31,23,60,145,158,57,44,48,46,92,185,164, +160,72,151,41,0,50,107,179,244,59,36,93,127,92,6,19,172,3,11,216,0,56,224, +151,29,102,241,241,115,201,25,227,164,64,106,37,199,197,211,116,240,242, +113,197,233,144,40,248,185,228,140,241,196,75,132,109,24,72,128,43,39,84, +129,13,173,161,144,168,105,56,98,78,100,142,214,215,69,1,13,173,161,144, +168,105,57,34,78,100,142,214,215,69,16,67,107,105,110,114,168,254,24,147, +153,35,181,181,212,32,67,107,105,110,114,168,254,72,147,153,35,181,181,212, +36,65,130,3,144,8,26,252,200,13,30,85,16,16,64,90,242,231,192,64,161,163, +203,31,26,172,193,17,4,23,105,159,96,27,172,251,16,32,196,4,14,137,112,17, +136,48,164,28,134,80,215,202,1,132,130,8,12,39,52,64,155,31,24,56,36,1,189, +207,132,0,35,233,35,195,62,3,196,149,36,100,72,160,2,200,232,44,227,0,11, +37,160,68,142,128,36,157,25,200,32,26,79,90,4,73,43,192,122,54,71,65,103, +44,248,14,134,140,151,227,138,231,208,45,96,148,248,134,140,151,227,138, +231,240,1,255,254,10,74,146,56,128,104,4,147,152,72,6,144,28,174,143,8,1, +30,1,165,3,96,31,0,211,3,21,11,153,35,0,211,131,68,131,160,137,16,250,5, +196,131,160,137,200,160,199,156,67,248,0,255,255,65,140,10,48,177,115,56, +35,130,60,19,134,79,89,240,52,177,115,56,39,12,156,123,144,217,251,15,135, +34,167,30,20,170,154,255,232,12,47,244,0,97,28,17,224,39,238,32,40,71,4, +120,39,12,156,4,253,228,5,137,195,39,30,228,54,124,4,253,228,128,194,115, +68,9,252,15,128,232,104,201,126,56,191,35,64,90,193,41,241,13,25,47,199,23, +228,105,3,86,225,1,100,224,156,199,130,36,249,144,10,192,76,71,250,16,15, +18,61,96,17,62,200,3,72,128,136,143,247,32,22,75,64,137,248,64,22,79,90,39, +249,64,38,84,12,167,20,52,223,196,2,230,238,45,214,36,120,32,72,158,208,4, +102,238,45,194,2,201,197,186,196,143,4,9,19,218,0,92,221,202,61,228,143,4, +9,19,218,8,35,55,113,110,16,22,78,81,239,36,120,32,72,158,208,64,73,197,12, +255,0,13,18,60,128,159,212,128,169,76,17,156,185,100,76,255,163,64,65,26, +57,114,200,153,255,70,144,33,13,18,232,50,75,226,104,6,149,3,41,199,246, +130,12,128,28,142,156,120,203,175,158,8,194,207,1,6,81,20,79,88,11,237,84, +11,161,32,127,255,247,191,255,255,255,255,137,235,16,221,170,129,116,36,0, +0,0,0,0,16,0,0,12,196,0,0,15,135,240,0,0,0,2,61,123,164,137,162,164,218,67, +74,134,162,120,128,0,1,224,254,0,0,0,0,71,173,33,129,52,84,155,72,105,80, +212,79,16,0,0,60,63,192,0,0,0,3,244,143,146,22,230,192,0,0,176,60,0,0,0,0, +33,214,2,251,82,1,73,180,134,204,134,36,96,127,255,159,161,255,255,255,255, +144,235,16,221,169,0,164,218,67,102,67,18,48,63,255,207,240,255,255,255, +255,196,60,17,145,56,134,204,241,226,158,8,200,156,42,220,9,158,65,196,34, +92,42,26,137,147,120,64,74,37,196,54,100,49,35,188,36,5,68,184,208,113,187, +194,80,212,75,146,1,73,196,54,100,49,35,188,38,57,37,56,240,0,0,0,0,0,0,0, +0,32,235,248,68,48,156,2,24,94,24,0,243,119,10,139,144,123,242,3,102,238, +18,239,115,72,217,160,11,223,16,23,55,113,241,32,145,36,57,188,18,16,102,3, +5,120,35,34,89,32,15,180,152,173,127,0,218,235,88,0,228,180,227,200,0,0, +248,127,0,0,0,0,197,107,240,64,6,77,220,24,38,78,74,113,67,77,130,4,12,155, +185,52,48,156,148,226,134,155,4,10,194,96,129,132,166,238,45,194,2,201,193, +130,100,228,167,20,52,216,32,113,41,187,139,112,128,178,114,104,97,57,41, +197,13,54,8,32,48,216,32,130,195,224,130,19,97,124,134,23,6,0,57,137,62,77, +12,38,12,0,179,18,124,45,22,190,96,128,141,176,134,28,98,79,180,152,139, +218,45,124,193,1,27,97,16,32,196,159,24,230,204,246,194,40,89,137,62,210, +98,103,92,217,158,216,70,7,49,39,193,130,100,182,17,194,140,73,246,147,16, +250,9,146,216,72,6,49,39,193,131,22,194,72,73,137,62,210,98,31,65,139,97, +40,32,196,159,14,234,70,86,194,88,89,137,62,210,98,63,93,72,202,216,76,10, +49,39,198,33,180,153,37,108,38,134,152,147,237,38,38,117,13,164,201,43,97, +56,40,196,159,36,65,57,163,149,176,158,26,98,79,180,152,165,210,9,205,28, +173,133,0,243,18,124,98,22,180,72,130,115,71,43,97,68,72,196,159,105,49,51, +168,90,209,34,9,205,28,173,133,33,19,18,124,154,24,76,185,164,227,138,89, +18,119,0,7,145,39,201,161,132,188,64,124,137,62,49,11,90,36,65,57,163,149, +210,166,37,34,79,180,152,153,212,45,104,145,4,230,142,87,74,160,84,137,62, +72,130,115,71,43,171,234,134,200,147,237,38,41,116,130,115,71,43,171,235,5, +72,147,227,16,218,76,146,186,254,184,108,137,62,210,98,103,80,218,76,146, +186,254,192,68,137,62,29,212,140,174,207,178,23,34,79,180,152,143,215,82, +50,187,62,208,60,137,62,12,19,37,210,182,21,34,79,180,152,135,208,76,151, +74,224,68,137,62,49,205,153,238,175,186,23,34,79,180,152,153,215,54,103, +186,190,240,92,137,62,22,139,95,48,64,70,235,251,225,210,36,251,73,136,189, +162,215,204,16,17,186,255,2,14,98,79,152,32,35,108,48,64,242,36,249,130,2, +55,75,6,212,224,72,200,51,128,114,108,28,100,128,0,0,0,0,0,0,0,12,110,127, +48,98,115,249,201,117,243,249,195,21,159,206,38,47,63,156,86,8,75,144,94, +82,1,38,73,79,208,67,95,233,1,6,128,14,79,129,186,40,249,18,149,182,207, +144,200,155,188,248,204,105,184,207,142,199,137,175,201,0,159,72,10,5,21, +221,10,120,74,129,124,36,98,232,228,74,81,62,160,20,10,107,186,21,114,32, +105,137,194,70,46,142,68,165,19,235,1,64,170,187,161,119,34,66,146,36,104, +137,194,70,46,142,68,165,19,236,1,64,174,187,161,95,37,134,204,23,225,35, +23,71,34,82,137,246,128,160,89,93,208,167,147,195,201,194,70,46,142,68,165, +19,238,1,64,182,187,161,71,105,20,19,177,139,163,145,41,68,16,7,6,15,82,70, +72,115,96,0,2,234,32,0,0,0,0,91,60,165,195,201,194,8,134,149,216,162,0,192, +41,225,8,2,48,177,36,1,149,13,196,15,0,200,209,97,199,128,99,32,176,195, +192,113,57,143,0,167,133,32,230,80,28,202,139,175,238,2,48,189,192,20,1, +119,80,87,193,186,129,89,56,72,197,209,200,193,185,35,23,71,109,13,219,36, +98,232,237,156,13,26,208,211,14,102,19,87,137,91,95,128,0,10,96,24,92,0,0, +83,2,53,56,0,0,165,3,28,204,160,160,226,100,226,200,211,76,241,240,0,1,102, +8,22,75,64,137,73,20,230,105,133,7,19,39,22,70,154,103,143,128,0,11,48,20, +28,76,156,113,75,34,78,62,0,0,45,3,103,31,0,0,22,65,44,57,137,62,33,179, +216,162,152,192,131,18,124,162,27,61,138,41,108,32,196,159,16,217,232,235, +81,76,104,73,137,62,81,13,158,142,181,20,184,16,98,79,136,108,244,244,168, +166,56,36,196,159,40,134,207,79,74,138,93,10,49,39,194,173,192,158,158,149, +20,188,20,98,79,133,91,129,61,109,74,41,124,30,68,159,16,217,236,83,108,96, +68,137,62,81,13,158,197,54,182,17,34,79,136,108,244,117,169,182,52,38,68, +159,40,134,207,71,90,155,92,8,145,39,196,54,122,122,84,219,28,19,34,79,148, +67,103,167,165,77,174,133,72,147,225,86,224,79,79,74,155,94,10,145,39,194, +173,192,158,182,165,54,190,206,25,212,35,208,226,100,150,211,201,29,162,44, +140,35,103,0,0,3,192,252,0,0,0,0,206,25,228,35,208,226,100,150,211,201,29, +162,44,140,35,103,0,0,3,192,252,0,0,0,0,206,25,244,35,208,226,100,150,211, +201,29,162,44,140,35,103,0,0,3,192,252,0,0,0,0,206,26,4,35,208,226,100,150, +211,201,29,162,44,140,35,103,0,0,0,1,0,0,0,0,0,206,26,20,35,208,226,100, +150,211,201,29,162,44,140,35,103,0,0,0,1,0,0,0,0,0,206,26,36,35,208,226, +100,150,211,201,29,162,44,140,35,103,0,0,0,65,0,0,0,0,0,206,26,52,35,208, +226,100,150,211,201,29,162,44,140,35,103,0,0,0,65,0,0,0,0,0,206,26,68,35, +208,226,100,150,211,201,29,162,44,140,35,103,0,0,0,65,0,0,0,0,0,206,26,84, +35,208,226,100,150,211,201,29,162,44,140,35,103,0,0,0,129,0,0,0,0,0,195, +154,99,16,38,36,0,251,68,117,179,216,162,128,68,72,1,241,13,158,197,20,150, +25,18,0,125,162,58,217,232,235,117,100,162,136,25,18,0,125,162,58,217,232, +235,116,36,162,145,2,226,64,15,136,108,244,117,186,178,81,73,129,113,32,7, +196,54,122,58,221,9,40,165,64,200,144,3,237,17,214,207,79,75,171,37,20,80, +200,144,3,237,17,214,207,79,75,161,37,20,138,23,18,0,124,67,103,167,165, +213,146,138,77,11,137,0,62,33,179,211,210,232,73,69,42,133,196,128,31,10, +183,2,125,89,40,163,5,196,128,31,10,183,2,125,9,40,164,96,200,144,3,224, +221,64,172,157,89,40,163,134,68,128,31,6,234,5,100,232,73,69,35,133,68,128, +31,104,142,182,125,89,40,180,0,168,144,3,237,17,214,207,161,37,22,144,19, +18,0,124,67,103,213,146,139,80,9,137,0,62,33,179,232,73,69,172,5,90,40,153, +59,68,117,179,216,166,192,77,162,137,147,136,108,246,41,180,176,219,69,19, +39,104,142,182,122,58,221,89,41,178,6,218,40,153,59,68,117,179,209,214,232, +73,77,162,6,90,40,153,56,134,207,71,91,171,37,54,152,25,104,162,100,226,27, +61,29,110,132,148,218,160,109,162,137,147,180,71,91,61,61,46,172,148,217, +67,109,20,76,157,162,58,217,233,233,116,36,166,209,67,45,20,76,156,67,103, +167,165,213,146,155,77,12,180,81,50,113,13,158,158,151,66,74,109,84,50,209, +68,201,194,173,192,159,86,74,108,193,150,138,38,78,21,110,4,250,18,83,104, +193,182,138,38,78,13,212,10,201,213,146,155,56,109,162,137,147,131,117,2, +178,116,36,166,209,194,237,20,76,157,162,58,217,245,100,167,16,2,237,20,76, +157,162,58,217,244,36,167,18,2,173,20,76,156,67,103,213,146,156,80,10,180, +81,50,113,13,159,66,74,113,97,175,221,48,216,110,64,4,42,22,189,179,0,196, +133,0,185,80,32,28,78,99,193,18,80,36,4,19,159,141,172,0,178,90,4,74,73,0, +22,209,68,201,187,129,4,2,8,3,132,64,60,36,0,171,240,84,6,149,113,72,176, +157,91,116,116,32,88,181,129,32,11,42,218,221,131,234,219,165,1,8,187,152, +255,188,231,235,248,47,86,227,105,18,2,56,175,185,255,244,17,91,40,110,173, +198,209,208,36,7,188,189,179,240,238,82,97,80,93,122,32,125,144,132,160,12, +22,162,42,7,236,161,25,232,237,105,64,158,160,230,63,205,59,127,102,11,217, +66,51,210,129,61,65,236,127,154,118,254,205,171,197,34,168,48,6,90,194,1,0, +39,75,88,72,8,9,33,186,194,80,64,76,13,214,19,2,130,96,110,150,189,0,65,6, +51,214,20,128,65,17,11,214,19,130,137,121,211,210,211,144,6,39,75,88,80,0, +201,119,235,10,8,41,86,231,71,88,80,129,79,135,186,122,133,224,34,25,69, +234,80,3,91,141,172,40,96,139,113,180,181,133,36,21,110,54,142,134,176,165, +1,176,23,213,47,0,216,134,234,215,128,111,117,181,232,128,209,3,70,230,107, +64,5,139,168,209,235,10,32,36,144,102,235,136,3,146,27,172,40,160,146,132, +103,172,40,192,115,3,117,133,28,22,113,163,69,172,41,103,1,66,188,17,145, +52,168,4,202,113,67,76,130,227,76,194,13,240,108,0,0,83,224,0,2,193,0,104, +146,84,97,48,0,1,94,192,56,169,24,145,179,192,0,5,112,8,56,16,32,128,56,18, +52,125,230,86,147,190,140,28,50,21,13,39,31,23,60,145,158,57,12,141,47,129, +6,155,194,188,24,49,39,199,89,188,124,92,242,70,120,224,201,33,69,15,155, +163,201,68,14,49,39,199,197,211,116,240,242,113,197,232,18,180,254,36,3,17, +46,18,243,35,100,128,172,156,178,70,163,154,76,34,248,146,164,108,248,75, +204,141,146,28,217,115,137,27,95,27,241,173,236,162,160,224,200,2,206,9, +113,13,148,192,209,18,22,164,146,37,193,57,162,4,249,39,196,128,24,2,178, +66,213,136,68,201,16,77,209,131,31,192,242,88,96,92,191,151,34,100,136,38, +232,255,252,92,221,199,197,12,68,209,82,66,212,11,155,185,41,197,13,55,38, +3,66,213,47,135,254,72,12,162,99,133,116,112,0,1,72,66,14,16,16,50,37,202, +160,150,154,66,14,20,8,57,192,28,24,80,113,50,113,100,105,166,120,248,0,0, +179,1,65,196,201,199,20,178,36,227,224,0,2,208,54,113,240,0,1,100,11,181, +192,0,5,178,1,18,160,65,24,131,20,145,25,188,48,132,122,28,76,146,218,121, +35,180,69,145,132,108,224,0,0,120,31,128,0,0,0,25,188,56,132,122,28,76,146, +218,121,35,180,69,145,132,108,224,0,0,120,31,128,0,0,0,40,160,45,110,23,30, +176,33,184,0,0,183,32,29,235,2,27,199,23,0,0,23,4,51,120,129,8,244,56,153, +37,180,242,71,104,139,35,8,217,192,0,0,240,63,0,0,0,0,51,120,145,8,244,56, +153,37,180,242,71,104,139,35,8,217,192,0,0,0,64,0,0,0,0,51,120,161,8,244, +56,153,37,180,242,71,104,139,35,8,217,192,0,0,0,64,0,0,0,0,51,120,177,8, +244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,16,64,0,0,0,0,51,120,193, +8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,16,64,0,0,0,0,51,120, +209,8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,16,64,0,0,0,0,51, +120,225,8,244,56,153,37,180,242,71,104,139,35,8,217,192,0,0,32,64,0,0,0,0, +32,227,194,0,97,57,162,4,246,104,5,34,92,35,68,225,161,166,220,16,16,137, +112,52,41,73,29,185,1,65,196,201,197,145,166,153,246,72,3,137,204,120,34, +74,8,199,1,67,17,162,112,201,84,128,97,144,78,25,42,16,131,169,1,205,66,8, +35,68,225,161,166,239,128,0,10,192,64,196,104,156,50,96,0,2,172,73,240,117, +96,57,170,97,4,104,156,52,52,221,240,0,1,82,1,74,9,129,125,240,0,1,82,32, +148,25,174,137,58,23,51,190,0,0,42,69,64,195,32,156,50,96,0,2,160,81,238,2, +3,107,173,218,3,192, +}; +#else +#error invalid endianness defines +#endif +#endif /* DUK_USE_ROM_OBJECTS */ + +/* automatic undefs */ +#undef DUK__REFCINIT +#line 1 "duk_error_macros.c" +/* + * Error and fatal handling. + */ + +/* #include duk_internal.h -> already included */ + +#define DUK__ERRFMT_BUFSIZE 256 /* size for formatting buffers */ + +#if defined(DUK_USE_VERBOSE_ERRORS) + +DUK_INTERNAL DUK_COLD void duk_err_handle_error_fmt(duk_hthread *thr, const char *filename, duk_uint_t line_and_code, const char *fmt, ...) { + va_list ap; + char msg[DUK__ERRFMT_BUFSIZE]; + va_start(ap, fmt); + (void) DUK_VSNPRINTF(msg, sizeof(msg), fmt, ap); + msg[sizeof(msg) - 1] = (char) 0; + duk_err_create_and_throw(thr, (duk_errcode_t) (line_and_code >> 24), msg, filename, (duk_int_t) (line_and_code & 0x00ffffffL)); + va_end(ap); /* dead code, but ensures portability (see Linux man page notes) */ +} + +DUK_INTERNAL DUK_COLD void duk_err_handle_error(duk_hthread *thr, const char *filename, duk_uint_t line_and_code, const char *msg) { + duk_err_create_and_throw(thr, (duk_errcode_t) (line_and_code >> 24), msg, filename, (duk_int_t) (line_and_code & 0x00ffffffL)); +} + +#else /* DUK_USE_VERBOSE_ERRORS */ + +DUK_INTERNAL DUK_COLD void duk_err_handle_error(duk_hthread *thr, duk_errcode_t code) { + duk_err_create_and_throw(thr, code); +} + +#endif /* DUK_USE_VERBOSE_ERRORS */ + +/* + * Error throwing helpers + */ + +#if defined(DUK_USE_VERBOSE_ERRORS) +#if defined(DUK_USE_PARANOID_ERRORS) +DUK_INTERNAL DUK_COLD void duk_err_require_type_index(duk_hthread *thr, const char *filename, duk_int_t linenumber, duk_idx_t idx, const char *expect_name) { + DUK_ERROR_RAW_FMT3(thr, filename, linenumber, DUK_ERR_TYPE_ERROR, "%s required, found %s (stack index %ld)", + expect_name, duk_get_type_name(thr, idx), (long) idx); +} +#else +DUK_INTERNAL DUK_COLD void duk_err_require_type_index(duk_hthread *thr, const char *filename, duk_int_t linenumber, duk_idx_t idx, const char *expect_name) { + DUK_ERROR_RAW_FMT3(thr, filename, linenumber, DUK_ERR_TYPE_ERROR, "%s required, found %s (stack index %ld)", + expect_name, duk_push_string_readable(thr, idx), (long) idx); +} +#endif +DUK_INTERNAL DUK_COLD void duk_err_error_internal(duk_hthread *thr, const char *filename, duk_int_t linenumber) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_ERROR, DUK_STR_INTERNAL_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_error_alloc_failed(duk_hthread *thr, const char *filename, duk_int_t linenumber) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_ERROR, DUK_STR_ALLOC_FAILED); +} +DUK_INTERNAL DUK_COLD void duk_err_error(duk_hthread *thr, const char *filename, duk_int_t linenumber, const char *message) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_ERROR, message); +} +DUK_INTERNAL DUK_COLD void duk_err_range(duk_hthread *thr, const char *filename, duk_int_t linenumber, const char *message) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_RANGE_ERROR, message); +} +DUK_INTERNAL DUK_COLD void duk_err_range_index(duk_hthread *thr, const char *filename, duk_int_t linenumber, duk_idx_t idx) { + DUK_ERROR_RAW_FMT1(thr, filename, linenumber, DUK_ERR_RANGE_ERROR, "invalid stack index %ld", (long) (idx)); +} +DUK_INTERNAL DUK_COLD void duk_err_range_push_beyond(duk_hthread *thr, const char *filename, duk_int_t linenumber) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_RANGE_ERROR, DUK_STR_PUSH_BEYOND_ALLOC_STACK); +} +DUK_INTERNAL DUK_COLD void duk_err_type_invalid_args(duk_hthread *thr, const char *filename, duk_int_t linenumber) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_TYPE_ERROR, DUK_STR_INVALID_ARGS); +} +DUK_INTERNAL DUK_COLD void duk_err_type_invalid_state(duk_hthread *thr, const char *filename, duk_int_t linenumber) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_TYPE_ERROR, DUK_STR_INVALID_STATE); +} +DUK_INTERNAL DUK_COLD void duk_err_type_invalid_trap_result(duk_hthread *thr, const char *filename, duk_int_t linenumber) { + DUK_ERROR_RAW(thr, filename, linenumber, DUK_ERR_TYPE_ERROR, DUK_STR_INVALID_TRAP_RESULT); +} +#else +/* The file/line arguments are NULL and 0, they're ignored by DUK_ERROR_RAW() + * when non-verbose errors are used. + */ + +DUK_NORETURN(DUK_LOCAL_DECL void duk__err_shared(duk_hthread *thr, duk_errcode_t code)); +DUK_LOCAL void duk__err_shared(duk_hthread *thr, duk_errcode_t code) { + DUK_ERROR_RAW(thr, NULL, 0, code, NULL); +} +DUK_INTERNAL DUK_COLD void duk_err_error(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_range(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_RANGE_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_eval(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_EVAL_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_reference(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_REFERENCE_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_syntax(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_SYNTAX_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_type(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_TYPE_ERROR); +} +DUK_INTERNAL DUK_COLD void duk_err_uri(duk_hthread *thr) { + duk__err_shared(thr, DUK_ERR_URI_ERROR); +} +#endif + +/* + * Default fatal error handler + */ + +DUK_INTERNAL DUK_COLD void duk_default_fatal_handler(void *udata, const char *msg) { + DUK_UNREF(udata); + DUK_UNREF(msg); + + msg = msg ? msg : "NULL"; + +#if defined(DUK_USE_FATAL_HANDLER) + /* duk_config.h provided a custom default fatal handler. */ + DUK_D(DUK_DPRINT("custom default fatal error handler called: %s", msg)); + DUK_USE_FATAL_HANDLER(udata, msg); +#elif defined(DUK_USE_CPP_EXCEPTIONS) + /* With C++ use a duk_fatal_exception which user code can catch in + * a natural way. + */ + DUK_D(DUK_DPRINT("built-in default C++ fatal error handler called: %s", msg)); + throw duk_fatal_exception(msg); +#else + /* Default behavior is to abort() on error. There's no printout + * which makes this awkward, so it's always recommended to use an + * explicit fatal error handler. + * + * ==================================================================== + * NOTE: If you are seeing this, you are most likely dealing with an + * uncaught error. You should provide a fatal error handler in Duktape + * heap creation, and should consider using a protected call as your + * first call into an empty Duktape context to properly handle errors. + * See: + * - http://duktape.org/guide.html#error-handling + * - http://wiki.duktape.org/HowtoFatalErrors.html + * - http://duktape.org/api.html#taglist-protected + * ==================================================================== + */ + DUK_D(DUK_DPRINT("built-in default fatal error handler called: %s", msg)); + DUK_ABORT(); +#endif + + DUK_D(DUK_DPRINT("fatal error handler returned, enter forever loop")); + for (;;) { + /* Loop forever to ensure we don't return. */ + } +} + +/* automatic undefs */ +#undef DUK__ERRFMT_BUFSIZE +#line 1 "duk_unicode_support.c" +/* + * Various Unicode help functions for character classification predicates, + * case conversion, decoding, etc. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Fast path tables + */ + +#if defined(DUK_USE_IDCHAR_FASTPATH) +DUK_INTERNAL const duk_int8_t duk_is_idchar_tab[128] = { + /* 0: not IdentifierStart or IdentifierPart + * 1: IdentifierStart and IdentifierPart + * -1: IdentifierPart only + */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x00...0x0f */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10...0x1f */ + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x20...0x2f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, /* 0x30...0x3f */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x40...0x4f */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 0x50...0x5f */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x60...0x6f */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 /* 0x70...0x7f */ +}; +#endif + +/* + * XUTF-8 and CESU-8 encoding/decoding + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_get_xutf8_length(duk_ucodepoint_t cp) { + duk_uint_fast32_t x = (duk_uint_fast32_t) cp; + if (x < 0x80UL) { + /* 7 bits */ + return 1; + } else if (x < 0x800UL) { + /* 11 bits */ + return 2; + } else if (x < 0x10000UL) { + /* 16 bits */ + return 3; + } else if (x < 0x200000UL) { + /* 21 bits */ + return 4; + } else if (x < 0x4000000UL) { + /* 26 bits */ + return 5; + } else if (x < (duk_ucodepoint_t) 0x80000000UL) { + /* 31 bits */ + return 6; + } else { + /* 36 bits */ + return 7; + } +} + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL duk_small_int_t duk_unicode_get_cesu8_length(duk_ucodepoint_t cp) { + duk_uint_fast32_t x = (duk_uint_fast32_t) cp; + if (x < 0x80UL) { + /* 7 bits */ + return 1; + } else if (x < 0x800UL) { + /* 11 bits */ + return 2; + } else if (x < 0x10000UL) { + /* 16 bits */ + return 3; + } else { + /* Encoded as surrogate pair, each encoding to 3 bytes for + * 6 bytes total. Codepoints above U+10FFFF encode as 6 bytes + * too, see duk_unicode_encode_cesu8(). + */ + return 3 + 3; + } +} +#endif /* DUK_USE_ASSERTIONS */ + +DUK_INTERNAL const duk_uint8_t duk_unicode_xutf8_markers[7] = { + 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe +}; + +/* Encode to extended UTF-8; 'out' must have space for at least + * DUK_UNICODE_MAX_XUTF8_LENGTH bytes. Allows encoding of any + * 32-bit (unsigned) codepoint. + */ +DUK_INTERNAL duk_small_int_t duk_unicode_encode_xutf8(duk_ucodepoint_t cp, duk_uint8_t *out) { + duk_uint_fast32_t x = (duk_uint_fast32_t) cp; + duk_small_int_t len; + duk_uint8_t marker; + duk_small_int_t i; + + len = duk_unicode_get_xutf8_length(cp); + DUK_ASSERT(len > 0); + + marker = duk_unicode_xutf8_markers[len - 1]; /* 64-bit OK because always >= 0 */ + + i = len; + DUK_ASSERT(i > 0); + do { + i--; + if (i > 0) { + out[i] = (duk_uint8_t) (0x80 + (x & 0x3f)); + x >>= 6; + } else { + /* Note: masking of 'x' is not necessary because of + * range check and shifting -> no bits overlapping + * the marker should be set. + */ + out[0] = (duk_uint8_t) (marker + x); + } + } while (i > 0); + + return len; +} + +/* Encode to CESU-8; 'out' must have space for at least + * DUK_UNICODE_MAX_CESU8_LENGTH bytes; codepoints above U+10FFFF + * will encode to garbage but won't overwrite the output buffer. + */ +DUK_INTERNAL duk_small_int_t duk_unicode_encode_cesu8(duk_ucodepoint_t cp, duk_uint8_t *out) { + duk_uint_fast32_t x = (duk_uint_fast32_t) cp; + duk_small_int_t len; + + if (x < 0x80UL) { + out[0] = (duk_uint8_t) x; + len = 1; + } else if (x < 0x800UL) { + out[0] = (duk_uint8_t) (0xc0 + ((x >> 6) & 0x1f)); + out[1] = (duk_uint8_t) (0x80 + (x & 0x3f)); + len = 2; + } else if (x < 0x10000UL) { + /* surrogate pairs get encoded here */ + out[0] = (duk_uint8_t) (0xe0 + ((x >> 12) & 0x0f)); + out[1] = (duk_uint8_t) (0x80 + ((x >> 6) & 0x3f)); + out[2] = (duk_uint8_t) (0x80 + (x & 0x3f)); + len = 3; + } else { + /* + * Unicode codepoints above U+FFFF are encoded as surrogate + * pairs here. This ensures that all CESU-8 codepoints are + * 16-bit values as expected in ECMAScript. The surrogate + * pairs always get a 3-byte encoding (each) in CESU-8. + * See: http://en.wikipedia.org/wiki/Surrogate_pair + * + * 20-bit codepoint, 10 bits (A and B) per surrogate pair: + * + * x = 0b00000000 0000AAAA AAAAAABB BBBBBBBB + * sp1 = 0b110110AA AAAAAAAA (0xd800 + ((x >> 10) & 0x3ff)) + * sp2 = 0b110111BB BBBBBBBB (0xdc00 + (x & 0x3ff)) + * + * Encoded into CESU-8: + * + * sp1 -> 0b11101101 (0xe0 + ((sp1 >> 12) & 0x0f)) + * -> 0b1010AAAA (0x80 + ((sp1 >> 6) & 0x3f)) + * -> 0b10AAAAAA (0x80 + (sp1 & 0x3f)) + * sp2 -> 0b11101101 (0xe0 + ((sp2 >> 12) & 0x0f)) + * -> 0b1011BBBB (0x80 + ((sp2 >> 6) & 0x3f)) + * -> 0b10BBBBBB (0x80 + (sp2 & 0x3f)) + * + * Note that 0x10000 must be subtracted first. The code below + * avoids the sp1, sp2 temporaries which saves around 20 bytes + * of code. + */ + + x -= 0x10000UL; + + out[0] = (duk_uint8_t) (0xed); + out[1] = (duk_uint8_t) (0xa0 + ((x >> 16) & 0x0f)); + out[2] = (duk_uint8_t) (0x80 + ((x >> 10) & 0x3f)); + out[3] = (duk_uint8_t) (0xed); + out[4] = (duk_uint8_t) (0xb0 + ((x >> 6) & 0x0f)); + out[5] = (duk_uint8_t) (0x80 + (x & 0x3f)); + len = 6; + } + + return len; +} + +/* Decode helper. Return zero on error. */ +DUK_INTERNAL duk_small_int_t duk_unicode_decode_xutf8(duk_hthread *thr, const duk_uint8_t **ptr, const duk_uint8_t *ptr_start, const duk_uint8_t *ptr_end, duk_ucodepoint_t *out_cp) { + const duk_uint8_t *p; + duk_uint32_t res; + duk_uint_fast8_t ch; + duk_small_int_t n; + + DUK_UNREF(thr); + + p = *ptr; + if (p < ptr_start || p >= ptr_end) { + goto fail; + } + + /* + * UTF-8 decoder which accepts longer than standard byte sequences. + * This allows full 32-bit code points to be used. + */ + + ch = (duk_uint_fast8_t) (*p++); + if (ch < 0x80) { + /* 0xxx xxxx [7 bits] */ + res = (duk_uint32_t) (ch & 0x7f); + n = 0; + } else if (ch < 0xc0) { + /* 10xx xxxx -> invalid */ + goto fail; + } else if (ch < 0xe0) { + /* 110x xxxx 10xx xxxx [11 bits] */ + res = (duk_uint32_t) (ch & 0x1f); + n = 1; + } else if (ch < 0xf0) { + /* 1110 xxxx 10xx xxxx 10xx xxxx [16 bits] */ + res = (duk_uint32_t) (ch & 0x0f); + n = 2; + } else if (ch < 0xf8) { + /* 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx [21 bits] */ + res = (duk_uint32_t) (ch & 0x07); + n = 3; + } else if (ch < 0xfc) { + /* 1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx [26 bits] */ + res = (duk_uint32_t) (ch & 0x03); + n = 4; + } else if (ch < 0xfe) { + /* 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx [31 bits] */ + res = (duk_uint32_t) (ch & 0x01); + n = 5; + } else if (ch < 0xff) { + /* 1111 1110 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx [36 bits] */ + res = (duk_uint32_t) (0); + n = 6; + } else { + /* 8-byte format could be: + * 1111 1111 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx [41 bits] + * + * However, this format would not have a zero bit following the + * leading one bits and would not allow 0xFF to be used as an + * "invalid xutf-8" marker for internal keys. Further, 8-byte + * encodings (up to 41 bit code points) are not currently needed. + */ + goto fail; + } + + DUK_ASSERT(p >= ptr_start); /* verified at beginning */ + if (p + n > ptr_end) { + /* check pointer at end */ + goto fail; + } + + while (n > 0) { + DUK_ASSERT(p >= ptr_start && p < ptr_end); + ch = (duk_uint_fast8_t) (*p++); +#if 0 + if (ch & 0xc0 != 0x80) { + /* not a continuation byte */ + p--; + *ptr = p; + *out_cp = DUK_UNICODE_CP_REPLACEMENT_CHARACTER; + return 1; + } +#endif + res = (res << 6) + (duk_uint32_t) (ch & 0x3f); + n--; + } + + *ptr = p; + *out_cp = res; + return 1; + + fail: + return 0; +} + +/* used by e.g. duk_regexp_executor.c, string built-ins */ +DUK_INTERNAL duk_ucodepoint_t duk_unicode_decode_xutf8_checked(duk_hthread *thr, const duk_uint8_t **ptr, const duk_uint8_t *ptr_start, const duk_uint8_t *ptr_end) { + duk_ucodepoint_t cp; + + if (duk_unicode_decode_xutf8(thr, ptr, ptr_start, ptr_end, &cp)) { + return cp; + } + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); +} + +/* Compute (extended) utf-8 length without codepoint encoding validation, + * used for string interning. + * + * NOTE: This algorithm is performance critical, more so than string hashing + * in some cases. It is needed when interning a string and needs to scan + * every byte of the string with no skipping. Having an ASCII fast path + * is useful if possible in the algorithm. The current algorithms were + * chosen from several variants, based on x64 gcc -O2 testing. See: + * https://github.com/svaarala/duktape/pull/422 + * + * NOTE: must match tools/dukutil.py:duk_unicode_unvalidated_utf8_length(). + */ + +#if defined(DUK_USE_PREFER_SIZE) +/* Small variant; roughly 150 bytes smaller than the fast variant. */ +DUK_INTERNAL duk_size_t duk_unicode_unvalidated_utf8_length(const duk_uint8_t *data, duk_size_t blen) { + const duk_uint8_t *p; + const duk_uint8_t *p_end; + duk_size_t ncont; + duk_size_t clen; + + p = data; + p_end = data + blen; + ncont = 0; + while (p != p_end) { + duk_uint8_t x; + x = *p++; + if (DUK_UNLIKELY(x >= 0x80 && x <= 0xbf)) { + ncont++; + } + } + + DUK_ASSERT(ncont <= blen); + clen = blen - ncont; + DUK_ASSERT(clen <= blen); + return clen; +} +#else /* DUK_USE_PREFER_SIZE */ +/* This seems like a good overall approach. Fast path for ASCII in 4 byte + * blocks. + */ +DUK_INTERNAL duk_size_t duk_unicode_unvalidated_utf8_length(const duk_uint8_t *data, duk_size_t blen) { + const duk_uint8_t *p; + const duk_uint8_t *p_end; + const duk_uint32_t *p32_end; + const duk_uint32_t *p32; + duk_size_t ncont; + duk_size_t clen; + + ncont = 0; /* number of continuation (non-initial) bytes in [0x80,0xbf] */ + p = data; + p_end = data + blen; + if (blen < 16) { + goto skip_fastpath; + } + + /* Align 'p' to 4; the input data may have arbitrary alignment. + * End of string check not needed because blen >= 16. + */ + while (((duk_size_t) (const void *) p) & 0x03U) { + duk_uint8_t x; + x = *p++; + if (DUK_UNLIKELY(x >= 0x80 && x <= 0xbf)) { + ncont++; + } + } + + /* Full, aligned 4-byte reads. */ + p32_end = (const duk_uint32_t *) (const void *) (p + ((duk_size_t) (p_end - p) & (duk_size_t) (~0x03))); + p32 = (const duk_uint32_t *) (const void *) p; + while (p32 != (const duk_uint32_t *) p32_end) { + duk_uint32_t x; + x = *p32++; + if (DUK_LIKELY((x & 0x80808080UL) == 0)) { + ; /* ASCII fast path */ + } else { + /* Flip highest bit of each byte which changes + * the bit pattern 10xxxxxx into 00xxxxxx which + * allows an easy bit mask test. + */ + x ^= 0x80808080UL; + if (DUK_UNLIKELY(!(x & 0xc0000000UL))) { + ncont++; + } + if (DUK_UNLIKELY(!(x & 0x00c00000UL))) { + ncont++; + } + if (DUK_UNLIKELY(!(x & 0x0000c000UL))) { + ncont++; + } + if (DUK_UNLIKELY(!(x & 0x000000c0UL))) { + ncont++; + } + } + } + p = (const duk_uint8_t *) p32; + /* Fall through to handle the rest. */ + + skip_fastpath: + while (p != p_end) { + duk_uint8_t x; + x = *p++; + if (DUK_UNLIKELY(x >= 0x80 && x <= 0xbf)) { + ncont++; + } + } + + DUK_ASSERT(ncont <= blen); + clen = blen - ncont; + DUK_ASSERT(clen <= blen); + return clen; +} +#endif /* DUK_USE_PREFER_SIZE */ + +/* Check whether a string is UTF-8 compatible or not. */ +DUK_INTERNAL duk_bool_t duk_unicode_is_utf8_compatible(const duk_uint8_t *buf, duk_size_t len) { + duk_size_t i = 0; +#if !defined(DUK_USE_PREFER_SIZE) + duk_size_t len_safe; +#endif + + /* Many practical strings are ASCII only, so use a fast path check + * to check chunks of bytes at once with minimal branch cost. + */ +#if !defined(DUK_USE_PREFER_SIZE) + len_safe = len & ~0x03UL; + for (; i < len_safe; i += 4) { + duk_uint8_t t = buf[i] | buf[i + 1] | buf[i + 2] | buf[i + 3]; + if (DUK_UNLIKELY((t & 0x80U) != 0U)) { + /* At least one byte was outside 0x00-0x7f, break + * out to slow path (and remain there). + * + * XXX: We could also deal with the problem character + * and resume fast path later. + */ + break; + } + } +#endif + + for (; i < len;) { + duk_uint8_t t; + duk_size_t left; + duk_size_t ncont; + duk_uint32_t cp; + duk_uint32_t mincp; + + t = buf[i++]; + if (DUK_LIKELY((t & 0x80U) == 0U)) { + /* Fast path, ASCII. */ + continue; + } + + /* Non-ASCII start byte, slow path. + * + * 10xx xxxx -> continuation byte + * 110x xxxx + 1*CONT -> [0x80, 0x7ff] + * 1110 xxxx + 2*CONT -> [0x800, 0xffff], must reject [0xd800,0xdfff] + * 1111 0xxx + 3*CONT -> [0x10000, 0x10ffff] + */ + left = len - i; + if (t <= 0xdfU) { /* 1101 1111 = 0xdf */ + if (t <= 0xbfU) { /* 1011 1111 = 0xbf */ + return 0; + } + ncont = 1; + mincp = 0x80UL; + cp = t & 0x1fU; + } else if (t <= 0xefU) { /* 1110 1111 = 0xef */ + ncont = 2; + mincp = 0x800UL; + cp = t & 0x0fU; + } else if (t <= 0xf7U) { /* 1111 0111 = 0xf7 */ + ncont = 3; + mincp = 0x10000UL; + cp = t & 0x07U; + } else { + return 0; + } + if (left < ncont) { + return 0; + } + while (ncont > 0U) { + t = buf[i++]; + if ((t & 0xc0U) != 0x80U) { /* 10xx xxxx */ + return 0; + } + cp = (cp << 6) + (t & 0x3fU); + ncont--; + } + if (cp < mincp || cp > 0x10ffffUL || (cp >= 0xd800UL && cp <= 0xdfffUL)) { + return 0; + } + } + + return 1; +} + +/* + * Unicode range matcher + * + * Matches a codepoint against a packed bitstream of character ranges. + * Used for slow path Unicode matching. + */ + +/* Must match tools/extract_chars.py, generate_match_table3(). */ +DUK_LOCAL duk_uint32_t duk__uni_decode_value(duk_bitdecoder_ctx *bd_ctx) { + duk_uint32_t t; + + t = (duk_uint32_t) duk_bd_decode(bd_ctx, 4); + if (t <= 0x0eU) { + return t; + } + t = (duk_uint32_t) duk_bd_decode(bd_ctx, 8); + if (t <= 0xfdU) { + return t + 0x0f; + } + if (t == 0xfeU) { + t = (duk_uint32_t) duk_bd_decode(bd_ctx, 12); + return t + 0x0fU + 0xfeU; + } else { + t = (duk_uint32_t) duk_bd_decode(bd_ctx, 24); + return t + 0x0fU + 0xfeU + 0x1000UL; + } +} + +DUK_LOCAL duk_small_int_t duk__uni_range_match(const duk_uint8_t *unitab, duk_size_t unilen, duk_codepoint_t cp) { + duk_bitdecoder_ctx bd_ctx; + duk_codepoint_t prev_re; + + duk_memzero(&bd_ctx, sizeof(bd_ctx)); + bd_ctx.data = (const duk_uint8_t *) unitab; + bd_ctx.length = (duk_size_t) unilen; + + prev_re = 0; + for (;;) { + duk_codepoint_t r1, r2; + r1 = (duk_codepoint_t) duk__uni_decode_value(&bd_ctx); + if (r1 == 0) { + break; + } + r2 = (duk_codepoint_t) duk__uni_decode_value(&bd_ctx); + + r1 = prev_re + r1; + r2 = r1 + r2; + prev_re = r2; + + /* [r1,r2] is the range */ + + DUK_DDD(DUK_DDDPRINT("duk__uni_range_match: cp=%06lx range=[0x%06lx,0x%06lx]", + (unsigned long) cp, (unsigned long) r1, (unsigned long) r2)); + if (cp >= r1 && cp <= r2) { + return 1; + } + } + + return 0; +} + +/* + * "WhiteSpace" production check. + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_is_whitespace(duk_codepoint_t cp) { + /* + * E5 Section 7.2 specifies six characters specifically as + * white space: + * + * 0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; + * 000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; + * 000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; + * 0020;SPACE;Zs;0;WS;;;;;N;;;;; + * 00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; + * FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; + * + * It also specifies any Unicode category 'Zs' characters as white + * space. These can be extracted with the "tools/extract_chars.py" script. + * Current result: + * + * RAW OUTPUT: + * =========== + * 0020;SPACE;Zs;0;WS;;;;;N;;;;; + * 00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; + * 1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; + * 180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; + * 2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; + * 2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; + * 2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 202F;NARROW NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;;;;; + * 205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; + * 3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; + * + * RANGES: + * ======= + * 0x0020 + * 0x00a0 + * 0x1680 + * 0x180e + * 0x2000 ... 0x200a + * 0x202f + * 0x205f + * 0x3000 + * + * A manual decoder (below) is probably most compact for this. + */ + + duk_uint_fast8_t lo; + duk_uint_fast32_t hi; + + /* cp == -1 (EOF) never matches and causes return value 0 */ + + lo = (duk_uint_fast8_t) (cp & 0xff); + hi = (duk_uint_fast32_t) (cp >> 8); /* does not fit into an uchar */ + + if (hi == 0x0000UL) { + if (lo == 0x09U || lo == 0x0bU || lo == 0x0cU || + lo == 0x20U || lo == 0xa0U) { + return 1; + } + } else if (hi == 0x0020UL) { + if (lo <= 0x0aU || lo == 0x2fU || lo == 0x5fU) { + return 1; + } + } else if (cp == 0x1680L || cp == 0x180eL || cp == 0x3000L || + cp == 0xfeffL) { + return 1; + } + + return 0; +} + +/* + * "LineTerminator" production check. + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_is_line_terminator(duk_codepoint_t cp) { + /* + * E5 Section 7.3 + * + * A LineTerminatorSequence essentially merges sequences + * into a single line terminator. This must be handled by the caller. + */ + + if (cp == 0x000aL || cp == 0x000dL || cp == 0x2028L || + cp == 0x2029L) { + return 1; + } + + return 0; +} + +/* + * "IdentifierStart" production check. + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_is_identifier_start(duk_codepoint_t cp) { + /* + * E5 Section 7.6: + * + * IdentifierStart: + * UnicodeLetter + * $ + * _ + * \ UnicodeEscapeSequence + * + * IdentifierStart production has one multi-character production: + * + * \ UnicodeEscapeSequence + * + * The '\' character is -not- matched by this function. Rather, the caller + * should decode the escape and then call this function to check whether the + * decoded character is acceptable (see discussion in E5 Section 7.6). + * + * The "UnicodeLetter" alternative of the production allows letters + * from various Unicode categories. These can be extracted with the + * "tools/extract_chars.py" script. + * + * Because the result has hundreds of Unicode codepoint ranges, matching + * for any values >= 0x80 are done using a very slow range-by-range scan + * and a packed range format. + * + * The ASCII portion (codepoints 0x00 ... 0x7f) is fast-pathed below because + * it matters the most. The ASCII related ranges of IdentifierStart are: + * + * 0x0041 ... 0x005a ['A' ... 'Z'] + * 0x0061 ... 0x007a ['a' ... 'z'] + * 0x0024 ['$'] + * 0x005f ['_'] + */ + + /* ASCII (and EOF) fast path -- quick accept and reject */ + if (cp <= 0x7fL) { +#if defined(DUK_USE_IDCHAR_FASTPATH) + return (cp >= 0) && (duk_is_idchar_tab[cp] > 0); +#else + if ((cp >= 'a' && cp <= 'z') || + (cp >= 'A' && cp <= 'Z') || + cp == '_' || cp == '$') { + return 1; + } + return 0; +#endif + } + + /* Non-ASCII slow path (range-by-range linear comparison), very slow */ + +#if defined(DUK_USE_SOURCE_NONBMP) + if (duk__uni_range_match(duk_unicode_ids_noa, + (duk_size_t) sizeof(duk_unicode_ids_noa), + (duk_codepoint_t) cp)) { + return 1; + } + return 0; +#else + if (cp < 0x10000L) { + if (duk__uni_range_match(duk_unicode_ids_noabmp, + sizeof(duk_unicode_ids_noabmp), + (duk_codepoint_t) cp)) { + return 1; + } + return 0; + } else { + /* without explicit non-BMP support, assume non-BMP characters + * are always accepted as identifier characters. + */ + return 1; + } +#endif +} + +/* + * "IdentifierPart" production check. + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_is_identifier_part(duk_codepoint_t cp) { + /* + * E5 Section 7.6: + * + * IdentifierPart: + * IdentifierStart + * UnicodeCombiningMark + * UnicodeDigit + * UnicodeConnectorPunctuation + * [U+200C] + * [U+200D] + * + * IdentifierPart production has one multi-character production + * as part of its IdentifierStart alternative. The '\' character + * of an escape sequence is not matched here, see discussion in + * duk_unicode_is_identifier_start(). + * + * To match non-ASCII characters (codepoints >= 0x80), a very slow + * linear range-by-range scan is used. The codepoint is first compared + * to the IdentifierStart ranges, and if it doesn't match, then to a + * set consisting of code points in IdentifierPart but not in + * IdentifierStart. This is done to keep the unicode range data small, + * at the expense of speed. + * + * The ASCII fast path consists of: + * + * 0x0030 ... 0x0039 ['0' ... '9', UnicodeDigit] + * 0x0041 ... 0x005a ['A' ... 'Z', IdentifierStart] + * 0x0061 ... 0x007a ['a' ... 'z', IdentifierStart] + * 0x0024 ['$', IdentifierStart] + * 0x005f ['_', IdentifierStart and + * UnicodeConnectorPunctuation] + * + * UnicodeCombiningMark has no code points <= 0x7f. + * + * The matching code reuses the "identifier start" tables, and then + * consults a separate range set for characters in "identifier part" + * but not in "identifier start". These can be extracted with the + * "tools/extract_chars.py" script. + * + * UnicodeCombiningMark -> categories Mn, Mc + * UnicodeDigit -> categories Nd + * UnicodeConnectorPunctuation -> categories Pc + */ + + /* ASCII (and EOF) fast path -- quick accept and reject */ + if (cp <= 0x7fL) { +#if defined(DUK_USE_IDCHAR_FASTPATH) + return (cp >= 0) && (duk_is_idchar_tab[cp] != 0); +#else + if ((cp >= 'a' && cp <= 'z') || + (cp >= 'A' && cp <= 'Z') || + (cp >= '0' && cp <= '9') || + cp == '_' || cp == '$') { + return 1; + } + return 0; +#endif + } + + /* Non-ASCII slow path (range-by-range linear comparison), very slow */ + +#if defined(DUK_USE_SOURCE_NONBMP) + if (duk__uni_range_match(duk_unicode_ids_noa, + sizeof(duk_unicode_ids_noa), + (duk_codepoint_t) cp) || + duk__uni_range_match(duk_unicode_idp_m_ids_noa, + sizeof(duk_unicode_idp_m_ids_noa), + (duk_codepoint_t) cp)) { + return 1; + } + return 0; +#else + if (cp < 0x10000L) { + if (duk__uni_range_match(duk_unicode_ids_noabmp, + sizeof(duk_unicode_ids_noabmp), + (duk_codepoint_t) cp) || + duk__uni_range_match(duk_unicode_idp_m_ids_noabmp, + sizeof(duk_unicode_idp_m_ids_noabmp), + (duk_codepoint_t) cp)) { + return 1; + } + return 0; + } else { + /* without explicit non-BMP support, assume non-BMP characters + * are always accepted as identifier characters. + */ + return 1; + } +#endif +} + +/* + * Unicode letter check. + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_is_letter(duk_codepoint_t cp) { + /* + * Unicode letter is now taken to be the categories: + * + * Lu, Ll, Lt, Lm, Lo + * + * (Not sure if this is exactly correct.) + * + * The ASCII fast path consists of: + * + * 0x0041 ... 0x005a ['A' ... 'Z'] + * 0x0061 ... 0x007a ['a' ... 'z'] + */ + + /* ASCII (and EOF) fast path -- quick accept and reject */ + if (cp <= 0x7fL) { + if ((cp >= 'a' && cp <= 'z') || + (cp >= 'A' && cp <= 'Z')) { + return 1; + } + return 0; + } + + /* Non-ASCII slow path (range-by-range linear comparison), very slow */ + +#if defined(DUK_USE_SOURCE_NONBMP) + if (duk__uni_range_match(duk_unicode_ids_noa, + sizeof(duk_unicode_ids_noa), + (duk_codepoint_t) cp) && + !duk__uni_range_match(duk_unicode_ids_m_let_noa, + sizeof(duk_unicode_ids_m_let_noa), + (duk_codepoint_t) cp)) { + return 1; + } + return 0; +#else + if (cp < 0x10000L) { + if (duk__uni_range_match(duk_unicode_ids_noabmp, + sizeof(duk_unicode_ids_noabmp), + (duk_codepoint_t) cp) && + !duk__uni_range_match(duk_unicode_ids_m_let_noabmp, + sizeof(duk_unicode_ids_m_let_noabmp), + (duk_codepoint_t) cp)) { + return 1; + } + return 0; + } else { + /* without explicit non-BMP support, assume non-BMP characters + * are always accepted as letters. + */ + return 1; + } +#endif +} + +/* + * Complex case conversion helper which decodes a bit-packed conversion + * control stream generated by tools/extract_caseconv.py. The conversion + * is very slow because it runs through the conversion data in a linear + * fashion to save space (which is why ASCII characters have a special + * fast path before arriving here). + * + * The particular bit counts etc have been determined experimentally to + * be small but still sufficient, and must match the Python script + * (tools/extract_caseconv.py). + * + * The return value is the case converted codepoint or -1 if the conversion + * results in multiple characters (this is useful for regexp Canonicalization + * operation). If 'buf' is not NULL, the result codepoint(s) are also + * appended to the hbuffer. + * + * Context and locale specific rules must be checked before consulting + * this function. + */ + +DUK_LOCAL +duk_codepoint_t duk__slow_case_conversion(duk_hthread *thr, + duk_bufwriter_ctx *bw, + duk_codepoint_t cp, + duk_bitdecoder_ctx *bd_ctx) { + duk_small_int_t skip = 0; + duk_small_int_t n; + duk_small_int_t t; + duk_small_int_t count; + duk_codepoint_t tmp_cp; + duk_codepoint_t start_i; + duk_codepoint_t start_o; + + DUK_ASSERT(bd_ctx != NULL); + DUK_UNREF(thr); + + DUK_DDD(DUK_DDDPRINT("slow case conversion for codepoint: %ld", (long) cp)); + + /* range conversion with a "skip" */ + DUK_DDD(DUK_DDDPRINT("checking ranges")); + for (;;) { + skip++; + n = (duk_small_int_t) duk_bd_decode(bd_ctx, 6); + if (n == 0x3f) { + /* end marker */ + break; + } + DUK_DDD(DUK_DDDPRINT("skip=%ld, n=%ld", (long) skip, (long) n)); + + while (n--) { + start_i = (duk_codepoint_t) duk_bd_decode(bd_ctx, 16); + start_o = (duk_codepoint_t) duk_bd_decode(bd_ctx, 16); + count = (duk_small_int_t) duk_bd_decode(bd_ctx, 7); + DUK_DDD(DUK_DDDPRINT("range: start_i=%ld, start_o=%ld, count=%ld, skip=%ld", + (long) start_i, (long) start_o, (long) count, (long) skip)); + + if (cp >= start_i) { + tmp_cp = cp - start_i; /* always >= 0 */ + if (tmp_cp < (duk_codepoint_t) count * (duk_codepoint_t) skip && + (tmp_cp % (duk_codepoint_t) skip) == 0) { + DUK_DDD(DUK_DDDPRINT("range matches input codepoint")); + cp = start_o + tmp_cp; + goto single; + } + } + } + } + + /* 1:1 conversion */ + n = (duk_small_int_t) duk_bd_decode(bd_ctx, 7); + DUK_DDD(DUK_DDDPRINT("checking 1:1 conversions (count %ld)", (long) n)); + while (n--) { + start_i = (duk_codepoint_t) duk_bd_decode(bd_ctx, 16); + start_o = (duk_codepoint_t) duk_bd_decode(bd_ctx, 16); + DUK_DDD(DUK_DDDPRINT("1:1 conversion %ld -> %ld", (long) start_i, (long) start_o)); + if (cp == start_i) { + DUK_DDD(DUK_DDDPRINT("1:1 matches input codepoint")); + cp = start_o; + goto single; + } + } + + /* complex, multicharacter conversion */ + n = (duk_small_int_t) duk_bd_decode(bd_ctx, 7); + DUK_DDD(DUK_DDDPRINT("checking 1:n conversions (count %ld)", (long) n)); + while (n--) { + start_i = (duk_codepoint_t) duk_bd_decode(bd_ctx, 16); + t = (duk_small_int_t) duk_bd_decode(bd_ctx, 2); + DUK_DDD(DUK_DDDPRINT("1:n conversion %ld -> %ld chars", (long) start_i, (long) t)); + if (cp == start_i) { + DUK_DDD(DUK_DDDPRINT("1:n matches input codepoint")); + if (bw != NULL) { + while (t--) { + tmp_cp = (duk_codepoint_t) duk_bd_decode(bd_ctx, 16); + DUK_BW_WRITE_RAW_XUTF8(thr, bw, (duk_ucodepoint_t) tmp_cp); + } + } + return -1; + } else { + while (t--) { + (void) duk_bd_decode(bd_ctx, 16); + } + } + } + + /* default: no change */ + DUK_DDD(DUK_DDDPRINT("no rule matches, output is same as input")); + /* fall through */ + + single: + if (bw != NULL) { + DUK_BW_WRITE_RAW_XUTF8(thr, bw, (duk_ucodepoint_t) cp); + } + return cp; +} + +/* + * Case conversion helper, with context/local sensitivity. + * For proper case conversion, one needs to know the character + * and the preceding and following characters, as well as + * locale/language. + */ + +/* XXX: add 'language' argument when locale/language sensitive rule + * support added. + */ +DUK_LOCAL +duk_codepoint_t duk__case_transform_helper(duk_hthread *thr, + duk_bufwriter_ctx *bw, + duk_codepoint_t cp, + duk_codepoint_t prev, + duk_codepoint_t next, + duk_bool_t uppercase) { + duk_bitdecoder_ctx bd_ctx; + + /* fast path for ASCII */ + if (cp < 0x80L) { + /* XXX: there are language sensitive rules for the ASCII range. + * If/when language/locale support is implemented, they need to + * be implemented here for the fast path. There are no context + * sensitive rules for ASCII range. + */ + + if (uppercase) { + if (cp >= 'a' && cp <= 'z') { + cp = cp - 'a' + 'A'; + } + } else { + if (cp >= 'A' && cp <= 'Z') { + cp = cp - 'A' + 'a'; + } + } + + if (bw != NULL) { + DUK_BW_WRITE_RAW_U8(thr, bw, (duk_uint8_t) cp); + } + return cp; + } + + /* context and locale specific rules which cannot currently be represented + * in the caseconv bitstream: hardcoded rules in C + */ + if (uppercase) { + /* XXX: turkish / azeri */ + } else { + /* + * Final sigma context specific rule. This is a rather tricky + * rule and this handling is probably not 100% correct now. + * The rule is not locale/language specific so it is supported. + */ + + if (cp == 0x03a3L && /* U+03A3 = GREEK CAPITAL LETTER SIGMA */ + duk_unicode_is_letter(prev) && /* prev exists and is not a letter */ + !duk_unicode_is_letter(next)) { /* next does not exist or next is not a letter */ + /* Capital sigma occurred at "end of word", lowercase to + * U+03C2 = GREEK SMALL LETTER FINAL SIGMA. Otherwise + * fall through and let the normal rules lowercase it to + * U+03C3 = GREEK SMALL LETTER SIGMA. + */ + cp = 0x03c2L; + goto singlechar; + } + + /* XXX: lithuanian not implemented */ + /* XXX: lithuanian, explicit dot rules */ + /* XXX: turkish / azeri, lowercase rules */ + } + + /* 1:1 or special conversions, but not locale/context specific: script generated rules */ + duk_memzero(&bd_ctx, sizeof(bd_ctx)); + if (uppercase) { + bd_ctx.data = (const duk_uint8_t *) duk_unicode_caseconv_uc; + bd_ctx.length = (duk_size_t) sizeof(duk_unicode_caseconv_uc); + } else { + bd_ctx.data = (const duk_uint8_t *) duk_unicode_caseconv_lc; + bd_ctx.length = (duk_size_t) sizeof(duk_unicode_caseconv_lc); + } + return duk__slow_case_conversion(thr, bw, cp, &bd_ctx); + + singlechar: + if (bw != NULL) { + DUK_BW_WRITE_RAW_XUTF8(thr, bw, (duk_ucodepoint_t) cp); + } + return cp; + + /* unused now, not needed until Turkish/Azeri */ +#if 0 + nochar: + return -1; +#endif +} + +/* + * Replace valstack top with case converted version. + */ + +DUK_INTERNAL void duk_unicode_case_convert_string(duk_hthread *thr, duk_bool_t uppercase) { + duk_hstring *h_input; + duk_bufwriter_ctx bw_alloc; + duk_bufwriter_ctx *bw; + const duk_uint8_t *p, *p_start, *p_end; + duk_codepoint_t prev, curr, next; + + h_input = duk_require_hstring(thr, -1); /* Accept symbols. */ + DUK_ASSERT(h_input != NULL); + + bw = &bw_alloc; + DUK_BW_INIT_PUSHBUF(thr, bw, DUK_HSTRING_GET_BYTELEN(h_input)); + + /* [ ... input buffer ] */ + + p_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_input); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_input); + p = p_start; + + prev = -1; DUK_UNREF(prev); + curr = -1; + next = -1; + for (;;) { + prev = curr; + curr = next; + next = -1; + if (p < p_end) { + next = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(thr, &p, p_start, p_end); + } else { + /* end of input and last char has been processed */ + if (curr < 0) { + break; + } + } + + /* on first round, skip */ + if (curr >= 0) { + /* XXX: could add a fast path to process chunks of input codepoints, + * but relative benefit would be quite small. + */ + + /* Ensure space for maximum multi-character result; estimate is overkill. */ + DUK_BW_ENSURE(thr, bw, 8 * DUK_UNICODE_MAX_XUTF8_LENGTH); + + duk__case_transform_helper(thr, + bw, + (duk_codepoint_t) curr, + prev, + next, + uppercase); + } + } + + DUK_BW_COMPACT(thr, bw); + (void) duk_buffer_to_string(thr, -1); /* Safe, output is encoded. */ + /* invalidates h_buf pointer */ + duk_remove_m2(thr); +} + +#if defined(DUK_USE_REGEXP_SUPPORT) + +/* + * Canonicalize() abstract operation needed for canonicalization of individual + * codepoints during regexp compilation and execution, see E5 Section 15.10.2.8. + * Note that codepoints are canonicalized one character at a time, so no context + * specific rules can apply. Locale specific rules can apply, though. + */ + +DUK_INTERNAL duk_codepoint_t duk_unicode_re_canonicalize_char(duk_hthread *thr, duk_codepoint_t cp) { +#if defined(DUK_USE_REGEXP_CANON_WORKAROUND) + /* Fast canonicalization lookup at the cost of 128kB footprint. */ + DUK_ASSERT(cp >= 0); + DUK_UNREF(thr); + if (DUK_LIKELY(cp < 0x10000L)) { + return (duk_codepoint_t) duk_unicode_re_canon_lookup[cp]; + } + return cp; +#else /* DUK_USE_REGEXP_CANON_WORKAROUND */ + duk_codepoint_t y; + + y = duk__case_transform_helper(thr, + NULL, /* NULL is allowed, no output */ + cp, /* curr char */ + -1, /* prev char */ + -1, /* next char */ + 1); /* uppercase */ + + if ((y < 0) || (cp >= 0x80 && y < 0x80)) { + /* multiple codepoint conversion or non-ASCII mapped to ASCII + * --> leave as is. + */ + return cp; + } + + return y; +#endif /* DUK_USE_REGEXP_CANON_WORKAROUND */ +} + +/* + * E5 Section 15.10.2.6 "IsWordChar" abstract operation. Assume + * x < 0 for characters read outside the string. + */ + +DUK_INTERNAL duk_small_int_t duk_unicode_re_is_wordchar(duk_codepoint_t x) { + /* + * Note: the description in E5 Section 15.10.2.6 has a typo, it + * contains 'A' twice and lacks 'a'; the intent is [0-9a-zA-Z_]. + */ + if ((x >= '0' && x <= '9') || + (x >= 'a' && x <= 'z') || + (x >= 'A' && x <= 'Z') || + (x == '_')) { + return 1; + } + return 0; +} + +/* + * Regexp range tables + */ + +/* exposed because lexer needs these too */ +DUK_INTERNAL const duk_uint16_t duk_unicode_re_ranges_digit[2] = { + (duk_uint16_t) 0x0030UL, (duk_uint16_t) 0x0039UL, +}; +DUK_INTERNAL const duk_uint16_t duk_unicode_re_ranges_white[22] = { + (duk_uint16_t) 0x0009UL, (duk_uint16_t) 0x000DUL, + (duk_uint16_t) 0x0020UL, (duk_uint16_t) 0x0020UL, + (duk_uint16_t) 0x00A0UL, (duk_uint16_t) 0x00A0UL, + (duk_uint16_t) 0x1680UL, (duk_uint16_t) 0x1680UL, + (duk_uint16_t) 0x180EUL, (duk_uint16_t) 0x180EUL, + (duk_uint16_t) 0x2000UL, (duk_uint16_t) 0x200AUL, + (duk_uint16_t) 0x2028UL, (duk_uint16_t) 0x2029UL, + (duk_uint16_t) 0x202FUL, (duk_uint16_t) 0x202FUL, + (duk_uint16_t) 0x205FUL, (duk_uint16_t) 0x205FUL, + (duk_uint16_t) 0x3000UL, (duk_uint16_t) 0x3000UL, + (duk_uint16_t) 0xFEFFUL, (duk_uint16_t) 0xFEFFUL, +}; +DUK_INTERNAL const duk_uint16_t duk_unicode_re_ranges_wordchar[8] = { + (duk_uint16_t) 0x0030UL, (duk_uint16_t) 0x0039UL, + (duk_uint16_t) 0x0041UL, (duk_uint16_t) 0x005AUL, + (duk_uint16_t) 0x005FUL, (duk_uint16_t) 0x005FUL, + (duk_uint16_t) 0x0061UL, (duk_uint16_t) 0x007AUL, +}; +DUK_INTERNAL const duk_uint16_t duk_unicode_re_ranges_not_digit[4] = { + (duk_uint16_t) 0x0000UL, (duk_uint16_t) 0x002FUL, + (duk_uint16_t) 0x003AUL, (duk_uint16_t) 0xFFFFUL, +}; +DUK_INTERNAL const duk_uint16_t duk_unicode_re_ranges_not_white[24] = { + (duk_uint16_t) 0x0000UL, (duk_uint16_t) 0x0008UL, + (duk_uint16_t) 0x000EUL, (duk_uint16_t) 0x001FUL, + (duk_uint16_t) 0x0021UL, (duk_uint16_t) 0x009FUL, + (duk_uint16_t) 0x00A1UL, (duk_uint16_t) 0x167FUL, + (duk_uint16_t) 0x1681UL, (duk_uint16_t) 0x180DUL, + (duk_uint16_t) 0x180FUL, (duk_uint16_t) 0x1FFFUL, + (duk_uint16_t) 0x200BUL, (duk_uint16_t) 0x2027UL, + (duk_uint16_t) 0x202AUL, (duk_uint16_t) 0x202EUL, + (duk_uint16_t) 0x2030UL, (duk_uint16_t) 0x205EUL, + (duk_uint16_t) 0x2060UL, (duk_uint16_t) 0x2FFFUL, + (duk_uint16_t) 0x3001UL, (duk_uint16_t) 0xFEFEUL, + (duk_uint16_t) 0xFF00UL, (duk_uint16_t) 0xFFFFUL, +}; +DUK_INTERNAL const duk_uint16_t duk_unicode_re_ranges_not_wordchar[10] = { + (duk_uint16_t) 0x0000UL, (duk_uint16_t) 0x002FUL, + (duk_uint16_t) 0x003AUL, (duk_uint16_t) 0x0040UL, + (duk_uint16_t) 0x005BUL, (duk_uint16_t) 0x005EUL, + (duk_uint16_t) 0x0060UL, (duk_uint16_t) 0x0060UL, + (duk_uint16_t) 0x007BUL, (duk_uint16_t) 0xFFFFUL, +}; + +#endif /* DUK_USE_REGEXP_SUPPORT */ +#line 1 "duk_util_memrw.c" +/* + * Macro support functions for reading/writing raw data. + * + * These are done using memcpy to ensure they're valid even for unaligned + * reads/writes on platforms where alignment counts. On x86 at least gcc + * is able to compile these into a bswap+mov. "Always inline" is used to + * ensure these macros compile to minimal code. + */ + +/* #include duk_internal.h -> already included */ + +union duk__u16_union { + duk_uint8_t b[2]; + duk_uint16_t x; +}; +typedef union duk__u16_union duk__u16_union; + +union duk__u32_union { + duk_uint8_t b[4]; + duk_uint32_t x; +}; +typedef union duk__u32_union duk__u32_union; + +#if defined(DUK_USE_64BIT_OPS) +union duk__u64_union { + duk_uint8_t b[8]; + duk_uint64_t x; +}; +typedef union duk__u64_union duk__u64_union; +#endif + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_uint16_t duk_raw_read_u16_be(const duk_uint8_t *p) { + duk__u16_union u; + duk_memcpy((void *) u.b, (const void *) p, (size_t) 2); + u.x = DUK_NTOH16(u.x); + return u.x; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_uint32_t duk_raw_read_u32_be(const duk_uint8_t *p) { + duk__u32_union u; + duk_memcpy((void *) u.b, (const void *) p, (size_t) 4); + u.x = DUK_NTOH32(u.x); + return u.x; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_float_t duk_raw_read_float_be(const duk_uint8_t *p) { + duk_float_union fu; + duk_memcpy((void *) fu.uc, (const void *) p, (size_t) 4); + duk_fltunion_big_to_host(&fu); + return fu.f; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_double_t duk_raw_read_double_be(const duk_uint8_t *p) { + duk_double_union du; + duk_memcpy((void *) du.uc, (const void *) p, (size_t) 8); + duk_dblunion_big_to_host(&du); + return du.d; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_uint16_t duk_raw_readinc_u16_be(const duk_uint8_t **p) { + duk_uint16_t res = duk_raw_read_u16_be(*p); + *p += 2; + return res; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_uint32_t duk_raw_readinc_u32_be(const duk_uint8_t **p) { + duk_uint32_t res = duk_raw_read_u32_be(*p); + *p += 4; + return res; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_float_t duk_raw_readinc_float_be(const duk_uint8_t **p) { + duk_float_t res = duk_raw_read_float_be(*p); + *p += 4; + return res; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_double_t duk_raw_readinc_double_be(const duk_uint8_t **p) { + duk_double_t res = duk_raw_read_double_be(*p); + *p += 8; + return res; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_write_u16_be(duk_uint8_t *p, duk_uint16_t val) { + duk__u16_union u; + u.x = DUK_HTON16(val); + duk_memcpy((void *) p, (const void *) u.b, (size_t) 2); +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_write_u32_be(duk_uint8_t *p, duk_uint32_t val) { + duk__u32_union u; + u.x = DUK_HTON32(val); + duk_memcpy((void *) p, (const void *) u.b, (size_t) 4); +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_write_float_be(duk_uint8_t *p, duk_float_t val) { + duk_float_union fu; + fu.f = val; + duk_fltunion_host_to_big(&fu); + duk_memcpy((void *) p, (const void *) fu.uc, (size_t) 4); +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_write_double_be(duk_uint8_t *p, duk_double_t val) { + duk_double_union du; + du.d = val; + duk_dblunion_host_to_big(&du); + duk_memcpy((void *) p, (const void *) du.uc, (size_t) 8); +} + +DUK_INTERNAL duk_small_int_t duk_raw_write_xutf8(duk_uint8_t *p, duk_ucodepoint_t val) { + duk_small_int_t len = duk_unicode_encode_xutf8(val, p); + return len; +} + +DUK_INTERNAL duk_small_int_t duk_raw_write_cesu8(duk_uint8_t *p, duk_ucodepoint_t val) { + duk_small_int_t len = duk_unicode_encode_cesu8(val, p); + return len; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_writeinc_u16_be(duk_uint8_t **p, duk_uint16_t val) { + duk_raw_write_u16_be(*p, val); + *p += 2; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_writeinc_u32_be(duk_uint8_t **p, duk_uint32_t val) { + duk_raw_write_u32_be(*p, val); + *p += 4; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_writeinc_float_be(duk_uint8_t **p, duk_float_t val) { + duk_raw_write_float_be(*p, val); + *p += 4; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_raw_writeinc_double_be(duk_uint8_t **p, duk_double_t val) { + duk_raw_write_double_be(*p, val); + *p += 8; +} + +DUK_INTERNAL void duk_raw_writeinc_xutf8(duk_uint8_t **p, duk_ucodepoint_t val) { + duk_small_int_t len = duk_unicode_encode_xutf8(val, *p); + *p += len; +} + +DUK_INTERNAL void duk_raw_writeinc_cesu8(duk_uint8_t **p, duk_ucodepoint_t val) { + duk_small_int_t len = duk_unicode_encode_cesu8(val, *p); + *p += len; +} +#line 1 "duk_util_misc.c" +/* + * Misc util stuff. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Lowercase digits for radix values 2 to 36. Also doubles as lowercase + * hex nybble table. + */ + +DUK_INTERNAL const duk_uint8_t duk_lc_digits[36] = { + DUK_ASC_0, DUK_ASC_1, DUK_ASC_2, DUK_ASC_3, + DUK_ASC_4, DUK_ASC_5, DUK_ASC_6, DUK_ASC_7, + DUK_ASC_8, DUK_ASC_9, DUK_ASC_LC_A, DUK_ASC_LC_B, + DUK_ASC_LC_C, DUK_ASC_LC_D, DUK_ASC_LC_E, DUK_ASC_LC_F, + DUK_ASC_LC_G, DUK_ASC_LC_H, DUK_ASC_LC_I, DUK_ASC_LC_J, + DUK_ASC_LC_K, DUK_ASC_LC_L, DUK_ASC_LC_M, DUK_ASC_LC_N, + DUK_ASC_LC_O, DUK_ASC_LC_P, DUK_ASC_LC_Q, DUK_ASC_LC_R, + DUK_ASC_LC_S, DUK_ASC_LC_T, DUK_ASC_LC_U, DUK_ASC_LC_V, + DUK_ASC_LC_W, DUK_ASC_LC_X, DUK_ASC_LC_Y, DUK_ASC_LC_Z +}; + +DUK_INTERNAL const duk_uint8_t duk_uc_nybbles[16] = { + DUK_ASC_0, DUK_ASC_1, DUK_ASC_2, DUK_ASC_3, + DUK_ASC_4, DUK_ASC_5, DUK_ASC_6, DUK_ASC_7, + DUK_ASC_8, DUK_ASC_9, DUK_ASC_UC_A, DUK_ASC_UC_B, + DUK_ASC_UC_C, DUK_ASC_UC_D, DUK_ASC_UC_E, DUK_ASC_UC_F +}; + +/* + * Table for hex decoding ASCII hex digits + */ + +DUK_INTERNAL const duk_int8_t duk_hex_dectab[256] = { + /* -1 if invalid */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x00-0x0f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10-0x1f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x20-0x2f */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, /* 0x30-0x3f */ + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x40-0x4f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x50-0x5f */ + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x60-0x6f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x7f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x8f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x90-0x9f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa0-0xaf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb0-0xbf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc0-0xcf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd0-0xdf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe0-0xef */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 /* 0xf0-0xff */ +}; + +#if defined(DUK_USE_HEX_FASTPATH) +/* Preshifted << 4. Must use 16-bit entry to allow negative value signaling. */ +DUK_INTERNAL const duk_int16_t duk_hex_dectab_shift4[256] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x00-0x0f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10-0x1f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x20-0x2f */ + 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, -1, -1, -1, -1, -1, -1, /* 0x30-0x3f */ + -1, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x40-0x4f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x50-0x5f */ + -1, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x60-0x6f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x7f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x8f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x90-0x9f */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa0-0xaf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb0-0xbf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc0-0xcf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd0-0xdf */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe0-0xef */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 /* 0xf0-0xff */ +}; +#endif + +/* + * Table for hex encoding bytes + */ + +#if defined(DUK_USE_HEX_FASTPATH) +/* Lookup to encode one byte directly into 2 characters: + * + * def genhextab(bswap): + * for i in xrange(256): + * t = chr(i).encode('hex') + * if bswap: + * t = t[1] + t[0] + * print('0x' + t.encode('hex') + 'U') + * print('big endian'); genhextab(False) + * print('little endian'); genhextab(True) +*/ +DUK_INTERNAL const duk_uint16_t duk_hex_enctab[256] = { +#if defined(DUK_USE_INTEGER_BE) + 0x3030U, 0x3031U, 0x3032U, 0x3033U, 0x3034U, 0x3035U, 0x3036U, 0x3037U, + 0x3038U, 0x3039U, 0x3061U, 0x3062U, 0x3063U, 0x3064U, 0x3065U, 0x3066U, + 0x3130U, 0x3131U, 0x3132U, 0x3133U, 0x3134U, 0x3135U, 0x3136U, 0x3137U, + 0x3138U, 0x3139U, 0x3161U, 0x3162U, 0x3163U, 0x3164U, 0x3165U, 0x3166U, + 0x3230U, 0x3231U, 0x3232U, 0x3233U, 0x3234U, 0x3235U, 0x3236U, 0x3237U, + 0x3238U, 0x3239U, 0x3261U, 0x3262U, 0x3263U, 0x3264U, 0x3265U, 0x3266U, + 0x3330U, 0x3331U, 0x3332U, 0x3333U, 0x3334U, 0x3335U, 0x3336U, 0x3337U, + 0x3338U, 0x3339U, 0x3361U, 0x3362U, 0x3363U, 0x3364U, 0x3365U, 0x3366U, + 0x3430U, 0x3431U, 0x3432U, 0x3433U, 0x3434U, 0x3435U, 0x3436U, 0x3437U, + 0x3438U, 0x3439U, 0x3461U, 0x3462U, 0x3463U, 0x3464U, 0x3465U, 0x3466U, + 0x3530U, 0x3531U, 0x3532U, 0x3533U, 0x3534U, 0x3535U, 0x3536U, 0x3537U, + 0x3538U, 0x3539U, 0x3561U, 0x3562U, 0x3563U, 0x3564U, 0x3565U, 0x3566U, + 0x3630U, 0x3631U, 0x3632U, 0x3633U, 0x3634U, 0x3635U, 0x3636U, 0x3637U, + 0x3638U, 0x3639U, 0x3661U, 0x3662U, 0x3663U, 0x3664U, 0x3665U, 0x3666U, + 0x3730U, 0x3731U, 0x3732U, 0x3733U, 0x3734U, 0x3735U, 0x3736U, 0x3737U, + 0x3738U, 0x3739U, 0x3761U, 0x3762U, 0x3763U, 0x3764U, 0x3765U, 0x3766U, + 0x3830U, 0x3831U, 0x3832U, 0x3833U, 0x3834U, 0x3835U, 0x3836U, 0x3837U, + 0x3838U, 0x3839U, 0x3861U, 0x3862U, 0x3863U, 0x3864U, 0x3865U, 0x3866U, + 0x3930U, 0x3931U, 0x3932U, 0x3933U, 0x3934U, 0x3935U, 0x3936U, 0x3937U, + 0x3938U, 0x3939U, 0x3961U, 0x3962U, 0x3963U, 0x3964U, 0x3965U, 0x3966U, + 0x6130U, 0x6131U, 0x6132U, 0x6133U, 0x6134U, 0x6135U, 0x6136U, 0x6137U, + 0x6138U, 0x6139U, 0x6161U, 0x6162U, 0x6163U, 0x6164U, 0x6165U, 0x6166U, + 0x6230U, 0x6231U, 0x6232U, 0x6233U, 0x6234U, 0x6235U, 0x6236U, 0x6237U, + 0x6238U, 0x6239U, 0x6261U, 0x6262U, 0x6263U, 0x6264U, 0x6265U, 0x6266U, + 0x6330U, 0x6331U, 0x6332U, 0x6333U, 0x6334U, 0x6335U, 0x6336U, 0x6337U, + 0x6338U, 0x6339U, 0x6361U, 0x6362U, 0x6363U, 0x6364U, 0x6365U, 0x6366U, + 0x6430U, 0x6431U, 0x6432U, 0x6433U, 0x6434U, 0x6435U, 0x6436U, 0x6437U, + 0x6438U, 0x6439U, 0x6461U, 0x6462U, 0x6463U, 0x6464U, 0x6465U, 0x6466U, + 0x6530U, 0x6531U, 0x6532U, 0x6533U, 0x6534U, 0x6535U, 0x6536U, 0x6537U, + 0x6538U, 0x6539U, 0x6561U, 0x6562U, 0x6563U, 0x6564U, 0x6565U, 0x6566U, + 0x6630U, 0x6631U, 0x6632U, 0x6633U, 0x6634U, 0x6635U, 0x6636U, 0x6637U, + 0x6638U, 0x6639U, 0x6661U, 0x6662U, 0x6663U, 0x6664U, 0x6665U, 0x6666U +#else /* DUK_USE_INTEGER_BE */ + 0x3030U, 0x3130U, 0x3230U, 0x3330U, 0x3430U, 0x3530U, 0x3630U, 0x3730U, + 0x3830U, 0x3930U, 0x6130U, 0x6230U, 0x6330U, 0x6430U, 0x6530U, 0x6630U, + 0x3031U, 0x3131U, 0x3231U, 0x3331U, 0x3431U, 0x3531U, 0x3631U, 0x3731U, + 0x3831U, 0x3931U, 0x6131U, 0x6231U, 0x6331U, 0x6431U, 0x6531U, 0x6631U, + 0x3032U, 0x3132U, 0x3232U, 0x3332U, 0x3432U, 0x3532U, 0x3632U, 0x3732U, + 0x3832U, 0x3932U, 0x6132U, 0x6232U, 0x6332U, 0x6432U, 0x6532U, 0x6632U, + 0x3033U, 0x3133U, 0x3233U, 0x3333U, 0x3433U, 0x3533U, 0x3633U, 0x3733U, + 0x3833U, 0x3933U, 0x6133U, 0x6233U, 0x6333U, 0x6433U, 0x6533U, 0x6633U, + 0x3034U, 0x3134U, 0x3234U, 0x3334U, 0x3434U, 0x3534U, 0x3634U, 0x3734U, + 0x3834U, 0x3934U, 0x6134U, 0x6234U, 0x6334U, 0x6434U, 0x6534U, 0x6634U, + 0x3035U, 0x3135U, 0x3235U, 0x3335U, 0x3435U, 0x3535U, 0x3635U, 0x3735U, + 0x3835U, 0x3935U, 0x6135U, 0x6235U, 0x6335U, 0x6435U, 0x6535U, 0x6635U, + 0x3036U, 0x3136U, 0x3236U, 0x3336U, 0x3436U, 0x3536U, 0x3636U, 0x3736U, + 0x3836U, 0x3936U, 0x6136U, 0x6236U, 0x6336U, 0x6436U, 0x6536U, 0x6636U, + 0x3037U, 0x3137U, 0x3237U, 0x3337U, 0x3437U, 0x3537U, 0x3637U, 0x3737U, + 0x3837U, 0x3937U, 0x6137U, 0x6237U, 0x6337U, 0x6437U, 0x6537U, 0x6637U, + 0x3038U, 0x3138U, 0x3238U, 0x3338U, 0x3438U, 0x3538U, 0x3638U, 0x3738U, + 0x3838U, 0x3938U, 0x6138U, 0x6238U, 0x6338U, 0x6438U, 0x6538U, 0x6638U, + 0x3039U, 0x3139U, 0x3239U, 0x3339U, 0x3439U, 0x3539U, 0x3639U, 0x3739U, + 0x3839U, 0x3939U, 0x6139U, 0x6239U, 0x6339U, 0x6439U, 0x6539U, 0x6639U, + 0x3061U, 0x3161U, 0x3261U, 0x3361U, 0x3461U, 0x3561U, 0x3661U, 0x3761U, + 0x3861U, 0x3961U, 0x6161U, 0x6261U, 0x6361U, 0x6461U, 0x6561U, 0x6661U, + 0x3062U, 0x3162U, 0x3262U, 0x3362U, 0x3462U, 0x3562U, 0x3662U, 0x3762U, + 0x3862U, 0x3962U, 0x6162U, 0x6262U, 0x6362U, 0x6462U, 0x6562U, 0x6662U, + 0x3063U, 0x3163U, 0x3263U, 0x3363U, 0x3463U, 0x3563U, 0x3663U, 0x3763U, + 0x3863U, 0x3963U, 0x6163U, 0x6263U, 0x6363U, 0x6463U, 0x6563U, 0x6663U, + 0x3064U, 0x3164U, 0x3264U, 0x3364U, 0x3464U, 0x3564U, 0x3664U, 0x3764U, + 0x3864U, 0x3964U, 0x6164U, 0x6264U, 0x6364U, 0x6464U, 0x6564U, 0x6664U, + 0x3065U, 0x3165U, 0x3265U, 0x3365U, 0x3465U, 0x3565U, 0x3665U, 0x3765U, + 0x3865U, 0x3965U, 0x6165U, 0x6265U, 0x6365U, 0x6465U, 0x6565U, 0x6665U, + 0x3066U, 0x3166U, 0x3266U, 0x3366U, 0x3466U, 0x3566U, 0x3666U, 0x3766U, + 0x3866U, 0x3966U, 0x6166U, 0x6266U, 0x6366U, 0x6466U, 0x6566U, 0x6666U +#endif /* DUK_USE_INTEGER_BE */ +}; +#endif /* DUK_USE_HEX_FASTPATH */ + +/* + * Arbitrary byteswap for potentially unaligned values + * + * Used to byteswap pointers e.g. in debugger code. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) /* For now only needed by the debugger. */ +DUK_INTERNAL void duk_byteswap_bytes(duk_uint8_t *p, duk_small_uint_t len) { + duk_uint8_t tmp; + duk_uint8_t *q = p + len - 1; + + while (p - q < 0) { + tmp = *p; + *p = *q; + *q = tmp; + p++; + q--; + } +} +#endif +#line 1 "duk_hobject_class.c" +/* + * Hobject ECMAScript [[Class]]. + */ + +/* #include duk_internal.h -> already included */ + +#if (DUK_STRIDX_UC_ARGUMENTS > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_BOOLEAN > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_DATE > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_ERROR > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_FUNCTION > 255) +#error constant too large +#endif +#if (DUK_STRIDX_JSON > 255) +#error constant too large +#endif +#if (DUK_STRIDX_MATH > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_NUMBER > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_OBJECT > 255) +#error constant too large +#endif +#if (DUK_STRIDX_REG_EXP > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_STRING > 255) +#error constant too large +#endif +#if (DUK_STRIDX_GLOBAL > 255) +#error constant too large +#endif +#if (DUK_STRIDX_OBJ_ENV > 255) +#error constant too large +#endif +#if (DUK_STRIDX_DEC_ENV > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_POINTER > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UC_THREAD > 255) +#error constant too large +#endif +#if (DUK_STRIDX_ARRAY_BUFFER > 255) +#error constant too large +#endif +#if (DUK_STRIDX_DATA_VIEW > 255) +#error constant too large +#endif +#if (DUK_STRIDX_INT8_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UINT8_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UINT8_CLAMPED_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_INT16_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UINT16_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_INT32_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_UINT32_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_FLOAT32_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_FLOAT64_ARRAY > 255) +#error constant too large +#endif +#if (DUK_STRIDX_EMPTY_STRING > 255) +#error constant too large +#endif + +/* Note: assumes that these string indexes are 8-bit, genstrings.py must ensure that */ +DUK_INTERNAL duk_uint8_t duk_class_number_to_stridx[32] = { + DUK_STRIDX_EMPTY_STRING, /* NONE, intentionally empty */ + DUK_STRIDX_UC_OBJECT, + DUK_STRIDX_UC_ARRAY, + DUK_STRIDX_UC_FUNCTION, + DUK_STRIDX_UC_ARGUMENTS, + DUK_STRIDX_UC_BOOLEAN, + DUK_STRIDX_UC_DATE, + DUK_STRIDX_UC_ERROR, + DUK_STRIDX_JSON, + DUK_STRIDX_MATH, + DUK_STRIDX_UC_NUMBER, + DUK_STRIDX_REG_EXP, + DUK_STRIDX_UC_STRING, + DUK_STRIDX_GLOBAL, + DUK_STRIDX_UC_SYMBOL, + DUK_STRIDX_OBJ_ENV, + DUK_STRIDX_DEC_ENV, + DUK_STRIDX_UC_POINTER, + DUK_STRIDX_UC_THREAD, + DUK_STRIDX_ARRAY_BUFFER, + DUK_STRIDX_DATA_VIEW, + DUK_STRIDX_INT8_ARRAY, + DUK_STRIDX_UINT8_ARRAY, + DUK_STRIDX_UINT8_CLAMPED_ARRAY, + DUK_STRIDX_INT16_ARRAY, + DUK_STRIDX_UINT16_ARRAY, + DUK_STRIDX_INT32_ARRAY, + DUK_STRIDX_UINT32_ARRAY, + DUK_STRIDX_FLOAT32_ARRAY, + DUK_STRIDX_FLOAT64_ARRAY, + DUK_STRIDX_EMPTY_STRING, /* UNUSED, intentionally empty */ + DUK_STRIDX_EMPTY_STRING, /* UNUSED, intentionally empty */ +}; +#line 1 "duk_alloc_default.c" +/* + * Default allocation functions. + * + * Assumes behavior such as malloc allowing zero size, yielding + * a NULL or a unique pointer which is a no-op for free. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS) +DUK_INTERNAL void *duk_default_alloc_function(void *udata, duk_size_t size) { + void *res; + DUK_UNREF(udata); + res = DUK_ANSI_MALLOC(size); + DUK_DDD(DUK_DDDPRINT("default alloc function: %lu -> %p", + (unsigned long) size, (void *) res)); + return res; +} + +DUK_INTERNAL void *duk_default_realloc_function(void *udata, void *ptr, duk_size_t newsize) { + void *res; + DUK_UNREF(udata); + res = DUK_ANSI_REALLOC(ptr, newsize); + DUK_DDD(DUK_DDDPRINT("default realloc function: %p %lu -> %p", + (void *) ptr, (unsigned long) newsize, (void *) res)); + return res; +} + +DUK_INTERNAL void duk_default_free_function(void *udata, void *ptr) { + DUK_DDD(DUK_DDDPRINT("default free function: %p", (void *) ptr)); + DUK_UNREF(udata); + DUK_ANSI_FREE(ptr); +} +#endif /* DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS */ +#line 1 "duk_api_buffer.c" +/* + * Buffer + */ + +/* #include duk_internal.h -> already included */ + +DUK_EXTERNAL void *duk_resize_buffer(duk_hthread *thr, duk_idx_t idx, duk_size_t new_size) { + duk_hbuffer_dynamic *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hbuffer_dynamic *) duk_require_hbuffer(thr, idx); + DUK_ASSERT(h != NULL); + + if (!(DUK_HBUFFER_HAS_DYNAMIC(h) && !DUK_HBUFFER_HAS_EXTERNAL(h))) { + DUK_ERROR_TYPE(thr, DUK_STR_WRONG_BUFFER_TYPE); + DUK_WO_NORETURN(return NULL;); + } + + /* Maximum size check is handled by callee. */ + duk_hbuffer_resize(thr, h, new_size); + + return DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, h); +} + +DUK_EXTERNAL void *duk_steal_buffer(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size) { + duk_hbuffer_dynamic *h; + void *ptr; + duk_size_t sz; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hbuffer_dynamic *) duk_require_hbuffer(thr, idx); + DUK_ASSERT(h != NULL); + + if (!(DUK_HBUFFER_HAS_DYNAMIC(h) && !DUK_HBUFFER_HAS_EXTERNAL(h))) { + DUK_ERROR_TYPE(thr, DUK_STR_WRONG_BUFFER_TYPE); + DUK_WO_NORETURN(return NULL;); + } + + /* Forget the previous allocation, setting size to 0 and alloc to + * NULL. Caller is responsible for freeing the previous allocation. + * Getting the allocation and clearing it is done in the same API + * call to avoid any chance of a realloc. + */ + ptr = DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, h); + sz = DUK_HBUFFER_DYNAMIC_GET_SIZE(h); + if (out_size) { + *out_size = sz; + } + DUK_HBUFFER_DYNAMIC_SET_DATA_PTR_NULL(thr->heap, h); + DUK_HBUFFER_DYNAMIC_SET_SIZE(h, 0); + + return ptr; +} + +DUK_EXTERNAL void duk_config_buffer(duk_hthread *thr, duk_idx_t idx, void *ptr, duk_size_t len) { + duk_hbuffer_external *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hbuffer_external *) duk_require_hbuffer(thr, idx); + DUK_ASSERT(h != NULL); + + if (!DUK_HBUFFER_HAS_EXTERNAL(h)) { + DUK_ERROR_TYPE(thr, DUK_STR_WRONG_BUFFER_TYPE); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(DUK_HBUFFER_HAS_DYNAMIC(h)); + + DUK_HBUFFER_EXTERNAL_SET_DATA_PTR(thr->heap, h, ptr); + DUK_HBUFFER_EXTERNAL_SET_SIZE(h, len); +} +#line 1 "duk_api_bytecode.c" +/* + * Bytecode dump/load + * + * The bytecode load primitive is more important performance-wise than the + * dump primitive. + * + * Unlike most Duktape API calls, bytecode dump/load is not guaranteed to be + * memory safe for invalid arguments - caller beware! There's little point + * in trying to achieve memory safety unless bytecode instructions are also + * validated which is not easy to do with indirect register references etc. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_BYTECODE_DUMP_SUPPORT) + +#define DUK__SER_MARKER 0xbf +#define DUK__SER_STRING 0x00 +#define DUK__SER_NUMBER 0x01 +#define DUK__BYTECODE_INITIAL_ALLOC 256 +#define DUK__NO_FORMALS 0xffffffffUL + +/* + * Dump/load helpers, xxx_raw() helpers do no buffer checks + */ + +DUK_LOCAL const duk_uint8_t *duk__load_string_raw(duk_hthread *thr, const duk_uint8_t *p) { + duk_uint32_t len; + + len = DUK_RAW_READINC_U32_BE(p); + duk_push_lstring(thr, (const char *) p, len); + p += len; + return p; +} + +DUK_LOCAL const duk_uint8_t *duk__load_buffer_raw(duk_hthread *thr, const duk_uint8_t *p) { + duk_uint32_t len; + duk_uint8_t *buf; + + len = DUK_RAW_READINC_U32_BE(p); + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, (duk_size_t) len); + DUK_ASSERT(buf != NULL); + duk_memcpy((void *) buf, (const void *) p, (size_t) len); + p += len; + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_hstring_raw(duk_uint8_t *p, duk_hstring *h) { + duk_size_t len; + duk_uint32_t tmp32; + + DUK_ASSERT(h != NULL); + + len = DUK_HSTRING_GET_BYTELEN(h); + DUK_ASSERT(len <= 0xffffffffUL); /* string limits */ + tmp32 = (duk_uint32_t) len; + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + duk_memcpy((void *) p, + (const void *) DUK_HSTRING_GET_DATA(h), + len); + p += len; + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_hbuffer_raw(duk_hthread *thr, duk_uint8_t *p, duk_hbuffer *h) { + duk_size_t len; + duk_uint32_t tmp32; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h != NULL); + DUK_UNREF(thr); + + len = DUK_HBUFFER_GET_SIZE(h); + DUK_ASSERT(len <= 0xffffffffUL); /* buffer limits */ + tmp32 = (duk_uint32_t) len; + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + /* When len == 0, buffer data pointer may be NULL. */ + duk_memcpy_unsafe((void *) p, + (const void *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h), + len); + p += len; + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_string_prop(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func, duk_small_uint_t stridx) { + duk_hstring *h_str; + duk_tval *tv; + + tv = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, (duk_hobject *) func, stridx); + if (tv != NULL && DUK_TVAL_IS_STRING(tv)) { + h_str = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h_str != NULL); + } else { + h_str = DUK_HTHREAD_STRING_EMPTY_STRING(thr); + DUK_ASSERT(h_str != NULL); + } + DUK_ASSERT(DUK_HSTRING_MAX_BYTELEN <= 0x7fffffffUL); /* ensures no overflow */ + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U + DUK_HSTRING_GET_BYTELEN(h_str), p); + p = duk__dump_hstring_raw(p, h_str); + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_buffer_prop(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func, duk_small_uint_t stridx) { + duk_tval *tv; + + tv = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, (duk_hobject *) func, stridx); + if (tv != NULL && DUK_TVAL_IS_BUFFER(tv)) { + duk_hbuffer *h_buf; + h_buf = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h_buf != NULL); + DUK_ASSERT(DUK_HBUFFER_MAX_BYTELEN <= 0x7fffffffUL); /* ensures no overflow */ + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U + DUK_HBUFFER_GET_SIZE(h_buf), p); + p = duk__dump_hbuffer_raw(thr, p, h_buf); + } else { + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U, p); + DUK_RAW_WRITEINC_U32_BE(p, 0); + } + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_uint32_prop(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func, duk_small_uint_t stridx, duk_uint32_t def_value) { + duk_tval *tv; + duk_uint32_t val; + + tv = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, (duk_hobject *) func, stridx); + if (tv != NULL && DUK_TVAL_IS_NUMBER(tv)) { + val = (duk_uint32_t) DUK_TVAL_GET_NUMBER(tv); + } else { + val = def_value; + } + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U, p); + DUK_RAW_WRITEINC_U32_BE(p, val); + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_varmap(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func) { + duk_hobject *h; + + h = duk_hobject_get_varmap(thr, (duk_hobject *) func); + if (h != NULL) { + duk_uint_fast32_t i; + + /* We know _Varmap only has own properties so walk property + * table directly. We also know _Varmap is dense and all + * values are numbers; assert for these. GC and finalizers + * shouldn't affect _Varmap so side effects should be fine. + */ + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(h); i++) { + duk_hstring *key; + duk_tval *tv_val; + duk_uint32_t val; + + key = DUK_HOBJECT_E_GET_KEY(thr->heap, h, i); + DUK_ASSERT(key != NULL); /* _Varmap is dense */ + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, h, i)); + tv_val = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, h, i); + DUK_ASSERT(tv_val != NULL); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_val)); /* known to be number; in fact an integer */ +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv_val)); + DUK_ASSERT(DUK_TVAL_GET_FASTINT(tv_val) == (duk_int64_t) DUK_TVAL_GET_FASTINT_U32(tv_val)); /* known to be 32-bit */ + val = DUK_TVAL_GET_FASTINT_U32(tv_val); +#else + val = (duk_uint32_t) DUK_TVAL_GET_NUMBER(tv_val); +#endif + + DUK_ASSERT(DUK_HSTRING_MAX_BYTELEN <= 0x7fffffffUL); /* ensures no overflow */ + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U + DUK_HSTRING_GET_BYTELEN(key) + 4U, p); + p = duk__dump_hstring_raw(p, key); + DUK_RAW_WRITEINC_U32_BE(p, val); + } + } + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U, p); + DUK_RAW_WRITEINC_U32_BE(p, 0); /* end of _Varmap */ + return p; +} + +DUK_LOCAL duk_uint8_t *duk__dump_formals(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func) { + duk_harray *h; + + h = duk_hobject_get_formals(thr, (duk_hobject *) func); + if (h != NULL) { + duk_uint32_t i; + + /* Here we rely on _Formals being a dense array containing + * strings. This should be the case unless _Formals has been + * tweaked by the application (which we don't support right + * now). + */ + + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U, p); + DUK_ASSERT(h->length != DUK__NO_FORMALS); /* limits */ + DUK_RAW_WRITEINC_U32_BE(p, h->length); + + for (i = 0; i < h->length; i++) { + duk_tval *tv_val; + duk_hstring *varname; + + tv_val = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, (duk_hobject *) h, i); + DUK_ASSERT(tv_val != NULL); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv_val)); + + varname = DUK_TVAL_GET_STRING(tv_val); + DUK_ASSERT(varname != NULL); + DUK_ASSERT(DUK_HSTRING_GET_BYTELEN(varname) >= 1); + + DUK_ASSERT(DUK_HSTRING_MAX_BYTELEN <= 0x7fffffffUL); /* ensures no overflow */ + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U + DUK_HSTRING_GET_BYTELEN(varname), p); + p = duk__dump_hstring_raw(p, varname); + } + } else { + DUK_DD(DUK_DDPRINT("dumping function without _Formals, emit marker to indicate missing _Formals")); + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 4U, p); + DUK_RAW_WRITEINC_U32_BE(p, DUK__NO_FORMALS); /* marker: no formals */ + } + return p; +} + +static duk_uint8_t *duk__dump_func(duk_hthread *thr, duk_hcompfunc *func, duk_bufwriter_ctx *bw_ctx, duk_uint8_t *p) { + duk_tval *tv, *tv_end; + duk_instr_t *ins, *ins_end; + duk_hobject **fn, **fn_end; + duk_hstring *h_str; + duk_uint32_t count_instr; + duk_uint32_t tmp32; + duk_uint16_t tmp16; + duk_double_t d; + + DUK_DD(DUK_DDPRINT("dumping function %p to %p: " + "consts=[%p,%p[ (%ld bytes, %ld items), " + "funcs=[%p,%p[ (%ld bytes, %ld items), " + "code=[%p,%p[ (%ld bytes, %ld items)", + (void *) func, + (void *) p, + (void *) DUK_HCOMPFUNC_GET_CONSTS_BASE(thr->heap, func), + (void *) DUK_HCOMPFUNC_GET_CONSTS_END(thr->heap, func), + (long) DUK_HCOMPFUNC_GET_CONSTS_SIZE(thr->heap, func), + (long) DUK_HCOMPFUNC_GET_CONSTS_COUNT(thr->heap, func), + (void *) DUK_HCOMPFUNC_GET_FUNCS_BASE(thr->heap, func), + (void *) DUK_HCOMPFUNC_GET_FUNCS_END(thr->heap, func), + (long) DUK_HCOMPFUNC_GET_FUNCS_SIZE(thr->heap, func), + (long) DUK_HCOMPFUNC_GET_FUNCS_COUNT(thr->heap, func), + (void *) DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, func), + (void *) DUK_HCOMPFUNC_GET_CODE_END(thr->heap, func), + (long) DUK_HCOMPFUNC_GET_CODE_SIZE(thr->heap, func), + (long) DUK_HCOMPFUNC_GET_CODE_COUNT(thr->heap, func))); + + DUK_ASSERT(DUK_USE_ESBC_MAX_BYTES <= 0x7fffffffUL); /* ensures no overflow */ + count_instr = (duk_uint32_t) DUK_HCOMPFUNC_GET_CODE_COUNT(thr->heap, func); + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 3U * 4U + 2U * 2U + 3U * 4U + count_instr * 4U, p); + + /* Fixed header info. */ + tmp32 = count_instr; + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + tmp32 = (duk_uint32_t) DUK_HCOMPFUNC_GET_CONSTS_COUNT(thr->heap, func); + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + tmp32 = (duk_uint32_t) DUK_HCOMPFUNC_GET_FUNCS_COUNT(thr->heap, func); + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + tmp16 = func->nregs; + DUK_RAW_WRITEINC_U16_BE(p, tmp16); + tmp16 = func->nargs; + DUK_RAW_WRITEINC_U16_BE(p, tmp16); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + tmp32 = func->start_line; + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + tmp32 = func->end_line; + DUK_RAW_WRITEINC_U32_BE(p, tmp32); +#else + DUK_RAW_WRITEINC_U32_BE(p, 0); + DUK_RAW_WRITEINC_U32_BE(p, 0); +#endif + tmp32 = DUK_HEAPHDR_GET_FLAGS((duk_heaphdr *) func); /* masks flags, only duk_hobject flags */ + tmp32 &= ~(DUK_HOBJECT_FLAG_HAVE_FINALIZER); /* finalizer flag is lost */ + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + + /* Bytecode instructions: endian conversion needed unless + * platform is big endian. + */ + ins = DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, func); + ins_end = DUK_HCOMPFUNC_GET_CODE_END(thr->heap, func); + DUK_ASSERT((duk_size_t) (ins_end - ins) == (duk_size_t) count_instr); +#if defined(DUK_USE_INTEGER_BE) + duk_memcpy_unsafe((void *) p, (const void *) ins, (size_t) (ins_end - ins)); + p += (size_t) (ins_end - ins); +#else + while (ins != ins_end) { + tmp32 = (duk_uint32_t) (*ins); + DUK_RAW_WRITEINC_U32_BE(p, tmp32); + ins++; + } +#endif + + /* Constants: variable size encoding. */ + tv = DUK_HCOMPFUNC_GET_CONSTS_BASE(thr->heap, func); + tv_end = DUK_HCOMPFUNC_GET_CONSTS_END(thr->heap, func); + while (tv != tv_end) { + /* constants are strings or numbers now */ + DUK_ASSERT(DUK_TVAL_IS_STRING(tv) || + DUK_TVAL_IS_NUMBER(tv)); + + if (DUK_TVAL_IS_STRING(tv)) { + h_str = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h_str != NULL); + DUK_ASSERT(DUK_HSTRING_MAX_BYTELEN <= 0x7fffffffUL); /* ensures no overflow */ + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 1U + 4U + DUK_HSTRING_GET_BYTELEN(h_str), p); + *p++ = DUK__SER_STRING; + p = duk__dump_hstring_raw(p, h_str); + } else { + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + p = DUK_BW_ENSURE_RAW(thr, bw_ctx, 1U + 8U, p); + *p++ = DUK__SER_NUMBER; + d = DUK_TVAL_GET_NUMBER(tv); + DUK_RAW_WRITEINC_DOUBLE_BE(p, d); + } + tv++; + } + + /* Inner functions recursively. */ + fn = (duk_hobject **) DUK_HCOMPFUNC_GET_FUNCS_BASE(thr->heap, func); + fn_end = (duk_hobject **) DUK_HCOMPFUNC_GET_FUNCS_END(thr->heap, func); + while (fn != fn_end) { + /* XXX: This causes recursion up to inner function depth + * which is normally not an issue, e.g. mark-and-sweep uses + * a recursion limiter to avoid C stack issues. Avoiding + * this would mean some sort of a work list or just refusing + * to serialize deep functions. + */ + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(*fn)); + p = duk__dump_func(thr, (duk_hcompfunc *) *fn, bw_ctx, p); + fn++; + } + + /* Lexenv and varenv are not dumped. */ + + /* Object extra properties. + * + * There are some difference between function templates and functions. + * For example, function templates don't have .length and nargs is + * normally used to instantiate the functions. + */ + + p = duk__dump_uint32_prop(thr, p, bw_ctx, (duk_hobject *) func, DUK_STRIDX_LENGTH, (duk_uint32_t) func->nargs); +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + p = duk__dump_string_prop(thr, p, bw_ctx, (duk_hobject *) func, DUK_STRIDX_NAME); +#endif +#if defined(DUK_USE_FUNC_FILENAME_PROPERTY) + p = duk__dump_string_prop(thr, p, bw_ctx, (duk_hobject *) func, DUK_STRIDX_FILE_NAME); +#endif +#if defined(DUK_USE_PC2LINE) + p = duk__dump_buffer_prop(thr, p, bw_ctx, (duk_hobject *) func, DUK_STRIDX_INT_PC2LINE); +#endif + p = duk__dump_varmap(thr, p, bw_ctx, (duk_hobject *) func); + p = duk__dump_formals(thr, p, bw_ctx, (duk_hobject *) func); + + DUK_DD(DUK_DDPRINT("serialized function %p -> final pointer %p", (void *) func, (void *) p)); + + return p; +} + +/* Load a function from bytecode. The function object returned here must + * match what is created by duk_js_push_closure() with respect to its flags, + * properties, etc. + * + * NOTE: there are intentionally no input buffer length / bound checks. + * Adding them would be easy but wouldn't ensure memory safety as untrusted + * or broken bytecode is unsafe during execution unless the opcodes themselves + * are validated (which is quite complex, especially for indirect opcodes). + */ + +#define DUK__ASSERT_LEFT(n) do { \ + DUK_ASSERT((duk_size_t) (p_end - p) >= (duk_size_t) (n)); \ + } while (0) + +static const duk_uint8_t *duk__load_func(duk_hthread *thr, const duk_uint8_t *p, const duk_uint8_t *p_end) { + duk_hcompfunc *h_fun; + duk_hbuffer *h_data; + duk_size_t data_size; + duk_uint32_t count_instr, count_const, count_funcs; + duk_uint32_t n; + duk_uint32_t tmp32; + duk_small_uint_t const_type; + duk_uint8_t *fun_data; + duk_uint8_t *q; + duk_idx_t idx_base; + duk_tval *tv1; + duk_uarridx_t arr_idx; + duk_uarridx_t arr_limit; + duk_hobject *func_env; + duk_bool_t need_pop; + + /* XXX: There's some overlap with duk_js_closure() here, but + * seems difficult to share code. Ensure that the final function + * looks the same as created by duk_js_closure(). + */ + + DUK_ASSERT(thr != NULL); + + DUK_DD(DUK_DDPRINT("loading function, p=%p, p_end=%p", (const void *) p, (const void *) p_end)); + + DUK__ASSERT_LEFT(3 * 4); + count_instr = DUK_RAW_READINC_U32_BE(p); + count_const = DUK_RAW_READINC_U32_BE(p); + count_funcs = DUK_RAW_READINC_U32_BE(p); + + data_size = sizeof(duk_tval) * count_const + + sizeof(duk_hobject *) * count_funcs + + sizeof(duk_instr_t) * count_instr; + + DUK_DD(DUK_DDPRINT("instr=%ld, const=%ld, funcs=%ld, data_size=%ld", + (long) count_instr, (long) count_const, + (long) count_const, (long) data_size)); + + /* Value stack is used to ensure reachability of constants and + * inner functions being loaded. Require enough space to handle + * large functions correctly. + */ + duk_require_stack(thr, (duk_idx_t) (2 + count_const + count_funcs)); + idx_base = duk_get_top(thr); + + /* Push function object, init flags etc. This must match + * duk_js_push_closure() quite carefully. + */ + h_fun = duk_push_hcompfunc(thr); + DUK_ASSERT(h_fun != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) h_fun)); + DUK_ASSERT(DUK_HCOMPFUNC_GET_DATA(thr->heap, h_fun) == NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_FUNCS(thr->heap, h_fun) == NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_BYTECODE(thr->heap, h_fun) == NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) h_fun) == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); + + h_fun->nregs = DUK_RAW_READINC_U16_BE(p); + h_fun->nargs = DUK_RAW_READINC_U16_BE(p); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + h_fun->start_line = DUK_RAW_READINC_U32_BE(p); + h_fun->end_line = DUK_RAW_READINC_U32_BE(p); +#else + p += 8; /* skip line info */ +#endif + + /* duk_hcompfunc flags; quite version specific */ + tmp32 = DUK_RAW_READINC_U32_BE(p); + DUK_HEAPHDR_SET_FLAGS((duk_heaphdr *) h_fun, tmp32); /* masks flags to only change duk_hobject flags */ + + /* standard prototype (no need to set here, already set) */ + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) h_fun) == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); +#if 0 + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, &h_fun->obj, thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); +#endif + + /* assert just a few critical flags */ + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) h_fun) == DUK_HTYPE_OBJECT); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(&h_fun->obj)); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(&h_fun->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_NATFUNC(&h_fun->obj)); + DUK_ASSERT(!DUK_HOBJECT_IS_THREAD(&h_fun->obj)); + DUK_ASSERT(!DUK_HOBJECT_IS_PROXY(&h_fun->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARRAY(&h_fun->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(&h_fun->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(&h_fun->obj)); + + /* Create function 'data' buffer but don't attach it yet. */ + fun_data = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, data_size); + DUK_ASSERT(fun_data != NULL); + + /* Load bytecode instructions. */ + DUK_ASSERT(sizeof(duk_instr_t) == 4); + DUK__ASSERT_LEFT(count_instr * sizeof(duk_instr_t)); +#if defined(DUK_USE_INTEGER_BE) + q = fun_data + sizeof(duk_tval) * count_const + sizeof(duk_hobject *) * count_funcs; + duk_memcpy((void *) q, + (const void *) p, + sizeof(duk_instr_t) * count_instr); + p += sizeof(duk_instr_t) * count_instr; +#else + q = fun_data + sizeof(duk_tval) * count_const + sizeof(duk_hobject *) * count_funcs; + for (n = count_instr; n > 0; n--) { + *((duk_instr_t *) (void *) q) = DUK_RAW_READINC_U32_BE(p); + q += sizeof(duk_instr_t); + } +#endif + + /* Load constants onto value stack but don't yet copy to buffer. */ + for (n = count_const; n > 0; n--) { + DUK__ASSERT_LEFT(1); + const_type = DUK_RAW_READINC_U8(p); + switch (const_type) { + case DUK__SER_STRING: { + p = duk__load_string_raw(thr, p); + break; + } + case DUK__SER_NUMBER: { + /* Important to do a fastint check so that constants are + * properly read back as fastints. + */ + duk_tval tv_tmp; + duk_double_t val; + DUK__ASSERT_LEFT(8); + val = DUK_RAW_READINC_DOUBLE_BE(p); + DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(&tv_tmp, val); + duk_push_tval(thr, &tv_tmp); + break; + } + default: { + goto format_error; + } + } + } + + /* Load inner functions to value stack, but don't yet copy to buffer. */ + for (n = count_funcs; n > 0; n--) { + p = duk__load_func(thr, p, p_end); + if (p == NULL) { + goto format_error; + } + } + + /* With constants and inner functions on value stack, we can now + * atomically finish the function 'data' buffer, bump refcounts, + * etc. + * + * Here we take advantage of the value stack being just a duk_tval + * array: we can just memcpy() the constants as long as we incref + * them afterwards. + */ + + h_data = (duk_hbuffer *) duk_known_hbuffer(thr, idx_base + 1); + DUK_ASSERT(!DUK_HBUFFER_HAS_DYNAMIC(h_data)); + DUK_HCOMPFUNC_SET_DATA(thr->heap, h_fun, h_data); + DUK_HBUFFER_INCREF(thr, h_data); + + tv1 = duk_get_tval(thr, idx_base + 2); /* may be NULL if no constants or inner funcs */ + DUK_ASSERT((count_const == 0 && count_funcs == 0) || tv1 != NULL); + + q = fun_data; + duk_memcpy_unsafe((void *) q, (const void *) tv1, sizeof(duk_tval) * count_const); + for (n = count_const; n > 0; n--) { + DUK_TVAL_INCREF_FAST(thr, (duk_tval *) (void *) q); /* no side effects */ + q += sizeof(duk_tval); + } + tv1 += count_const; + + DUK_HCOMPFUNC_SET_FUNCS(thr->heap, h_fun, (duk_hobject **) (void *) q); + for (n = count_funcs; n > 0; n--) { + duk_hobject *h_obj; + + DUK_ASSERT(DUK_TVAL_IS_OBJECT(tv1)); + h_obj = DUK_TVAL_GET_OBJECT(tv1); + DUK_ASSERT(h_obj != NULL); + tv1++; + DUK_HOBJECT_INCREF(thr, h_obj); + + *((duk_hobject **) (void *) q) = h_obj; + q += sizeof(duk_hobject *); + } + + DUK_HCOMPFUNC_SET_BYTECODE(thr->heap, h_fun, (duk_instr_t *) (void *) q); + + /* The function object is now reachable and refcounts are fine, + * so we can pop off all the temporaries. + */ + DUK_DDD(DUK_DDDPRINT("function is reachable, reset top; func: %!iT", duk_get_tval(thr, idx_base))); + duk_set_top(thr, idx_base + 1); + + /* Setup function properties. */ + tmp32 = DUK_RAW_READINC_U32_BE(p); + duk_push_u32(thr, tmp32); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_C); + +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + p = duk__load_string_raw(thr, p); /* -> [ func funcname ] */ + func_env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + DUK_ASSERT(func_env != NULL); + need_pop = 0; + if (DUK_HOBJECT_HAS_NAMEBINDING((duk_hobject *) h_fun)) { + /* Original function instance/template had NAMEBINDING. + * Must create a lexical environment on loading to allow + * recursive functions like 'function foo() { foo(); }'. + */ + duk_hdecenv *new_env; + + new_env = duk_hdecenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DECENV)); + DUK_ASSERT(new_env != NULL); + DUK_ASSERT(new_env->thread == NULL); /* Closed. */ + DUK_ASSERT(new_env->varmap == NULL); + DUK_ASSERT(new_env->regbase_byteoff == 0); + DUK_HDECENV_ASSERT_VALID(new_env); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) new_env) == NULL); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, (duk_hobject *) new_env, func_env); + DUK_HOBJECT_INCREF(thr, func_env); + + func_env = (duk_hobject *) new_env; + + duk_push_hobject(thr, (duk_hobject *) new_env); + + duk_dup_m2(thr); /* -> [ func funcname env funcname ] */ + duk_dup(thr, idx_base); /* -> [ func funcname env funcname func ] */ + duk_xdef_prop(thr, -3, DUK_PROPDESC_FLAGS_NONE); /* -> [ func funcname env ] */ + + need_pop = 1; /* Need to pop env, but -after- updating h_fun and increfs. */ + } + DUK_ASSERT(func_env != NULL); + DUK_HCOMPFUNC_SET_LEXENV(thr->heap, h_fun, func_env); + DUK_HCOMPFUNC_SET_VARENV(thr->heap, h_fun, func_env); + DUK_HOBJECT_INCREF(thr, func_env); + DUK_HOBJECT_INCREF(thr, func_env); + if (need_pop) { + duk_pop(thr); + } + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_C); +#endif /* DUK_USE_FUNC_NAME_PROPERTY */ + +#if defined(DUK_USE_FUNC_FILENAME_PROPERTY) + p = duk__load_string_raw(thr, p); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_FILE_NAME, DUK_PROPDESC_FLAGS_C); +#endif /* DUK_USE_FUNC_FILENAME_PROPERTY */ + + if (DUK_HOBJECT_HAS_CONSTRUCTABLE((duk_hobject *) h_fun)) { + /* Restore empty external .prototype only for constructable + * functions. The prototype object should inherit from + * Object.prototype. + */ + duk_push_object(thr); + DUK_ASSERT(!duk_is_bare_object(thr, -1)); + duk_dup_m2(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_CONSTRUCTOR, DUK_PROPDESC_FLAGS_WC); /* func.prototype.constructor = func */ + duk_compact_m1(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_PROTOTYPE, DUK_PROPDESC_FLAGS_W); + } + +#if defined(DUK_USE_PC2LINE) + p = duk__load_buffer_raw(thr, p); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_PC2LINE, DUK_PROPDESC_FLAGS_WC); +#endif /* DUK_USE_PC2LINE */ + + duk_push_bare_object(thr); /* _Varmap */ + for (;;) { + /* XXX: awkward */ + p = duk__load_string_raw(thr, p); + if (duk_get_length(thr, -1) == 0) { + duk_pop(thr); + break; + } + tmp32 = DUK_RAW_READINC_U32_BE(p); + duk_push_u32(thr, tmp32); + duk_put_prop(thr, -3); + } + duk_compact_m1(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VARMAP, DUK_PROPDESC_FLAGS_NONE); + + /* _Formals may have been missing in the original function, which is + * handled using a marker length. + */ + arr_limit = DUK_RAW_READINC_U32_BE(p); + if (arr_limit != DUK__NO_FORMALS) { + duk_push_bare_array(thr); /* _Formals */ + for (arr_idx = 0; arr_idx < arr_limit; arr_idx++) { + p = duk__load_string_raw(thr, p); + duk_put_prop_index(thr, -2, arr_idx); + } + duk_compact_m1(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_FORMALS, DUK_PROPDESC_FLAGS_NONE); + } else { + DUK_DD(DUK_DDPRINT("no _Formals in dumped function")); + } + + /* Return with final function pushed on stack top. */ + DUK_DD(DUK_DDPRINT("final loaded function: %!iT", duk_get_tval(thr, -1))); + DUK_ASSERT_TOP(thr, idx_base + 1); + return p; + + format_error: + return NULL; +} + +DUK_EXTERNAL void duk_dump_function(duk_hthread *thr) { + duk_hcompfunc *func; + duk_bufwriter_ctx bw_ctx_alloc; + duk_bufwriter_ctx *bw_ctx = &bw_ctx_alloc; + duk_uint8_t *p; + + DUK_ASSERT_API_ENTRY(thr); + + /* Bound functions don't have all properties so we'd either need to + * lookup the non-bound target function or reject bound functions. + * For now, bound functions are rejected with TypeError. + */ + func = duk_require_hcompfunc(thr, -1); + DUK_ASSERT(func != NULL); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(&func->obj)); + + /* Estimating the result size beforehand would be costly, so + * start with a reasonable size and extend as needed. + */ + DUK_BW_INIT_PUSHBUF(thr, bw_ctx, DUK__BYTECODE_INITIAL_ALLOC); + p = DUK_BW_GET_PTR(thr, bw_ctx); + *p++ = DUK__SER_MARKER; + p = duk__dump_func(thr, func, bw_ctx, p); + DUK_BW_SET_PTR(thr, bw_ctx, p); + DUK_BW_COMPACT(thr, bw_ctx); + + DUK_DD(DUK_DDPRINT("serialized result: %!T", duk_get_tval(thr, -1))); + + duk_remove_m2(thr); /* [ ... func buf ] -> [ ... buf ] */ +} + +DUK_EXTERNAL void duk_load_function(duk_hthread *thr) { + const duk_uint8_t *p_buf, *p, *p_end; + duk_size_t sz; + + DUK_ASSERT_API_ENTRY(thr); + + p_buf = (duk_uint8_t *) duk_require_buffer(thr, -1, &sz); + DUK_ASSERT(p_buf != NULL); + + /* The caller is responsible for being sure that bytecode being loaded + * is valid and trusted. Invalid bytecode can cause memory unsafe + * behavior directly during loading or later during bytecode execution + * (instruction validation would be quite complex to implement). + * + * This signature check is the only sanity check for detecting + * accidental invalid inputs. The initial byte ensures no ordinary + * string or Symbol will be accepted by accident. + */ + p = p_buf; + p_end = p_buf + sz; + if (sz < 1 || p[0] != DUK__SER_MARKER) { + goto format_error; + } + p++; + + p = duk__load_func(thr, p, p_end); + if (p == NULL) { + goto format_error; + } + + duk_remove_m2(thr); /* [ ... buf func ] -> [ ... func ] */ + return; + + format_error: + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_BYTECODE); + DUK_WO_NORETURN(return;); +} + +#else /* DUK_USE_BYTECODE_DUMP_SUPPORT */ + +DUK_EXTERNAL void duk_dump_function(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_load_function(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} + +#endif /* DUK_USE_BYTECODE_DUMP_SUPPORT */ + +/* automatic undefs */ +#undef DUK__ASSERT_LEFT +#undef DUK__BYTECODE_INITIAL_ALLOC +#undef DUK__NO_FORMALS +#undef DUK__SER_MARKER +#undef DUK__SER_NUMBER +#undef DUK__SER_STRING +#line 1 "duk_api_call.c" +/* + * Calls. + * + * Protected variants should avoid ever throwing an error. Must be careful + * to catch errors related to value stack manipulation and property lookup, + * not just the call itself. + * + * The only exception is when arguments are insane, e.g. nargs/nrets are out + * of bounds; in such cases an error is thrown for two reasons. First, we + * can't always respect the value stack input/output guarantees in such cases + * so the caller would end up with the value stack in an unexpected state. + * Second, an attempt to create an error might itself fail (although this + * could be avoided by pushing a preallocated object/string or a primitive + * value). + */ + +/* #include duk_internal.h -> already included */ + +/* + * Helpers + */ + +struct duk__pcall_prop_args { + duk_idx_t obj_idx; + duk_idx_t nargs; + duk_small_uint_t call_flags; +}; +typedef struct duk__pcall_prop_args duk__pcall_prop_args; + +struct duk__pcall_method_args { + duk_idx_t nargs; + duk_small_uint_t call_flags; +}; +typedef struct duk__pcall_method_args duk__pcall_method_args; + +struct duk__pcall_args { + duk_idx_t nargs; + duk_small_uint_t call_flags; +}; +typedef struct duk__pcall_args duk__pcall_args; + +/* Compute and validate idx_func for a certain 'nargs' and 'other' + * parameter count (1 or 2, depending on whether 'this' binding is + * present). + */ +DUK_LOCAL duk_idx_t duk__call_get_idx_func(duk_hthread *thr, duk_idx_t nargs, duk_idx_t other) { + duk_idx_t idx_func; + + /* XXX: byte arithmetic? */ + + DUK_ASSERT(other >= 0); + + idx_func = duk_get_top(thr) - nargs - other; + if (DUK_UNLIKELY((idx_func | nargs) < 0)) { /* idx_func < 0 || nargs < 0; OR sign bits */ + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); + } + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + return idx_func; +} + +/* Compute idx_func, assume index will be valid. This is a valid assumption + * for protected calls: nargs < 0 is checked explicitly and duk_safe_call() + * validates the argument count. + */ +DUK_LOCAL duk_idx_t duk__call_get_idx_func_unvalidated(duk_hthread *thr, duk_idx_t nargs, duk_idx_t other) { + duk_idx_t idx_func; + + /* XXX: byte arithmetic? */ + + DUK_ASSERT(nargs >= 0); + DUK_ASSERT(other >= 0); + + idx_func = duk_get_top(thr) - nargs - other; + DUK_ASSERT(idx_func >= 0); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + return idx_func; +} + +/* Prepare value stack for a method call through an object property. + * May currently throw an error e.g. when getting the property. + */ +DUK_LOCAL void duk__call_prop_prep_stack(duk_hthread *thr, duk_idx_t normalized_obj_idx, duk_idx_t nargs) { + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(nargs >= 0); + + DUK_DDD(DUK_DDDPRINT("duk__call_prop_prep_stack, normalized_obj_idx=%ld, nargs=%ld, stacktop=%ld", + (long) normalized_obj_idx, (long) nargs, (long) duk_get_top(thr))); + + /* [... key arg1 ... argN] */ + + /* duplicate key */ + duk_dup(thr, -nargs - 1); /* Note: -nargs alone would fail for nargs == 0, this is OK */ + (void) duk_get_prop(thr, normalized_obj_idx); + + DUK_DDD(DUK_DDDPRINT("func: %!T", (duk_tval *) duk_get_tval(thr, -1))); + +#if defined(DUK_USE_VERBOSE_ERRORS) + if (DUK_UNLIKELY(!duk_is_callable(thr, -1))) { + duk_tval *tv_base; + duk_tval *tv_key; + + /* tv_targ is passed on stack top (at index -1). */ + tv_base = DUK_GET_TVAL_POSIDX(thr, normalized_obj_idx); + tv_key = DUK_GET_TVAL_NEGIDX(thr, -nargs - 2); + DUK_ASSERT(tv_base >= thr->valstack_bottom && tv_base < thr->valstack_top); + DUK_ASSERT(tv_key >= thr->valstack_bottom && tv_key < thr->valstack_top); + + duk_call_setup_propcall_error(thr, tv_base, tv_key); + } +#endif + + /* [... key arg1 ... argN func] */ + + duk_replace(thr, -nargs - 2); + + /* [... func arg1 ... argN] */ + + duk_dup(thr, normalized_obj_idx); + duk_insert(thr, -nargs - 1); + + /* [... func this arg1 ... argN] */ +} + +DUK_EXTERNAL void duk_call(duk_hthread *thr, duk_idx_t nargs) { + duk_small_uint_t call_flags; + duk_idx_t idx_func; + + DUK_ASSERT_API_ENTRY(thr); + + idx_func = duk__call_get_idx_func(thr, nargs, 1); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + + duk_insert_undefined(thr, idx_func + 1); + + call_flags = 0; /* not protected, respect reclimit, not constructor */ + duk_handle_call_unprotected(thr, idx_func, call_flags); +} + +DUK_EXTERNAL void duk_call_method(duk_hthread *thr, duk_idx_t nargs) { + duk_small_uint_t call_flags; + duk_idx_t idx_func; + + DUK_ASSERT_API_ENTRY(thr); + + idx_func = duk__call_get_idx_func(thr, nargs, 2); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + + call_flags = 0; /* not protected, respect reclimit, not constructor */ + duk_handle_call_unprotected(thr, idx_func, call_flags); +} + +DUK_EXTERNAL void duk_call_prop(duk_hthread *thr, duk_idx_t obj_idx, duk_idx_t nargs) { + /* + * XXX: if duk_handle_call() took values through indices, this could be + * made much more sensible. However, duk_handle_call() needs to fudge + * the 'this' and 'func' values to handle bound functions, which is now + * done "in-place", so this is not a trivial change. + */ + + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); /* make absolute */ + if (DUK_UNLIKELY(nargs < 0)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return;); + } + + duk__call_prop_prep_stack(thr, obj_idx, nargs); + + duk_call_method(thr, nargs); +} + +DUK_LOCAL duk_ret_t duk__pcall_raw(duk_hthread *thr, void *udata) { + duk__pcall_args *args; + duk_idx_t idx_func; + duk_int_t ret; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(udata != NULL); + + args = (duk__pcall_args *) udata; + idx_func = duk__call_get_idx_func_unvalidated(thr, args->nargs, 1); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + + duk_insert_undefined(thr, idx_func + 1); + + ret = duk_handle_call_unprotected(thr, idx_func, args->call_flags); + DUK_ASSERT(ret == 0); + DUK_UNREF(ret); + + return 1; +} + +DUK_EXTERNAL duk_int_t duk_pcall(duk_hthread *thr, duk_idx_t nargs) { + duk__pcall_args args; + + DUK_ASSERT_API_ENTRY(thr); + + args.nargs = nargs; + if (DUK_UNLIKELY(nargs < 0)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return DUK_EXEC_ERROR;); + } + args.call_flags = 0; + + return duk_safe_call(thr, duk__pcall_raw, (void *) &args /*udata*/, nargs + 1 /*nargs*/, 1 /*nrets*/); +} + +DUK_LOCAL duk_ret_t duk__pcall_method_raw(duk_hthread *thr, void *udata) { + duk__pcall_method_args *args; + duk_idx_t idx_func; + duk_int_t ret; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(udata != NULL); + + args = (duk__pcall_method_args *) udata; + + idx_func = duk__call_get_idx_func_unvalidated(thr, args->nargs, 2); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + + ret = duk_handle_call_unprotected(thr, idx_func, args->call_flags); + DUK_ASSERT(ret == 0); + DUK_UNREF(ret); + + return 1; +} + +DUK_INTERNAL duk_int_t duk_pcall_method_flags(duk_hthread *thr, duk_idx_t nargs, duk_small_uint_t call_flags) { + duk__pcall_method_args args; + + DUK_ASSERT_API_ENTRY(thr); + + args.nargs = nargs; + if (DUK_UNLIKELY(nargs < 0)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return DUK_EXEC_ERROR;); + } + args.call_flags = call_flags; + + return duk_safe_call(thr, duk__pcall_method_raw, (void *) &args /*udata*/, nargs + 2 /*nargs*/, 1 /*nrets*/); +} + +DUK_EXTERNAL duk_int_t duk_pcall_method(duk_hthread *thr, duk_idx_t nargs) { + DUK_ASSERT_API_ENTRY(thr); + + return duk_pcall_method_flags(thr, nargs, 0); +} + +DUK_LOCAL duk_ret_t duk__pcall_prop_raw(duk_hthread *thr, void *udata) { + duk__pcall_prop_args *args; + duk_idx_t obj_idx; + duk_int_t ret; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(udata != NULL); + + args = (duk__pcall_prop_args *) udata; + + obj_idx = duk_require_normalize_index(thr, args->obj_idx); /* make absolute */ + duk__call_prop_prep_stack(thr, obj_idx, args->nargs); + + ret = duk_handle_call_unprotected_nargs(thr, args->nargs, args->call_flags); + DUK_ASSERT(ret == 0); + DUK_UNREF(ret); + return 1; +} + +DUK_EXTERNAL duk_int_t duk_pcall_prop(duk_hthread *thr, duk_idx_t obj_idx, duk_idx_t nargs) { + duk__pcall_prop_args args; + + DUK_ASSERT_API_ENTRY(thr); + + args.obj_idx = obj_idx; + args.nargs = nargs; + if (DUK_UNLIKELY(nargs < 0)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return DUK_EXEC_ERROR;); + } + args.call_flags = 0; + + return duk_safe_call(thr, duk__pcall_prop_raw, (void *) &args /*udata*/, nargs + 1 /*nargs*/, 1 /*nrets*/); +} + +DUK_EXTERNAL duk_int_t duk_safe_call(duk_hthread *thr, duk_safe_call_function func, void *udata, duk_idx_t nargs, duk_idx_t nrets) { + duk_int_t rc; + + DUK_ASSERT_API_ENTRY(thr); + + /* nargs condition; fail if: top - bottom < nargs + * <=> top < bottom + nargs + * nrets condition; fail if: end - (top - nargs) < nrets + * <=> end - top + nargs < nrets + * <=> end + nargs < top + nrets + */ + /* XXX: check for any reserve? */ + + if (DUK_UNLIKELY((nargs | nrets) < 0 || /* nargs < 0 || nrets < 0; OR sign bits */ + thr->valstack_top < thr->valstack_bottom + nargs || /* nargs too large compared to top */ + thr->valstack_end + nargs < thr->valstack_top + nrets)) { /* nrets too large compared to reserve */ + DUK_D(DUK_DPRINT("not enough stack reserve for safe call or invalid arguments: " + "nargs=%ld < 0 (?), nrets=%ld < 0 (?), top=%ld < bottom=%ld + nargs=%ld (?), " + "end=%ld + nargs=%ld < top=%ld + nrets=%ld (?)", + (long) nargs, + (long) nrets, + (long) (thr->valstack_top - thr->valstack), + (long) (thr->valstack_bottom - thr->valstack), + (long) nargs, + (long) (thr->valstack_end - thr->valstack), + (long) nargs, + (long) (thr->valstack_top - thr->valstack), + (long) nrets)); + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return DUK_EXEC_ERROR;); + } + + rc = duk_handle_safe_call(thr, /* thread */ + func, /* func */ + udata, /* udata */ + nargs, /* num_stack_args */ + nrets); /* num_stack_res */ + + return rc; +} + +DUK_EXTERNAL void duk_new(duk_hthread *thr, duk_idx_t nargs) { + duk_idx_t idx_func; + + DUK_ASSERT_API_ENTRY(thr); + + idx_func = duk__call_get_idx_func(thr, nargs, 1); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + + duk_push_object(thr); /* default instance; internal proto updated by call handling */ + duk_insert(thr, idx_func + 1); + + duk_handle_call_unprotected(thr, idx_func, DUK_CALL_FLAG_CONSTRUCT); +} + +DUK_LOCAL duk_ret_t duk__pnew_helper(duk_hthread *thr, void *udata) { + duk_idx_t nargs; + + DUK_ASSERT(udata != NULL); + nargs = *((duk_idx_t *) udata); + + duk_new(thr, nargs); + return 1; +} + +DUK_EXTERNAL duk_int_t duk_pnew(duk_hthread *thr, duk_idx_t nargs) { + duk_int_t rc; + + DUK_ASSERT_API_ENTRY(thr); + + /* For now, just use duk_safe_call() to wrap duk_new(). We can't + * simply use a protected duk_handle_call() because pushing the + * default instance might throw. + */ + + if (DUK_UNLIKELY(nargs < 0)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return DUK_EXEC_ERROR;); + } + + rc = duk_safe_call(thr, duk__pnew_helper, (void *) &nargs /*udata*/, nargs + 1 /*nargs*/, 1 /*nrets*/); + return rc; +} + +DUK_EXTERNAL duk_bool_t duk_is_constructor_call(duk_hthread *thr) { + duk_activation *act; + + DUK_ASSERT_API_ENTRY(thr); + + act = thr->callstack_curr; + if (act != NULL) { + return ((act->flags & DUK_ACT_FLAG_CONSTRUCT) != 0 ? 1 : 0); + } + return 0; +} + +DUK_EXTERNAL void duk_require_constructor_call(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + if (!duk_is_constructor_call(thr)) { + DUK_ERROR_TYPE(thr, DUK_STR_CONSTRUCT_ONLY); + DUK_WO_NORETURN(return;); + } +} + +DUK_EXTERNAL duk_bool_t duk_is_strict_call(duk_hthread *thr) { + duk_activation *act; + + /* For user code this could just return 1 (strict) always + * because all Duktape/C functions are considered strict, + * and strict is also the default when nothing is running. + * However, Duktape may call this function internally when + * the current activation is an ECMAScript function, so + * this cannot be replaced by a 'return 1' without fixing + * the internal call sites. + */ + + DUK_ASSERT_API_ENTRY(thr); + + act = thr->callstack_curr; + if (act != NULL) { + return ((act->flags & DUK_ACT_FLAG_STRICT) != 0 ? 1 : 0); + } else { + /* Strict by default. */ + return 1; + } +} + +/* + * Duktape/C function magic + */ + +DUK_EXTERNAL duk_int_t duk_get_current_magic(duk_hthread *thr) { + duk_activation *act; + duk_hobject *func; + + DUK_ASSERT_API_ENTRY(thr); + + act = thr->callstack_curr; + if (act) { + func = DUK_ACT_GET_FUNC(act); + if (!func) { + duk_tval *tv = &act->tv_func; + duk_small_uint_t lf_flags; + lf_flags = DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv); + return (duk_int_t) DUK_LFUNC_FLAGS_GET_MAGIC(lf_flags); + } + DUK_ASSERT(func != NULL); + + if (DUK_HOBJECT_IS_NATFUNC(func)) { + duk_hnatfunc *nf = (duk_hnatfunc *) func; + return (duk_int_t) nf->magic; + } + } + return 0; +} + +DUK_EXTERNAL duk_int_t duk_get_magic(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + if (DUK_TVAL_IS_OBJECT(tv)) { + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (!DUK_HOBJECT_HAS_NATFUNC(h)) { + goto type_error; + } + return (duk_int_t) ((duk_hnatfunc *) h)->magic; + } else if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + duk_small_uint_t lf_flags = DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv); + return (duk_int_t) DUK_LFUNC_FLAGS_GET_MAGIC(lf_flags); + } + + /* fall through */ + type_error: + DUK_ERROR_TYPE(thr, DUK_STR_UNEXPECTED_TYPE); + DUK_WO_NORETURN(return 0;); +} + +DUK_EXTERNAL void duk_set_magic(duk_hthread *thr, duk_idx_t idx, duk_int_t magic) { + duk_hnatfunc *nf; + + DUK_ASSERT_API_ENTRY(thr); + + nf = duk_require_hnatfunc(thr, idx); + DUK_ASSERT(nf != NULL); + nf->magic = (duk_int16_t) magic; +} + +/* + * Misc helpers + */ + +/* Resolve a bound function on value stack top to a non-bound target + * (leave other values as is). + */ +DUK_INTERNAL void duk_resolve_nonbound_function(duk_hthread *thr) { + duk_tval *tv; + + DUK_HTHREAD_ASSERT_VALID(thr); + + tv = DUK_GET_TVAL_NEGIDX(thr, -1); + if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h; + + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (DUK_HOBJECT_HAS_BOUNDFUNC(h)) { + duk_push_tval(thr, &((duk_hboundfunc *) (void *) h)->target); + duk_replace(thr, -2); +#if 0 + DUK_TVAL_SET_TVAL(tv, &((duk_hboundfunc *) h)->target); + DUK_TVAL_INCREF(thr, tv); + DUK_HOBJECT_DECREF_NORZ(thr, h); +#endif + /* Rely on Function.prototype.bind() on never creating a bound + * function whose target is not proper. This is now safe + * because the target is not even an internal property but a + * struct member. + */ + DUK_ASSERT(duk_is_lightfunc(thr, -1) || duk_is_callable(thr, -1)); + } + } + + /* Lightfuncs cannot be bound but are always callable and + * constructable. + */ +} +#line 1 "duk_api_codec.c" +/* + * Encoding and decoding basic formats: hex, base64. + * + * These are in-place operations which may allow an optimized implementation. + * + * Base-64: https://tools.ietf.org/html/rfc4648#section-4 + */ + +/* #include duk_internal.h -> already included */ + +/* + * Misc helpers + */ + +/* Shared handling for encode/decode argument. Fast path handling for + * buffer and string values because they're the most common. In particular, + * avoid creating a temporary string or buffer when possible. Return value + * is guaranteed to be non-NULL, even for zero length input. + */ +DUK_LOCAL const duk_uint8_t *duk__prep_codec_arg(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len) { + const void *def_ptr = (const void *) out_len; /* Any non-NULL pointer will do. */ + const void *ptr; + duk_bool_t isbuffer; + + DUK_ASSERT(out_len != NULL); + DUK_ASSERT(def_ptr != NULL); + DUK_ASSERT(duk_is_valid_index(thr, idx)); /* checked by caller */ + + ptr = (const void *) duk_get_buffer_data_raw(thr, idx, out_len, NULL /*def_ptr*/, 0 /*def_size*/, 0 /*throw_flag*/, &isbuffer); + if (isbuffer) { + DUK_ASSERT(ptr != NULL || *out_len == 0U); + if (DUK_UNLIKELY(ptr == NULL)) { + ptr = def_ptr; + } + DUK_ASSERT(ptr != NULL); + } else { + /* For strings a non-NULL pointer is always guaranteed because + * at least a NUL will be present. + */ + ptr = (const void *) duk_to_lstring(thr, idx, out_len); + DUK_ASSERT(ptr != NULL); + } + DUK_ASSERT(ptr != NULL); + return (const duk_uint8_t *) ptr; +} + +/* + * Base64 + */ + +#if defined(DUK_USE_BASE64_SUPPORT) +/* Bytes emitted for number of padding characters in range [0,4]. */ +DUK_LOCAL const duk_int8_t duk__base64_decode_nequal_step[5] = { + 3, /* #### -> 24 bits, emit 3 bytes */ + 2, /* ###= -> 18 bits, emit 2 bytes */ + 1, /* ##== -> 12 bits, emit 1 byte */ + -1, /* #=== -> 6 bits, error */ + 0, /* ==== -> 0 bits, emit 0 bytes */ +}; + +#if defined(DUK_USE_BASE64_FASTPATH) +DUK_LOCAL const duk_uint8_t duk__base64_enctab_fast[64] = { + 0x41U, 0x42U, 0x43U, 0x44U, 0x45U, 0x46U, 0x47U, 0x48U, 0x49U, 0x4aU, 0x4bU, 0x4cU, 0x4dU, 0x4eU, 0x4fU, 0x50U, /* A...P */ + 0x51U, 0x52U, 0x53U, 0x54U, 0x55U, 0x56U, 0x57U, 0x58U, 0x59U, 0x5aU, 0x61U, 0x62U, 0x63U, 0x64U, 0x65U, 0x66U, /* Q...f */ + 0x67U, 0x68U, 0x69U, 0x6aU, 0x6bU, 0x6cU, 0x6dU, 0x6eU, 0x6fU, 0x70U, 0x71U, 0x72U, 0x73U, 0x74U, 0x75U, 0x76U, /* g...v */ + 0x77U, 0x78U, 0x79U, 0x7aU, 0x30U, 0x31U, 0x32U, 0x33U, 0x34U, 0x35U, 0x36U, 0x37U, 0x38U, 0x39U, 0x2bU, 0x2fU /* w.../ */ +}; +#endif /* DUK_USE_BASE64_FASTPATH */ + +#if defined(DUK_USE_BASE64_FASTPATH) +/* Decode table for one byte of input: + * -1 = allowed whitespace + * -2 = padding + * -3 = error + * 0...63 decoded bytes + */ +DUK_LOCAL const duk_int8_t duk__base64_dectab_fast[256] = { + -3, -3, -3, -3, -3, -3, -3, -3, -3, -1, -1, -3, -3, -1, -3, -3, /* 0x00...0x0f */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0x10...0x1f */ + -1, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, 62, -3, -3, -3, 63, /* 0x20...0x2f */ + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -3, -3, -3, -2, -3, -3, /* 0x30...0x3f */ + -3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 0x40...0x4f */ + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -3, -3, -3, -3, -3, /* 0x50...0x5f */ + -3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, /* 0x60...0x6f */ + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -3, -3, -3, -3, -3, /* 0x70...0x7f */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0x80...0x8f */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0x90...0x9f */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0xa0...0xaf */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0xb0...0xbf */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0xc0...0xcf */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0xd0...0xdf */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, /* 0xe0...0xef */ + -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3 /* 0xf0...0xff */ +}; +#endif /* DUK_USE_BASE64_FASTPATH */ + +#if defined(DUK_USE_BASE64_FASTPATH) +DUK_LOCAL DUK_ALWAYS_INLINE void duk__base64_encode_fast_3(const duk_uint8_t *src, duk_uint8_t *dst) { + duk_uint_t t; + + t = (duk_uint_t) src[0]; + t = (t << 8) + (duk_uint_t) src[1]; + t = (t << 8) + (duk_uint_t) src[2]; + + dst[0] = duk__base64_enctab_fast[t >> 18]; + dst[1] = duk__base64_enctab_fast[(t >> 12) & 0x3fU]; + dst[2] = duk__base64_enctab_fast[(t >> 6) & 0x3fU]; + dst[3] = duk__base64_enctab_fast[t & 0x3fU]; + +#if 0 + /* Tested: not faster on x64, most likely due to aliasing between + * output and input index computation. + */ + /* aaaaaabb bbbbcccc ccdddddd */ + dst[0] = duk__base64_enctab_fast[(src[0] >> 2) & 0x3fU]; + dst[1] = duk__base64_enctab_fast[((src[0] << 4) & 0x30U) | ((src[1] >> 4) & 0x0fU)]; + dst[2] = duk__base64_enctab_fast[((src[1] << 2) & 0x3fU) | ((src[2] >> 6) & 0x03U)]; + dst[3] = duk__base64_enctab_fast[src[2] & 0x3fU]; +#endif +} + +DUK_LOCAL DUK_ALWAYS_INLINE void duk__base64_encode_fast_2(const duk_uint8_t *src, duk_uint8_t *dst) { + duk_uint_t t; + + t = (duk_uint_t) src[0]; + t = (t << 8) + (duk_uint_t) src[1]; + dst[0] = duk__base64_enctab_fast[t >> 10]; /* XXXXXX-- -------- */ + dst[1] = duk__base64_enctab_fast[(t >> 4) & 0x3fU]; /* ------XX XXXX---- */ + dst[2] = duk__base64_enctab_fast[(t << 2) & 0x3fU]; /* -------- ----XXXX */ + dst[3] = DUK_ASC_EQUALS; +} + +DUK_LOCAL DUK_ALWAYS_INLINE void duk__base64_encode_fast_1(const duk_uint8_t *src, duk_uint8_t *dst) { + duk_uint_t t; + + t = (duk_uint_t) src[0]; + dst[0] = duk__base64_enctab_fast[t >> 2]; /* XXXXXX-- */ + dst[1] = duk__base64_enctab_fast[(t << 4) & 0x3fU]; /* ------XX */ + dst[2] = DUK_ASC_EQUALS; + dst[3] = DUK_ASC_EQUALS; +} + +DUK_LOCAL void duk__base64_encode_helper(const duk_uint8_t *src, duk_size_t srclen, duk_uint8_t *dst) { + duk_size_t n; + const duk_uint8_t *p; + duk_uint8_t *q; + + n = srclen; + p = src; + q = dst; + + if (n >= 16U) { + /* Fast path, unrolled by 4, allows interleaving. Process + * 12-byte input chunks which encode to 16-char output chunks. + * Only enter when at least one block is emitted (avoids div+mul + * for short inputs too). + */ + const duk_uint8_t *p_end_fast; + + p_end_fast = p + ((n / 12U) * 12U); + DUK_ASSERT(p_end_fast >= p + 12); + do { + duk__base64_encode_fast_3(p, q); + duk__base64_encode_fast_3(p + 3, q + 4); + duk__base64_encode_fast_3(p + 6, q + 8); + duk__base64_encode_fast_3(p + 9, q + 12); + p += 12; + q += 16; + } while (DUK_LIKELY(p != p_end_fast)); + + DUK_ASSERT(src + srclen >= p); + n = (duk_size_t) (src + srclen - p); + DUK_ASSERT(n < 12U); + } + + /* Remainder. */ + while (n >= 3U) { + duk__base64_encode_fast_3(p, q); + p += 3; + q += 4; + n -= 3U; + } + DUK_ASSERT(n == 0U || n == 1U || n == 2U); + if (n == 1U) { + duk__base64_encode_fast_1(p, q); +#if 0 /* Unnecessary. */ + p += 1; + q += 4; + n -= 1U; +#endif + } else if (n == 2U) { + duk__base64_encode_fast_2(p, q); +#if 0 /* Unnecessary. */ + p += 2; + q += 4; + n -= 2U; +#endif + } else { + DUK_ASSERT(n == 0U); /* nothing to do */ + ; + } +} +#else /* DUK_USE_BASE64_FASTPATH */ +DUK_LOCAL void duk__base64_encode_helper(const duk_uint8_t *src, duk_size_t srclen, duk_uint8_t *dst) { + duk_small_uint_t i, npad; + duk_uint_t t, x, y; + const duk_uint8_t *p; + const duk_uint8_t *p_end; + duk_uint8_t *q; + + p = src; + p_end = src + srclen; + q = dst; + npad = 0U; + + while (p < p_end) { + /* Read 3 bytes into 't', padded by zero. */ + t = 0; + for (i = 0; i < 3; i++) { + t = t << 8; + if (p < p_end) { + t += (duk_uint_t) (*p++); + } else { + /* This only happens on the last loop and we're + * guaranteed to exit on the next loop. + */ + npad++; + } + } + DUK_ASSERT(npad <= 2U); + + /* Emit 4 encoded characters. If npad > 0, some of the + * chars will be incorrect (zero bits) but we fix up the + * padding after the loop. A straightforward 64-byte + * lookup would be faster and cleaner, but this is shorter. + */ + for (i = 0; i < 4; i++) { + x = ((t >> 18) & 0x3fU); + t = t << 6; + + if (x <= 51U) { + if (x <= 25) { + y = x + DUK_ASC_UC_A; + } else { + y = x - 26 + DUK_ASC_LC_A; + } + } else { + if (x <= 61U) { + y = x - 52 + DUK_ASC_0; + } else if (x == 62) { + y = DUK_ASC_PLUS; + } else { + DUK_ASSERT(x == 63); + y = DUK_ASC_SLASH; + } + } + + *q++ = (duk_uint8_t) y; + } + } + + /* Handle padding by rewriting 0-2 bogus characters at the end. + * + * Missing bytes npad base64 example + * 0 0 #### + * 1 1 ###= + * 2 2 ##== + */ + DUK_ASSERT(npad <= 2U); + while (npad > 0U) { + *(q - npad) = DUK_ASC_EQUALS; + npad--; + } +} +#endif /* DUK_USE_BASE64_FASTPATH */ + +#if defined(DUK_USE_BASE64_FASTPATH) +DUK_LOCAL duk_bool_t duk__base64_decode_helper(const duk_uint8_t *src, duk_size_t srclen, duk_uint8_t *dst, duk_uint8_t **out_dst_final) { + duk_int_t x; + duk_uint_t t; + duk_small_uint_t n_equal; + duk_int8_t step; + const duk_uint8_t *p; + const duk_uint8_t *p_end; + const duk_uint8_t *p_end_safe; + duk_uint8_t *q; + + DUK_ASSERT(src != NULL); /* Required by pointer arithmetic below, which fails for NULL. */ + + p = src; + p_end = src + srclen; + p_end_safe = p_end - 8; /* If 'src <= src_end_safe', safe to read 8 bytes. */ + q = dst; + + /* Alternate between a fast path which processes clean groups with no + * padding or whitespace, and a slow path which processes one arbitrary + * group and then re-enters the fast path. This handles e.g. base64 + * with newlines reasonably well because the majority of a line is in + * the fast path. + */ + for (;;) { + /* Fast path, on each loop handle two 4-char input groups. + * If both are clean, emit 6 bytes and continue. If first + * is clean, emit 3 bytes and drop out; otherwise emit + * nothing and drop out. This approach could be extended to + * more groups per loop, but for inputs with e.g. periodic + * newlines (which are common) it might not be an improvement. + */ + while (DUK_LIKELY(p <= p_end_safe)) { + duk_int_t t1, t2; + + /* The lookup byte is intentionally sign extended to + * (at least) 32 bits and then ORed. This ensures + * that is at least 1 byte is negative, the highest + * bit of the accumulator will be set at the end and + * we don't need to check every byte. + * + * Read all input bytes first before writing output + * bytes to minimize aliasing. + */ + DUK_DDD(DUK_DDDPRINT("fast loop: p=%p, p_end_safe=%p, p_end=%p", + (const void *) p, (const void *) p_end_safe, (const void *) p_end)); + + t1 = (duk_int_t) duk__base64_dectab_fast[p[0]]; + t1 = (duk_int_t) ((duk_uint_t) t1 << 6) | (duk_int_t) duk__base64_dectab_fast[p[1]]; + t1 = (duk_int_t) ((duk_uint_t) t1 << 6) | (duk_int_t) duk__base64_dectab_fast[p[2]]; + t1 = (duk_int_t) ((duk_uint_t) t1 << 6) | (duk_int_t) duk__base64_dectab_fast[p[3]]; + + t2 = (duk_int_t) duk__base64_dectab_fast[p[4]]; + t2 = (duk_int_t) ((duk_uint_t) t2 << 6) | (duk_int_t) duk__base64_dectab_fast[p[5]]; + t2 = (duk_int_t) ((duk_uint_t) t2 << 6) | (duk_int_t) duk__base64_dectab_fast[p[6]]; + t2 = (duk_int_t) ((duk_uint_t) t2 << 6) | (duk_int_t) duk__base64_dectab_fast[p[7]]; + + q[0] = (duk_uint8_t) (((duk_uint_t) t1 >> 16) & 0xffU); + q[1] = (duk_uint8_t) (((duk_uint_t) t1 >> 8) & 0xffU); + q[2] = (duk_uint8_t) ((duk_uint_t) t1 & 0xffU); + + q[3] = (duk_uint8_t) (((duk_uint_t) t2 >> 16) & 0xffU); + q[4] = (duk_uint8_t) (((duk_uint_t) t2 >> 8) & 0xffU); + q[5] = (duk_uint8_t) ((duk_uint_t) t2 & 0xffU); + + /* Optimistic check using one branch. */ + if (DUK_LIKELY((t1 | t2) >= 0)) { + p += 8; + q += 6; + } else if (t1 >= 0) { + DUK_DDD(DUK_DDDPRINT("fast loop first group was clean, second was not, process one slow path group")); + DUK_ASSERT(t2 < 0); + p += 4; + q += 3; + break; + } else { + DUK_DDD(DUK_DDDPRINT("fast loop first group was not clean, second does not matter, process one slow path group")); + DUK_ASSERT(t1 < 0); + break; + } + } /* fast path */ + + /* Slow path step 1: try to scan a 4-character encoded group, + * end-of-input, or start-of-padding. We exit with: + * 1. n_chars == 4: full group, no padding, no end-of-input. + * 2. n_chars < 4: partial group (may also be 0), encountered + * padding or end of input. + * + * The accumulator is initialized to 1; this allows us to detect + * a full group by comparing >= 0x1000000 without an extra + * counter variable. + */ + t = 1UL; + for (;;) { + DUK_DDD(DUK_DDDPRINT("slow loop: p=%p, p_end=%p, t=%lu", + (const void *) p, (const void *) p_end, (unsigned long) t)); + + if (DUK_LIKELY(p < p_end)) { + x = duk__base64_dectab_fast[*p++]; + if (DUK_LIKELY(x >= 0)) { + DUK_ASSERT(x >= 0 && x <= 63); + t = (t << 6) + (duk_uint_t) x; + if (t >= 0x1000000UL) { + break; + } + } else if (x == -1) { + continue; /* allowed ascii whitespace */ + } else if (x == -2) { + p--; + break; /* start of padding */ + } else { + DUK_ASSERT(x == -3); + goto decode_error; + } + } else { + break; /* end of input */ + } + } /* slow path step 1 */ + + /* Complete the padding by simulating pad characters, + * regardless of actual input padding chars. + */ + n_equal = 0; + while (t < 0x1000000UL) { + t = (t << 6) + 0U; + n_equal++; + } + + /* Slow path step 2: deal with full/partial group, padding, + * etc. Note that for num chars in [0,3] we intentionally emit + * 3 bytes but don't step forward that much, buffer space is + * guaranteed in setup. + * + * num chars: + * 0 #### no output (= step 0) + * 1 #=== reject, 6 bits of data + * 2 ##== 12 bits of data, output 1 byte (= step 1) + * 3 ###= 18 bits of data, output 2 bytes (= step 2) + * 4 #### 24 bits of data, output 3 bytes (= step 3) + */ + q[0] = (duk_uint8_t) ((t >> 16) & 0xffU); + q[1] = (duk_uint8_t) ((t >> 8) & 0xffU); + q[2] = (duk_uint8_t) (t & 0xffU); + + DUK_ASSERT(n_equal <= 4); + step = duk__base64_decode_nequal_step[n_equal]; + if (DUK_UNLIKELY(step < 0)) { + goto decode_error; + } + q += step; + + /* Slow path step 3: read and ignore padding and whitespace + * until (a) next non-padding and non-whitespace character + * after which we resume the fast path, or (b) end of input. + * This allows us to accept missing, partial, full, and extra + * padding cases uniformly. We also support concatenated + * base-64 documents because we resume scanning afterwards. + * + * Note that to support concatenated documents well, the '=' + * padding found inside the input must also allow for 'extra' + * padding. For example, 'Zm===' decodes to 'f' and has one + * extra padding char. So, 'Zm===Zm' should decode 'ff', even + * though the standard break-up would be 'Zm==' + '=Zm' which + * doesn't make sense. + * + * We also accept prepended padding like '==Zm9', because it + * is equivalent to an empty document with extra padding ('==') + * followed by a valid document. + */ + + for (;;) { + if (DUK_UNLIKELY(p >= p_end)) { + goto done; + } + x = duk__base64_dectab_fast[*p++]; + if (x == -1 || x == -2) { + ; /* padding or whitespace, keep eating */ + } else { + p--; + break; /* backtrack and go back to fast path, even for -1 */ + } + } /* slow path step 3 */ + } /* outer fast+slow path loop */ + + done: + DUK_DDD(DUK_DDDPRINT("done; p=%p, p_end=%p", + (const void *) p, (const void *) p_end)); + + DUK_ASSERT(p == p_end); + + *out_dst_final = q; + return 1; + + decode_error: + return 0; +} +#else /* DUK_USE_BASE64_FASTPATH */ +DUK_LOCAL duk_bool_t duk__base64_decode_helper(const duk_uint8_t *src, duk_size_t srclen, duk_uint8_t *dst, duk_uint8_t **out_dst_final) { + duk_uint_t t, x; + duk_int_t y; + duk_int8_t step; + const duk_uint8_t *p; + const duk_uint8_t *p_end; + duk_uint8_t *q; + /* 0x09, 0x0a, or 0x0d */ + duk_uint32_t mask_white = (1U << 9) | (1U << 10) | (1U << 13); + + /* 't' tracks progress of the decoded group: + * + * t == 1 no valid chars yet + * t >= 0x40 1x6 = 6 bits shifted in + * t >= 0x1000 2x6 = 12 bits shifted in + * t >= 0x40000 3x6 = 18 bits shifted in + * t >= 0x1000000 4x6 = 24 bits shifted in + * + * By initializing t=1 there's no need for a separate counter for + * the number of characters found so far. + */ + p = src; + p_end = src + srclen; + q = dst; + t = 1UL; + + for (;;) { + duk_small_uint_t n_equal; + + DUK_ASSERT(t >= 1U); + if (p >= p_end) { + /* End of input: if input exists, treat like + * start of padding, finish the block, then + * re-enter here to see we're done. + */ + if (t == 1U) { + break; + } else { + goto simulate_padding; + } + } + + x = *p++; + + if (x >= 0x41U) { + /* Valid: a-z and A-Z. */ + DUK_ASSERT(x >= 0x41U && x <= 0xffU); + if (x >= 0x61U && x <= 0x7aU) { + y = (duk_int_t) x - 0x61 + 26; + } else if (x <= 0x5aU) { + y = (duk_int_t) x - 0x41; + } else { + goto decode_error; + } + } else if (x >= 0x30U) { + /* Valid: 0-9 and =. */ + DUK_ASSERT(x >= 0x30U && x <= 0x40U); + if (x <= 0x39U) { + y = (duk_int_t) x - 0x30 + 52; + } else if (x == 0x3dU) { + /* Skip padding and whitespace unless we're in the + * middle of a block. Otherwise complete group by + * simulating shifting in the correct padding. + */ + if (t == 1U) { + continue; + } + goto simulate_padding; + } else { + goto decode_error; + } + } else if (x >= 0x20U) { + /* Valid: +, /, and 0x20 whitespace. */ + DUK_ASSERT(x >= 0x20U && x <= 0x2fU); + if (x == 0x2bU) { + y = 62; + } else if (x == 0x2fU) { + y = 63; + } else if (x == 0x20U) { + continue; + } else { + goto decode_error; + } + } else { + /* Valid: whitespace. */ + duk_uint32_t m; + DUK_ASSERT(x < 0x20U); /* 0x00 to 0x1f */ + m = (1U << x); + if (mask_white & m) { + /* Allow basic ASCII whitespace. */ + continue; + } else { + goto decode_error; + } + } + + DUK_ASSERT(y >= 0 && y <= 63); + t = (t << 6) + (duk_uint_t) y; + if (t < 0x1000000UL) { + continue; + } + /* fall through; no padding will be added */ + + simulate_padding: + n_equal = 0; + while (t < 0x1000000UL) { + t = (t << 6) + 0U; + n_equal++; + } + + /* Output 3 bytes from 't' and advance as needed. */ + q[0] = (duk_uint8_t) ((t >> 16) & 0xffU); + q[1] = (duk_uint8_t) ((t >> 8) & 0xffU); + q[2] = (duk_uint8_t) (t & 0xffU); + + DUK_ASSERT(n_equal <= 4U); + step = duk__base64_decode_nequal_step[n_equal]; + if (step < 0) { + goto decode_error; + } + q += step; + + /* Re-enter loop. The actual padding characters are skipped + * by the main loop. This handles cases like missing, partial, + * full, and extra padding, and allows parsing of concatenated + * documents (with extra padding) like: Zm===Zm. Also extra + * prepended padding is accepted: ===Zm9v. + */ + t = 1U; + } + DUK_ASSERT(t == 1UL); + + *out_dst_final = q; + return 1; + + decode_error: + return 0; +} +#endif /* DUK_USE_BASE64_FASTPATH */ + +DUK_EXTERNAL const char *duk_base64_encode(duk_hthread *thr, duk_idx_t idx) { + const duk_uint8_t *src; + duk_size_t srclen; + duk_size_t dstlen; + duk_uint8_t *dst; + const char *ret; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + src = duk__prep_codec_arg(thr, idx, &srclen); + DUK_ASSERT(src != NULL); + + /* Compute exact output length. Computation must not wrap; this + * limit works for 32-bit size_t: + * >>> srclen = 3221225469 + * >>> '%x' % ((srclen + 2) / 3 * 4) + * 'fffffffc' + */ + if (srclen > 3221225469UL) { + goto type_error; + } + dstlen = (srclen + 2U) / 3U * 4U; + dst = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, dstlen); + + duk__base64_encode_helper((const duk_uint8_t *) src, srclen, dst); + + ret = duk_buffer_to_string(thr, -1); /* Safe, result is ASCII. */ + duk_replace(thr, idx); + return ret; + + type_error: + DUK_ERROR_TYPE(thr, DUK_STR_BASE64_ENCODE_FAILED); + DUK_WO_NORETURN(return NULL;); +} + +DUK_EXTERNAL void duk_base64_decode(duk_hthread *thr, duk_idx_t idx) { + const duk_uint8_t *src; + duk_size_t srclen; + duk_size_t dstlen; + duk_uint8_t *dst; + duk_uint8_t *dst_final; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + src = duk__prep_codec_arg(thr, idx, &srclen); + DUK_ASSERT(src != NULL); + + /* Round up and add safety margin. Avoid addition before division to + * avoid possibility of wrapping. Margin includes +3 for rounding up, + * and +3 for one extra group: the decoder may emit and then backtrack + * a full group (3 bytes) from zero-sized input for technical reasons. + * Similarly, 'xx' may ecause 1+3 = bytes to be emitted and then + * backtracked. + */ + dstlen = (srclen / 4) * 3 + 6; /* upper limit, assuming no whitespace etc */ + dst = (duk_uint8_t *) duk_push_dynamic_buffer(thr, dstlen); + /* Note: for dstlen=0, dst may be NULL */ + + if (!duk__base64_decode_helper((const duk_uint8_t *) src, srclen, dst, &dst_final)) { + goto type_error; + } + + /* XXX: convert to fixed buffer? */ + (void) duk_resize_buffer(thr, -1, (duk_size_t) (dst_final - dst)); + duk_replace(thr, idx); + return; + + type_error: + DUK_ERROR_TYPE(thr, DUK_STR_BASE64_DECODE_FAILED); + DUK_WO_NORETURN(return;); +} +#else /* DUK_USE_BASE64_SUPPORT */ +DUK_EXTERNAL const char *duk_base64_encode(duk_hthread *thr, duk_idx_t idx) { + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return NULL;); +} + +DUK_EXTERNAL void duk_base64_decode(duk_hthread *thr, duk_idx_t idx) { + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_BASE64_SUPPORT */ + +/* + * Hex + */ + +#if defined(DUK_USE_HEX_SUPPORT) +DUK_EXTERNAL const char *duk_hex_encode(duk_hthread *thr, duk_idx_t idx) { + const duk_uint8_t *inp; + duk_size_t len; + duk_size_t i; + duk_uint8_t *buf; + const char *ret; +#if defined(DUK_USE_HEX_FASTPATH) + duk_size_t len_safe; + duk_uint16_t *p16; +#endif + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + inp = duk__prep_codec_arg(thr, idx, &len); + DUK_ASSERT(inp != NULL); + + /* Fixed buffer, no zeroing because we'll fill all the data. */ + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, len * 2); + DUK_ASSERT(buf != NULL); + +#if defined(DUK_USE_HEX_FASTPATH) + DUK_ASSERT((((duk_size_t) buf) & 0x01U) == 0); /* pointer is aligned, guaranteed for fixed buffer */ + p16 = (duk_uint16_t *) (void *) buf; + len_safe = len & ~0x03U; + for (i = 0; i < len_safe; i += 4) { + p16[0] = duk_hex_enctab[inp[i]]; + p16[1] = duk_hex_enctab[inp[i + 1]]; + p16[2] = duk_hex_enctab[inp[i + 2]]; + p16[3] = duk_hex_enctab[inp[i + 3]]; + p16 += 4; + } + for (; i < len; i++) { + *p16++ = duk_hex_enctab[inp[i]]; + } +#else /* DUK_USE_HEX_FASTPATH */ + for (i = 0; i < len; i++) { + duk_small_uint_t t; + t = (duk_small_uint_t) inp[i]; + buf[i*2 + 0] = duk_lc_digits[t >> 4]; + buf[i*2 + 1] = duk_lc_digits[t & 0x0f]; + } +#endif /* DUK_USE_HEX_FASTPATH */ + + /* XXX: Using a string return value forces a string intern which is + * not always necessary. As a rough performance measure, hex encode + * time for tests/perf/test-hex-encode.js dropped from ~35s to ~15s + * without string coercion. Change to returning a buffer and let the + * caller coerce to string if necessary? + */ + + ret = duk_buffer_to_string(thr, -1); /* Safe, result is ASCII. */ + duk_replace(thr, idx); + return ret; +} + +DUK_EXTERNAL void duk_hex_decode(duk_hthread *thr, duk_idx_t idx) { + const duk_uint8_t *inp; + duk_size_t len; + duk_size_t i; + duk_int_t t; + duk_uint8_t *buf; +#if defined(DUK_USE_HEX_FASTPATH) + duk_int_t chk; + duk_uint8_t *p; + duk_size_t len_safe; +#endif + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + inp = duk__prep_codec_arg(thr, idx, &len); + DUK_ASSERT(inp != NULL); + + if (len & 0x01) { + goto type_error; + } + + /* Fixed buffer, no zeroing because we'll fill all the data. */ + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, len / 2); + DUK_ASSERT(buf != NULL); + +#if defined(DUK_USE_HEX_FASTPATH) + p = buf; + len_safe = len & ~0x07U; + for (i = 0; i < len_safe; i += 8) { + t = ((duk_int_t) duk_hex_dectab_shift4[inp[i]]) | + ((duk_int_t) duk_hex_dectab[inp[i + 1]]); + chk = t; + p[0] = (duk_uint8_t) t; + t = ((duk_int_t) duk_hex_dectab_shift4[inp[i + 2]]) | + ((duk_int_t) duk_hex_dectab[inp[i + 3]]); + chk |= t; + p[1] = (duk_uint8_t) t; + t = ((duk_int_t) duk_hex_dectab_shift4[inp[i + 4]]) | + ((duk_int_t) duk_hex_dectab[inp[i + 5]]); + chk |= t; + p[2] = (duk_uint8_t) t; + t = ((duk_int_t) duk_hex_dectab_shift4[inp[i + 6]]) | + ((duk_int_t) duk_hex_dectab[inp[i + 7]]); + chk |= t; + p[3] = (duk_uint8_t) t; + p += 4; + + /* Check if any lookup above had a negative result. */ + if (DUK_UNLIKELY(chk < 0)) { + goto type_error; + } + } + for (; i < len; i += 2) { + /* First cast to duk_int_t to sign extend, second cast to + * duk_uint_t to avoid signed left shift, and final cast to + * duk_int_t result type. + */ + t = (duk_int_t) ((((duk_uint_t) (duk_int_t) duk_hex_dectab[inp[i]]) << 4U) | + ((duk_uint_t) (duk_int_t) duk_hex_dectab[inp[i + 1]])); + if (DUK_UNLIKELY(t < 0)) { + goto type_error; + } + *p++ = (duk_uint8_t) t; + } +#else /* DUK_USE_HEX_FASTPATH */ + for (i = 0; i < len; i += 2) { + /* For invalid characters the value -1 gets extended to + * at least 16 bits. If either nybble is invalid, the + * resulting 't' will be < 0. + */ + t = (duk_int_t) ((((duk_uint_t) (duk_int_t) duk_hex_dectab[inp[i]]) << 4U) | + ((duk_uint_t) (duk_int_t) duk_hex_dectab[inp[i + 1]])); + if (DUK_UNLIKELY(t < 0)) { + goto type_error; + } + buf[i >> 1] = (duk_uint8_t) t; + } +#endif /* DUK_USE_HEX_FASTPATH */ + + duk_replace(thr, idx); + return; + + type_error: + DUK_ERROR_TYPE(thr, DUK_STR_HEX_DECODE_FAILED); + DUK_WO_NORETURN(return;); +} +#else /* DUK_USE_HEX_SUPPORT */ +DUK_EXTERNAL const char *duk_hex_encode(duk_hthread *thr, duk_idx_t idx) { + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return NULL;); +} +DUK_EXTERNAL void duk_hex_decode(duk_hthread *thr, duk_idx_t idx) { + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_HEX_SUPPORT */ + +/* + * JSON + */ + +#if defined(DUK_USE_JSON_SUPPORT) +DUK_EXTERNAL const char *duk_json_encode(duk_hthread *thr, duk_idx_t idx) { +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t top_at_entry; +#endif + const char *ret; + + DUK_ASSERT_API_ENTRY(thr); +#if defined(DUK_USE_ASSERTIONS) + top_at_entry = duk_get_top(thr); +#endif + + idx = duk_require_normalize_index(thr, idx); + duk_bi_json_stringify_helper(thr, + idx /*idx_value*/, + DUK_INVALID_INDEX /*idx_replacer*/, + DUK_INVALID_INDEX /*idx_space*/, + 0 /*flags*/); + DUK_ASSERT(duk_is_string(thr, -1)); + duk_replace(thr, idx); + ret = duk_get_string(thr, idx); + + DUK_ASSERT(duk_get_top(thr) == top_at_entry); + + return ret; +} + +DUK_EXTERNAL void duk_json_decode(duk_hthread *thr, duk_idx_t idx) { +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t top_at_entry; +#endif + + DUK_ASSERT_API_ENTRY(thr); +#if defined(DUK_USE_ASSERTIONS) + top_at_entry = duk_get_top(thr); +#endif + + idx = duk_require_normalize_index(thr, idx); + duk_bi_json_parse_helper(thr, + idx /*idx_value*/, + DUK_INVALID_INDEX /*idx_reviver*/, + 0 /*flags*/); + duk_replace(thr, idx); + + DUK_ASSERT(duk_get_top(thr) == top_at_entry); +} +#else /* DUK_USE_JSON_SUPPORT */ +DUK_EXTERNAL const char *duk_json_encode(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return NULL;); +} + +DUK_EXTERNAL void duk_json_decode(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_JSON_SUPPORT */ +#line 1 "duk_api_compile.c" +/* + * Compilation and evaluation + */ + +/* #include duk_internal.h -> already included */ + +typedef struct duk__compile_raw_args duk__compile_raw_args; +struct duk__compile_raw_args { + duk_size_t src_length; /* should be first on 64-bit platforms */ + const duk_uint8_t *src_buffer; + duk_uint_t flags; +}; + +/* Eval is just a wrapper now. */ +DUK_EXTERNAL duk_int_t duk_eval_raw(duk_hthread *thr, const char *src_buffer, duk_size_t src_length, duk_uint_t flags) { + duk_int_t rc; + + DUK_ASSERT_API_ENTRY(thr); + + /* Note: strictness is *not* inherited from the current Duktape/C. + * This would be confusing because the current strictness state + * depends on whether we're running inside a Duktape/C activation + * (= strict mode) or outside of any activation (= non-strict mode). + * See tests/api/test-eval-strictness.c for more discussion. + */ + + /* [ ... source? filename? ] (depends on flags) */ + + rc = duk_compile_raw(thr, src_buffer, src_length, flags | DUK_COMPILE_EVAL); /* may be safe, or non-safe depending on flags */ + + /* [ ... closure/error ] */ + + if (rc != DUK_EXEC_SUCCESS) { + rc = DUK_EXEC_ERROR; + goto got_rc; + } + + duk_push_global_object(thr); /* explicit 'this' binding, see GH-164 */ + + if (flags & DUK_COMPILE_SAFE) { + rc = duk_pcall_method(thr, 0); + } else { + duk_call_method(thr, 0); + rc = DUK_EXEC_SUCCESS; + } + + /* [ ... result/error ] */ + + got_rc: + if (flags & DUK_COMPILE_NORESULT) { + duk_pop(thr); + } + + return rc; +} + +/* Helper which can be called both directly and with duk_safe_call(). */ +DUK_LOCAL duk_ret_t duk__do_compile(duk_hthread *thr, void *udata) { + duk__compile_raw_args *comp_args; + duk_uint_t flags; + duk_hcompfunc *h_templ; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(udata != NULL); + + /* Note: strictness is not inherited from the current Duktape/C + * context. Otherwise it would not be possible to compile + * non-strict code inside a Duktape/C activation (which is + * always strict now). See tests/api/test-eval-strictness.c + * for discussion. + */ + + /* [ ... source? filename? ] (depends on flags) */ + + comp_args = (duk__compile_raw_args *) udata; + flags = comp_args->flags; + + if (flags & DUK_COMPILE_NOFILENAME) { + /* Automatic filename: 'eval' or 'input'. */ + duk_push_hstring_stridx(thr, (flags & DUK_COMPILE_EVAL) ? DUK_STRIDX_EVAL : DUK_STRIDX_INPUT); + } + + /* [ ... source? filename ] */ + + if (!comp_args->src_buffer) { + duk_hstring *h_sourcecode; + + h_sourcecode = duk_get_hstring(thr, -2); + if ((flags & DUK_COMPILE_NOSOURCE) || /* args incorrect */ + (h_sourcecode == NULL)) { /* e.g. duk_push_string_file_raw() pushed undefined */ + DUK_ERROR_TYPE(thr, DUK_STR_NO_SOURCECODE); + DUK_WO_NORETURN(return 0;); + } + DUK_ASSERT(h_sourcecode != NULL); + comp_args->src_buffer = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_sourcecode); + comp_args->src_length = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h_sourcecode); + } + DUK_ASSERT(comp_args->src_buffer != NULL); + + if (flags & DUK_COMPILE_FUNCTION) { + flags |= DUK_COMPILE_EVAL | DUK_COMPILE_FUNCEXPR; + } + + /* [ ... source? filename ] */ + + duk_js_compile(thr, comp_args->src_buffer, comp_args->src_length, flags); + + /* [ ... source? func_template ] */ + + if (flags & DUK_COMPILE_NOSOURCE) { + ; + } else { + duk_remove_m2(thr); + } + + /* [ ... func_template ] */ + + h_templ = (duk_hcompfunc *) duk_known_hobject(thr, -1); + duk_js_push_closure(thr, + h_templ, + thr->builtins[DUK_BIDX_GLOBAL_ENV], + thr->builtins[DUK_BIDX_GLOBAL_ENV], + 1 /*add_auto_proto*/); + duk_remove_m2(thr); /* -> [ ... closure ] */ + + /* [ ... closure ] */ + + return 1; +} + +DUK_EXTERNAL duk_int_t duk_compile_raw(duk_hthread *thr, const char *src_buffer, duk_size_t src_length, duk_uint_t flags) { + duk__compile_raw_args comp_args_alloc; + duk__compile_raw_args *comp_args = &comp_args_alloc; + + DUK_ASSERT_API_ENTRY(thr); + + if ((flags & DUK_COMPILE_STRLEN) && (src_buffer != NULL)) { + /* String length is computed here to avoid multiple evaluation + * of a macro argument in the calling side. + */ + src_length = DUK_STRLEN(src_buffer); + } + + comp_args->src_buffer = (const duk_uint8_t *) src_buffer; + comp_args->src_length = src_length; + comp_args->flags = flags; + + /* [ ... source? filename? ] (depends on flags) */ + + if (flags & DUK_COMPILE_SAFE) { + duk_int_t rc; + duk_int_t nargs; + duk_int_t nrets = 1; + + /* Arguments can be: [ source? filename? &comp_args] so that + * nargs is 1 to 3. Call site encodes the correct nargs count + * directly into flags. + */ + nargs = flags & 0x07; + DUK_ASSERT(nargs == ((flags & DUK_COMPILE_NOSOURCE) ? 0 : 1) + + ((flags & DUK_COMPILE_NOFILENAME) ? 0 : 1)); + rc = duk_safe_call(thr, duk__do_compile, (void *) comp_args, nargs, nrets); + + /* [ ... closure ] */ + return rc; + } + + (void) duk__do_compile(thr, (void *) comp_args); + + /* [ ... closure ] */ + return DUK_EXEC_SUCCESS; +} +#line 1 "duk_api_debug.c" +/* + * Debugging related API calls + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_JSON_SUPPORT) +DUK_EXTERNAL void duk_push_context_dump(duk_hthread *thr) { + duk_idx_t idx; + duk_idx_t top; + + DUK_ASSERT_API_ENTRY(thr); + + /* We don't duk_require_stack() here now, but rely on the caller having + * enough space. + */ + + top = duk_get_top(thr); + duk_push_bare_array(thr); + for (idx = 0; idx < top; idx++) { + duk_dup(thr, idx); + duk_put_prop_index(thr, -2, (duk_uarridx_t) idx); + } + + /* XXX: conversion errors should not propagate outwards. + * Perhaps values need to be coerced individually? + */ + duk_bi_json_stringify_helper(thr, + duk_get_top_index(thr), /*idx_value*/ + DUK_INVALID_INDEX, /*idx_replacer*/ + DUK_INVALID_INDEX, /*idx_space*/ + DUK_JSON_FLAG_EXT_CUSTOM | + DUK_JSON_FLAG_ASCII_ONLY | + DUK_JSON_FLAG_AVOID_KEY_QUOTES /*flags*/); + + duk_push_sprintf(thr, "ctx: top=%ld, stack=%s", (long) top, (const char *) duk_safe_to_string(thr, -1)); + duk_replace(thr, -3); /* [ ... arr jsonx(arr) res ] -> [ ... res jsonx(arr) ] */ + duk_pop(thr); + DUK_ASSERT(duk_is_string(thr, -1)); +} +#else /* DUK_USE_JSON_SUPPORT */ +DUK_EXTERNAL void duk_push_context_dump(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_JSON_SUPPORT */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + +DUK_EXTERNAL void duk_debugger_attach(duk_hthread *thr, + duk_debug_read_function read_cb, + duk_debug_write_function write_cb, + duk_debug_peek_function peek_cb, + duk_debug_read_flush_function read_flush_cb, + duk_debug_write_flush_function write_flush_cb, + duk_debug_request_function request_cb, + duk_debug_detached_function detached_cb, + void *udata) { + duk_heap *heap; + const char *str; + duk_size_t len; + + /* XXX: should there be an error or an automatic detach if + * already attached? + */ + + DUK_D(DUK_DPRINT("application called duk_debugger_attach()")); + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(read_cb != NULL); + DUK_ASSERT(write_cb != NULL); + /* Other callbacks are optional. */ + + heap = thr->heap; + heap->dbg_read_cb = read_cb; + heap->dbg_write_cb = write_cb; + heap->dbg_peek_cb = peek_cb; + heap->dbg_read_flush_cb = read_flush_cb; + heap->dbg_write_flush_cb = write_flush_cb; + heap->dbg_request_cb = request_cb; + heap->dbg_detached_cb = detached_cb; + heap->dbg_udata = udata; + heap->dbg_have_next_byte = 0; + + /* Start in paused state. */ + heap->dbg_processing = 0; + heap->dbg_state_dirty = 0; + heap->dbg_force_restart = 0; + heap->dbg_pause_flags = 0; + heap->dbg_pause_act = NULL; + heap->dbg_pause_startline = 0; + heap->dbg_exec_counter = 0; + heap->dbg_last_counter = 0; + heap->dbg_last_time = 0.0; + duk_debug_set_paused(heap); /* XXX: overlap with fields above */ + + /* Send version identification and flush right afterwards. Note that + * we must write raw, unframed bytes here. + */ + duk_push_sprintf(thr, "%ld %ld %s %s\n", + (long) DUK_DEBUG_PROTOCOL_VERSION, + (long) DUK_VERSION, + (const char *) DUK_GIT_DESCRIBE, + (const char *) DUK_USE_TARGET_INFO); + str = duk_get_lstring(thr, -1, &len); + DUK_ASSERT(str != NULL); + duk_debug_write_bytes(thr, (const duk_uint8_t *) str, len); + duk_debug_write_flush(thr); + duk_pop(thr); +} + +DUK_EXTERNAL void duk_debugger_detach(duk_hthread *thr) { + DUK_D(DUK_DPRINT("application called duk_debugger_detach()")); + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->heap != NULL); + + /* Can be called multiple times with no harm. */ + duk_debug_do_detach(thr->heap); +} + +DUK_EXTERNAL void duk_debugger_cooperate(duk_hthread *thr) { + duk_bool_t processed_messages; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->heap != NULL); + + if (!duk_debug_is_attached(thr->heap)) { + return; + } + if (thr->callstack_curr != NULL || thr->heap->dbg_processing) { + /* Calling duk_debugger_cooperate() while Duktape is being + * called into is not supported. This is not a 100% check + * but prevents any damage in most cases. + */ + return; + } + + processed_messages = duk_debug_process_messages(thr, 1 /*no_block*/); + DUK_UNREF(processed_messages); +} + +DUK_EXTERNAL duk_bool_t duk_debugger_notify(duk_hthread *thr, duk_idx_t nvalues) { + duk_idx_t top; + duk_idx_t idx; + duk_bool_t ret = 0; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->heap != NULL); + + DUK_D(DUK_DPRINT("application called duk_debugger_notify() with nvalues=%ld", (long) nvalues)); + + top = duk_get_top(thr); + if (top < nvalues) { + DUK_ERROR_RANGE(thr, "not enough stack values for notify"); + DUK_WO_NORETURN(return 0;); + } + if (duk_debug_is_attached(thr->heap)) { + duk_debug_write_notify(thr, DUK_DBG_CMD_APPNOTIFY); + for (idx = top - nvalues; idx < top; idx++) { + duk_tval *tv = DUK_GET_TVAL_POSIDX(thr, idx); + duk_debug_write_tval(thr, tv); + } + duk_debug_write_eom(thr); + + /* Return non-zero (true) if we have a good reason to believe + * the notify was delivered; if we're still attached at least + * a transport error was not indicated by the transport write + * callback. This is not a 100% guarantee of course. + */ + if (duk_debug_is_attached(thr->heap)) { + ret = 1; + } + } + duk_pop_n(thr, nvalues); + return ret; +} + +DUK_EXTERNAL void duk_debugger_pause(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->heap != NULL); + + DUK_D(DUK_DPRINT("application called duk_debugger_pause()")); + + /* Treat like a debugger statement: ignore when not attached. */ + if (duk_debug_is_attached(thr->heap)) { + if (duk_debug_is_paused(thr->heap)) { + DUK_D(DUK_DPRINT("duk_debugger_pause() called when already paused; ignoring")); + } else { + duk_debug_set_paused(thr->heap); + + /* Pause on the next opcode executed. This is always safe to do even + * inside the debugger message loop: the interrupt counter will be reset + * to its proper value when the message loop exits. + */ + thr->interrupt_init = 1; + thr->interrupt_counter = 0; + } + } +} + +#else /* DUK_USE_DEBUGGER_SUPPORT */ + +DUK_EXTERNAL void duk_debugger_attach(duk_hthread *thr, + duk_debug_read_function read_cb, + duk_debug_write_function write_cb, + duk_debug_peek_function peek_cb, + duk_debug_read_flush_function read_flush_cb, + duk_debug_write_flush_function write_flush_cb, + duk_debug_request_function request_cb, + duk_debug_detached_function detached_cb, + void *udata) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(read_cb); + DUK_UNREF(write_cb); + DUK_UNREF(peek_cb); + DUK_UNREF(read_flush_cb); + DUK_UNREF(write_flush_cb); + DUK_UNREF(request_cb); + DUK_UNREF(detached_cb); + DUK_UNREF(udata); + DUK_ERROR_TYPE(thr, "no debugger support"); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_debugger_detach(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ERROR_TYPE(thr, "no debugger support"); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_debugger_cooperate(duk_hthread *thr) { + /* nop */ + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(thr); +} + +DUK_EXTERNAL duk_bool_t duk_debugger_notify(duk_hthread *thr, duk_idx_t nvalues) { + duk_idx_t top; + + DUK_ASSERT_API_ENTRY(thr); + + top = duk_get_top(thr); + if (top < nvalues) { + DUK_ERROR_RANGE_INVALID_COUNT(thr); + DUK_WO_NORETURN(return 0;); + } + + /* No debugger support, just pop values. */ + duk_pop_n(thr, nvalues); + return 0; +} + +DUK_EXTERNAL void duk_debugger_pause(duk_hthread *thr) { + /* Treat like debugger statement: nop */ + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(thr); +} + +#endif /* DUK_USE_DEBUGGER_SUPPORT */ +#line 1 "duk_api_heap.c" +/* + * Heap creation and destruction + */ + +/* #include duk_internal.h -> already included */ + +typedef struct duk_internal_thread_state duk_internal_thread_state; + +struct duk_internal_thread_state { + duk_ljstate lj; + duk_bool_t creating_error; + duk_hthread *curr_thread; + duk_int_t call_recursion_depth; +}; + +DUK_EXTERNAL duk_hthread *duk_create_heap(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *heap_udata, + duk_fatal_function fatal_handler) { + duk_heap *heap = NULL; + duk_hthread *thr; + + /* Assume that either all memory funcs are NULL or non-NULL, mixed + * cases will now be unsafe. + */ + + /* XXX: just assert non-NULL values here and make caller arguments + * do the defaulting to the default implementations (smaller code)? + */ + + if (!alloc_func) { + DUK_ASSERT(realloc_func == NULL); + DUK_ASSERT(free_func == NULL); +#if defined(DUK_USE_PROVIDE_DEFAULT_ALLOC_FUNCTIONS) + alloc_func = duk_default_alloc_function; + realloc_func = duk_default_realloc_function; + free_func = duk_default_free_function; +#else + DUK_D(DUK_DPRINT("no allocation functions given and no default providers")); + return NULL; +#endif + } else { + DUK_ASSERT(realloc_func != NULL); + DUK_ASSERT(free_func != NULL); + } + + if (!fatal_handler) { + fatal_handler = duk_default_fatal_handler; + } + + DUK_ASSERT(alloc_func != NULL); + DUK_ASSERT(realloc_func != NULL); + DUK_ASSERT(free_func != NULL); + DUK_ASSERT(fatal_handler != NULL); + + heap = duk_heap_alloc(alloc_func, realloc_func, free_func, heap_udata, fatal_handler); + if (!heap) { + return NULL; + } + thr = heap->heap_thread; + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + return thr; +} + +DUK_EXTERNAL void duk_destroy_heap(duk_hthread *thr) { + duk_heap *heap; + + if (!thr) { + return; + } + DUK_ASSERT_API_ENTRY(thr); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + duk_heap_free(heap); +} + +DUK_EXTERNAL void duk_suspend(duk_hthread *thr, duk_thread_state *state) { + duk_internal_thread_state *snapshot = (duk_internal_thread_state *) (void *) state; + duk_heap *heap; + duk_ljstate *lj; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(state != NULL); /* unvalidated */ + + /* Currently not supported when called from within a finalizer. + * If that is done, the finalizer will remain running indefinitely, + * preventing other finalizers from executing. The assert is a bit + * wider, checking that it would be OK to run pending finalizers. + */ + DUK_ASSERT(thr->heap->pf_prevent_count == 0); + + /* Currently not supported to duk_suspend() from an errCreate() + * call. + */ + DUK_ASSERT(thr->heap->creating_error == 0); + + heap = thr->heap; + lj = &heap->lj; + + duk_push_tval(thr, &lj->value1); + duk_push_tval(thr, &lj->value2); + + /* XXX: creating_error == 0 is asserted above, so no need to store. */ + duk_memcpy((void *) &snapshot->lj, (const void *) lj, sizeof(duk_ljstate)); + snapshot->creating_error = heap->creating_error; + snapshot->curr_thread = heap->curr_thread; + snapshot->call_recursion_depth = heap->call_recursion_depth; + + lj->jmpbuf_ptr = NULL; + lj->type = DUK_LJ_TYPE_UNKNOWN; + DUK_TVAL_SET_UNDEFINED(&lj->value1); + DUK_TVAL_SET_UNDEFINED(&lj->value2); + heap->creating_error = 0; + heap->curr_thread = NULL; + heap->call_recursion_depth = 0; +} + +DUK_EXTERNAL void duk_resume(duk_hthread *thr, const duk_thread_state *state) { + const duk_internal_thread_state *snapshot = (const duk_internal_thread_state *) (const void *) state; + duk_heap *heap; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(state != NULL); /* unvalidated */ + + /* Shouldn't be necessary if duk_suspend() is called before + * duk_resume(), but assert in case API sequence is incorrect. + */ + DUK_ASSERT(thr->heap->pf_prevent_count == 0); + DUK_ASSERT(thr->heap->creating_error == 0); + + heap = thr->heap; + + duk_memcpy((void *) &heap->lj, (const void *) &snapshot->lj, sizeof(duk_ljstate)); + heap->creating_error = snapshot->creating_error; + heap->curr_thread = snapshot->curr_thread; + heap->call_recursion_depth = snapshot->call_recursion_depth; + + duk_pop_2(thr); +} + +/* XXX: better place for this */ +DUK_EXTERNAL void duk_set_global_object(duk_hthread *thr) { + duk_hobject *h_glob; + duk_hobject *h_prev_glob; + duk_hobjenv *h_env; + duk_hobject *h_prev_env; + + DUK_ASSERT_API_ENTRY(thr); + + DUK_D(DUK_DPRINT("replace global object with: %!T", duk_get_tval(thr, -1))); + + h_glob = duk_require_hobject(thr, -1); + DUK_ASSERT(h_glob != NULL); + + /* + * Replace global object. + */ + + h_prev_glob = thr->builtins[DUK_BIDX_GLOBAL]; + DUK_UNREF(h_prev_glob); + thr->builtins[DUK_BIDX_GLOBAL] = h_glob; + DUK_HOBJECT_INCREF(thr, h_glob); + DUK_HOBJECT_DECREF_ALLOWNULL(thr, h_prev_glob); /* side effects, in theory (referenced by global env) */ + + /* + * Replace lexical environment for global scope + * + * Create a new object environment for the global lexical scope. + * We can't just reset the _Target property of the current one, + * because the lexical scope is shared by other threads with the + * same (initial) built-ins. + */ + + h_env = duk_hobjenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJENV)); + DUK_ASSERT(h_env != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) h_env) == NULL); + + DUK_ASSERT(h_env->target == NULL); + DUK_ASSERT(h_glob != NULL); + h_env->target = h_glob; + DUK_HOBJECT_INCREF(thr, h_glob); + DUK_ASSERT(h_env->has_this == 0); + + /* [ ... new_glob ] */ + + h_prev_env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + thr->builtins[DUK_BIDX_GLOBAL_ENV] = (duk_hobject *) h_env; + DUK_HOBJECT_INCREF(thr, (duk_hobject *) h_env); + DUK_HOBJECT_DECREF_ALLOWNULL(thr, h_prev_env); /* side effects */ + DUK_UNREF(h_env); /* without refcounts */ + DUK_UNREF(h_prev_env); + + /* [ ... new_glob ] */ + + duk_pop(thr); + + /* [ ... ] */ +} +#line 1 "duk_api_inspect.c" +/* + * Inspection + */ + +/* #include duk_internal.h -> already included */ + +/* For footprint efficient multiple value setting: arrays are much better than + * varargs, format string with parsing is often better than string pointer arrays. + */ +DUK_LOCAL void duk__inspect_multiple_uint(duk_hthread *thr, const char *fmt, duk_int_t *vals) { + duk_int_t val; + const char *p; + const char *p_curr; + duk_size_t len; + + for (p = fmt;;) { + len = DUK_STRLEN(p); + p_curr = p; + p += len + 1; + if (len == 0) { + /* Double NUL (= empty key) terminates. */ + break; + } + val = *vals++; + if (val >= 0) { + /* Negative values are markers to skip key. */ + duk_push_string(thr, p_curr); + duk_push_int(thr, val); + duk_put_prop(thr, -3); + } + } +} + +/* Raw helper to extract internal information / statistics about a value. + * The return value is an object with properties that are version specific. + * The properties must not expose anything that would lead to security + * issues (e.g. exposing compiled function 'data' buffer might be an issue). + * Currently only counts and sizes and such are given so there shouldn't + * be security implications. + */ + +#define DUK__IDX_TYPE 0 +#define DUK__IDX_ITAG 1 +#define DUK__IDX_REFC 2 +#define DUK__IDX_HBYTES 3 +#define DUK__IDX_CLASS 4 +#define DUK__IDX_PBYTES 5 +#define DUK__IDX_ESIZE 6 +#define DUK__IDX_ENEXT 7 +#define DUK__IDX_ASIZE 8 +#define DUK__IDX_HSIZE 9 +#define DUK__IDX_BCBYTES 10 +#define DUK__IDX_DBYTES 11 +#define DUK__IDX_TSTATE 12 +#define DUK__IDX_VARIANT 13 + +DUK_EXTERNAL void duk_inspect_value(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_heaphdr *h; + /* The temporary values should be in an array rather than individual + * variables which (in practice) ensures that the compiler won't map + * them to registers and emit a lot of unnecessary shuffling code. + */ + duk_int_t vals[14]; + + DUK_ASSERT_API_ENTRY(thr); + + /* Assume two's complement and set everything to -1. */ + duk_memset((void *) &vals, (int) 0xff, sizeof(vals)); + DUK_ASSERT(vals[DUK__IDX_TYPE] == -1); /* spot check one */ + + tv = duk_get_tval_or_unused(thr, idx); + h = (DUK_TVAL_IS_HEAP_ALLOCATED(tv) ? DUK_TVAL_GET_HEAPHDR(tv) : NULL); + + vals[DUK__IDX_TYPE] = duk_get_type_tval(tv); + vals[DUK__IDX_ITAG] = (duk_int_t) DUK_TVAL_GET_TAG(tv); + + duk_push_bare_object(thr); /* Invalidates 'tv'. */ + tv = NULL; + + if (h == NULL) { + goto finish; + } + duk_push_pointer(thr, (void *) h); + duk_put_prop_literal(thr, -2, "hptr"); + +#if 0 + /* Covers a lot of information, e.g. buffer and string variants. */ + duk_push_uint(thr, (duk_uint_t) DUK_HEAPHDR_GET_FLAGS(h)); + duk_put_prop_literal(thr, -2, "hflags"); +#endif + +#if defined(DUK_USE_REFERENCE_COUNTING) + vals[DUK__IDX_REFC] = (duk_int_t) DUK_HEAPHDR_GET_REFCOUNT(h); +#endif + vals[DUK__IDX_VARIANT] = 0; + + /* Heaphdr size and additional allocation size, followed by + * type specific stuff (with varying value count). + */ + switch ((duk_small_int_t) DUK_HEAPHDR_GET_TYPE(h)) { + case DUK_HTYPE_STRING: { + duk_hstring *h_str = (duk_hstring *) h; + vals[DUK__IDX_HBYTES] = (duk_int_t) (sizeof(duk_hstring) + DUK_HSTRING_GET_BYTELEN(h_str) + 1); +#if defined(DUK_USE_HSTRING_EXTDATA) + if (DUK_HSTRING_HAS_EXTDATA(h_str)) { + vals[DUK__IDX_VARIANT] = 1; + } +#endif + break; + } + case DUK_HTYPE_OBJECT: { + duk_hobject *h_obj = (duk_hobject *) h; + + /* XXX: variants here are maybe pointless; class is enough? */ + if (DUK_HOBJECT_IS_ARRAY(h_obj)) { + vals[DUK__IDX_HBYTES] = sizeof(duk_harray); + } else if (DUK_HOBJECT_IS_COMPFUNC(h_obj)) { + vals[DUK__IDX_HBYTES] = sizeof(duk_hcompfunc); + } else if (DUK_HOBJECT_IS_NATFUNC(h_obj)) { + vals[DUK__IDX_HBYTES] = sizeof(duk_hnatfunc); + } else if (DUK_HOBJECT_IS_THREAD(h_obj)) { + vals[DUK__IDX_HBYTES] = sizeof(duk_hthread); + vals[DUK__IDX_TSTATE] = ((duk_hthread *) h_obj)->state; +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + } else if (DUK_HOBJECT_IS_BUFOBJ(h_obj)) { + vals[DUK__IDX_HBYTES] = sizeof(duk_hbufobj); + /* XXX: some size information */ +#endif + } else { + vals[DUK__IDX_HBYTES] = (duk_small_uint_t) sizeof(duk_hobject); + } + + vals[DUK__IDX_CLASS] = (duk_int_t) DUK_HOBJECT_GET_CLASS_NUMBER(h_obj); + vals[DUK__IDX_PBYTES] = (duk_int_t) DUK_HOBJECT_P_ALLOC_SIZE(h_obj); + vals[DUK__IDX_ESIZE] = (duk_int_t) DUK_HOBJECT_GET_ESIZE(h_obj); + vals[DUK__IDX_ENEXT] = (duk_int_t) DUK_HOBJECT_GET_ENEXT(h_obj); + vals[DUK__IDX_ASIZE] = (duk_int_t) DUK_HOBJECT_GET_ASIZE(h_obj); + vals[DUK__IDX_HSIZE] = (duk_int_t) DUK_HOBJECT_GET_HSIZE(h_obj); + + /* Note: e_next indicates the number of gc-reachable entries + * in the entry part, and also indicates the index where the + * next new property would be inserted. It does *not* indicate + * the number of non-NULL keys present in the object. That + * value could be counted separately but requires a pass through + * the key list. + */ + + if (DUK_HOBJECT_IS_COMPFUNC(h_obj)) { + duk_hbuffer *h_data = (duk_hbuffer *) DUK_HCOMPFUNC_GET_DATA(thr->heap, (duk_hcompfunc *) h_obj); + vals[DUK__IDX_BCBYTES] = (duk_int_t) (h_data ? DUK_HBUFFER_GET_SIZE(h_data) : 0); + } + break; + } + case DUK_HTYPE_BUFFER: { + duk_hbuffer *h_buf = (duk_hbuffer *) h; + + if (DUK_HBUFFER_HAS_DYNAMIC(h_buf)) { + if (DUK_HBUFFER_HAS_EXTERNAL(h_buf)) { + vals[DUK__IDX_VARIANT] = 2; /* buffer variant 2: external */ + vals[DUK__IDX_HBYTES] = (duk_uint_t) (sizeof(duk_hbuffer_external)); + } else { + /* When alloc_size == 0 the second allocation may not + * actually exist. + */ + vals[DUK__IDX_VARIANT] = 1; /* buffer variant 1: dynamic */ + vals[DUK__IDX_HBYTES] = (duk_uint_t) (sizeof(duk_hbuffer_dynamic)); + } + vals[DUK__IDX_DBYTES] = (duk_int_t) (DUK_HBUFFER_GET_SIZE(h_buf)); + } else { + DUK_ASSERT(vals[DUK__IDX_VARIANT] == 0); /* buffer variant 0: fixed */ + vals[DUK__IDX_HBYTES] = (duk_int_t) (sizeof(duk_hbuffer_fixed) + DUK_HBUFFER_GET_SIZE(h_buf)); + } + break; + } + } + + finish: + duk__inspect_multiple_uint(thr, + "type" "\x00" "itag" "\x00" "refc" "\x00" "hbytes" "\x00" "class" "\x00" + "pbytes" "\x00" "esize" "\x00" "enext" "\x00" "asize" "\x00" "hsize" "\x00" + "bcbytes" "\x00" "dbytes" "\x00" "tstate" "\x00" "variant" "\x00" "\x00", + (duk_int_t *) &vals); +} + +DUK_EXTERNAL void duk_inspect_callstack_entry(duk_hthread *thr, duk_int_t level) { + duk_activation *act; + duk_uint_fast32_t pc; + duk_uint_fast32_t line; + + DUK_ASSERT_API_ENTRY(thr); + + /* -1 = top callstack entry + * -2 = caller of level -1 + * etc + */ + act = duk_hthread_get_activation_for_level(thr, level); + if (act == NULL) { + duk_push_undefined(thr); + return; + } + duk_push_bare_object(thr); + + /* Relevant PC is just before current one because PC is + * post-incremented. This should match what error augment + * code does. + */ + pc = duk_hthread_get_act_prev_pc(thr, act); + + duk_push_tval(thr, &act->tv_func); + + duk_push_uint(thr, (duk_uint_t) pc); + duk_put_prop_stridx_short(thr, -3, DUK_STRIDX_PC); + +#if defined(DUK_USE_PC2LINE) + line = duk_hobject_pc2line_query(thr, -1, pc); +#else + line = 0; +#endif + duk_push_uint(thr, (duk_uint_t) line); + duk_put_prop_stridx_short(thr, -3, DUK_STRIDX_LINE_NUMBER); + + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_LC_FUNCTION); + /* Providing access to e.g. act->lex_env would be dangerous: these + * internal structures must never be accessible to the application. + * Duktape relies on them having consistent data, and this consistency + * is only asserted for, not checked for. + */ +} + +/* automatic undefs */ +#undef DUK__IDX_ASIZE +#undef DUK__IDX_BCBYTES +#undef DUK__IDX_CLASS +#undef DUK__IDX_DBYTES +#undef DUK__IDX_ENEXT +#undef DUK__IDX_ESIZE +#undef DUK__IDX_HBYTES +#undef DUK__IDX_HSIZE +#undef DUK__IDX_ITAG +#undef DUK__IDX_PBYTES +#undef DUK__IDX_REFC +#undef DUK__IDX_TSTATE +#undef DUK__IDX_TYPE +#undef DUK__IDX_VARIANT +#line 1 "duk_api_memory.c" +/* + * Memory calls. + */ + +/* #include duk_internal.h -> already included */ + +DUK_EXTERNAL void *duk_alloc_raw(duk_hthread *thr, duk_size_t size) { + DUK_ASSERT_API_ENTRY(thr); + + return DUK_ALLOC_RAW(thr->heap, size); +} + +DUK_EXTERNAL void duk_free_raw(duk_hthread *thr, void *ptr) { + DUK_ASSERT_API_ENTRY(thr); + + DUK_FREE_RAW(thr->heap, ptr); +} + +DUK_EXTERNAL void *duk_realloc_raw(duk_hthread *thr, void *ptr, duk_size_t size) { + DUK_ASSERT_API_ENTRY(thr); + + return DUK_REALLOC_RAW(thr->heap, ptr, size); +} + +DUK_EXTERNAL void *duk_alloc(duk_hthread *thr, duk_size_t size) { + DUK_ASSERT_API_ENTRY(thr); + + return DUK_ALLOC(thr->heap, size); +} + +DUK_EXTERNAL void duk_free(duk_hthread *thr, void *ptr) { + DUK_ASSERT_API_ENTRY(thr); + + DUK_FREE_CHECKED(thr, ptr); +} + +DUK_EXTERNAL void *duk_realloc(duk_hthread *thr, void *ptr, duk_size_t size) { + DUK_ASSERT_API_ENTRY(thr); + + /* + * Note: since this is an exposed API call, there should be + * no way a mark-and-sweep could have a side effect on the + * memory allocation behind 'ptr'; the pointer should never + * be something that Duktape wants to change. + * + * Thus, no need to use DUK_REALLOC_INDIRECT (and we don't + * have the storage location here anyway). + */ + + return DUK_REALLOC(thr->heap, ptr, size); +} + +DUK_EXTERNAL void duk_get_memory_functions(duk_hthread *thr, duk_memory_functions *out_funcs) { + duk_heap *heap; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(out_funcs != NULL); + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + + heap = thr->heap; + out_funcs->alloc_func = heap->alloc_func; + out_funcs->realloc_func = heap->realloc_func; + out_funcs->free_func = heap->free_func; + out_funcs->udata = heap->heap_udata; +} + +DUK_EXTERNAL void duk_gc(duk_hthread *thr, duk_uint_t flags) { + duk_heap *heap; + duk_small_uint_t ms_flags; + + DUK_ASSERT_API_ENTRY(thr); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + DUK_D(DUK_DPRINT("mark-and-sweep requested by application")); + DUK_ASSERT(DUK_GC_COMPACT == DUK_MS_FLAG_EMERGENCY); /* Compact flag is 1:1 with emergency flag which forces compaction. */ + ms_flags = (duk_small_uint_t) flags; + duk_heap_mark_and_sweep(heap, ms_flags); +} +#line 1 "duk_api_object.c" +/* + * Object handling: property access and other support functions. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Property handling + * + * The API exposes only the most common property handling functions. + * The caller can invoke ECMAScript built-ins for full control (e.g. + * defineProperty, getOwnPropertyDescriptor). + */ + +DUK_EXTERNAL duk_bool_t duk_get_prop(duk_hthread *thr, duk_idx_t obj_idx) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_bool_t rc; + + DUK_ASSERT_API_ENTRY(thr); + + /* Note: copying tv_obj and tv_key to locals to shield against a valstack + * resize is not necessary for a property get right now. + */ + + tv_obj = duk_require_tval(thr, obj_idx); + tv_key = duk_require_tval(thr, -1); + + rc = duk_hobject_getprop(thr, tv_obj, tv_key); + DUK_ASSERT(rc == 0 || rc == 1); + /* a value is left on stack regardless of rc */ + + duk_remove_m2(thr); /* remove key */ + DUK_ASSERT(duk_is_undefined(thr, -1) || rc == 1); + return rc; /* 1 if property found, 0 otherwise */ +} + +DUK_EXTERNAL duk_bool_t duk_get_prop_string(duk_hthread *thr, duk_idx_t obj_idx, const char *key) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_string(thr, key); + return duk_get_prop(thr, obj_idx); +} + +DUK_EXTERNAL duk_bool_t duk_get_prop_lstring(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_lstring(thr, key, key_len); + return duk_get_prop(thr, obj_idx); +} + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL duk_bool_t duk_get_prop_literal_raw(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + DUK_ASSERT(key[key_len] == (char) 0); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_literal_raw(thr, key, key_len); + return duk_get_prop(thr, obj_idx); +} +#endif + +DUK_EXTERNAL duk_bool_t duk_get_prop_index(duk_hthread *thr, duk_idx_t obj_idx, duk_uarridx_t arr_idx) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_uarridx(thr, arr_idx); + return duk_get_prop(thr, obj_idx); +} + +DUK_EXTERNAL duk_bool_t duk_get_prop_heapptr(duk_hthread *thr, duk_idx_t obj_idx, void *ptr) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_heapptr(thr, ptr); /* NULL -> 'undefined' */ + return duk_get_prop(thr, obj_idx); +} + +DUK_INTERNAL duk_bool_t duk_get_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); + return duk_get_prop(thr, obj_idx); +} + +DUK_INTERNAL duk_bool_t duk_get_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args) { + return duk_get_prop_stridx(thr, (duk_idx_t) (duk_int16_t) (packed_args >> 16), + (duk_small_uint_t) (packed_args & 0xffffUL)); +} + +DUK_INTERNAL duk_bool_t duk_get_prop_stridx_boolean(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx, duk_bool_t *out_has_prop) { + duk_bool_t rc; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + rc = duk_get_prop_stridx(thr, obj_idx, stridx); + if (out_has_prop) { + *out_has_prop = rc; + } + return duk_to_boolean_top_pop(thr); +} + +/* This get variant is for internal use, it differs from standard + * duk_get_prop() in that: + * - Object argument must be an object (primitive values not supported). + * - Key argument must be a string (no coercion). + * - Only own properties are checked (no inheritance). Only "entry part" + * properties are checked (not array index properties). + * - Property must be a plain data property, not a getter. + * - Proxy traps are not triggered. + */ +DUK_INTERNAL duk_bool_t duk_xget_owndataprop(duk_hthread *thr, duk_idx_t obj_idx) { + duk_hobject *h_obj; + duk_hstring *h_key; + duk_tval *tv_val; + + DUK_ASSERT_API_ENTRY(thr); + + /* Note: copying tv_obj and tv_key to locals to shield against a valstack + * resize is not necessary for a property get right now. + */ + + h_obj = duk_get_hobject(thr, obj_idx); + if (h_obj == NULL) { + return 0; + } + h_key = duk_require_hstring(thr, -1); + + tv_val = duk_hobject_find_entry_tval_ptr(thr->heap, h_obj, h_key); + if (tv_val == NULL) { + return 0; + } + + duk_push_tval(thr, tv_val); + duk_remove_m2(thr); /* remove key */ + + return 1; +} + +DUK_INTERNAL duk_bool_t duk_xget_owndataprop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); + return duk_xget_owndataprop(thr, obj_idx); +} + +DUK_INTERNAL duk_bool_t duk_xget_owndataprop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args) { + return duk_xget_owndataprop_stridx(thr, (duk_idx_t) (duk_int16_t) (packed_args >> 16), + (duk_small_uint_t) (packed_args & 0xffffUL)); +} + +DUK_LOCAL duk_bool_t duk__put_prop_shared(duk_hthread *thr, duk_idx_t obj_idx, duk_idx_t idx_key) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_tval *tv_val; + duk_bool_t throw_flag; + duk_bool_t rc; + + /* Note: copying tv_obj and tv_key to locals to shield against a valstack + * resize is not necessary for a property put right now (putprop protects + * against it internally). + */ + + /* Key and value indices are either (-2, -1) or (-1, -2). Given idx_key, + * idx_val is always (idx_key ^ 0x01). + */ + DUK_ASSERT((idx_key == -2 && (idx_key ^ 1) == -1) || + (idx_key == -1 && (idx_key ^ 1) == -2)); + /* XXX: Direct access; faster validation. */ + tv_obj = duk_require_tval(thr, obj_idx); + tv_key = duk_require_tval(thr, idx_key); + tv_val = duk_require_tval(thr, idx_key ^ 1); + throw_flag = duk_is_strict_call(thr); + + rc = duk_hobject_putprop(thr, tv_obj, tv_key, tv_val, throw_flag); + DUK_ASSERT(rc == 0 || rc == 1); + + duk_pop_2(thr); /* remove key and value */ + return rc; /* 1 if property found, 0 otherwise */ +} + +DUK_EXTERNAL duk_bool_t duk_put_prop(duk_hthread *thr, duk_idx_t obj_idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__put_prop_shared(thr, obj_idx, -2); +} + +DUK_EXTERNAL duk_bool_t duk_put_prop_string(duk_hthread *thr, duk_idx_t obj_idx, const char *key) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + /* Careful here and with other duk_put_prop_xxx() helpers: the + * target object and the property value may be in the same value + * stack slot (unusual, but still conceptually clear). + */ + obj_idx = duk_normalize_index(thr, obj_idx); + (void) duk_push_string(thr, key); + return duk__put_prop_shared(thr, obj_idx, -1); +} + +DUK_EXTERNAL duk_bool_t duk_put_prop_lstring(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_normalize_index(thr, obj_idx); + (void) duk_push_lstring(thr, key, key_len); + return duk__put_prop_shared(thr, obj_idx, -1); +} + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL duk_bool_t duk_put_prop_literal_raw(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + DUK_ASSERT(key[key_len] == (char) 0); + + obj_idx = duk_normalize_index(thr, obj_idx); + (void) duk_push_literal_raw(thr, key, key_len); + return duk__put_prop_shared(thr, obj_idx, -1); +} +#endif + +DUK_EXTERNAL duk_bool_t duk_put_prop_index(duk_hthread *thr, duk_idx_t obj_idx, duk_uarridx_t arr_idx) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_uarridx(thr, arr_idx); + return duk__put_prop_shared(thr, obj_idx, -1); +} + +DUK_EXTERNAL duk_bool_t duk_put_prop_heapptr(duk_hthread *thr, duk_idx_t obj_idx, void *ptr) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_heapptr(thr, ptr); /* NULL -> 'undefined' */ + return duk__put_prop_shared(thr, obj_idx, -1); +} + + +DUK_INTERNAL duk_bool_t duk_put_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); + return duk__put_prop_shared(thr, obj_idx, -1); +} + +DUK_INTERNAL duk_bool_t duk_put_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args) { + return duk_put_prop_stridx(thr, (duk_idx_t) (duk_int16_t) (packed_args >> 16), + (duk_small_uint_t) (packed_args & 0xffffUL)); +} + +DUK_EXTERNAL duk_bool_t duk_del_prop(duk_hthread *thr, duk_idx_t obj_idx) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_bool_t throw_flag; + duk_bool_t rc; + + DUK_ASSERT_API_ENTRY(thr); + + /* Note: copying tv_obj and tv_key to locals to shield against a valstack + * resize is not necessary for a property delete right now. + */ + + tv_obj = duk_require_tval(thr, obj_idx); + tv_key = duk_require_tval(thr, -1); + throw_flag = duk_is_strict_call(thr); + + rc = duk_hobject_delprop(thr, tv_obj, tv_key, throw_flag); + DUK_ASSERT(rc == 0 || rc == 1); + + duk_pop(thr); /* remove key */ + return rc; +} + +DUK_EXTERNAL duk_bool_t duk_del_prop_string(duk_hthread *thr, duk_idx_t obj_idx, const char *key) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_string(thr, key); + return duk_del_prop(thr, obj_idx); +} + +DUK_EXTERNAL duk_bool_t duk_del_prop_lstring(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_lstring(thr, key, key_len); + return duk_del_prop(thr, obj_idx); +} + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL duk_bool_t duk_del_prop_literal_raw(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + DUK_ASSERT(key[key_len] == (char) 0); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_literal_raw(thr, key, key_len); + return duk_del_prop(thr, obj_idx); +} +#endif + +DUK_EXTERNAL duk_bool_t duk_del_prop_index(duk_hthread *thr, duk_idx_t obj_idx, duk_uarridx_t arr_idx) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_uarridx(thr, arr_idx); + return duk_del_prop(thr, obj_idx); +} + +DUK_EXTERNAL duk_bool_t duk_del_prop_heapptr(duk_hthread *thr, duk_idx_t obj_idx, void *ptr) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_heapptr(thr, ptr); /* NULL -> 'undefined' */ + return duk_del_prop(thr, obj_idx); +} + +DUK_INTERNAL duk_bool_t duk_del_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); + return duk_del_prop(thr, obj_idx); +} + +#if 0 +DUK_INTERNAL duk_bool_t duk_del_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args) { + return duk_del_prop_stridx(thr, (duk_idx_t) (duk_int16_t) (packed_args >> 16), + (duk_small_uint_t) (packed_args & 0xffffUL)); +} +#endif + +DUK_EXTERNAL duk_bool_t duk_has_prop(duk_hthread *thr, duk_idx_t obj_idx) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_bool_t rc; + + DUK_ASSERT_API_ENTRY(thr); + + /* Note: copying tv_obj and tv_key to locals to shield against a valstack + * resize is not necessary for a property existence check right now. + */ + + tv_obj = duk_require_tval(thr, obj_idx); + tv_key = duk_require_tval(thr, -1); + + rc = duk_hobject_hasprop(thr, tv_obj, tv_key); + DUK_ASSERT(rc == 0 || rc == 1); + + duk_pop(thr); /* remove key */ + return rc; /* 1 if property found, 0 otherwise */ +} + +DUK_EXTERNAL duk_bool_t duk_has_prop_string(duk_hthread *thr, duk_idx_t obj_idx, const char *key) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_string(thr, key); + return duk_has_prop(thr, obj_idx); +} + +DUK_EXTERNAL duk_bool_t duk_has_prop_lstring(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_lstring(thr, key, key_len); + return duk_has_prop(thr, obj_idx); +} + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL duk_bool_t duk_has_prop_literal_raw(duk_hthread *thr, duk_idx_t obj_idx, const char *key, duk_size_t key_len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(key != NULL); + DUK_ASSERT(key[key_len] == (char) 0); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_literal_raw(thr, key, key_len); + return duk_has_prop(thr, obj_idx); +} +#endif + +DUK_EXTERNAL duk_bool_t duk_has_prop_index(duk_hthread *thr, duk_idx_t obj_idx, duk_uarridx_t arr_idx) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_uarridx(thr, arr_idx); + return duk_has_prop(thr, obj_idx); +} + +DUK_EXTERNAL duk_bool_t duk_has_prop_heapptr(duk_hthread *thr, duk_idx_t obj_idx, void *ptr) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + (void) duk_push_heapptr(thr, ptr); /* NULL -> 'undefined' */ + return duk_has_prop(thr, obj_idx); +} + +DUK_INTERNAL duk_bool_t duk_has_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); + return duk_has_prop(thr, obj_idx); +} + +#if 0 +DUK_INTERNAL duk_bool_t duk_has_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args) { + return duk_has_prop_stridx(thr, (duk_idx_t) (duk_int16_t) (packed_args >> 16), + (duk_small_uint_t) (packed_args & 0xffffUL)); +} +#endif + +/* Define own property without inheritance lookups and such. This differs from + * [[DefineOwnProperty]] because special behaviors (like Array 'length') are + * not invoked by this method. The caller must be careful to invoke any such + * behaviors if necessary. + */ +DUK_INTERNAL void duk_xdef_prop(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t desc_flags) { + duk_hobject *obj; + duk_hstring *key; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, obj_idx); + DUK_ASSERT(obj != NULL); + key = duk_to_property_key_hstring(thr, -2); + DUK_ASSERT(key != NULL); + DUK_ASSERT(duk_require_tval(thr, -1) != NULL); + + duk_hobject_define_property_internal(thr, obj, key, desc_flags); + + duk_pop(thr); /* pop key */ +} + +DUK_INTERNAL void duk_xdef_prop_index(duk_hthread *thr, duk_idx_t obj_idx, duk_uarridx_t arr_idx, duk_small_uint_t desc_flags) { + duk_hobject *obj; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, obj_idx); + DUK_ASSERT(obj != NULL); + + duk_hobject_define_property_internal_arridx(thr, obj, arr_idx, desc_flags); + /* value popped by call */ +} + +DUK_INTERNAL void duk_xdef_prop_stridx(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx, duk_small_uint_t desc_flags) { + duk_hobject *obj; + duk_hstring *key; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + + obj = duk_require_hobject(thr, obj_idx); + DUK_ASSERT(obj != NULL); + key = DUK_HTHREAD_GET_STRING(thr, stridx); + DUK_ASSERT(key != NULL); + DUK_ASSERT(duk_require_tval(thr, -1) != NULL); + + duk_hobject_define_property_internal(thr, obj, key, desc_flags); + /* value popped by call */ +} + +DUK_INTERNAL void duk_xdef_prop_stridx_short_raw(duk_hthread *thr, duk_uint_t packed_args) { + duk_xdef_prop_stridx(thr, (duk_idx_t) (duk_int8_t) (packed_args >> 24), + (duk_small_uint_t) (packed_args >> 8) & 0xffffUL, + (duk_small_uint_t) (packed_args & 0xffL)); +} + +#if 0 /*unused*/ +DUK_INTERNAL void duk_xdef_prop_stridx_builtin(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx, duk_small_int_t builtin_idx, duk_small_uint_t desc_flags) { + duk_hobject *obj; + duk_hstring *key; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + DUK_ASSERT_BIDX_VALID(builtin_idx); + + obj = duk_require_hobject(thr, obj_idx); + DUK_ASSERT(obj != NULL); + key = DUK_HTHREAD_GET_STRING(thr, stridx); + DUK_ASSERT(key != NULL); + + duk_push_hobject(thr, thr->builtins[builtin_idx]); + duk_hobject_define_property_internal(thr, obj, key, desc_flags); + /* value popped by call */ +} +#endif + +/* This is a rare property helper; it sets the global thrower (E5 Section 13.2.3) + * setter/getter into an object property. This is needed by the 'arguments' + * object creation code, function instance creation code, and Function.prototype.bind(). + */ + +DUK_INTERNAL void duk_xdef_prop_stridx_thrower(duk_hthread *thr, duk_idx_t obj_idx, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + duk_push_hstring_stridx(thr, stridx); + duk_push_hobject_bidx(thr, DUK_BIDX_TYPE_ERROR_THROWER); + duk_dup_top(thr); + duk_def_prop(thr, obj_idx, DUK_DEFPROP_HAVE_SETTER | DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_FORCE); /* attributes always 0 */ +} + +/* Object.getOwnPropertyDescriptor() equivalent C binding. */ +DUK_EXTERNAL void duk_get_prop_desc(duk_hthread *thr, duk_idx_t obj_idx, duk_uint_t flags) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(flags); /* no flags defined yet */ + + duk_hobject_object_get_own_property_descriptor(thr, obj_idx); /* [ ... key ] -> [ ... desc ] */ +} + +/* Object.defineProperty() equivalent C binding. */ +DUK_EXTERNAL void duk_def_prop(duk_hthread *thr, duk_idx_t obj_idx, duk_uint_t flags) { + duk_idx_t idx_base; + duk_hobject *obj; + duk_hstring *key; + duk_idx_t idx_value; + duk_hobject *get; + duk_hobject *set; + duk_uint_t is_data_desc; + duk_uint_t is_acc_desc; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, obj_idx); + + is_data_desc = flags & (DUK_DEFPROP_HAVE_VALUE | DUK_DEFPROP_HAVE_WRITABLE); + is_acc_desc = flags & (DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); + if (is_data_desc && is_acc_desc) { + /* "Have" flags must not be conflicting so that they would + * apply to both a plain property and an accessor at the same + * time. + */ + goto fail_invalid_desc; + } + + idx_base = duk_get_top_index(thr); + if (flags & DUK_DEFPROP_HAVE_SETTER) { + duk_require_type_mask(thr, idx_base, DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_LIGHTFUNC); + set = duk_get_hobject_promote_lfunc(thr, idx_base); + if (set != NULL && !DUK_HOBJECT_IS_CALLABLE(set)) { + goto fail_not_callable; + } + idx_base--; + } else { + set = NULL; + } + if (flags & DUK_DEFPROP_HAVE_GETTER) { + duk_require_type_mask(thr, idx_base, DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_LIGHTFUNC); + get = duk_get_hobject_promote_lfunc(thr, idx_base); + if (get != NULL && !DUK_HOBJECT_IS_CALLABLE(get)) { + goto fail_not_callable; + } + idx_base--; + } else { + get = NULL; + } + if (flags & DUK_DEFPROP_HAVE_VALUE) { + idx_value = idx_base; + idx_base--; + } else { + idx_value = (duk_idx_t) -1; + } + key = duk_to_property_key_hstring(thr, idx_base); + DUK_ASSERT(key != NULL); + + duk_require_valid_index(thr, idx_base); + + duk_hobject_define_property_helper(thr, + flags /*defprop_flags*/, + obj, + key, + idx_value, + get, + set, + 1 /*throw_flag*/); + + /* Clean up stack */ + + duk_set_top(thr, idx_base); + + /* [ ... obj ... ] */ + + return; + + fail_invalid_desc: + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_DESCRIPTOR); + DUK_WO_NORETURN(return;); + + fail_not_callable: + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CALLABLE); + DUK_WO_NORETURN(return;); +} + +/* + * Object related + */ + +DUK_EXTERNAL void duk_compact(duk_hthread *thr, duk_idx_t obj_idx) { + duk_hobject *obj; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_get_hobject(thr, obj_idx); + if (obj) { + /* Note: this may fail, caller should protect the call if necessary */ + duk_hobject_compact_props(thr, obj); + } +} + +DUK_INTERNAL void duk_compact_m1(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + duk_compact(thr, -1); +} + +/* XXX: the duk_hobject_enum.c stack APIs should be reworked */ + +DUK_EXTERNAL void duk_enum(duk_hthread *thr, duk_idx_t obj_idx, duk_uint_t enum_flags) { + DUK_ASSERT_API_ENTRY(thr); + + duk_dup(thr, obj_idx); + duk_require_hobject_promote_mask(thr, -1, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + duk_hobject_enumerator_create(thr, enum_flags); /* [target] -> [enum] */ +} + +DUK_EXTERNAL duk_bool_t duk_next(duk_hthread *thr, duk_idx_t enum_index, duk_bool_t get_value) { + DUK_ASSERT_API_ENTRY(thr); + + duk_require_hobject(thr, enum_index); + duk_dup(thr, enum_index); + return duk_hobject_enumerator_next(thr, get_value); +} + +DUK_INTERNAL void duk_seal_freeze_raw(duk_hthread *thr, duk_idx_t obj_idx, duk_bool_t is_freeze) { + duk_tval *tv; + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, obj_idx); + DUK_ASSERT(tv != NULL); + + /* Seal/freeze are quite rare in practice so it'd be nice to get the + * correct behavior simply via automatic promotion (at the cost of some + * memory churn). However, the promoted objects don't behave the same, + * e.g. promoted lightfuncs are extensible. + */ + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_BUFFER: + /* Plain buffer: already sealed, but not frozen (and can't be frozen + * because index properties can't be made non-writable. + */ + if (is_freeze) { + goto fail_cannot_freeze; + } + break; + case DUK_TAG_LIGHTFUNC: + /* Lightfunc: already sealed and frozen, success. */ + break; + case DUK_TAG_OBJECT: + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (is_freeze && DUK_HOBJECT_IS_BUFOBJ(h)) { + /* Buffer objects cannot be frozen because there's no internal + * support for making virtual array indices non-writable. + */ + DUK_DD(DUK_DDPRINT("cannot freeze a buffer object")); + goto fail_cannot_freeze; + } + duk_hobject_object_seal_freeze_helper(thr, h, is_freeze); + + /* Sealed and frozen objects cannot gain any more properties, + * so this is a good time to compact them. + */ + duk_hobject_compact_props(thr, h); + break; + default: + /* ES2015 Sections 19.1.2.5, 19.1.2.17 */ + break; + } + return; + + fail_cannot_freeze: + DUK_ERROR_TYPE_INVALID_ARGS(thr); /* XXX: proper error message */ + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_seal(duk_hthread *thr, duk_idx_t obj_idx) { + DUK_ASSERT_API_ENTRY(thr); + + duk_seal_freeze_raw(thr, obj_idx, 0 /*is_freeze*/); +} + +DUK_EXTERNAL void duk_freeze(duk_hthread *thr, duk_idx_t obj_idx) { + DUK_ASSERT_API_ENTRY(thr); + + duk_seal_freeze_raw(thr, obj_idx, 1 /*is_freeze*/); +} + +/* + * Helpers for writing multiple properties + */ + +DUK_EXTERNAL void duk_put_function_list(duk_hthread *thr, duk_idx_t obj_idx, const duk_function_list_entry *funcs) { + const duk_function_list_entry *ent = funcs; + + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + if (ent != NULL) { + while (ent->key != NULL) { + duk_push_c_function(thr, ent->value, ent->nargs); + duk_put_prop_string(thr, obj_idx, ent->key); + ent++; + } + } +} + +DUK_EXTERNAL void duk_put_number_list(duk_hthread *thr, duk_idx_t obj_idx, const duk_number_list_entry *numbers) { + const duk_number_list_entry *ent = numbers; + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + obj_idx = duk_require_normalize_index(thr, obj_idx); + if (ent != NULL) { + while (ent->key != NULL) { + tv = thr->valstack_top++; + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv)); /* value stack init policy */ + DUK_TVAL_SET_NUMBER_CHKFAST_SLOW(tv, ent->value); /* no need for decref/incref */ + duk_put_prop_string(thr, obj_idx, ent->key); + ent++; + } + } +} + +/* + * Shortcut for accessing global object properties + */ + +DUK_EXTERNAL duk_bool_t duk_get_global_string(duk_hthread *thr, const char *key) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + ret = duk_get_prop_string(thr, -1, key); + duk_remove_m2(thr); + return ret; +} + +DUK_EXTERNAL duk_bool_t duk_get_global_lstring(duk_hthread *thr, const char *key, duk_size_t key_len) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + ret = duk_get_prop_lstring(thr, -1, key, key_len); + duk_remove_m2(thr); + return ret; +} + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL duk_bool_t duk_get_global_literal_raw(duk_hthread *thr, const char *key, duk_size_t key_len) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + DUK_ASSERT(key[key_len] == (char) 0); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + ret = duk_get_prop_literal_raw(thr, -1, key, key_len); + duk_remove_m2(thr); + return ret; +} +#endif + +DUK_EXTERNAL duk_bool_t duk_get_global_heapptr(duk_hthread *thr, void *ptr) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + ret = duk_get_prop_heapptr(thr, -1, ptr); + duk_remove_m2(thr); + return ret; +} + + +DUK_EXTERNAL duk_bool_t duk_put_global_string(duk_hthread *thr, const char *key) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + duk_insert(thr, -2); + ret = duk_put_prop_string(thr, -2, key); /* [ ... global val ] -> [ ... global ] */ + duk_pop(thr); + return ret; +} + +DUK_EXTERNAL duk_bool_t duk_put_global_lstring(duk_hthread *thr, const char *key, duk_size_t key_len) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + duk_insert(thr, -2); + ret = duk_put_prop_lstring(thr, -2, key, key_len); /* [ ... global val ] -> [ ... global ] */ + duk_pop(thr); + return ret; +} + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL duk_bool_t duk_put_global_literal_raw(duk_hthread *thr, const char *key, duk_size_t key_len) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + DUK_ASSERT(key[key_len] == (char) 0); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + duk_insert(thr, -2); + ret = duk_put_prop_literal_raw(thr, -2, key, key_len); /* [ ... global val ] -> [ ... global ] */ + duk_pop(thr); + return ret; +} +#endif + +DUK_EXTERNAL duk_bool_t duk_put_global_heapptr(duk_hthread *thr, void *ptr) { + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + + /* XXX: direct implementation */ + + duk_push_hobject(thr, thr->builtins[DUK_BIDX_GLOBAL]); + duk_insert(thr, -2); + ret = duk_put_prop_heapptr(thr, -2, ptr); /* [ ... global val ] -> [ ... global ] */ + duk_pop(thr); + return ret; +} + +/* + * ES2015 GetMethod() + */ + +DUK_INTERNAL duk_bool_t duk_get_method_stridx(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t stridx) { + (void) duk_get_prop_stridx(thr, idx, stridx); + if (duk_is_null_or_undefined(thr, -1)) { + duk_pop_nodecref_unsafe(thr); + return 0; + } + if (!duk_is_callable(thr, -1)) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CALLABLE); + DUK_WO_NORETURN(return 0;); + } + return 1; +} + +/* + * Object prototype + */ + +DUK_EXTERNAL void duk_get_prototype(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *obj; + duk_hobject *proto; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, idx); + DUK_ASSERT(obj != NULL); + + /* XXX: shared helper for duk_push_hobject_or_undefined()? */ + proto = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, obj); + if (proto) { + duk_push_hobject(thr, proto); + } else { + duk_push_undefined(thr); + } +} + +DUK_EXTERNAL void duk_set_prototype(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *obj; + duk_hobject *proto; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, idx); + DUK_ASSERT(obj != NULL); + duk_require_type_mask(thr, -1, DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_OBJECT); + proto = duk_get_hobject(thr, -1); + /* proto can also be NULL here (allowed explicitly) */ + +#if defined(DUK_USE_ROM_OBJECTS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); /* XXX: "read only object"? */ + DUK_WO_NORETURN(return;); + } +#endif + + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, obj, proto); + + duk_pop(thr); +} + +DUK_INTERNAL void duk_clear_prototype(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *obj; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, idx); + DUK_ASSERT(obj != NULL); + +#if defined(DUK_USE_ROM_OBJECTS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); /* XXX: "read only object"? */ + DUK_WO_NORETURN(return;); + } +#endif + + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, obj, NULL); +} + +DUK_INTERNAL duk_bool_t duk_is_bare_object(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *obj; + duk_hobject *proto; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_require_hobject(thr, idx); + DUK_ASSERT(obj != NULL); + + proto = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, obj); + return (proto == NULL); +} + +/* + * Object finalizer + */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) +/* XXX: these could be implemented as macros calling an internal function + * directly. + * XXX: same issue as with Duktape.fin: there's no way to delete the property + * now (just set it to undefined). + */ +DUK_EXTERNAL void duk_get_finalizer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + /* This get intentionally walks the inheritance chain at present, + * which matches how the effective finalizer property is also + * looked up in GC. + */ + duk_get_prop_stridx(thr, idx, DUK_STRIDX_INT_FINALIZER); +} + +DUK_EXTERNAL void duk_set_finalizer(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + duk_bool_t callable; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_require_hobject(thr, idx); /* Get before 'put' so that 'idx' is correct. */ + callable = duk_is_callable(thr, -1); + + /* At present finalizer is stored as a hidden Symbol, with normal + * inheritance and access control. As a result, finalizer cannot + * currently be set on a non-extensible (sealed or frozen) object. + * It might be useful to allow it. + */ + duk_put_prop_stridx(thr, idx, DUK_STRIDX_INT_FINALIZER); + + /* In addition to setting the finalizer property, keep a "have + * finalizer" flag in duk_hobject in sync so that refzero can do + * a very quick finalizer check by walking the prototype chain + * and checking the flag alone. (Note that this means that just + * setting _Finalizer on an object won't affect finalizer checks.) + * + * NOTE: if the argument is a Proxy object, this flag will be set + * on the Proxy, not the target. As a result, the target won't get + * a finalizer flag and the Proxy also won't be finalized as there's + * an explicit Proxy check in finalization now. + */ + if (callable) { + DUK_HOBJECT_SET_HAVE_FINALIZER(h); + } else { + DUK_HOBJECT_CLEAR_HAVE_FINALIZER(h); + } +} +#else /* DUK_USE_FINALIZER_SUPPORT */ +DUK_EXTERNAL void duk_get_finalizer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_set_finalizer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(idx); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ +#line 1 "duk_api_random.c" +/* + * Random numbers + */ + +/* #include duk_internal.h -> already included */ + +DUK_EXTERNAL duk_double_t duk_random(duk_hthread *thr) { + return (duk_double_t) DUK_UTIL_GET_RANDOM_DOUBLE(thr); +} +#line 1 "duk_api_stack.c" +/* + * API calls related to general value stack manipulation: resizing the value + * stack, pushing and popping values, type checking and reading values, + * coercing values, etc. + * + * Also contains internal functions (such as duk_get_tval()), defined + * in duk_api_internal.h, with semantics similar to the public API. + */ + +/* XXX: repetition of stack pre-checks -> helper or macro or inline */ +/* XXX: shared api error strings, and perhaps even throw code for rare cases? */ + +/* #include duk_internal.h -> already included */ + +/* + * Forward declarations + */ + +DUK_LOCAL_DECL duk_idx_t duk__push_c_function_raw(duk_hthread *thr, duk_c_function func, duk_idx_t nargs, duk_uint_t flags, duk_small_uint_t proto_bidx); + +/* + * Global state for working around missing variadic macros + */ + +#if !defined(DUK_USE_VARIADIC_MACROS) +DUK_EXTERNAL const char *duk_api_global_filename = NULL; +DUK_EXTERNAL duk_int_t duk_api_global_line = 0; +#endif + +/* + * Misc helpers + */ + +DUK_LOCAL const char * const duk__symbol_type_strings[4] = { + "hidden", "global", "local", "wellknown" +}; + +#if !defined(DUK_USE_PACKED_TVAL) +DUK_LOCAL const duk_uint_t duk__type_from_tag[] = { + DUK_TYPE_NUMBER, + DUK_TYPE_NUMBER, /* fastint */ + DUK_TYPE_UNDEFINED, + DUK_TYPE_NULL, + DUK_TYPE_BOOLEAN, + DUK_TYPE_POINTER, + DUK_TYPE_LIGHTFUNC, + DUK_TYPE_NONE, + DUK_TYPE_STRING, + DUK_TYPE_OBJECT, + DUK_TYPE_BUFFER, +}; +DUK_LOCAL const duk_uint_t duk__type_mask_from_tag[] = { + DUK_TYPE_MASK_NUMBER, + DUK_TYPE_MASK_NUMBER, /* fastint */ + DUK_TYPE_MASK_UNDEFINED, + DUK_TYPE_MASK_NULL, + DUK_TYPE_MASK_BOOLEAN, + DUK_TYPE_MASK_POINTER, + DUK_TYPE_MASK_LIGHTFUNC, + DUK_TYPE_MASK_NONE, + DUK_TYPE_MASK_STRING, + DUK_TYPE_MASK_OBJECT, + DUK_TYPE_MASK_BUFFER, +}; +#endif /* !DUK_USE_PACKED_TVAL */ + +/* Assert that there's room for one value. */ +#define DUK__ASSERT_SPACE() do { \ + DUK_ASSERT(!(thr->valstack_top >= thr->valstack_end)); \ + } while (0) + +/* Check that there's room to push one value. */ +#if defined(DUK_USE_VALSTACK_UNSAFE) +/* Faster but value stack overruns are memory unsafe. */ +#define DUK__CHECK_SPACE() DUK__ASSERT_SPACE() +#else +#define DUK__CHECK_SPACE() do { \ + if (DUK_UNLIKELY(thr->valstack_top >= thr->valstack_end)) { \ + DUK_ERROR_RANGE_PUSH_BEYOND(thr); \ + } \ + } while (0) +#endif + +DUK_LOCAL duk_small_uint_t duk__get_symbol_type(duk_hstring *h) { + const duk_uint8_t *data; + duk_size_t len; + + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HSTRING_HAS_SYMBOL(h)); + DUK_ASSERT(DUK_HSTRING_GET_BYTELEN(h) >= 1); /* always true, symbol prefix */ + + data = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h); + len = DUK_HSTRING_GET_BYTELEN(h); + DUK_ASSERT(len >= 1); + + /* XXX: differentiate between 0x82 and 0xff (hidden vs. internal?)? */ + + if (data[0] == 0xffU) { + return DUK_SYMBOL_TYPE_HIDDEN; + } else if (data[0] == 0x82U) { + return DUK_SYMBOL_TYPE_HIDDEN; + } else if (data[0] == 0x80U) { + return DUK_SYMBOL_TYPE_GLOBAL; + } else if (data[len - 1] != 0xffU) { + return DUK_SYMBOL_TYPE_LOCAL; + } else { + return DUK_SYMBOL_TYPE_WELLKNOWN; + } +} + +DUK_LOCAL const char *duk__get_symbol_type_string(duk_hstring *h) { + duk_small_uint_t idx; + idx = duk__get_symbol_type(h); + DUK_ASSERT(idx < sizeof(duk__symbol_type_strings)); + return duk__symbol_type_strings[idx]; +} + +DUK_LOCAL_DECL duk_heaphdr *duk__get_tagged_heaphdr_raw(duk_hthread *thr, duk_idx_t idx, duk_uint_t tag); + +DUK_LOCAL duk_int_t duk__api_coerce_d2i(duk_hthread *thr, duk_idx_t idx, duk_int_t def_value, duk_bool_t require) { + duk_tval *tv; + duk_small_int_t c; + duk_double_t d; + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + /* + * Special cases like NaN and +/- Infinity are handled explicitly + * because a plain C coercion from double to int handles these cases + * in undesirable ways. For instance, NaN may coerce to INT_MIN + * (not zero), and INT_MAX + 1 may coerce to INT_MIN (not INT_MAX). + * + * This double-to-int coercion differs from ToInteger() because it + * has a finite range (ToInteger() allows e.g. +/- Infinity). It + * also differs from ToInt32() because the INT_MIN/INT_MAX clamping + * depends on the size of the int type on the platform. In particular, + * on platforms with a 64-bit int type, the full range is allowed. + */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + duk_int64_t t = DUK_TVAL_GET_FASTINT(tv); +#if (DUK_INT_MAX <= 0x7fffffffL) + /* Clamping only necessary for 32-bit ints. */ + if (t < DUK_INT_MIN) { + t = DUK_INT_MIN; + } else if (t > DUK_INT_MAX) { + t = DUK_INT_MAX; + } +#endif + return (duk_int_t) t; + } +#endif + + if (DUK_TVAL_IS_NUMBER(tv)) { + d = DUK_TVAL_GET_NUMBER(tv); + c = (duk_small_int_t) DUK_FPCLASSIFY(d); + if (c == DUK_FP_NAN) { + return 0; + } else if (d < (duk_double_t) DUK_INT_MIN) { + /* covers -Infinity */ + return DUK_INT_MIN; + } else if (d > (duk_double_t) DUK_INT_MAX) { + /* covers +Infinity */ + return DUK_INT_MAX; + } else { + /* coerce towards zero */ + return (duk_int_t) d; + } + } + + if (require) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "number", DUK_STR_NOT_NUMBER); + DUK_WO_NORETURN(return 0;); + } + + return def_value; +} + +DUK_LOCAL duk_uint_t duk__api_coerce_d2ui(duk_hthread *thr, duk_idx_t idx, duk_uint_t def_value, duk_bool_t require) { + duk_tval *tv; + duk_small_int_t c; + duk_double_t d; + + /* Same as above but for unsigned int range. */ + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + duk_int64_t t = DUK_TVAL_GET_FASTINT(tv); + if (t < 0) { + t = 0; + } +#if (DUK_UINT_MAX <= 0xffffffffUL) + /* Clamping only necessary for 32-bit ints. */ + else if (t > DUK_UINT_MAX) { + t = DUK_UINT_MAX; + } +#endif + return (duk_uint_t) t; + } +#endif + + if (DUK_TVAL_IS_NUMBER(tv)) { + d = DUK_TVAL_GET_NUMBER(tv); + c = (duk_small_int_t) DUK_FPCLASSIFY(d); + if (c == DUK_FP_NAN) { + return 0; + } else if (d < 0.0) { + /* covers -Infinity */ + return (duk_uint_t) 0; + } else if (d > (duk_double_t) DUK_UINT_MAX) { + /* covers +Infinity */ + return (duk_uint_t) DUK_UINT_MAX; + } else { + /* coerce towards zero */ + return (duk_uint_t) d; + } + } + + if (require) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "number", DUK_STR_NOT_NUMBER); + DUK_WO_NORETURN(return 0;); + } + + return def_value; +} + +/* + * Stack index validation/normalization and getting a stack duk_tval ptr. + * + * These are called by many API entrypoints so the implementations must be + * fast and "inlined". + * + * There's some repetition because of this; keep the functions in sync. + */ + +DUK_EXTERNAL duk_idx_t duk_normalize_index(duk_hthread *thr, duk_idx_t idx) { + duk_uidx_t vs_size; + duk_uidx_t uidx; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + /* Care must be taken to avoid pointer wrapping in the index + * validation. For instance, on a 32-bit platform with 8-byte + * duk_tval the index 0x20000000UL would wrap the memory space + * once. + */ + + /* Assume value stack sizes (in elements) fits into duk_idx_t. */ + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + vs_size = (duk_uidx_t) (thr->valstack_top - thr->valstack_bottom); + DUK_ASSERT_DISABLE(vs_size >= 0); /* unsigned */ + + if (idx < 0) { + uidx = vs_size + (duk_uidx_t) idx; + } else { + /* since index non-negative */ + DUK_ASSERT(idx != DUK_INVALID_INDEX); + uidx = (duk_uidx_t) idx; + } + + /* DUK_INVALID_INDEX won't be accepted as a valid index. */ + DUK_ASSERT(vs_size + (duk_uidx_t) DUK_INVALID_INDEX >= vs_size); + + if (DUK_LIKELY(uidx < vs_size)) { + return (duk_idx_t) uidx; + } + return DUK_INVALID_INDEX; +} + +DUK_EXTERNAL duk_idx_t duk_require_normalize_index(duk_hthread *thr, duk_idx_t idx) { + duk_uidx_t vs_size; + duk_uidx_t uidx; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + vs_size = (duk_uidx_t) (thr->valstack_top - thr->valstack_bottom); + DUK_ASSERT_DISABLE(vs_size >= 0); /* unsigned */ + + if (idx < 0) { + uidx = vs_size + (duk_uidx_t) idx; + } else { + DUK_ASSERT(idx != DUK_INVALID_INDEX); + uidx = (duk_uidx_t) idx; + } + + /* DUK_INVALID_INDEX won't be accepted as a valid index. */ + DUK_ASSERT(vs_size + (duk_uidx_t) DUK_INVALID_INDEX >= vs_size); + + if (DUK_LIKELY(uidx < vs_size)) { + return (duk_idx_t) uidx; + } + DUK_ERROR_RANGE_INDEX(thr, idx); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_tval *duk_get_tval(duk_hthread *thr, duk_idx_t idx) { + duk_uidx_t vs_size; + duk_uidx_t uidx; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + vs_size = (duk_uidx_t) (thr->valstack_top - thr->valstack_bottom); + DUK_ASSERT_DISABLE(vs_size >= 0); /* unsigned */ + + if (idx < 0) { + uidx = vs_size + (duk_uidx_t) idx; + } else { + DUK_ASSERT(idx != DUK_INVALID_INDEX); + uidx = (duk_uidx_t) idx; + } + + /* DUK_INVALID_INDEX won't be accepted as a valid index. */ + DUK_ASSERT(vs_size + (duk_uidx_t) DUK_INVALID_INDEX >= vs_size); + + if (DUK_LIKELY(uidx < vs_size)) { + return thr->valstack_bottom + uidx; + } + return NULL; +} + +/* Variant of duk_get_tval() which is guaranteed to return a valid duk_tval + * pointer. When duk_get_tval() would return NULL, this variant returns a + * pointer to a duk_tval with tag DUK_TAG_UNUSED. This allows the call site + * to avoid an unnecessary NULL check which sometimes leads to better code. + * The return duk_tval is read only (at least for the UNUSED value). + */ +DUK_LOCAL const duk_tval_unused duk__const_tval_unused = DUK_TVAL_UNUSED_INITIALIZER(); + +DUK_INTERNAL duk_tval *duk_get_tval_or_unused(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval(thr, idx); + if (tv != NULL) { + return tv; + } + return (duk_tval *) DUK_LOSE_CONST(&duk__const_tval_unused); +} + +DUK_INTERNAL duk_tval *duk_require_tval(duk_hthread *thr, duk_idx_t idx) { + duk_uidx_t vs_size; + duk_uidx_t uidx; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + vs_size = (duk_uidx_t) (thr->valstack_top - thr->valstack_bottom); + DUK_ASSERT_DISABLE(vs_size >= 0); /* unsigned */ + + /* Use unsigned arithmetic to optimize comparison. */ + if (idx < 0) { + uidx = vs_size + (duk_uidx_t) idx; + } else { + DUK_ASSERT(idx != DUK_INVALID_INDEX); + uidx = (duk_uidx_t) idx; + } + + /* DUK_INVALID_INDEX won't be accepted as a valid index. */ + DUK_ASSERT(vs_size + (duk_uidx_t) DUK_INVALID_INDEX >= vs_size); + + if (DUK_LIKELY(uidx < vs_size)) { + return thr->valstack_bottom + uidx; + } + DUK_ERROR_RANGE_INDEX(thr, idx); + DUK_WO_NORETURN(return NULL;); +} + +/* Non-critical. */ +DUK_EXTERNAL duk_bool_t duk_is_valid_index(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + return (duk_normalize_index(thr, idx) >= 0); +} + +/* Non-critical. */ +DUK_EXTERNAL void duk_require_valid_index(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + if (DUK_UNLIKELY(duk_normalize_index(thr, idx) < 0)) { + DUK_ERROR_RANGE_INDEX(thr, idx); + DUK_WO_NORETURN(return;); + } +} + +/* + * Value stack top handling + */ + +DUK_EXTERNAL duk_idx_t duk_get_top(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); +} + +/* Internal helper to get current top but to require a minimum top value + * (TypeError if not met). + */ +DUK_INTERNAL duk_idx_t duk_get_top_require_min(duk_hthread *thr, duk_idx_t min_top) { + duk_idx_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + if (DUK_UNLIKELY(ret < min_top)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); + } + return ret; +} + +/* Set stack top within currently allocated range, but don't reallocate. + * This is performance critical especially for call handling, so whenever + * changing, profile and look at generated code. + */ +DUK_EXTERNAL void duk_set_top(duk_hthread *thr, duk_idx_t idx) { + duk_uidx_t vs_size; + duk_uidx_t vs_limit; + duk_uidx_t uidx; + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_INVALID_INDEX < 0); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_bottom); + vs_size = (duk_uidx_t) (thr->valstack_top - thr->valstack_bottom); + vs_limit = (duk_uidx_t) (thr->valstack_end - thr->valstack_bottom); + + if (idx < 0) { + /* Negative indices are always within allocated stack but + * must not go below zero index. + */ + uidx = vs_size + (duk_uidx_t) idx; + } else { + /* Positive index can be higher than valstack top but must + * not go above allocated stack (equality is OK). + */ + uidx = (duk_uidx_t) idx; + } + + /* DUK_INVALID_INDEX won't be accepted as a valid index. */ + DUK_ASSERT(vs_size + (duk_uidx_t) DUK_INVALID_INDEX >= vs_size); + DUK_ASSERT(vs_size + (duk_uidx_t) DUK_INVALID_INDEX >= vs_limit); + +#if defined(DUK_USE_VALSTACK_UNSAFE) + DUK_ASSERT(uidx <= vs_limit); + DUK_UNREF(vs_limit); +#else + if (DUK_UNLIKELY(uidx > vs_limit)) { + DUK_ERROR_RANGE_INDEX(thr, idx); + DUK_WO_NORETURN(return;); + } +#endif + DUK_ASSERT(uidx <= vs_limit); + + /* Handle change in value stack top. Respect value stack + * initialization policy: 'undefined' above top. Note that + * DECREF may cause a side effect that reallocates valstack, + * so must relookup after DECREF. + */ + + if (uidx >= vs_size) { + /* Stack size increases or stays the same. */ +#if defined(DUK_USE_ASSERTIONS) + duk_uidx_t count; + + count = uidx - vs_size; + while (count != 0) { + count--; + tv = thr->valstack_top + count; + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv)); + } +#endif + thr->valstack_top = thr->valstack_bottom + uidx; + } else { + /* Stack size decreases. */ +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_uidx_t count; + duk_tval *tv_end; + + count = vs_size - uidx; + DUK_ASSERT(count > 0); + tv = thr->valstack_top; + tv_end = tv - count; + DUK_ASSERT(tv > tv_end); /* Because count > 0. */ + do { + tv--; + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, tv); + } while (tv != tv_end); + thr->valstack_top = tv_end; + DUK_REFZERO_CHECK_FAST(thr); +#else /* DUK_USE_REFERENCE_COUNTING */ + duk_uidx_t count; + duk_tval *tv_end; + + count = vs_size - uidx; + tv = thr->valstack_top; + tv_end = tv - count; + DUK_ASSERT(tv > tv_end); + do { + tv--; + DUK_TVAL_SET_UNDEFINED(tv); + } while (tv != tv_end); + thr->valstack_top = tv_end; +#endif /* DUK_USE_REFERENCE_COUNTING */ + } +} + +/* Internal variant with a non-negative index and no runtime size checks. */ +#if defined(DUK_USE_PREFER_SIZE) +DUK_INTERNAL void duk_set_top_unsafe(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + duk_set_top(thr, idx); +} +#else /* DUK_USE_PREFER_SIZE */ +DUK_INTERNAL void duk_set_top_unsafe(duk_hthread *thr, duk_idx_t idx) { + duk_uidx_t uidx; + duk_uidx_t vs_size; + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_bottom); + DUK_ASSERT(idx >= 0); + DUK_ASSERT(idx <= (duk_idx_t) (thr->valstack_end - thr->valstack_bottom)); + + /* XXX: byte arithmetic */ + uidx = (duk_uidx_t) idx; + vs_size = (duk_uidx_t) (thr->valstack_top - thr->valstack_bottom); + + if (uidx >= vs_size) { + /* Stack size increases or stays the same. */ +#if defined(DUK_USE_ASSERTIONS) + duk_uidx_t count; + + count = uidx - vs_size; + while (count != 0) { + count--; + tv = thr->valstack_top + count; + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv)); + } +#endif + thr->valstack_top = thr->valstack_bottom + uidx; + } else { + /* Stack size decreases. */ +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_uidx_t count; + duk_tval *tv_end; + + count = vs_size - uidx; + DUK_ASSERT(count > 0); + tv = thr->valstack_top; + tv_end = tv - count; + DUK_ASSERT(tv > tv_end); /* Because count > 0. */ + do { + tv--; + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, tv); + } while (tv != tv_end); + thr->valstack_top = tv_end; + DUK_REFZERO_CHECK_FAST(thr); +#else /* DUK_USE_REFERENCE_COUNTING */ + duk_uidx_t count; + duk_tval *tv_end; + + count = vs_size - uidx; + tv = thr->valstack_top; + tv_end = tv - count; + DUK_ASSERT(tv > tv_end); + do { + tv--; + DUK_TVAL_SET_UNDEFINED(tv); + } while (tv != tv_end); + thr->valstack_top = tv_end; +#endif /* DUK_USE_REFERENCE_COUNTING */ + } +} +#endif /* DUK_USE_PREFER_SIZE */ + +/* Internal helper: set top to 'top', and set [idx_wipe_start,top[ to + * 'undefined' (doing nothing if idx_wipe_start == top). Indices are + * positive and within value stack reserve. This is used by call handling. + */ +DUK_INTERNAL void duk_set_top_and_wipe(duk_hthread *thr, duk_idx_t top, duk_idx_t idx_wipe_start) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(top >= 0); + DUK_ASSERT(idx_wipe_start >= 0); + DUK_ASSERT(idx_wipe_start <= top); + DUK_ASSERT(thr->valstack_bottom + top <= thr->valstack_end); + DUK_ASSERT(thr->valstack_bottom + idx_wipe_start <= thr->valstack_end); + + duk_set_top_unsafe(thr, idx_wipe_start); + duk_set_top_unsafe(thr, top); +} + +DUK_EXTERNAL duk_idx_t duk_get_top_index(duk_hthread *thr) { + duk_idx_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom) - 1; + if (DUK_UNLIKELY(ret < 0)) { + /* Return invalid index; if caller uses this without checking + * in another API call, the index won't map to a valid stack + * entry. + */ + return DUK_INVALID_INDEX; + } + return ret; +} + +/* Internal variant: call assumes there is at least one element on the value + * stack frame; this is only asserted for. + */ +DUK_INTERNAL duk_idx_t duk_get_top_index_unsafe(duk_hthread *thr) { + duk_idx_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom) - 1; + return ret; +} + +DUK_EXTERNAL duk_idx_t duk_require_top_index(duk_hthread *thr) { + duk_idx_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom) - 1; + if (DUK_UNLIKELY(ret < 0)) { + DUK_ERROR_RANGE_INDEX(thr, -1); + DUK_WO_NORETURN(return 0;); + } + return ret; +} + +/* + * Value stack resizing. + * + * This resizing happens above the current "top": the value stack can be + * grown or shrunk, but the "top" is not affected. The value stack cannot + * be resized to a size below the current reserve. + * + * The low level reallocation primitive must carefully recompute all value + * stack pointers, and must also work if ALL pointers are NULL. The resize + * is quite tricky because the valstack realloc may cause a mark-and-sweep, + * which may run finalizers. Running finalizers may resize the valstack + * recursively (the same value stack we're working on). So, after realloc + * returns, we know that the valstack bottom, top, and reserve should still + * be the same (there should not be live values above the "top"), but its + * underlying size, alloc_end, and base pointer may have changed. + * + * 'new_size' is known to be <= DUK_USE_VALSTACK_LIMIT, which ensures that + * size_t and pointer arithmetic won't wrap in duk__resize_valstack(). + */ + +/* Low level valstack resize primitive, used for both grow and shrink. All + * adjustments for slack etc have already been done. Doesn't throw but does + * have allocation side effects. + */ +DUK_LOCAL DUK_COLD DUK_NOINLINE duk_bool_t duk__resize_valstack(duk_hthread *thr, duk_size_t new_size) { + duk_tval *pre_valstack; + duk_tval *pre_bottom; + duk_tval *pre_top; + duk_tval *pre_end; + duk_tval *pre_alloc_end; + duk_ptrdiff_t ptr_diff; + duk_tval *new_valstack; + duk_size_t new_alloc_size; + duk_tval *tv_prev_alloc_end; + duk_tval *p; + + DUK_HTHREAD_ASSERT_VALID(thr); + DUK_ASSERT(thr->valstack_bottom >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + DUK_ASSERT(thr->valstack_alloc_end >= thr->valstack_end); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack) <= new_size); /* can't resize below 'top' */ + DUK_ASSERT(new_size <= DUK_USE_VALSTACK_LIMIT); /* valstack limit caller has check, prevents wrapping */ + DUK_ASSERT(new_size <= DUK_SIZE_MAX / sizeof(duk_tval)); /* specific assert for wrapping */ + + /* Pre-realloc pointer copies for asserts and debug logs. */ + pre_valstack = thr->valstack; + pre_bottom = thr->valstack_bottom; + pre_top = thr->valstack_top; + pre_end = thr->valstack_end; + pre_alloc_end = thr->valstack_alloc_end; + + DUK_UNREF(pre_valstack); + DUK_UNREF(pre_bottom); + DUK_UNREF(pre_top); + DUK_UNREF(pre_end); + DUK_UNREF(pre_alloc_end); + + /* If finalizer torture enabled, force base pointer change every time + * when it would be allowed. + */ +#if defined(DUK_USE_FINALIZER_TORTURE) + if (thr->heap->pf_prevent_count == 0) { + duk_hthread_valstack_torture_realloc(thr); + } +#endif + + /* Allocate a new valstack using DUK_REALLOC_DIRECT() to deal with + * a side effect changing the base pointer. + */ + new_alloc_size = sizeof(duk_tval) * new_size; + new_valstack = (duk_tval *) DUK_REALLOC_INDIRECT(thr->heap, duk_hthread_get_valstack_ptr, (void *) thr, new_alloc_size); + if (DUK_UNLIKELY(new_valstack == NULL)) { + /* Because new_size != 0, if condition doesn't need to be + * (new_valstack != NULL || new_size == 0). + */ + DUK_ASSERT(new_size != 0); + DUK_D(DUK_DPRINT("failed to resize valstack to %lu entries (%lu bytes)", + (unsigned long) new_size, (unsigned long) new_alloc_size)); + return 0; + } + + /* Debug log any changes in pointer(s) by side effects. These don't + * necessarily imply any incorrect behavior, but should be rare in + * practice. + */ +#if defined(DUK_USE_DEBUG) + if (thr->valstack != pre_valstack) { + DUK_D(DUK_DPRINT("valstack base pointer changed during valstack resize: %p -> %p", + (void *) pre_valstack, (void *) thr->valstack)); + } + if (thr->valstack_bottom != pre_bottom) { + DUK_D(DUK_DPRINT("valstack bottom pointer changed during valstack resize: %p -> %p", + (void *) pre_bottom, (void *) thr->valstack_bottom)); + } + if (thr->valstack_top != pre_top) { + DUK_D(DUK_DPRINT("valstack top pointer changed during valstack resize: %p -> %p", + (void *) pre_top, (void *) thr->valstack_top)); + } + if (thr->valstack_end != pre_end) { + DUK_D(DUK_DPRINT("valstack end pointer changed during valstack resize: %p -> %p", + (void *) pre_end, (void *) thr->valstack_end)); + } + if (thr->valstack_alloc_end != pre_alloc_end) { + DUK_D(DUK_DPRINT("valstack alloc_end pointer changed during valstack resize: %p -> %p", + (void *) pre_alloc_end, (void *) thr->valstack_alloc_end)); + } +#endif + + /* Assertions: offsets for bottom, top, and end (reserve) must not + * have changed even with side effects because they are always + * restored in unwind. For alloc_end there's no guarantee: it may + * have grown or shrunk (but remain above 'end'). + */ + DUK_ASSERT(thr->valstack_bottom - thr->valstack == pre_bottom - pre_valstack); + DUK_ASSERT(thr->valstack_top - thr->valstack == pre_top - pre_valstack); + DUK_ASSERT(thr->valstack_end - thr->valstack == pre_end - pre_valstack); + DUK_ASSERT(thr->valstack_alloc_end >= thr->valstack_end); + + /* Write new pointers. Most pointers can be handled as a pointer + * difference. + */ + ptr_diff = (duk_ptrdiff_t) ((duk_uint8_t *) new_valstack - (duk_uint8_t *) thr->valstack); + tv_prev_alloc_end = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_alloc_end + ptr_diff); + thr->valstack = new_valstack; + thr->valstack_bottom = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_bottom + ptr_diff); + thr->valstack_top = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_top + ptr_diff); + thr->valstack_end = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_end + ptr_diff); + thr->valstack_alloc_end = (duk_tval *) (void *) ((duk_uint8_t *) new_valstack + new_alloc_size); + + /* Assertions: pointer sanity after pointer updates. */ + DUK_ASSERT(thr->valstack_bottom >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + DUK_ASSERT(thr->valstack_alloc_end >= thr->valstack_end); + + DUK_D(DUK_DPRINT("resized valstack %lu -> %lu elements (%lu -> %lu bytes): " + "base=%p -> %p, bottom=%p -> %p (%ld), top=%p -> %p (%ld), " + "end=%p -> %p (%ld), alloc_end=%p -> %p (%ld);" + " tv_prev_alloc_end=%p (-> %ld inits; <0 means shrink)", + (unsigned long) (pre_alloc_end - pre_valstack), + (unsigned long) new_size, + (unsigned long) ((duk_uint8_t *) pre_alloc_end - (duk_uint8_t *) pre_valstack), + (unsigned long) new_alloc_size, + (void *) pre_valstack, (void *) thr->valstack, + (void *) pre_bottom, (void *) thr->valstack_bottom, (long) (thr->valstack_bottom - thr->valstack), + (void *) pre_top, (void *) thr->valstack_top, (long) (thr->valstack_top - thr->valstack), + (void *) pre_end, (void *) thr->valstack_end, (long) (thr->valstack_end - thr->valstack), + (void *) pre_alloc_end, (void *) thr->valstack_alloc_end, (long) (thr->valstack_alloc_end - thr->valstack), + (void *) tv_prev_alloc_end, (long) (thr->valstack_alloc_end - tv_prev_alloc_end))); + + /* If allocation grew, init any new slots to 'undefined'. */ + p = tv_prev_alloc_end; + while (p < thr->valstack_alloc_end) { + /* Never executed if new size is smaller. */ + DUK_TVAL_SET_UNDEFINED(p); + p++; + } + + /* Assert for value stack initialization policy. */ +#if defined(DUK_USE_ASSERTIONS) + p = thr->valstack_top; + while (p < thr->valstack_alloc_end) { + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(p)); + p++; + } +#endif + + return 1; +} + +DUK_LOCAL DUK_COLD DUK_NOINLINE duk_bool_t duk__valstack_grow(duk_hthread *thr, duk_size_t min_bytes, duk_bool_t throw_on_error) { + duk_size_t min_size; + duk_size_t new_size; + + DUK_ASSERT(min_bytes / sizeof(duk_tval) * sizeof(duk_tval) == min_bytes); + min_size = min_bytes / sizeof(duk_tval); /* from bytes to slots */ + +#if defined(DUK_USE_VALSTACK_GROW_SHIFT) + /* New size is minimum size plus a proportional slack, e.g. shift of + * 2 means a 25% slack. + */ + new_size = min_size + (min_size >> DUK_USE_VALSTACK_GROW_SHIFT); +#else + /* New size is tight with no slack. This is sometimes preferred in + * low memory environments. + */ + new_size = min_size; +#endif + + if (DUK_UNLIKELY(new_size > DUK_USE_VALSTACK_LIMIT || new_size < min_size /*wrap*/)) { + /* Note: may be triggered even if minimal new_size would not reach the limit, + * plan limit accordingly. + */ + if (throw_on_error) { + DUK_ERROR_RANGE(thr, DUK_STR_VALSTACK_LIMIT); + DUK_WO_NORETURN(return 0;); + } + return 0; + } + + if (duk__resize_valstack(thr, new_size) == 0) { + if (throw_on_error) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return 0;); + } + return 0; + } + + thr->valstack_end = thr->valstack + min_size; + DUK_ASSERT(thr->valstack_alloc_end >= thr->valstack_end); + + return 1; +} + +/* Hot, inlined value stack grow check. Because value stack almost never + * grows, the actual resize call is in a NOINLINE helper. + */ +DUK_INTERNAL DUK_INLINE void duk_valstack_grow_check_throw(duk_hthread *thr, duk_size_t min_bytes) { + duk_tval *tv; + + tv = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + min_bytes); + if (DUK_LIKELY(thr->valstack_end >= tv)) { + return; + } + if (DUK_LIKELY(thr->valstack_alloc_end >= tv)) { + /* Values in [valstack_top,valstack_alloc_end[ are initialized + * to 'undefined' so we can just move the end pointer. + */ + thr->valstack_end = tv; + return; + } + (void) duk__valstack_grow(thr, min_bytes, 1 /*throw_on_error*/); +} + +/* Hot, inlined value stack grow check which doesn't throw. */ +DUK_INTERNAL DUK_INLINE duk_bool_t duk_valstack_grow_check_nothrow(duk_hthread *thr, duk_size_t min_bytes) { + duk_tval *tv; + + tv = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + min_bytes); + if (DUK_LIKELY(thr->valstack_end >= tv)) { + return 1; + } + if (DUK_LIKELY(thr->valstack_alloc_end >= tv)) { + thr->valstack_end = tv; + return 1; + } + return duk__valstack_grow(thr, min_bytes, 0 /*throw_on_error*/); +} + +/* Value stack shrink check, called from mark-and-sweep. */ +DUK_INTERNAL void duk_valstack_shrink_check_nothrow(duk_hthread *thr, duk_bool_t snug) { + duk_size_t alloc_bytes; + duk_size_t reserve_bytes; + duk_size_t shrink_bytes; + + alloc_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_alloc_end - (duk_uint8_t *) thr->valstack); + reserve_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack); + DUK_ASSERT(alloc_bytes >= reserve_bytes); + + /* We're free to shrink the value stack allocation down to + * reserve_bytes but not more. If 'snug' (emergency GC) + * shrink whatever we can. Otherwise only shrink if the new + * size would be considerably smaller. + */ + +#if defined(DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT) + if (snug) { + shrink_bytes = reserve_bytes; + } else { + duk_size_t proportion, slack; + + /* Require that value stack shrinks by at least X% of its + * current size. For example, shift of 2 means at least + * 25%. The proportion is computed as bytes and may not + * be a multiple of sizeof(duk_tval); that's OK here. + */ + proportion = alloc_bytes >> DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT; + if (alloc_bytes - reserve_bytes < proportion) { + /* Too little would be freed, do nothing. */ + return; + } + + /* Keep a slack after shrinking. The slack is again a + * proportion of the current size (the proportion should + * of course be smaller than the check proportion above). + */ +#if defined(DUK_USE_VALSTACK_SHRINK_SLACK_SHIFT) + DUK_ASSERT(DUK_USE_VALSTACK_SHRINK_SLACK_SHIFT > DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT); + slack = alloc_bytes >> DUK_USE_VALSTACK_SHRINK_SLACK_SHIFT; +#else + slack = 0; +#endif + shrink_bytes = reserve_bytes + + slack / sizeof(duk_tval) * sizeof(duk_tval); /* multiple of duk_tval */ + } +#else /* DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT */ + /* Always snug, useful in some low memory environments. */ + DUK_UNREF(snug); + shrink_bytes = reserve_bytes; +#endif /* DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT */ + + DUK_D(DUK_DPRINT("valstack shrink check: alloc_bytes=%ld, reserve_bytes=%ld, shrink_bytes=%ld (unvalidated)", + (long) alloc_bytes, (long) reserve_bytes, (long) shrink_bytes)); + DUK_ASSERT(shrink_bytes >= reserve_bytes); + if (shrink_bytes >= alloc_bytes) { + /* Skip if shrink target is same as current one (or higher, + * though that shouldn't happen in practice). + */ + return; + } + DUK_ASSERT(shrink_bytes / sizeof(duk_tval) * sizeof(duk_tval) == shrink_bytes); + + DUK_D(DUK_DPRINT("valstack shrink check: decided to shrink, snug: %ld", (long) snug)); + + duk__resize_valstack(thr, shrink_bytes / sizeof(duk_tval)); +} + +DUK_EXTERNAL duk_bool_t duk_check_stack(duk_hthread *thr, duk_idx_t extra) { + duk_size_t min_new_bytes; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr != NULL); + + if (DUK_UNLIKELY(extra < 0 || extra > DUK_USE_VALSTACK_LIMIT)) { + if (extra < 0) { + /* Clamping to zero makes the API more robust to calling code + * calculation errors. + */ + extra = 0; + } else { + /* Cause grow check to fail without wrapping arithmetic. */ + extra = DUK_USE_VALSTACK_LIMIT; + } + } + + min_new_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_top - (duk_uint8_t *) thr->valstack) + + sizeof(duk_tval) * ((duk_size_t) extra + DUK_VALSTACK_INTERNAL_EXTRA); + return duk_valstack_grow_check_nothrow(thr, min_new_bytes); +} + +DUK_EXTERNAL void duk_require_stack(duk_hthread *thr, duk_idx_t extra) { + duk_size_t min_new_bytes; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr != NULL); + + if (DUK_UNLIKELY(extra < 0 || extra > DUK_USE_VALSTACK_LIMIT)) { + if (extra < 0) { + /* Clamping to zero makes the API more robust to calling code + * calculation errors. + */ + extra = 0; + } else { + /* Cause grow check to fail without wrapping arithmetic. */ + extra = DUK_USE_VALSTACK_LIMIT; + } + } + + min_new_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_top - (duk_uint8_t *) thr->valstack) + + sizeof(duk_tval) * ((duk_size_t) extra + DUK_VALSTACK_INTERNAL_EXTRA); + duk_valstack_grow_check_throw(thr, min_new_bytes); +} + +DUK_EXTERNAL duk_bool_t duk_check_stack_top(duk_hthread *thr, duk_idx_t top) { + duk_size_t min_new_bytes; + + DUK_ASSERT_API_ENTRY(thr); + + if (DUK_UNLIKELY(top < 0 || top > DUK_USE_VALSTACK_LIMIT)) { + if (top < 0) { + /* Clamping to zero makes the API more robust to calling code + * calculation errors. + */ + top = 0; + } else { + /* Cause grow check to fail without wrapping arithmetic. */ + top = DUK_USE_VALSTACK_LIMIT; + } + } + + DUK_ASSERT(top >= 0); + min_new_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack) + + sizeof(duk_tval) * ((duk_size_t) top + DUK_VALSTACK_INTERNAL_EXTRA); + return duk_valstack_grow_check_nothrow(thr, min_new_bytes); +} + +DUK_EXTERNAL void duk_require_stack_top(duk_hthread *thr, duk_idx_t top) { + duk_size_t min_new_bytes; + + DUK_ASSERT_API_ENTRY(thr); + + if (DUK_UNLIKELY(top < 0 || top > DUK_USE_VALSTACK_LIMIT)) { + if (top < 0) { + /* Clamping to zero makes the API more robust to calling code + * calculation errors. + */ + top = 0; + } else { + /* Cause grow check to fail without wrapping arithmetic. */ + top = DUK_USE_VALSTACK_LIMIT; + } + } + + DUK_ASSERT(top >= 0); + min_new_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack) + + sizeof(duk_tval) * ((duk_size_t) top + DUK_VALSTACK_INTERNAL_EXTRA); + duk_valstack_grow_check_throw(thr, min_new_bytes); +} + +/* + * Basic stack manipulation: swap, dup, insert, replace, etc + */ + +DUK_EXTERNAL void duk_swap(duk_hthread *thr, duk_idx_t idx1, duk_idx_t idx2) { + duk_tval *tv1; + duk_tval *tv2; + duk_tval tv_tmp; + + DUK_ASSERT_API_ENTRY(thr); + + tv1 = duk_require_tval(thr, idx1); + DUK_ASSERT(tv1 != NULL); + tv2 = duk_require_tval(thr, idx2); + DUK_ASSERT(tv2 != NULL); + + /* If tv1==tv2 this is a NOP, no check is needed */ + DUK_TVAL_SET_TVAL(&tv_tmp, tv1); + DUK_TVAL_SET_TVAL(tv1, tv2); + DUK_TVAL_SET_TVAL(tv2, &tv_tmp); +} + +DUK_EXTERNAL void duk_swap_top(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + duk_swap(thr, idx, -1); +} + +DUK_EXTERNAL void duk_dup(duk_hthread *thr, duk_idx_t from_idx) { + duk_tval *tv_from; + duk_tval *tv_to; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + + tv_from = duk_require_tval(thr, from_idx); + tv_to = thr->valstack_top++; + DUK_ASSERT(tv_from != NULL); + DUK_ASSERT(tv_to != NULL); + DUK_TVAL_SET_TVAL(tv_to, tv_from); + DUK_TVAL_INCREF(thr, tv_to); /* no side effects */ +} + +DUK_EXTERNAL void duk_dup_top(duk_hthread *thr) { +#if defined(DUK_USE_PREFER_SIZE) + duk_dup(thr, -1); +#else + duk_tval *tv_from; + duk_tval *tv_to; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + + if (DUK_UNLIKELY(thr->valstack_top - thr->valstack_bottom <= 0)) { + DUK_ERROR_RANGE_INDEX(thr, -1); + DUK_WO_NORETURN(return;); + } + tv_from = thr->valstack_top - 1; + tv_to = thr->valstack_top++; + DUK_ASSERT(tv_from != NULL); + DUK_ASSERT(tv_to != NULL); + DUK_TVAL_SET_TVAL(tv_to, tv_from); + DUK_TVAL_INCREF(thr, tv_to); /* no side effects */ +#endif +} + +DUK_INTERNAL void duk_dup_0(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_dup(thr, 0); +} +DUK_INTERNAL void duk_dup_1(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_dup(thr, 1); +} +DUK_INTERNAL void duk_dup_2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_dup(thr, 2); +} +DUK_INTERNAL void duk_dup_m2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_dup(thr, -2); +} +DUK_INTERNAL void duk_dup_m3(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_dup(thr, -3); +} +DUK_INTERNAL void duk_dup_m4(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_dup(thr, -4); +} + +DUK_EXTERNAL void duk_insert(duk_hthread *thr, duk_idx_t to_idx) { + duk_tval *p; + duk_tval *q; + duk_tval tv_tmp; + duk_size_t nbytes; + + DUK_ASSERT_API_ENTRY(thr); + + p = duk_require_tval(thr, to_idx); + DUK_ASSERT(p != NULL); + q = duk_require_tval(thr, -1); + DUK_ASSERT(q != NULL); + + DUK_ASSERT(q >= p); + + /* nbytes + * <---------> + * [ ... | p | x | x | q ] + * => [ ... | q | p | x | x ] + */ + + nbytes = (duk_size_t) (((duk_uint8_t *) q) - ((duk_uint8_t *) p)); + + DUK_DDD(DUK_DDDPRINT("duk_insert: to_idx=%ld, p=%p, q=%p, nbytes=%lu", + (long) to_idx, (void *) p, (void *) q, (unsigned long) nbytes)); + + /* No net refcount changes. No need to special case nbytes == 0 + * (p == q). + */ + DUK_TVAL_SET_TVAL(&tv_tmp, q); + duk_memmove((void *) (p + 1), (const void *) p, (size_t) nbytes); + DUK_TVAL_SET_TVAL(p, &tv_tmp); +} + +DUK_INTERNAL void duk_insert_undefined(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(idx >= 0); /* Doesn't support negative indices. */ + + duk_push_undefined(thr); + duk_insert(thr, idx); +} + +DUK_INTERNAL void duk_insert_undefined_n(duk_hthread *thr, duk_idx_t idx, duk_idx_t count) { + duk_tval *tv, *tv_end; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(idx >= 0); /* Doesn't support negative indices or count. */ + DUK_ASSERT(count >= 0); + + tv = duk_reserve_gap(thr, idx, count); + tv_end = tv + count; + while (tv != tv_end) { + DUK_TVAL_SET_UNDEFINED(tv); + tv++; + } +} + +DUK_EXTERNAL void duk_pull(duk_hthread *thr, duk_idx_t from_idx) { + duk_tval *p; + duk_tval *q; + duk_tval tv_tmp; + duk_size_t nbytes; + + DUK_ASSERT_API_ENTRY(thr); + + /* nbytes + * <---------> + * [ ... | x | x | p | y | y | q ] + * => [ ... | x | x | y | y | q | p ] + */ + + p = duk_require_tval(thr, from_idx); + DUK_ASSERT(p != NULL); + q = duk_require_tval(thr, -1); + DUK_ASSERT(q != NULL); + + DUK_ASSERT(q >= p); + + nbytes = (duk_size_t) (((duk_uint8_t *) q) - ((duk_uint8_t *) p)); + + DUK_DDD(DUK_DDDPRINT("duk_pull: from_idx=%ld, p=%p, q=%p, nbytes=%lu", + (long) from_idx, (void *) p, (void *) q, (unsigned long) nbytes)); + + /* No net refcount changes. No need to special case nbytes == 0 + * (p == q). + */ + DUK_TVAL_SET_TVAL(&tv_tmp, p); + duk_memmove((void *) p, (const void *) (p + 1), (size_t) nbytes); + DUK_TVAL_SET_TVAL(q, &tv_tmp); +} + +DUK_EXTERNAL void duk_replace(duk_hthread *thr, duk_idx_t to_idx) { + duk_tval *tv1; + duk_tval *tv2; + duk_tval tv_tmp; + + DUK_ASSERT_API_ENTRY(thr); + + tv1 = duk_require_tval(thr, -1); + DUK_ASSERT(tv1 != NULL); + tv2 = duk_require_tval(thr, to_idx); + DUK_ASSERT(tv2 != NULL); + + /* For tv1 == tv2, both pointing to stack top, the end result + * is same as duk_pop(thr). + */ + DUK_TVAL_SET_TVAL(&tv_tmp, tv2); + DUK_TVAL_SET_TVAL(tv2, tv1); + DUK_TVAL_SET_UNDEFINED(tv1); + thr->valstack_top--; + DUK_TVAL_DECREF(thr, &tv_tmp); /* side effects */ +} + +DUK_EXTERNAL void duk_copy(duk_hthread *thr, duk_idx_t from_idx, duk_idx_t to_idx) { + duk_tval *tv1; + duk_tval *tv2; + + DUK_ASSERT_API_ENTRY(thr); + + tv1 = duk_require_tval(thr, from_idx); + DUK_ASSERT(tv1 != NULL); + tv2 = duk_require_tval(thr, to_idx); + DUK_ASSERT(tv2 != NULL); + + /* For tv1 == tv2, this is a no-op (no explicit check needed). */ + DUK_TVAL_SET_TVAL_UPDREF(thr, tv2, tv1); /* side effects */ +} + +DUK_EXTERNAL void duk_remove(duk_hthread *thr, duk_idx_t idx) { + duk_tval *p; + duk_tval *q; +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_tval tv_tmp; +#endif + duk_size_t nbytes; + + DUK_ASSERT_API_ENTRY(thr); + + p = duk_require_tval(thr, idx); + DUK_ASSERT(p != NULL); + q = duk_require_tval(thr, -1); + DUK_ASSERT(q != NULL); + + DUK_ASSERT(q >= p); + + /* nbytes zero size case + * <---------> + * [ ... | p | x | x | q ] [ ... | p==q ] + * => [ ... | x | x | q ] [ ... ] + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + /* use a temp: decref only when valstack reachable values are correct */ + DUK_TVAL_SET_TVAL(&tv_tmp, p); +#endif + + nbytes = (duk_size_t) (((duk_uint8_t *) q) - ((duk_uint8_t *) p)); /* Note: 'q' is top-1 */ + duk_memmove((void *) p, (const void *) (p + 1), (size_t) nbytes); + + DUK_TVAL_SET_UNDEFINED(q); + thr->valstack_top--; + +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_TVAL_DECREF(thr, &tv_tmp); /* side effects */ +#endif +} + +DUK_INTERNAL void duk_remove_unsafe(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + duk_remove(thr, idx); /* XXX: no optimization for now */ +} + +DUK_INTERNAL void duk_remove_m2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + duk_remove(thr, -2); +} + +DUK_INTERNAL void duk_remove_n(duk_hthread *thr, duk_idx_t idx, duk_idx_t count) { +#if defined(DUK_USE_PREFER_SIZE) + /* XXX: maybe too slow even when preferring size? */ + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(count >= 0); + DUK_ASSERT(idx >= 0); + + while (count-- > 0) { + duk_remove(thr, idx); + } +#else /* DUK_USE_PREFER_SIZE */ + duk_tval *tv_src; + duk_tval *tv_dst; + duk_tval *tv_newtop; + duk_tval *tv; + duk_size_t bytes; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(count >= 0); + DUK_ASSERT(idx >= 0); + + tv_dst = thr->valstack_bottom + idx; + DUK_ASSERT(tv_dst <= thr->valstack_top); + tv_src = tv_dst + count; + DUK_ASSERT(tv_src <= thr->valstack_top); + bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_top - (duk_uint8_t *) tv_src); + + for (tv = tv_dst; tv < tv_src; tv++) { + DUK_TVAL_DECREF_NORZ(thr, tv); + } + + duk_memmove((void *) tv_dst, (const void *) tv_src, bytes); + + tv_newtop = thr->valstack_top - count; + for (tv = tv_newtop; tv < thr->valstack_top; tv++) { + DUK_TVAL_SET_UNDEFINED(tv); + } + thr->valstack_top = tv_newtop; + + /* When not preferring size, only NORZ macros are used; caller + * is expected to DUK_REFZERO_CHECK(). + */ +#endif /* DUK_USE_PREFER_SIZE */ +} + +DUK_INTERNAL void duk_remove_n_unsafe(duk_hthread *thr, duk_idx_t idx, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + + duk_remove_n(thr, idx, count); /* XXX: no optimization for now */ +} + +/* + * Stack slice primitives + */ + +DUK_EXTERNAL void duk_xcopymove_raw(duk_hthread *to_thr, duk_hthread *from_thr, duk_idx_t count, duk_bool_t is_copy) { + void *src; + duk_size_t nbytes; + duk_tval *p; + duk_tval *q; + + /* XXX: several pointer comparison issues here */ + + DUK_ASSERT_API_ENTRY(to_thr); + DUK_CTX_ASSERT_VALID(to_thr); + DUK_CTX_ASSERT_VALID(from_thr); + DUK_ASSERT(to_thr->heap == from_thr->heap); + + if (DUK_UNLIKELY(to_thr == from_thr)) { + DUK_ERROR_TYPE(to_thr, DUK_STR_INVALID_CONTEXT); + DUK_WO_NORETURN(return;); + } + if (DUK_UNLIKELY((duk_uidx_t) count > (duk_uidx_t) DUK_USE_VALSTACK_LIMIT)) { + /* Maximum value check ensures 'nbytes' won't wrap below. + * Also handles negative count. + */ + DUK_ERROR_RANGE_INVALID_COUNT(to_thr); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(count >= 0); + + nbytes = sizeof(duk_tval) * (duk_size_t) count; + if (DUK_UNLIKELY(nbytes == 0)) { + return; + } + DUK_ASSERT(to_thr->valstack_top <= to_thr->valstack_end); + if (DUK_UNLIKELY((duk_size_t) ((duk_uint8_t *) to_thr->valstack_end - (duk_uint8_t *) to_thr->valstack_top) < nbytes)) { + DUK_ERROR_RANGE_PUSH_BEYOND(to_thr); + DUK_WO_NORETURN(return;); + } + src = (void *) ((duk_uint8_t *) from_thr->valstack_top - nbytes); + if (DUK_UNLIKELY(src < (void *) from_thr->valstack_bottom)) { + DUK_ERROR_RANGE_INVALID_COUNT(to_thr); + DUK_WO_NORETURN(return;); + } + + /* Copy values (no overlap even if to_thr == from_thr; that's not + * allowed now anyway). + */ + DUK_ASSERT(nbytes > 0); + duk_memcpy((void *) to_thr->valstack_top, (const void *) src, (size_t) nbytes); + + p = to_thr->valstack_top; + to_thr->valstack_top = (duk_tval *) (void *) (((duk_uint8_t *) p) + nbytes); + + if (is_copy) { + /* Incref copies, keep originals. */ + q = to_thr->valstack_top; + while (p < q) { + DUK_TVAL_INCREF(to_thr, p); /* no side effects */ + p++; + } + } else { + /* No net refcount change. */ + p = from_thr->valstack_top; + q = (duk_tval *) (void *) (((duk_uint8_t *) p) - nbytes); + from_thr->valstack_top = q; + + while (p > q) { + p--; + DUK_TVAL_SET_UNDEFINED(p); + /* XXX: fast primitive to set a bunch of values to UNDEFINED */ + } + } +} + +/* Internal helper: reserve a gap of 'count' elements at 'idx_base' and return a + * pointer to the gap. Values in the gap are garbage and MUST be initialized by + * the caller before any side effects may occur. The caller must ensure there's + * enough stack reserve for 'count' values. + */ +DUK_INTERNAL duk_tval *duk_reserve_gap(duk_hthread *thr, duk_idx_t idx_base, duk_idx_t count) { + duk_tval *tv_src; + duk_tval *tv_dst; + duk_size_t gap_bytes; + duk_size_t copy_bytes; + + /* Caller is responsible for ensuring there's enough preallocated + * value stack. + */ + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(count >= 0); + DUK_ASSERT((duk_size_t) (thr->valstack_end - thr->valstack_top) >= (duk_size_t) count); + + tv_src = thr->valstack_bottom + idx_base; + gap_bytes = (duk_size_t) count * sizeof(duk_tval); + tv_dst = (duk_tval *) (void *) ((duk_uint8_t *) tv_src + gap_bytes); + copy_bytes = (duk_size_t) ((duk_uint8_t *) thr->valstack_top - (duk_uint8_t *) tv_src); + thr->valstack_top = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_top + gap_bytes); + duk_memmove((void *) tv_dst, (const void *) tv_src, copy_bytes); + + /* Values in the gap are left as garbage: caller must fill them in + * and INCREF them before any side effects. + */ + return tv_src; +} + +/* + * Get/opt/require + */ + +DUK_EXTERNAL void duk_require_undefined(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_UNDEFINED(tv))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "undefined", DUK_STR_NOT_UNDEFINED); + DUK_WO_NORETURN(return;); + } +} + +DUK_EXTERNAL void duk_require_null(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_NULL(tv))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "null", DUK_STR_NOT_NULL); + DUK_WO_NORETURN(return;); + } +} + +DUK_LOCAL DUK_ALWAYS_INLINE duk_bool_t duk__get_boolean_raw(duk_hthread *thr, duk_idx_t idx, duk_bool_t def_value) { + duk_bool_t ret; + duk_tval *tv; + + DUK_CTX_ASSERT_VALID(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_BOOLEAN(tv)) { + ret = DUK_TVAL_GET_BOOLEAN(tv); + DUK_ASSERT(ret == 0 || ret == 1); + } else { + ret = def_value; + /* Not guaranteed to be 0 or 1. */ + } + + return ret; +} + +DUK_EXTERNAL duk_bool_t duk_get_boolean(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return duk__get_boolean_raw(thr, idx, 0); /* default: false */ +} + +DUK_EXTERNAL duk_bool_t duk_get_boolean_default(duk_hthread *thr, duk_idx_t idx, duk_bool_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + return duk__get_boolean_raw(thr, idx, def_value); +} + +DUK_EXTERNAL duk_bool_t duk_require_boolean(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_bool_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_LIKELY(DUK_TVAL_IS_BOOLEAN(tv))) { + ret = DUK_TVAL_GET_BOOLEAN(tv); + DUK_ASSERT(ret == 0 || ret == 1); + return ret; + } else { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "boolean", DUK_STR_NOT_BOOLEAN); + DUK_WO_NORETURN(return 0;); + } +} + +DUK_EXTERNAL duk_bool_t duk_opt_boolean(duk_hthread *thr, duk_idx_t idx, duk_bool_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_boolean(thr, idx); +} + +DUK_LOCAL DUK_ALWAYS_INLINE duk_double_t duk__get_number_raw(duk_hthread *thr, duk_idx_t idx, duk_double_t def_value) { + duk_double_union ret; + duk_tval *tv; + + DUK_CTX_ASSERT_VALID(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + ret.d = (duk_double_t) DUK_TVAL_GET_FASTINT(tv); /* XXX: cast trick */ + } + else +#endif + if (DUK_TVAL_IS_DOUBLE(tv)) { + /* When using packed duk_tval, number must be in NaN-normalized form + * for it to be a duk_tval, so no need to normalize. NOP for unpacked + * duk_tval. + */ + ret.d = DUK_TVAL_GET_DOUBLE(tv); + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&ret)); + } else { + ret.d = def_value; + /* Default value (including NaN) may not be normalized. */ + } + + return ret.d; +} + +DUK_EXTERNAL duk_double_t duk_get_number(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_number_raw(thr, idx, DUK_DOUBLE_NAN); /* default: NaN */ +} + +DUK_EXTERNAL duk_double_t duk_get_number_default(duk_hthread *thr, duk_idx_t idx, duk_double_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_number_raw(thr, idx, def_value); +} + +DUK_EXTERNAL duk_double_t duk_require_number(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_double_union ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_NUMBER(tv))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "number", DUK_STR_NOT_NUMBER); + DUK_WO_NORETURN(return 0.0;); + } + + ret.d = DUK_TVAL_GET_NUMBER(tv); + + /* When using packed duk_tval, number must be in NaN-normalized form + * for it to be a duk_tval, so no need to normalize. NOP for unpacked + * duk_tval. + */ + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&ret)); + return ret.d; +} + +DUK_EXTERNAL duk_double_t duk_opt_number(duk_hthread *thr, duk_idx_t idx, duk_double_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + /* User provided default is not NaN normalized. */ + return def_value; + } + return duk_require_number(thr, idx); +} + +DUK_EXTERNAL duk_int_t duk_get_int(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_int_t) duk__api_coerce_d2i(thr, idx, 0 /*def_value*/, 0 /*require*/); +} + +DUK_EXTERNAL duk_uint_t duk_get_uint(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_uint_t) duk__api_coerce_d2ui(thr, idx, 0 /*def_value*/, 0 /*require*/); +} + +DUK_EXTERNAL duk_int_t duk_get_int_default(duk_hthread *thr, duk_idx_t idx, duk_int_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_int_t) duk__api_coerce_d2i(thr, idx, def_value, 0 /*require*/); +} + +DUK_EXTERNAL duk_uint_t duk_get_uint_default(duk_hthread *thr, duk_idx_t idx, duk_uint_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_uint_t) duk__api_coerce_d2ui(thr, idx, def_value, 0 /*require*/); +} + +DUK_EXTERNAL duk_int_t duk_require_int(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_int_t) duk__api_coerce_d2i(thr, idx, 0 /*def_value*/, 1 /*require*/); +} + +DUK_EXTERNAL duk_uint_t duk_require_uint(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_uint_t) duk__api_coerce_d2ui(thr, idx, 0 /*def_value*/, 1 /*require*/); +} + +DUK_EXTERNAL duk_int_t duk_opt_int(duk_hthread *thr, duk_idx_t idx, duk_int_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_int(thr, idx); +} + +DUK_EXTERNAL duk_uint_t duk_opt_uint(duk_hthread *thr, duk_idx_t idx, duk_uint_t def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_uint(thr, idx); +} + +DUK_EXTERNAL const char *duk_get_lstring(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len) { + duk_hstring *h; + const char *ret; + duk_size_t len; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_get_hstring(thr, idx); + if (h != NULL) { + len = DUK_HSTRING_GET_BYTELEN(h); + ret = (const char *) DUK_HSTRING_GET_DATA(h); + } else { + len = 0; + ret = NULL; + } + + if (out_len != NULL) { + *out_len = len; + } + return ret; +} + +DUK_EXTERNAL const char *duk_require_lstring(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_require_hstring(thr, idx); + DUK_ASSERT(h != NULL); + if (out_len) { + *out_len = DUK_HSTRING_GET_BYTELEN(h); + } + return (const char *) DUK_HSTRING_GET_DATA(h); +} + +DUK_INTERNAL const char *duk_require_lstring_notsymbol(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_require_hstring_notsymbol(thr, idx); + DUK_ASSERT(h != NULL); + if (out_len) { + *out_len = DUK_HSTRING_GET_BYTELEN(h); + } + return (const char *) DUK_HSTRING_GET_DATA(h); +} + +DUK_EXTERNAL const char *duk_get_string(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_get_hstring(thr, idx); + if (h != NULL) { + return (const char *) DUK_HSTRING_GET_DATA(h); + } else { + return NULL; + } +} + +DUK_EXTERNAL const char *duk_opt_lstring(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len, const char *def_ptr, duk_size_t def_len) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + if (out_len != NULL) { + *out_len = def_len; + } + return def_ptr; + } + return duk_require_lstring(thr, idx, out_len); +} + +DUK_EXTERNAL const char *duk_opt_string(duk_hthread *thr, duk_idx_t idx, const char *def_ptr) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_ptr; + } + return duk_require_string(thr, idx); +} + +DUK_EXTERNAL const char *duk_get_lstring_default(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len, const char *def_ptr, duk_size_t def_len) { + duk_hstring *h; + const char *ret; + duk_size_t len; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_get_hstring(thr, idx); + if (h != NULL) { + len = DUK_HSTRING_GET_BYTELEN(h); + ret = (const char *) DUK_HSTRING_GET_DATA(h); + } else { + len = def_len; + ret = def_ptr; + } + + if (out_len != NULL) { + *out_len = len; + } + return ret; +} + +DUK_EXTERNAL const char *duk_get_string_default(duk_hthread *thr, duk_idx_t idx, const char *def_value) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_get_hstring(thr, idx); + if (h != NULL) { + return (const char *) DUK_HSTRING_GET_DATA(h); + } else { + return def_value; + } +} + +DUK_INTERNAL const char *duk_get_string_notsymbol(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_get_hstring_notsymbol(thr, idx); + if (h) { + return (const char *) DUK_HSTRING_GET_DATA(h); + } else { + return NULL; + } +} + +DUK_EXTERNAL const char *duk_require_string(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return duk_require_lstring(thr, idx, NULL); +} + +DUK_INTERNAL const char *duk_require_string_notsymbol(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_require_hstring_notsymbol(thr, idx); + DUK_ASSERT(h != NULL); + return (const char *) DUK_HSTRING_GET_DATA(h); +} + +DUK_EXTERNAL void duk_require_object(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_OBJECT(tv))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "object", DUK_STR_NOT_OBJECT); + DUK_WO_NORETURN(return;); + } +} + +DUK_LOCAL void *duk__get_pointer_raw(duk_hthread *thr, duk_idx_t idx, void *def_value) { + duk_tval *tv; + void *p; + + DUK_CTX_ASSERT_VALID(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (!DUK_TVAL_IS_POINTER(tv)) { + return def_value; + } + + p = DUK_TVAL_GET_POINTER(tv); /* may be NULL */ + return p; +} + +DUK_EXTERNAL void *duk_get_pointer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_pointer_raw(thr, idx, NULL /*def_value*/); +} + +DUK_EXTERNAL void *duk_opt_pointer(duk_hthread *thr, duk_idx_t idx, void *def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_pointer(thr, idx); +} + +DUK_EXTERNAL void *duk_get_pointer_default(duk_hthread *thr, duk_idx_t idx, void *def_value) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_pointer_raw(thr, idx, def_value); +} + +DUK_EXTERNAL void *duk_require_pointer(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + void *p; + + DUK_ASSERT_API_ENTRY(thr); + + /* Note: here we must be wary of the fact that a pointer may be + * valid and be a NULL. + */ + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_POINTER(tv))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "pointer", DUK_STR_NOT_POINTER); + DUK_WO_NORETURN(return NULL;); + } + p = DUK_TVAL_GET_POINTER(tv); /* may be NULL */ + return p; +} + +#if 0 /*unused*/ +DUK_INTERNAL void *duk_get_voidptr(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_heaphdr *h; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (!DUK_TVAL_IS_HEAP_ALLOCATED(tv)) { + return NULL; + } + + h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + return (void *) h; +} +#endif + +DUK_LOCAL void *duk__get_buffer_helper(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size, duk_bool_t throw_flag) { + duk_hbuffer *h; + void *ret; + duk_size_t len; + duk_tval *tv; + + DUK_CTX_ASSERT_VALID(thr); + + if (out_size != NULL) { + *out_size = 0; + } + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_LIKELY(DUK_TVAL_IS_BUFFER(tv))) { + h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + + len = DUK_HBUFFER_GET_SIZE(h); + ret = DUK_HBUFFER_GET_DATA_PTR(thr->heap, h); + } else { + if (throw_flag) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "buffer", DUK_STR_NOT_BUFFER); + DUK_WO_NORETURN(return NULL;); + } + len = def_size; + ret = def_ptr; + } + + if (out_size != NULL) { + *out_size = len; + } + return ret; +} + +DUK_EXTERNAL void *duk_get_buffer(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size) { + DUK_ASSERT_API_ENTRY(thr); + + return duk__get_buffer_helper(thr, idx, out_size, NULL /*def_ptr*/, 0 /*def_size*/, 0 /*throw_flag*/); +} + +DUK_EXTERNAL void *duk_opt_buffer(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + if (out_size != NULL) { + *out_size = def_size; + } + return def_ptr; + } + return duk_require_buffer(thr, idx, out_size); +} + +DUK_EXTERNAL void *duk_get_buffer_default(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_len) { + DUK_ASSERT_API_ENTRY(thr); + + return duk__get_buffer_helper(thr, idx, out_size, def_ptr, def_len, 0 /*throw_flag*/); +} + +DUK_EXTERNAL void *duk_require_buffer(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size) { + DUK_ASSERT_API_ENTRY(thr); + + return duk__get_buffer_helper(thr, idx, out_size, NULL /*def_ptr*/, 0 /*def_size*/, 1 /*throw_flag*/); +} + +/* Get the active buffer data area for a plain buffer or a buffer object. + * Return NULL if the the value is not a buffer. Note that a buffer may + * have a NULL data pointer when its size is zero, the optional 'out_isbuffer' + * argument allows caller to detect this reliably. + */ +DUK_INTERNAL void *duk_get_buffer_data_raw(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size, duk_bool_t throw_flag, duk_bool_t *out_isbuffer) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + if (out_isbuffer != NULL) { + *out_isbuffer = 0; + } + if (out_size != NULL) { + *out_size = def_size; + } + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_BUFFER(tv)) { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + if (out_size != NULL) { + *out_size = DUK_HBUFFER_GET_SIZE(h); + } + if (out_isbuffer != NULL) { + *out_isbuffer = 1; + } + return (void *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h); /* may be NULL (but only if size is 0) */ + } +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + else if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (DUK_HOBJECT_IS_BUFOBJ(h)) { + /* XXX: this is probably a useful shared helper: for a + * duk_hbufobj, get a validated buffer pointer/length. + */ + duk_hbufobj *h_bufobj = (duk_hbufobj *) h; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + if (h_bufobj->buf != NULL && + DUK_HBUFOBJ_VALID_SLICE(h_bufobj)) { + duk_uint8_t *p; + + p = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufobj->buf); + if (out_size != NULL) { + *out_size = (duk_size_t) h_bufobj->length; + } + if (out_isbuffer != NULL) { + *out_isbuffer = 1; + } + return (void *) (p + h_bufobj->offset); + } + /* if slice not fully valid, treat as error */ + } + } +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + + if (throw_flag) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "buffer", DUK_STR_NOT_BUFFER); + DUK_WO_NORETURN(return NULL;); + } + return def_ptr; +} + +DUK_EXTERNAL void *duk_get_buffer_data(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size) { + DUK_ASSERT_API_ENTRY(thr); + return duk_get_buffer_data_raw(thr, idx, out_size, NULL /*def_ptr*/, 0 /*def_size*/, 0 /*throw_flag*/, NULL); +} + +DUK_EXTERNAL void *duk_get_buffer_data_default(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size) { + DUK_ASSERT_API_ENTRY(thr); + return duk_get_buffer_data_raw(thr, idx, out_size, def_ptr, def_size, 0 /*throw_flag*/, NULL); +} + +DUK_EXTERNAL void *duk_opt_buffer_data(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + if (out_size != NULL) { + *out_size = def_size; + } + return def_ptr; + } + return duk_require_buffer_data(thr, idx, out_size); +} + +DUK_EXTERNAL void *duk_require_buffer_data(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size) { + DUK_ASSERT_API_ENTRY(thr); + return duk_get_buffer_data_raw(thr, idx, out_size, NULL /*def_ptr*/, 0 /*def_size*/, 1 /*throw_flag*/, NULL); +} + +/* Raw helper for getting a value from the stack, checking its tag. + * The tag cannot be a number because numbers don't have an internal + * tag in the packed representation. + */ + +DUK_LOCAL duk_heaphdr *duk__get_tagged_heaphdr_raw(duk_hthread *thr, duk_idx_t idx, duk_uint_t tag) { + duk_tval *tv; + duk_heaphdr *ret; + + DUK_CTX_ASSERT_VALID(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_GET_TAG(tv) != tag) { + return (duk_heaphdr *) NULL; + } + + ret = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(ret != NULL); /* tagged null pointers should never occur */ + return ret; + +} + +DUK_INTERNAL duk_hstring *duk_get_hstring(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return (duk_hstring *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_STRING); +} + +DUK_INTERNAL duk_hstring *duk_get_hstring_notsymbol(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hstring *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_STRING); + if (DUK_UNLIKELY(h && DUK_HSTRING_HAS_SYMBOL(h))) { + return NULL; + } + return h; +} + +DUK_INTERNAL duk_hstring *duk_require_hstring(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hstring *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_STRING); + if (DUK_UNLIKELY(h == NULL)) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "string", DUK_STR_NOT_STRING); + DUK_WO_NORETURN(return NULL;); + } + return h; +} + +DUK_INTERNAL duk_hstring *duk_require_hstring_notsymbol(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hstring *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_STRING); + if (DUK_UNLIKELY(h == NULL || DUK_HSTRING_HAS_SYMBOL(h))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "string", DUK_STR_NOT_STRING); + DUK_WO_NORETURN(return NULL;); + } + return h; +} + +DUK_INTERNAL duk_hobject *duk_get_hobject(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); +} + +DUK_INTERNAL duk_hobject *duk_require_hobject(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(h == NULL)) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "object", DUK_STR_NOT_OBJECT); + DUK_WO_NORETURN(return NULL;); + } + return h; +} + +DUK_INTERNAL duk_hbuffer *duk_get_hbuffer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return (duk_hbuffer *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_BUFFER); +} + +DUK_INTERNAL duk_hbuffer *duk_require_hbuffer(duk_hthread *thr, duk_idx_t idx) { + duk_hbuffer *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hbuffer *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_BUFFER); + if (DUK_UNLIKELY(h == NULL)) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "buffer", DUK_STR_NOT_BUFFER); + DUK_WO_NORETURN(return NULL;); + } + return h; +} + +DUK_INTERNAL duk_hthread *duk_get_hthread(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(h != NULL && !DUK_HOBJECT_IS_THREAD(h))) { + h = NULL; + } + return (duk_hthread *) h; +} + +DUK_INTERNAL duk_hthread *duk_require_hthread(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(!(h != NULL && DUK_HOBJECT_IS_THREAD(h)))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "thread", DUK_STR_NOT_THREAD); + DUK_WO_NORETURN(return NULL;); + } + return (duk_hthread *) h; +} + +DUK_INTERNAL duk_hcompfunc *duk_get_hcompfunc(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(h != NULL && !DUK_HOBJECT_IS_COMPFUNC(h))) { + h = NULL; + } + return (duk_hcompfunc *) h; +} + +DUK_INTERNAL duk_hcompfunc *duk_require_hcompfunc(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(!(h != NULL && DUK_HOBJECT_IS_COMPFUNC(h)))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "compiledfunction", DUK_STR_NOT_COMPFUNC); + DUK_WO_NORETURN(return NULL;); + } + return (duk_hcompfunc *) h; +} + +DUK_INTERNAL duk_hnatfunc *duk_get_hnatfunc(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(h != NULL && !DUK_HOBJECT_IS_NATFUNC(h))) { + h = NULL; + } + return (duk_hnatfunc *) h; +} + +DUK_INTERNAL duk_hnatfunc *duk_require_hnatfunc(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(!(h != NULL && DUK_HOBJECT_IS_NATFUNC(h)))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "nativefunction", DUK_STR_NOT_NATFUNC); + DUK_WO_NORETURN(return NULL;); + } + return (duk_hnatfunc *) h; +} + +DUK_EXTERNAL duk_c_function duk_get_c_function(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_hobject *h; + duk_hnatfunc *f; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_OBJECT(tv))) { + return NULL; + } + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + + if (DUK_UNLIKELY(!DUK_HOBJECT_IS_NATFUNC(h))) { + return NULL; + } + DUK_ASSERT(DUK_HOBJECT_HAS_NATFUNC(h)); + f = (duk_hnatfunc *) h; + + return f->func; +} + +DUK_EXTERNAL duk_c_function duk_opt_c_function(duk_hthread *thr, duk_idx_t idx, duk_c_function def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_c_function(thr, idx); +} + +DUK_EXTERNAL duk_c_function duk_get_c_function_default(duk_hthread *thr, duk_idx_t idx, duk_c_function def_value) { + duk_c_function ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = duk_get_c_function(thr, idx); + if (ret != NULL) { + return ret; + } + + return def_value; +} + +DUK_EXTERNAL duk_c_function duk_require_c_function(duk_hthread *thr, duk_idx_t idx) { + duk_c_function ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = duk_get_c_function(thr, idx); + if (DUK_UNLIKELY(!ret)) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "nativefunction", DUK_STR_NOT_NATFUNC); + DUK_WO_NORETURN(return ret;); + } + return ret; +} + +DUK_EXTERNAL void duk_require_function(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + if (DUK_UNLIKELY(!duk_is_function(thr, idx))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "function", DUK_STR_NOT_FUNCTION); + DUK_WO_NORETURN(return;); + } +} + +DUK_EXTERNAL void duk_require_constructable(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_require_hobject_accept_mask(thr, idx, DUK_TYPE_MASK_LIGHTFUNC); + if (DUK_UNLIKELY(h != NULL && !DUK_HOBJECT_HAS_CONSTRUCTABLE(h))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "constructable", DUK_STR_NOT_CONSTRUCTABLE); + DUK_WO_NORETURN(return;); + } + /* Lightfuncs (h == NULL) are constructable. */ +} + +DUK_EXTERNAL duk_hthread *duk_get_context(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return duk_get_hthread(thr, idx); +} + +DUK_EXTERNAL duk_hthread *duk_require_context(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return duk_require_hthread(thr, idx); +} + +DUK_EXTERNAL duk_hthread *duk_opt_context(duk_hthread *thr, duk_idx_t idx, duk_hthread *def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_context(thr, idx); +} + +DUK_EXTERNAL duk_hthread *duk_get_context_default(duk_hthread *thr, duk_idx_t idx, duk_hthread *def_value) { + duk_hthread *ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = duk_get_context(thr, idx); + if (ret != NULL) { + return ret; + } + + return def_value; +} + +DUK_EXTERNAL void *duk_get_heapptr(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + void *ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_HEAP_ALLOCATED(tv))) { + return (void *) NULL; + } + + ret = (void *) DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(ret != NULL); + return ret; +} + +DUK_EXTERNAL void *duk_opt_heapptr(duk_hthread *thr, duk_idx_t idx, void *def_value) { + DUK_ASSERT_API_ENTRY(thr); + + if (duk_check_type_mask(thr, idx, DUK_TYPE_MASK_NONE | DUK_TYPE_MASK_UNDEFINED)) { + return def_value; + } + return duk_require_heapptr(thr, idx); +} + +DUK_EXTERNAL void *duk_get_heapptr_default(duk_hthread *thr, duk_idx_t idx, void *def_value) { + void *ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = duk_get_heapptr(thr, idx); + if (ret != NULL) { + return ret; + } + + return def_value; +} + +DUK_EXTERNAL void *duk_require_heapptr(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + void *ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_UNLIKELY(!DUK_TVAL_IS_HEAP_ALLOCATED(tv))) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "heapobject", DUK_STR_UNEXPECTED_TYPE); + DUK_WO_NORETURN(return NULL;); + } + + ret = (void *) DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(ret != NULL); + return ret; +} + +/* Internal helper for getting/requiring a duk_hobject with possible promotion. */ +DUK_LOCAL duk_hobject *duk__get_hobject_promote_mask_raw(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask) { + duk_uint_t val_mask; + duk_hobject *res; + + DUK_CTX_ASSERT_VALID(thr); + + res = duk_get_hobject(thr, idx); /* common case, not promoted */ + if (DUK_LIKELY(res != NULL)) { + DUK_ASSERT(res != NULL); + return res; + } + + val_mask = duk_get_type_mask(thr, idx); + if (val_mask & type_mask) { + if (type_mask & DUK_TYPE_MASK_PROMOTE) { + res = duk_to_hobject(thr, idx); + DUK_ASSERT(res != NULL); + return res; + } else { + return NULL; /* accept without promoting */ + } + } + + if (type_mask & DUK_TYPE_MASK_THROW) { + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, "object", DUK_STR_NOT_OBJECT); + DUK_WO_NORETURN(return NULL;); + } + return NULL; +} + +/* Get a duk_hobject * at 'idx'; if the value is not an object but matches the + * supplied 'type_mask', promote it to an object and return the duk_hobject *. + * This is useful for call sites which want an object but also accept a plain + * buffer and/or a lightfunc which gets automatically promoted to an object. + * Return value is NULL if value is neither an object nor a plain type allowed + * by the mask. + */ +DUK_INTERNAL duk_hobject *duk_get_hobject_promote_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_hobject_promote_mask_raw(thr, idx, type_mask | DUK_TYPE_MASK_PROMOTE); +} + +/* Like duk_get_hobject_promote_mask() but throw a TypeError instead of + * returning a NULL. + */ +DUK_INTERNAL duk_hobject *duk_require_hobject_promote_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_hobject_promote_mask_raw(thr, idx, type_mask | DUK_TYPE_MASK_THROW | DUK_TYPE_MASK_PROMOTE); +} + +/* Require a duk_hobject * at 'idx'; if the value is not an object but matches the + * supplied 'type_mask', return a NULL instead. Otherwise throw a TypeError. + */ +DUK_INTERNAL duk_hobject *duk_require_hobject_accept_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t type_mask) { + DUK_ASSERT_API_ENTRY(thr); + return duk__get_hobject_promote_mask_raw(thr, idx, type_mask | DUK_TYPE_MASK_THROW); +} + +DUK_INTERNAL duk_hobject *duk_get_hobject_with_class(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t classnum) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_DISABLE(classnum >= 0); /* unsigned */ + DUK_ASSERT(classnum <= DUK_HOBJECT_CLASS_MAX); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(h != NULL && DUK_HOBJECT_GET_CLASS_NUMBER(h) != classnum)) { + h = NULL; + } + return h; +} + +DUK_INTERNAL duk_hobject *duk_require_hobject_with_class(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t classnum) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_DISABLE(classnum >= 0); /* unsigned */ + DUK_ASSERT(classnum <= DUK_HOBJECT_CLASS_MAX); + + h = (duk_hobject *) duk__get_tagged_heaphdr_raw(thr, idx, DUK_TAG_OBJECT); + if (DUK_UNLIKELY(!(h != NULL && DUK_HOBJECT_GET_CLASS_NUMBER(h) == classnum))) { + duk_hstring *h_class; + h_class = DUK_HTHREAD_GET_STRING(thr, DUK_HOBJECT_CLASS_NUMBER_TO_STRIDX(classnum)); + DUK_UNREF(h_class); + + DUK_ERROR_REQUIRE_TYPE_INDEX(thr, idx, (const char *) DUK_HSTRING_GET_DATA(h_class), DUK_STR_UNEXPECTED_TYPE); + DUK_WO_NORETURN(return NULL;); + } + return h; +} + +DUK_EXTERNAL duk_size_t duk_get_length(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: + case DUK_TAG_BOOLEAN: + case DUK_TAG_POINTER: + return 0; +#if defined(DUK_USE_PREFER_SIZE) + /* String and buffer have a virtual non-configurable .length property + * which is within size_t range so it can be looked up without specific + * type checks. Lightfuncs inherit from %NativeFunctionPrototype% + * which provides an inherited .length accessor; it could be overwritten + * to produce unexpected types or values, but just number convert and + * duk_size_t cast for now. + */ + case DUK_TAG_STRING: + case DUK_TAG_BUFFER: + case DUK_TAG_LIGHTFUNC: { + duk_size_t ret; + duk_get_prop_stridx(thr, idx, DUK_STRIDX_LENGTH); + ret = (duk_size_t) duk_to_number_m1(thr); + duk_pop_unsafe(thr); + return ret; + } +#else /* DUK_USE_PREFER_SIZE */ + case DUK_TAG_STRING: { + duk_hstring *h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + return 0; + } + return (duk_size_t) DUK_HSTRING_GET_CHARLEN(h); + } + case DUK_TAG_BUFFER: { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + return (duk_size_t) DUK_HBUFFER_GET_SIZE(h); + } + case DUK_TAG_LIGHTFUNC: { + /* We could look up the length from the lightfunc duk_tval, + * but since Duktape 2.2 lightfunc .length comes from + * %NativeFunctionPrototype% which can be overridden, so + * look up the property explicitly. + */ + duk_size_t ret; + duk_get_prop_stridx(thr, idx, DUK_STRIDX_LENGTH); + ret = (duk_size_t) duk_to_number_m1(thr); + duk_pop_unsafe(thr); + return ret; + } +#endif /* DUK_USE_PREFER_SIZE */ + case DUK_TAG_OBJECT: { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + return (duk_size_t) duk_hobject_get_length(thr, h); + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: + /* number or 'unused' */ + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv) || DUK_TVAL_IS_UNUSED(tv)); + return 0; + } + + DUK_UNREACHABLE(); +} + +/* + * duk_known_xxx() helpers + * + * Used internally when we're 100% sure that a certain index is valid and + * contains an object of a certain type. For example, if we duk_push_object() + * we can then safely duk_known_hobject(thr, -1). These helpers just assert + * for the index and type, and if the assumptions are not valid, memory unsafe + * behavior happens. + */ + +DUK_LOCAL duk_heaphdr *duk__known_heaphdr(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_heaphdr *h; + + DUK_CTX_ASSERT_VALID(thr); + if (idx < 0) { + tv = thr->valstack_top + idx; + } else { + tv = thr->valstack_bottom + idx; + } + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_ASSERT(tv < thr->valstack_top); + h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + return h; +} + +DUK_INTERNAL duk_hstring *duk_known_hstring(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(duk_get_hstring(thr, idx) != NULL); + return (duk_hstring *) duk__known_heaphdr(thr, idx); +} + +DUK_INTERNAL duk_hobject *duk_known_hobject(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(duk_get_hobject(thr, idx) != NULL); + return (duk_hobject *) duk__known_heaphdr(thr, idx); +} + +DUK_INTERNAL duk_hbuffer *duk_known_hbuffer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(duk_get_hbuffer(thr, idx) != NULL); + return (duk_hbuffer *) duk__known_heaphdr(thr, idx); +} + +DUK_INTERNAL duk_hcompfunc *duk_known_hcompfunc(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(duk_get_hcompfunc(thr, idx) != NULL); + return (duk_hcompfunc *) duk__known_heaphdr(thr, idx); +} + +DUK_INTERNAL duk_hnatfunc *duk_known_hnatfunc(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(duk_get_hnatfunc(thr, idx) != NULL); + return (duk_hnatfunc *) duk__known_heaphdr(thr, idx); +} + +DUK_EXTERNAL void duk_set_length(duk_hthread *thr, duk_idx_t idx, duk_size_t len) { + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_normalize_index(thr, idx); + duk_push_uint(thr, (duk_uint_t) len); + duk_put_prop_stridx(thr, idx, DUK_STRIDX_LENGTH); +} + +/* + * Conversions and coercions + * + * The conversion/coercions are in-place operations on the value stack. + * Some operations are implemented here directly, while others call a + * helper in duk_js_ops.c after validating arguments. + */ + +/* E5 Section 8.12.8 */ + +DUK_LOCAL duk_bool_t duk__defaultvalue_coerce_attempt(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t func_stridx) { + if (duk_get_prop_stridx(thr, idx, func_stridx)) { + /* [ ... func ] */ + if (duk_is_callable(thr, -1)) { + duk_dup(thr, idx); /* -> [ ... func this ] */ + duk_call_method(thr, 0); /* -> [ ... retval ] */ + if (duk_is_primitive(thr, -1)) { + duk_replace(thr, idx); + return 1; + } + /* [ ... retval ]; popped below */ + } + } + duk_pop_unsafe(thr); /* [ ... func/retval ] -> [ ... ] */ + return 0; +} + +DUK_EXTERNAL void duk_to_undefined(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv); /* side effects */ +} + +DUK_EXTERNAL void duk_to_null(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + DUK_TVAL_SET_NULL_UPDREF(thr, tv); /* side effects */ +} + +/* E5 Section 9.1 */ +DUK_LOCAL const char * const duk__toprim_hint_strings[3] = { + "default", "string", "number" +}; +DUK_LOCAL void duk__to_primitive_helper(duk_hthread *thr, duk_idx_t idx, duk_int_t hint, duk_bool_t check_symbol) { + /* Inline initializer for coercers[] is not allowed by old compilers like BCC. */ + duk_small_uint_t coercers[2]; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(hint == DUK_HINT_NONE || hint == DUK_HINT_NUMBER || hint == DUK_HINT_STRING); + + idx = duk_require_normalize_index(thr, idx); + + /* If already primitive, return as is. */ + if (!duk_check_type_mask(thr, idx, DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_LIGHTFUNC | + DUK_TYPE_MASK_BUFFER)) { + DUK_ASSERT(!duk_is_buffer(thr, idx)); /* duk_to_string() relies on this behavior */ + return; + } + + /* @@toPrimitive lookup. Also do for plain buffers and lightfuncs + * which mimic objects. + */ + if (check_symbol && duk_get_method_stridx(thr, idx, DUK_STRIDX_WELLKNOWN_SYMBOL_TO_PRIMITIVE)) { + DUK_ASSERT(hint >= 0 && (duk_size_t) hint < sizeof(duk__toprim_hint_strings) / sizeof(const char *)); + duk_dup(thr, idx); + duk_push_string(thr, duk__toprim_hint_strings[hint]); + duk_call_method(thr, 1); /* [ ... method value hint ] -> [ ... res] */ + if (duk_check_type_mask(thr, -1, DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_LIGHTFUNC | + DUK_TYPE_MASK_BUFFER)) { + goto fail; + } + duk_replace(thr, idx); + return; + } + + /* Objects are coerced based on E5 specification. + * Lightfuncs are coerced because they behave like + * objects even if they're internally a primitive + * type. Same applies to plain buffers, which behave + * like ArrayBuffer objects since Duktape 2.x. + */ + + /* Hint magic for Date is unnecessary in ES2015 because of + * Date.prototype[@@toPrimitive]. However, it is needed if + * symbol support is not enabled. + */ +#if defined(DUK_USE_SYMBOL_BUILTIN) + if (hint == DUK_HINT_NONE) { + hint = DUK_HINT_NUMBER; + } +#else /* DUK_USE_SYMBOL_BUILTIN */ + if (hint == DUK_HINT_NONE) { + duk_small_uint_t class_number; + + class_number = duk_get_class_number(thr, idx); + if (class_number == DUK_HOBJECT_CLASS_DATE) { + hint = DUK_HINT_STRING; + } else { + hint = DUK_HINT_NUMBER; + } + } +#endif /* DUK_USE_SYMBOL_BUILTIN */ + + coercers[0] = DUK_STRIDX_VALUE_OF; + coercers[1] = DUK_STRIDX_TO_STRING; + if (hint == DUK_HINT_STRING) { + coercers[0] = DUK_STRIDX_TO_STRING; + coercers[1] = DUK_STRIDX_VALUE_OF; + } + + if (duk__defaultvalue_coerce_attempt(thr, idx, coercers[0])) { + DUK_ASSERT(!duk_is_buffer(thr, idx)); /* duk_to_string() relies on this behavior */ + return; + } + + if (duk__defaultvalue_coerce_attempt(thr, idx, coercers[1])) { + DUK_ASSERT(!duk_is_buffer(thr, idx)); /* duk_to_string() relies on this behavior */ + return; + } + + fail: + DUK_ERROR_TYPE(thr, DUK_STR_TOPRIMITIVE_FAILED); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_to_primitive(duk_hthread *thr, duk_idx_t idx, duk_int_t hint) { + duk__to_primitive_helper(thr, idx, hint, 1 /*check_symbol*/); +} + +#if defined(DUK_USE_SYMBOL_BUILTIN) +DUK_INTERNAL void duk_to_primitive_ordinary(duk_hthread *thr, duk_idx_t idx, duk_int_t hint) { + duk__to_primitive_helper(thr, idx, hint, 0 /*check_symbol*/); +} +#endif + +/* E5 Section 9.2 */ +DUK_EXTERNAL duk_bool_t duk_to_boolean(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_bool_t val; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + tv = DUK_GET_TVAL_POSIDX(thr, idx); + DUK_ASSERT(tv != NULL); + + val = duk_js_toboolean(tv); + DUK_ASSERT(val == 0 || val == 1); + + /* Note: no need to re-lookup tv, conversion is side effect free. */ + DUK_ASSERT(tv != NULL); + DUK_TVAL_SET_BOOLEAN_UPDREF(thr, tv, val); /* side effects */ + return val; +} + +DUK_INTERNAL duk_bool_t duk_to_boolean_top_pop(duk_hthread *thr) { + duk_tval *tv; + duk_bool_t val; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, -1); + DUK_ASSERT(tv != NULL); + + val = duk_js_toboolean(tv); + DUK_ASSERT(val == 0 || val == 1); + + duk_pop_unsafe(thr); + return val; +} + +DUK_EXTERNAL duk_double_t duk_to_number(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_double_t d; + + DUK_ASSERT_API_ENTRY(thr); + + /* XXX: No need to normalize; the whole operation could be inlined here to + * avoid 'tv' re-lookup. + */ + idx = duk_require_normalize_index(thr, idx); + tv = DUK_GET_TVAL_POSIDX(thr, idx); + DUK_ASSERT(tv != NULL); + d = duk_js_tonumber(thr, tv); /* XXX: fastint coercion? now result will always be a non-fastint */ + + /* ToNumber() may have side effects so must relookup 'tv'. */ + tv = DUK_GET_TVAL_POSIDX(thr, idx); + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv, d); /* side effects */ + return d; +} + +DUK_INTERNAL duk_double_t duk_to_number_m1(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + return duk_to_number(thr, -1); +} +DUK_INTERNAL duk_double_t duk_to_number_m2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + return duk_to_number(thr, -2); +} + +DUK_INTERNAL duk_double_t duk_to_number_tval(duk_hthread *thr, duk_tval *tv) { +#if defined(DUK_USE_PREFER_SIZE) + duk_double_t res; + + DUK_ASSERT_API_ENTRY(thr); + + duk_push_tval(thr, tv); + res = duk_to_number_m1(thr); + duk_pop_unsafe(thr); + return res; +#else + duk_double_t res; + duk_tval *tv_dst; + + DUK_ASSERT_API_ENTRY(thr); + DUK__ASSERT_SPACE(); + + tv_dst = thr->valstack_top++; + DUK_TVAL_SET_TVAL(tv_dst, tv); + DUK_TVAL_INCREF(thr, tv_dst); /* decref not necessary */ + res = duk_to_number_m1(thr); /* invalidates tv_dst */ + + tv_dst = --thr->valstack_top; + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_dst)); + DUK_ASSERT(!DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv_dst)); /* plain number */ + DUK_TVAL_SET_UNDEFINED(tv_dst); /* valstack init policy */ + + return res; +#endif +} + +/* XXX: combine all the integer conversions: they share everything + * but the helper function for coercion. + */ + +typedef duk_double_t (*duk__toint_coercer)(duk_hthread *thr, duk_tval *tv); + +DUK_LOCAL duk_double_t duk__to_int_uint_helper(duk_hthread *thr, duk_idx_t idx, duk__toint_coercer coerce_func) { + duk_tval *tv; + duk_double_t d; + + DUK_CTX_ASSERT_VALID(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + +#if defined(DUK_USE_FASTINT) + /* If argument is a fastint, guarantee that it remains one. + * There's no downgrade check for other cases. + */ + if (DUK_TVAL_IS_FASTINT(tv)) { + /* XXX: Unnecessary conversion back and forth. */ + return (duk_double_t) DUK_TVAL_GET_FASTINT(tv); + } +#endif + d = coerce_func(thr, tv); + + /* XXX: fastint? */ + + /* Relookup in case coerce_func() has side effects, e.g. ends up coercing an object */ + tv = duk_require_tval(thr, idx); + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv, d); /* side effects */ + return d; +} + +DUK_EXTERNAL duk_int_t duk_to_int(duk_hthread *thr, duk_idx_t idx) { + /* Value coercion (in stack): ToInteger(), E5 Section 9.4, + * API return value coercion: custom. + */ + DUK_ASSERT_API_ENTRY(thr); + (void) duk__to_int_uint_helper(thr, idx, duk_js_tointeger); + return (duk_int_t) duk__api_coerce_d2i(thr, idx, 0 /*def_value*/, 0 /*require*/); +} + +DUK_EXTERNAL duk_uint_t duk_to_uint(duk_hthread *thr, duk_idx_t idx) { + /* Value coercion (in stack): ToInteger(), E5 Section 9.4, + * API return value coercion: custom. + */ + DUK_ASSERT_API_ENTRY(thr); + (void) duk__to_int_uint_helper(thr, idx, duk_js_tointeger); + return (duk_uint_t) duk__api_coerce_d2ui(thr, idx, 0 /*def_value*/, 0 /*require*/); +} + +DUK_EXTERNAL duk_int32_t duk_to_int32(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_int32_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + ret = duk_js_toint32(thr, tv); + + /* Relookup in case coerce_func() has side effects, e.g. ends up coercing an object */ + tv = duk_require_tval(thr, idx); + DUK_TVAL_SET_I32_UPDREF(thr, tv, ret); /* side effects */ + return ret; +} + +DUK_EXTERNAL duk_uint32_t duk_to_uint32(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_uint32_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + ret = duk_js_touint32(thr, tv); + + /* Relookup in case coerce_func() has side effects, e.g. ends up coercing an object */ + tv = duk_require_tval(thr, idx); + DUK_TVAL_SET_U32_UPDREF(thr, tv, ret); /* side effects */ + return ret; +} + +DUK_EXTERNAL duk_uint16_t duk_to_uint16(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_uint16_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + ret = duk_js_touint16(thr, tv); + + /* Relookup in case coerce_func() has side effects, e.g. ends up coercing an object */ + tv = duk_require_tval(thr, idx); + DUK_TVAL_SET_U32_UPDREF(thr, tv, ret); /* side effects */ + return ret; +} + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +/* Special coercion for Uint8ClampedArray. */ +DUK_INTERNAL duk_uint8_t duk_to_uint8clamped(duk_hthread *thr, duk_idx_t idx) { + duk_double_t d; + duk_double_t t; + duk_uint8_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + /* XXX: Simplify this algorithm, should be possible to come up with + * a shorter and faster algorithm by inspecting IEEE representation + * directly. + */ + + d = duk_to_number(thr, idx); + if (d <= 0.0) { + return 0; + } else if (d >= 255) { + return 255; + } else if (DUK_ISNAN(d)) { + /* Avoid NaN-to-integer coercion as it is compiler specific. */ + return 0; + } + + t = d - DUK_FLOOR(d); + if (duk_double_equals(t, 0.5)) { + /* Exact halfway, round to even. */ + ret = (duk_uint8_t) d; + ret = (ret + 1) & 0xfe; /* Example: d=3.5, t=0.5 -> ret = (3 + 1) & 0xfe = 4 & 0xfe = 4 + * Example: d=4.5, t=0.5 -> ret = (4 + 1) & 0xfe = 5 & 0xfe = 4 + */ + } else { + /* Not halfway, round to nearest. */ + ret = (duk_uint8_t) (d + 0.5); + } + return ret; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +DUK_EXTERNAL const char *duk_to_lstring(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len) { + DUK_ASSERT_API_ENTRY(thr); + + (void) duk_to_string(thr, idx); + DUK_ASSERT(duk_is_string(thr, idx)); + return duk_require_lstring(thr, idx, out_len); +} + +DUK_LOCAL duk_ret_t duk__safe_to_string_raw(duk_hthread *thr, void *udata) { + DUK_CTX_ASSERT_VALID(thr); + DUK_UNREF(udata); + + (void) duk_to_string(thr, -1); + return 1; +} + +DUK_EXTERNAL const char *duk_safe_to_lstring(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_len) { + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + + /* We intentionally ignore the duk_safe_call() return value and only + * check the output type. This way we don't also need to check that + * the returned value is indeed a string in the success case. + */ + + duk_dup(thr, idx); + (void) duk_safe_call(thr, duk__safe_to_string_raw, NULL /*udata*/, 1 /*nargs*/, 1 /*nrets*/); + if (!duk_is_string(thr, -1)) { + /* Error: try coercing error to string once. */ + (void) duk_safe_call(thr, duk__safe_to_string_raw, NULL /*udata*/, 1 /*nargs*/, 1 /*nrets*/); + if (!duk_is_string(thr, -1)) { + /* Double error */ + duk_pop_unsafe(thr); + duk_push_hstring_stridx(thr, DUK_STRIDX_UC_ERROR); + } else { + ; + } + } else { + /* String; may be a symbol, accepted. */ + ; + } + DUK_ASSERT(duk_is_string(thr, -1)); + + duk_replace(thr, idx); + DUK_ASSERT(duk_get_string(thr, idx) != NULL); + return duk_get_lstring(thr, idx, out_len); +} + +DUK_EXTERNAL const char *duk_to_stacktrace(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + idx = duk_require_normalize_index(thr, idx); + + /* The expected argument to the call is an Error object. The stack + * trace is extracted without an inheritance-based instanceof check + * so that one can also extract the stack trace of a foreign error + * created in another Realm. Accept only a string .stack property. + */ + if (duk_is_object(thr, idx)) { + (void) duk_get_prop_string(thr, idx, "stack"); + if (duk_is_string(thr, -1)) { + duk_replace(thr, idx); + } else { + duk_pop(thr); + } + } + + return duk_to_string(thr, idx); +} + +DUK_LOCAL duk_ret_t duk__safe_to_stacktrace_raw(duk_hthread *thr, void *udata) { + DUK_CTX_ASSERT_VALID(thr); + DUK_UNREF(udata); + + (void) duk_to_stacktrace(thr, -1); + + return 1; +} + +DUK_EXTERNAL const char *duk_safe_to_stacktrace(duk_hthread *thr, duk_idx_t idx) { + duk_int_t rc; + + DUK_ASSERT_API_ENTRY(thr); + idx = duk_require_normalize_index(thr, idx); + + duk_dup(thr, idx); + rc = duk_safe_call(thr, duk__safe_to_stacktrace_raw, NULL /*udata*/, 1 /*nargs*/, 1 /*nrets*/); + if (rc != 0) { + /* Coercion failed. Try to coerce the coercion itself error + * to a stack trace once. If that also fails, return a fixed, + * preallocated 'Error' string to avoid potential infinite loop. + */ + rc = duk_safe_call(thr, duk__safe_to_stacktrace_raw, NULL /*udata*/, 1 /*nargs*/, 1 /*nrets*/); + if (rc != 0) { + duk_pop_unsafe(thr); + duk_push_hstring_stridx(thr, DUK_STRIDX_UC_ERROR); + } + } + duk_replace(thr, idx); + + return duk_get_string(thr, idx); +} + +DUK_INTERNAL duk_hstring *duk_to_property_key_hstring(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + + duk_to_primitive(thr, idx, DUK_HINT_STRING); /* needed for e.g. Symbol objects */ + h = duk_get_hstring(thr, idx); + if (h == NULL) { + /* The "is string?" check may seem unnecessary, but as things + * are duk_to_hstring() invokes ToString() which fails for + * symbols. But since symbols are already strings for Duktape + * C API, we check for that before doing the coercion. + */ + h = duk_to_hstring(thr, idx); + } + DUK_ASSERT(h != NULL); + return h; +} + +#if defined(DUK_USE_DEBUGGER_SUPPORT) /* only needed by debugger for now */ +DUK_INTERNAL duk_hstring *duk_safe_to_hstring(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + (void) duk_safe_to_string(thr, idx); + DUK_ASSERT(duk_is_string(thr, idx)); + DUK_ASSERT(duk_get_hstring(thr, idx) != NULL); + return duk_known_hstring(thr, idx); +} +#endif + +/* Push Object.prototype.toString() output for 'tv'. */ +DUK_INTERNAL void duk_push_class_string_tval(duk_hthread *thr, duk_tval *tv, duk_bool_t avoid_side_effects) { + duk_hobject *h_obj; + duk_small_uint_t classnum; + duk_small_uint_t stridx; + duk_tval tv_tmp; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(tv != NULL); + + /* Stabilize 'tv', duk_push_literal() may trigger side effects. */ + DUK_TVAL_SET_TVAL(&tv_tmp, tv); + tv = &tv_tmp; + + /* Conceptually for any non-undefined/null value we should do a + * ToObject() coercion and look up @@toStringTag (from the object + * prototype) to see if a custom result should be used, with the + * exception of Arrays which are handled specially first. + * + * We'd like to avoid the actual conversion, but even for primitive + * types the prototype may have @@toStringTag. What's worse, the + * @@toStringTag property may be a getter that must get the object + * coerced value (not the prototype) as its 'this' binding. + * + * For now, do an actual object coercion. This could be avoided by + * doing a side effect free lookup to see if a getter would be invoked. + * If not, the value can be read directly and the object coercion could + * be avoided. This may not be worth it in practice, because + * Object.prototype.toString() is usually not performance critical. + */ + + duk_push_literal(thr, "[object "); /* -> [ ... "[object" ] */ + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNUSED: /* Treat like 'undefined', shouldn't happen. */ + case DUK_TAG_UNDEFINED: { + duk_push_hstring_stridx(thr, DUK_STRIDX_UC_UNDEFINED); + goto finish; + } + case DUK_TAG_NULL: { + duk_push_hstring_stridx(thr, DUK_STRIDX_UC_NULL); + goto finish; + } + } + + duk_push_tval(thr, tv); + tv = NULL; /* Invalidated by ToObject(). */ + h_obj = duk_to_hobject(thr, -1); + DUK_ASSERT(h_obj != NULL); + if (duk_js_isarray_hobject(h_obj)) { + stridx = DUK_STRIDX_UC_ARRAY; + } else { + /* [ ... "[object" obj ] */ + +#if defined(DUK_USE_SYMBOL_BUILTIN) + /* XXX: better handling with avoid_side_effects == 1; lookup tval + * without Proxy or getter side effects, and use it in sanitized + * form if it's a string. + */ + if (!avoid_side_effects) { + (void) duk_get_prop_stridx(thr, -1, DUK_STRIDX_WELLKNOWN_SYMBOL_TO_STRING_TAG); + if (duk_is_string_notsymbol(thr, -1)) { + duk_remove_m2(thr); + goto finish; + } + duk_pop_unsafe(thr); + } +#else + DUK_UNREF(avoid_side_effects); +#endif + + classnum = DUK_HOBJECT_GET_CLASS_NUMBER(h_obj); + stridx = DUK_HOBJECT_CLASS_NUMBER_TO_STRIDX(classnum); + } + duk_pop_unsafe(thr); + duk_push_hstring_stridx(thr, stridx); + + finish: + /* [ ... "[object" tag ] */ + duk_push_literal(thr, "]"); + duk_concat(thr, 3); /* [ ... "[object" tag "]" ] -> [ ... res ] */ +} + +/* XXX: other variants like uint, u32 etc */ +DUK_INTERNAL duk_int_t duk_to_int_clamped_raw(duk_hthread *thr, duk_idx_t idx, duk_int_t minval, duk_int_t maxval, duk_bool_t *out_clamped) { + duk_tval *tv; + duk_tval tv_tmp; + duk_double_t d, dmin, dmax; + duk_int_t res; + duk_bool_t clamped = 0; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + d = duk_js_tointeger(thr, tv); /* E5 Section 9.4, ToInteger() */ + + dmin = (duk_double_t) minval; + dmax = (duk_double_t) maxval; + + if (d < dmin) { + clamped = 1; + res = minval; + d = dmin; + } else if (d > dmax) { + clamped = 1; + res = maxval; + d = dmax; + } else { + res = (duk_int_t) d; + } + DUK_UNREF(d); /* SCANBUILD: with suitable dmin/dmax limits 'd' is unused */ + /* 'd' and 'res' agree here */ + + /* Relookup in case duk_js_tointeger() ends up e.g. coercing an object. */ + tv = duk_get_tval(thr, idx); + DUK_ASSERT(tv != NULL); /* not popped by side effect */ + DUK_TVAL_SET_TVAL(&tv_tmp, tv); +#if defined(DUK_USE_FASTINT) +#if (DUK_INT_MAX <= 0x7fffffffL) + DUK_TVAL_SET_I32(tv, res); +#else + /* Clamping needed if duk_int_t is 64 bits. */ + if (res >= DUK_FASTINT_MIN && res <= DUK_FASTINT_MAX) { + DUK_TVAL_SET_FASTINT(tv, res); + } else { + DUK_TVAL_SET_NUMBER(tv, d); + } +#endif +#else + DUK_TVAL_SET_NUMBER(tv, d); /* no need to incref */ +#endif + DUK_TVAL_DECREF(thr, &tv_tmp); /* side effects */ + + if (out_clamped) { + *out_clamped = clamped; + } else { + /* coerced value is updated to value stack even when RangeError thrown */ + if (clamped) { + DUK_ERROR_RANGE(thr, DUK_STR_NUMBER_OUTSIDE_RANGE); + DUK_WO_NORETURN(return 0;); + } + } + + return res; +} + +DUK_INTERNAL duk_int_t duk_to_int_clamped(duk_hthread *thr, duk_idx_t idx, duk_idx_t minval, duk_idx_t maxval) { + duk_bool_t dummy; + + DUK_ASSERT_API_ENTRY(thr); + + return duk_to_int_clamped_raw(thr, idx, minval, maxval, &dummy); +} + +DUK_INTERNAL duk_int_t duk_to_int_check_range(duk_hthread *thr, duk_idx_t idx, duk_int_t minval, duk_int_t maxval) { + DUK_ASSERT_API_ENTRY(thr); + return duk_to_int_clamped_raw(thr, idx, minval, maxval, NULL); /* out_clamped==NULL -> RangeError if outside range */ +} + +DUK_EXTERNAL const char *duk_to_string(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + tv = DUK_GET_TVAL_POSIDX(thr, idx); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: { + duk_push_hstring_stridx(thr, DUK_STRIDX_LC_UNDEFINED); + break; + } + case DUK_TAG_NULL: { + duk_push_hstring_stridx(thr, DUK_STRIDX_LC_NULL); + break; + } + case DUK_TAG_BOOLEAN: { + if (DUK_TVAL_GET_BOOLEAN(tv)) { + duk_push_hstring_stridx(thr, DUK_STRIDX_TRUE); + } else { + duk_push_hstring_stridx(thr, DUK_STRIDX_FALSE); + } + break; + } + case DUK_TAG_STRING: { + /* Nop for actual strings, TypeError for Symbols. + * Because various internals rely on ToString() coercion of + * internal strings, -allow- (NOP) string coercion for hidden + * symbols. + */ +#if 1 + duk_hstring *h; + h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + DUK_ERROR_TYPE(thr, DUK_STR_CANNOT_STRING_COERCE_SYMBOL); + DUK_WO_NORETURN(goto skip_replace;); + } else { + goto skip_replace; + } +#else + goto skip_replace; +#endif + break; + } + case DUK_TAG_BUFFER: /* Go through Uint8Array.prototype.toString() for coercion. */ + case DUK_TAG_OBJECT: { + /* Plain buffers: go through ArrayBuffer.prototype.toString() + * for coercion. + * + * Symbol objects: duk_to_primitive() results in a plain symbol + * value, and duk_to_string() then causes a TypeError. + */ + duk_to_primitive(thr, idx, DUK_HINT_STRING); + DUK_ASSERT(!duk_is_buffer(thr, idx)); /* ToPrimitive() must guarantee */ + DUK_ASSERT(!duk_is_object(thr, idx)); + return duk_to_string(thr, idx); /* Note: recursive call */ + } + case DUK_TAG_POINTER: { + void *ptr = DUK_TVAL_GET_POINTER(tv); + if (ptr != NULL) { + duk_push_sprintf(thr, DUK_STR_FMT_PTR, (void *) ptr); + } else { + /* Represent a null pointer as 'null' to be consistent with + * the JX format variant. Native '%p' format for a NULL + * pointer may be e.g. '(nil)'. + */ + duk_push_hstring_stridx(thr, DUK_STRIDX_LC_NULL); + } + break; + } + case DUK_TAG_LIGHTFUNC: { + /* Should match Function.prototype.toString() */ + duk_push_lightfunc_tostring(thr, tv); + break; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + /* number */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + duk_push_tval(thr, tv); + duk_numconv_stringify(thr, + 10 /*radix*/, + 0 /*precision:shortest*/, + 0 /*force_exponential*/); + break; + } + } + + duk_replace(thr, idx); + + skip_replace: + DUK_ASSERT(duk_is_string(thr, idx)); + return duk_require_string(thr, idx); +} + +DUK_INTERNAL duk_hstring *duk_to_hstring(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *ret; + + DUK_ASSERT_API_ENTRY(thr); + + duk_to_string(thr, idx); + ret = duk_get_hstring(thr, idx); + DUK_ASSERT(ret != NULL); + return ret; +} + +DUK_INTERNAL duk_hstring *duk_to_hstring_m1(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + return duk_to_hstring(thr, -1); +} + +DUK_INTERNAL duk_hstring *duk_to_hstring_acceptsymbol(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *ret; + + DUK_ASSERT_API_ENTRY(thr); + + ret = duk_get_hstring(thr, idx); + if (DUK_UNLIKELY(ret && DUK_HSTRING_HAS_SYMBOL(ret))) { + return ret; + } + return duk_to_hstring(thr, idx); +} + +/* Convert a plain buffer or any buffer object into a string, using the buffer + * bytes 1:1 in the internal string representation. For views the active byte + * slice (not element slice interpreted as an initializer) is used. This is + * necessary in Duktape 2.x because ToString(plainBuffer) no longer creates a + * string with the same bytes as in the buffer but rather (usually) + * '[object ArrayBuffer]'. + */ +DUK_EXTERNAL const char *duk_buffer_to_string(duk_hthread *thr, duk_idx_t idx) { + void *ptr_src; + duk_size_t len; + const char *res; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + + ptr_src = duk_require_buffer_data(thr, idx, &len); + DUK_ASSERT(ptr_src != NULL || len == 0); + + res = duk_push_lstring(thr, (const char *) ptr_src, len); + duk_replace(thr, idx); + return res; +} + +DUK_EXTERNAL void *duk_to_buffer_raw(duk_hthread *thr, duk_idx_t idx, duk_size_t *out_size, duk_uint_t mode) { + duk_hbuffer *h_buf; + const duk_uint8_t *src_data; + duk_size_t src_size; + duk_uint8_t *dst_data; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + + h_buf = duk_get_hbuffer(thr, idx); + if (h_buf != NULL) { + /* Buffer is kept as is, with the fixed/dynamic nature of the + * buffer only changed if requested. An external buffer + * is converted into a non-external dynamic buffer in a + * duk_to_dynamic_buffer() call. + */ + duk_uint_t tmp; + duk_uint8_t *tmp_ptr; + + tmp_ptr = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_buf); + src_data = (const duk_uint8_t *) tmp_ptr; + src_size = DUK_HBUFFER_GET_SIZE(h_buf); + + tmp = (DUK_HBUFFER_HAS_DYNAMIC(h_buf) ? DUK_BUF_MODE_DYNAMIC : DUK_BUF_MODE_FIXED); + if ((tmp == mode && !DUK_HBUFFER_HAS_EXTERNAL(h_buf)) || + mode == DUK_BUF_MODE_DONTCARE) { + /* Note: src_data may be NULL if input is a zero-size + * dynamic buffer. + */ + dst_data = tmp_ptr; + goto skip_copy; + } + } else { + /* Non-buffer value is first ToString() coerced, then converted + * to a buffer (fixed buffer is used unless a dynamic buffer is + * explicitly requested). Symbols are rejected with a TypeError. + * XXX: C API could maybe allow symbol-to-buffer coercion? + */ + src_data = (const duk_uint8_t *) duk_to_lstring(thr, idx, &src_size); + } + + dst_data = (duk_uint8_t *) duk_push_buffer(thr, src_size, (mode == DUK_BUF_MODE_DYNAMIC) /*dynamic*/); + /* dst_data may be NULL if size is zero. */ + duk_memcpy_unsafe((void *) dst_data, (const void *) src_data, (size_t) src_size); + + duk_replace(thr, idx); + skip_copy: + + if (out_size) { + *out_size = src_size; + } + return dst_data; +} + +DUK_EXTERNAL void *duk_to_pointer(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + void *res; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + tv = DUK_GET_TVAL_POSIDX(thr, idx); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: + case DUK_TAG_BOOLEAN: + res = NULL; + break; + case DUK_TAG_POINTER: + res = DUK_TVAL_GET_POINTER(tv); + break; + case DUK_TAG_STRING: + case DUK_TAG_OBJECT: + case DUK_TAG_BUFFER: + /* Heap allocated: return heap pointer which is NOT useful + * for the caller, except for debugging. + */ + res = (void *) DUK_TVAL_GET_HEAPHDR(tv); + break; + case DUK_TAG_LIGHTFUNC: + /* Function pointers do not always cast correctly to void * + * (depends on memory and segmentation model for instance), + * so they coerce to NULL. + */ + res = NULL; + break; +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: + /* number */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + res = NULL; + break; + } + + duk_push_pointer(thr, res); + duk_replace(thr, idx); + return res; +} + +DUK_LOCAL void duk__push_func_from_lightfunc(duk_hthread *thr, duk_c_function func, duk_small_uint_t lf_flags) { + duk_idx_t nargs; + duk_uint_t flags = 0; /* shared flags for a subset of types */ + duk_small_uint_t lf_len; + duk_hnatfunc *nf; + + nargs = (duk_idx_t) DUK_LFUNC_FLAGS_GET_NARGS(lf_flags); + if (nargs == DUK_LFUNC_NARGS_VARARGS) { + nargs = (duk_idx_t) DUK_VARARGS; + } + + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_CONSTRUCTABLE | + DUK_HOBJECT_FLAG_CALLABLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_NATFUNC | + DUK_HOBJECT_FLAG_NEWENV | + DUK_HOBJECT_FLAG_STRICT | + DUK_HOBJECT_FLAG_NOTAIL | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION); + (void) duk__push_c_function_raw(thr, func, nargs, flags, DUK_BIDX_NATIVE_FUNCTION_PROTOTYPE); + + lf_len = DUK_LFUNC_FLAGS_GET_LENGTH(lf_flags); + if ((duk_idx_t) lf_len != nargs) { + /* Explicit length is only needed if it differs from 'nargs'. */ + duk_push_int(thr, (duk_int_t) lf_len); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_NONE); + } + +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + duk_push_lightfunc_name_raw(thr, func, lf_flags); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_C); +#endif + + nf = duk_known_hnatfunc(thr, -1); + nf->magic = (duk_int16_t) DUK_LFUNC_FLAGS_GET_MAGIC(lf_flags); +} + +DUK_EXTERNAL void duk_to_object(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_uint_t flags = 0; /* shared flags for a subset of types */ + duk_small_int_t proto = 0; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); + tv = DUK_GET_TVAL_POSIDX(thr, idx); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { +#if !defined(DUK_USE_BUFFEROBJECT_SUPPORT) + case DUK_TAG_BUFFER: /* With no bufferobject support, don't object coerce. */ +#endif + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_OBJECT_COERCIBLE); + DUK_WO_NORETURN(return;); + break; + } + case DUK_TAG_BOOLEAN: { + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_BOOLEAN); + proto = DUK_BIDX_BOOLEAN_PROTOTYPE; + goto create_object; + } + case DUK_TAG_STRING: { + duk_hstring *h; + h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_SYMBOL); + proto = DUK_BIDX_SYMBOL_PROTOTYPE; + } else { + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_STRING); + proto = DUK_BIDX_STRING_PROTOTYPE; + } + goto create_object; + } + case DUK_TAG_OBJECT: { + /* nop */ + break; + } +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + case DUK_TAG_BUFFER: { + /* A plain buffer object coerces to a full ArrayBuffer which + * is not fully transparent behavior (ToObject() should be a + * nop for an object). This behavior matches lightfuncs which + * also coerce to an equivalent Function object. There are + * also downsides to defining ToObject(plainBuffer) as a no-op; + * for example duk_to_hobject() could result in a NULL pointer. + */ + duk_hbuffer *h_buf; + + h_buf = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h_buf != NULL); + duk_hbufobj_push_uint8array_from_plain(thr, h_buf); + goto replace_value; + } +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + case DUK_TAG_POINTER: { + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_POINTER); + proto = DUK_BIDX_POINTER_PROTOTYPE; + goto create_object; + } + case DUK_TAG_LIGHTFUNC: { + /* Lightfunc coerces to a Function instance with concrete + * properties. Since 'length' is virtual for Duktape/C + * functions, don't need to define that. The result is made + * extensible to mimic what happens to strings in object + * coercion: + * + * > Object.isExtensible(Object('foo')) + * true + */ + duk_small_uint_t lf_flags; + duk_c_function func; + + DUK_TVAL_GET_LIGHTFUNC(tv, func, lf_flags); + duk__push_func_from_lightfunc(thr, func, lf_flags); + goto replace_value; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_NUMBER); + proto = DUK_BIDX_NUMBER_PROTOTYPE; + goto create_object; + } + } + DUK_ASSERT(duk_is_object(thr, idx)); + return; + + create_object: + (void) duk_push_object_helper(thr, flags, proto); + + /* Note: Boolean prototype's internal value property is not writable, + * but duk_xdef_prop_stridx() disregards the write protection. Boolean + * instances are immutable. + * + * String and buffer special behaviors are already enabled which is not + * ideal, but a write to the internal value is not affected by them. + */ + duk_dup(thr, idx); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE); + + replace_value: + duk_replace(thr, idx); + DUK_ASSERT(duk_is_object(thr, idx)); +} + +DUK_INTERNAL duk_hobject *duk_to_hobject(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *ret; + + DUK_ASSERT_API_ENTRY(thr); + + duk_to_object(thr, idx); + ret = duk_known_hobject(thr, idx); + return ret; +} + +/* + * Type checking + */ + +DUK_LOCAL duk_bool_t duk__tag_check(duk_hthread *thr, duk_idx_t idx, duk_small_uint_t tag) { + duk_tval *tv; + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + return (DUK_TVAL_GET_TAG(tv) == tag); +} + +DUK_LOCAL duk_bool_t duk__obj_flag_any_default_false(duk_hthread *thr, duk_idx_t idx, duk_uint_t flag_mask) { + duk_hobject *obj; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_get_hobject(thr, idx); + if (obj) { + return (DUK_HEAPHDR_CHECK_FLAG_BITS((duk_heaphdr *) obj, flag_mask) ? 1 : 0); + } + return 0; +} + +DUK_INTERNAL duk_int_t duk_get_type_tval(duk_tval *tv) { + DUK_ASSERT(tv != NULL); + +#if defined(DUK_USE_PACKED_TVAL) + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNUSED: + return DUK_TYPE_NONE; + case DUK_TAG_UNDEFINED: + return DUK_TYPE_UNDEFINED; + case DUK_TAG_NULL: + return DUK_TYPE_NULL; + case DUK_TAG_BOOLEAN: + return DUK_TYPE_BOOLEAN; + case DUK_TAG_STRING: + return DUK_TYPE_STRING; + case DUK_TAG_OBJECT: + return DUK_TYPE_OBJECT; + case DUK_TAG_BUFFER: + return DUK_TYPE_BUFFER; + case DUK_TAG_POINTER: + return DUK_TYPE_POINTER; + case DUK_TAG_LIGHTFUNC: + return DUK_TYPE_LIGHTFUNC; +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: + /* Note: number has no explicit tag (in 8-byte representation) */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + return DUK_TYPE_NUMBER; + } +#else /* DUK_USE_PACKED_TVAL */ + DUK_ASSERT(DUK_TVAL_IS_VALID_TAG(tv)); + DUK_ASSERT(sizeof(duk__type_from_tag) / sizeof(duk_uint_t) == DUK_TAG_MAX - DUK_TAG_MIN + 1); + return (duk_int_t) duk__type_from_tag[DUK_TVAL_GET_TAG(tv) - DUK_TAG_MIN]; +#endif /* DUK_USE_PACKED_TVAL */ +} + +DUK_EXTERNAL duk_int_t duk_get_type(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + return duk_get_type_tval(tv); +} + +#if defined(DUK_USE_VERBOSE_ERRORS) && defined(DUK_USE_PARANOID_ERRORS) +DUK_LOCAL const char * const duk__type_names[] = { + "none", + "undefined", + "null", + "boolean", + "number", + "string", + "object", + "buffer", + "pointer", + "lightfunc" +}; + +DUK_INTERNAL const char *duk_get_type_name(duk_hthread *thr, duk_idx_t idx) { + duk_int_t type_tag; + + DUK_ASSERT_API_ENTRY(thr); + + type_tag = duk_get_type(thr, idx); + DUK_ASSERT(type_tag >= DUK_TYPE_MIN && type_tag <= DUK_TYPE_MAX); + DUK_ASSERT(DUK_TYPE_MIN == 0 && sizeof(duk__type_names) / sizeof(const char *) == DUK_TYPE_MAX + 1); + + return duk__type_names[type_tag]; +} +#endif /* DUK_USE_VERBOSE_ERRORS && DUK_USE_PARANOID_ERRORS */ + +DUK_INTERNAL duk_small_uint_t duk_get_class_number(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_hobject *obj; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_OBJECT: + obj = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(obj != NULL); + return DUK_HOBJECT_GET_CLASS_NUMBER(obj); + case DUK_TAG_BUFFER: + /* Buffers behave like Uint8Array objects. */ + return DUK_HOBJECT_CLASS_UINT8ARRAY; + case DUK_TAG_LIGHTFUNC: + /* Lightfuncs behave like Function objects. */ + return DUK_HOBJECT_CLASS_FUNCTION; + default: + /* Primitive or UNUSED, no class number. */ + return DUK_HOBJECT_CLASS_NONE; + } +} + +DUK_EXTERNAL duk_bool_t duk_check_type(duk_hthread *thr, duk_idx_t idx, duk_int_t type) { + DUK_ASSERT_API_ENTRY(thr); + + return (duk_get_type(thr, idx) == type) ? 1 : 0; +} + +DUK_INTERNAL duk_uint_t duk_get_type_mask_tval(duk_tval *tv) { + DUK_ASSERT(tv != NULL); + +#if defined(DUK_USE_PACKED_TVAL) + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNUSED: + return DUK_TYPE_MASK_NONE; + case DUK_TAG_UNDEFINED: + return DUK_TYPE_MASK_UNDEFINED; + case DUK_TAG_NULL: + return DUK_TYPE_MASK_NULL; + case DUK_TAG_BOOLEAN: + return DUK_TYPE_MASK_BOOLEAN; + case DUK_TAG_STRING: + return DUK_TYPE_MASK_STRING; + case DUK_TAG_OBJECT: + return DUK_TYPE_MASK_OBJECT; + case DUK_TAG_BUFFER: + return DUK_TYPE_MASK_BUFFER; + case DUK_TAG_POINTER: + return DUK_TYPE_MASK_POINTER; + case DUK_TAG_LIGHTFUNC: + return DUK_TYPE_MASK_LIGHTFUNC; +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: + /* Note: number has no explicit tag (in 8-byte representation) */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + return DUK_TYPE_MASK_NUMBER; + } +#else /* DUK_USE_PACKED_TVAL */ + DUK_ASSERT(DUK_TVAL_IS_VALID_TAG(tv)); + DUK_ASSERT(sizeof(duk__type_mask_from_tag) / sizeof(duk_uint_t) == DUK_TAG_MAX - DUK_TAG_MIN + 1); + return duk__type_mask_from_tag[DUK_TVAL_GET_TAG(tv) - DUK_TAG_MIN]; +#endif /* DUK_USE_PACKED_TVAL */ +} + +DUK_EXTERNAL duk_uint_t duk_get_type_mask(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + return duk_get_type_mask_tval(tv); +} + +DUK_EXTERNAL duk_bool_t duk_check_type_mask(duk_hthread *thr, duk_idx_t idx, duk_uint_t mask) { + DUK_ASSERT_API_ENTRY(thr); + + if (DUK_LIKELY((duk_get_type_mask(thr, idx) & mask) != 0U)) { + return 1; + } + if (mask & DUK_TYPE_MASK_THROW) { + DUK_ERROR_TYPE(thr, DUK_STR_UNEXPECTED_TYPE); + DUK_WO_NORETURN(return 0;); + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_undefined(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_UNDEFINED); +} + +DUK_EXTERNAL duk_bool_t duk_is_null(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_NULL); +} + +DUK_EXTERNAL duk_bool_t duk_is_boolean(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_BOOLEAN); +} + +DUK_EXTERNAL duk_bool_t duk_is_number(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + /* + * Number is special because it doesn't have a specific + * tag in the 8-byte representation. + */ + + /* XXX: shorter version for unpacked representation? */ + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + return DUK_TVAL_IS_NUMBER(tv); +} + +DUK_EXTERNAL duk_bool_t duk_is_nan(duk_hthread *thr, duk_idx_t idx) { + /* XXX: This will now return false for non-numbers, even though they would + * coerce to NaN (as a general rule). In particular, duk_get_number() + * returns a NaN for non-numbers, so should this function also return + * true for non-numbers? + */ + + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + + /* XXX: for packed duk_tval an explicit "is number" check is unnecessary */ + if (!DUK_TVAL_IS_NUMBER(tv)) { + return 0; + } + return (duk_bool_t) DUK_ISNAN(DUK_TVAL_GET_NUMBER(tv)); +} + +DUK_EXTERNAL duk_bool_t duk_is_string(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_STRING); +} + +DUK_INTERNAL duk_bool_t duk_is_string_notsymbol(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk_get_hstring_notsymbol(thr, idx) != NULL; +} + +DUK_EXTERNAL duk_bool_t duk_is_object(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_OBJECT); +} + +DUK_EXTERNAL duk_bool_t duk_is_buffer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_BUFFER); +} + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_EXTERNAL duk_bool_t duk_is_buffer_data(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_BUFFER(tv)) { + return 1; + } else if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (DUK_HOBJECT_IS_BUFOBJ(h)) { + return 1; + } + } + return 0; +} +#else /* DUK_USE_BUFFEROBJECT_SUPPORT */ +DUK_EXTERNAL duk_bool_t duk_is_buffer_data(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + + return duk_is_buffer(thr, idx); +} + +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +DUK_EXTERNAL duk_bool_t duk_is_pointer(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_POINTER); +} + +DUK_EXTERNAL duk_bool_t duk_is_lightfunc(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__tag_check(thr, idx, DUK_TAG_LIGHTFUNC); +} + +DUK_EXTERNAL duk_bool_t duk_is_symbol(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + DUK_ASSERT_API_ENTRY(thr); + h = duk_get_hstring(thr, idx); + /* Use DUK_LIKELY() here because caller may be more likely to type + * check an expected symbol than not. + */ + if (DUK_LIKELY(h != NULL && DUK_HSTRING_HAS_SYMBOL(h))) { + return 1; + } + return 0; +} + +/* IsArray(), returns true for Array instance or Proxy of Array instance. */ +DUK_EXTERNAL duk_bool_t duk_is_array(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval(thr, idx); + if (tv) { + return duk_js_isarray(tv); + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_function(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h; + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + return DUK_HOBJECT_HAS_CALLABLE(h) ? 1 : 0; + } + if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + return 1; + } + return 0; +} + +DUK_INTERNAL duk_bool_t duk_is_callable_tval(duk_hthread *thr, duk_tval *tv) { + DUK_ASSERT_API_ENTRY(thr); + + DUK_UNREF(thr); + + if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h; + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + return DUK_HOBJECT_HAS_CALLABLE(h) ? 1 : 0; + } + if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + return 1; + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_constructable(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h; + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + return DUK_HOBJECT_HAS_CONSTRUCTABLE(h) ? 1 : 0; + } + if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + return 1; + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_c_function(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__obj_flag_any_default_false(thr, + idx, + DUK_HOBJECT_FLAG_NATFUNC); +} + +DUK_EXTERNAL duk_bool_t duk_is_ecmascript_function(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__obj_flag_any_default_false(thr, + idx, + DUK_HOBJECT_FLAG_COMPFUNC); +} + +DUK_EXTERNAL duk_bool_t duk_is_bound_function(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk__obj_flag_any_default_false(thr, + idx, + DUK_HOBJECT_FLAG_BOUNDFUNC); +} + +DUK_EXTERNAL duk_bool_t duk_is_thread(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *obj; + + DUK_ASSERT_API_ENTRY(thr); + + obj = duk_get_hobject(thr, idx); + if (obj) { + return (DUK_HOBJECT_GET_CLASS_NUMBER(obj) == DUK_HOBJECT_CLASS_THREAD ? 1 : 0); + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_fixed_buffer(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_BUFFER(tv)) { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + return (DUK_HBUFFER_HAS_DYNAMIC(h) ? 0 : 1); + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_dynamic_buffer(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_BUFFER(tv)) { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + return (DUK_HBUFFER_HAS_DYNAMIC(h) && !DUK_HBUFFER_HAS_EXTERNAL(h) ? 1 : 0); + } + return 0; +} + +DUK_EXTERNAL duk_bool_t duk_is_external_buffer(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_get_tval_or_unused(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_BUFFER(tv)) { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + return (DUK_HBUFFER_HAS_DYNAMIC(h) && DUK_HBUFFER_HAS_EXTERNAL(h) ? 1 : 0); + } + return 0; +} + +DUK_EXTERNAL duk_errcode_t duk_get_error_code(duk_hthread *thr, duk_idx_t idx) { + duk_hobject *h; + duk_uint_t sanity; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_get_hobject(thr, idx); + + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + if (!h) { + return DUK_ERR_NONE; + } + + /* XXX: something more convenient? */ + + if (h == thr->builtins[DUK_BIDX_EVAL_ERROR_PROTOTYPE]) { + return DUK_ERR_EVAL_ERROR; + } + if (h == thr->builtins[DUK_BIDX_RANGE_ERROR_PROTOTYPE]) { + return DUK_ERR_RANGE_ERROR; + } + if (h == thr->builtins[DUK_BIDX_REFERENCE_ERROR_PROTOTYPE]) { + return DUK_ERR_REFERENCE_ERROR; + } + if (h == thr->builtins[DUK_BIDX_SYNTAX_ERROR_PROTOTYPE]) { + return DUK_ERR_SYNTAX_ERROR; + } + if (h == thr->builtins[DUK_BIDX_TYPE_ERROR_PROTOTYPE]) { + return DUK_ERR_TYPE_ERROR; + } + if (h == thr->builtins[DUK_BIDX_URI_ERROR_PROTOTYPE]) { + return DUK_ERR_URI_ERROR; + } + if (h == thr->builtins[DUK_BIDX_ERROR_PROTOTYPE]) { + return DUK_ERR_ERROR; + } + + h = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h); + } while (--sanity > 0); + + return DUK_ERR_NONE; +} + +/* + * Pushers + */ + +DUK_INTERNAL void duk_push_tval(duk_hthread *thr, duk_tval *tv) { + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(tv != NULL); + + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_TVAL(tv_slot, tv); + DUK_TVAL_INCREF(thr, tv); /* no side effects */ +} + +DUK_EXTERNAL void duk_push_undefined(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + DUK__CHECK_SPACE(); + + /* Because value stack init policy is 'undefined above top', + * we don't need to write, just assert. + */ + thr->valstack_top++; + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top - 1)); +} + +DUK_EXTERNAL void duk_push_null(duk_hthread *thr) { + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_NULL(tv_slot); +} + +DUK_EXTERNAL void duk_push_boolean(duk_hthread *thr, duk_bool_t val) { + duk_tval *tv_slot; + duk_small_int_t b; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + b = (val ? 1 : 0); /* ensure value is 1 or 0 (not other non-zero) */ + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_BOOLEAN(tv_slot, b); +} + +DUK_EXTERNAL void duk_push_true(duk_hthread *thr) { + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_BOOLEAN_TRUE(tv_slot); +} + +DUK_EXTERNAL void duk_push_false(duk_hthread *thr) { + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_BOOLEAN_FALSE(tv_slot); +} + +/* normalize NaN which may not match our canonical internal NaN */ +DUK_EXTERNAL void duk_push_number(duk_hthread *thr, duk_double_t val) { + duk_tval *tv_slot; + duk_double_union du; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + du.d = val; + DUK_DBLUNION_NORMALIZE_NAN_CHECK(&du); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_NUMBER(tv_slot, du.d); +} + +DUK_EXTERNAL void duk_push_int(duk_hthread *thr, duk_int_t val) { +#if defined(DUK_USE_FASTINT) + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; +#if DUK_INT_MAX <= 0x7fffffffL + DUK_TVAL_SET_I32(tv_slot, (duk_int32_t) val); +#else + if (val >= DUK_FASTINT_MIN && val <= DUK_FASTINT_MAX) { + DUK_TVAL_SET_FASTINT(tv_slot, (duk_int64_t) val); + } else { + duk_double_t = (duk_double_t) val; + DUK_TVAL_SET_NUMBER(tv_slot, d); + } +#endif +#else /* DUK_USE_FASTINT */ + duk_tval *tv_slot; + duk_double_t d; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + d = (duk_double_t) val; + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_NUMBER(tv_slot, d); +#endif /* DUK_USE_FASTINT */ +} + +DUK_EXTERNAL void duk_push_uint(duk_hthread *thr, duk_uint_t val) { +#if defined(DUK_USE_FASTINT) + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; +#if DUK_UINT_MAX <= 0xffffffffUL + DUK_TVAL_SET_U32(tv_slot, (duk_uint32_t) val); +#else + if (val <= DUK_FASTINT_MAX) { /* val is unsigned so >= 0 */ + /* XXX: take advantage of val being unsigned, no need to mask */ + DUK_TVAL_SET_FASTINT(tv_slot, (duk_int64_t) val); + } else { + duk_double_t = (duk_double_t) val; + DUK_TVAL_SET_NUMBER(tv_slot, d); + } +#endif +#else /* DUK_USE_FASTINT */ + duk_tval *tv_slot; + duk_double_t d; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + d = (duk_double_t) val; + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_NUMBER(tv_slot, d); +#endif /* DUK_USE_FASTINT */ +} + +DUK_EXTERNAL void duk_push_nan(duk_hthread *thr) { + duk_tval *tv_slot; + duk_double_union du; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + DUK_DBLUNION_SET_NAN(&du); + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_NUMBER(tv_slot, du.d); +} + +DUK_EXTERNAL const char *duk_push_lstring(duk_hthread *thr, const char *str, duk_size_t len) { + duk_hstring *h; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + /* Check stack before interning (avoid hanging temp). */ + DUK__CHECK_SPACE(); + + /* NULL with zero length represents an empty string; NULL with higher + * length is also now treated like an empty string although it is + * a bit dubious. This is unlike duk_push_string() which pushes a + * 'null' if the input string is a NULL. + */ + if (DUK_UNLIKELY(str == NULL)) { + len = 0U; + } + + /* Check for maximum string length. */ + if (DUK_UNLIKELY(len > DUK_HSTRING_MAX_BYTELEN)) { + DUK_ERROR_RANGE(thr, DUK_STR_STRING_TOO_LONG); + DUK_WO_NORETURN(return NULL;); + } + + h = duk_heap_strtable_intern_checked(thr, (const duk_uint8_t *) str, (duk_uint32_t) len); + DUK_ASSERT(h != NULL); + + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_STRING(tv_slot, h); + DUK_HSTRING_INCREF(thr, h); /* no side effects */ + + return (const char *) DUK_HSTRING_GET_DATA(h); +} + +DUK_EXTERNAL const char *duk_push_string(duk_hthread *thr, const char *str) { + DUK_ASSERT_API_ENTRY(thr); + + if (str) { + return duk_push_lstring(thr, str, DUK_STRLEN(str)); + } else { + duk_push_null(thr); + return NULL; + } +} + +#if !defined(DUK_USE_PREFER_SIZE) +#if defined(DUK_USE_LITCACHE_SIZE) +DUK_EXTERNAL const char *duk_push_literal_raw(duk_hthread *thr, const char *str, duk_size_t len) { + duk_hstring *h; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(str != NULL); + DUK_ASSERT(str[len] == (char) 0); + + /* Check for maximum string length. */ + if (DUK_UNLIKELY(len > DUK_HSTRING_MAX_BYTELEN)) { + DUK_ERROR_RANGE(thr, DUK_STR_STRING_TOO_LONG); + DUK_WO_NORETURN(return NULL;); + } + + h = duk_heap_strtable_intern_literal_checked(thr, (const duk_uint8_t *) str, (duk_uint32_t) len); + DUK_ASSERT(h != NULL); + + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_STRING(tv_slot, h); + DUK_HSTRING_INCREF(thr, h); /* no side effects */ + + return (const char *) DUK_HSTRING_GET_DATA(h); +} +#else /* DUK_USE_LITCACHE_SIZE */ +DUK_EXTERNAL const char *duk_push_literal_raw(duk_hthread *thr, const char *str, duk_size_t len) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(str != NULL); + DUK_ASSERT(str[len] == (char) 0); + + return duk_push_lstring(thr, str, len); +} +#endif /* DUK_USE_LITCACHE_SIZE */ +#endif /* !DUK_USE_PREFER_SIZE */ + +DUK_EXTERNAL void duk_push_pointer(duk_hthread *thr, void *val) { + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK__CHECK_SPACE(); + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_POINTER(tv_slot, val); +} + +DUK_INTERNAL duk_hstring *duk_push_uint_to_hstring(duk_hthread *thr, duk_uint_t i) { + duk_hstring *h_tmp; + + DUK_ASSERT_API_ENTRY(thr); + + /* XXX: this could be a direct DUK_SPRINTF to a buffer followed by duk_push_string() */ + duk_push_uint(thr, (duk_uint_t) i); + h_tmp = duk_to_hstring_m1(thr); + DUK_ASSERT(h_tmp != NULL); + return h_tmp; +} + +DUK_LOCAL void duk__push_this_helper(duk_hthread *thr, duk_small_uint_t check_object_coercible) { + duk_tval *tv_slot; + + DUK__CHECK_SPACE(); + + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); /* because of valstack init policy */ + tv_slot = thr->valstack_top++; + + if (DUK_UNLIKELY(thr->callstack_curr == NULL)) { + if (check_object_coercible) { + goto type_error; + } + /* 'undefined' already on stack top */ + } else { + duk_tval *tv; + + /* 'this' binding is just before current activation's bottom */ + DUK_ASSERT(thr->valstack_bottom > thr->valstack); + tv = thr->valstack_bottom - 1; + if (check_object_coercible && + (DUK_TVAL_IS_UNDEFINED(tv) || DUK_TVAL_IS_NULL(tv))) { + /* XXX: better macro for DUK_TVAL_IS_UNDEFINED_OR_NULL(tv) */ + goto type_error; + } + + DUK_TVAL_SET_TVAL(tv_slot, tv); + DUK_TVAL_INCREF(thr, tv); + } + return; + + type_error: + DUK_ERROR_TYPE(thr, DUK_STR_NOT_OBJECT_COERCIBLE); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_push_this(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + duk__push_this_helper(thr, 0 /*check_object_coercible*/); +} + +DUK_INTERNAL void duk_push_this_check_object_coercible(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + duk__push_this_helper(thr, 1 /*check_object_coercible*/); +} + +DUK_INTERNAL duk_hobject *duk_push_this_coercible_to_object(duk_hthread *thr) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + duk__push_this_helper(thr, 1 /*check_object_coercible*/); + h = duk_to_hobject(thr, -1); + DUK_ASSERT(h != NULL); + return h; +} + +DUK_INTERNAL duk_hstring *duk_push_this_coercible_to_string(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + duk__push_this_helper(thr, 1 /*check_object_coercible*/); + return duk_to_hstring_m1(thr); /* This will reject all Symbol values; accepts Symbol objects. */ +} + +DUK_INTERNAL duk_tval *duk_get_borrowed_this_tval(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + DUK_ASSERT(thr->callstack_top > 0); /* caller required to know */ + DUK_ASSERT(thr->callstack_curr != NULL); /* caller required to know */ + DUK_ASSERT(thr->valstack_bottom > thr->valstack); /* consequence of above */ + DUK_ASSERT(thr->valstack_bottom - 1 >= thr->valstack); /* 'this' binding exists */ + + return thr->valstack_bottom - 1; +} + +DUK_EXTERNAL void duk_push_new_target(duk_hthread *thr) { + duk_activation *act; + + DUK_ASSERT_API_ENTRY(thr); + + /* https://www.ecma-international.org/ecma-262/6.0/#sec-meta-properties-runtime-semantics-evaluation + * https://www.ecma-international.org/ecma-262/6.0/#sec-getnewtarget + * + * No newTarget support now, so as a first approximation + * use the resolved (non-bound) target function. + * + * Check CONSTRUCT flag from current function, or if running + * direct eval, from a non-direct-eval parent (with possibly + * more than one nested direct eval). An alternative to this + * would be to store [[NewTarget]] as a hidden symbol of the + * lexical scope, and then just look up that variable. + * + * Calls from the application will either be for an empty + * call stack, or a Duktape/C function as the top activation. + */ + + act = thr->callstack_curr; + for (;;) { + if (act == NULL) { + break; + } + + if (act->flags & DUK_ACT_FLAG_CONSTRUCT) { + duk_push_tval(thr, &act->tv_func); + return; + } else if (act->flags & DUK_ACT_FLAG_DIRECT_EVAL) { + act = act->parent; + } else { + break; + } + } + + duk_push_undefined(thr); +} + +DUK_EXTERNAL void duk_push_current_function(duk_hthread *thr) { + duk_activation *act; + + DUK_ASSERT_API_ENTRY(thr); + + act = thr->callstack_curr; + if (act != NULL) { + duk_push_tval(thr, &act->tv_func); + } else { + duk_push_undefined(thr); + } +} + +DUK_EXTERNAL void duk_push_current_thread(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + if (thr->heap->curr_thread) { + duk_push_hobject(thr, (duk_hobject *) thr->heap->curr_thread); + } else { + duk_push_undefined(thr); + } +} + +DUK_EXTERNAL void duk_push_global_object(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + duk_push_hobject_bidx(thr, DUK_BIDX_GLOBAL); +} + +/* XXX: size optimize */ +DUK_LOCAL void duk__push_stash(duk_hthread *thr) { + if (!duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE)) { + DUK_DDD(DUK_DDDPRINT("creating heap/global/thread stash on first use")); + duk_pop_unsafe(thr); + duk_push_bare_object(thr); + duk_dup_top(thr); + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_C); /* [ ... parent stash stash ] -> [ ... parent stash ] */ + } + duk_remove_m2(thr); +} + +DUK_EXTERNAL void duk_push_heap_stash(duk_hthread *thr) { + duk_heap *heap; + DUK_ASSERT_API_ENTRY(thr); + heap = thr->heap; + DUK_ASSERT(heap->heap_object != NULL); + duk_push_hobject(thr, heap->heap_object); + duk__push_stash(thr); +} + +DUK_EXTERNAL void duk_push_global_stash(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_push_global_object(thr); + duk__push_stash(thr); +} + +DUK_EXTERNAL void duk_push_thread_stash(duk_hthread *thr, duk_hthread *target_thr) { + DUK_ASSERT_API_ENTRY(thr); + if (DUK_UNLIKELY(target_thr == NULL)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return;); + } + duk_push_hobject(thr, (duk_hobject *) target_thr); + duk__push_stash(thr); +} + +/* XXX: duk_ssize_t would be useful here */ +DUK_LOCAL duk_int_t duk__try_push_vsprintf(duk_hthread *thr, void *buf, duk_size_t sz, const char *fmt, va_list ap) { + duk_int_t len; + + DUK_CTX_ASSERT_VALID(thr); + DUK_UNREF(thr); + + /* NUL terminator handling doesn't matter here */ + len = DUK_VSNPRINTF((char *) buf, sz, fmt, ap); + if (len < (duk_int_t) sz) { + /* Return value of 'sz' or more indicates output was (potentially) + * truncated. + */ + return (duk_int_t) len; + } + return -1; +} + +DUK_EXTERNAL const char *duk_push_vsprintf(duk_hthread *thr, const char *fmt, va_list ap) { + duk_uint8_t stack_buf[DUK_PUSH_SPRINTF_INITIAL_SIZE]; + duk_size_t sz = DUK_PUSH_SPRINTF_INITIAL_SIZE; + duk_bool_t pushed_buf = 0; + void *buf; + duk_int_t len; /* XXX: duk_ssize_t */ + const char *res; + + DUK_ASSERT_API_ENTRY(thr); + + /* special handling of fmt==NULL */ + if (!fmt) { + duk_hstring *h_str; + duk_push_hstring_empty(thr); + h_str = duk_known_hstring(thr, -1); + return (const char *) DUK_HSTRING_GET_DATA(h_str); + } + + /* initial estimate based on format string */ + sz = DUK_STRLEN(fmt) + 16; /* format plus something to avoid just missing */ + if (sz < DUK_PUSH_SPRINTF_INITIAL_SIZE) { + sz = DUK_PUSH_SPRINTF_INITIAL_SIZE; + } + DUK_ASSERT(sz > 0); + + /* Try to make do with a stack buffer to avoid allocating a temporary buffer. + * This works 99% of the time which is quite nice. + */ + for (;;) { + va_list ap_copy; /* copied so that 'ap' can be reused */ + + if (sz <= sizeof(stack_buf)) { + buf = stack_buf; + } else if (!pushed_buf) { + pushed_buf = 1; + buf = duk_push_dynamic_buffer(thr, sz); + } else { + buf = duk_resize_buffer(thr, -1, sz); + } + DUK_ASSERT(buf != NULL); + + DUK_VA_COPY(ap_copy, ap); + len = duk__try_push_vsprintf(thr, buf, sz, fmt, ap_copy); + va_end(ap_copy); + if (len >= 0) { + break; + } + + /* failed, resize and try again */ + sz = sz * 2; + if (DUK_UNLIKELY(sz >= DUK_PUSH_SPRINTF_SANITY_LIMIT)) { + DUK_ERROR_RANGE(thr, DUK_STR_RESULT_TOO_LONG); + DUK_WO_NORETURN(return NULL;); + } + } + + /* Cannot use duk_buffer_to_string() on the buffer because it is + * usually larger than 'len'; 'buf' is also usually a stack buffer. + */ + res = duk_push_lstring(thr, (const char *) buf, (duk_size_t) len); /* [ buf? res ] */ + if (pushed_buf) { + duk_remove_m2(thr); + } + return res; +} + +DUK_EXTERNAL const char *duk_push_sprintf(duk_hthread *thr, const char *fmt, ...) { + va_list ap; + const char *ret; + + DUK_ASSERT_API_ENTRY(thr); + + /* allow fmt==NULL */ + va_start(ap, fmt); + ret = duk_push_vsprintf(thr, fmt, ap); + va_end(ap); + + return ret; +} + +DUK_INTERNAL duk_hobject *duk_push_object_helper(duk_hthread *thr, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx) { + duk_tval *tv_slot; + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(prototype_bidx == -1 || + (prototype_bidx >= 0 && prototype_bidx < DUK_NUM_BUILTINS)); + + DUK__CHECK_SPACE(); + + h = duk_hobject_alloc(thr, hobject_flags_and_class); + DUK_ASSERT(h != NULL); + + DUK_DDD(DUK_DDDPRINT("created object with flags: 0x%08lx", (unsigned long) h->hdr.h_flags)); + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, h); + DUK_HOBJECT_INCREF(thr, h); /* no side effects */ + thr->valstack_top++; + + /* object is now reachable */ + + if (prototype_bidx >= 0) { + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, h, thr->builtins[prototype_bidx]); + } else { + DUK_ASSERT(prototype_bidx == -1); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h) == NULL); + } + + return h; +} + +DUK_INTERNAL duk_hobject *duk_push_object_helper_proto(duk_hthread *thr, duk_uint_t hobject_flags_and_class, duk_hobject *proto) { + duk_hobject *h; + + DUK_ASSERT_API_ENTRY(thr); + + h = duk_push_object_helper(thr, hobject_flags_and_class, -1); + DUK_ASSERT(h != NULL); + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, h, proto); + return h; +} + +DUK_EXTERNAL duk_idx_t duk_push_object(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT), + DUK_BIDX_OBJECT_PROTOTYPE); + return duk_get_top_index_unsafe(thr); +} + +DUK_EXTERNAL duk_idx_t duk_push_array(duk_hthread *thr) { + duk_uint_t flags; + duk_harray *obj; + duk_idx_t ret; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_ARRAY_PART | + DUK_HOBJECT_FLAG_EXOTIC_ARRAY | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ARRAY); + + obj = duk_harray_alloc(thr, flags); + DUK_ASSERT(obj != NULL); + + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) obj, thr->builtins[DUK_BIDX_ARRAY_PROTOTYPE]); + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HOBJECT_INCREF(thr, obj); /* XXX: could preallocate with refcount = 1 */ + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + thr->valstack_top++; + + DUK_ASSERT(obj->length == 0); /* Array .length starts at zero. */ + return ret; +} + +DUK_EXTERNAL duk_idx_t duk_push_bare_array(duk_hthread *thr) { + duk_uint_t flags; + duk_harray *obj; + duk_idx_t ret; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_ARRAY_PART | + DUK_HOBJECT_FLAG_EXOTIC_ARRAY | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ARRAY); + + obj = duk_harray_alloc(thr, flags); + DUK_ASSERT(obj != NULL); + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HOBJECT_INCREF(thr, obj); /* XXX: could preallocate with refcount = 1 */ + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + thr->valstack_top++; + + DUK_ASSERT(obj->length == 0); /* Array .length starts at zero. */ + return ret; +} + +DUK_INTERNAL duk_harray *duk_push_harray(duk_hthread *thr) { + /* XXX: API call could do this directly, cast to void in API macro. */ + duk_harray *a; + + DUK_ASSERT_API_ENTRY(thr); + + (void) duk_push_array(thr); + DUK_ASSERT(DUK_TVAL_IS_OBJECT(thr->valstack_top - 1)); + a = (duk_harray *) DUK_TVAL_GET_OBJECT(thr->valstack_top - 1); + DUK_ASSERT(a != NULL); + return a; +} + +/* Push a duk_harray with preallocated size (.length also set to match size). + * Caller may then populate array part of the duk_harray directly. + */ +DUK_INTERNAL duk_harray *duk_push_harray_with_size(duk_hthread *thr, duk_uint32_t size) { + duk_harray *a; + + DUK_ASSERT_API_ENTRY(thr); + + a = duk_push_harray(thr); + + duk_hobject_realloc_props(thr, + (duk_hobject *) a, + 0, + size, + 0, + 0); + a->length = size; + return a; +} + +DUK_INTERNAL duk_tval *duk_push_harray_with_size_outptr(duk_hthread *thr, duk_uint32_t size) { + duk_harray *a; + + DUK_ASSERT_API_ENTRY(thr); + + a = duk_push_harray_with_size(thr, size); + DUK_ASSERT(a != NULL); + return DUK_HOBJECT_A_GET_BASE(thr->heap, (duk_hobject *) a); +} + +DUK_EXTERNAL duk_idx_t duk_push_thread_raw(duk_hthread *thr, duk_uint_t flags) { + duk_hthread *obj; + duk_idx_t ret; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + DUK__CHECK_SPACE(); + + obj = duk_hthread_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_THREAD)); + DUK_ASSERT(obj != NULL); + obj->state = DUK_HTHREAD_STATE_INACTIVE; +#if defined(DUK_USE_ROM_STRINGS) + /* Nothing to initialize, strs[] is in ROM. */ +#else +#if defined(DUK_USE_HEAPPTR16) + obj->strs16 = thr->strs16; +#else + obj->strs = thr->strs; +#endif +#endif + DUK_DDD(DUK_DDDPRINT("created thread object with flags: 0x%08lx", (unsigned long) obj->obj.hdr.h_flags)); + + /* make the new thread reachable */ + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HTHREAD_INCREF(thr, obj); + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + thr->valstack_top++; + + /* important to do this *after* pushing, to make the thread reachable for gc */ + if (DUK_UNLIKELY(!duk_hthread_init_stacks(thr->heap, obj))) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return 0;); + } + + /* initialize built-ins - either by copying or creating new ones */ + if (flags & DUK_THREAD_NEW_GLOBAL_ENV) { + duk_hthread_create_builtin_objects(obj); + } else { + duk_hthread_copy_builtin_objects(thr, obj); + } + + /* default prototype */ + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) obj, obj->builtins[DUK_BIDX_THREAD_PROTOTYPE]); + + /* Initial stack size satisfies the stack slack constraints so there + * is no need to require stack here. + */ + DUK_ASSERT(DUK_VALSTACK_INITIAL_SIZE >= + DUK_VALSTACK_API_ENTRY_MINIMUM + DUK_VALSTACK_INTERNAL_EXTRA); + + return ret; +} + +DUK_INTERNAL duk_hcompfunc *duk_push_hcompfunc(duk_hthread *thr) { + duk_hcompfunc *obj; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + DUK__CHECK_SPACE(); + + /* Template functions are not strictly constructable (they don't + * have a "prototype" property for instance), so leave the + * DUK_HOBJECT_FLAG_CONSRUCTABLE flag cleared here. + */ + + obj = duk_hcompfunc_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_CALLABLE | + DUK_HOBJECT_FLAG_COMPFUNC | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION)); + if (DUK_UNLIKELY(obj == NULL)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); + } + + DUK_DDD(DUK_DDDPRINT("created compiled function object with flags: 0x%08lx", (unsigned long) obj->obj.hdr.h_flags)); + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HOBJECT_INCREF(thr, obj); + thr->valstack_top++; + + /* default prototype */ + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) obj) == NULL); + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) obj, thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); + + return obj; +} + +DUK_INTERNAL duk_hboundfunc *duk_push_hboundfunc(duk_hthread *thr) { + duk_hboundfunc *obj; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + DUK__CHECK_SPACE(); + obj = duk_hboundfunc_alloc(thr->heap, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BOUNDFUNC | + DUK_HOBJECT_FLAG_CONSTRUCTABLE | + DUK_HOBJECT_FLAG_CALLABLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION)); + if (!obj) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); + } + + tv_slot = thr->valstack_top++; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HOBJECT_INCREF(thr, obj); + + /* Prototype is left as NULL because the caller always sets it (and + * it depends on the target function). + */ + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) obj) == NULL); + + return obj; +} + +DUK_LOCAL duk_idx_t duk__push_c_function_raw(duk_hthread *thr, duk_c_function func, duk_idx_t nargs, duk_uint_t flags, duk_small_uint_t proto_bidx) { + duk_hnatfunc *obj; + duk_idx_t ret; + duk_tval *tv_slot; + duk_int16_t func_nargs; + + DUK_CTX_ASSERT_VALID(thr); + + DUK__CHECK_SPACE(); + + if (DUK_UNLIKELY(func == NULL)) { + goto api_error; + } + if (nargs >= 0 && nargs < DUK_HNATFUNC_NARGS_MAX) { + func_nargs = (duk_int16_t) nargs; + } else if (nargs == DUK_VARARGS) { + func_nargs = DUK_HNATFUNC_NARGS_VARARGS; + } else { + goto api_error; + } + + obj = duk_hnatfunc_alloc(thr, flags); + DUK_ASSERT(obj != NULL); + + obj->func = func; + obj->nargs = func_nargs; + + DUK_DDD(DUK_DDDPRINT("created native function object with flags: 0x%08lx, nargs=%ld", + (unsigned long) obj->obj.hdr.h_flags, (long) obj->nargs)); + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HOBJECT_INCREF(thr, obj); + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + thr->valstack_top++; + + DUK_ASSERT_BIDX_VALID(proto_bidx); + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) obj, thr->builtins[proto_bidx]); + return ret; + + api_error: + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); +} + +DUK_EXTERNAL duk_idx_t duk_push_c_function(duk_hthread *thr, duk_c_function func, duk_int_t nargs) { + duk_uint_t flags; + + DUK_ASSERT_API_ENTRY(thr); + + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_CONSTRUCTABLE | + DUK_HOBJECT_FLAG_CALLABLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_NATFUNC | + DUK_HOBJECT_FLAG_NEWENV | + DUK_HOBJECT_FLAG_STRICT | + DUK_HOBJECT_FLAG_NOTAIL | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION); + + /* Default prototype is a Duktape specific %NativeFunctionPrototype% + * which provides .length and .name getters. + */ + return duk__push_c_function_raw(thr, func, nargs, flags, DUK_BIDX_NATIVE_FUNCTION_PROTOTYPE); +} + +DUK_INTERNAL void duk_push_c_function_builtin(duk_hthread *thr, duk_c_function func, duk_int_t nargs) { + duk_uint_t flags; + + DUK_ASSERT_API_ENTRY(thr); + + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_CONSTRUCTABLE | + DUK_HOBJECT_FLAG_CALLABLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_NATFUNC | + DUK_HOBJECT_FLAG_NEWENV | + DUK_HOBJECT_FLAG_STRICT | + DUK_HOBJECT_FLAG_NOTAIL | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION); + + /* Must use Function.prototype for standard built-in functions. */ + (void) duk__push_c_function_raw(thr, func, nargs, flags, DUK_BIDX_FUNCTION_PROTOTYPE); +} + +DUK_INTERNAL void duk_push_c_function_builtin_noconstruct(duk_hthread *thr, duk_c_function func, duk_int_t nargs) { + duk_uint_t flags; + + DUK_ASSERT_API_ENTRY(thr); + + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_CALLABLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_NATFUNC | + DUK_HOBJECT_FLAG_NEWENV | + DUK_HOBJECT_FLAG_STRICT | + DUK_HOBJECT_FLAG_NOTAIL | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION); + + /* Must use Function.prototype for standard built-in functions. */ + (void) duk__push_c_function_raw(thr, func, nargs, flags, DUK_BIDX_FUNCTION_PROTOTYPE); +} + +DUK_EXTERNAL duk_idx_t duk_push_c_lightfunc(duk_hthread *thr, duk_c_function func, duk_idx_t nargs, duk_idx_t length, duk_int_t magic) { + duk_small_uint_t lf_flags; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + + DUK__CHECK_SPACE(); + + if (nargs >= DUK_LFUNC_NARGS_MIN && nargs <= DUK_LFUNC_NARGS_MAX) { + /* as is */ + } else if (nargs == DUK_VARARGS) { + nargs = DUK_LFUNC_NARGS_VARARGS; + } else { + goto api_error; + } + if (DUK_UNLIKELY(!(length >= DUK_LFUNC_LENGTH_MIN && length <= DUK_LFUNC_LENGTH_MAX))) { + goto api_error; + } + if (DUK_UNLIKELY(!(magic >= DUK_LFUNC_MAGIC_MIN && magic <= DUK_LFUNC_MAGIC_MAX))) { + goto api_error; + } + + lf_flags = DUK_LFUNC_FLAGS_PACK((duk_small_int_t) magic, (duk_small_uint_t) length, (duk_small_uint_t) nargs); + tv_slot = thr->valstack_top++; + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv_slot)); + DUK_TVAL_SET_LIGHTFUNC(tv_slot, func, lf_flags); + DUK_ASSERT(tv_slot >= thr->valstack_bottom); + return (duk_idx_t) (tv_slot - thr->valstack_bottom); + + api_error: + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); +} + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_hbufobj *duk_push_bufobj_raw(duk_hthread *thr, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx) { + duk_hbufobj *obj; + duk_tval *tv_slot; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(prototype_bidx >= 0); + + DUK__CHECK_SPACE(); + + obj = duk_hbufobj_alloc(thr, hobject_flags_and_class); + DUK_ASSERT(obj != NULL); + + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) obj, thr->builtins[prototype_bidx]); + DUK_HBUFOBJ_ASSERT_VALID(obj); + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) obj); + DUK_HOBJECT_INCREF(thr, obj); + thr->valstack_top++; + + return obj; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* XXX: There's quite a bit of overlap with buffer creation handling in + * duk_bi_buffer.c. Look for overlap and refactor. + */ +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#define DUK__PACK_ARGS(classnum,protobidx,elemtype,elemshift,istypedarray) \ + (((classnum) << 24) | ((protobidx) << 16) | ((elemtype) << 8) | ((elemshift) << 4) | (istypedarray)) + +static const duk_uint32_t duk__bufobj_flags_lookup[] = { + /* Node.js Buffers are Uint8Array instances which inherit from Buffer.prototype. */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_ARRAYBUFFER, DUK_BIDX_ARRAYBUFFER_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT8, 0, 0), /* DUK_BUFOBJ_ARRAYBUFFER */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_UINT8ARRAY, DUK_BIDX_NODEJS_BUFFER_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT8, 0, 1), /* DUK_BUFOBJ_NODEJS_BUFFER */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_DATAVIEW, DUK_BIDX_DATAVIEW_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT8, 0, 0), /* DUK_BUFOBJ_DATAVIEW */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_INT8ARRAY, DUK_BIDX_INT8ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_INT8, 0, 1), /* DUK_BUFOBJ_INT8ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_UINT8ARRAY, DUK_BIDX_UINT8ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT8, 0, 1), /* DUK_BUFOBJ_UINT8ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_UINT8CLAMPEDARRAY, DUK_BIDX_UINT8CLAMPEDARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT8CLAMPED, 0, 1), /* DUK_BUFOBJ_UINT8CLAMPEDARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_INT16ARRAY, DUK_BIDX_INT16ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_INT16, 1, 1), /* DUK_BUFOBJ_INT16ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_UINT16ARRAY, DUK_BIDX_UINT16ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT16, 1, 1), /* DUK_BUFOBJ_UINT16ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_INT32ARRAY, DUK_BIDX_INT32ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_INT32, 2, 1), /* DUK_BUFOBJ_INT32ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_UINT32ARRAY, DUK_BIDX_UINT32ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_UINT32, 2, 1), /* DUK_BUFOBJ_UINT32ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_FLOAT32ARRAY, DUK_BIDX_FLOAT32ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_FLOAT32, 2, 1), /* DUK_BUFOBJ_FLOAT32ARRAY */ + DUK__PACK_ARGS(DUK_HOBJECT_CLASS_FLOAT64ARRAY, DUK_BIDX_FLOAT64ARRAY_PROTOTYPE, DUK_HBUFOBJ_ELEM_FLOAT64, 3, 1) /* DUK_BUFOBJ_FLOAT64ARRAY */ +}; +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_EXTERNAL void duk_push_buffer_object(duk_hthread *thr, duk_idx_t idx_buffer, duk_size_t byte_offset, duk_size_t byte_length, duk_uint_t flags) { + duk_hbufobj *h_bufobj; + duk_hbuffer *h_val; + duk_hobject *h_arraybuf; + duk_uint32_t tmp; + duk_uint_t classnum; + duk_uint_t protobidx; + duk_uint_t lookupidx; + duk_uint_t uint_offset, uint_length, uint_added; + + DUK_ASSERT_API_ENTRY(thr); + + /* The underlying types for offset/length in duk_hbufobj is + * duk_uint_t; make sure argument values fit. + */ + uint_offset = (duk_uint_t) byte_offset; + uint_length = (duk_uint_t) byte_length; + if (sizeof(duk_size_t) != sizeof(duk_uint_t)) { + if (DUK_UNLIKELY((duk_size_t) uint_offset != byte_offset || (duk_size_t) uint_length != byte_length)) { + goto range_error; + } + } + + DUK_ASSERT_DISABLE(flags >= 0); /* flags is unsigned */ + lookupidx = flags; + if (DUK_UNLIKELY(lookupidx >= sizeof(duk__bufobj_flags_lookup) / sizeof(duk_uint32_t))) { + goto arg_error; + } + tmp = duk__bufobj_flags_lookup[lookupidx]; + classnum = tmp >> 24; + protobidx = (tmp >> 16) & 0xff; + + h_arraybuf = duk_get_hobject(thr, idx_buffer); + if (h_arraybuf != NULL && /* argument is an object */ + flags != DUK_BUFOBJ_ARRAYBUFFER && /* creating a view */ + DUK_HOBJECT_GET_CLASS_NUMBER(h_arraybuf) == DUK_HOBJECT_CLASS_ARRAYBUFFER /* argument is ArrayBuffer */) { + duk_uint_t tmp_offset; + + DUK_HBUFOBJ_ASSERT_VALID((duk_hbufobj *) h_arraybuf); + h_val = ((duk_hbufobj *) h_arraybuf)->buf; + if (DUK_UNLIKELY(h_val == NULL)) { + goto arg_error; + } + + tmp_offset = uint_offset + ((duk_hbufobj *) h_arraybuf)->offset; + if (DUK_UNLIKELY(tmp_offset < uint_offset)) { + goto range_error; + } + uint_offset = tmp_offset; + + /* Note intentional difference to new TypedArray(): we allow + * caller to create an uncovered typed array (which is memory + * safe); new TypedArray() rejects it. + */ + } else { + /* Handle unexpected object arguments here too, for nice error + * messages. + */ + h_arraybuf = NULL; + h_val = duk_require_hbuffer(thr, idx_buffer); + } + + /* Wrap check for offset+length. */ + uint_added = uint_offset + uint_length; + if (DUK_UNLIKELY(uint_added < uint_offset)) { + goto range_error; + } + DUK_ASSERT(uint_added >= uint_offset && uint_added >= uint_length); + + DUK_ASSERT(h_val != NULL); + + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(classnum), + (duk_small_int_t) protobidx); + DUK_ASSERT(h_bufobj != NULL); + + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + h_bufobj->buf_prop = h_arraybuf; + DUK_HOBJECT_INCREF_ALLOWNULL(thr, h_arraybuf); + h_bufobj->offset = uint_offset; + h_bufobj->length = uint_length; + h_bufobj->shift = (tmp >> 4) & 0x0f; + h_bufobj->elem_type = (tmp >> 8) & 0xff; + h_bufobj->is_typedarray = tmp & 0x0f; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + /* TypedArray views need an automatic ArrayBuffer which must be + * provided as .buffer property of the view. The ArrayBuffer is + * referenced via duk_hbufobj->buf_prop and an inherited .buffer + * accessor returns it. The ArrayBuffer is created lazily on first + * access if necessary so we don't need to do anything more here. + */ + return; + + range_error: + DUK_ERROR_RANGE(thr, DUK_STR_INVALID_ARGS); + DUK_WO_NORETURN(return;); + + arg_error: + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_ARGS); + DUK_WO_NORETURN(return;); +} +#else /* DUK_USE_BUFFEROBJECT_SUPPORT */ +DUK_EXTERNAL void duk_push_buffer_object(duk_hthread *thr, duk_idx_t idx_buffer, duk_size_t byte_offset, duk_size_t byte_length, duk_uint_t flags) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(idx_buffer); + DUK_UNREF(byte_offset); + DUK_UNREF(byte_length); + DUK_UNREF(flags); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +DUK_EXTERNAL duk_idx_t duk_push_error_object_va_raw(duk_hthread *thr, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, va_list ap) { + duk_hobject *proto; +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) + duk_small_uint_t augment_flags; +#endif + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr != NULL); + DUK_UNREF(filename); + DUK_UNREF(line); + + /* Error code also packs a tracedata related flag. */ +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) + augment_flags = 0; + if (err_code & DUK_ERRCODE_FLAG_NOBLAME_FILELINE) { + augment_flags = DUK_AUGMENT_FLAG_NOBLAME_FILELINE; + } +#endif + err_code = err_code & (~DUK_ERRCODE_FLAG_NOBLAME_FILELINE); + + /* error gets its 'name' from the prototype */ + proto = duk_error_prototype_from_code(thr, err_code); + (void) duk_push_object_helper_proto(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ERROR), + proto); + + /* ... and its 'message' from an instance property */ + if (fmt) { + duk_push_vsprintf(thr, fmt, ap); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_MESSAGE, DUK_PROPDESC_FLAGS_WC); + } else { + /* If no explicit message given, put error code into message field + * (as a number). This is not fully in keeping with the ECMAScript + * error model because messages are supposed to be strings (Error + * constructors use ToString() on their argument). However, it's + * probably more useful than having a separate 'code' property. + */ + duk_push_int(thr, err_code); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_MESSAGE, DUK_PROPDESC_FLAGS_WC); + } + + /* XXX: .code = err_code disabled, not sure if useful */ + + /* Creation time error augmentation */ +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) + /* filename may be NULL in which case file/line is not recorded */ + duk_err_augment_error_create(thr, thr, filename, line, augment_flags); /* may throw an error */ +#endif + + return duk_get_top_index_unsafe(thr); +} + +DUK_EXTERNAL duk_idx_t duk_push_error_object_raw(duk_hthread *thr, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...) { + va_list ap; + duk_idx_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + va_start(ap, fmt); + ret = duk_push_error_object_va_raw(thr, err_code, filename, line, fmt, ap); + va_end(ap); + return ret; +} + +#if !defined(DUK_USE_VARIADIC_MACROS) +DUK_EXTERNAL duk_idx_t duk_push_error_object_stash(duk_hthread *thr, duk_errcode_t err_code, const char *fmt, ...) { + const char *filename = duk_api_global_filename; + duk_int_t line = duk_api_global_line; + va_list ap; + duk_idx_t ret; + + DUK_ASSERT_API_ENTRY(thr); + + duk_api_global_filename = NULL; + duk_api_global_line = 0; + va_start(ap, fmt); + ret = duk_push_error_object_va_raw(thr, err_code, filename, line, fmt, ap); + va_end(ap); + return ret; +} +#endif /* DUK_USE_VARIADIC_MACROS */ + +DUK_EXTERNAL void *duk_push_buffer_raw(duk_hthread *thr, duk_size_t size, duk_small_uint_t flags) { + duk_tval *tv_slot; + duk_hbuffer *h; + void *buf_data; + + DUK_ASSERT_API_ENTRY(thr); + + DUK__CHECK_SPACE(); + + /* Check for maximum buffer length. */ + if (DUK_UNLIKELY(size > DUK_HBUFFER_MAX_BYTELEN)) { + DUK_ERROR_RANGE(thr, DUK_STR_BUFFER_TOO_LONG); + DUK_WO_NORETURN(return NULL;); + } + + h = duk_hbuffer_alloc(thr->heap, size, flags, &buf_data); + if (DUK_UNLIKELY(h == NULL)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); + } + + tv_slot = thr->valstack_top; + DUK_TVAL_SET_BUFFER(tv_slot, h); + DUK_HBUFFER_INCREF(thr, h); + thr->valstack_top++; + + return (void *) buf_data; +} + +DUK_INTERNAL void *duk_push_fixed_buffer_nozero(duk_hthread *thr, duk_size_t len) { + DUK_ASSERT_API_ENTRY(thr); + return duk_push_buffer_raw(thr, len, DUK_BUF_FLAG_NOZERO); +} + +DUK_INTERNAL void *duk_push_fixed_buffer_zero(duk_hthread *thr, duk_size_t len) { + void *ptr; + + DUK_ASSERT_API_ENTRY(thr); + + ptr = duk_push_buffer_raw(thr, len, 0); + DUK_ASSERT(ptr != NULL); +#if !defined(DUK_USE_ZERO_BUFFER_DATA) + /* ES2015 requires zeroing even when DUK_USE_ZERO_BUFFER_DATA + * is not set. + */ + duk_memzero((void *) ptr, (size_t) len); +#endif + return ptr; +} + +#if defined(DUK_USE_ES6_PROXY) +DUK_EXTERNAL duk_idx_t duk_push_proxy(duk_hthread *thr, duk_uint_t proxy_flags) { + duk_hobject *h_target; + duk_hobject *h_handler; + duk_hproxy *h_proxy; + duk_tval *tv_slot; + duk_uint_t flags; + + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(proxy_flags); + + /* DUK__CHECK_SPACE() unnecessary because the Proxy is written to + * value stack in-place. + */ +#if 0 + DUK__CHECK_SPACE(); +#endif + + /* Reject a proxy object as the target because it would need + * special handling in property lookups. (ES2015 has no such + * restriction.) + */ + h_target = duk_require_hobject_promote_mask(thr, -2, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + DUK_ASSERT(h_target != NULL); + if (DUK_HOBJECT_IS_PROXY(h_target)) { + goto fail_args; + } + + /* Reject a proxy object as the handler because it would cause + * potentially unbounded recursion. (ES2015 has no such + * restriction.) + * + * There's little practical reason to use a lightfunc or a plain + * buffer as the handler table: one could only provide traps via + * their prototype objects (Function.prototype and ArrayBuffer.prototype). + * Even so, as lightfuncs and plain buffers mimic their object + * counterparts, they're promoted and accepted here. + */ + h_handler = duk_require_hobject_promote_mask(thr, -1, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + DUK_ASSERT(h_handler != NULL); + if (DUK_HOBJECT_IS_PROXY(h_handler)) { + goto fail_args; + } + + /* XXX: Proxy object currently has no prototype, so ToPrimitive() + * coercion fails which is a bit confusing. + */ + + /* CALLABLE and CONSTRUCTABLE flags are copied from the (initial) + * target, see ES2015 Sections 9.5.15 and 9.5.13. + */ + flags = DUK_HEAPHDR_GET_FLAGS((duk_heaphdr *) h_target) & + (DUK_HOBJECT_FLAG_CALLABLE | DUK_HOBJECT_FLAG_CONSTRUCTABLE); + flags |= DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ; + if (flags & DUK_HOBJECT_FLAG_CALLABLE) { + flags |= DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_FUNCTION) | + DUK_HOBJECT_FLAG_SPECIAL_CALL; + } else { + flags |= DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT); + } + + h_proxy = duk_hproxy_alloc(thr, flags); + DUK_ASSERT(h_proxy != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) h_proxy) == NULL); + + /* Initialize Proxy target and handler references; avoid INCREF + * by stealing the value stack refcounts via direct value stack + * manipulation. INCREF is needed for the Proxy itself however. + */ + DUK_ASSERT(h_target != NULL); + h_proxy->target = h_target; + DUK_ASSERT(h_handler != NULL); + h_proxy->handler = h_handler; + DUK_HPROXY_ASSERT_VALID(h_proxy); + + DUK_ASSERT(duk_get_hobject(thr, -2) == h_target); + DUK_ASSERT(duk_get_hobject(thr, -1) == h_handler); + tv_slot = thr->valstack_top - 2; + DUK_ASSERT(tv_slot >= thr->valstack_bottom); + DUK_TVAL_SET_OBJECT(tv_slot, (duk_hobject *) h_proxy); + DUK_HOBJECT_INCREF(thr, (duk_hobject *) h_proxy); + tv_slot++; + DUK_TVAL_SET_UNDEFINED(tv_slot); /* [ ... target handler ] -> [ ... proxy undefined ] */ + thr->valstack_top = tv_slot; /* -> [ ... proxy ] */ + + DUK_DD(DUK_DDPRINT("created Proxy: %!iT", duk_get_tval(thr, -1))); + + return (duk_idx_t) (thr->valstack_top - thr->valstack_bottom - 1); + + fail_args: + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); +} +#else /* DUK_USE_ES6_PROXY */ +DUK_EXTERNAL duk_idx_t duk_push_proxy(duk_hthread *thr, duk_uint_t proxy_flags) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(proxy_flags); + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return 0;); +} +#endif /* DUK_USE_ES6_PROXY */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_LOCAL void duk__validate_push_heapptr(duk_hthread *thr, void *ptr) { + duk_heaphdr *h; + duk_heaphdr *curr; + duk_bool_t found = 0; + + h = (duk_heaphdr *) ptr; + if (h == NULL) { + /* Allowed. */ + return; + } + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(h)); + + /* One particular problem case is where an object has been + * queued for finalization but the finalizer hasn't yet been + * executed. + * + * Corner case: we're running in a finalizer for object X, and + * user code calls duk_push_heapptr() for X itself. In this + * case X will be in finalize_list, and we can detect the case + * by seeing that X's FINALIZED flag is set (which is done before + * the finalizer starts executing). + */ +#if defined(DUK_USE_FINALIZER_SUPPORT) + for (curr = thr->heap->finalize_list; + curr != NULL; + curr = DUK_HEAPHDR_GET_NEXT(thr->heap, curr)) { + /* FINALIZABLE is set for all objects on finalize_list + * except for an object being finalized right now. So + * can't assert here. + */ +#if 0 + DUK_ASSERT(DUK_HEAPHDR_HAS_FINALIZABLE(curr)); +#endif + + if (curr == h) { + if (DUK_HEAPHDR_HAS_FINALIZED((duk_heaphdr *) h)) { + /* Object is currently being finalized. */ + DUK_ASSERT(found == 0); /* Would indicate corrupted lists. */ + found = 1; + } else { + /* Not being finalized but on finalize_list, + * allowed since Duktape 2.1. + */ + DUK_ASSERT(found == 0); /* Would indicate corrupted lists. */ + found = 1; + } + } + } +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Because refzero_list is now processed to completion inline with + * no side effects, it's always empty here. + */ + DUK_ASSERT(thr->heap->refzero_list == NULL); +#endif + + /* If not present in finalize_list (or refzero_list), it + * must be either in heap_allocated or the string table. + */ + if (DUK_HEAPHDR_IS_STRING(h)) { + duk_uint32_t i; + duk_hstring *str; + duk_heap *heap = thr->heap; + + DUK_ASSERT(found == 0); + for (i = 0; i < heap->st_size; i++) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + str = DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, heap->strtable16[i]); +#else + str = heap->strtable[i]; +#endif + while (str != NULL) { + if (str == (duk_hstring *) h) { + DUK_ASSERT(found == 0); /* Would indicate corrupted lists. */ + found = 1; + break; + } + str = str->hdr.h_next; + } + } + DUK_ASSERT(found != 0); + } else { + for (curr = thr->heap->heap_allocated; + curr != NULL; + curr = DUK_HEAPHDR_GET_NEXT(thr->heap, curr)) { + if (curr == h) { + DUK_ASSERT(found == 0); /* Would indicate corrupted lists. */ + found = 1; + } + } + DUK_ASSERT(found != 0); + } +} +#endif /* DUK_USE_ASSERTIONS */ + +DUK_EXTERNAL duk_idx_t duk_push_heapptr(duk_hthread *thr, void *ptr) { + duk_idx_t ret; + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + /* Reviving an object using a heap pointer is a dangerous API + * operation: if the application doesn't guarantee that the + * pointer target is always reachable, difficult-to-diagnose + * problems may ensue. Try to validate the 'ptr' argument to + * the extent possible. + */ + +#if defined(DUK_USE_ASSERTIONS) + duk__validate_push_heapptr(thr, ptr); +#endif + + DUK__CHECK_SPACE(); + + ret = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + tv = thr->valstack_top++; + + if (ptr == NULL) { + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv)); + return ret; + } + + DUK_HEAPHDR_ASSERT_VALID((duk_heaphdr *) ptr); + + /* If the argument is on finalize_list it has technically been + * unreachable before duk_push_heapptr() but it's still safe to + * push it. Starting from Duktape 2.1 allow application code to + * do so. There are two main cases: + * + * (1) The object is on the finalize_list and we're called by + * the finalizer for the object being finalized. In this + * case do nothing: finalize_list handling will deal with + * the object queueing. This is detected by the object not + * having a FINALIZABLE flag despite being on the finalize_list; + * the flag is cleared for the object being finalized only. + * + * (2) The object is on the finalize_list but is not currently + * being processed. In this case the object can be queued + * back to heap_allocated with a few flags cleared, in effect + * cancelling the finalizer. + */ + if (DUK_UNLIKELY(DUK_HEAPHDR_HAS_FINALIZABLE((duk_heaphdr *) ptr))) { + duk_heaphdr *curr; + + DUK_D(DUK_DPRINT("duk_push_heapptr() with a pointer on finalize_list, autorescue")); + + curr = (duk_heaphdr *) ptr; + DUK_HEAPHDR_CLEAR_FINALIZABLE(curr); + + /* Because FINALIZED is set prior to finalizer call, it will + * be set for the object being currently finalized, but not + * for other objects on finalize_list. + */ + DUK_HEAPHDR_CLEAR_FINALIZED(curr); + + /* Dequeue object from finalize_list and queue it back to + * heap_allocated. + */ +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(curr) >= 1); /* Preincremented on finalize_list insert. */ + DUK_HEAPHDR_PREDEC_REFCOUNT(curr); +#endif + DUK_HEAP_REMOVE_FROM_FINALIZE_LIST(thr->heap, curr); + DUK_HEAP_INSERT_INTO_HEAP_ALLOCATED(thr->heap, curr); + + /* Continue with the rest. */ + } + + switch (DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) ptr)) { + case DUK_HTYPE_STRING: + DUK_TVAL_SET_STRING(tv, (duk_hstring *) ptr); + break; + case DUK_HTYPE_OBJECT: + DUK_TVAL_SET_OBJECT(tv, (duk_hobject *) ptr); + break; + default: + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) ptr) == DUK_HTYPE_BUFFER); + DUK_TVAL_SET_BUFFER(tv, (duk_hbuffer *) ptr); + break; + } + + DUK_HEAPHDR_INCREF(thr, (duk_heaphdr *) ptr); + + return ret; +} + +/* Push object with no prototype, i.e. a "bare" object. */ +DUK_EXTERNAL duk_idx_t duk_push_bare_object(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT), + -1); /* no prototype */ + return duk_get_top_index_unsafe(thr); +} + +DUK_INTERNAL void duk_push_hstring(duk_hthread *thr, duk_hstring *h) { + duk_tval tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(h != NULL); + + DUK_TVAL_SET_STRING(&tv, h); + duk_push_tval(thr, &tv); +} + +DUK_INTERNAL void duk_push_hstring_stridx(duk_hthread *thr, duk_small_uint_t stridx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT_STRIDX_VALID(stridx); + duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); +} + +DUK_INTERNAL void duk_push_hstring_empty(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_push_hstring(thr, DUK_HTHREAD_GET_STRING(thr, DUK_STRIDX_EMPTY_STRING)); +} + +DUK_INTERNAL void duk_push_hobject(duk_hthread *thr, duk_hobject *h) { + duk_tval tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(h != NULL); + + DUK_TVAL_SET_OBJECT(&tv, h); + duk_push_tval(thr, &tv); +} + +DUK_INTERNAL void duk_push_hbuffer(duk_hthread *thr, duk_hbuffer *h) { + duk_tval tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(h != NULL); + + DUK_TVAL_SET_BUFFER(&tv, h); + duk_push_tval(thr, &tv); +} + +DUK_INTERNAL void duk_push_hobject_bidx(duk_hthread *thr, duk_small_int_t builtin_idx) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(builtin_idx >= 0 && builtin_idx < DUK_NUM_BUILTINS); + DUK_ASSERT(thr->builtins[builtin_idx] != NULL); + + duk_push_hobject(thr, thr->builtins[builtin_idx]); +} + +/* + * Poppers + */ + +DUK_LOCAL DUK_ALWAYS_INLINE void duk__pop_n_unsafe_raw(duk_hthread *thr, duk_idx_t count) { + duk_tval *tv; +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_tval *tv_end; +#endif + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(count >= 0); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) count); + +#if defined(DUK_USE_REFERENCE_COUNTING) + tv = thr->valstack_top; + tv_end = tv - count; + while (tv != tv_end) { + tv--; + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, tv); + } + thr->valstack_top = tv; + DUK_REFZERO_CHECK_FAST(thr); +#else + tv = thr->valstack_top; + while (count > 0) { + count--; + tv--; + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_TVAL_SET_UNDEFINED(tv); + } + thr->valstack_top = tv; +#endif + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} + +DUK_EXTERNAL void duk_pop_n(duk_hthread *thr, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + + if (DUK_UNLIKELY((duk_uidx_t) (thr->valstack_top - thr->valstack_bottom) < (duk_uidx_t) count)) { + DUK_ERROR_RANGE_INVALID_COUNT(thr); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(count >= 0); + + duk__pop_n_unsafe_raw(thr, count); +} + +#if defined(DUK_USE_PREFER_SIZE) +DUK_INTERNAL void duk_pop_n_unsafe(duk_hthread *thr, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n(thr, count); +} +#else /* DUK_USE_PREFER_SIZE */ +DUK_INTERNAL void duk_pop_n_unsafe(duk_hthread *thr, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + duk__pop_n_unsafe_raw(thr, count); +} +#endif /* DUK_USE_PREFER_SIZE */ + +/* Pop N elements without DECREF (in effect "stealing" any actual refcounts). */ +#if defined(DUK_USE_REFERENCE_COUNTING) +DUK_INTERNAL void duk_pop_n_nodecref_unsafe(duk_hthread *thr, duk_idx_t count) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(count >= 0); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) count); + + tv = thr->valstack_top; + while (count > 0) { + count--; + tv--; + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_TVAL_SET_UNDEFINED(tv); + } + thr->valstack_top = tv; + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} +#else /* DUK_USE_REFERENCE_COUNTING */ +DUK_INTERNAL void duk_pop_n_nodecref_unsafe(duk_hthread *thr, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_unsafe(thr, count); +} +#endif /* DUK_USE_REFERENCE_COUNTING */ + +/* Popping one element is called so often that when footprint is not an issue, + * compile a specialized function for it. + */ +#if defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL void duk_pop(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n(thr, 1); +} +DUK_INTERNAL void duk_pop_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_unsafe(thr, 1); +} +DUK_INTERNAL void duk_pop_nodecref_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_nodecref_unsafe(thr, 1); +} +#else /* DUK_USE_PREFER_SIZE */ +DUK_LOCAL DUK_ALWAYS_INLINE void duk__pop_unsafe_raw(duk_hthread *thr) { + duk_tval *tv; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(thr->valstack_top != thr->valstack_bottom); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) 1); + + tv = --thr->valstack_top; + DUK_ASSERT(tv >= thr->valstack_bottom); +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv); /* side effects */ +#else + DUK_TVAL_SET_UNDEFINED(tv); +#endif + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} +DUK_EXTERNAL void duk_pop(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + if (DUK_UNLIKELY(thr->valstack_top == thr->valstack_bottom)) { + DUK_ERROR_RANGE_INVALID_COUNT(thr); + DUK_WO_NORETURN(return;); + } + + duk__pop_unsafe_raw(thr); +} +DUK_INTERNAL void duk_pop_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk__pop_unsafe_raw(thr); +} +DUK_INTERNAL void duk_pop_nodecref_unsafe(duk_hthread *thr) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->valstack_top != thr->valstack_bottom); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) 1); + + tv = --thr->valstack_top; + DUK_ASSERT(tv >= thr->valstack_bottom); + DUK_TVAL_SET_UNDEFINED(tv); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} +#endif /* !DUK_USE_PREFER_SIZE */ + +#if defined(DUK_USE_PREFER_SIZE) +DUK_INTERNAL void duk_pop_undefined(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_nodecref_unsafe(thr); +} +#else /* DUK_USE_PREFER_SIZE */ +DUK_INTERNAL void duk_pop_undefined(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->valstack_top != thr->valstack_bottom); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) 1); + + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top - 1)); + thr->valstack_top--; + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} +#endif /* !DUK_USE_PREFER_SIZE */ + +#if defined(DUK_USE_PREFER_SIZE) +DUK_EXTERNAL void duk_pop_2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n(thr, 2); +} +DUK_INTERNAL void duk_pop_2_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_unsafe(thr, 2); +} +DUK_INTERNAL void duk_pop_2_nodecref_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_nodecref_unsafe(thr, 2); +} +#else +DUK_LOCAL DUK_ALWAYS_INLINE void duk__pop_2_unsafe_raw(duk_hthread *thr) { + duk_tval *tv; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(thr->valstack_top != thr->valstack_bottom); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) 2); + + tv = --thr->valstack_top; + DUK_ASSERT(tv >= thr->valstack_bottom); +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv); /* side effects */ +#else + DUK_TVAL_SET_UNDEFINED(tv); +#endif + tv = --thr->valstack_top; + DUK_ASSERT(tv >= thr->valstack_bottom); +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv); /* side effects */ +#else + DUK_TVAL_SET_UNDEFINED(tv); +#endif + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} +DUK_EXTERNAL void duk_pop_2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + if (DUK_UNLIKELY(thr->valstack_top - 2 < thr->valstack_bottom)) { + DUK_ERROR_RANGE_INVALID_COUNT(thr); + DUK_WO_NORETURN(return;); + } + + duk__pop_2_unsafe_raw(thr); +} +DUK_INTERNAL void duk_pop_2_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk__pop_2_unsafe_raw(thr); +} +DUK_INTERNAL void duk_pop_2_nodecref_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->valstack_top != thr->valstack_bottom); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) >= (duk_size_t) 2); + + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top - 1)); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top - 2)); + thr->valstack_top -= 2; + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); +} +#endif /* !DUK_USE_PREFER_SIZE */ + +DUK_EXTERNAL void duk_pop_3(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n(thr, 3); +} + +DUK_INTERNAL void duk_pop_3_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_unsafe(thr, 3); +} + +DUK_INTERNAL void duk_pop_3_nodecref_unsafe(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_pop_n_nodecref_unsafe(thr, 3); +} + +/* + * Pack and unpack (pack value stack entries into an array and vice versa) + */ + +/* XXX: pack index range? array index offset? */ +/* XXX: need ability to pack into a bare array? */ +DUK_INTERNAL void duk_pack(duk_hthread *thr, duk_idx_t count) { + duk_tval *tv_src; + duk_tval *tv_dst; + duk_tval *tv_curr; + duk_tval *tv_limit; + duk_idx_t top; + + DUK_ASSERT_API_ENTRY(thr); + + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + top = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + DUK_ASSERT(top >= 0); + if (DUK_UNLIKELY((duk_uidx_t) count > (duk_uidx_t) top)) { + /* Also handles negative count. */ + DUK_ERROR_RANGE_INVALID_COUNT(thr); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(count >= 0); + + /* Wrapping is controlled by the check above: value stack top can be + * at most DUK_USE_VALSTACK_LIMIT which is low enough so that + * multiplying with sizeof(duk_tval) won't wrap. + */ + DUK_ASSERT(count >= 0 && count <= (duk_idx_t) DUK_USE_VALSTACK_LIMIT); + DUK_ASSERT((duk_size_t) count <= DUK_SIZE_MAX / sizeof(duk_tval)); /* no wrapping */ + + tv_dst = duk_push_harray_with_size_outptr(thr, (duk_uint32_t) count); /* XXX: uninitialized would be OK */ + DUK_ASSERT(count == 0 || tv_dst != NULL); + DUK_ASSERT(!duk_is_bare_object(thr, -1)); + + /* Copy value stack values directly to the array part without + * any refcount updates: net refcount changes are zero. + */ + tv_src = thr->valstack_top - count - 1; + duk_memcpy_unsafe((void *) tv_dst, (const void *) tv_src, (size_t) count * sizeof(duk_tval)); + + /* Overwrite result array to final value stack location and wipe + * the rest; no refcount operations needed. + */ + + tv_dst = tv_src; /* when count == 0, same as tv_src (OK) */ + tv_src = thr->valstack_top - 1; + DUK_TVAL_SET_TVAL(tv_dst, tv_src); + + /* XXX: internal helper to wipe a value stack segment? */ + tv_curr = tv_dst + 1; + tv_limit = thr->valstack_top; + while (tv_curr != tv_limit) { + /* Wipe policy: keep as 'undefined'. */ + DUK_TVAL_SET_UNDEFINED(tv_curr); + tv_curr++; + } + thr->valstack_top = tv_dst + 1; +} + +DUK_INTERNAL duk_idx_t duk_unpack_array_like(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + + tv = duk_require_tval(thr, idx); + if (DUK_LIKELY(DUK_TVAL_IS_OBJECT(tv))) { + duk_hobject *h; + duk_uint32_t len; + duk_uint32_t i; + + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + DUK_UNREF(h); + +#if defined(DUK_USE_ARRAY_FASTPATH) /* close enough */ + if (DUK_LIKELY(DUK_HOBJECT_IS_ARRAY(h) && + ((duk_harray *) h)->length <= DUK_HOBJECT_GET_ASIZE(h))) { + duk_harray *h_arr; + duk_tval *tv_src; + duk_tval *tv_dst; + + h_arr = (duk_harray *) h; + len = h_arr->length; + if (DUK_UNLIKELY(len >= 0x80000000UL)) { + goto fail_over_2g; + } + duk_require_stack(thr, (duk_idx_t) len); + + /* The potential allocation in duk_require_stack() may + * run a finalizer which modifies the argArray so that + * e.g. becomes sparse. So, we need to recheck that the + * array didn't change size and that there's still a + * valid backing array part. + * + * XXX: alternatively, could prevent finalizers for the + * duration. + */ + if (DUK_UNLIKELY(len != h_arr->length || + h_arr->length > DUK_HOBJECT_GET_ASIZE((duk_hobject *) h_arr))) { + goto skip_fast; + } + + /* Main fast path: arguments array is almost always + * an actual array (though it might also be an arguments + * object). + */ + + DUK_DDD(DUK_DDDPRINT("fast path for %ld elements", (long) h_arr->length)); + tv_src = DUK_HOBJECT_A_GET_BASE(thr->heap, h); + tv_dst = thr->valstack_top; + while (len-- > 0) { + DUK_ASSERT(tv_dst < thr->valstack_end); + if (DUK_UNLIKELY(DUK_TVAL_IS_UNUSED(tv_src))) { + /* Gaps are very unlikely. Skip over them, + * without an ancestor lookup (technically + * not compliant). + */ + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv_dst)); /* valstack policy */ + } else { + DUK_TVAL_SET_TVAL(tv_dst, tv_src); + DUK_TVAL_INCREF(thr, tv_dst); + } + tv_src++; + tv_dst++; + } + DUK_ASSERT(tv_dst <= thr->valstack_end); + thr->valstack_top = tv_dst; + return (duk_idx_t) h_arr->length; + } + skip_fast: +#endif /* DUK_USE_ARRAY_FASTPATH */ + + /* Slow path: actual lookups. The initial 'length' lookup + * decides the output length, regardless of side effects that + * may resize or change the argArray while we read the + * indices. + */ + idx = duk_normalize_index(thr, idx); + duk_get_prop_stridx(thr, idx, DUK_STRIDX_LENGTH); + len = duk_to_uint32(thr, -1); /* ToUint32() coercion required */ + if (DUK_UNLIKELY(len >= 0x80000000UL)) { + goto fail_over_2g; + } + duk_pop_unsafe(thr); + DUK_DDD(DUK_DDDPRINT("slow path for %ld elements", (long) len)); + + duk_require_stack(thr, (duk_idx_t) len); + for (i = 0; i < len; i++) { + duk_get_prop_index(thr, idx, (duk_uarridx_t) i); + } + return (duk_idx_t) len; + } else if (DUK_TVAL_IS_UNDEFINED(tv) || DUK_TVAL_IS_NULL(tv)) { + return 0; + } + + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); + + fail_over_2g: + DUK_ERROR_RANGE_INVALID_LENGTH(thr); + DUK_WO_NORETURN(return 0;); +} + +/* + * Error throwing + */ + +#if defined(DUK_USE_GCC_PRAGMAS) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn" +#elif defined(DUK_USE_CLANG_PRAGMAS) +#pragma clang diagnostic push +#endif + +DUK_EXTERNAL void duk_throw_raw(duk_hthread *thr) { + duk_tval *tv_val; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr->valstack_bottom >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + + if (DUK_UNLIKELY(thr->valstack_top == thr->valstack_bottom)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return;); + } + + /* Errors are augmented when they are created, not when they are + * thrown or re-thrown. The current error handler, however, runs + * just before an error is thrown. + */ + + /* Sync so that augmentation sees up-to-date activations, NULL + * thr->ptr_curr_pc so that it's not used if side effects occur + * in augmentation or longjmp handling. + */ + duk_hthread_sync_and_null_currpc(thr); + +#if defined(DUK_USE_AUGMENT_ERROR_THROW) + DUK_DDD(DUK_DDDPRINT("THROW ERROR (API): %!dT (before throw augment)", (duk_tval *) duk_get_tval(thr, -1))); + duk_err_augment_error_throw(thr); +#endif + DUK_DDD(DUK_DDDPRINT("THROW ERROR (API): %!dT (after throw augment)", (duk_tval *) duk_get_tval(thr, -1))); + + tv_val = DUK_GET_TVAL_NEGIDX(thr, -1); + duk_err_setup_ljstate1(thr, DUK_LJ_TYPE_THROW, tv_val); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_err_check_debugger_integration(thr); +#endif + + /* thr->heap->lj.jmpbuf_ptr is checked by duk_err_longjmp() so we don't + * need to check that here. If the value is NULL, a fatal error occurs + * because we can't return. + */ + + duk_err_longjmp(thr); + DUK_UNREACHABLE(); +} + +DUK_EXTERNAL void duk_fatal_raw(duk_hthread *thr, const char *err_msg) { + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(thr->heap->fatal_func != NULL); + + DUK_D(DUK_DPRINT("fatal error occurred: %s", err_msg ? err_msg : "NULL")); + + /* fatal_func should be noreturn, but noreturn declarations on function + * pointers has a very spotty support apparently so it's not currently + * done. + */ + thr->heap->fatal_func(thr->heap->heap_udata, err_msg); + + /* If the fatal handler returns, all bets are off. It'd be nice to + * print something here but since we don't want to depend on stdio, + * there's no way to do so portably. + */ + DUK_D(DUK_DPRINT("fatal error handler returned, all bets are off!")); + for (;;) { + /* loop forever, don't return (function marked noreturn) */ + } +} + +DUK_EXTERNAL void duk_error_va_raw(duk_hthread *thr, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, va_list ap) { + DUK_ASSERT_API_ENTRY(thr); + + duk_push_error_object_va_raw(thr, err_code, filename, line, fmt, ap); + (void) duk_throw(thr); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_error_raw(duk_hthread *thr, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...) { + va_list ap; + + DUK_ASSERT_API_ENTRY(thr); + + va_start(ap, fmt); + duk_push_error_object_va_raw(thr, err_code, filename, line, fmt, ap); + va_end(ap); + (void) duk_throw(thr); + DUK_WO_NORETURN(return;); +} + +#if defined(DUK_USE_GCC_PRAGMAS) +#pragma GCC diagnostic pop +#elif defined(DUK_USE_CLANG_PRAGMAS) +#pragma clang diagnostic pop +#endif + +#if !defined(DUK_USE_VARIADIC_MACROS) +DUK_NORETURN(DUK_LOCAL_DECL void duk__throw_error_from_stash(duk_hthread *thr, duk_errcode_t err_code, const char *fmt, va_list ap)); + +DUK_LOCAL void duk__throw_error_from_stash(duk_hthread *thr, duk_errcode_t err_code, const char *fmt, va_list ap) { + const char *filename; + duk_int_t line; + + DUK_CTX_ASSERT_VALID(thr); + + filename = duk_api_global_filename; + line = duk_api_global_line; + duk_api_global_filename = NULL; + duk_api_global_line = 0; + + duk_push_error_object_va_raw(thr, err_code, filename, line, fmt, ap); + (void) duk_throw(thr); + DUK_WO_NORETURN(return;); +} + +#define DUK__ERROR_STASH_SHARED(code) do { \ + va_list ap; \ + va_start(ap, fmt); \ + duk__throw_error_from_stash(thr, (code), fmt, ap); \ + va_end(ap); \ + DUK_WO_NORETURN(return 0;); \ + } while (0) + +DUK_EXTERNAL duk_ret_t duk_error_stash(duk_hthread *thr, duk_errcode_t err_code, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(err_code); +} +DUK_EXTERNAL duk_ret_t duk_generic_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_ERROR); +} +DUK_EXTERNAL duk_ret_t duk_eval_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_EVAL_ERROR); +} +DUK_EXTERNAL duk_ret_t duk_range_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_RANGE_ERROR); +} +DUK_EXTERNAL duk_ret_t duk_reference_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_REFERENCE_ERROR); +} +DUK_EXTERNAL duk_ret_t duk_syntax_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_SYNTAX_ERROR); +} +DUK_EXTERNAL duk_ret_t duk_type_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_TYPE_ERROR); +} +DUK_EXTERNAL duk_ret_t duk_uri_error_stash(duk_hthread *thr, const char *fmt, ...) { + DUK_ASSERT_API_ENTRY(thr); + DUK__ERROR_STASH_SHARED(DUK_ERR_URI_ERROR); +} +#endif /* DUK_USE_VARIADIC_MACROS */ + +/* + * Comparison + */ + +DUK_EXTERNAL duk_bool_t duk_equals(duk_hthread *thr, duk_idx_t idx1, duk_idx_t idx2) { + duk_tval *tv1, *tv2; + + DUK_ASSERT_API_ENTRY(thr); + + tv1 = duk_get_tval(thr, idx1); + tv2 = duk_get_tval(thr, idx2); + if ((tv1 == NULL) || (tv2 == NULL)) { + return 0; + } + + /* Coercion may be needed, the helper handles that by pushing the + * tagged values to the stack. + */ + return duk_js_equals(thr, tv1, tv2); +} + +DUK_EXTERNAL duk_bool_t duk_strict_equals(duk_hthread *thr, duk_idx_t idx1, duk_idx_t idx2) { + duk_tval *tv1, *tv2; + + DUK_ASSERT_API_ENTRY(thr); + + tv1 = duk_get_tval(thr, idx1); + tv2 = duk_get_tval(thr, idx2); + if ((tv1 == NULL) || (tv2 == NULL)) { + return 0; + } + + /* No coercions or other side effects, so safe */ + return duk_js_strict_equals(tv1, tv2); +} + +DUK_EXTERNAL duk_bool_t duk_samevalue(duk_hthread *thr, duk_idx_t idx1, duk_idx_t idx2) { + duk_tval *tv1, *tv2; + + DUK_ASSERT_API_ENTRY(thr); + + tv1 = duk_get_tval(thr, idx1); + tv2 = duk_get_tval(thr, idx2); + if ((tv1 == NULL) || (tv2 == NULL)) { + return 0; + } + + /* No coercions or other side effects, so safe */ + return duk_js_samevalue(tv1, tv2); +} + +/* + * instanceof + */ + +DUK_EXTERNAL duk_bool_t duk_instanceof(duk_hthread *thr, duk_idx_t idx1, duk_idx_t idx2) { + duk_tval *tv1, *tv2; + + DUK_ASSERT_API_ENTRY(thr); + + /* Index validation is strict, which differs from duk_equals(). + * The strict behavior mimics how instanceof itself works, e.g. + * it is a TypeError if rval is not a -callable- object. It would + * be somewhat inconsistent if rval would be allowed to be + * non-existent without a TypeError. + */ + tv1 = duk_require_tval(thr, idx1); + DUK_ASSERT(tv1 != NULL); + tv2 = duk_require_tval(thr, idx2); + DUK_ASSERT(tv2 != NULL); + + return duk_js_instanceof(thr, tv1, tv2); +} + +/* + * Lightfunc + */ + +DUK_INTERNAL void duk_push_lightfunc_name_raw(duk_hthread *thr, duk_c_function func, duk_small_uint_t lf_flags) { + /* Lightfunc name, includes Duktape/C native function pointer, which + * can often be used to locate the function from a symbol table. + * The name also includes the 16-bit duk_tval flags field because it + * includes the magic value. Because a single native function often + * provides different functionality depending on the magic value, it + * seems reasonably to include it in the name. + * + * On the other hand, a complicated name increases string table + * pressure in low memory environments (but only when function name + * is accessed). + */ + + DUK_ASSERT_API_ENTRY(thr); + + duk_push_literal(thr, "light_"); + duk_push_string_funcptr(thr, (duk_uint8_t *) &func, sizeof(func)); + duk_push_sprintf(thr, "_%04x", (unsigned int) lf_flags); + duk_concat(thr, 3); +} + +DUK_INTERNAL void duk_push_lightfunc_name(duk_hthread *thr, duk_tval *tv) { + duk_c_function func; + duk_small_uint_t lf_flags; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(tv)); + + DUK_TVAL_GET_LIGHTFUNC(tv, func, lf_flags); + duk_push_lightfunc_name_raw(thr, func, lf_flags); +} + +DUK_INTERNAL void duk_push_lightfunc_tostring(duk_hthread *thr, duk_tval *tv) { + duk_c_function func; + duk_small_uint_t lf_flags; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(tv)); + + DUK_TVAL_GET_LIGHTFUNC(tv, func, lf_flags); /* read before 'tv' potentially invalidated */ + duk_push_literal(thr, "function "); + duk_push_lightfunc_name_raw(thr, func, lf_flags); + duk_push_literal(thr, "() { [lightfunc code] }"); + duk_concat(thr, 3); +} + +/* + * Function pointers + * + * Printing function pointers is non-portable, so we do that by hex printing + * bytes from memory. + */ + +DUK_INTERNAL void duk_push_string_funcptr(duk_hthread *thr, duk_uint8_t *ptr, duk_size_t sz) { + duk_uint8_t buf[32 * 2]; + duk_uint8_t *p, *q; + duk_small_uint_t i; + duk_small_uint_t t; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(sz <= 32); /* sanity limit for function pointer size */ + + p = buf; +#if defined(DUK_USE_INTEGER_LE) + q = ptr + sz; +#else + q = ptr; +#endif + for (i = 0; i < sz; i++) { +#if defined(DUK_USE_INTEGER_LE) + t = *(--q); +#else + t = *(q++); +#endif + *p++ = duk_lc_digits[t >> 4]; + *p++ = duk_lc_digits[t & 0x0f]; + } + + duk_push_lstring(thr, (const char *) buf, sz * 2); +} + +/* + * Push readable string summarizing duk_tval. The operation is side effect + * free and will only throw from internal errors (e.g. out of memory). + * This is used by e.g. property access code to summarize a key/base safely, + * and is not intended to be fast (but small and safe). + */ + +/* String limits for summary strings. */ +#define DUK__READABLE_SUMMARY_MAXCHARS 96 /* maximum supported by helper */ +#define DUK__READABLE_STRING_MAXCHARS 32 /* for strings/symbols */ +#define DUK__READABLE_ERRMSG_MAXCHARS 96 /* for error messages */ + +/* String sanitizer which escapes ASCII control characters and a few other + * ASCII characters, passes Unicode as is, and replaces invalid UTF-8 with + * question marks. No errors are thrown for any input string, except in out + * of memory situations. + */ +DUK_LOCAL void duk__push_hstring_readable_unicode(duk_hthread *thr, duk_hstring *h_input, duk_small_uint_t maxchars) { + const duk_uint8_t *p, *p_start, *p_end; + duk_uint8_t buf[DUK_UNICODE_MAX_XUTF8_LENGTH * DUK__READABLE_SUMMARY_MAXCHARS + + 2 /*quotes*/ + 3 /*periods*/]; + duk_uint8_t *q; + duk_ucodepoint_t cp; + duk_small_uint_t nchars; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(h_input != NULL); + DUK_ASSERT(maxchars <= DUK__READABLE_SUMMARY_MAXCHARS); + + p_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_input); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_input); + p = p_start; + q = buf; + + nchars = 0; + *q++ = (duk_uint8_t) DUK_ASC_SINGLEQUOTE; + for (;;) { + if (p >= p_end) { + break; + } + if (nchars == maxchars) { + *q++ = (duk_uint8_t) DUK_ASC_PERIOD; + *q++ = (duk_uint8_t) DUK_ASC_PERIOD; + *q++ = (duk_uint8_t) DUK_ASC_PERIOD; + break; + } + if (duk_unicode_decode_xutf8(thr, &p, p_start, p_end, &cp)) { + if (cp < 0x20 || cp == 0x7f || cp == DUK_ASC_SINGLEQUOTE || cp == DUK_ASC_BACKSLASH) { + DUK_ASSERT(DUK_UNICODE_MAX_XUTF8_LENGTH >= 4); /* estimate is valid */ + DUK_ASSERT((cp >> 4) <= 0x0f); + *q++ = (duk_uint8_t) DUK_ASC_BACKSLASH; + *q++ = (duk_uint8_t) DUK_ASC_LC_X; + *q++ = (duk_uint8_t) duk_lc_digits[cp >> 4]; + *q++ = (duk_uint8_t) duk_lc_digits[cp & 0x0f]; + } else { + q += duk_unicode_encode_xutf8(cp, q); + } + } else { + p++; /* advance manually */ + *q++ = (duk_uint8_t) DUK_ASC_QUESTION; + } + nchars++; + } + *q++ = (duk_uint8_t) DUK_ASC_SINGLEQUOTE; + + duk_push_lstring(thr, (const char *) buf, (duk_size_t) (q - buf)); +} + +DUK_LOCAL const char *duk__push_string_tval_readable(duk_hthread *thr, duk_tval *tv, duk_bool_t error_aware) { + DUK_CTX_ASSERT_VALID(thr); + /* 'tv' may be NULL */ + + if (tv == NULL) { + duk_push_literal(thr, "none"); + } else { + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_STRING: { + duk_hstring *h = DUK_TVAL_GET_STRING(tv); + if (DUK_HSTRING_HAS_SYMBOL(h)) { + /* XXX: string summary produces question marks + * so this is not very ideal. + */ + duk_push_literal(thr, "[Symbol "); + duk_push_string(thr, duk__get_symbol_type_string(h)); + duk_push_literal(thr, " "); + duk__push_hstring_readable_unicode(thr, h, DUK__READABLE_STRING_MAXCHARS); + duk_push_literal(thr, "]"); + duk_concat(thr, 5); + break; + } + duk__push_hstring_readable_unicode(thr, h, DUK__READABLE_STRING_MAXCHARS); + break; + } + case DUK_TAG_OBJECT: { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + + if (error_aware && + duk_hobject_prototype_chain_contains(thr, h, thr->builtins[DUK_BIDX_ERROR_PROTOTYPE], 1 /*ignore_loop*/)) { + /* Get error message in a side effect free way if + * possible; if not, summarize as a generic object. + * Error message currently gets quoted. + */ + /* XXX: better internal getprop call; get without side effects + * but traverse inheritance chain. + */ + duk_tval *tv_msg; + tv_msg = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, h, DUK_STRIDX_MESSAGE); + if (tv_msg != NULL && DUK_TVAL_IS_STRING(tv_msg)) { + /* It's critical to avoid recursion so + * only summarize a string .message. + */ + duk__push_hstring_readable_unicode(thr, DUK_TVAL_GET_STRING(tv_msg), DUK__READABLE_ERRMSG_MAXCHARS); + break; + } + } + duk_push_class_string_tval(thr, tv, 1 /*avoid_side_effects*/); + break; + } + case DUK_TAG_BUFFER: { + /* While plain buffers mimic Uint8Arrays, they summarize differently. + * This is useful so that the summarized string accurately reflects the + * internal type which may matter for figuring out bugs etc. + */ + /* XXX: Hex encoded, length limited buffer summary here? */ + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h != NULL); + duk_push_sprintf(thr, "[buffer:%ld]", (long) DUK_HBUFFER_GET_SIZE(h)); + break; + } + case DUK_TAG_POINTER: { + /* Surround with parentheses like in JX, ensures NULL pointer + * is distinguishable from null value ("(null)" vs "null"). + */ + duk_push_tval(thr, tv); + duk_push_sprintf(thr, "(%s)", duk_to_string(thr, -1)); + duk_remove_m2(thr); + break; + } + default: { + duk_push_tval(thr, tv); + break; + } + } + } + + return duk_to_string(thr, -1); +} +DUK_INTERNAL const char *duk_push_string_tval_readable(duk_hthread *thr, duk_tval *tv) { + DUK_ASSERT_API_ENTRY(thr); + return duk__push_string_tval_readable(thr, tv, 0 /*error_aware*/); +} + +DUK_INTERNAL const char *duk_push_string_readable(duk_hthread *thr, duk_idx_t idx) { + DUK_ASSERT_API_ENTRY(thr); + return duk_push_string_tval_readable(thr, duk_get_tval(thr, idx)); +} + +DUK_INTERNAL const char *duk_push_string_tval_readable_error(duk_hthread *thr, duk_tval *tv) { + DUK_ASSERT_API_ENTRY(thr); + return duk__push_string_tval_readable(thr, tv, 1 /*error_aware*/); +} + +DUK_INTERNAL void duk_push_symbol_descriptive_string(duk_hthread *thr, duk_hstring *h) { + const duk_uint8_t *p; + const duk_uint8_t *p_end; + const duk_uint8_t *q; + + DUK_ASSERT_API_ENTRY(thr); + + /* .toString() */ + duk_push_literal(thr, "Symbol("); + p = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h); + p_end = p + DUK_HSTRING_GET_BYTELEN(h); + DUK_ASSERT(p[0] == 0xff || (p[0] & 0xc0) == 0x80); + p++; + for (q = p; q < p_end; q++) { + if (*q == 0xffU) { + /* Terminate either at end-of-string (but NUL MUST + * be accepted without terminating description) or + * 0xFF, which is used to mark start of unique trailer + * (and cannot occur in CESU-8 / extended UTF-8). + */ + break; + } + } + duk_push_lstring(thr, (const char *) p, (duk_size_t) (q - p)); + duk_push_literal(thr, ")"); + duk_concat(thr, 3); +} + +/* + * Functions + */ + +#if 0 /* not used yet */ +DUK_INTERNAL void duk_push_hnatfunc_name(duk_hthread *thr, duk_hnatfunc *h) { + duk_c_function func; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_NATFUNC((duk_hobject *) h)); + + duk_push_sprintf(thr, "native_"); + func = h->func; + duk_push_string_funcptr(thr, (duk_uint8_t *) &func, sizeof(func)); + duk_push_sprintf(thr, "_%04x_%04x", + (unsigned int) (duk_uint16_t) h->nargs, + (unsigned int) (duk_uint16_t) h->magic); + duk_concat(thr, 3); +} +#endif + +/* + * duk_tval slice copy + */ + +DUK_INTERNAL void duk_copy_tvals_incref(duk_hthread *thr, duk_tval *tv_dst, duk_tval *tv_src, duk_size_t count) { + duk_tval *tv; + + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(thr); + DUK_ASSERT(count * sizeof(duk_tval) >= count); /* no wrap */ + + duk_memcpy_unsafe((void *) tv_dst, (const void *) tv_src, count * sizeof(duk_tval)); + + tv = tv_dst; + while (count-- > 0) { + DUK_TVAL_INCREF(thr, tv); + tv++; + } +} + +/* automatic undefs */ +#undef DUK__ASSERT_SPACE +#undef DUK__CHECK_SPACE +#undef DUK__ERROR_STASH_SHARED +#undef DUK__PACK_ARGS +#undef DUK__READABLE_ERRMSG_MAXCHARS +#undef DUK__READABLE_STRING_MAXCHARS +#undef DUK__READABLE_SUMMARY_MAXCHARS +#line 1 "duk_api_string.c" +/* + * String manipulation + */ + +/* #include duk_internal.h -> already included */ + +DUK_LOCAL void duk__concat_and_join_helper(duk_hthread *thr, duk_idx_t count_in, duk_bool_t is_join) { + duk_uint_t count; + duk_uint_t i; + duk_size_t idx; + duk_size_t len; + duk_hstring *h; + duk_uint8_t *buf; + + DUK_CTX_ASSERT_VALID(thr); + + if (DUK_UNLIKELY(count_in <= 0)) { + if (count_in < 0) { + DUK_ERROR_RANGE_INVALID_COUNT(thr); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(count_in == 0); + duk_push_hstring_empty(thr); + return; + } + count = (duk_uint_t) count_in; + + if (is_join) { + duk_size_t t1, t2, limit; + h = duk_to_hstring(thr, -((duk_idx_t) count) - 1); + DUK_ASSERT(h != NULL); + + /* A bit tricky overflow test, see doc/code-issues.rst. */ + t1 = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h); + t2 = (duk_size_t) (count - 1); + limit = (duk_size_t) DUK_HSTRING_MAX_BYTELEN; + if (DUK_UNLIKELY(t2 != 0 && t1 > limit / t2)) { + /* Combined size of separators already overflows. */ + goto error_overflow; + } + len = (duk_size_t) (t1 * t2); + } else { + len = (duk_size_t) 0; + } + + for (i = count; i >= 1; i--) { + duk_size_t new_len; + h = duk_to_hstring(thr, -((duk_idx_t) i)); + new_len = len + (duk_size_t) DUK_HSTRING_GET_BYTELEN(h); + + /* Impose a string maximum length, need to handle overflow + * correctly. + */ + if (new_len < len || /* wrapped */ + new_len > (duk_size_t) DUK_HSTRING_MAX_BYTELEN) { + goto error_overflow; + } + len = new_len; + } + + DUK_DDD(DUK_DDDPRINT("join/concat %lu strings, total length %lu bytes", + (unsigned long) count, (unsigned long) len)); + + /* Use stack allocated buffer to ensure reachability in errors + * (e.g. intern error). + */ + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, len); + DUK_ASSERT(buf != NULL); + + /* [ ... (sep) str1 str2 ... strN buf ] */ + + idx = 0; + for (i = count; i >= 1; i--) { + if (is_join && i != count) { + h = duk_require_hstring(thr, -((duk_idx_t) count) - 2); /* extra -1 for buffer */ + duk_memcpy(buf + idx, DUK_HSTRING_GET_DATA(h), DUK_HSTRING_GET_BYTELEN(h)); + idx += DUK_HSTRING_GET_BYTELEN(h); + } + h = duk_require_hstring(thr, -((duk_idx_t) i) - 1); /* extra -1 for buffer */ + duk_memcpy(buf + idx, DUK_HSTRING_GET_DATA(h), DUK_HSTRING_GET_BYTELEN(h)); + idx += DUK_HSTRING_GET_BYTELEN(h); + } + + DUK_ASSERT(idx == len); + + /* [ ... (sep) str1 str2 ... strN buf ] */ + + /* Get rid of the strings early to minimize memory use before intern. */ + + if (is_join) { + duk_replace(thr, -((duk_idx_t) count) - 2); /* overwrite sep */ + duk_pop_n(thr, (duk_idx_t) count); + } else { + duk_replace(thr, -((duk_idx_t) count) - 1); /* overwrite str1 */ + duk_pop_n(thr, (duk_idx_t) (count - 1)); + } + + /* [ ... buf ] */ + + (void) duk_buffer_to_string(thr, -1); /* Safe if inputs are safe. */ + + /* [ ... res ] */ + return; + + error_overflow: + DUK_ERROR_RANGE(thr, DUK_STR_RESULT_TOO_LONG); + DUK_WO_NORETURN(return;); +} + +DUK_EXTERNAL void duk_concat(duk_hthread *thr, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + + duk__concat_and_join_helper(thr, count, 0 /*is_join*/); +} + +#if defined(DUK_USE_PREFER_SIZE) +DUK_INTERNAL void duk_concat_2(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + duk_concat(thr, 2); +} +#else /* DUK_USE_PREFER_SIZE */ +DUK_INTERNAL void duk_concat_2(duk_hthread *thr) { + duk_hstring *h1; + duk_hstring *h2; + duk_uint8_t *buf; + duk_size_t len1; + duk_size_t len2; + duk_size_t len; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(duk_get_top(thr) >= 2); /* Trusted caller. */ + + h1 = duk_to_hstring(thr, -2); + h2 = duk_to_hstring(thr, -1); + len1 = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h1); + len2 = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h2); + len = len1 + len2; + if (DUK_UNLIKELY(len < len1 || /* wrapped */ + len > (duk_size_t) DUK_HSTRING_MAX_BYTELEN)) { + goto error_overflow; + } + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, len); + DUK_ASSERT(buf != NULL); + + duk_memcpy((void *) buf, (const void *) DUK_HSTRING_GET_DATA(h1), (size_t) len1); + duk_memcpy((void *) (buf + len1), (const void *) DUK_HSTRING_GET_DATA(h2), (size_t) len2); + (void) duk_buffer_to_string(thr, -1); /* Safe if inputs are safe. */ + + /* [ ... str1 str2 buf ] */ + + duk_replace(thr, -3); + duk_pop_unsafe(thr); + return; + + error_overflow: + DUK_ERROR_RANGE(thr, DUK_STR_RESULT_TOO_LONG); + DUK_WO_NORETURN(return;); +} +#endif /* DUK_USE_PREFER_SIZE */ + +DUK_EXTERNAL void duk_join(duk_hthread *thr, duk_idx_t count) { + DUK_ASSERT_API_ENTRY(thr); + + duk__concat_and_join_helper(thr, count, 1 /*is_join*/); +} + +/* XXX: could map/decode be unified with duk_unicode_support.c code? + * Case conversion needs also the character surroundings though. + */ + +DUK_EXTERNAL void duk_decode_string(duk_hthread *thr, duk_idx_t idx, duk_decode_char_function callback, void *udata) { + duk_hstring *h_input; + const duk_uint8_t *p, *p_start, *p_end; + duk_codepoint_t cp; + + DUK_ASSERT_API_ENTRY(thr); + + h_input = duk_require_hstring(thr, idx); /* Accept symbols. */ + DUK_ASSERT(h_input != NULL); + + p_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_input); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_input); + p = p_start; + + for (;;) { + if (p >= p_end) { + break; + } + cp = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(thr, &p, p_start, p_end); + callback(udata, cp); + } +} + +DUK_EXTERNAL void duk_map_string(duk_hthread *thr, duk_idx_t idx, duk_map_char_function callback, void *udata) { + duk_hstring *h_input; + duk_bufwriter_ctx bw_alloc; + duk_bufwriter_ctx *bw; + const duk_uint8_t *p, *p_start, *p_end; + duk_codepoint_t cp; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_normalize_index(thr, idx); + + h_input = duk_require_hstring(thr, idx); /* Accept symbols. */ + DUK_ASSERT(h_input != NULL); + + bw = &bw_alloc; + DUK_BW_INIT_PUSHBUF(thr, bw, DUK_HSTRING_GET_BYTELEN(h_input)); /* Reasonable output estimate. */ + + p_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_input); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_input); + p = p_start; + + for (;;) { + /* XXX: could write output in chunks with fewer ensure calls, + * but relative benefit would be small here. + */ + + if (p >= p_end) { + break; + } + cp = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(thr, &p, p_start, p_end); + cp = callback(udata, cp); + + DUK_BW_WRITE_ENSURE_XUTF8(thr, bw, cp); + } + + DUK_BW_COMPACT(thr, bw); + (void) duk_buffer_to_string(thr, -1); /* Safe, extended UTF-8 encoded. */ + duk_replace(thr, idx); +} + +DUK_EXTERNAL void duk_substring(duk_hthread *thr, duk_idx_t idx, duk_size_t start_offset, duk_size_t end_offset) { + duk_hstring *h; + duk_hstring *res; + duk_size_t start_byte_offset; + duk_size_t end_byte_offset; + duk_size_t charlen; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); /* Accept symbols. */ + h = duk_require_hstring(thr, idx); + DUK_ASSERT(h != NULL); + + charlen = DUK_HSTRING_GET_CHARLEN(h); + if (end_offset >= charlen) { + end_offset = charlen; + } + if (start_offset > end_offset) { + start_offset = end_offset; + } + + DUK_ASSERT_DISABLE(start_offset >= 0); + DUK_ASSERT(start_offset <= end_offset && start_offset <= DUK_HSTRING_GET_CHARLEN(h)); + DUK_ASSERT_DISABLE(end_offset >= 0); + DUK_ASSERT(end_offset >= start_offset && end_offset <= DUK_HSTRING_GET_CHARLEN(h)); + + /* Guaranteed by string limits. */ + DUK_ASSERT(start_offset <= DUK_UINT32_MAX); + DUK_ASSERT(end_offset <= DUK_UINT32_MAX); + + start_byte_offset = (duk_size_t) duk_heap_strcache_offset_char2byte(thr, h, (duk_uint_fast32_t) start_offset); + end_byte_offset = (duk_size_t) duk_heap_strcache_offset_char2byte(thr, h, (duk_uint_fast32_t) end_offset); + + DUK_ASSERT(end_byte_offset >= start_byte_offset); + DUK_ASSERT(end_byte_offset - start_byte_offset <= DUK_UINT32_MAX); /* Guaranteed by string limits. */ + + /* No size check is necessary. */ + res = duk_heap_strtable_intern_checked(thr, + DUK_HSTRING_GET_DATA(h) + start_byte_offset, + (duk_uint32_t) (end_byte_offset - start_byte_offset)); + + duk_push_hstring(thr, res); + duk_replace(thr, idx); +} + +/* XXX: this is quite clunky. Add Unicode helpers to scan backwards and + * forwards with a callback to process codepoints? + */ +DUK_EXTERNAL void duk_trim(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + const duk_uint8_t *p, *p_start, *p_end, *p_tmp1, *p_tmp2; /* pointers for scanning */ + const duk_uint8_t *q_start, *q_end; /* start (incl) and end (excl) of trimmed part */ + duk_codepoint_t cp; + + DUK_ASSERT_API_ENTRY(thr); + + idx = duk_require_normalize_index(thr, idx); /* Accept symbols. */ + h = duk_require_hstring(thr, idx); + DUK_ASSERT(h != NULL); + + p_start = DUK_HSTRING_GET_DATA(h); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h); + + p = p_start; + while (p < p_end) { + p_tmp1 = p; + cp = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(thr, &p_tmp1, p_start, p_end); + if (!(duk_unicode_is_whitespace(cp) || duk_unicode_is_line_terminator(cp))) { + break; + } + p = p_tmp1; + } + q_start = p; + if (p == p_end) { + /* Entire string is whitespace. */ + q_end = p; + goto scan_done; + } + + p = p_end; + while (p > p_start) { + p_tmp1 = p; + while (p > p_start) { + p--; + if (((*p) & 0xc0) != 0x80) { + break; + } + } + p_tmp2 = p; + + cp = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(thr, &p_tmp2, p_start, p_end); + if (!(duk_unicode_is_whitespace(cp) || duk_unicode_is_line_terminator(cp))) { + p = p_tmp1; + break; + } + } + q_end = p; + + scan_done: + /* This may happen when forward and backward scanning disagree + * (possible for non-extended-UTF-8 strings). + */ + if (q_end < q_start) { + q_end = q_start; + } + + DUK_ASSERT(q_start >= p_start && q_start <= p_end); + DUK_ASSERT(q_end >= p_start && q_end <= p_end); + DUK_ASSERT(q_end >= q_start); + + DUK_DDD(DUK_DDDPRINT("trim: p_start=%p, p_end=%p, q_start=%p, q_end=%p", + (const void *) p_start, (const void *) p_end, + (const void *) q_start, (const void *) q_end)); + + if (q_start == p_start && q_end == p_end) { + DUK_DDD(DUK_DDDPRINT("nothing was trimmed: avoid interning (hashing etc)")); + return; + } + + duk_push_lstring(thr, (const char *) q_start, (duk_size_t) (q_end - q_start)); + duk_replace(thr, idx); +} + +DUK_EXTERNAL duk_codepoint_t duk_char_code_at(duk_hthread *thr, duk_idx_t idx, duk_size_t char_offset) { + duk_hstring *h; + duk_ucodepoint_t cp; + + DUK_ASSERT_API_ENTRY(thr); + + /* XXX: Share code with String.prototype.charCodeAt? Main difference + * is handling of clamped offsets. + */ + + h = duk_require_hstring(thr, idx); /* Accept symbols. */ + DUK_ASSERT(h != NULL); + + DUK_ASSERT_DISABLE(char_offset >= 0); /* Always true, arg is unsigned. */ + if (char_offset >= DUK_HSTRING_GET_CHARLEN(h)) { + return 0; + } + + DUK_ASSERT(char_offset <= DUK_UINT_MAX); /* Guaranteed by string limits. */ + cp = duk_hstring_char_code_at_raw(thr, h, (duk_uint_t) char_offset, 0 /*surrogate_aware*/); + return (duk_codepoint_t) cp; +} +#line 1 "duk_api_time.c" +/* + * Date/time. + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL duk_double_t duk_time_get_ecmascript_time(duk_hthread *thr) { + /* ECMAScript time, with millisecond fractions. Exposed via + * duk_get_now() for example. + */ + DUK_UNREF(thr); + return (duk_double_t) DUK_USE_DATE_GET_NOW(thr); +} + +DUK_INTERNAL duk_double_t duk_time_get_ecmascript_time_nofrac(duk_hthread *thr) { + /* ECMAScript time without millisecond fractions. Exposed via + * the Date built-in which doesn't allow fractions. + */ + DUK_UNREF(thr); + return (duk_double_t) DUK_FLOOR(DUK_USE_DATE_GET_NOW(thr)); +} + +DUK_INTERNAL duk_double_t duk_time_get_monotonic_time(duk_hthread *thr) { + DUK_UNREF(thr); +#if defined(DUK_USE_GET_MONOTONIC_TIME) + return (duk_double_t) DUK_USE_GET_MONOTONIC_TIME(thr); +#else + return (duk_double_t) DUK_USE_DATE_GET_NOW(thr); +#endif +} + +DUK_EXTERNAL duk_double_t duk_get_now(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(thr); + + /* This API intentionally allows millisecond fractions. */ + return duk_time_get_ecmascript_time(thr); +} + +#if 0 /* XXX: worth exposing? */ +DUK_EXTERNAL duk_double_t duk_get_monotonic_time(duk_hthread *thr) { + DUK_ASSERT_API_ENTRY(thr); + DUK_UNREF(thr); + + return duk_time_get_monotonic_time(thr); +} +#endif + +DUK_EXTERNAL void duk_time_to_components(duk_hthread *thr, duk_double_t timeval, duk_time_components *comp) { + duk_int_t parts[DUK_DATE_IDX_NUM_PARTS]; + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + duk_uint_t flags; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(comp != NULL); /* XXX: or check? */ + DUK_UNREF(thr); + + /* Convert as one-based, but change month to zero-based to match the + * ECMAScript Date built-in behavior 1:1. + */ + flags = DUK_DATE_FLAG_ONEBASED | DUK_DATE_FLAG_NAN_TO_ZERO; + + duk_bi_date_timeval_to_parts(timeval, parts, dparts, flags); + + /* XXX: sub-millisecond accuracy for the API */ + + DUK_ASSERT(dparts[DUK_DATE_IDX_MONTH] >= 1.0 && dparts[DUK_DATE_IDX_MONTH] <= 12.0); + comp->year = dparts[DUK_DATE_IDX_YEAR]; + comp->month = dparts[DUK_DATE_IDX_MONTH] - 1.0; + comp->day = dparts[DUK_DATE_IDX_DAY]; + comp->hours = dparts[DUK_DATE_IDX_HOUR]; + comp->minutes = dparts[DUK_DATE_IDX_MINUTE]; + comp->seconds = dparts[DUK_DATE_IDX_SECOND]; + comp->milliseconds = dparts[DUK_DATE_IDX_MILLISECOND]; + comp->weekday = dparts[DUK_DATE_IDX_WEEKDAY]; +} + +DUK_EXTERNAL duk_double_t duk_components_to_time(duk_hthread *thr, duk_time_components *comp) { + duk_double_t d; + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + duk_uint_t flags; + + DUK_ASSERT_API_ENTRY(thr); + DUK_ASSERT(comp != NULL); /* XXX: or check? */ + DUK_UNREF(thr); + + /* Match Date constructor behavior (with UTC time). Month is given + * as zero-based. Day-of-month is given as one-based so normalize + * it to zero-based as the internal conversion helpers expects all + * components to be zero-based. + */ + flags = 0; + + /* XXX: expensive conversion; use array format in API instead, or unify + * time provider and time API to use same struct? + */ + + dparts[DUK_DATE_IDX_YEAR] = comp->year; + dparts[DUK_DATE_IDX_MONTH] = comp->month; + dparts[DUK_DATE_IDX_DAY] = comp->day - 1.0; + dparts[DUK_DATE_IDX_HOUR] = comp->hours; + dparts[DUK_DATE_IDX_MINUTE] = comp->minutes; + dparts[DUK_DATE_IDX_SECOND] = comp->seconds; + dparts[DUK_DATE_IDX_MILLISECOND] = comp->milliseconds; + dparts[DUK_DATE_IDX_WEEKDAY] = 0; /* ignored */ + + d = duk_bi_date_get_timeval_from_dparts(dparts, flags); + + return d; +} +#line 1 "duk_bi_array.c" +/* + * Array built-ins + * + * Most Array built-ins are intentionally generic in ECMAScript, and are + * intended to work even when the 'this' binding is not an Array instance. + * This ECMAScript feature is also used by much real world code. For this + * reason the implementations here don't assume exotic Array behavior or + * e.g. presence of a .length property. However, some algorithms have a + * fast path for duk_harray backed actual Array instances, enabled when + * footprint is not a concern. + * + * XXX: the "Throw" flag should be set for (almost?) all [[Put]] and + * [[Delete]] operations, but it's currently false throughout. Go through + * all put/delete cases and check throw flag use. Need a new API primitive + * which allows throws flag to be specified. + * + * XXX: array lengths above 2G won't work reliably. There are many places + * where one needs a full signed 32-bit range ([-0xffffffff, 0xffffffff], + * i.e. -33- bits). Although array 'length' cannot be written to be outside + * the unsigned 32-bit range (E5.1 Section 15.4.5.1 throws a RangeError if so) + * some intermediate values may be above 0xffffffff and this may not be always + * correctly handled now (duk_uint32_t is not enough for all algorithms). + * For instance, push() can legitimately write entries beyond length 0xffffffff + * and cause a RangeError only at the end. To do this properly, the current + * push() implementation tracks the array index using a 'double' instead of a + * duk_uint32_t (which is somewhat awkward). See test-bi-array-push-maxlen.js. + * + * On using "put" vs. "def" prop + * ============================= + * + * Code below must be careful to use the appropriate primitive as it matters + * for compliance. When using "put" there may be inherited properties in + * Array.prototype which cause side effects when values are written. When + * using "define" there are no such side effects, and many test262 test cases + * check for this (for real world code, such side effects are very rare). + * Both "put" and "define" are used in the E5.1 specification; as a rule, + * "put" is used when modifying an existing array (or a non-array 'this' + * binding) and "define" for setting values into a fresh result array. + */ + +/* #include duk_internal.h -> already included */ + +/* Perform an intermediate join when this many elements have been pushed + * on the value stack. + */ +#define DUK__ARRAY_MID_JOIN_LIMIT 4096 + +#if defined(DUK_USE_ARRAY_BUILTIN) + +/* + * Shared helpers. + */ + +/* Shared entry code for many Array built-ins: the 'this' binding is pushed + * on the value stack and object coerced, and the current .length is returned. + * Note that length is left on stack (it could be popped, but that's not + * usually necessary because call handling will clean it up automatically). + */ +DUK_LOCAL duk_uint32_t duk__push_this_obj_len_u32(duk_hthread *thr) { + duk_uint32_t len; + + /* XXX: push more directly? */ + (void) duk_push_this_coercible_to_object(thr); + DUK_HOBJECT_ASSERT_VALID(duk_get_hobject(thr, -1)); + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_LENGTH); + len = duk_to_uint32(thr, -1); + + /* -> [ ... ToObject(this) ToUint32(length) ] */ + return len; +} + +DUK_LOCAL duk_uint32_t duk__push_this_obj_len_u32_limited(duk_hthread *thr) { + /* Range limited to [0, 0x7fffffff] range, i.e. range that can be + * represented with duk_int32_t. Use this when the method doesn't + * handle the full 32-bit unsigned range correctly. + */ + duk_uint32_t ret = duk__push_this_obj_len_u32(thr); + if (DUK_UNLIKELY(ret >= 0x80000000UL)) { + DUK_ERROR_RANGE_INVALID_LENGTH(thr); + DUK_WO_NORETURN(return 0U;); + } + return ret; +} + +#if defined(DUK_USE_ARRAY_FASTPATH) +/* Check if 'this' binding is an Array instance (duk_harray) which satisfies + * a few other guarantees for fast path operation. The fast path doesn't + * need to handle all operations, even for duk_harrays, but must handle a + * significant fraction to improve performance. Return a non-NULL duk_harray + * pointer when all fast path criteria are met, NULL otherwise. + */ +DUK_LOCAL duk_harray *duk__arraypart_fastpath_this(duk_hthread *thr) { + duk_tval *tv; + duk_hobject *h; + duk_uint_t flags_mask, flags_bits, flags_value; + + DUK_ASSERT(thr->valstack_bottom > thr->valstack); /* because call in progress */ + tv = DUK_GET_THIS_TVAL_PTR(thr); + + /* Fast path requires that 'this' is a duk_harray. Read only arrays + * (ROM backed) are also rejected for simplicity. + */ + if (!DUK_TVAL_IS_OBJECT(tv)) { + DUK_DD(DUK_DDPRINT("reject array fast path: not an object")); + return NULL; + } + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + flags_mask = DUK_HOBJECT_FLAG_ARRAY_PART | \ + DUK_HOBJECT_FLAG_EXOTIC_ARRAY | \ + DUK_HEAPHDR_FLAG_READONLY; + flags_bits = DUK_HOBJECT_FLAG_ARRAY_PART | \ + DUK_HOBJECT_FLAG_EXOTIC_ARRAY; + flags_value = DUK_HEAPHDR_GET_FLAGS_RAW((duk_heaphdr *) h); + if ((flags_value & flags_mask) != flags_bits) { + DUK_DD(DUK_DDPRINT("reject array fast path: object flag check failed")); + return NULL; + } + + /* In some cases a duk_harray's 'length' may be larger than the + * current array part allocation. Avoid the fast path in these + * cases, so that all fast path code can safely assume that all + * items in the range [0,length[ are backed by the current array + * part allocation. + */ + if (((duk_harray *) h)->length > DUK_HOBJECT_GET_ASIZE(h)) { + DUK_DD(DUK_DDPRINT("reject array fast path: length > array part size")); + return NULL; + } + + /* Guarantees for fast path. */ + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_ASIZE(h) == 0 || DUK_HOBJECT_A_GET_BASE(thr->heap, h) != NULL); + DUK_ASSERT(((duk_harray *) h)->length <= DUK_HOBJECT_GET_ASIZE(h)); + + DUK_DD(DUK_DDPRINT("array fast path allowed for: %!O", (duk_heaphdr *) h)); + return (duk_harray *) h; +} +#endif /* DUK_USE_ARRAY_FASTPATH */ + +/* + * Constructor + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_constructor(duk_hthread *thr) { + duk_idx_t nargs; + duk_harray *a; + duk_double_t d; + duk_uint32_t len; + duk_uint32_t len_prealloc; + + nargs = duk_get_top(thr); + + if (nargs == 1 && duk_is_number(thr, 0)) { + /* XXX: expensive check (also shared elsewhere - so add a shared internal API call?) */ + d = duk_get_number(thr, 0); + len = duk_to_uint32(thr, 0); + if (!duk_double_equals((duk_double_t) len, d)) { + DUK_DCERROR_RANGE_INVALID_LENGTH(thr); + } + + /* For small lengths create a dense preallocated array. + * For large arrays preallocate an initial part. + */ + len_prealloc = len < 64 ? len : 64; + a = duk_push_harray_with_size(thr, len_prealloc); + DUK_ASSERT(a != NULL); + DUK_ASSERT(!duk_is_bare_object(thr, -1)); + a->length = len; + return 1; + } + + duk_pack(thr, nargs); + return 1; +} + +/* + * isArray() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_constructor_is_array(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 1); + duk_push_boolean(thr, duk_js_isarray(DUK_GET_TVAL_POSIDX(thr, 0))); + return 1; +} + +/* + * toString() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_to_string(duk_hthread *thr) { + (void) duk_push_this_coercible_to_object(thr); + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_JOIN); + + /* [ ... this func ] */ + if (!duk_is_callable(thr, -1)) { + /* Fall back to the initial (original) Object.toString(). We don't + * currently have pointers to the built-in functions, only the top + * level global objects (like "Array") so this is now done in a bit + * of a hacky manner. It would be cleaner to push the (original) + * function and use duk_call_method(). + */ + + /* XXX: 'this' will be ToObject() coerced twice, which is incorrect + * but should have no visible side effects. + */ + DUK_DDD(DUK_DDDPRINT("this.join is not callable, fall back to (original) Object.toString")); + duk_set_top(thr, 0); + return duk_bi_object_prototype_to_string(thr); /* has access to 'this' binding */ + } + + /* [ ... this func ] */ + + duk_insert(thr, -2); + + /* [ ... func this ] */ + + DUK_DDD(DUK_DDDPRINT("calling: func=%!iT, this=%!iT", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + duk_call_method(thr, 0); + + return 1; +} + +/* + * concat() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_concat(duk_hthread *thr) { + duk_idx_t i, n; + duk_uint32_t j, idx, len; + duk_hobject *h; + duk_size_t tmp_len; + + /* XXX: In ES2015 Array .length can be up to 2^53-1. The current + * implementation is limited to 2^32-1. + */ + + /* XXX: Fast path for array 'this' and array element. */ + + /* XXX: The insert here is a bit expensive if there are a lot of items. + * It could also be special cased in the outermost for loop quite easily + * (as the element is dup()'d anyway). + */ + + (void) duk_push_this_coercible_to_object(thr); + duk_insert(thr, 0); + n = duk_get_top(thr); + duk_push_array(thr); /* -> [ ToObject(this) item1 ... itemN arr ] */ + + /* NOTE: The Array special behaviors are NOT invoked by duk_xdef_prop_index() + * (which differs from the official algorithm). If no error is thrown, this + * doesn't matter as the length is updated at the end. However, if an error + * is thrown, the length will be unset. That shouldn't matter because the + * caller won't get a reference to the intermediate value. + */ + + idx = 0; + for (i = 0; i < n; i++) { + duk_bool_t spreadable; + duk_bool_t need_has_check; + + DUK_ASSERT_TOP(thr, n + 1); + + /* [ ToObject(this) item1 ... itemN arr ] */ + + h = duk_get_hobject(thr, i); + + if (h == NULL) { + spreadable = 0; + } else { +#if defined(DUK_USE_SYMBOL_BUILTIN) + duk_get_prop_stridx(thr, i, DUK_STRIDX_WELLKNOWN_SYMBOL_IS_CONCAT_SPREADABLE); + if (duk_is_undefined(thr, -1)) { + spreadable = duk_js_isarray_hobject(h); + } else { + spreadable = duk_to_boolean(thr, -1); + } + duk_pop_nodecref_unsafe(thr); +#else + spreadable = duk_js_isarray_hobject(h); +#endif + } + + if (!spreadable) { + duk_dup(thr, i); + duk_xdef_prop_index_wec(thr, -2, idx); + idx++; + if (DUK_UNLIKELY(idx == 0U)) { + /* Index after update is 0, and index written + * was 0xffffffffUL which is no longer a valid + * array index. + */ + goto fail_wrap; + } + continue; + } + + DUK_ASSERT(duk_is_object(thr, i)); + need_has_check = (DUK_HOBJECT_IS_PROXY(h) != 0); /* Always 0 w/o Proxy support. */ + + /* [ ToObject(this) item1 ... itemN arr ] */ + + tmp_len = duk_get_length(thr, i); + len = (duk_uint32_t) tmp_len; + if (DUK_UNLIKELY(tmp_len != (duk_size_t) len)) { + goto fail_wrap; + } + if (DUK_UNLIKELY(idx + len < idx)) { + /* Result length must be at most 0xffffffffUL to be + * a valid 32-bit array index. + */ + goto fail_wrap; + } + for (j = 0; j < len; j++) { + /* For a Proxy element, an explicit 'has' check is + * needed to allow the Proxy to present gaps. + */ + if (need_has_check) { + if (duk_has_prop_index(thr, i, j)) { + duk_get_prop_index(thr, i, j); + duk_xdef_prop_index_wec(thr, -2, idx); + } + } else { + if (duk_get_prop_index(thr, i, j)) { + duk_xdef_prop_index_wec(thr, -2, idx); + } else { + duk_pop_undefined(thr); + } + } + idx++; + DUK_ASSERT(idx != 0U); /* Wrap check above. */ + } + } + + /* ES5.1 has a specification "bug" in that nonexistent trailing + * elements don't affect the result .length. Test262 and other + * engines disagree, and the specification bug was fixed in ES2015 + * (see NOTE 1 in https://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.concat). + */ + duk_push_uarridx(thr, idx); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_W); + + DUK_ASSERT_TOP(thr, n + 1); + return 1; + + fail_wrap: + DUK_ERROR_RANGE_INVALID_LENGTH(thr); + DUK_WO_NORETURN(return 0;); +} + +/* + * join(), toLocaleString() + * + * Note: checking valstack is necessary, but only in the per-element loop. + * + * Note: the trivial approach of pushing all the elements on the value stack + * and then calling duk_join() fails when the array contains a large number + * of elements. This problem can't be offloaded to duk_join() because the + * elements to join must be handled here and have special handling. Current + * approach is to do intermediate joins with very large number of elements. + * There is no fancy handling; the prefix gets re-joined multiple times. + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_join_shared(duk_hthread *thr) { + duk_uint32_t len, count; + duk_uint32_t idx; + duk_small_int_t to_locale_string = duk_get_current_magic(thr); + duk_idx_t valstack_required; + + /* For join(), nargs is 1. For toLocaleString(), nargs is 0 and + * setting the top essentially pushes an undefined to the stack, + * thus defaulting to a comma separator. + */ + duk_set_top(thr, 1); + if (duk_is_undefined(thr, 0)) { + duk_pop_undefined(thr); + duk_push_hstring_stridx(thr, DUK_STRIDX_COMMA); + } else { + duk_to_string(thr, 0); + } + + len = duk__push_this_obj_len_u32(thr); + + /* [ sep ToObject(this) len ] */ + + DUK_DDD(DUK_DDDPRINT("sep=%!T, this=%!T, len=%lu", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1), + (unsigned long) len)); + + /* The extra (+4) is tight. */ + valstack_required = (duk_idx_t) ((len >= DUK__ARRAY_MID_JOIN_LIMIT ? + DUK__ARRAY_MID_JOIN_LIMIT : len) + 4); + duk_require_stack(thr, valstack_required); + + duk_dup_0(thr); + + /* [ sep ToObject(this) len sep ] */ + + count = 0; + idx = 0; + for (;;) { + DUK_DDD(DUK_DDDPRINT("join idx=%ld", (long) idx)); + if (count >= DUK__ARRAY_MID_JOIN_LIMIT || /* intermediate join to avoid valstack overflow */ + idx >= len) { /* end of loop (careful with len==0) */ + /* [ sep ToObject(this) len sep str0 ... str(count-1) ] */ + DUK_DDD(DUK_DDDPRINT("mid/final join, count=%ld, idx=%ld, len=%ld", + (long) count, (long) idx, (long) len)); + duk_join(thr, (duk_idx_t) count); /* -> [ sep ToObject(this) len str ] */ + duk_dup_0(thr); /* -> [ sep ToObject(this) len str sep ] */ + duk_insert(thr, -2); /* -> [ sep ToObject(this) len sep str ] */ + count = 1; + } + if (idx >= len) { + /* if true, the stack already contains the final result */ + break; + } + + duk_get_prop_index(thr, 1, (duk_uarridx_t) idx); + if (duk_is_null_or_undefined(thr, -1)) { + duk_pop_nodecref_unsafe(thr); + duk_push_hstring_empty(thr); + } else { + if (to_locale_string) { + duk_to_object(thr, -1); + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_TO_LOCALE_STRING); + duk_insert(thr, -2); /* -> [ ... toLocaleString ToObject(val) ] */ + duk_call_method(thr, 0); + } + duk_to_string(thr, -1); + } + + count++; + idx++; + } + + /* [ sep ToObject(this) len sep result ] */ + + return 1; +} + +/* + * pop(), push() + */ + +#if defined(DUK_USE_ARRAY_FASTPATH) +DUK_LOCAL duk_ret_t duk__array_pop_fastpath(duk_hthread *thr, duk_harray *h_arr) { + duk_tval *tv_arraypart; + duk_tval *tv_val; + duk_uint32_t len; + + tv_arraypart = DUK_HOBJECT_A_GET_BASE(thr->heap, (duk_hobject *) h_arr); + len = h_arr->length; + if (len <= 0) { + /* nop, return undefined */ + return 0; + } + + len--; + h_arr->length = len; + + /* Fast path doesn't check for an index property inherited from + * Array.prototype. This is quite often acceptable; if not, + * disable fast path. + */ + DUK_ASSERT_VS_SPACE(thr); + tv_val = tv_arraypart + len; + if (DUK_TVAL_IS_UNUSED(tv_val)) { + /* No net refcount change. Value stack already has + * 'undefined' based on value stack init policy. + */ + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); + DUK_ASSERT(DUK_TVAL_IS_UNUSED(tv_val)); + } else { + /* No net refcount change. */ + DUK_TVAL_SET_TVAL(thr->valstack_top, tv_val); + DUK_TVAL_SET_UNUSED(tv_val); + } + thr->valstack_top++; + + /* XXX: there's no shrink check in the fast path now */ + + return 1; +} +#endif /* DUK_USE_ARRAY_FASTPATH */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_pop(duk_hthread *thr) { + duk_uint32_t len; + duk_uint32_t idx; +#if defined(DUK_USE_ARRAY_FASTPATH) + duk_harray *h_arr; +#endif + + DUK_ASSERT_TOP(thr, 0); + +#if defined(DUK_USE_ARRAY_FASTPATH) + h_arr = duk__arraypart_fastpath_this(thr); + if (h_arr) { + return duk__array_pop_fastpath(thr, h_arr); + } +#endif + + /* XXX: Merge fastpath check into a related call (push this, coerce length, etc)? */ + + len = duk__push_this_obj_len_u32(thr); + if (len == 0) { + duk_push_int(thr, 0); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LENGTH); + return 0; + } + idx = len - 1; + + duk_get_prop_index(thr, 0, (duk_uarridx_t) idx); + duk_del_prop_index(thr, 0, (duk_uarridx_t) idx); + duk_push_u32(thr, idx); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LENGTH); + return 1; +} + +#if defined(DUK_USE_ARRAY_FASTPATH) +DUK_LOCAL duk_ret_t duk__array_push_fastpath(duk_hthread *thr, duk_harray *h_arr) { + duk_tval *tv_arraypart; + duk_tval *tv_src; + duk_tval *tv_dst; + duk_uint32_t len; + duk_idx_t i, n; + + len = h_arr->length; + tv_arraypart = DUK_HOBJECT_A_GET_BASE(thr->heap, (duk_hobject *) h_arr); + + n = (duk_idx_t) (thr->valstack_top - thr->valstack_bottom); + DUK_ASSERT(n >= 0); + DUK_ASSERT((duk_uint32_t) n <= DUK_UINT32_MAX); + if (DUK_UNLIKELY(len + (duk_uint32_t) n < len)) { + DUK_D(DUK_DPRINT("Array.prototype.push() would go beyond 32-bit length, throw")); + DUK_DCERROR_RANGE_INVALID_LENGTH(thr); /* != 0 return value returned as is by caller */ + } + if (len + (duk_uint32_t) n > DUK_HOBJECT_GET_ASIZE((duk_hobject *) h_arr)) { + /* Array part would need to be extended. Rely on slow path + * for now. + * + * XXX: Rework hobject code a bit and add extend support. + */ + return 0; + } + + tv_src = thr->valstack_bottom; + tv_dst = tv_arraypart + len; + for (i = 0; i < n; i++) { + /* No net refcount change; reset value stack values to + * undefined to satisfy value stack init policy. + */ + DUK_TVAL_SET_TVAL(tv_dst, tv_src); + DUK_TVAL_SET_UNDEFINED(tv_src); + tv_src++; + tv_dst++; + } + thr->valstack_top = thr->valstack_bottom; + len += (duk_uint32_t) n; + h_arr->length = len; + + DUK_ASSERT((duk_uint_t) len == len); + duk_push_uint(thr, (duk_uint_t) len); + return 1; +} +#endif /* DUK_USE_ARRAY_FASTPATH */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_push(duk_hthread *thr) { + /* Note: 'this' is not necessarily an Array object. The push() + * algorithm is supposed to work for other kinds of objects too, + * so the algorithm has e.g. an explicit update for the 'length' + * property which is normally "magical" in arrays. + */ + + duk_uint32_t len; + duk_idx_t i, n; +#if defined(DUK_USE_ARRAY_FASTPATH) + duk_harray *h_arr; +#endif + +#if defined(DUK_USE_ARRAY_FASTPATH) + h_arr = duk__arraypart_fastpath_this(thr); + if (h_arr) { + duk_ret_t rc; + rc = duk__array_push_fastpath(thr, h_arr); + if (rc != 0) { + return rc; + } + DUK_DD(DUK_DDPRINT("array push() fast path exited, resize case")); + } +#endif + + n = duk_get_top(thr); + len = duk__push_this_obj_len_u32(thr); + + /* [ arg1 ... argN obj length ] */ + + /* Technically Array.prototype.push() can create an Array with length + * longer than 2^32-1, i.e. outside the 32-bit range. The final length + * is *not* wrapped to 32 bits in the specification. + * + * This implementation tracks length with a uint32 because it's much + * more practical. + * + * See: test-bi-array-push-maxlen.js. + */ + + if (len + (duk_uint32_t) n < len) { + DUK_D(DUK_DPRINT("Array.prototype.push() would go beyond 32-bit length, throw")); + DUK_DCERROR_RANGE_INVALID_LENGTH(thr); + } + + for (i = 0; i < n; i++) { + duk_dup(thr, i); + duk_put_prop_index(thr, -3, (duk_uarridx_t) (len + (duk_uint32_t) i)); + } + len += (duk_uint32_t) n; + + duk_push_u32(thr, len); + duk_dup_top(thr); + duk_put_prop_stridx_short(thr, -4, DUK_STRIDX_LENGTH); + + /* [ arg1 ... argN obj length new_length ] */ + return 1; +} + +/* + * sort() + * + * Currently qsort with random pivot. This is now really, really slow, + * because there is no fast path for array parts. + * + * Signed indices are used because qsort() leaves and degenerate cases + * may use a negative offset. + */ + +DUK_LOCAL duk_small_int_t duk__array_sort_compare(duk_hthread *thr, duk_int_t idx1, duk_int_t idx2) { + duk_bool_t have1, have2; + duk_bool_t undef1, undef2; + duk_small_int_t ret; + duk_idx_t idx_obj = 1; /* fixed offsets in valstack */ + duk_idx_t idx_fn = 0; + duk_hstring *h1, *h2; + + /* Fast exit if indices are identical. This is valid for a non-existent property, + * for an undefined value, and almost always for ToString() coerced comparison of + * arbitrary values (corner cases where this is not the case include e.g. a an + * object with varying ToString() coercion). + * + * The specification does not prohibit "caching" of values read from the array, so + * assuming equality for comparing an index with itself falls into the category of + * "caching". + * + * Also, compareFn may be inconsistent, so skipping a call to compareFn here may + * have an effect on the final result. The specification does not require any + * specific behavior for inconsistent compare functions, so again, this fast path + * is OK. + */ + + if (idx1 == idx2) { + DUK_DDD(DUK_DDDPRINT("duk__array_sort_compare: idx1=%ld, idx2=%ld -> indices identical, quick exit", + (long) idx1, (long) idx2)); + return 0; + } + + have1 = duk_get_prop_index(thr, idx_obj, (duk_uarridx_t) idx1); + have2 = duk_get_prop_index(thr, idx_obj, (duk_uarridx_t) idx2); + + DUK_DDD(DUK_DDDPRINT("duk__array_sort_compare: idx1=%ld, idx2=%ld, have1=%ld, have2=%ld, val1=%!T, val2=%!T", + (long) idx1, (long) idx2, (long) have1, (long) have2, + (duk_tval *) duk_get_tval(thr, -2), (duk_tval *) duk_get_tval(thr, -1))); + + if (have1) { + if (have2) { + ; + } else { + ret = -1; + goto pop_ret; + } + } else { + if (have2) { + ret = 1; + goto pop_ret; + } else { + ret = 0; + goto pop_ret; + } + } + + undef1 = duk_is_undefined(thr, -2); + undef2 = duk_is_undefined(thr, -1); + if (undef1) { + if (undef2) { + ret = 0; + goto pop_ret; + } else { + ret = 1; + goto pop_ret; + } + } else { + if (undef2) { + ret = -1; + goto pop_ret; + } else { + ; + } + } + + if (!duk_is_undefined(thr, idx_fn)) { + duk_double_t d; + + /* No need to check callable; duk_call() will do that. */ + duk_dup(thr, idx_fn); /* -> [ ... x y fn ] */ + duk_insert(thr, -3); /* -> [ ... fn x y ] */ + duk_call(thr, 2); /* -> [ ... res ] */ + + /* ES5 is a bit vague about what to do if the return value is + * not a number. ES2015 provides a concrete description: + * http://www.ecma-international.org/ecma-262/6.0/#sec-sortcompare. + */ + + d = duk_to_number_m1(thr); + if (d < 0.0) { + ret = -1; + } else if (d > 0.0) { + ret = 1; + } else { + /* Because NaN compares to false, NaN is handled here + * without an explicit check above. + */ + ret = 0; + } + + duk_pop_nodecref_unsafe(thr); + DUK_DDD(DUK_DDDPRINT("-> result %ld (from comparefn, after coercion)", (long) ret)); + return ret; + } + + /* string compare is the default (a bit oddly) */ + + /* XXX: any special handling for plain array; causes repeated coercion now? */ + h1 = duk_to_hstring(thr, -2); + h2 = duk_to_hstring_m1(thr); + DUK_ASSERT(h1 != NULL); + DUK_ASSERT(h2 != NULL); + + ret = duk_js_string_compare(h1, h2); /* retval is directly usable */ + goto pop_ret; + + pop_ret: + duk_pop_2_unsafe(thr); + DUK_DDD(DUK_DDDPRINT("-> result %ld", (long) ret)); + return ret; +} + +DUK_LOCAL void duk__array_sort_swap(duk_hthread *thr, duk_int_t l, duk_int_t r) { + duk_bool_t have_l, have_r; + duk_idx_t idx_obj = 1; /* fixed offset in valstack */ + + if (l == r) { + return; + } + + /* swap elements; deal with non-existent elements correctly */ + have_l = duk_get_prop_index(thr, idx_obj, (duk_uarridx_t) l); + have_r = duk_get_prop_index(thr, idx_obj, (duk_uarridx_t) r); + + if (have_r) { + /* right exists, [[Put]] regardless whether or not left exists */ + duk_put_prop_index(thr, idx_obj, (duk_uarridx_t) l); + } else { + duk_del_prop_index(thr, idx_obj, (duk_uarridx_t) l); + duk_pop_undefined(thr); + } + + if (have_l) { + duk_put_prop_index(thr, idx_obj, (duk_uarridx_t) r); + } else { + duk_del_prop_index(thr, idx_obj, (duk_uarridx_t) r); + duk_pop_undefined(thr); + } +} + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) +/* Debug print which visualizes the qsort partitioning process. */ +DUK_LOCAL void duk__debuglog_qsort_state(duk_hthread *thr, duk_int_t lo, duk_int_t hi, duk_int_t pivot) { + char buf[4096]; + char *ptr = buf; + duk_int_t i, n; + n = (duk_int_t) duk_get_length(thr, 1); + if (n > 4000) { + n = 4000; + } + *ptr++ = '['; + for (i = 0; i < n; i++) { + if (i == pivot) { + *ptr++ = '|'; + } else if (i == lo) { + *ptr++ = '<'; + } else if (i == hi) { + *ptr++ = '>'; + } else if (i >= lo && i <= hi) { + *ptr++ = '-'; + } else { + *ptr++ = ' '; + } + } + *ptr++ = ']'; + *ptr++ = '\0'; + + DUK_DDD(DUK_DDDPRINT("%s (lo=%ld, hi=%ld, pivot=%ld)", + (const char *) buf, (long) lo, (long) hi, (long) pivot)); +} +#endif + +DUK_LOCAL void duk__array_qsort(duk_hthread *thr, duk_int_t lo, duk_int_t hi) { + duk_int_t p, l, r; + + /* The lo/hi indices may be crossed and hi < 0 is possible at entry. */ + + DUK_DDD(DUK_DDDPRINT("duk__array_qsort: lo=%ld, hi=%ld, obj=%!T", + (long) lo, (long) hi, (duk_tval *) duk_get_tval(thr, 1))); + + DUK_ASSERT_TOP(thr, 3); + + /* In some cases it may be that lo > hi, or hi < 0; these + * degenerate cases happen e.g. for empty arrays, and in + * recursion leaves. + */ + + /* trivial cases */ + if (hi - lo < 1) { + DUK_DDD(DUK_DDDPRINT("degenerate case, return immediately")); + return; + } + DUK_ASSERT(hi > lo); + DUK_ASSERT(hi - lo + 1 >= 2); + + /* randomized pivot selection */ + p = lo + (duk_int_t) (DUK_UTIL_GET_RANDOM_DOUBLE(thr) * (duk_double_t) (hi - lo + 1)); + DUK_ASSERT(p >= lo && p <= hi); + DUK_DDD(DUK_DDDPRINT("lo=%ld, hi=%ld, chose pivot p=%ld", (long) lo, (long) hi, (long) p)); + + /* move pivot out of the way */ + duk__array_sort_swap(thr, p, lo); + p = lo; + DUK_DDD(DUK_DDDPRINT("pivot moved out of the way: %!T", (duk_tval *) duk_get_tval(thr, 1))); + + l = lo + 1; + r = hi; + for (;;) { + /* find elements to swap */ + for (;;) { + DUK_DDD(DUK_DDDPRINT("left scan: l=%ld, r=%ld, p=%ld", + (long) l, (long) r, (long) p)); + if (l >= hi) { + break; + } + if (duk__array_sort_compare(thr, l, p) >= 0) { /* !(l < p) */ + break; + } + l++; + } + for (;;) { + DUK_DDD(DUK_DDDPRINT("right scan: l=%ld, r=%ld, p=%ld", + (long) l, (long) r, (long) p)); + if (r <= lo) { + break; + } + if (duk__array_sort_compare(thr, p, r) >= 0) { /* !(p < r) */ + break; + } + r--; + } + if (l >= r) { + goto done; + } + DUK_ASSERT(l < r); + + DUK_DDD(DUK_DDDPRINT("swap %ld and %ld", (long) l, (long) r)); + + duk__array_sort_swap(thr, l, r); + + DUK_DDD(DUK_DDDPRINT("after swap: %!T", (duk_tval *) duk_get_tval(thr, 1))); + l++; + r--; + } + done: + /* Note that 'l' and 'r' may cross, i.e. r < l */ + DUK_ASSERT(l >= lo && l <= hi); + DUK_ASSERT(r >= lo && r <= hi); + + /* XXX: there's no explicit recursion bound here now. For the average + * qsort recursion depth O(log n) that's not really necessary: e.g. for + * 2**32 recursion depth would be about 32 which is OK. However, qsort + * worst case recursion depth is O(n) which may be a problem. + */ + + /* move pivot to its final place */ + DUK_DDD(DUK_DDDPRINT("before final pivot swap: %!T", (duk_tval *) duk_get_tval(thr, 1))); + duk__array_sort_swap(thr, lo, r); + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + duk__debuglog_qsort_state(thr, lo, hi, r); +#endif + + DUK_DDD(DUK_DDDPRINT("recurse: pivot=%ld, obj=%!T", (long) r, (duk_tval *) duk_get_tval(thr, 1))); + duk__array_qsort(thr, lo, r - 1); + duk__array_qsort(thr, r + 1, hi); +} + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_sort(duk_hthread *thr) { + duk_uint32_t len; + + /* XXX: len >= 0x80000000 won't work below because a signed type + * is needed by qsort. + */ + len = duk__push_this_obj_len_u32_limited(thr); + + /* stack[0] = compareFn + * stack[1] = ToObject(this) + * stack[2] = ToUint32(length) + */ + + if (len > 0) { + /* avoid degenerate cases, so that (len - 1) won't underflow */ + duk__array_qsort(thr, (duk_int_t) 0, (duk_int_t) (len - 1)); + } + + DUK_ASSERT_TOP(thr, 3); + duk_pop_nodecref_unsafe(thr); + return 1; /* return ToObject(this) */ +} + +/* + * splice() + */ + +/* XXX: this compiles to over 500 bytes now, even without special handling + * for an array part. Uses signed ints so does not handle full array range correctly. + */ + +/* XXX: can shift() / unshift() use the same helper? + * shift() is (close to?) <--> splice(0, 1) + * unshift is (close to?) <--> splice(0, 0, [items])? + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_splice(duk_hthread *thr) { + duk_idx_t nargs; + duk_uint32_t len_u32; + duk_int_t len; + duk_bool_t have_delcount; + duk_int_t item_count; + duk_int_t act_start; + duk_int_t del_count; + duk_int_t i, n; + + DUK_UNREF(have_delcount); + + nargs = duk_get_top(thr); + if (nargs < 2) { + duk_set_top(thr, 2); + nargs = 2; + have_delcount = 0; + } else { + have_delcount = 1; + } + + /* XXX: len >= 0x80000000 won't work below because we need to be + * able to represent -len. + */ + len_u32 = duk__push_this_obj_len_u32_limited(thr); + len = (duk_int_t) len_u32; + DUK_ASSERT(len >= 0); + + act_start = duk_to_int_clamped(thr, 0, -len, len); + if (act_start < 0) { + act_start = len + act_start; + } + DUK_ASSERT(act_start >= 0 && act_start <= len); + +#if defined(DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT) + if (have_delcount) { +#endif + del_count = duk_to_int_clamped(thr, 1, 0, len - act_start); +#if defined(DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT) + } else { + /* E5.1 standard behavior when deleteCount is not given would be + * to treat it just like if 'undefined' was given, which coerces + * ultimately to 0. Real world behavior is to splice to the end + * of array, see test-bi-array-proto-splice-no-delcount.js. + */ + del_count = len - act_start; + } +#endif + + DUK_ASSERT(nargs >= 2); + item_count = (duk_int_t) (nargs - 2); + + DUK_ASSERT(del_count >= 0 && del_count <= len - act_start); + DUK_ASSERT(del_count + act_start <= len); + + /* For now, restrict result array into 32-bit length range. */ + if (((duk_double_t) len) - ((duk_double_t) del_count) + ((duk_double_t) item_count) > (duk_double_t) DUK_UINT32_MAX) { + DUK_D(DUK_DPRINT("Array.prototype.splice() would go beyond 32-bit length, throw")); + DUK_DCERROR_RANGE_INVALID_LENGTH(thr); + } + + duk_push_array(thr); + + /* stack[0] = start + * stack[1] = deleteCount + * stack[2...nargs-1] = items + * stack[nargs] = ToObject(this) -3 + * stack[nargs+1] = ToUint32(length) -2 + * stack[nargs+2] = result array -1 + */ + + DUK_ASSERT_TOP(thr, nargs + 3); + + /* Step 9: copy elements-to-be-deleted into the result array */ + + for (i = 0; i < del_count; i++) { + if (duk_get_prop_index(thr, -3, (duk_uarridx_t) (act_start + i))) { + duk_xdef_prop_index_wec(thr, -2, (duk_uarridx_t) i); /* throw flag irrelevant (false in std alg) */ + } else { + duk_pop_undefined(thr); + } + } + duk_push_u32(thr, (duk_uint32_t) del_count); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_W); + + /* Steps 12 and 13: reorganize elements to make room for itemCount elements */ + + if (item_count < del_count) { + /* [ A B C D E F G H ] rel_index = 2, del_count 3, item count 1 + * -> [ A B F G H ] (conceptual intermediate step) + * -> [ A B . F G H ] (placeholder marked) + * [ A B C F G H ] (actual result at this point, C will be replaced) + */ + + DUK_ASSERT_TOP(thr, nargs + 3); + + n = len - del_count; + for (i = act_start; i < n; i++) { + if (duk_get_prop_index(thr, -3, (duk_uarridx_t) (i + del_count))) { + duk_put_prop_index(thr, -4, (duk_uarridx_t) (i + item_count)); + } else { + duk_pop_undefined(thr); + duk_del_prop_index(thr, -3, (duk_uarridx_t) (i + item_count)); + } + } + + DUK_ASSERT_TOP(thr, nargs + 3); + + /* loop iterator init and limit changed from standard algorithm */ + n = len - del_count + item_count; + for (i = len - 1; i >= n; i--) { + duk_del_prop_index(thr, -3, (duk_uarridx_t) i); + } + + DUK_ASSERT_TOP(thr, nargs + 3); + } else if (item_count > del_count) { + /* [ A B C D E F G H ] rel_index = 2, del_count 3, item count 4 + * -> [ A B F G H ] (conceptual intermediate step) + * -> [ A B . . . . F G H ] (placeholder marked) + * [ A B C D E F F G H ] (actual result at this point) + */ + + DUK_ASSERT_TOP(thr, nargs + 3); + + /* loop iterator init and limit changed from standard algorithm */ + for (i = len - del_count - 1; i >= act_start; i--) { + if (duk_get_prop_index(thr, -3, (duk_uarridx_t) (i + del_count))) { + duk_put_prop_index(thr, -4, (duk_uarridx_t) (i + item_count)); + } else { + duk_pop_undefined(thr); + duk_del_prop_index(thr, -3, (duk_uarridx_t) (i + item_count)); + } + } + + DUK_ASSERT_TOP(thr, nargs + 3); + } else { + /* [ A B C D E F G H ] rel_index = 2, del_count 3, item count 3 + * -> [ A B F G H ] (conceptual intermediate step) + * -> [ A B . . . F G H ] (placeholder marked) + * [ A B C D E F G H ] (actual result at this point) + */ + } + DUK_ASSERT_TOP(thr, nargs + 3); + + /* Step 15: insert itemCount elements into the hole made above */ + + for (i = 0; i < item_count; i++) { + duk_dup(thr, i + 2); /* args start at index 2 */ + duk_put_prop_index(thr, -4, (duk_uarridx_t) (act_start + i)); + } + + /* Step 16: update length; note that the final length may be above 32 bit range + * (but we checked above that this isn't the case here) + */ + + duk_push_u32(thr, (duk_uint32_t) (len - del_count + item_count)); + duk_put_prop_stridx_short(thr, -4, DUK_STRIDX_LENGTH); + + /* result array is already at the top of stack */ + DUK_ASSERT_TOP(thr, nargs + 3); + return 1; +} + +/* + * reverse() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_reverse(duk_hthread *thr) { + duk_uint32_t len; + duk_uint32_t middle; + duk_uint32_t lower, upper; + duk_bool_t have_lower, have_upper; + + len = duk__push_this_obj_len_u32(thr); + middle = len / 2; + + /* If len <= 1, middle will be 0 and for-loop bails out + * immediately (0 < 0 -> false). + */ + + for (lower = 0; lower < middle; lower++) { + DUK_ASSERT(len >= 2); + DUK_ASSERT_TOP(thr, 2); + + DUK_ASSERT(len >= lower + 1); + upper = len - lower - 1; + + have_lower = duk_get_prop_index(thr, -2, (duk_uarridx_t) lower); + have_upper = duk_get_prop_index(thr, -3, (duk_uarridx_t) upper); + + /* [ ToObject(this) ToUint32(length) lowerValue upperValue ] */ + + if (have_upper) { + duk_put_prop_index(thr, -4, (duk_uarridx_t) lower); + } else { + duk_del_prop_index(thr, -4, (duk_uarridx_t) lower); + duk_pop_undefined(thr); + } + + if (have_lower) { + duk_put_prop_index(thr, -3, (duk_uarridx_t) upper); + } else { + duk_del_prop_index(thr, -3, (duk_uarridx_t) upper); + duk_pop_undefined(thr); + } + + DUK_ASSERT_TOP(thr, 2); + } + + DUK_ASSERT_TOP(thr, 2); + duk_pop_unsafe(thr); /* -> [ ToObject(this) ] */ + return 1; +} + +/* + * slice() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_slice(duk_hthread *thr) { + duk_uint32_t len_u32; + duk_int_t len; + duk_int_t start, end; + duk_int_t i; + duk_uarridx_t idx; + duk_uint32_t res_length = 0; + + /* XXX: len >= 0x80000000 won't work below because we need to be + * able to represent -len. + */ + len_u32 = duk__push_this_obj_len_u32_limited(thr); + len = (duk_int_t) len_u32; + DUK_ASSERT(len >= 0); + + duk_push_array(thr); + + /* stack[0] = start + * stack[1] = end + * stack[2] = ToObject(this) + * stack[3] = ToUint32(length) + * stack[4] = result array + */ + + start = duk_to_int_clamped(thr, 0, -len, len); + if (start < 0) { + start = len + start; + } + /* XXX: could duk_is_undefined() provide defaulting undefined to 'len' + * (the upper limit)? + */ + if (duk_is_undefined(thr, 1)) { + end = len; + } else { + end = duk_to_int_clamped(thr, 1, -len, len); + if (end < 0) { + end = len + end; + } + } + DUK_ASSERT(start >= 0 && start <= len); + DUK_ASSERT(end >= 0 && end <= len); + + idx = 0; + for (i = start; i < end; i++) { + DUK_ASSERT_TOP(thr, 5); + if (duk_get_prop_index(thr, 2, (duk_uarridx_t) i)) { + duk_xdef_prop_index_wec(thr, 4, idx); + res_length = idx + 1; + } else { + duk_pop_undefined(thr); + } + idx++; + DUK_ASSERT_TOP(thr, 5); + } + + duk_push_u32(thr, res_length); + duk_xdef_prop_stridx_short(thr, 4, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_W); + + DUK_ASSERT_TOP(thr, 5); + return 1; +} + +/* + * shift() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_shift(duk_hthread *thr) { + duk_uint32_t len; + duk_uint32_t i; + + len = duk__push_this_obj_len_u32(thr); + if (len == 0) { + duk_push_int(thr, 0); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LENGTH); + return 0; + } + + duk_get_prop_index(thr, 0, 0); + + /* stack[0] = object (this) + * stack[1] = ToUint32(length) + * stack[2] = elem at index 0 (retval) + */ + + for (i = 1; i < len; i++) { + DUK_ASSERT_TOP(thr, 3); + if (duk_get_prop_index(thr, 0, (duk_uarridx_t) i)) { + /* fromPresent = true */ + duk_put_prop_index(thr, 0, (duk_uarridx_t) (i - 1)); + } else { + /* fromPresent = false */ + duk_del_prop_index(thr, 0, (duk_uarridx_t) (i - 1)); + duk_pop_undefined(thr); + } + } + duk_del_prop_index(thr, 0, (duk_uarridx_t) (len - 1)); + + duk_push_u32(thr, (duk_uint32_t) (len - 1)); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LENGTH); + + DUK_ASSERT_TOP(thr, 3); + return 1; +} + +/* + * unshift() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_unshift(duk_hthread *thr) { + duk_idx_t nargs; + duk_uint32_t len; + duk_uint32_t i; + + nargs = duk_get_top(thr); + len = duk__push_this_obj_len_u32(thr); + + /* stack[0...nargs-1] = unshift args (vararg) + * stack[nargs] = ToObject(this) + * stack[nargs+1] = ToUint32(length) + */ + + DUK_ASSERT_TOP(thr, nargs + 2); + + /* Note: unshift() may operate on indices above unsigned 32-bit range + * and the final length may be >= 2**32. However, we restrict the + * final result to 32-bit range for practicality. + */ + + if (len + (duk_uint32_t) nargs < len) { + DUK_D(DUK_DPRINT("Array.prototype.unshift() would go beyond 32-bit length, throw")); + DUK_DCERROR_RANGE_INVALID_LENGTH(thr); + } + + i = len; + while (i > 0) { + DUK_ASSERT_TOP(thr, nargs + 2); + i--; + /* k+argCount-1; note that may be above 32-bit range */ + + if (duk_get_prop_index(thr, -2, (duk_uarridx_t) i)) { + /* fromPresent = true */ + /* [ ... ToObject(this) ToUint32(length) val ] */ + duk_put_prop_index(thr, -3, (duk_uarridx_t) (i + (duk_uint32_t) nargs)); /* -> [ ... ToObject(this) ToUint32(length) ] */ + } else { + /* fromPresent = false */ + /* [ ... ToObject(this) ToUint32(length) val ] */ + duk_pop_undefined(thr); + duk_del_prop_index(thr, -2, (duk_uarridx_t) (i + (duk_uint32_t) nargs)); /* -> [ ... ToObject(this) ToUint32(length) ] */ + } + DUK_ASSERT_TOP(thr, nargs + 2); + } + + for (i = 0; i < (duk_uint32_t) nargs; i++) { + DUK_ASSERT_TOP(thr, nargs + 2); + duk_dup(thr, (duk_idx_t) i); /* -> [ ... ToObject(this) ToUint32(length) arg[i] ] */ + duk_put_prop_index(thr, -3, (duk_uarridx_t) i); + DUK_ASSERT_TOP(thr, nargs + 2); + } + + DUK_ASSERT_TOP(thr, nargs + 2); + duk_push_u32(thr, len + (duk_uint32_t) nargs); + duk_dup_top(thr); /* -> [ ... ToObject(this) ToUint32(length) final_len final_len ] */ + duk_put_prop_stridx_short(thr, -4, DUK_STRIDX_LENGTH); + return 1; +} + +/* + * indexOf(), lastIndexOf() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_indexof_shared(duk_hthread *thr) { + duk_idx_t nargs; + duk_int_t i, len; + duk_int_t from_idx; + duk_small_int_t idx_step = duk_get_current_magic(thr); /* idx_step is +1 for indexOf, -1 for lastIndexOf */ + + /* lastIndexOf() needs to be a vararg function because we must distinguish + * between an undefined fromIndex and a "not given" fromIndex; indexOf() is + * made vararg for symmetry although it doesn't strictly need to be. + */ + + nargs = duk_get_top(thr); + duk_set_top(thr, 2); + + /* XXX: must be able to represent -len */ + len = (duk_int_t) duk__push_this_obj_len_u32_limited(thr); + if (len == 0) { + goto not_found; + } + + /* Index clamping is a bit tricky, we must ensure that we'll only iterate + * through elements that exist and that the specific requirements from E5.1 + * Sections 15.4.4.14 and 15.4.4.15 are fulfilled; especially: + * + * - indexOf: clamp to [-len,len], negative handling -> [0,len], + * if clamped result is len, for-loop bails out immediately + * + * - lastIndexOf: clamp to [-len-1, len-1], negative handling -> [-1, len-1], + * if clamped result is -1, for-loop bails out immediately + * + * If fromIndex is not given, ToInteger(undefined) = 0, which is correct + * for indexOf() but incorrect for lastIndexOf(). Hence special handling, + * and why lastIndexOf() needs to be a vararg function. + */ + + if (nargs >= 2) { + /* indexOf: clamp fromIndex to [-len, len] + * (if fromIndex == len, for-loop terminates directly) + * + * lastIndexOf: clamp fromIndex to [-len - 1, len - 1] + * (if clamped to -len-1 -> fromIndex becomes -1, terminates for-loop directly) + */ + from_idx = duk_to_int_clamped(thr, + 1, + (idx_step > 0 ? -len : -len - 1), + (idx_step > 0 ? len : len - 1)); + if (from_idx < 0) { + /* for lastIndexOf, result may be -1 (mark immediate termination) */ + from_idx = len + from_idx; + } + } else { + /* for indexOf, ToInteger(undefined) would be 0, i.e. correct, but + * handle both indexOf and lastIndexOf specially here. + */ + if (idx_step > 0) { + from_idx = 0; + } else { + from_idx = len - 1; + } + } + + /* stack[0] = searchElement + * stack[1] = fromIndex + * stack[2] = object + * stack[3] = length (not needed, but not popped above) + */ + + for (i = from_idx; i >= 0 && i < len; i += idx_step) { + DUK_ASSERT_TOP(thr, 4); + + if (duk_get_prop_index(thr, 2, (duk_uarridx_t) i)) { + DUK_ASSERT_TOP(thr, 5); + if (duk_strict_equals(thr, 0, 4)) { + duk_push_int(thr, i); + return 1; + } + } + + duk_pop_unsafe(thr); + } + + not_found: + duk_push_int(thr, -1); + return 1; +} + +/* + * every(), some(), forEach(), map(), filter() + */ + +#define DUK__ITER_EVERY 0 +#define DUK__ITER_SOME 1 +#define DUK__ITER_FOREACH 2 +#define DUK__ITER_MAP 3 +#define DUK__ITER_FILTER 4 + +/* XXX: This helper is a bit awkward because the handling for the different iteration + * callers is quite different. This now compiles to a bit less than 500 bytes, so with + * 5 callers the net result is about 100 bytes / caller. + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_iter_shared(duk_hthread *thr) { + duk_uint32_t len; + duk_uint32_t i; + duk_uarridx_t k; + duk_bool_t bval; + duk_small_int_t iter_type = duk_get_current_magic(thr); + duk_uint32_t res_length = 0; + + /* each call this helper serves has nargs==2 */ + DUK_ASSERT_TOP(thr, 2); + + len = duk__push_this_obj_len_u32(thr); + duk_require_callable(thr, 0); + /* if thisArg not supplied, behave as if undefined was supplied */ + + if (iter_type == DUK__ITER_MAP || iter_type == DUK__ITER_FILTER) { + duk_push_array(thr); + } else { + duk_push_undefined(thr); + } + + /* stack[0] = callback + * stack[1] = thisArg + * stack[2] = object + * stack[3] = ToUint32(length) (unused, but avoid unnecessary pop) + * stack[4] = result array (or undefined) + */ + + k = 0; /* result index for filter() */ + for (i = 0; i < len; i++) { + DUK_ASSERT_TOP(thr, 5); + + if (!duk_get_prop_index(thr, 2, (duk_uarridx_t) i)) { + /* For 'map' trailing missing elements don't invoke the + * callback but count towards the result length. + */ + if (iter_type == DUK__ITER_MAP) { + res_length = i + 1; + } + duk_pop_undefined(thr); + continue; + } + + /* The original value needs to be preserved for filter(), hence + * this funny order. We can't re-get the value because of side + * effects. + */ + + duk_dup_0(thr); + duk_dup_1(thr); + duk_dup_m3(thr); + duk_push_u32(thr, i); + duk_dup_2(thr); /* [ ... val callback thisArg val i obj ] */ + duk_call_method(thr, 3); /* -> [ ... val retval ] */ + + switch (iter_type) { + case DUK__ITER_EVERY: + bval = duk_to_boolean(thr, -1); + if (!bval) { + /* stack top contains 'false' */ + return 1; + } + break; + case DUK__ITER_SOME: + bval = duk_to_boolean(thr, -1); + if (bval) { + /* stack top contains 'true' */ + return 1; + } + break; + case DUK__ITER_FOREACH: + /* nop */ + break; + case DUK__ITER_MAP: + duk_dup_top(thr); + duk_xdef_prop_index_wec(thr, 4, (duk_uarridx_t) i); /* retval to result[i] */ + res_length = i + 1; + break; + case DUK__ITER_FILTER: + bval = duk_to_boolean(thr, -1); + if (bval) { + duk_dup_m2(thr); /* orig value */ + duk_xdef_prop_index_wec(thr, 4, (duk_uarridx_t) k); + k++; + res_length = k; + } + break; + default: + DUK_UNREACHABLE(); + break; + } + duk_pop_2_unsafe(thr); + + DUK_ASSERT_TOP(thr, 5); + } + + switch (iter_type) { + case DUK__ITER_EVERY: + duk_push_true(thr); + break; + case DUK__ITER_SOME: + duk_push_false(thr); + break; + case DUK__ITER_FOREACH: + duk_push_undefined(thr); + break; + case DUK__ITER_MAP: + case DUK__ITER_FILTER: + DUK_ASSERT_TOP(thr, 5); + DUK_ASSERT(duk_is_array(thr, -1)); /* topmost element is the result array already */ + duk_push_u32(thr, res_length); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_W); + break; + default: + DUK_UNREACHABLE(); + break; + } + + return 1; +} + +/* + * reduce(), reduceRight() + */ + +DUK_INTERNAL duk_ret_t duk_bi_array_prototype_reduce_shared(duk_hthread *thr) { + duk_idx_t nargs; + duk_bool_t have_acc; + duk_uint32_t i, len; + duk_small_int_t idx_step = duk_get_current_magic(thr); /* idx_step is +1 for reduce, -1 for reduceRight */ + + /* We're a varargs function because we need to detect whether + * initialValue was given or not. + */ + nargs = duk_get_top(thr); + DUK_DDD(DUK_DDDPRINT("nargs=%ld", (long) nargs)); + + duk_set_top(thr, 2); + len = duk__push_this_obj_len_u32(thr); + duk_require_callable(thr, 0); + + /* stack[0] = callback fn + * stack[1] = initialValue + * stack[2] = object (coerced this) + * stack[3] = length (not needed, but not popped above) + * stack[4] = accumulator + */ + + have_acc = 0; + if (nargs >= 2) { + duk_dup_1(thr); + have_acc = 1; + } + DUK_DDD(DUK_DDDPRINT("have_acc=%ld, acc=%!T", + (long) have_acc, (duk_tval *) duk_get_tval(thr, 3))); + + /* For len == 0, i is initialized to len - 1 which underflows. + * The condition (i < len) will then exit the for-loop on the + * first round which is correct. Similarly, loop termination + * happens by i underflowing. + */ + + for (i = (idx_step >= 0 ? 0 : len - 1); + i < len; /* i >= 0 would always be true */ + i += (duk_uint32_t) idx_step) { + DUK_DDD(DUK_DDDPRINT("i=%ld, len=%ld, have_acc=%ld, top=%ld, acc=%!T", + (long) i, (long) len, (long) have_acc, + (long) duk_get_top(thr), + (duk_tval *) duk_get_tval(thr, 4))); + + DUK_ASSERT((have_acc && duk_get_top(thr) == 5) || + (!have_acc && duk_get_top(thr) == 4)); + + if (!duk_has_prop_index(thr, 2, (duk_uarridx_t) i)) { + continue; + } + + if (!have_acc) { + DUK_ASSERT_TOP(thr, 4); + duk_get_prop_index(thr, 2, (duk_uarridx_t) i); + have_acc = 1; + DUK_ASSERT_TOP(thr, 5); + } else { + DUK_ASSERT_TOP(thr, 5); + duk_dup_0(thr); + duk_dup(thr, 4); + duk_get_prop_index(thr, 2, (duk_uarridx_t) i); + duk_push_u32(thr, i); + duk_dup_2(thr); + DUK_DDD(DUK_DDDPRINT("calling reduce function: func=%!T, prev=%!T, curr=%!T, idx=%!T, obj=%!T", + (duk_tval *) duk_get_tval(thr, -5), (duk_tval *) duk_get_tval(thr, -4), + (duk_tval *) duk_get_tval(thr, -3), (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + duk_call(thr, 4); + DUK_DDD(DUK_DDDPRINT("-> result: %!T", (duk_tval *) duk_get_tval(thr, -1))); + duk_replace(thr, 4); + DUK_ASSERT_TOP(thr, 5); + } + } + + if (!have_acc) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + DUK_ASSERT_TOP(thr, 5); + return 1; +} + +#endif /* DUK_USE_ARRAY_BUILTIN */ + +/* automatic undefs */ +#undef DUK__ARRAY_MID_JOIN_LIMIT +#undef DUK__ITER_EVERY +#undef DUK__ITER_FILTER +#undef DUK__ITER_FOREACH +#undef DUK__ITER_MAP +#undef DUK__ITER_SOME +#line 1 "duk_bi_boolean.c" +/* + * Boolean built-ins + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_BOOLEAN_BUILTIN) + +/* Shared helper to provide toString() and valueOf(). Checks 'this', gets + * the primitive value to stack top, and optionally coerces with ToString(). + */ +DUK_INTERNAL duk_ret_t duk_bi_boolean_prototype_tostring_shared(duk_hthread *thr) { + duk_tval *tv; + duk_hobject *h; + duk_small_int_t coerce_tostring = duk_get_current_magic(thr); + + /* XXX: there is room to use a shared helper here, many built-ins + * check the 'this' type, and if it's an object, check its class, + * then get its internal value, etc. + */ + + duk_push_this(thr); + tv = duk_get_tval(thr, -1); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_BOOLEAN(tv)) { + goto type_ok; + } else if (DUK_TVAL_IS_OBJECT(tv)) { + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + + if (DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_BOOLEAN) { + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE); + DUK_ASSERT(duk_is_boolean(thr, -1)); + goto type_ok; + } + } + + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + /* never here */ + + type_ok: + if (coerce_tostring) { + duk_to_string(thr, -1); + } + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_boolean_constructor(duk_hthread *thr) { + duk_hobject *h_this; + + duk_to_boolean(thr, 0); + + if (duk_is_constructor_call(thr)) { + /* XXX: helper; rely on Boolean.prototype as being non-writable, non-configurable */ + duk_push_this(thr); + h_this = duk_known_hobject(thr, -1); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_this) == thr->builtins[DUK_BIDX_BOOLEAN_PROTOTYPE]); + + DUK_HOBJECT_SET_CLASS_NUMBER(h_this, DUK_HOBJECT_CLASS_BOOLEAN); + + duk_dup_0(thr); /* -> [ val obj val ] */ + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE); /* XXX: proper flags? */ + } /* unbalanced stack */ + + return 1; +} + +#endif /* DUK_USE_BOOLEAN_BUILTIN */ +#line 1 "duk_bi_buffer.c" +/* + * ES2015 TypedArray and Node.js Buffer built-ins + */ + +/* #include duk_internal.h -> already included */ + +/* + * Helpers for buffer handling, enabled with DUK_USE_BUFFEROBJECT_SUPPORT. + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +/* Map class number (minus DUK_HOBJECT_CLASS_BUFOBJ_MIN) to a bidx for the + * default internal prototype. + */ +static const duk_uint8_t duk__buffer_proto_from_classnum[] = { + DUK_BIDX_ARRAYBUFFER_PROTOTYPE, + DUK_BIDX_DATAVIEW_PROTOTYPE, + DUK_BIDX_INT8ARRAY_PROTOTYPE, + DUK_BIDX_UINT8ARRAY_PROTOTYPE, + DUK_BIDX_UINT8CLAMPEDARRAY_PROTOTYPE, + DUK_BIDX_INT16ARRAY_PROTOTYPE, + DUK_BIDX_UINT16ARRAY_PROTOTYPE, + DUK_BIDX_INT32ARRAY_PROTOTYPE, + DUK_BIDX_UINT32ARRAY_PROTOTYPE, + DUK_BIDX_FLOAT32ARRAY_PROTOTYPE, + DUK_BIDX_FLOAT64ARRAY_PROTOTYPE +}; + +/* Map DUK_HBUFOBJ_ELEM_xxx to duk_hobject class number. + * Sync with duk_hbufobj.h and duk_hobject.h. + */ +static const duk_uint8_t duk__buffer_class_from_elemtype[9] = { + DUK_HOBJECT_CLASS_UINT8ARRAY, + DUK_HOBJECT_CLASS_UINT8CLAMPEDARRAY, + DUK_HOBJECT_CLASS_INT8ARRAY, + DUK_HOBJECT_CLASS_UINT16ARRAY, + DUK_HOBJECT_CLASS_INT16ARRAY, + DUK_HOBJECT_CLASS_UINT32ARRAY, + DUK_HOBJECT_CLASS_INT32ARRAY, + DUK_HOBJECT_CLASS_FLOAT32ARRAY, + DUK_HOBJECT_CLASS_FLOAT64ARRAY +}; + +/* Map DUK_HBUFOBJ_ELEM_xxx to prototype object built-in index. + * Sync with duk_hbufobj.h. + */ +static const duk_uint8_t duk__buffer_proto_from_elemtype[9] = { + DUK_BIDX_UINT8ARRAY_PROTOTYPE, + DUK_BIDX_UINT8CLAMPEDARRAY_PROTOTYPE, + DUK_BIDX_INT8ARRAY_PROTOTYPE, + DUK_BIDX_UINT16ARRAY_PROTOTYPE, + DUK_BIDX_INT16ARRAY_PROTOTYPE, + DUK_BIDX_UINT32ARRAY_PROTOTYPE, + DUK_BIDX_INT32ARRAY_PROTOTYPE, + DUK_BIDX_FLOAT32ARRAY_PROTOTYPE, + DUK_BIDX_FLOAT64ARRAY_PROTOTYPE +}; + +/* Map DUK__FLD_xxx to byte size. */ +static const duk_uint8_t duk__buffer_nbytes_from_fldtype[6] = { + 1, /* DUK__FLD_8BIT */ + 2, /* DUK__FLD_16BIT */ + 4, /* DUK__FLD_32BIT */ + 4, /* DUK__FLD_FLOAT */ + 8, /* DUK__FLD_DOUBLE */ + 0 /* DUK__FLD_VARINT; not relevant here */ +}; + +/* Bitfield for each DUK_HBUFOBJ_ELEM_xxx indicating which element types + * are compatible with a blind byte copy for the TypedArray set() method (also + * used for TypedArray constructor). Array index is target buffer elem type, + * bitfield indicates compatible source types. The types must have same byte + * size and they must be coercion compatible. + */ +#if !defined(DUK_USE_PREFER_SIZE) +static duk_uint16_t duk__buffer_elemtype_copy_compatible[9] = { + /* xxx -> DUK_HBUFOBJ_ELEM_UINT8 */ + (1U << DUK_HBUFOBJ_ELEM_UINT8) | + (1U << DUK_HBUFOBJ_ELEM_UINT8CLAMPED) | + (1U << DUK_HBUFOBJ_ELEM_INT8), + + /* xxx -> DUK_HBUFOBJ_ELEM_UINT8CLAMPED + * Note: INT8 is -not- copy compatible, e.g. -1 would coerce to 0x00. + */ + (1U << DUK_HBUFOBJ_ELEM_UINT8) | + (1U << DUK_HBUFOBJ_ELEM_UINT8CLAMPED), + + /* xxx -> DUK_HBUFOBJ_ELEM_INT8 */ + (1U << DUK_HBUFOBJ_ELEM_UINT8) | + (1U << DUK_HBUFOBJ_ELEM_UINT8CLAMPED) | + (1U << DUK_HBUFOBJ_ELEM_INT8), + + /* xxx -> DUK_HBUFOBJ_ELEM_UINT16 */ + (1U << DUK_HBUFOBJ_ELEM_UINT16) | + (1U << DUK_HBUFOBJ_ELEM_INT16), + + /* xxx -> DUK_HBUFOBJ_ELEM_INT16 */ + (1U << DUK_HBUFOBJ_ELEM_UINT16) | + (1U << DUK_HBUFOBJ_ELEM_INT16), + + /* xxx -> DUK_HBUFOBJ_ELEM_UINT32 */ + (1U << DUK_HBUFOBJ_ELEM_UINT32) | + (1U << DUK_HBUFOBJ_ELEM_INT32), + + /* xxx -> DUK_HBUFOBJ_ELEM_INT32 */ + (1U << DUK_HBUFOBJ_ELEM_UINT32) | + (1U << DUK_HBUFOBJ_ELEM_INT32), + + /* xxx -> DUK_HBUFOBJ_ELEM_FLOAT32 */ + (1U << DUK_HBUFOBJ_ELEM_FLOAT32), + + /* xxx -> DUK_HBUFOBJ_ELEM_FLOAT64 */ + (1U << DUK_HBUFOBJ_ELEM_FLOAT64) +}; +#endif /* !DUK_USE_PREFER_SIZE */ + +DUK_LOCAL duk_hbufobj *duk__hbufobj_promote_this(duk_hthread *thr) { + duk_tval *tv_dst; + duk_hbufobj *res; + + duk_push_this(thr); + DUK_ASSERT(duk_is_buffer(thr, -1)); + res = (duk_hbufobj *) duk_to_hobject(thr, -1); + DUK_HBUFOBJ_ASSERT_VALID(res); + DUK_DD(DUK_DDPRINT("promoted 'this' automatically to an ArrayBuffer: %!iT", duk_get_tval(thr, -1))); + + tv_dst = duk_get_borrowed_this_tval(thr); + DUK_TVAL_SET_OBJECT_UPDREF(thr, tv_dst, (duk_hobject *) res); + duk_pop(thr); + + return res; +} + +#define DUK__BUFOBJ_FLAG_THROW (1 << 0) +#define DUK__BUFOBJ_FLAG_PROMOTE (1 << 1) + +/* Shared helper. When DUK__BUFOBJ_FLAG_PROMOTE is given, the return value is + * always a duk_hbufobj *. Without the flag the return value can also be a + * plain buffer, and the caller must check for it using DUK_HEAPHDR_IS_BUFFER(). + */ +DUK_LOCAL duk_heaphdr *duk__getrequire_bufobj_this(duk_hthread *thr, duk_small_uint_t flags) { + duk_tval *tv; + duk_hbufobj *h_this; + + DUK_ASSERT(thr != NULL); + + tv = duk_get_borrowed_this_tval(thr); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_OBJECT(tv)) { + h_this = (duk_hbufobj *) DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h_this != NULL); + if (DUK_HOBJECT_IS_BUFOBJ((duk_hobject *) h_this)) { + DUK_HBUFOBJ_ASSERT_VALID(h_this); + return (duk_heaphdr *) h_this; + } + } else if (DUK_TVAL_IS_BUFFER(tv)) { + if (flags & DUK__BUFOBJ_FLAG_PROMOTE) { + /* Promote a plain buffer to a Uint8Array. This is very + * inefficient but allows plain buffer to be used wherever an + * Uint8Array is used with very small cost; hot path functions + * like index read/write calls should provide direct buffer + * support to avoid promotion. + */ + /* XXX: make this conditional to a flag if call sites need it? */ + h_this = duk__hbufobj_promote_this(thr); + DUK_ASSERT(h_this != NULL); + DUK_HBUFOBJ_ASSERT_VALID(h_this); + return (duk_heaphdr *) h_this; + } else { + /* XXX: ugly, share return pointer for duk_hbuffer. */ + return (duk_heaphdr *) DUK_TVAL_GET_BUFFER(tv); + } + } + + if (flags & DUK__BUFOBJ_FLAG_THROW) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_BUFFER); + DUK_WO_NORETURN(return NULL;); + } + return NULL; +} + +/* Check that 'this' is a duk_hbufobj and return a pointer to it. */ +DUK_LOCAL duk_hbufobj *duk__get_bufobj_this(duk_hthread *thr) { + return (duk_hbufobj *) duk__getrequire_bufobj_this(thr, DUK__BUFOBJ_FLAG_PROMOTE); +} + +/* Check that 'this' is a duk_hbufobj and return a pointer to it + * (NULL if not). + */ +DUK_LOCAL duk_hbufobj *duk__require_bufobj_this(duk_hthread *thr) { + return (duk_hbufobj *) duk__getrequire_bufobj_this(thr, DUK__BUFOBJ_FLAG_THROW | DUK__BUFOBJ_FLAG_PROMOTE); +} + +/* Check that value is a duk_hbufobj and return a pointer to it. */ +DUK_LOCAL duk_hbufobj *duk__require_bufobj_value(duk_hthread *thr, duk_idx_t idx) { + duk_tval *tv; + duk_hbufobj *h_obj; + + /* Don't accept relative indices now. */ + DUK_ASSERT(idx >= 0); + + tv = duk_require_tval(thr, idx); + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_OBJECT(tv)) { + h_obj = (duk_hbufobj *) DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h_obj != NULL); + if (DUK_HOBJECT_IS_BUFOBJ((duk_hobject *) h_obj)) { + DUK_HBUFOBJ_ASSERT_VALID(h_obj); + return h_obj; + } + } else if (DUK_TVAL_IS_BUFFER(tv)) { + h_obj = (duk_hbufobj *) duk_to_hobject(thr, idx); + DUK_ASSERT(h_obj != NULL); + DUK_HBUFOBJ_ASSERT_VALID(h_obj); + return h_obj; + } + + DUK_ERROR_TYPE(thr, DUK_STR_NOT_BUFFER); + DUK_WO_NORETURN(return NULL;); +} + +DUK_LOCAL void duk__set_bufobj_buffer(duk_hthread *thr, duk_hbufobj *h_bufobj, duk_hbuffer *h_val) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h_bufobj != NULL); + DUK_ASSERT(h_bufobj->buf == NULL); /* no need to decref */ + DUK_ASSERT(h_val != NULL); + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + DUK_UNREF(thr); + + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + h_bufobj->length = (duk_uint_t) DUK_HBUFFER_GET_SIZE(h_val); + DUK_ASSERT(h_bufobj->shift == 0); + DUK_ASSERT(h_bufobj->elem_type == DUK_HBUFOBJ_ELEM_UINT8); + DUK_ASSERT(h_bufobj->is_typedarray == 0); + + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); +} + +/* Shared offset/length coercion helper. */ +DUK_LOCAL void duk__resolve_offset_opt_length(duk_hthread *thr, + duk_hbufobj *h_bufarg, + duk_idx_t idx_offset, + duk_idx_t idx_length, + duk_uint_t *out_offset, + duk_uint_t *out_length, + duk_bool_t throw_flag) { + duk_int_t offset_signed; + duk_int_t length_signed; + duk_uint_t offset; + duk_uint_t length; + + offset_signed = duk_to_int(thr, idx_offset); + if (offset_signed < 0) { + goto fail_range; + } + offset = (duk_uint_t) offset_signed; + if (offset > h_bufarg->length) { + goto fail_range; + } + DUK_ASSERT_DISABLE(offset >= 0); /* unsigned */ + DUK_ASSERT(offset <= h_bufarg->length); + + if (duk_is_undefined(thr, idx_length)) { + DUK_ASSERT(h_bufarg->length >= offset); + length = h_bufarg->length - offset; /* >= 0 */ + } else { + length_signed = duk_to_int(thr, idx_length); + if (length_signed < 0) { + goto fail_range; + } + length = (duk_uint_t) length_signed; + DUK_ASSERT(h_bufarg->length >= offset); + if (length > h_bufarg->length - offset) { + /* Unlike for negative arguments, some call sites + * want length to be clamped if it's positive. + */ + if (throw_flag) { + goto fail_range; + } else { + length = h_bufarg->length - offset; + } + } + } + DUK_ASSERT_DISABLE(length >= 0); /* unsigned */ + DUK_ASSERT(offset + length <= h_bufarg->length); + + *out_offset = offset; + *out_length = length; + return; + + fail_range: + DUK_ERROR_RANGE(thr, DUK_STR_INVALID_ARGS); + DUK_WO_NORETURN(return;); +} + +/* Shared lenient buffer length clamping helper. No negative indices, no + * element/byte shifting. + */ +DUK_LOCAL void duk__clamp_startend_nonegidx_noshift(duk_hthread *thr, + duk_int_t buffer_length, + duk_idx_t idx_start, + duk_idx_t idx_end, + duk_int_t *out_start_offset, + duk_int_t *out_end_offset) { + duk_int_t start_offset; + duk_int_t end_offset; + + DUK_ASSERT(out_start_offset != NULL); + DUK_ASSERT(out_end_offset != NULL); + + /* undefined coerces to zero which is correct */ + start_offset = duk_to_int_clamped(thr, idx_start, 0, buffer_length); + if (duk_is_undefined(thr, idx_end)) { + end_offset = buffer_length; + } else { + end_offset = duk_to_int_clamped(thr, idx_end, start_offset, buffer_length); + } + + DUK_ASSERT(start_offset >= 0); + DUK_ASSERT(start_offset <= buffer_length); + DUK_ASSERT(end_offset >= 0); + DUK_ASSERT(end_offset <= buffer_length); + DUK_ASSERT(start_offset <= end_offset); + + *out_start_offset = start_offset; + *out_end_offset = end_offset; +} + +/* Shared lenient buffer length clamping helper. Indices are treated as + * element indices (though output values are byte offsets) which only + * really matters for TypedArray views as other buffer object have a zero + * shift. Negative indices are counted from end of input slice; crossed + * indices are clamped to zero length; and final indices are clamped + * against input slice. Used for e.g. ArrayBuffer slice(). + */ +DUK_LOCAL void duk__clamp_startend_negidx_shifted(duk_hthread *thr, + duk_int_t buffer_length, + duk_uint8_t buffer_shift, + duk_idx_t idx_start, + duk_idx_t idx_end, + duk_int_t *out_start_offset, + duk_int_t *out_end_offset) { + duk_int_t start_offset; + duk_int_t end_offset; + + DUK_ASSERT(out_start_offset != NULL); + DUK_ASSERT(out_end_offset != NULL); + + buffer_length >>= buffer_shift; /* as (full) elements */ + + /* Resolve start/end offset as element indices first; arguments + * at idx_start/idx_end are element offsets. Working with element + * indices first also avoids potential for wrapping. + */ + + start_offset = duk_to_int(thr, idx_start); + if (start_offset < 0) { + start_offset = buffer_length + start_offset; + } + if (duk_is_undefined(thr, idx_end)) { + end_offset = buffer_length; + } else { + end_offset = duk_to_int(thr, idx_end); + if (end_offset < 0) { + end_offset = buffer_length + end_offset; + } + } + /* Note: start_offset/end_offset can still be < 0 here. */ + + if (start_offset < 0) { + start_offset = 0; + } else if (start_offset > buffer_length) { + start_offset = buffer_length; + } + if (end_offset < start_offset) { + end_offset = start_offset; + } else if (end_offset > buffer_length) { + end_offset = buffer_length; + } + DUK_ASSERT(start_offset >= 0); + DUK_ASSERT(start_offset <= buffer_length); + DUK_ASSERT(end_offset >= 0); + DUK_ASSERT(end_offset <= buffer_length); + DUK_ASSERT(start_offset <= end_offset); + + /* Convert indices to byte offsets. */ + start_offset <<= buffer_shift; + end_offset <<= buffer_shift; + + *out_start_offset = start_offset; + *out_end_offset = end_offset; +} + +DUK_INTERNAL void duk_hbufobj_promote_plain(duk_hthread *thr, duk_idx_t idx) { + if (duk_is_buffer(thr, idx)) { + duk_to_object(thr, idx); + } +} + +DUK_INTERNAL void duk_hbufobj_push_uint8array_from_plain(duk_hthread *thr, duk_hbuffer *h_buf) { + /* Push Uint8Array which will share the same underlying buffer as + * the plain buffer argument. Also create an ArrayBuffer with the + * same backing for the result .buffer property. + */ + + duk_push_hbuffer(thr, h_buf); + duk_push_buffer_object(thr, -1, 0, (duk_size_t) DUK_HBUFFER_GET_SIZE(h_buf), DUK_BUFOBJ_UINT8ARRAY); + duk_remove_m2(thr); + +#if 0 + /* More verbose equivalent; maybe useful if e.g. .buffer is omitted. */ + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_UINT8ARRAY), + DUK_BIDX_UINT8ARRAY_PROTOTYPE); + DUK_ASSERT(h_bufobj != NULL); + duk__set_bufobj_buffer(thr, h_bufobj, h_buf); + h_bufobj->is_typedarray = 1; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + h_arrbuf = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ARRAYBUFFER), + DUK_BIDX_ARRAYBUFFER_PROTOTYPE); + DUK_ASSERT(h_arrbuf != NULL); + duk__set_bufobj_buffer(thr, h_arrbuf, h_buf); + DUK_ASSERT(h_arrbuf->is_typedarray == 0); + DUK_HBUFOBJ_ASSERT_VALID(h_arrbuf); + + DUK_ASSERT(h_bufobj->buf_prop == NULL); + h_bufobj->buf_prop = (duk_hobject *) h_arrbuf; + DUK_ASSERT(h_arrbuf != NULL); + DUK_HBUFOBJ_INCREF(thr, h_arrbuf); + duk_pop(thr); +#endif +} + +/* Indexed read helper for buffer objects, also called from outside this file. */ +DUK_INTERNAL void duk_hbufobj_push_validated_read(duk_hthread *thr, duk_hbufobj *h_bufobj, duk_uint8_t *p, duk_small_uint_t elem_size) { + duk_double_union du; + + DUK_ASSERT(elem_size > 0); + duk_memcpy((void *) du.uc, (const void *) p, (size_t) elem_size); + + switch (h_bufobj->elem_type) { + case DUK_HBUFOBJ_ELEM_UINT8: + case DUK_HBUFOBJ_ELEM_UINT8CLAMPED: + duk_push_uint(thr, (duk_uint_t) du.uc[0]); + break; + case DUK_HBUFOBJ_ELEM_INT8: + duk_push_int(thr, (duk_int_t) (duk_int8_t) du.uc[0]); + break; + case DUK_HBUFOBJ_ELEM_UINT16: + duk_push_uint(thr, (duk_uint_t) du.us[0]); + break; + case DUK_HBUFOBJ_ELEM_INT16: + duk_push_int(thr, (duk_int_t) (duk_int16_t) du.us[0]); + break; + case DUK_HBUFOBJ_ELEM_UINT32: + duk_push_uint(thr, (duk_uint_t) du.ui[0]); + break; + case DUK_HBUFOBJ_ELEM_INT32: + duk_push_int(thr, (duk_int_t) (duk_int32_t) du.ui[0]); + break; + case DUK_HBUFOBJ_ELEM_FLOAT32: + duk_push_number(thr, (duk_double_t) du.f[0]); + break; + case DUK_HBUFOBJ_ELEM_FLOAT64: + duk_push_number(thr, (duk_double_t) du.d); + break; + default: + DUK_UNREACHABLE(); + } +} + +/* Indexed write helper for buffer objects, also called from outside this file. */ +DUK_INTERNAL void duk_hbufobj_validated_write(duk_hthread *thr, duk_hbufobj *h_bufobj, duk_uint8_t *p, duk_small_uint_t elem_size) { + duk_double_union du; + + /* NOTE! Caller must ensure that any side effects from the + * coercions below are safe. If that cannot be guaranteed + * (which is normally the case), caller must coerce the + * argument using duk_to_number() before any pointer + * validations; the result of duk_to_number() always coerces + * without side effects here. + */ + + switch (h_bufobj->elem_type) { + case DUK_HBUFOBJ_ELEM_UINT8: + du.uc[0] = (duk_uint8_t) duk_to_uint32(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_UINT8CLAMPED: + du.uc[0] = (duk_uint8_t) duk_to_uint8clamped(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_INT8: + du.uc[0] = (duk_uint8_t) duk_to_int32(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_UINT16: + du.us[0] = (duk_uint16_t) duk_to_uint32(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_INT16: + du.us[0] = (duk_uint16_t) duk_to_int32(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_UINT32: + du.ui[0] = (duk_uint32_t) duk_to_uint32(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_INT32: + du.ui[0] = (duk_uint32_t) duk_to_int32(thr, -1); + break; + case DUK_HBUFOBJ_ELEM_FLOAT32: + /* A double-to-float cast is undefined behavior in C99 if + * the cast is out-of-range, so use a helper. Example: + * runtime error: value -1e+100 is outside the range of representable values of type 'float' + */ + du.f[0] = duk_double_to_float_t(duk_to_number_m1(thr)); + break; + case DUK_HBUFOBJ_ELEM_FLOAT64: + du.d = (duk_double_t) duk_to_number_m1(thr); + break; + default: + DUK_UNREACHABLE(); + } + + DUK_ASSERT(elem_size > 0); + duk_memcpy((void *) p, (const void *) du.uc, (size_t) elem_size); +} + +/* Helper to create a fixed buffer from argument value at index 0. + * Node.js and allocPlain() compatible. + */ +DUK_LOCAL duk_hbuffer *duk__hbufobj_fixed_from_argvalue(duk_hthread *thr) { + duk_int_t len; + duk_int_t i; + duk_size_t buf_size; + duk_uint8_t *buf; + + switch (duk_get_type(thr, 0)) { + case DUK_TYPE_NUMBER: { + len = duk_to_int_clamped(thr, 0, 0, DUK_INT_MAX); + (void) duk_push_fixed_buffer_zero(thr, (duk_size_t) len); + break; + } + case DUK_TYPE_BUFFER: { /* Treat like Uint8Array. */ + goto slow_copy; + } + case DUK_TYPE_OBJECT: { + duk_hobject *h; + duk_hbufobj *h_bufobj; + + /* For Node.js Buffers "Passing an ArrayBuffer returns a Buffer + * that shares allocated memory with the given ArrayBuffer." + * https://nodejs.org/api/buffer.html#buffer_buffer_from_buffer_alloc_and_buffer_allocunsafe + */ + + h = duk_known_hobject(thr, 0); + if (DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_ARRAYBUFFER) { + DUK_ASSERT(DUK_HOBJECT_IS_BUFOBJ(h)); + h_bufobj = (duk_hbufobj *) h; + if (DUK_UNLIKELY(h_bufobj->buf == NULL)) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return NULL;); + } + if (DUK_UNLIKELY(h_bufobj->offset != 0 || h_bufobj->length != DUK_HBUFFER_GET_SIZE(h_bufobj->buf))) { + /* No support for ArrayBuffers with slice + * offset/length. + */ + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return NULL;); + } + duk_push_hbuffer(thr, h_bufobj->buf); + return h_bufobj->buf; + } + goto slow_copy; + } + case DUK_TYPE_STRING: { + /* ignore encoding for now */ + duk_require_hstring_notsymbol(thr, 0); + duk_dup_0(thr); + (void) duk_to_buffer(thr, -1, &buf_size); + break; + } + default: + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return NULL;); + } + + done: + DUK_ASSERT(duk_is_buffer(thr, -1)); + return duk_known_hbuffer(thr, -1); + + slow_copy: + /* XXX: fast path for typed arrays and other buffer objects? */ + + (void) duk_get_prop_stridx_short(thr, 0, DUK_STRIDX_LENGTH); + len = duk_to_int_clamped(thr, -1, 0, DUK_INT_MAX); + duk_pop(thr); + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, (duk_size_t) len); /* no zeroing, all indices get initialized */ + for (i = 0; i < len; i++) { + /* XXX: fast path for array or buffer arguments? */ + duk_get_prop_index(thr, 0, (duk_uarridx_t) i); + buf[i] = (duk_uint8_t) (duk_to_uint32(thr, -1) & 0xffU); + duk_pop(thr); + } + goto done; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer constructor + * + * Node.js Buffers are just Uint8Arrays with internal prototype set to + * Buffer.prototype so they're handled otherwise the same as Uint8Array. + * However, the constructor arguments are very different so a separate + * constructor entry point is used. + */ +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_constructor(duk_hthread *thr) { + duk_hbuffer *h_buf; + + h_buf = duk__hbufobj_fixed_from_argvalue(thr); + DUK_ASSERT(h_buf != NULL); + + duk_push_buffer_object(thr, + -1, + 0, + DUK_HBUFFER_FIXED_GET_SIZE((duk_hbuffer_fixed *) (void *) h_buf), + DUK_BUFOBJ_UINT8ARRAY); + duk_push_hobject_bidx(thr, DUK_BIDX_NODEJS_BUFFER_PROTOTYPE); + duk_set_prototype(thr, -2); + + /* XXX: a more direct implementation */ + + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * ArrayBuffer, DataView, and TypedArray constructors + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_arraybuffer_constructor(duk_hthread *thr) { + duk_hbufobj *h_bufobj; + duk_hbuffer *h_val; + duk_int_t len; + + DUK_CTX_ASSERT_VALID(thr); + + duk_require_constructor_call(thr); + + len = duk_to_int(thr, 0); + if (len < 0) { + goto fail_length; + } + (void) duk_push_fixed_buffer_zero(thr, (duk_size_t) len); + h_val = (duk_hbuffer *) duk_known_hbuffer(thr, -1); + + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ARRAYBUFFER), + DUK_BIDX_ARRAYBUFFER_PROTOTYPE); + DUK_ASSERT(h_bufobj != NULL); + + duk__set_bufobj_buffer(thr, h_bufobj, h_val); + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + return 1; + + fail_length: + DUK_DCERROR_RANGE_INVALID_LENGTH(thr); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + + +/* Format of magic, bits: + * 0...1: elem size shift (0-3) + * 2...5: elem type (DUK_HBUFOBJ_ELEM_xxx) + * + * XXX: add prototype bidx explicitly to magic instead of using a mapping? + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_typedarray_constructor(duk_hthread *thr) { + duk_tval *tv; + duk_hobject *h_obj; + duk_hbufobj *h_bufobj = NULL; + duk_hbufobj *h_bufarg = NULL; + duk_hbuffer *h_val; + duk_small_uint_t magic; + duk_small_uint_t shift; + duk_small_uint_t elem_type; + duk_small_uint_t elem_size; + duk_small_uint_t class_num; + duk_small_uint_t proto_bidx; + duk_uint_t align_mask; + duk_uint_t elem_length; + duk_int_t elem_length_signed; + duk_uint_t byte_length; + duk_small_uint_t copy_mode; + + /* XXX: The same copy helpers could be shared with at least some + * buffer functions. + */ + + duk_require_constructor_call(thr); + + /* We could fit built-in index into magic but that'd make the magic + * number dependent on built-in numbering (genbuiltins.py doesn't + * handle that yet). So map both class and prototype from the + * element type. + */ + magic = (duk_small_uint_t) duk_get_current_magic(thr); + shift = magic & 0x03U; /* bits 0...1: shift */ + elem_type = (magic >> 2) & 0x0fU; /* bits 2...5: type */ + elem_size = 1U << shift; + align_mask = elem_size - 1; + DUK_ASSERT(elem_type < sizeof(duk__buffer_proto_from_elemtype) / sizeof(duk_uint8_t)); + proto_bidx = duk__buffer_proto_from_elemtype[elem_type]; + DUK_ASSERT(proto_bidx < DUK_NUM_BUILTINS); + DUK_ASSERT(elem_type < sizeof(duk__buffer_class_from_elemtype) / sizeof(duk_uint8_t)); + class_num = duk__buffer_class_from_elemtype[elem_type]; + + DUK_DD(DUK_DDPRINT("typedarray constructor, magic=%d, shift=%d, elem_type=%d, " + "elem_size=%d, proto_bidx=%d, class_num=%d", + (int) magic, (int) shift, (int) elem_type, (int) elem_size, + (int) proto_bidx, (int) class_num)); + + /* Argument variants. When the argument is an ArrayBuffer a view to + * the same buffer is created; otherwise a new ArrayBuffer is always + * created. + */ + + /* XXX: initial iteration to treat a plain buffer like an ArrayBuffer: + * coerce to an ArrayBuffer object and use that as .buffer. The underlying + * buffer will be the same but result .buffer !== inputPlainBuffer. + */ + duk_hbufobj_promote_plain(thr, 0); + + tv = duk_get_tval(thr, 0); + DUK_ASSERT(tv != NULL); /* arg count */ + if (DUK_TVAL_IS_OBJECT(tv)) { + h_obj = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h_obj != NULL); + + if (DUK_HOBJECT_GET_CLASS_NUMBER(h_obj) == DUK_HOBJECT_CLASS_ARRAYBUFFER) { + /* ArrayBuffer: unlike any other argument variant, create + * a view into the existing buffer. + */ + + duk_int_t byte_offset_signed; + duk_uint_t byte_offset; + + h_bufarg = (duk_hbufobj *) h_obj; + + byte_offset_signed = duk_to_int(thr, 1); + if (byte_offset_signed < 0) { + goto fail_arguments; + } + byte_offset = (duk_uint_t) byte_offset_signed; + if (byte_offset > h_bufarg->length || + (byte_offset & align_mask) != 0) { + /* Must be >= 0 and multiple of element size. */ + goto fail_arguments; + } + if (duk_is_undefined(thr, 2)) { + DUK_ASSERT(h_bufarg->length >= byte_offset); + byte_length = h_bufarg->length - byte_offset; + if ((byte_length & align_mask) != 0) { + /* Must be element size multiple from + * start offset to end of buffer. + */ + goto fail_arguments; + } + elem_length = (byte_length >> shift); + } else { + elem_length_signed = duk_to_int(thr, 2); + if (elem_length_signed < 0) { + goto fail_arguments; + } + elem_length = (duk_uint_t) elem_length_signed; + byte_length = elem_length << shift; + if ((byte_length >> shift) != elem_length) { + /* Byte length would overflow. */ + /* XXX: easier check with less code? */ + goto fail_arguments; + } + DUK_ASSERT(h_bufarg->length >= byte_offset); + if (byte_length > h_bufarg->length - byte_offset) { + /* Not enough data. */ + goto fail_arguments; + } + } + DUK_UNREF(elem_length); + DUK_ASSERT_DISABLE(byte_offset >= 0); + DUK_ASSERT(byte_offset <= h_bufarg->length); + DUK_ASSERT_DISABLE(byte_length >= 0); + DUK_ASSERT(byte_offset + byte_length <= h_bufarg->length); + DUK_ASSERT((elem_length << shift) == byte_length); + + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(class_num), + (duk_small_int_t) proto_bidx); + h_val = h_bufarg->buf; + if (h_val == NULL) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + h_bufobj->offset = h_bufarg->offset + byte_offset; + h_bufobj->length = byte_length; + h_bufobj->shift = (duk_uint8_t) shift; + h_bufobj->elem_type = (duk_uint8_t) elem_type; + h_bufobj->is_typedarray = 1; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + /* Set .buffer to the argument ArrayBuffer. */ + DUK_ASSERT(h_bufobj->buf_prop == NULL); + h_bufobj->buf_prop = (duk_hobject *) h_bufarg; + DUK_ASSERT(h_bufarg != NULL); + DUK_HBUFOBJ_INCREF(thr, h_bufarg); + return 1; + } else if (DUK_HOBJECT_IS_BUFOBJ(h_obj)) { + /* TypedArray (or other non-ArrayBuffer duk_hbufobj). + * Conceptually same behavior as for an Array-like argument, + * with a few fast paths. + */ + + h_bufarg = (duk_hbufobj *) h_obj; + DUK_HBUFOBJ_ASSERT_VALID(h_bufarg); + elem_length_signed = (duk_int_t) (h_bufarg->length >> h_bufarg->shift); + if (h_bufarg->buf == NULL) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + /* Select copy mode. Must take into account element + * compatibility and validity of the underlying source + * buffer. + */ + + DUK_DDD(DUK_DDDPRINT("selecting copy mode for bufobj arg, " + "src byte_length=%ld, src shift=%d, " + "src/dst elem_length=%ld; " + "dst shift=%d -> dst byte_length=%ld", + (long) h_bufarg->length, (int) h_bufarg->shift, + (long) elem_length_signed, (int) shift, + (long) (elem_length_signed << shift))); + + copy_mode = 2; /* default is explicit index read/write copy */ +#if !defined(DUK_USE_PREFER_SIZE) + /* With a size optimized build copy_mode 2 is enough. + * Modes 0 and 1 are faster but conceptually the same. + */ + DUK_ASSERT(elem_type < sizeof(duk__buffer_elemtype_copy_compatible) / sizeof(duk_uint16_t)); + if (DUK_HBUFOBJ_VALID_SLICE(h_bufarg)) { + if ((duk__buffer_elemtype_copy_compatible[elem_type] & (1 << h_bufarg->elem_type)) != 0) { + DUK_DDD(DUK_DDDPRINT("source/target are copy compatible, memcpy")); + DUK_ASSERT(shift == h_bufarg->shift); /* byte sizes will match */ + copy_mode = 0; + } else { + DUK_DDD(DUK_DDDPRINT("source/target not copy compatible but valid, fast copy")); + copy_mode = 1; + } + } +#endif /* !DUK_USE_PREFER_SIZE */ + } else { + /* Array or Array-like */ + elem_length_signed = (duk_int_t) duk_get_length(thr, 0); + copy_mode = 2; + } + } else { + /* Non-object argument is simply int coerced, matches + * V8 behavior (except for "null", which we coerce to + * 0 but V8 TypeErrors). + */ + elem_length_signed = duk_to_int(thr, 0); + copy_mode = 3; + } + if (elem_length_signed < 0) { + goto fail_arguments; + } + elem_length = (duk_uint_t) elem_length_signed; + byte_length = (duk_uint_t) (elem_length << shift); + if ((byte_length >> shift) != elem_length) { + /* Byte length would overflow. */ + /* XXX: easier check with less code? */ + goto fail_arguments; + } + + DUK_DDD(DUK_DDDPRINT("elem_length=%ld, byte_length=%ld", + (long) elem_length, (long) byte_length)); + + /* ArrayBuffer argument is handled specially above; the rest of the + * argument variants are handled by shared code below. + * + * ArrayBuffer in h_bufobj->buf_prop is intentionally left unset. + * It will be automatically created by the .buffer accessor on + * first access. + */ + + /* Push the resulting view object on top of a plain fixed buffer. */ + (void) duk_push_fixed_buffer(thr, byte_length); + h_val = duk_known_hbuffer(thr, -1); + DUK_ASSERT(h_val != NULL); + + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(class_num), + (duk_small_int_t) proto_bidx); + + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + DUK_ASSERT(h_bufobj->offset == 0); + h_bufobj->length = byte_length; + h_bufobj->shift = (duk_uint8_t) shift; + h_bufobj->elem_type = (duk_uint8_t) elem_type; + h_bufobj->is_typedarray = 1; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + /* Copy values, the copy method depends on the arguments. + * + * Copy mode decision may depend on the validity of the underlying + * buffer of the source argument; there must be no harmful side effects + * from there to here for copy_mode to still be valid. + */ + DUK_DDD(DUK_DDDPRINT("copy mode: %d", (int) copy_mode)); + switch (copy_mode) { + /* Copy modes 0 and 1 can be omitted in size optimized build, + * copy mode 2 handles them (but more slowly). + */ +#if !defined(DUK_USE_PREFER_SIZE) + case 0: { + /* Use byte copy. */ + + duk_uint8_t *p_src; + duk_uint8_t *p_dst; + + DUK_ASSERT(h_bufobj != NULL); + DUK_ASSERT(h_bufobj->buf != NULL); + DUK_ASSERT(DUK_HBUFOBJ_VALID_SLICE(h_bufobj)); + DUK_ASSERT(h_bufarg != NULL); + DUK_ASSERT(h_bufarg->buf != NULL); + DUK_ASSERT(DUK_HBUFOBJ_VALID_SLICE(h_bufarg)); + + p_dst = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufobj); + p_src = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufarg); + + DUK_DDD(DUK_DDDPRINT("using memcpy: p_src=%p, p_dst=%p, byte_length=%ld", + (void *) p_src, (void *) p_dst, (long) byte_length)); + + duk_memcpy_unsafe((void *) p_dst, (const void *) p_src, (size_t) byte_length); + break; + } + case 1: { + /* Copy values through direct validated reads and writes. */ + + duk_small_uint_t src_elem_size; + duk_small_uint_t dst_elem_size; + duk_uint8_t *p_src; + duk_uint8_t *p_src_end; + duk_uint8_t *p_dst; + + DUK_ASSERT(h_bufobj != NULL); + DUK_ASSERT(h_bufobj->buf != NULL); + DUK_ASSERT(DUK_HBUFOBJ_VALID_SLICE(h_bufobj)); + DUK_ASSERT(h_bufarg != NULL); + DUK_ASSERT(h_bufarg->buf != NULL); + DUK_ASSERT(DUK_HBUFOBJ_VALID_SLICE(h_bufarg)); + + src_elem_size = (duk_small_uint_t) (1U << h_bufarg->shift); + dst_elem_size = elem_size; + + p_src = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufarg); + p_dst = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufobj); + p_src_end = p_src + h_bufarg->length; + + DUK_DDD(DUK_DDDPRINT("using fast copy: p_src=%p, p_src_end=%p, p_dst=%p, " + "src_elem_size=%d, dst_elem_size=%d", + (void *) p_src, (void *) p_src_end, (void *) p_dst, + (int) src_elem_size, (int) dst_elem_size)); + + while (p_src != p_src_end) { + DUK_DDD(DUK_DDDPRINT("fast path per element copy loop: " + "p_src=%p, p_src_end=%p, p_dst=%p", + (void *) p_src, (void *) p_src_end, (void *) p_dst)); + /* A validated read() is always a number, so it's write coercion + * is always side effect free an won't invalidate pointers etc. + */ + duk_hbufobj_push_validated_read(thr, h_bufarg, p_src, src_elem_size); + duk_hbufobj_validated_write(thr, h_bufobj, p_dst, dst_elem_size); + duk_pop(thr); + p_src += src_elem_size; + p_dst += dst_elem_size; + } + break; + } +#endif /* !DUK_USE_PREFER_SIZE */ + case 2: { + /* Copy values by index reads and writes. Let virtual + * property handling take care of coercion. + */ + duk_uint_t i; + + DUK_DDD(DUK_DDDPRINT("using slow copy")); + + for (i = 0; i < elem_length; i++) { + duk_get_prop_index(thr, 0, (duk_uarridx_t) i); + duk_put_prop_index(thr, -2, (duk_uarridx_t) i); + } + break; + } + default: + case 3: { + /* No copy, leave zero bytes in the buffer. There's no + * ambiguity with Float32/Float64 because zero bytes also + * represent 0.0. + */ + + DUK_DDD(DUK_DDDPRINT("using no copy")); + break; + } + } + + return 1; + + fail_arguments: + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#else /* DUK_USE_BUFFEROBJECT_SUPPORT */ +/* When bufferobject support is disabled, new Uint8Array() could still be + * supported to create a plain fixed buffer. Disabled for now. + */ +#if 0 +DUK_INTERNAL duk_ret_t duk_bi_typedarray_constructor(duk_hthread *thr) { + duk_int_t elem_length_signed; + duk_uint_t byte_length; + + /* XXX: The same copy helpers could be shared with at least some + * buffer functions. + */ + + duk_require_constructor_call(thr); + + elem_length_signed = duk_require_int(thr, 0); + if (elem_length_signed < 0) { + goto fail_arguments; + } + byte_length = (duk_uint_t) elem_length_signed; + + (void) duk_push_fixed_buffer_zero(thr, (duk_size_t) byte_length); + return 1; + + fail_arguments: + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#endif /* 0 */ +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_dataview_constructor(duk_hthread *thr) { + duk_hbufobj *h_bufarg; + duk_hbufobj *h_bufobj; + duk_hbuffer *h_val; + duk_uint_t offset; + duk_uint_t length; + + duk_require_constructor_call(thr); + + h_bufarg = duk__require_bufobj_value(thr, 0); + DUK_ASSERT(h_bufarg != NULL); + if (DUK_HOBJECT_GET_CLASS_NUMBER((duk_hobject *) h_bufarg) != DUK_HOBJECT_CLASS_ARRAYBUFFER) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + duk__resolve_offset_opt_length(thr, h_bufarg, 1, 2, &offset, &length, 1 /*throw_flag*/); + DUK_ASSERT(offset <= h_bufarg->length); + DUK_ASSERT(offset + length <= h_bufarg->length); + + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DATAVIEW), + DUK_BIDX_DATAVIEW_PROTOTYPE); + + h_val = h_bufarg->buf; + if (h_val == NULL) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + h_bufobj->offset = h_bufarg->offset + offset; + h_bufobj->length = length; + DUK_ASSERT(h_bufobj->shift == 0); + DUK_ASSERT(h_bufobj->elem_type == DUK_HBUFOBJ_ELEM_UINT8); + DUK_ASSERT(h_bufobj->is_typedarray == 0); + + DUK_ASSERT(h_bufobj->buf_prop == NULL); + h_bufobj->buf_prop = (duk_hobject *) h_bufarg; + DUK_ASSERT(h_bufarg != NULL); + DUK_HBUFOBJ_INCREF(thr, h_bufarg); + + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * ArrayBuffer.isView() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_arraybuffer_isview(duk_hthread *thr) { + duk_hobject *h_obj; + duk_bool_t ret = 0; + + if (duk_is_buffer(thr, 0)) { + ret = 1; + } else { + h_obj = duk_get_hobject(thr, 0); + if (h_obj != NULL && DUK_HOBJECT_IS_BUFOBJ(h_obj)) { + /* DataView needs special casing: ArrayBuffer.isView() is + * true, but ->is_typedarray is 0. + */ + ret = ((duk_hbufobj *) h_obj)->is_typedarray || + (DUK_HOBJECT_GET_CLASS_NUMBER(h_obj) == DUK_HOBJECT_CLASS_DATAVIEW); + } + } + duk_push_boolean(thr, ret); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Uint8Array.allocPlain() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_uint8array_allocplain(duk_hthread *thr) { + duk__hbufobj_fixed_from_argvalue(thr); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Uint8Array.plainOf() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_uint8array_plainof(duk_hthread *thr) { + duk_hbufobj *h_bufobj; + +#if !defined(DUK_USE_PREFER_SIZE) + /* Avoid churn if argument is already a plain buffer. */ + if (duk_is_buffer(thr, 0)) { + return 1; + } +#endif + + /* Promotes plain buffers to ArrayBuffers, so for a plain buffer + * argument we'll create a pointless temporary (but still work + * correctly). + */ + h_bufobj = duk__require_bufobj_value(thr, 0); + if (h_bufobj->buf == NULL) { + duk_push_undefined(thr); + } else { + duk_push_hbuffer(thr, h_bufobj->buf); + } + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer: toString([encoding], [start], [end]) + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_tostring(duk_hthread *thr) { + duk_hbufobj *h_this; + duk_int_t start_offset, end_offset; + duk_uint8_t *buf_slice; + duk_size_t slice_length; + + h_this = duk__get_bufobj_this(thr); + if (h_this == NULL) { + /* XXX: happens e.g. when evaluating: String(Buffer.prototype). */ + duk_push_literal(thr, "[object Object]"); + return 1; + } + DUK_HBUFOBJ_ASSERT_VALID(h_this); + + /* Ignore encoding for now. */ + + duk__clamp_startend_nonegidx_noshift(thr, + (duk_int_t) h_this->length, + 1 /*idx_start*/, + 2 /*idx_end*/, + &start_offset, + &end_offset); + + slice_length = (duk_size_t) (end_offset - start_offset); + buf_slice = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, slice_length); /* all bytes initialized below */ + DUK_ASSERT(buf_slice != NULL); + + /* Neutered or uncovered, TypeError. */ + if (h_this->buf == NULL || + !DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_this, (duk_size_t) start_offset + slice_length)) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + /* XXX: ideally we wouldn't make a copy but a view into the buffer for the + * decoding process. Or the decoding helper could be changed to accept + * the slice info (a buffer pointer is NOT a good approach because guaranteeing + * its stability is difficult). + */ + + DUK_ASSERT(DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_this, (duk_size_t) start_offset + slice_length)); + duk_memcpy_unsafe((void *) buf_slice, + (const void *) (DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this) + start_offset), + (size_t) slice_length); + + /* Use the equivalent of: new TextEncoder().encode(this) to convert the + * string. Result will be valid UTF-8; non-CESU-8 inputs are currently + * interpreted loosely. Value stack convention is a bit odd for now. + */ + duk_replace(thr, 0); + duk_set_top(thr, 1); + return duk_textdecoder_decode_utf8_nodejs(thr); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.prototype: toJSON() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_tojson(duk_hthread *thr) { + duk_hbufobj *h_this; + duk_uint8_t *buf; + duk_uint_t i, n; + duk_tval *tv; + + h_this = duk__require_bufobj_this(thr); + DUK_ASSERT(h_this != NULL); + + if (h_this->buf == NULL || !DUK_HBUFOBJ_VALID_SLICE(h_this)) { + /* Serialize uncovered backing buffer as a null; doesn't + * really matter as long we're memory safe. + */ + duk_push_null(thr); + return 1; + } + + duk_push_object(thr); + duk_push_hstring_stridx(thr, DUK_STRIDX_UC_BUFFER); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_TYPE); + + /* XXX: uninitialized would be OK */ + DUK_ASSERT_DISABLE((duk_size_t) h_this->length <= (duk_size_t) DUK_UINT32_MAX); + tv = duk_push_harray_with_size_outptr(thr, (duk_uint32_t) h_this->length); /* XXX: needs revision with >4G buffers */ + DUK_ASSERT(!duk_is_bare_object(thr, -1)); + + DUK_ASSERT(h_this->buf != NULL); + buf = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this); + for (i = 0, n = h_this->length; i < n; i++) { + DUK_TVAL_SET_U32(tv + i, (duk_uint32_t) buf[i]); /* no need for decref or incref */ + } + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_DATA); + + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.prototype.equals() + * Node.js Buffer.prototype.compare() + * Node.js Buffer.compare() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_buffer_compare_shared(duk_hthread *thr) { + duk_small_uint_t magic; + duk_hbufobj *h_bufarg1; + duk_hbufobj *h_bufarg2; + duk_small_int_t comp_res; + + /* XXX: keep support for plain buffers and non-Node.js buffers? */ + + magic = (duk_small_uint_t) duk_get_current_magic(thr); + if (magic & 0x02U) { + /* Static call style. */ + h_bufarg1 = duk__require_bufobj_value(thr, 0); + h_bufarg2 = duk__require_bufobj_value(thr, 1); + } else { + h_bufarg1 = duk__require_bufobj_this(thr); + h_bufarg2 = duk__require_bufobj_value(thr, 0); + } + DUK_ASSERT(h_bufarg1 != NULL); + DUK_ASSERT(h_bufarg2 != NULL); + + /* We want to compare the slice/view areas of the arguments. + * If either slice/view is invalid (underlying buffer is shorter) + * ensure equals() is false, but otherwise the only thing that + * matters is to be memory safe. + */ + + if (DUK_HBUFOBJ_VALID_SLICE(h_bufarg1) && + DUK_HBUFOBJ_VALID_SLICE(h_bufarg2)) { + comp_res = duk_js_data_compare((const duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufarg1->buf) + h_bufarg1->offset, + (const duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufarg2->buf) + h_bufarg2->offset, + (duk_size_t) h_bufarg1->length, + (duk_size_t) h_bufarg2->length); + } else { + comp_res = -1; /* either nonzero value is ok */ + } + + if (magic & 0x01U) { + /* compare: similar to string comparison but for buffer data. */ + duk_push_int(thr, comp_res); + } else { + /* equals */ + duk_push_boolean(thr, (comp_res == 0)); + } + + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.prototype.fill() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_fill(duk_hthread *thr) { + duk_hbufobj *h_this; + const duk_uint8_t *fill_str_ptr; + duk_size_t fill_str_len; + duk_uint8_t fill_value; + duk_int_t fill_offset; + duk_int_t fill_end; + duk_size_t fill_length; + duk_uint8_t *p; + + h_this = duk__require_bufobj_this(thr); + DUK_ASSERT(h_this != NULL); + if (h_this->buf == NULL) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + /* [ value offset end ] */ + + if (duk_is_string_notsymbol(thr, 0)) { + fill_str_ptr = (const duk_uint8_t *) duk_get_lstring(thr, 0, &fill_str_len); + DUK_ASSERT(fill_str_ptr != NULL); + } else { + /* Symbols get ToNumber() coerced and cause TypeError. */ + fill_value = (duk_uint8_t) duk_to_uint32(thr, 0); + fill_str_ptr = (const duk_uint8_t *) &fill_value; + fill_str_len = 1; + } + + /* Fill offset handling is more lenient than in Node.js. */ + + duk__clamp_startend_nonegidx_noshift(thr, + (duk_int_t) h_this->length, + 1 /*idx_start*/, + 2 /*idx_end*/, + &fill_offset, + &fill_end); + + DUK_DDD(DUK_DDDPRINT("fill: fill_value=%02x, fill_offset=%ld, fill_end=%ld, view length=%ld", + (unsigned int) fill_value, (long) fill_offset, (long) fill_end, (long) h_this->length)); + + DUK_ASSERT(fill_end - fill_offset >= 0); + DUK_ASSERT(h_this->buf != NULL); + + p = (DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this) + fill_offset); + fill_length = (duk_size_t) (fill_end - fill_offset); + if (fill_str_len == 1) { + /* Handle single character fills as memset() even when + * the fill data comes from a one-char argument. + */ + duk_memset_unsafe((void *) p, (int) fill_str_ptr[0], (size_t) fill_length); + } else if (fill_str_len > 1) { + duk_size_t i, n, t; + + for (i = 0, n = (duk_size_t) (fill_end - fill_offset), t = 0; i < n; i++) { + p[i] = fill_str_ptr[t++]; + if (t >= fill_str_len) { + t = 0; + } + } + } else { + DUK_DDD(DUK_DDDPRINT("zero size fill pattern, ignore silently")); + } + + /* Return the Buffer to allow chaining: b.fill(0x11).fill(0x22, 3, 5).toString() */ + duk_push_this(thr); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.prototype.write(string, [offset], [length], [encoding]) + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_write(duk_hthread *thr) { + duk_hbufobj *h_this; + duk_uint_t offset; + duk_uint_t length; + const duk_uint8_t *str_data; + duk_size_t str_len; + + /* XXX: very inefficient support for plain buffers */ + h_this = duk__require_bufobj_this(thr); + DUK_ASSERT(h_this != NULL); + + /* Argument must be a string, e.g. a buffer is not allowed. */ + str_data = (const duk_uint8_t *) duk_require_lstring_notsymbol(thr, 0, &str_len); + + duk__resolve_offset_opt_length(thr, h_this, 1, 2, &offset, &length, 0 /*throw_flag*/); + DUK_ASSERT(offset <= h_this->length); + DUK_ASSERT(offset + length <= h_this->length); + + /* XXX: encoding is ignored now. */ + + if (length > str_len) { + length = (duk_uint_t) str_len; + } + + if (DUK_HBUFOBJ_VALID_SLICE(h_this)) { + /* Cannot overlap. */ + duk_memcpy_unsafe((void *) (DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this) + offset), + (const void *) str_data, + (size_t) length); + } else { + DUK_DDD(DUK_DDDPRINT("write() target buffer is not covered, silent ignore")); + } + + duk_push_uint(thr, length); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.prototype.copy() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_copy(duk_hthread *thr) { + duk_hbufobj *h_this; + duk_hbufobj *h_bufarg; + duk_int_t source_length; + duk_int_t target_length; + duk_int_t target_start, source_start, source_end; + duk_uint_t target_ustart, source_ustart, source_uend; + duk_uint_t copy_size = 0; + + /* [ targetBuffer targetStart sourceStart sourceEnd ] */ + + h_this = duk__require_bufobj_this(thr); + h_bufarg = duk__require_bufobj_value(thr, 0); + DUK_ASSERT(h_this != NULL); + DUK_ASSERT(h_bufarg != NULL); + source_length = (duk_int_t) h_this->length; + target_length = (duk_int_t) h_bufarg->length; + + target_start = duk_to_int(thr, 1); + source_start = duk_to_int(thr, 2); + if (duk_is_undefined(thr, 3)) { + source_end = source_length; + } else { + source_end = duk_to_int(thr, 3); + } + + DUK_DDD(DUK_DDDPRINT("checking copy args: target_start=%ld, target_length=%ld, " + "source_start=%ld, source_end=%ld, source_length=%ld", + (long) target_start, (long) h_bufarg->length, + (long) source_start, (long) source_end, (long) source_length)); + + /* This behavior mostly mimics Node.js now. */ + + if (source_start < 0 || source_end < 0 || target_start < 0) { + /* Negative offsets cause a RangeError. */ + goto fail_bounds; + } + source_ustart = (duk_uint_t) source_start; + source_uend = (duk_uint_t) source_end; + target_ustart = (duk_uint_t) target_start; + if (source_ustart >= source_uend || /* crossed offsets or zero size */ + source_ustart >= (duk_uint_t) source_length || /* source out-of-bounds (but positive) */ + target_ustart >= (duk_uint_t) target_length) { /* target out-of-bounds (but positive) */ + goto silent_ignore; + } + if (source_uend >= (duk_uint_t) source_length) { + /* Source end clamped silently to available length. */ + source_uend = (duk_uint_t) source_length; + } + copy_size = source_uend - source_ustart; + if (target_ustart + copy_size > (duk_uint_t) target_length) { + /* Clamp to target's end if too long. + * + * NOTE: there's no overflow possibility in the comparison; + * both target_ustart and copy_size are >= 0 and based on + * values in duk_int_t range. Adding them as duk_uint_t + * values is then guaranteed not to overflow. + */ + DUK_ASSERT(target_ustart + copy_size >= target_ustart); /* no overflow */ + DUK_ASSERT(target_ustart + copy_size >= copy_size); /* no overflow */ + copy_size = (duk_uint_t) target_length - target_ustart; + } + + DUK_DDD(DUK_DDDPRINT("making copy: target_ustart=%lu source_ustart=%lu copy_size=%lu", + (unsigned long) target_ustart, (unsigned long) source_ustart, + (unsigned long) copy_size)); + + DUK_ASSERT(copy_size >= 1); + DUK_ASSERT(source_ustart <= (duk_uint_t) source_length); + DUK_ASSERT(source_ustart + copy_size <= (duk_uint_t) source_length); + DUK_ASSERT(target_ustart <= (duk_uint_t) target_length); + DUK_ASSERT(target_ustart + copy_size <= (duk_uint_t) target_length); + + /* Ensure copy is covered by underlying buffers. */ + DUK_ASSERT(h_bufarg->buf != NULL); /* length check */ + DUK_ASSERT(h_this->buf != NULL); /* length check */ + if (DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_bufarg, target_ustart + copy_size) && + DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_this, source_ustart + copy_size)) { + /* Must use memmove() because copy area may overlap (source and target + * buffer may be the same, or from different slices. + */ + duk_memmove_unsafe((void *) (DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufarg) + target_ustart), + (const void *) (DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this) + source_ustart), + (size_t) copy_size); + } else { + DUK_DDD(DUK_DDDPRINT("buffer copy not covered by underlying buffer(s), ignoring")); + } + + silent_ignore: + /* Return value is like write(), number of bytes written. + * The return value matters because of code like: + * "off += buf.copy(...)". + */ + duk_push_uint(thr, copy_size); + return 1; + + fail_bounds: + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * TypedArray.prototype.set() + * + * TypedArray set() is pretty interesting to implement because: + * + * - The source argument may be a plain array or a typedarray. If the + * source is a TypedArray, values are decoded and re-encoded into the + * target (not as a plain byte copy). This may happen even when the + * element byte size is the same, e.g. integer values may be re-encoded + * into floats. + * + * - Source and target may refer to the same underlying buffer, so that + * the set() operation may overlap. The specification requires that this + * must work as if a copy was made before the operation. Note that this + * is NOT a simple memmove() situation because the source and target + * byte sizes may be different -- e.g. a 4-byte source (Int8Array) may + * expand to a 16-byte target (Uint32Array) so that the target overlaps + * the source both from beginning and the end (unlike in typical memmove). + * + * - Even if 'buf' pointers of the source and target differ, there's no + * guarantee that their memory areas don't overlap. This may be the + * case with external buffers. + * + * Even so, it is nice to optimize for the common case: + * + * - Source and target separate buffers or non-overlapping. + * + * - Source and target have a compatible type so that a plain byte copy + * is possible. Note that while e.g. uint8 and int8 are compatible + * (coercion one way or another doesn't change the byte representation), + * e.g. int8 and uint8clamped are NOT compatible when writing int8 + * values into uint8clamped typedarray (-1 would clamp to 0 for instance). + * + * See test-bi-typedarray-proto-set.js. + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_typedarray_set(duk_hthread *thr) { + duk_hbufobj *h_this; + duk_hobject *h_obj; + duk_uarridx_t i, n; + duk_int_t offset_signed; + duk_uint_t offset_elems; + duk_uint_t offset_bytes; + + h_this = duk__require_bufobj_this(thr); + DUK_ASSERT(h_this != NULL); + DUK_HBUFOBJ_ASSERT_VALID(h_this); + + if (h_this->buf == NULL) { + DUK_DDD(DUK_DDDPRINT("source neutered, skip copy")); + return 0; + } + + duk_hbufobj_promote_plain(thr, 0); + h_obj = duk_require_hobject(thr, 0); + + /* XXX: V8 throws a TypeError for negative values. Would it + * be more useful to interpret negative offsets here from the + * end of the buffer too? + */ + offset_signed = duk_to_int(thr, 1); + if (offset_signed < 0) { + /* For some reason this is a TypeError (at least in V8). */ + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + offset_elems = (duk_uint_t) offset_signed; + offset_bytes = offset_elems << h_this->shift; + if ((offset_bytes >> h_this->shift) != offset_elems) { + /* Byte length would overflow. */ + /* XXX: easier check with less code? */ + goto fail_args; + } + if (offset_bytes > h_this->length) { + /* Equality may be OK but >length not. Checking + * this explicitly avoids some overflow cases + * below. + */ + goto fail_args; + } + DUK_ASSERT(offset_bytes <= h_this->length); + + /* Fast path: source is a TypedArray (or any bufobj). */ + + if (DUK_HOBJECT_IS_BUFOBJ(h_obj)) { + duk_hbufobj *h_bufarg; +#if !defined(DUK_USE_PREFER_SIZE) + duk_uint16_t comp_mask; +#endif + duk_small_int_t no_overlap = 0; + duk_uint_t src_length; + duk_uint_t dst_length; + duk_uint_t dst_length_elems; + duk_uint8_t *p_src_base; + duk_uint8_t *p_src_end; + duk_uint8_t *p_src; + duk_uint8_t *p_dst_base; + duk_uint8_t *p_dst; + duk_small_uint_t src_elem_size; + duk_small_uint_t dst_elem_size; + + h_bufarg = (duk_hbufobj *) h_obj; + DUK_HBUFOBJ_ASSERT_VALID(h_bufarg); + + if (h_bufarg->buf == NULL) { + DUK_DDD(DUK_DDDPRINT("target neutered, skip copy")); + return 0; + } + + /* Nominal size check. */ + src_length = h_bufarg->length; /* bytes in source */ + dst_length_elems = (src_length >> h_bufarg->shift); /* elems in source and dest */ + dst_length = dst_length_elems << h_this->shift; /* bytes in dest */ + if ((dst_length >> h_this->shift) != dst_length_elems) { + /* Byte length would overflow. */ + /* XXX: easier check with less code? */ + goto fail_args; + } + DUK_DDD(DUK_DDDPRINT("nominal size check: src_length=%ld, dst_length=%ld", + (long) src_length, (long) dst_length)); + DUK_ASSERT(offset_bytes <= h_this->length); + if (dst_length > h_this->length - offset_bytes) { + /* Overflow not an issue because subtraction is used on the right + * side and guaranteed to be >= 0. + */ + DUK_DDD(DUK_DDDPRINT("copy exceeds target buffer nominal length")); + goto fail_args; + } + if (!DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_this, offset_bytes + dst_length)) { + DUK_DDD(DUK_DDDPRINT("copy not covered by underlying target buffer, ignore")); + return 0; + } + + p_src_base = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufarg); + p_dst_base = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this) + offset_bytes; + + /* Check actual underlying buffers for validity and that they + * cover the copy. No side effects are allowed after the check + * so that the validity status doesn't change. + */ + if (!DUK_HBUFOBJ_VALID_SLICE(h_this) || + !DUK_HBUFOBJ_VALID_SLICE(h_bufarg)) { + /* The condition could be more narrow and check for the + * copy area only, but there's no need for fine grained + * behavior when the underlying buffer is misconfigured. + */ + DUK_DDD(DUK_DDDPRINT("source and/or target not covered by underlying buffer, skip copy")); + return 0; + } + + /* We want to do a straight memory copy if possible: this is + * an important operation because .set() is the TypedArray + * way to copy chunks of memory. However, because set() + * conceptually works in terms of elements, not all views are + * compatible with direct byte copying. + * + * If we do manage a direct copy, the "overlap issue" handled + * below can just be solved using memmove() because the source + * and destination element sizes are necessarily equal. + */ + +#if !defined(DUK_USE_PREFER_SIZE) + DUK_ASSERT(h_this->elem_type < sizeof(duk__buffer_elemtype_copy_compatible) / sizeof(duk_uint16_t)); + comp_mask = duk__buffer_elemtype_copy_compatible[h_this->elem_type]; + if (comp_mask & (1 << h_bufarg->elem_type)) { + DUK_ASSERT(src_length == dst_length); + + DUK_DDD(DUK_DDDPRINT("fast path: able to use memmove() because views are compatible")); + duk_memmove_unsafe((void *) p_dst_base, (const void *) p_src_base, (size_t) dst_length); + return 0; + } + DUK_DDD(DUK_DDDPRINT("fast path: views are not compatible with a byte copy, copy by item")); +#endif /* !DUK_USE_PREFER_SIZE */ + + /* We want to avoid making a copy to process set() but that's + * not always possible: the source and the target may overlap + * and because element sizes are different, the overlap cannot + * always be handled with a memmove() or choosing the copy + * direction in a certain way. For example, if source type is + * uint8 and target type is uint32, the target area may exceed + * the source area from both ends! + * + * Note that because external buffers may point to the same + * memory areas, we must ultimately make this check using + * pointers. + * + * NOTE: careful with side effects: any side effect may cause + * a buffer resize (or external buffer pointer/length update)! + */ + + DUK_DDD(DUK_DDDPRINT("overlap check: p_src_base=%p, src_length=%ld, " + "p_dst_base=%p, dst_length=%ld", + (void *) p_src_base, (long) src_length, + (void *) p_dst_base, (long) dst_length)); + + if (p_src_base >= p_dst_base + dst_length || /* source starts after dest ends */ + p_src_base + src_length <= p_dst_base) { /* source ends before dest starts */ + no_overlap = 1; + } + + if (!no_overlap) { + /* There's overlap: the desired end result is that + * conceptually a copy is made to avoid "trampling" + * of source data by destination writes. We make + * an actual temporary copy to handle this case. + */ + duk_uint8_t *p_src_copy; + + DUK_DDD(DUK_DDDPRINT("there is overlap, make a copy of the source")); + p_src_copy = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, src_length); + DUK_ASSERT(p_src_copy != NULL); + duk_memcpy_unsafe((void *) p_src_copy, (const void *) p_src_base, (size_t) src_length); + + p_src_base = p_src_copy; /* use p_src_base from now on */ + } + /* Value stack intentionally mixed size here. */ + + DUK_DDD(DUK_DDDPRINT("after overlap check: p_src_base=%p, src_length=%ld, " + "p_dst_base=%p, dst_length=%ld, valstack top=%ld", + (void *) p_src_base, (long) src_length, + (void *) p_dst_base, (long) dst_length, + (long) duk_get_top(thr))); + + /* Ready to make the copy. We must proceed element by element + * and must avoid any side effects that might cause the buffer + * validity check above to become invalid. + * + * Although we work through the value stack here, only plain + * numbers are handled which should be side effect safe. + */ + + src_elem_size = (duk_small_uint_t) (1U << h_bufarg->shift); + dst_elem_size = (duk_small_uint_t) (1U << h_this->shift); + p_src = p_src_base; + p_dst = p_dst_base; + p_src_end = p_src_base + src_length; + + while (p_src != p_src_end) { + DUK_DDD(DUK_DDDPRINT("fast path per element copy loop: " + "p_src=%p, p_src_end=%p, p_dst=%p", + (void *) p_src, (void *) p_src_end, (void *) p_dst)); + /* A validated read() is always a number, so it's write coercion + * is always side effect free an won't invalidate pointers etc. + */ + duk_hbufobj_push_validated_read(thr, h_bufarg, p_src, src_elem_size); + duk_hbufobj_validated_write(thr, h_this, p_dst, dst_elem_size); + duk_pop(thr); + p_src += src_elem_size; + p_dst += dst_elem_size; + } + + return 0; + } else { + /* Slow path: quite slow, but we save space by using the property code + * to write coerce target values. We don't need to worry about overlap + * here because the source is not a TypedArray. + * + * We could use the bufobj write coercion helper but since the + * property read may have arbitrary side effects, full validity checks + * would be needed for every element anyway. + */ + + n = (duk_uarridx_t) duk_get_length(thr, 0); + DUK_ASSERT(offset_bytes <= h_this->length); + if ((n << h_this->shift) > h_this->length - offset_bytes) { + /* Overflow not an issue because subtraction is used on the right + * side and guaranteed to be >= 0. + */ + DUK_DDD(DUK_DDDPRINT("copy exceeds target buffer nominal length")); + goto fail_args; + } + + /* There's no need to check for buffer validity status for the + * target here: the property access code will do that for each + * element. Moreover, if we did check the validity here, side + * effects from reading the source argument might invalidate + * the results anyway. + */ + + DUK_ASSERT_TOP(thr, 2); + duk_push_this(thr); + + for (i = 0; i < n; i++) { + duk_get_prop_index(thr, 0, i); + duk_put_prop_index(thr, 2, offset_elems + i); + } + } + + return 0; + + fail_args: + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.prototype.slice([start], [end]) + * ArrayBuffer.prototype.slice(begin, [end]) + * TypedArray.prototype.subarray(begin, [end]) + * + * The API calls are almost identical; negative indices are counted from end + * of buffer, and final indices are clamped (allowing crossed indices). Main + * differences: + * + * - Copy/view behavior; Node.js .slice() and TypedArray .subarray() create + * views, ArrayBuffer .slice() creates a copy + * + * - Resulting object has a different class and prototype depending on the + * call (or 'this' argument) + * + * - TypedArray .subarray() arguments are element indices, not byte offsets + * + * - Plain buffer argument creates a plain buffer slice + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_LOCAL void duk__arraybuffer_plain_slice(duk_hthread *thr, duk_hbuffer *h_val) { + duk_int_t start_offset, end_offset; + duk_uint_t slice_length; + duk_uint8_t *p_copy; + duk_size_t copy_length; + + duk__clamp_startend_negidx_shifted(thr, + (duk_int_t) DUK_HBUFFER_GET_SIZE(h_val), + 0 /*buffer_shift*/, + 0 /*idx_start*/, + 1 /*idx_end*/, + &start_offset, + &end_offset); + DUK_ASSERT(end_offset <= (duk_int_t) DUK_HBUFFER_GET_SIZE(h_val)); + DUK_ASSERT(start_offset >= 0); + DUK_ASSERT(end_offset >= start_offset); + slice_length = (duk_uint_t) (end_offset - start_offset); + + p_copy = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, (duk_size_t) slice_length); + DUK_ASSERT(p_copy != NULL); + copy_length = slice_length; + + duk_memcpy_unsafe((void *) p_copy, + (const void *) ((duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_val) + start_offset), + copy_length); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +/* Shared helper for slice/subarray operation. + * Magic: 0x01=isView, 0x02=copy, 0x04=Node.js Buffer special handling. + */ +DUK_INTERNAL duk_ret_t duk_bi_buffer_slice_shared(duk_hthread *thr) { + duk_small_int_t magic; + duk_small_uint_t res_class_num; + duk_small_int_t res_proto_bidx; + duk_hbufobj *h_this; + duk_hbufobj *h_bufobj; + duk_hbuffer *h_val; + duk_int_t start_offset, end_offset; + duk_uint_t slice_length; + duk_tval *tv; + + /* [ start end ] */ + + magic = duk_get_current_magic(thr); + + tv = duk_get_borrowed_this_tval(thr); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_BUFFER(tv)) { + /* For plain buffers return a plain buffer slice. */ + h_val = DUK_TVAL_GET_BUFFER(tv); + DUK_ASSERT(h_val != NULL); + + if (magic & 0x02) { + /* Make copy: ArrayBuffer.prototype.slice() uses this. */ + duk__arraybuffer_plain_slice(thr, h_val); + return 1; + } else { + /* View into existing buffer: cannot be done if the + * result is a plain buffer because there's no slice + * info. So return an ArrayBuffer instance; coerce + * the 'this' binding into an object and behave as if + * the original call was for an Object-coerced plain + * buffer (handled automatically by duk__require_bufobj_this()). + */ + + DUK_DDD(DUK_DDDPRINT("slice() doesn't handle view into plain buffer, coerce 'this' to ArrayBuffer object")); + /* fall through */ + } + } + tv = NULL; /* No longer valid nor needed. */ + + h_this = duk__require_bufobj_this(thr); + + /* Slice offsets are element (not byte) offsets, which only matters + * for TypedArray views, Node.js Buffer and ArrayBuffer have shift + * zero so byte and element offsets are the same. Negative indices + * are counted from end of slice, crossed indices are allowed (and + * result in zero length result), and final values are clamped + * against the current slice. There's intentionally no check + * against the underlying buffer here. + */ + + duk__clamp_startend_negidx_shifted(thr, + (duk_int_t) h_this->length, + (duk_uint8_t) h_this->shift, + 0 /*idx_start*/, + 1 /*idx_end*/, + &start_offset, + &end_offset); + DUK_ASSERT(end_offset >= start_offset); + DUK_ASSERT(start_offset >= 0); + DUK_ASSERT(end_offset >= 0); + slice_length = (duk_uint_t) (end_offset - start_offset); + + /* The resulting buffer object gets the same class and prototype as + * the buffer in 'this', e.g. if the input is a Uint8Array the + * result is a Uint8Array; if the input is a Float32Array, the + * result is a Float32Array. The result internal prototype should + * be the default prototype for the class (e.g. initial value of + * Uint8Array.prototype), not copied from the argument (Duktape 1.x + * did that). + * + * Node.js Buffers have special handling: they're Uint8Arrays as far + * as the internal class is concerned, so the new Buffer should also + * be an Uint8Array but inherit from Buffer.prototype. + */ + res_class_num = DUK_HOBJECT_GET_CLASS_NUMBER((duk_hobject *) h_this); + DUK_ASSERT(res_class_num >= DUK_HOBJECT_CLASS_BUFOBJ_MIN); /* type check guarantees */ + DUK_ASSERT(res_class_num <= DUK_HOBJECT_CLASS_BUFOBJ_MAX); + res_proto_bidx = duk__buffer_proto_from_classnum[res_class_num - DUK_HOBJECT_CLASS_BUFOBJ_MIN]; + if (magic & 0x04) { + res_proto_bidx = DUK_BIDX_NODEJS_BUFFER_PROTOTYPE; + } + h_bufobj = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(res_class_num), + res_proto_bidx); + DUK_ASSERT(h_bufobj != NULL); + + DUK_ASSERT(h_bufobj->length == 0); + h_bufobj->shift = h_this->shift; /* inherit */ + h_bufobj->elem_type = h_this->elem_type; /* inherit */ + h_bufobj->is_typedarray = magic & 0x01; + DUK_ASSERT(h_bufobj->is_typedarray == 0 || h_bufobj->is_typedarray == 1); + + h_val = h_this->buf; + if (h_val == NULL) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + if (magic & 0x02) { + /* non-zero: make copy */ + duk_uint8_t *p_copy; + duk_size_t copy_length; + + p_copy = (duk_uint8_t *) duk_push_fixed_buffer_zero(thr, (duk_size_t) slice_length); /* must be zeroed, not all bytes always copied */ + DUK_ASSERT(p_copy != NULL); + + /* Copy slice, respecting underlying buffer limits; remainder + * is left as zero. + */ + copy_length = DUK_HBUFOBJ_CLAMP_BYTELENGTH(h_this, slice_length); + duk_memcpy_unsafe((void *) p_copy, + (const void *) (DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this) + start_offset), + copy_length); + + h_val = duk_known_hbuffer(thr, -1); + + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + h_bufobj->length = slice_length; + DUK_ASSERT(h_bufobj->offset == 0); + + duk_pop(thr); /* reachable so pop OK */ + } else { + h_bufobj->buf = h_val; + DUK_HBUFFER_INCREF(thr, h_val); + h_bufobj->length = slice_length; + h_bufobj->offset = h_this->offset + (duk_uint_t) start_offset; + + /* Copy the .buffer property, needed for TypedArray.prototype.subarray(). + * + * XXX: limit copy only for TypedArray classes specifically? + */ + + DUK_ASSERT(h_bufobj->buf_prop == NULL); + h_bufobj->buf_prop = h_this->buf_prop; /* may be NULL */ + DUK_HOBJECT_INCREF_ALLOWNULL(thr, (duk_hobject *) h_bufobj->buf_prop); + } + /* unbalanced stack on purpose */ + + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.isEncoding() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_is_encoding(duk_hthread *thr) { + const char *encoding; + + /* only accept lowercase 'utf8' now. */ + + encoding = duk_to_string(thr, 0); + DUK_ASSERT(duk_is_string(thr, 0)); /* guaranteed by duk_to_string() */ + duk_push_boolean(thr, DUK_STRCMP(encoding, "utf8") == 0); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.isBuffer() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_is_buffer(duk_hthread *thr) { + duk_hobject *h; + duk_hobject *h_proto; + duk_bool_t ret = 0; + + DUK_ASSERT(duk_get_top(thr) >= 1); /* nargs */ + h = duk_get_hobject(thr, 0); + if (h != NULL) { + h_proto = thr->builtins[DUK_BIDX_NODEJS_BUFFER_PROTOTYPE]; + DUK_ASSERT(h_proto != NULL); + + h = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h); + if (h != NULL) { + ret = duk_hobject_prototype_chain_contains(thr, h, h_proto, 0 /*ignore_loop*/); + } + } + + duk_push_boolean(thr, ret); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.byteLength() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_byte_length(duk_hthread *thr) { + const char *str; + duk_size_t len; + + /* At the moment Buffer() will just use the string bytes as + * is (ignoring encoding), so we return the string length here + * unconditionally. + */ + + /* XXX: to be revised; Old Node.js behavior just coerces any buffer + * values to string: + * $ node + * > Buffer.byteLength(new Uint32Array(10)) + * 20 + * > Buffer.byteLength(new Uint32Array(100)) + * 20 + * (The 20 comes from '[object Uint32Array]'.length + */ + + str = duk_to_lstring(thr, 0, &len); + DUK_UNREF(str); + duk_push_size_t(thr, len); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Node.js Buffer.concat() + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_concat(duk_hthread *thr) { + duk_hobject *h_arg; + duk_uint_t total_length; + duk_hbufobj *h_bufobj; + duk_hbufobj *h_bufres; + duk_hbuffer *h_val; + duk_uint_t i, n; + duk_uint8_t *p; + duk_size_t space_left; + duk_size_t copy_size; + + /* Node.js accepts only actual Arrays. */ + h_arg = duk_require_hobject(thr, 0); + if (DUK_HOBJECT_GET_CLASS_NUMBER(h_arg) != DUK_HOBJECT_CLASS_ARRAY) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + /* Compute result length and validate argument buffers. */ + n = (duk_uint_t) duk_get_length(thr, 0); + total_length = 0; + for (i = 0; i < n; i++) { + /* Neutered checks not necessary here: neutered buffers have + * zero 'length' so we'll effectively skip them. + */ + DUK_ASSERT_TOP(thr, 2); /* [ array totalLength ] */ + duk_get_prop_index(thr, 0, (duk_uarridx_t) i); /* -> [ array totalLength buf ] */ + h_bufobj = duk__require_bufobj_value(thr, 2); + DUK_ASSERT(h_bufobj != NULL); + total_length += h_bufobj->length; + if (DUK_UNLIKELY(total_length < h_bufobj->length)) { + DUK_DCERROR_RANGE_INVALID_ARGS(thr); /* Wrapped. */ + } + duk_pop(thr); + } + /* In Node.js v0.12.1 a 1-element array is special and won't create a + * copy, this was fixed later so an explicit check no longer needed. + */ + + /* User totalLength overrides a computed length, but we'll check + * every copy in the copy loop. Note that duk_to_int() can + * technically have arbitrary side effects so we need to recheck + * the buffers in the copy loop. + */ + if (!duk_is_undefined(thr, 1) && n > 0) { + /* For n == 0, Node.js ignores totalLength argument and + * returns a zero length buffer. + */ + duk_int_t total_length_signed; + total_length_signed = duk_to_int(thr, 1); + if (total_length_signed < 0) { + DUK_DCERROR_RANGE_INVALID_ARGS(thr); + } + total_length = (duk_uint_t) total_length_signed; + } + + h_bufres = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_UINT8ARRAY), + DUK_BIDX_NODEJS_BUFFER_PROTOTYPE); + DUK_ASSERT(h_bufres != NULL); + + p = (duk_uint8_t *) duk_push_fixed_buffer_zero(thr, total_length); /* must be zeroed, all bytes not necessarily written over */ + DUK_ASSERT(p != NULL); + space_left = (duk_size_t) total_length; + + for (i = 0; i < n; i++) { + DUK_ASSERT_TOP(thr, 4); /* [ array totalLength bufres buf ] */ + + duk_get_prop_index(thr, 0, (duk_uarridx_t) i); + h_bufobj = duk__require_bufobj_value(thr, 4); + DUK_ASSERT(h_bufobj != NULL); + + copy_size = h_bufobj->length; + if (copy_size > space_left) { + copy_size = space_left; + } + + if (h_bufobj->buf != NULL && + DUK_HBUFOBJ_VALID_SLICE(h_bufobj)) { + duk_memcpy_unsafe((void *) p, + (const void *) DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_bufobj), + copy_size); + } else { + /* Just skip, leaving zeroes in the result. */ + ; + } + p += copy_size; + space_left -= copy_size; + + duk_pop(thr); + } + + h_val = duk_known_hbuffer(thr, -1); + + duk__set_bufobj_buffer(thr, h_bufres, h_val); + h_bufres->is_typedarray = 1; + DUK_HBUFOBJ_ASSERT_VALID(h_bufres); + + duk_pop(thr); /* pop plain buffer, now reachable through h_bufres */ + + return 1; /* return h_bufres */ +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Shared readfield and writefield methods + * + * The readfield/writefield methods need support for endianness and field + * types. All offsets are byte based so no offset shifting is needed. + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +/* Format of magic, bits: + * 0...1: field type; 0=uint8, 1=uint16, 2=uint32, 3=float, 4=double, 5=unused, 6=unused, 7=unused + * 3: endianness: 0=little, 1=big + * 4: signed: 1=yes, 0=no + * 5: typedarray: 1=yes, 0=no + */ +#define DUK__FLD_8BIT 0 +#define DUK__FLD_16BIT 1 +#define DUK__FLD_32BIT 2 +#define DUK__FLD_FLOAT 3 +#define DUK__FLD_DOUBLE 4 +#define DUK__FLD_VARINT 5 +#define DUK__FLD_BIGENDIAN (1 << 3) +#define DUK__FLD_SIGNED (1 << 4) +#define DUK__FLD_TYPEDARRAY (1 << 5) + +/* XXX: split into separate functions for each field type? */ +DUK_INTERNAL duk_ret_t duk_bi_buffer_readfield(duk_hthread *thr) { + duk_small_uint_t magic = (duk_small_uint_t) duk_get_current_magic(thr); + duk_small_uint_t magic_ftype; + duk_small_uint_t magic_bigendian; + duk_small_uint_t magic_signed; + duk_small_uint_t magic_typedarray; + duk_small_uint_t endswap; + duk_hbufobj *h_this; + duk_bool_t no_assert; + duk_int_t offset_signed; + duk_uint_t offset; + duk_uint_t buffer_length; + duk_uint_t check_length; + duk_uint8_t *buf; + duk_double_union du; + + magic_ftype = magic & 0x0007U; + magic_bigendian = magic & 0x0008U; + magic_signed = magic & 0x0010U; + magic_typedarray = magic & 0x0020U; + + h_this = duk__require_bufobj_this(thr); /* XXX: very inefficient for plain buffers */ + DUK_ASSERT(h_this != NULL); + buffer_length = h_this->length; + + /* [ offset noAssert ], when ftype != DUK__FLD_VARINT */ + /* [ offset fieldByteLength noAssert ], when ftype == DUK__FLD_VARINT */ + /* [ offset littleEndian ], when DUK__FLD_TYPEDARRAY (regardless of ftype) */ + + /* Handle TypedArray vs. Node.js Buffer arg differences */ + if (magic_typedarray) { + no_assert = 0; +#if defined(DUK_USE_INTEGER_LE) + endswap = !duk_to_boolean(thr, 1); /* 1=little endian */ +#else + endswap = duk_to_boolean(thr, 1); /* 1=little endian */ +#endif + } else { + no_assert = duk_to_boolean(thr, (magic_ftype == DUK__FLD_VARINT) ? 2 : 1); +#if defined(DUK_USE_INTEGER_LE) + endswap = magic_bigendian; +#else + endswap = !magic_bigendian; +#endif + } + + /* Offset is coerced first to signed integer range and then to unsigned. + * This ensures we can add a small byte length (1-8) to the offset in + * bound checks and not wrap. + */ + offset_signed = duk_to_int(thr, 0); + offset = (duk_uint_t) offset_signed; + if (offset_signed < 0) { + goto fail_bounds; + } + + DUK_DDD(DUK_DDDPRINT("readfield, buffer_length=%ld, offset=%ld, no_assert=%d, " + "magic=%04x, magic_fieldtype=%d, magic_bigendian=%d, magic_signed=%d, " + "endswap=%u", + (long) buffer_length, (long) offset, (int) no_assert, + (unsigned int) magic, (int) magic_ftype, (int) (magic_bigendian >> 3), + (int) (magic_signed >> 4), (int) endswap)); + + /* Update 'buffer_length' to be the effective, safe limit which + * takes into account the underlying buffer. This value will be + * potentially invalidated by any side effect. + */ + check_length = DUK_HBUFOBJ_CLAMP_BYTELENGTH(h_this, buffer_length); + DUK_DDD(DUK_DDDPRINT("buffer_length=%ld, check_length=%ld", + (long) buffer_length, (long) check_length)); + + if (h_this->buf) { + buf = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this); + } else { + /* Neutered. We could go into the switch-case safely with + * buf == NULL because check_length == 0. To avoid scanbuild + * warnings, fail directly instead. + */ + DUK_ASSERT(check_length == 0); + goto fail_neutered; + } + DUK_ASSERT(buf != NULL); + + switch (magic_ftype) { + case DUK__FLD_8BIT: { + duk_uint8_t tmp; + if (offset + 1U > check_length) { + goto fail_bounds; + } + tmp = buf[offset]; + if (magic_signed) { + duk_push_int(thr, (duk_int_t) ((duk_int8_t) tmp)); + } else { + duk_push_uint(thr, (duk_uint_t) tmp); + } + break; + } + case DUK__FLD_16BIT: { + duk_uint16_t tmp; + if (offset + 2U > check_length) { + goto fail_bounds; + } + duk_memcpy((void *) du.uc, (const void *) (buf + offset), 2); + tmp = du.us[0]; + if (endswap) { + tmp = DUK_BSWAP16(tmp); + } + if (magic_signed) { + duk_push_int(thr, (duk_int_t) ((duk_int16_t) tmp)); + } else { + duk_push_uint(thr, (duk_uint_t) tmp); + } + break; + } + case DUK__FLD_32BIT: { + duk_uint32_t tmp; + if (offset + 4U > check_length) { + goto fail_bounds; + } + duk_memcpy((void *) du.uc, (const void *) (buf + offset), 4); + tmp = du.ui[0]; + if (endswap) { + tmp = DUK_BSWAP32(tmp); + } + if (magic_signed) { + duk_push_int(thr, (duk_int_t) ((duk_int32_t) tmp)); + } else { + duk_push_uint(thr, (duk_uint_t) tmp); + } + break; + } + case DUK__FLD_FLOAT: { + duk_uint32_t tmp; + if (offset + 4U > check_length) { + goto fail_bounds; + } + duk_memcpy((void *) du.uc, (const void *) (buf + offset), 4); + if (endswap) { + tmp = du.ui[0]; + tmp = DUK_BSWAP32(tmp); + du.ui[0] = tmp; + } + duk_push_number(thr, (duk_double_t) du.f[0]); + break; + } + case DUK__FLD_DOUBLE: { + if (offset + 8U > check_length) { + goto fail_bounds; + } + duk_memcpy((void *) du.uc, (const void *) (buf + offset), 8); + if (endswap) { + DUK_DBLUNION_BSWAP64(&du); + } + duk_push_number(thr, (duk_double_t) du.d); + break; + } + case DUK__FLD_VARINT: { + /* Node.js Buffer variable width integer field. We don't really + * care about speed here, so aim for shortest algorithm. + */ + duk_int_t field_bytelen; + duk_int_t i, i_step, i_end; +#if defined(DUK_USE_64BIT_OPS) + duk_int64_t tmp; + duk_small_uint_t shift_tmp; +#else + duk_double_t tmp; + duk_small_int_t highbyte; +#endif + const duk_uint8_t *p; + + field_bytelen = duk_get_int(thr, 1); /* avoid side effects! */ + if (field_bytelen < 1 || field_bytelen > 6) { + goto fail_field_length; + } + if (offset + (duk_uint_t) field_bytelen > check_length) { + goto fail_bounds; + } + p = (const duk_uint8_t *) (buf + offset); + + /* Slow gathering of value using either 64-bit arithmetic + * or IEEE doubles if 64-bit types not available. Handling + * of negative numbers is a bit non-obvious in both cases. + */ + + if (magic_bigendian) { + /* Gather in big endian */ + i = 0; + i_step = 1; + i_end = field_bytelen; /* one i_step over */ + } else { + /* Gather in little endian */ + i = field_bytelen - 1; + i_step = -1; + i_end = -1; /* one i_step over */ + } + +#if defined(DUK_USE_64BIT_OPS) + tmp = 0; + do { + DUK_ASSERT(i >= 0 && i < field_bytelen); + tmp = (tmp << 8) + (duk_int64_t) p[i]; + i += i_step; + } while (i != i_end); + + if (magic_signed) { + /* Shift to sign extend. Left shift must be unsigned + * to avoid undefined behavior; right shift must be + * signed to sign extend properly. + */ + shift_tmp = (duk_small_uint_t) (64U - (duk_small_uint_t) field_bytelen * 8U); + tmp = (duk_int64_t) ((duk_uint64_t) tmp << shift_tmp) >> shift_tmp; + } + + duk_push_i64(thr, tmp); +#else + highbyte = p[i]; + if (magic_signed && (highbyte & 0x80) != 0) { + /* 0xff => 255 - 256 = -1; 0x80 => 128 - 256 = -128 */ + tmp = (duk_double_t) (highbyte - 256); + } else { + tmp = (duk_double_t) highbyte; + } + for (;;) { + i += i_step; + if (i == i_end) { + break; + } + DUK_ASSERT(i >= 0 && i < field_bytelen); + tmp = (tmp * 256.0) + (duk_double_t) p[i]; + } + + duk_push_number(thr, tmp); +#endif + break; + } + default: { /* should never happen but default here */ + goto fail_bounds; + } + } + + return 1; + + fail_neutered: + fail_field_length: + fail_bounds: + if (no_assert) { + /* Node.js return value for noAssert out-of-bounds reads is + * usually (but not always) NaN. Return NaN consistently. + */ + duk_push_nan(thr); + return 1; + } + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +/* XXX: split into separate functions for each field type? */ +DUK_INTERNAL duk_ret_t duk_bi_buffer_writefield(duk_hthread *thr) { + duk_small_uint_t magic = (duk_small_uint_t) duk_get_current_magic(thr); + duk_small_uint_t magic_ftype; + duk_small_uint_t magic_bigendian; + duk_small_uint_t magic_signed; + duk_small_uint_t magic_typedarray; + duk_small_uint_t endswap; + duk_hbufobj *h_this; + duk_bool_t no_assert; + duk_int_t offset_signed; + duk_uint_t offset; + duk_uint_t buffer_length; + duk_uint_t check_length; + duk_uint8_t *buf; + duk_double_union du; + duk_int_t nbytes = 0; + + magic_ftype = magic & 0x0007U; + magic_bigendian = magic & 0x0008U; + magic_signed = magic & 0x0010U; + magic_typedarray = magic & 0x0020U; + DUK_UNREF(magic_signed); + + h_this = duk__require_bufobj_this(thr); /* XXX: very inefficient for plain buffers */ + DUK_ASSERT(h_this != NULL); + buffer_length = h_this->length; + + /* [ value offset noAssert ], when ftype != DUK__FLD_VARINT */ + /* [ value offset fieldByteLength noAssert ], when ftype == DUK__FLD_VARINT */ + /* [ offset value littleEndian ], when DUK__FLD_TYPEDARRAY (regardless of ftype) */ + + /* Handle TypedArray vs. Node.js Buffer arg differences */ + if (magic_typedarray) { + no_assert = 0; +#if defined(DUK_USE_INTEGER_LE) + endswap = !duk_to_boolean(thr, 2); /* 1=little endian */ +#else + endswap = duk_to_boolean(thr, 2); /* 1=little endian */ +#endif + duk_swap(thr, 0, 1); /* offset/value order different from Node.js */ + } else { + no_assert = duk_to_boolean(thr, (magic_ftype == DUK__FLD_VARINT) ? 3 : 2); +#if defined(DUK_USE_INTEGER_LE) + endswap = magic_bigendian; +#else + endswap = !magic_bigendian; +#endif + } + + /* Offset is coerced first to signed integer range and then to unsigned. + * This ensures we can add a small byte length (1-8) to the offset in + * bound checks and not wrap. + */ + offset_signed = duk_to_int(thr, 1); + offset = (duk_uint_t) offset_signed; + + /* We need 'nbytes' even for a failed offset; return value must be + * (offset + nbytes) even when write fails due to invalid offset. + */ + if (magic_ftype != DUK__FLD_VARINT) { + DUK_ASSERT(magic_ftype < (duk_small_uint_t) (sizeof(duk__buffer_nbytes_from_fldtype) / sizeof(duk_uint8_t))); + nbytes = duk__buffer_nbytes_from_fldtype[magic_ftype]; + } else { + nbytes = duk_get_int(thr, 2); + if (nbytes < 1 || nbytes > 6) { + goto fail_field_length; + } + } + DUK_ASSERT(nbytes >= 1 && nbytes <= 8); + + /* Now we can check offset validity. */ + if (offset_signed < 0) { + goto fail_bounds; + } + + DUK_DDD(DUK_DDDPRINT("writefield, value=%!T, buffer_length=%ld, offset=%ld, no_assert=%d, " + "magic=%04x, magic_fieldtype=%d, magic_bigendian=%d, magic_signed=%d, " + "endswap=%u", + duk_get_tval(thr, 0), (long) buffer_length, (long) offset, (int) no_assert, + (unsigned int) magic, (int) magic_ftype, (int) (magic_bigendian >> 3), + (int) (magic_signed >> 4), (int) endswap)); + + /* Coerce value to a number before computing check_length, so that + * the field type specific coercion below can't have side effects + * that would invalidate check_length. + */ + duk_to_number(thr, 0); + + /* Update 'buffer_length' to be the effective, safe limit which + * takes into account the underlying buffer. This value will be + * potentially invalidated by any side effect. + */ + check_length = DUK_HBUFOBJ_CLAMP_BYTELENGTH(h_this, buffer_length); + DUK_DDD(DUK_DDDPRINT("buffer_length=%ld, check_length=%ld", + (long) buffer_length, (long) check_length)); + + if (h_this->buf) { + buf = DUK_HBUFOBJ_GET_SLICE_BASE(thr->heap, h_this); + } else { + /* Neutered. We could go into the switch-case safely with + * buf == NULL because check_length == 0. To avoid scanbuild + * warnings, fail directly instead. + */ + DUK_ASSERT(check_length == 0); + goto fail_neutered; + } + DUK_ASSERT(buf != NULL); + + switch (magic_ftype) { + case DUK__FLD_8BIT: { + if (offset + 1U > check_length) { + goto fail_bounds; + } + /* sign doesn't matter when writing */ + buf[offset] = (duk_uint8_t) duk_to_uint32(thr, 0); + break; + } + case DUK__FLD_16BIT: { + duk_uint16_t tmp; + if (offset + 2U > check_length) { + goto fail_bounds; + } + tmp = (duk_uint16_t) duk_to_uint32(thr, 0); + if (endswap) { + tmp = DUK_BSWAP16(tmp); + } + du.us[0] = tmp; + /* sign doesn't matter when writing */ + duk_memcpy((void *) (buf + offset), (const void *) du.uc, 2); + break; + } + case DUK__FLD_32BIT: { + duk_uint32_t tmp; + if (offset + 4U > check_length) { + goto fail_bounds; + } + tmp = (duk_uint32_t) duk_to_uint32(thr, 0); + if (endswap) { + tmp = DUK_BSWAP32(tmp); + } + du.ui[0] = tmp; + /* sign doesn't matter when writing */ + duk_memcpy((void *) (buf + offset), (const void *) du.uc, 4); + break; + } + case DUK__FLD_FLOAT: { + duk_uint32_t tmp; + if (offset + 4U > check_length) { + goto fail_bounds; + } + du.f[0] = (duk_float_t) duk_to_number(thr, 0); + if (endswap) { + tmp = du.ui[0]; + tmp = DUK_BSWAP32(tmp); + du.ui[0] = tmp; + } + /* sign doesn't matter when writing */ + duk_memcpy((void *) (buf + offset), (const void *) du.uc, 4); + break; + } + case DUK__FLD_DOUBLE: { + if (offset + 8U > check_length) { + goto fail_bounds; + } + du.d = (duk_double_t) duk_to_number(thr, 0); + if (endswap) { + DUK_DBLUNION_BSWAP64(&du); + } + /* sign doesn't matter when writing */ + duk_memcpy((void *) (buf + offset), (const void *) du.uc, 8); + break; + } + case DUK__FLD_VARINT: { + /* Node.js Buffer variable width integer field. We don't really + * care about speed here, so aim for shortest algorithm. + */ + duk_int_t field_bytelen; + duk_int_t i, i_step, i_end; +#if defined(DUK_USE_64BIT_OPS) + duk_int64_t tmp; +#else + duk_double_t tmp; +#endif + duk_uint8_t *p; + + field_bytelen = (duk_int_t) nbytes; + if (offset + (duk_uint_t) field_bytelen > check_length) { + goto fail_bounds; + } + + /* Slow writing of value using either 64-bit arithmetic + * or IEEE doubles if 64-bit types not available. There's + * no special sign handling when writing varints. + */ + + if (magic_bigendian) { + /* Write in big endian */ + i = field_bytelen; /* one i_step added at top of loop */ + i_step = -1; + i_end = 0; + } else { + /* Write in little endian */ + i = -1; /* one i_step added at top of loop */ + i_step = 1; + i_end = field_bytelen - 1; + } + + /* XXX: The duk_to_number() cast followed by integer coercion + * is platform specific so NaN, +/- Infinity, and out-of-bounds + * values result in platform specific output now. + * See: test-bi-nodejs-buffer-proto-varint-special.js + */ + +#if defined(DUK_USE_64BIT_OPS) + tmp = (duk_int64_t) duk_to_number(thr, 0); + p = (duk_uint8_t *) (buf + offset); + do { + i += i_step; + DUK_ASSERT(i >= 0 && i < field_bytelen); + p[i] = (duk_uint8_t) (tmp & 0xff); + tmp = tmp >> 8; /* unnecessary shift for last byte */ + } while (i != i_end); +#else + tmp = duk_to_number(thr, 0); + p = (duk_uint8_t *) (buf + offset); + do { + i += i_step; + tmp = DUK_FLOOR(tmp); + DUK_ASSERT(i >= 0 && i < field_bytelen); + p[i] = (duk_uint8_t) (DUK_FMOD(tmp, 256.0)); + tmp = tmp / 256.0; /* unnecessary div for last byte */ + } while (i != i_end); +#endif + break; + } + default: { /* should never happen but default here */ + goto fail_bounds; + } + } + + /* Node.js Buffer: return offset + #bytes written (i.e. next + * write offset). + */ + if (magic_typedarray) { + /* For TypedArrays 'undefined' return value is specified + * by ES2015 (matches V8). + */ + return 0; + } + duk_push_uint(thr, offset + (duk_uint_t) nbytes); + return 1; + + fail_neutered: + fail_field_length: + fail_bounds: + if (no_assert) { + /* Node.js return value for failed writes is offset + #bytes + * that would have been written. + */ + /* XXX: for negative input offsets, 'offset' will be a large + * positive value so the result here is confusing. + */ + if (magic_typedarray) { + return 0; + } + duk_push_uint(thr, offset + (duk_uint_t) nbytes); + return 1; + } + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * Accessors for .buffer, .byteLength, .byteOffset + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_LOCAL duk_hbufobj *duk__autospawn_arraybuffer(duk_hthread *thr, duk_hbuffer *h_buf) { + duk_hbufobj *h_res; + + h_res = duk_push_bufobj_raw(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_BUFOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ARRAYBUFFER), + DUK_BIDX_ARRAYBUFFER_PROTOTYPE); + DUK_ASSERT(h_res != NULL); + DUK_UNREF(h_res); + + duk__set_bufobj_buffer(thr, h_res, h_buf); + DUK_HBUFOBJ_ASSERT_VALID(h_res); + DUK_ASSERT(h_res->buf_prop == NULL); + return h_res; +} + +DUK_INTERNAL duk_ret_t duk_bi_typedarray_buffer_getter(duk_hthread *thr) { + duk_hbufobj *h_bufobj; + + h_bufobj = (duk_hbufobj *) duk__getrequire_bufobj_this(thr, DUK__BUFOBJ_FLAG_THROW /*flags*/); + DUK_ASSERT(h_bufobj != NULL); + if (DUK_HEAPHDR_IS_BUFFER((duk_heaphdr *) h_bufobj)) { + DUK_DD(DUK_DDPRINT("autospawn ArrayBuffer for plain buffer")); + (void) duk__autospawn_arraybuffer(thr, (duk_hbuffer *) h_bufobj); + return 1; + } else { + if (h_bufobj->buf_prop == NULL && + DUK_HOBJECT_GET_CLASS_NUMBER((duk_hobject *) h_bufobj) != DUK_HOBJECT_CLASS_ARRAYBUFFER && + h_bufobj->buf != NULL) { + duk_hbufobj *h_arrbuf; + + DUK_DD(DUK_DDPRINT("autospawn ArrayBuffer for typed array or DataView")); + h_arrbuf = duk__autospawn_arraybuffer(thr, h_bufobj->buf); + + if (h_bufobj->buf_prop == NULL) { + /* Must recheck buf_prop, in case ArrayBuffer + * alloc had a side effect which already filled + * it! + */ + + /* Set ArrayBuffer's .byteOffset and .byteLength based + * on the view so that Arraybuffer[view.byteOffset] + * matches view[0]. + */ + h_arrbuf->offset = 0; + DUK_ASSERT(h_bufobj->offset + h_bufobj->length >= h_bufobj->offset); /* Wrap check on creation. */ + h_arrbuf->length = h_bufobj->offset + h_bufobj->length; + DUK_ASSERT(h_arrbuf->buf_prop == NULL); + + DUK_ASSERT(h_bufobj->buf_prop == NULL); + h_bufobj->buf_prop = (duk_hobject *) h_arrbuf; + DUK_HBUFOBJ_INCREF(thr, h_arrbuf); /* Now reachable and accounted for. */ + } + + /* Left on stack; pushed for the second time below (OK). */ + } + if (h_bufobj->buf_prop) { + duk_push_hobject(thr, h_bufobj->buf_prop); + return 1; + } + } + return 0; +} + +DUK_INTERNAL duk_ret_t duk_bi_typedarray_byteoffset_getter(duk_hthread *thr) { + duk_hbufobj *h_bufobj; + + h_bufobj = (duk_hbufobj *) duk__getrequire_bufobj_this(thr, DUK__BUFOBJ_FLAG_THROW /*flags*/); + DUK_ASSERT(h_bufobj != NULL); + if (DUK_HEAPHDR_IS_BUFFER((duk_heaphdr *) h_bufobj)) { + duk_push_uint(thr, 0); + } else { + /* If neutered must return 0; offset is zeroed during + * neutering. + */ + duk_push_uint(thr, h_bufobj->offset); + } + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_typedarray_bytelength_getter(duk_hthread *thr) { + duk_hbufobj *h_bufobj; + + h_bufobj = (duk_hbufobj *) duk__getrequire_bufobj_this(thr, DUK__BUFOBJ_FLAG_THROW /*flags*/); + DUK_ASSERT(h_bufobj != NULL); + if (DUK_HEAPHDR_IS_BUFFER((duk_heaphdr *) h_bufobj)) { + duk_hbuffer *h_buf; + + h_buf = (duk_hbuffer *) h_bufobj; + DUK_ASSERT(DUK_HBUFFER_GET_SIZE(h_buf) <= DUK_UINT_MAX); /* Buffer limits. */ + duk_push_uint(thr, (duk_uint_t) DUK_HBUFFER_GET_SIZE(h_buf)); + } else { + /* If neutered must return 0; length is zeroed during + * neutering. + */ + duk_push_uint(thr, h_bufobj->length); + } + return 1; +} +#else /* DUK_USE_BUFFEROBJECT_SUPPORT */ +/* No .buffer getter without ArrayBuffer support. */ +#if 0 +DUK_INTERNAL duk_ret_t duk_bi_typedarray_buffer_getter(duk_hthread *thr) { + return 0; +} +#endif + +DUK_INTERNAL duk_ret_t duk_bi_typedarray_byteoffset_getter(duk_hthread *thr) { + duk_push_uint(thr, 0); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_typedarray_bytelength_getter(duk_hthread *thr) { + duk_hbuffer *h_buf; + + /* XXX: helper? */ + duk_push_this(thr); + h_buf = duk_require_hbuffer(thr, -1); + duk_push_uint(thr, DUK_HBUFFER_GET_SIZE(h_buf)); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* automatic undefs */ +#undef DUK__BUFOBJ_FLAG_PROMOTE +#undef DUK__BUFOBJ_FLAG_THROW +#undef DUK__FLD_16BIT +#undef DUK__FLD_32BIT +#undef DUK__FLD_8BIT +#undef DUK__FLD_BIGENDIAN +#undef DUK__FLD_DOUBLE +#undef DUK__FLD_FLOAT +#undef DUK__FLD_SIGNED +#undef DUK__FLD_TYPEDARRAY +#undef DUK__FLD_VARINT +#line 1 "duk_bi_cbor.c" +/* + * CBOR bindings. + * + * http://cbor.io/ + * https://tools.ietf.org/html/rfc7049 + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_CBOR_SUPPORT) + +/* #define DUK_CBOR_STRESS */ + +/* Default behavior for encoding strings: use CBOR text string if string + * is UTF-8 compatible, otherwise use CBOR byte string. These defines + * can be used to force either type for all strings. Using text strings + * for non-UTF-8 data is technically invalid CBOR. + */ +/* #define DUK_CBOR_TEXT_STRINGS */ +/* #define DUK_CBOR_BYTE_STRINGS */ + +/* Misc. defines. */ +/* #define DUK_CBOR_PREFER_SIZE */ +/* #define DUK_CBOR_DOUBLE_AS_IS */ +/* #define DUK_CBOR_DECODE_FASTPATH */ + +typedef struct { + duk_hthread *thr; + duk_uint8_t *ptr; + duk_uint8_t *buf; + duk_uint8_t *buf_end; + duk_size_t len; + duk_idx_t idx_buf; +} duk_cbor_encode_context; + +typedef struct { + duk_hthread *thr; + const duk_uint8_t *buf; + duk_size_t off; + duk_size_t len; +} duk_cbor_decode_context; + +DUK_LOCAL void duk__cbor_encode_value(duk_cbor_encode_context *enc_ctx); +DUK_LOCAL void duk__cbor_decode_value(duk_cbor_decode_context *dec_ctx); + +/* + * Misc + */ + +DUK_LOCAL duk_uint32_t duk__cbor_double_to_uint32(double d) { + /* Out of range casts are undefined behavior, so caller must avoid. */ + DUK_ASSERT(d >= 0.0 && d <= 4294967295.0); + return (duk_uint32_t) d; +} + +/* + * Encoding + */ + +DUK_LOCAL void duk__cbor_encode_error(duk_cbor_encode_context *enc_ctx) { + (void) duk_type_error(enc_ctx->thr, "cbor encode error"); +} + +/* Check that a size_t is in uint32 range to avoid out-of-range casts. */ +DUK_LOCAL void duk__cbor_encode_sizet_uint32_check(duk_cbor_encode_context *enc_ctx, duk_size_t len) { + if (DUK_UNLIKELY(sizeof(duk_size_t) > sizeof(duk_uint32_t) && len > (duk_size_t) DUK_UINT32_MAX)) { + duk__cbor_encode_error(enc_ctx); + } +} + +DUK_LOCAL DUK_NOINLINE void duk__cbor_encode_ensure_slowpath(duk_cbor_encode_context *enc_ctx, duk_size_t len) { + duk_size_t oldlen; + duk_size_t minlen; + duk_size_t newlen; + duk_uint8_t *p_new; + duk_size_t old_data_len; + + DUK_ASSERT(enc_ctx->ptr >= enc_ctx->buf); + DUK_ASSERT(enc_ctx->buf_end >= enc_ctx->ptr); + DUK_ASSERT(enc_ctx->buf_end >= enc_ctx->buf); + + /* Overflow check. + * + * Limit example: 0xffffffffUL / 2U = 0x7fffffffUL, we reject >= 0x80000000UL. + */ + oldlen = enc_ctx->len; + minlen = oldlen + len; + if (DUK_UNLIKELY(oldlen > DUK_SIZE_MAX / 2U || minlen < oldlen)) { + duk__cbor_encode_error(enc_ctx); + } + +#if defined(DUK_CBOR_STRESS) + newlen = oldlen + 1U; +#else + newlen = oldlen * 2U; +#endif + DUK_ASSERT(newlen >= oldlen); + + if (minlen > newlen) { + newlen = minlen; + } + DUK_ASSERT(newlen >= oldlen); + DUK_ASSERT(newlen >= minlen); + DUK_ASSERT(newlen > 0U); + + DUK_DD(DUK_DDPRINT("cbor encode buffer resized to %ld", (long) newlen)); + + p_new = (duk_uint8_t *) duk_resize_buffer(enc_ctx->thr, enc_ctx->idx_buf, newlen); + DUK_ASSERT(p_new != NULL); + old_data_len = (duk_size_t) (enc_ctx->ptr - enc_ctx->buf); + enc_ctx->buf = p_new; + enc_ctx->buf_end = p_new + newlen; + enc_ctx->ptr = p_new + old_data_len; + enc_ctx->len = newlen; +} + +DUK_LOCAL DUK_INLINE void duk__cbor_encode_ensure(duk_cbor_encode_context *enc_ctx, duk_size_t len) { + if (DUK_LIKELY((duk_size_t) (enc_ctx->buf_end - enc_ctx->ptr) >= len)) { + return; + } + duk__cbor_encode_ensure_slowpath(enc_ctx, len); +} + +DUK_LOCAL duk_size_t duk__cbor_get_reserve(duk_cbor_encode_context *enc_ctx) { + DUK_ASSERT(enc_ctx->ptr >= enc_ctx->buf); + DUK_ASSERT(enc_ctx->ptr <= enc_ctx->buf_end); + return (duk_size_t) (enc_ctx->buf_end - enc_ctx->ptr); +} + +DUK_LOCAL void duk__cbor_encode_uint32(duk_cbor_encode_context *enc_ctx, duk_uint32_t u, duk_uint8_t base) { + duk_uint8_t *p; + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 4); + + p = enc_ctx->ptr; + if (DUK_LIKELY(u <= 23U)) { + *p++ = (duk_uint8_t) (base + (duk_uint8_t) u); + } else if (u <= 0xffUL) { + *p++ = base + 0x18U; + *p++ = (duk_uint8_t) u; + } else if (u <= 0xffffUL) { + *p++ = base + 0x19U; + DUK_RAW_WRITEINC_U16_BE(p, (duk_uint16_t) u); + } else { + *p++ = base + 0x1aU; + DUK_RAW_WRITEINC_U32_BE(p, u); + } + enc_ctx->ptr = p; +} + +#if defined(DUK_CBOR_DOUBLE_AS_IS) +DUK_LOCAL void duk__cbor_encode_double(duk_cbor_encode_context *enc_ctx, double d) { + duk_uint8_t *p; + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + p = enc_ctx->ptr; + *p++ = 0xfbU; + DUK_RAW_WRITEINC_DOUBLE_BE(p, d); + p += 8; + enc_ctx->ptr = p; +} +#else /* DUK_CBOR_DOUBLE_AS_IS */ +DUK_LOCAL void duk__cbor_encode_double_fp(duk_cbor_encode_context *enc_ctx, double d) { + duk_double_union u; + duk_uint16_t u16; + duk_int16_t expt; + duk_uint8_t *p; + + DUK_ASSERT(DUK_FPCLASSIFY(d) != DUK_FP_ZERO); + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + /* Organize into little endian (no-op if platform is little endian). */ + u.d = d; + duk_dblunion_host_to_little(&u); + + /* Check if 'd' can represented as a normal half-float. + * Denormal half-floats could also be used, but that check + * isn't done now (denormal half-floats are decoded of course). + * So just check exponent range and that at most 10 significant + * bits (excluding implicit leading 1) are used in 'd'. + */ + u16 = (((duk_uint16_t) u.uc[7]) << 8) | ((duk_uint16_t) u.uc[6]); + expt = (duk_int16_t) ((u16 & 0x7ff0U) >> 4) - 1023; + + if (expt >= -14 && expt <= 15) { + /* Half-float normal exponents (excl. denormals). + * + * 7 6 5 4 3 2 1 0 (LE index) + * double: seeeeeee eeeemmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm + * half: seeeee mmmm mmmmmm00 00000000 00000000 00000000 00000000 00000000 + */ + duk_bool_t use_half_float; + + use_half_float = + (u.uc[0] == 0 && u.uc[1] == 0 && u.uc[2] == 0 && u.uc[3] == 0 && + u.uc[4] == 0 && (u.uc[5] & 0x03U) == 0); + + if (use_half_float) { + duk_uint32_t t; + + expt += 15; + t = (duk_uint32_t) (u.uc[7] & 0x80U) << 8; + t += (duk_uint32_t) expt << 10; + t += ((duk_uint32_t) u.uc[6] & 0x0fU) << 6; + t += ((duk_uint32_t) u.uc[5]) >> 2; + + /* seeeeemm mmmmmmmm */ + p = enc_ctx->ptr; + *p++ = 0xf9U; + DUK_RAW_WRITEINC_U16_BE(p, (duk_uint16_t) t); + enc_ctx->ptr = p; + return; + } + } + + /* Same check for plain float. Also no denormal support here. */ + if (expt >= -126 && expt <= 127) { + /* Float normal exponents (excl. denormals). + * + * double: seeeeeee eeeemmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm + * float: seeee eeeemmmm mmmmmmmm mmmmmmmm mmm00000 00000000 00000000 00000000 + */ + duk_bool_t use_float; + duk_float_t d_float; + + /* We could do this explicit mantissa check, but doing + * a double-float-double cast is fine because we've + * already verified that the exponent is in range so + * that the narrower cast is not undefined behavior. + */ +#if 0 + use_float = + (u.uc[0] == 0 && u.uc[1] == 0 && u.uc[2] == 0 && (u.uc[3] & 0xe0U) == 0); +#endif + d_float = (duk_float_t) d; + use_float = duk_double_equals((duk_double_t) d_float, d); + if (use_float) { + p = enc_ctx->ptr; + *p++ = 0xfaU; + DUK_RAW_WRITEINC_FLOAT_BE(p, d_float); + enc_ctx->ptr = p; + return; + } + } + + /* Special handling for NaN and Inf which we want to encode as + * half-floats. They share the same (maximum) exponent. + */ + if (expt == 1024) { + DUK_ASSERT(DUK_ISNAN(d) || DUK_ISINF(d)); + p = enc_ctx->ptr; + *p++ = 0xf9U; + if (DUK_ISNAN(d)) { + /* Shortest NaN encoding is using a half-float. Lose the + * exact NaN bits in the process. IEEE double would be + * 7ff8 0000 0000 0000, i.e. a quiet NaN in most architectures + * (https://en.wikipedia.org/wiki/NaN#Encoding). The + * equivalent half float is 7e00. + */ + *p++ = 0x7eU; + } else { + /* Shortest +/- Infinity encoding is using a half-float. */ + if (DUK_SIGNBIT(d)) { + *p++ = 0xfcU; + } else { + *p++ = 0x7cU; + } + } + *p++ = 0x00U; + enc_ctx->ptr = p; + return; + } + + /* Cannot use half-float or float, encode as full IEEE double. */ + p = enc_ctx->ptr; + *p++ = 0xfbU; + DUK_RAW_WRITEINC_DOUBLE_BE(p, d); + enc_ctx->ptr = p; +} + +DUK_LOCAL void duk__cbor_encode_double(duk_cbor_encode_context *enc_ctx, double d) { + duk_uint8_t *p; + double d_floor; + + /* Integers and floating point values of all types are conceptually + * equivalent in CBOR. Try to always choose the shortest encoding + * which is not always immediately obvious. For example, NaN and Inf + * can be most compactly represented as a half-float (assuming NaN + * bits are not preserved), and 0x1'0000'0000 as a single precision + * float. Shortest forms in preference order (prefer integer over + * float when equal length): + * + * uint 1 byte [0,23] (not -0) + * sint 1 byte [-24,-1] + * uint+1 2 bytes [24,255] + * sint+1 2 bytes [-256,-25] + * uint+2 3 bytes [256,65535] + * sint+2 3 bytes [-65536,-257] + * half-float 3 bytes -0, NaN, +/- Infinity, range [-65504,65504] + * uint+4 5 bytes [65536,4294967295] + * sint+4 5 bytes [-4294967296,-258] + * float 5 bytes range [-(1 - 2^(-24)) * 2^128, (1 - 2^(-24)) * 2^128] + * uint+8 9 bytes [4294967296,18446744073709551615] + * sint+8 9 bytes [-18446744073709551616,-4294967297] + * double 9 bytes + * + * For whole numbers (compatible with integers): + * - 1-byte or 2-byte uint/sint representation is preferred for + * [-256,255]. + * - 3-byte uint/sint is preferred for [-65536,65535]. Half floats + * are never preferred because they have the same length. + * - 5-byte uint/sint is preferred for [-4294967296,4294967295]. + * Single precision floats are never preferred, and half-floats + * don't reach above the 3-byte uint/sint range so they're never + * preferred. + * - So, for all integers up to signed/unsigned 32-bit range the + * preferred encoding is always an integer uint/sint. + * - For integers above 32 bits the situation is more complicated. + * Half-floats are never useful for them because of their limited + * range, but IEEE single precision floats (5 bytes encoded) can + * represent some integers between the 32-bit and 64-bit ranges + * which require 9 bytes as a uint/sint. + * + * For floating point values not compatible with integers, the + * preferred encoding is quite clear: + * - For +Inf/-Inf use half-float. + * - For NaN use a half-float, assuming NaN bits ("payload") is + * not worth preserving. Duktape doesn't in general guarantee + * preservation of the NaN payload so using a half-float seems + * consistent with that. + * - For remaining values, prefer the shortest form which doesn't + * lose any precision. For normal half-floats and single precision + * floats this is simple: just check exponent and mantissa bits + * using a fixed mask. For denormal half-floats and single + * precision floats the check is a bit more complicated: a normal + * IEEE double can sometimes be represented as a denormal + * half-float or single precision float. + * + * https://en.wikipedia.org/wiki/Half-precision_floating-point_format#IEEE_754_half-precision_binary_floating-point_format:_binary16 + */ + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + /* Most important path is integers. The floor() test will be true + * for Inf too (but not NaN). + */ + d_floor = DUK_FLOOR(d); /* identity if d is +/- 0.0, NaN, or +/- Infinity */ + if (DUK_LIKELY(duk_double_equals(d_floor, d) != 0)) { + DUK_ASSERT(!DUK_ISNAN(d)); /* NaN == NaN compares false. */ + if (DUK_SIGNBIT(d)) { + if (d >= -4294967296.0) { + d = -1.0 - d; + if (d >= 0.0) { + DUK_ASSERT(d >= 0.0); + duk__cbor_encode_uint32(enc_ctx, duk__cbor_double_to_uint32(d), 0x20U); + return; + } + + /* Input was negative zero, d == -1.0 < 0.0. + * Shortest -0 is using half-float. + */ + p = enc_ctx->ptr; + *p++ = 0xf9U; + *p++ = 0x80U; + *p++ = 0x00U; + enc_ctx->ptr = p; + return; + } + } else { + if (d <= 4294967295.0) { + /* Positive zero needs no special handling. */ + DUK_ASSERT(d >= 0.0); + duk__cbor_encode_uint32(enc_ctx, duk__cbor_double_to_uint32(d), 0x00U); + return; + } + } + } + + /* 64-bit integers are not supported at present. So + * we also don't need to deal with choosing between a + * 64-bit uint/sint representation vs. IEEE double or + * float. + */ + + DUK_ASSERT(DUK_FPCLASSIFY(d) != DUK_FP_ZERO); + duk__cbor_encode_double_fp(enc_ctx, d); +} +#endif /* DUK_CBOR_DOUBLE_AS_IS */ + +DUK_LOCAL void duk__cbor_encode_string_top(duk_cbor_encode_context *enc_ctx) { + const duk_uint8_t *str; + duk_size_t len; + duk_uint8_t *p; + + /* CBOR differentiates between UTF-8 text strings and byte strings. + * Text strings MUST be valid UTF-8, so not all Duktape strings can + * be encoded as valid CBOR text strings. Possible behaviors: + * + * 1. Use text string when input is valid UTF-8, otherwise use + * byte string (maybe tagged to indicate it was an extended + * UTF-8 string). + * 2. Always use text strings, but sanitize input string so that + * invalid UTF-8 is replaced with U+FFFD for example. Combine + * surrogates whenever possible. + * 3. Always use byte strings. This is simple and produces valid + * CBOR, but isn't ideal for interoperability. + * 4. Always use text strings, even for invalid UTF-8 such as + * codepoints in the surrogate pair range. This is simple but + * produces technically invalid CBOR for non-UTF-8 strings which + * may affect interoperability. + * + * Current default is 1; can be changed with defines. + */ + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + str = (const duk_uint8_t *) duk_require_lstring(enc_ctx->thr, -1, &len); + if (duk_is_symbol(enc_ctx->thr, -1)) { + /* Symbols, encode as an empty table for now. This matches + * the behavior of cbor-js. + * + * XXX: Maybe encode String() coercion with a tag? + * XXX: Option to keep enough information to recover + * Symbols when decoding (this is not always desirable). + */ + p = enc_ctx->ptr; + *p++ = 0xa0U; + enc_ctx->ptr = p; + return; + } + + duk__cbor_encode_sizet_uint32_check(enc_ctx, len); +#if defined(DUK_CBOR_TEXT_STRINGS) + duk__cbor_encode_uint32(enc_ctx, (duk_uint32_t) len, 0x60U); +#elif defined(DUK_CBOR_BYTE_STRINGS) + duk__cbor_encode_uint32(enc_ctx, (duk_uint32_t) len, 0x40U); +#else + duk__cbor_encode_uint32(enc_ctx, (duk_uint32_t) len, + (DUK_LIKELY(duk_unicode_is_utf8_compatible(str, len) != 0) ? 0x60U : 0x40U)); +#endif + duk__cbor_encode_ensure(enc_ctx, len); + p = enc_ctx->ptr; + duk_memcpy((void *) p, (const void *) str, len); + p += len; + enc_ctx->ptr = p; +} + +DUK_LOCAL void duk__cbor_encode_object(duk_cbor_encode_context *enc_ctx) { + duk_uint8_t *buf; + duk_size_t len; + duk_uint8_t *p; + duk_size_t i; + duk_size_t off_ib; + duk_uint32_t count; + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + /* XXX: Support for specific built-ins like Date and RegExp. */ + if (duk_is_array(enc_ctx->thr, -1)) { + /* Shortest encoding for arrays >= 256 in length is actually + * the indefinite length one (3 or more bytes vs. 2 bytes). + * We still use the definite length version because it is + * more decoding friendly. + */ + len = duk_get_length(enc_ctx->thr, -1); + duk__cbor_encode_sizet_uint32_check(enc_ctx, len); + duk__cbor_encode_uint32(enc_ctx, (duk_uint32_t) len, 0x80U); + for (i = 0; i < len; i++) { + duk_get_prop_index(enc_ctx->thr, -1, (duk_uarridx_t) i); + duk__cbor_encode_value(enc_ctx); + } + } else if (duk_is_buffer_data(enc_ctx->thr, -1)) { + /* XXX: Tag buffer data? + * XXX: Encode typed arrays as integer arrays rather + * than buffer data as is? + */ + buf = (duk_uint8_t *) duk_require_buffer_data(enc_ctx->thr, -1, &len); + duk__cbor_encode_sizet_uint32_check(enc_ctx, len); + duk__cbor_encode_uint32(enc_ctx, (duk_uint32_t) len, 0x40U); + duk__cbor_encode_ensure(enc_ctx, len); + p = enc_ctx->ptr; + duk_memcpy((void *) p, (const void *) buf, len); + p += len; + enc_ctx->ptr = p; + } else { + /* We don't know the number of properties in advance + * but would still like to encode at least small + * objects without indefinite length. Emit an + * indefinite length byte initially, and if the final + * property count is small enough to also fit in one + * byte, backpatch it later. Otherwise keep the + * indefinite length. This works well up to 23 + * properties which is practical and good enough. + */ + off_ib = (duk_size_t) (enc_ctx->ptr - enc_ctx->buf); /* XXX: get_offset? */ + count = 0U; + p = enc_ctx->ptr; + *p++ = 0xa0U + 0x1fU; /* indefinite length */ + enc_ctx->ptr = p; + duk_enum(enc_ctx->thr, -1, DUK_ENUM_OWN_PROPERTIES_ONLY); + while (duk_next(enc_ctx->thr, -1, 1 /*get_value*/)) { + duk_insert(enc_ctx->thr, -2); /* [ ... key value ] -> [ ... value key ] */ + duk__cbor_encode_value(enc_ctx); + duk__cbor_encode_value(enc_ctx); + count++; + if (count == 0U) { + duk__cbor_encode_error(enc_ctx); + } + } + duk_pop(enc_ctx->thr); + if (count <= 0x17U) { + DUK_ASSERT(off_ib < enc_ctx->len); + enc_ctx->buf[off_ib] = 0xa0U + (duk_uint8_t) count; + } else { + duk__cbor_encode_ensure(enc_ctx, 1); + p = enc_ctx->ptr; + *p++ = 0xffU; /* break */ + enc_ctx->ptr = p; + } + } +} + +DUK_LOCAL void duk__cbor_encode_buffer(duk_cbor_encode_context *enc_ctx) { + duk_uint8_t *buf; + duk_size_t len; + duk_uint8_t *p; + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + /* Tag buffer data? */ + buf = (duk_uint8_t *) duk_require_buffer(enc_ctx->thr, -1, &len); + duk__cbor_encode_sizet_uint32_check(enc_ctx, len); + duk__cbor_encode_uint32(enc_ctx, (duk_uint32_t) len, 0x40U); + duk__cbor_encode_ensure(enc_ctx, len); + p = enc_ctx->ptr; + duk_memcpy((void *) p, (const void *) buf, len); + p += len; + enc_ctx->ptr = p; +} + +DUK_LOCAL void duk__cbor_encode_pointer(duk_cbor_encode_context *enc_ctx) { + /* Pointers (void *) are challenging to encode. They can't + * be relied to be even 64-bit integer compatible (there are + * pointer models larger than that), nor can floats encode + * them. They could be encoded as strings (%p format) but + * that's not portable. They could be encoded as direct memory + * representations. Recovering pointers is non-portable in any + * case but it would be nice to be able to detect and recover + * compatible pointers. + * + * For now, encode as "(%p)" string, matching JX. There doesn't + * seem to be an appropriate tag, so pointers don't currently + * survive a CBOR encode/decode roundtrip intact. + */ + const char *ptr; + + ptr = duk_to_string(enc_ctx->thr, -1); + DUK_ASSERT(ptr != NULL); + duk_push_sprintf(enc_ctx->thr, "(%s)", ptr); + duk_remove(enc_ctx->thr, -2); + duk__cbor_encode_string_top(enc_ctx); +} + +DUK_LOCAL void duk__cbor_encode_lightfunc(duk_cbor_encode_context *enc_ctx) { + duk_uint8_t *p; + + /* Caller must ensure space. */ + DUK_ASSERT(duk__cbor_get_reserve(enc_ctx) >= 1 + 8); + + /* For now encode as an empty object. */ + p = enc_ctx->ptr; + *p++ = 0xa0U; + enc_ctx->ptr = p; +} + +DUK_LOCAL void duk__cbor_encode_value(duk_cbor_encode_context *enc_ctx) { + duk_uint8_t *p; + + /* Encode/decode cycle currently loses some type information. + * This can be improved by registering custom tags with IANA. + */ + + /* When working with deeply recursive structures, this is important + * to ensure there's no effective depth limit. + */ + duk_require_stack(enc_ctx->thr, 4); + + /* Reserve space for up to 64-bit types (1 initial byte + 8 + * followup bytes). This allows encoding of integers, floats, + * string/buffer length fields, etc without separate checks + * in each code path. + */ + duk__cbor_encode_ensure(enc_ctx, 1 + 8); + + switch (duk_get_type(enc_ctx->thr, -1)) { + case DUK_TYPE_UNDEFINED: { + p = enc_ctx->ptr; + *p++ = 0xf7; + enc_ctx->ptr = p; + break; + } + case DUK_TYPE_NULL: { + p = enc_ctx->ptr; + *p++ = 0xf6; + enc_ctx->ptr = p; + break; + } + case DUK_TYPE_BOOLEAN: { + duk_uint8_t u8 = duk_get_boolean(enc_ctx->thr, -1) ? 0xf5U : 0xf4U; + p = enc_ctx->ptr; + *p++ = u8; + enc_ctx->ptr = p; + break; + } + case DUK_TYPE_NUMBER: { + duk__cbor_encode_double(enc_ctx, duk_get_number(enc_ctx->thr, -1)); + break; + } + case DUK_TYPE_STRING: { + duk__cbor_encode_string_top(enc_ctx); + break; + } + case DUK_TYPE_OBJECT: { + duk__cbor_encode_object(enc_ctx); + break; + } + case DUK_TYPE_BUFFER: { + duk__cbor_encode_buffer(enc_ctx); + break; + } + case DUK_TYPE_POINTER: { + duk__cbor_encode_pointer(enc_ctx); + break; + } + case DUK_TYPE_LIGHTFUNC: { + duk__cbor_encode_lightfunc(enc_ctx); + break; + } + case DUK_TYPE_NONE: + default: + goto fail; + } + + duk_pop(enc_ctx->thr); + return; + + fail: + duk__cbor_encode_error(enc_ctx); +} + +/* + * Decoding + */ + +DUK_LOCAL void duk__cbor_req_stack(duk_cbor_decode_context *dec_ctx) { + duk_require_stack(dec_ctx->thr, 4); +} + +DUK_LOCAL void duk__cbor_decode_error(duk_cbor_decode_context *dec_ctx) { + (void) duk_type_error(dec_ctx->thr, "cbor decode error"); +} + +DUK_LOCAL duk_uint8_t duk__cbor_decode_readbyte(duk_cbor_decode_context *dec_ctx) { + DUK_ASSERT(dec_ctx->off <= dec_ctx->len); + if (DUK_UNLIKELY(dec_ctx->len - dec_ctx->off < 1U)) { + duk__cbor_decode_error(dec_ctx); + } + return dec_ctx->buf[dec_ctx->off++]; +} + +DUK_LOCAL duk_uint16_t duk__cbor_decode_read_u16(duk_cbor_decode_context *dec_ctx) { + duk_uint16_t res; + + DUK_ASSERT(dec_ctx->off <= dec_ctx->len); + if (DUK_UNLIKELY(dec_ctx->len - dec_ctx->off < 2U)) { + duk__cbor_decode_error(dec_ctx); + } + res = DUK_RAW_READ_U16_BE(dec_ctx->buf + dec_ctx->off); + dec_ctx->off += 2; + return res; +} + +DUK_LOCAL duk_uint32_t duk__cbor_decode_read_u32(duk_cbor_decode_context *dec_ctx) { + duk_uint32_t res; + + DUK_ASSERT(dec_ctx->off <= dec_ctx->len); + if (DUK_UNLIKELY(dec_ctx->len - dec_ctx->off < 4U)) { + duk__cbor_decode_error(dec_ctx); + } + res = DUK_RAW_READ_U32_BE(dec_ctx->buf + dec_ctx->off); + dec_ctx->off += 4; + return res; +} + +DUK_LOCAL duk_uint8_t duk__cbor_decode_peekbyte(duk_cbor_decode_context *dec_ctx) { + if (DUK_UNLIKELY(dec_ctx->off >= dec_ctx->len)) { + duk__cbor_decode_error(dec_ctx); + } + return dec_ctx->buf[dec_ctx->off]; +} + +DUK_LOCAL void duk__cbor_decode_rewind(duk_cbor_decode_context *dec_ctx, duk_size_t len) { + DUK_ASSERT(len <= dec_ctx->off); /* Caller must ensure. */ + dec_ctx->off -= len; +} + +#if 0 +DUK_LOCAL void duk__cbor_decode_ensure(duk_cbor_decode_context *dec_ctx, duk_size_t len) { + if (dec_ctx->off + len > dec_ctx->len) { + duk__cbor_decode_error(dec_ctx); + } +} +#endif + +DUK_LOCAL const duk_uint8_t *duk__cbor_decode_consume(duk_cbor_decode_context *dec_ctx, duk_size_t len) { + DUK_ASSERT(dec_ctx->off <= dec_ctx->len); + if (DUK_LIKELY(dec_ctx->len - dec_ctx->off >= len)) { + const duk_uint8_t *res = dec_ctx->buf + dec_ctx->off; + dec_ctx->off += len; + return res; + } + + duk__cbor_decode_error(dec_ctx); /* Not enough input. */ + return NULL; +} + +DUK_LOCAL int duk__cbor_decode_checkbreak(duk_cbor_decode_context *dec_ctx) { + if (duk__cbor_decode_peekbyte(dec_ctx) == 0xffU) { + DUK_ASSERT(dec_ctx->off < dec_ctx->len); + dec_ctx->off++; +#if 0 + (void) duk__cbor_decode_readbyte(dec_ctx); +#endif + return 1; + } + return 0; +} + +DUK_LOCAL void duk__cbor_decode_push_aival_int(duk_cbor_decode_context *dec_ctx, duk_uint8_t ib, duk_bool_t negative) { + duk_uint8_t ai; + duk_uint32_t t, t1, t2; +#if 0 + duk_uint64_t t3; +#endif + duk_double_t d1, d2; + duk_double_t d; + + ai = ib & 0x1fU; + if (ai <= 0x17U) { + t = ai; + goto shared_exit; + } + + switch (ai) { + case 0x18U: /* 1 byte */ + t = (duk_uint32_t) duk__cbor_decode_readbyte(dec_ctx); + goto shared_exit; + case 0x19U: /* 2 byte */ + t = (duk_uint32_t) duk__cbor_decode_read_u16(dec_ctx); + goto shared_exit; + case 0x1aU: /* 4 byte */ + t = (duk_uint32_t) duk__cbor_decode_read_u32(dec_ctx); + goto shared_exit; + case 0x1bU: /* 8 byte */ + /* For uint64 it's important to handle the -1.0 part before + * casting to double: otherwise the adjustment might be lost + * in the cast. Uses: -1.0 - d <=> -(d + 1.0). + */ + t = (duk_uint32_t) duk__cbor_decode_read_u32(dec_ctx); + t2 = t; + t = (duk_uint32_t) duk__cbor_decode_read_u32(dec_ctx); + t1 = t; +#if 0 + t3 = (duk_uint64_t) t2 * DUK_U64_CONSTANT(0x100000000) + (duk_uint64_t) t1; + if (negative) { + if (t3 == DUK_UINT64_MAX) { + /* -(0xffff'ffff'ffff'ffffULL + 1) = + * -0x1'0000'0000'0000'0000 + * + * >>> -0x10000000000000000 + * -18446744073709551616L + */ + return -18446744073709551616.0; + } else { + return -((duk_double_t) (t3 + DUK_U64_CONSTANT(1))); + } + } else { + return (duk_double_t) t3; /* XXX: cast helper */ + } +#endif +#if 0 + t3 = (duk_uint64_t) t2 * DUK_U64_CONSTANT(0x100000000) + (duk_uint64_t) t1; + if (negative) { + /* Simpler version: take advantage of the fact that + * 0xffff'ffff'ffff'ffff and 0x1'0000'0000'0000'0000 + * both round to 0x1'0000'0000'0000'0000: + * > (0xffffffffffffffff).toString(16) + * '10000000000000000' + * > (0x10000000000000000).toString(16) + * '10000000000000000' + * + * For the DUK_UINT64_MAX case we just skip the +1 + * increment to avoid wrapping; the result still + * comes out right for an IEEE double cast. + */ + if (t3 != DUK_UINT64_MAX) { + t3++; + } + return -((duk_double_t) t3); + } else { + return (duk_double_t) t3; /* XXX: cast helper */ + } +#endif +#if 1 + /* Use two double parts, avoids dependency on 64-bit type. + * Avoid precision loss carefully, especially when dealing + * with the required +1 for negative values. + * + * No fastint check for this path at present. + */ + d1 = (duk_double_t) t1; /* XXX: cast helpers */ + d2 = (duk_double_t) t2 * 4294967296.0; + if (negative) { + d1 += 1.0; + } + d = d2 + d1; + if (negative) { + d = -d; + } +#endif + /* XXX: a push and check for fastint API would be nice */ + duk_push_number(dec_ctx->thr, d); + return; + } + + duk__cbor_decode_error(dec_ctx); + return; + + shared_exit: + if (negative) { + /* XXX: a push and check for fastint API would be nice */ + if ((duk_uint_t) t <= (duk_uint_t) -(DUK_INT_MIN + 1)) { + duk_push_int(dec_ctx->thr, -1 - ((duk_int_t) t)); + } else { + duk_push_number(dec_ctx->thr, -1.0 - (duk_double_t) t); + } + } else { + duk_push_uint(dec_ctx->thr, (duk_uint_t) t); + } +} + +DUK_LOCAL void duk__cbor_decode_skip_aival_int(duk_cbor_decode_context *dec_ctx, duk_uint8_t ib) { + const duk_int8_t skips[32] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 8, -1, -1, -1, -1 + }; + duk_uint8_t ai; + duk_int8_t skip; + + ai = ib & 0x1fU; + skip = skips[ai]; + if (DUK_UNLIKELY(skip < 0)) { + duk__cbor_decode_error(dec_ctx); + } + duk__cbor_decode_consume(dec_ctx, (duk_size_t) skip); + return; +} + +DUK_LOCAL duk_uint32_t duk__cbor_decode_aival_uint32(duk_cbor_decode_context *dec_ctx, duk_uint8_t ib) { + duk_uint8_t ai; + duk_uint32_t t; + + ai = ib & 0x1fU; + if (ai <= 0x17U) { + return (duk_uint32_t) ai; + } + + switch (ai) { + case 0x18U: /* 1 byte */ + t = (duk_uint32_t) duk__cbor_decode_readbyte(dec_ctx); + return t; + case 0x19U: /* 2 byte */ + t = (duk_uint32_t) duk__cbor_decode_read_u16(dec_ctx); + return t; + case 0x1aU: /* 4 byte */ + t = (duk_uint32_t) duk__cbor_decode_read_u32(dec_ctx); + return t; + case 0x1bU: /* 8 byte */ + t = (duk_uint32_t) duk__cbor_decode_read_u32(dec_ctx); + if (t != 0U) { + break; + } + t = (duk_uint32_t) duk__cbor_decode_read_u32(dec_ctx); + return t; + } + + duk__cbor_decode_error(dec_ctx); + return 0U; +} + +DUK_LOCAL void duk__cbor_decode_buffer(duk_cbor_decode_context *dec_ctx, duk_uint8_t expected_base) { + duk_uint32_t len; + duk_uint8_t *buf; + const duk_uint8_t *inp; + duk_uint8_t ib; + + ib = duk__cbor_decode_readbyte(dec_ctx); + if ((ib & 0xe0U) != expected_base) { + duk__cbor_decode_error(dec_ctx); + } + /* Indefinite format is rejected by the following on purpose. */ + len = duk__cbor_decode_aival_uint32(dec_ctx, ib); + inp = duk__cbor_decode_consume(dec_ctx, len); + /* XXX: duk_push_fixed_buffer_with_data() would be a nice API addition. */ + buf = (duk_uint8_t *) duk_push_fixed_buffer(dec_ctx->thr, (duk_size_t) len); + duk_memcpy((void *) buf, (const void *) inp, (size_t) len); +} + +DUK_LOCAL void duk__cbor_decode_join_buffers(duk_cbor_decode_context *dec_ctx, duk_idx_t count) { + duk_size_t total_size = 0; + duk_idx_t top = duk_get_top(dec_ctx->thr); + duk_idx_t base = top - count; /* count is >= 1 */ + duk_idx_t idx; + duk_uint8_t *p = NULL; + + DUK_ASSERT(count >= 1); + DUK_ASSERT(top >= count); + + for (;;) { + /* First round: compute total size. + * Second round: copy into place. + */ + for (idx = base; idx < top; idx++) { + duk_uint8_t *buf_data; + duk_size_t buf_size; + + buf_data = (duk_uint8_t *) duk_require_buffer(dec_ctx->thr, idx, &buf_size); + if (p != NULL) { + if (buf_size > 0U) { + duk_memcpy((void *) p, (const void *) buf_data, buf_size); + } + p += buf_size; + } else { + total_size += buf_size; + if (DUK_UNLIKELY(total_size < buf_size)) { /* Wrap check. */ + duk__cbor_decode_error(dec_ctx); + } + } + } + + if (p != NULL) { + break; + } else { + p = (duk_uint8_t *) duk_push_fixed_buffer(dec_ctx->thr, total_size); + DUK_ASSERT(p != NULL); + } + } + + duk_replace(dec_ctx->thr, base); + duk_pop_n(dec_ctx->thr, count - 1); +} + +DUK_LOCAL void duk__cbor_decode_and_join_strbuf(duk_cbor_decode_context *dec_ctx, duk_uint8_t expected_base) { + duk_idx_t count = 0; + for (;;) { + if (duk__cbor_decode_checkbreak(dec_ctx)) { + break; + } + duk_require_stack(dec_ctx->thr, 1); + duk__cbor_decode_buffer(dec_ctx, expected_base); + count++; + if (DUK_UNLIKELY(count <= 0)) { /* Wrap check. */ + duk__cbor_decode_error(dec_ctx); + } + } + if (count == 0) { + (void) duk_push_fixed_buffer(dec_ctx->thr, 0); + } else if (count > 1) { + duk__cbor_decode_join_buffers(dec_ctx, count); + } +} + +DUK_LOCAL duk_double_t duk__cbor_decode_half_float(duk_cbor_decode_context *dec_ctx) { + duk_double_union u; + const duk_uint8_t *inp; + duk_int_t expt; + duk_uint_t u16; + duk_uint_t tmp; + duk_double_t res; + + inp = duk__cbor_decode_consume(dec_ctx, 2); + u16 = ((duk_uint_t) inp[0] << 8) + (duk_uint_t) inp[1]; + expt = (duk_int_t) ((u16 >> 10) & 0x1fU) - 15; + + /* Reconstruct IEEE double into little endian order first, then convert + * to host order. + */ + + duk_memzero((void *) &u, sizeof(u)); + + if (expt == -15) { + /* Zero or denormal; but note that half float + * denormals become double normals. + */ + if ((u16 & 0x03ffU) == 0) { + u.uc[7] = inp[0] & 0x80U; + } else { + /* Create denormal by first creating a double that + * contains the denormal bits and a leading implicit + * 1-bit. Then subtract away the implicit 1-bit. + * + * 0.mmmmmmmmmm * 2^-14 + * 1.mmmmmmmmmm 0.... * 2^-14 + * -1.0000000000 0.... * 2^-14 + * + * Double exponent: -14 + 1023 = 0x3f1 + */ + u.uc[7] = 0x3fU; + u.uc[6] = 0x10U + (duk_uint8_t) ((u16 >> 6) & 0x0fU); + u.uc[5] = (duk_uint8_t) ((u16 << 2) & 0xffU); /* Mask is really 0xfcU */ + + duk_dblunion_little_to_host(&u); + res = u.d - 0.00006103515625; /* 2^(-14) */ + if (u16 & 0x8000U) { + res = -res; + } + return res; + } + } else if (expt == 16) { + /* +/- Inf or NaN. */ + if ((u16 & 0x03ffU) == 0) { + u.uc[7] = (inp[0] & 0x80U) + 0x7fU; + u.uc[6] = 0xf0U; + } else { + /* Create a 'quiet NaN' with highest + * bit set (there are some platforms + * where the NaN payload convention is + * the opposite). Keep sign. + */ + u.uc[7] = (inp[0] & 0x80U) + 0x7fU; + u.uc[6] = 0xf8U; + } + } else { + /* Normal. */ + tmp = (inp[0] & 0x80U) ? 0x80000000UL : 0UL; + tmp += (duk_uint_t) (expt + 1023) << 20; + tmp += (duk_uint_t) (inp[0] & 0x03U) << 18; + tmp += (duk_uint_t) (inp[1] & 0xffU) << 10; + u.uc[7] = (tmp >> 24) & 0xffU; + u.uc[6] = (tmp >> 16) & 0xffU; + u.uc[5] = (tmp >> 8) & 0xffU; + u.uc[4] = (tmp >> 0) & 0xffU; + } + + duk_dblunion_little_to_host(&u); + return u.d; +} + +DUK_LOCAL void duk__cbor_decode_string(duk_cbor_decode_context *dec_ctx, duk_uint8_t ib, duk_uint8_t ai) { + /* If the CBOR string data is not valid UTF-8 it is technically + * invalid CBOR. Possible behaviors at least: + * + * 1. Reject the input, i.e. throw TypeError. + * + * 2. Accept the input, but sanitize non-UTF-8 data into UTF-8 + * using U+FFFD replacements. Also it might make sense to + * decode non-BMP codepoints into surrogates for better + * ECMAScript compatibility. + * + * 3. Accept the input as a Duktape string (which are not always + * valid UTF-8), but reject any input that would create a + * Symbol representation. + * + * Current behavior is 3. + */ + + if (ai == 0x1fU) { + duk_uint8_t *buf_data; + duk_size_t buf_size; + + duk__cbor_decode_and_join_strbuf(dec_ctx, 0x60U); + buf_data = (duk_uint8_t *) duk_require_buffer(dec_ctx->thr, -1, &buf_size); + (void) duk_push_lstring(dec_ctx->thr, (const char *) buf_data, buf_size); + duk_remove(dec_ctx->thr, -2); + } else { + duk_uint32_t len; + const duk_uint8_t *inp; + + len = duk__cbor_decode_aival_uint32(dec_ctx, ib); + inp = duk__cbor_decode_consume(dec_ctx, len); + (void) duk_push_lstring(dec_ctx->thr, (const char *) inp, (duk_size_t) len); + } + if (duk_is_symbol(dec_ctx->thr, -1)) { + /* Refuse to create Symbols when decoding. */ + duk__cbor_decode_error(dec_ctx); + } + + /* XXX: Here a Duktape API call to convert input -> utf-8 with + * replacements would be nice. + */ +} + +DUK_LOCAL duk_bool_t duk__cbor_decode_array(duk_cbor_decode_context *dec_ctx, duk_uint8_t ib, duk_uint8_t ai) { + duk_uint32_t idx, len; + + duk__cbor_req_stack(dec_ctx); + + /* Support arrays up to 0xfffffffeU in length. 0xffffffff is + * used as an indefinite length marker. + */ + if (ai == 0x1fU) { + len = 0xffffffffUL; + } else { + len = duk__cbor_decode_aival_uint32(dec_ctx, ib); + if (len == 0xffffffffUL) { + return 0; + } + } + + /* XXX: use bare array? */ + duk_push_array(dec_ctx->thr); + for (idx = 0U; ;) { + if (len == 0xffffffffUL && duk__cbor_decode_checkbreak(dec_ctx)) { + break; + } + if (idx == len) { + if (ai == 0x1fU) { + return 0; + } + break; + } + duk__cbor_decode_value(dec_ctx); + duk_put_prop_index(dec_ctx->thr, -2, (duk_uarridx_t) idx); + idx++; + if (idx == 0U) { + return 0; /* wrapped */ + } + } + + return 1; +} + +DUK_LOCAL duk_bool_t duk__cbor_decode_map(duk_cbor_decode_context *dec_ctx, duk_uint8_t ib, duk_uint8_t ai) { + duk_uint32_t count; + + duk__cbor_req_stack(dec_ctx); + + if (ai == 0x1fU) { + count = 0xffffffffUL; + } else { + count = duk__cbor_decode_aival_uint32(dec_ctx, ib); + if (count == 0xffffffffUL) { + return 0; + } + } + + /* XXX: use bare object? */ + duk_push_object(dec_ctx->thr); + for (;;) { + if (count == 0xffffffffUL) { + if (duk__cbor_decode_checkbreak(dec_ctx)) { + break; + } + } else { + if (count == 0UL) { + break; + } + count--; + } + + /* Non-string keys are coerced to strings, + * possibly leading to overwriting previous + * keys. Last key of a certain coerced name + * wins. If key is an object, it will coerce + * to '[object Object]' which is consistent + * but potentially misleading. One alternative + * would be to skip non-string keys. + */ + duk__cbor_decode_value(dec_ctx); + duk__cbor_decode_value(dec_ctx); + duk_put_prop(dec_ctx->thr, -3); + } + + return 1; +} + +DUK_LOCAL duk_double_t duk__cbor_decode_float(duk_cbor_decode_context *dec_ctx) { + duk_float_union u; + const duk_uint8_t *inp; + inp = duk__cbor_decode_consume(dec_ctx, 4); + duk_memcpy((void *) u.uc, (const void *) inp, 4); + duk_fltunion_big_to_host(&u); + return (duk_double_t) u.f; +} + +DUK_LOCAL duk_double_t duk__cbor_decode_double(duk_cbor_decode_context *dec_ctx) { + duk_double_union u; + const duk_uint8_t *inp; + inp = duk__cbor_decode_consume(dec_ctx, 8); + duk_memcpy((void *) u.uc, (const void *) inp, 8); + duk_dblunion_big_to_host(&u); + return u.d; +} + +#if defined(DUK_CBOR_DECODE_FASTPATH) +#define DUK__CBOR_AI (ib & 0x1fU) + +DUK_LOCAL void duk__cbor_decode_value(duk_cbor_decode_context *dec_ctx) { + duk_uint8_t ib; + + /* Any paths potentially recursing back to duk__cbor_decode_value() + * must perform a Duktape value stack growth check. Avoid the check + * here for simple paths like primitive values. + */ + + reread_initial_byte: + DUK_DDD(DUK_DDDPRINT("cbor decode off=%ld len=%ld", (long) dec_ctx->off, (long) dec_ctx->len)); + + ib = duk__cbor_decode_readbyte(dec_ctx); + + /* Full initial byte switch, footprint cost over baseline is ~+1kB. */ + /* XXX: Force full switch with no range check. */ + + switch (ib) { + case 0x00U: case 0x01U: case 0x02U: case 0x03U: case 0x04U: case 0x05U: case 0x06U: case 0x07U: + case 0x08U: case 0x09U: case 0x0aU: case 0x0bU: case 0x0cU: case 0x0dU: case 0x0eU: case 0x0fU: + case 0x10U: case 0x11U: case 0x12U: case 0x13U: case 0x14U: case 0x15U: case 0x16U: case 0x17U: + duk_push_uint(dec_ctx->thr, ib); + break; + case 0x18U: case 0x19U: case 0x1aU: case 0x1bU: + duk__cbor_decode_push_aival_int(dec_ctx, ib, 0 /*negative*/); + break; + case 0x1cU: case 0x1dU: case 0x1eU: case 0x1fU: + goto format_error; + case 0x20U: case 0x21U: case 0x22U: case 0x23U: case 0x24U: case 0x25U: case 0x26U: case 0x27U: + case 0x28U: case 0x29U: case 0x2aU: case 0x2bU: case 0x2cU: case 0x2dU: case 0x2eU: case 0x2fU: + case 0x30U: case 0x31U: case 0x32U: case 0x33U: case 0x34U: case 0x35U: case 0x36U: case 0x37U: + duk_push_int(dec_ctx->thr, -((duk_int_t) ((ib - 0x20U) + 1U))); + break; + case 0x38U: case 0x39U: case 0x3aU: case 0x3bU: + duk__cbor_decode_push_aival_int(dec_ctx, ib, 1 /*negative*/); + break; + case 0x3cU: case 0x3dU: case 0x3eU: case 0x3fU: + goto format_error; + case 0x40U: case 0x41U: case 0x42U: case 0x43U: case 0x44U: case 0x45U: case 0x46U: case 0x47U: + case 0x48U: case 0x49U: case 0x4aU: case 0x4bU: case 0x4cU: case 0x4dU: case 0x4eU: case 0x4fU: + case 0x50U: case 0x51U: case 0x52U: case 0x53U: case 0x54U: case 0x55U: case 0x56U: case 0x57U: + /* XXX: Avoid rewind, we know the length already. */ + DUK_ASSERT(dec_ctx->off > 0U); + dec_ctx->off--; + duk__cbor_decode_buffer(dec_ctx, 0x40U); + break; + case 0x58U: case 0x59U: case 0x5aU: case 0x5bU: + /* XXX: Avoid rewind, decode length inline. */ + DUK_ASSERT(dec_ctx->off > 0U); + dec_ctx->off--; + duk__cbor_decode_buffer(dec_ctx, 0x40U); + break; + case 0x5cU: case 0x5dU: case 0x5eU: + goto format_error; + case 0x5fU: + duk__cbor_decode_and_join_strbuf(dec_ctx, 0x40U); + break; + case 0x60U: case 0x61U: case 0x62U: case 0x63U: case 0x64U: case 0x65U: case 0x66U: case 0x67U: + case 0x68U: case 0x69U: case 0x6aU: case 0x6bU: case 0x6cU: case 0x6dU: case 0x6eU: case 0x6fU: + case 0x70U: case 0x71U: case 0x72U: case 0x73U: case 0x74U: case 0x75U: case 0x76U: case 0x77U: + /* XXX: Avoid double decode of length. */ + duk__cbor_decode_string(dec_ctx, ib, DUK__CBOR_AI); + break; + case 0x78U: case 0x79U: case 0x7aU: case 0x7bU: + /* XXX: Avoid double decode of length. */ + duk__cbor_decode_string(dec_ctx, ib, DUK__CBOR_AI); + break; + case 0x7cU: case 0x7dU: case 0x7eU: + goto format_error; + case 0x7fU: + duk__cbor_decode_string(dec_ctx, ib, DUK__CBOR_AI); + break; + case 0x80U: case 0x81U: case 0x82U: case 0x83U: case 0x84U: case 0x85U: case 0x86U: case 0x87U: + case 0x88U: case 0x89U: case 0x8aU: case 0x8bU: case 0x8cU: case 0x8dU: case 0x8eU: case 0x8fU: + case 0x90U: case 0x91U: case 0x92U: case 0x93U: case 0x94U: case 0x95U: case 0x96U: case 0x97U: + if (DUK_UNLIKELY(duk__cbor_decode_array(dec_ctx, ib, DUK__CBOR_AI) == 0)) { + goto format_error; + } + break; + case 0x98U: case 0x99U: case 0x9aU: case 0x9bU: + if (DUK_UNLIKELY(duk__cbor_decode_array(dec_ctx, ib, DUK__CBOR_AI) == 0)) { + goto format_error; + } + break; + case 0x9cU: case 0x9dU: case 0x9eU: + goto format_error; + case 0x9fU: + if (DUK_UNLIKELY(duk__cbor_decode_array(dec_ctx, ib, DUK__CBOR_AI) == 0)) { + goto format_error; + } + break; + case 0xa0U: case 0xa1U: case 0xa2U: case 0xa3U: case 0xa4U: case 0xa5U: case 0xa6U: case 0xa7U: + case 0xa8U: case 0xa9U: case 0xaaU: case 0xabU: case 0xacU: case 0xadU: case 0xaeU: case 0xafU: + case 0xb0U: case 0xb1U: case 0xb2U: case 0xb3U: case 0xb4U: case 0xb5U: case 0xb6U: case 0xb7U: + if (DUK_UNLIKELY(duk__cbor_decode_map(dec_ctx, ib, DUK__CBOR_AI) == 0)) { + goto format_error; + } + break; + case 0xb8U: case 0xb9U: case 0xbaU: case 0xbbU: + if (DUK_UNLIKELY(duk__cbor_decode_map(dec_ctx, ib, DUK__CBOR_AI) == 0)) { + goto format_error; + } + break; + case 0xbcU: case 0xbdU: case 0xbeU: + goto format_error; + case 0xbfU: + if (DUK_UNLIKELY(duk__cbor_decode_map(dec_ctx, ib, DUK__CBOR_AI) == 0)) { + goto format_error; + } + break; + case 0xc0U: case 0xc1U: case 0xc2U: case 0xc3U: case 0xc4U: case 0xc5U: case 0xc6U: case 0xc7U: + case 0xc8U: case 0xc9U: case 0xcaU: case 0xcbU: case 0xccU: case 0xcdU: case 0xceU: case 0xcfU: + case 0xd0U: case 0xd1U: case 0xd2U: case 0xd3U: case 0xd4U: case 0xd5U: case 0xd6U: case 0xd7U: + /* Tag 0-23: drop. */ + goto reread_initial_byte; + case 0xd8U: case 0xd9U: case 0xdaU: case 0xdbU: + duk__cbor_decode_skip_aival_int(dec_ctx, ib); + goto reread_initial_byte; + case 0xdcU: case 0xddU: case 0xdeU: case 0xdfU: + goto format_error; + case 0xe0U: + goto format_error; + case 0xe1U: + goto format_error; + case 0xe2U: + goto format_error; + case 0xe3U: + goto format_error; + case 0xe4U: + goto format_error; + case 0xe5U: + goto format_error; + case 0xe6U: + goto format_error; + case 0xe7U: + goto format_error; + case 0xe8U: + goto format_error; + case 0xe9U: + goto format_error; + case 0xeaU: + goto format_error; + case 0xebU: + goto format_error; + case 0xecU: + goto format_error; + case 0xedU: + goto format_error; + case 0xeeU: + goto format_error; + case 0xefU: + goto format_error; + case 0xf0U: + goto format_error; + case 0xf1U: + goto format_error; + case 0xf2U: + goto format_error; + case 0xf3U: + goto format_error; + case 0xf4U: + duk_push_false(dec_ctx->thr); + break; + case 0xf5U: + duk_push_true(dec_ctx->thr); + break; + case 0xf6U: + duk_push_null(dec_ctx->thr); + break; + case 0xf7U: + duk_push_undefined(dec_ctx->thr); + break; + case 0xf8U: + /* Simple value 32-255, nothing defined yet, so reject. */ + goto format_error; + case 0xf9U: { + duk_double_t d; + d = duk__cbor_decode_half_float(dec_ctx); + duk_push_number(dec_ctx->thr, d); + break; + } + case 0xfaU: { + duk_double_t d; + d = duk__cbor_decode_float(dec_ctx); + duk_push_number(dec_ctx->thr, d); + break; + } + case 0xfbU: { + duk_double_t d; + d = duk__cbor_decode_double(dec_ctx); + duk_push_number(dec_ctx->thr, d); + break; + } + case 0xfcU: + case 0xfdU: + case 0xfeU: + case 0xffU: + goto format_error; + } /* end switch */ + + return; + + format_error: + duk__cbor_decode_error(dec_ctx); +} +#else /* DUK_CBOR_DECODE_FASTPATH */ +DUK_LOCAL void duk__cbor_decode_value(duk_cbor_decode_context *dec_ctx) { + duk_uint8_t ib, mt, ai; + + /* Any paths potentially recursing back to duk__cbor_decode_value() + * must perform a Duktape value stack growth check. Avoid the check + * here for simple paths like primitive values. + */ + + reread_initial_byte: + DUK_DDD(DUK_DDDPRINT("cbor decode off=%ld len=%ld", (long) dec_ctx->off, (long) dec_ctx->len)); + + ib = duk__cbor_decode_readbyte(dec_ctx); + mt = ib >> 5U; + ai = ib & 0x1fU; + + /* Additional information in [24,27] = [0x18,0x1b] has relatively + * uniform handling for all major types: read 1/2/4/8 additional + * bytes. For major type 7 the 1-byte value is a 'simple type', and + * 2/4/8-byte values are floats. For other major types the 1/2/4/8 + * byte values are integers. The lengths are uniform, but the typing + * is not. + */ + + switch (mt) { + case 0U: { /* unsigned integer */ + duk__cbor_decode_push_aival_int(dec_ctx, ib, 0 /*negative*/); + break; + } + case 1U: { /* negative integer */ + duk__cbor_decode_push_aival_int(dec_ctx, ib, 1 /*negative*/); + break; + } + case 2U: { /* byte string */ + if (ai == 0x1fU) { + duk__cbor_decode_and_join_strbuf(dec_ctx, 0x40U); + } else { + duk__cbor_decode_rewind(dec_ctx, 1U); + duk__cbor_decode_buffer(dec_ctx, 0x40U); + } + break; + } + case 3U: { /* text string */ + duk__cbor_decode_string(dec_ctx, ib, ai); + break; + } + case 4U: { /* array of data items */ + if (DUK_UNLIKELY(duk__cbor_decode_array(dec_ctx, ib, ai) == 0)) { + goto format_error; + } + break; + } + case 5U: { /* map of pairs of data items */ + if (DUK_UNLIKELY(duk__cbor_decode_map(dec_ctx, ib, ai) == 0)) { + goto format_error; + } + break; + } + case 6U: { /* semantic tagging */ + /* Tags are ignored now, re-read initial byte. A tagged + * value may itself be tagged (an unlimited number of times) + * so keep on peeling away tags. + */ + duk__cbor_decode_skip_aival_int(dec_ctx, ib); + goto reread_initial_byte; + } + case 7U: { /* floating point numbers, simple data types, break; other */ + switch (ai) { + case 0x14U: { + duk_push_false(dec_ctx->thr); + break; + } + case 0x15U: { + duk_push_true(dec_ctx->thr); + break; + } + case 0x16U: { + duk_push_null(dec_ctx->thr); + break; + } + case 0x17U: { + duk_push_undefined(dec_ctx->thr); + break; + } + case 0x18U: { /* more simple values (1 byte) */ + /* Simple value encoded in additional byte (none + * are defined so far). RFC 7049 states that the + * follow-up byte must be 32-255 to minimize + * confusion. So, a non-shortest encoding like + * f815 (= true, shortest encoding f5) must be + * rejected. cbor.me tester rejects f815, but + * e.g. Python CBOR binding decodes it as true. + */ + goto format_error; + } + case 0x19U: { /* half-float (2 bytes) */ + duk_double_t d; + d = duk__cbor_decode_half_float(dec_ctx); + duk_push_number(dec_ctx->thr, d); + break; + } + case 0x1aU: { /* float (4 bytes) */ + duk_double_t d; + d = duk__cbor_decode_float(dec_ctx); + duk_push_number(dec_ctx->thr, d); + break; + } + case 0x1bU: { /* double (8 bytes) */ + duk_double_t d; + d = duk__cbor_decode_double(dec_ctx); + duk_push_number(dec_ctx->thr, d); + break; + } + case 0xffU: /* unexpected break */ + default: { + goto format_error; + } + } /* end switch */ + break; + } + default: { + goto format_error; /* will never actually occur */ + } + } /* end switch */ + + return; + + format_error: + duk__cbor_decode_error(dec_ctx); +} +#endif /* DUK_CBOR_DECODE_FASTPATH */ + +DUK_LOCAL void duk__cbor_encode(duk_hthread *thr, duk_idx_t idx, duk_uint_t encode_flags) { + duk_cbor_encode_context enc_ctx; + duk_uint8_t *buf; + + DUK_UNREF(encode_flags); + + idx = duk_require_normalize_index(thr, idx); + + enc_ctx.thr = thr; + enc_ctx.idx_buf = duk_get_top(thr); + + enc_ctx.len = 64; + buf = (duk_uint8_t *) duk_push_dynamic_buffer(thr, enc_ctx.len); + enc_ctx.ptr = buf; + enc_ctx.buf = buf; + enc_ctx.buf_end = buf + enc_ctx.len; + + duk_dup(thr, idx); + duk__cbor_encode_value(&enc_ctx); + duk_resize_buffer(enc_ctx.thr, enc_ctx.idx_buf, (duk_size_t) (enc_ctx.ptr - enc_ctx.buf)); + duk_replace(thr, idx); +} + +DUK_LOCAL void duk__cbor_decode(duk_hthread *thr, duk_idx_t idx, duk_uint_t decode_flags) { + duk_cbor_decode_context dec_ctx; + + DUK_UNREF(decode_flags); + + /* Suppress compile warnings for functions only needed with e.g. + * asserts enabled. + */ + DUK_UNREF(duk__cbor_get_reserve); + + idx = duk_require_normalize_index(thr, idx); + + dec_ctx.thr = thr; + dec_ctx.buf = (const duk_uint8_t *) duk_require_buffer_data(thr, idx, &dec_ctx.len); + dec_ctx.off = 0; + /* dec_ctx.len: set above */ + + duk__cbor_req_stack(&dec_ctx); + duk__cbor_decode_value(&dec_ctx); + if (dec_ctx.off != dec_ctx.len) { + (void) duk_type_error(thr, "trailing garbage"); + } + + duk_replace(thr, idx); +} + +#else /* DUK_USE_CBOR_SUPPORT */ + +DUK_LOCAL void duk__cbor_encode(duk_hthread *thr, duk_idx_t idx, duk_uint_t encode_flags) { + DUK_UNREF(idx); + DUK_UNREF(encode_flags); + DUK_ERROR_UNSUPPORTED(thr); +} + +DUK_LOCAL void duk__cbor_decode(duk_hthread *thr, duk_idx_t idx, duk_uint_t decode_flags) { + DUK_UNREF(idx); + DUK_UNREF(decode_flags); + DUK_ERROR_UNSUPPORTED(thr); +} + +#endif /* DUK_USE_CBOR_SUPPORT */ + +/* + * Public APIs + */ + +DUK_EXTERNAL void duk_cbor_encode(duk_hthread *thr, duk_idx_t idx, duk_uint_t encode_flags) { + DUK_ASSERT_API_ENTRY(thr); + duk__cbor_encode(thr, idx, encode_flags); +} +DUK_EXTERNAL void duk_cbor_decode(duk_hthread *thr, duk_idx_t idx, duk_uint_t decode_flags) { + DUK_ASSERT_API_ENTRY(thr); + duk__cbor_decode(thr, idx, decode_flags); +} + +#if defined(DUK_USE_CBOR_BUILTIN) +#if defined(DUK_USE_CBOR_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_cbor_encode(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 1); + + duk__cbor_encode(thr, -1, 0 /*flags*/); + + /* Produce an ArrayBuffer by first decoding into a plain buffer which + * mimics a Uint8Array and gettings its .buffer property. + */ + /* XXX: shortcut */ + (void) duk_get_prop_stridx(thr, -1, DUK_STRIDX_LC_BUFFER); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_cbor_decode(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 1); + + duk__cbor_decode(thr, -1, 0 /*flags*/); + return 1; +} +#else /* DUK_USE_CBOR_SUPPORT */ +DUK_INTERNAL duk_ret_t duk_bi_cbor_encode(duk_hthread *thr) { + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return 0;); +} +DUK_INTERNAL duk_ret_t duk_bi_cbor_decode(duk_hthread *thr) { + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return 0;); +} +#endif /* DUK_USE_CBOR_SUPPORT */ +#endif /* DUK_USE_CBOR_BUILTIN */ + +/* automatic undefs */ +#undef DUK__CBOR_AI +#line 1 "duk_bi_date.c" +/* + * Date built-ins + * + * Unlike most built-ins, Date has some platform dependencies for getting + * UTC time, converting between UTC and local time, and parsing and + * formatting time values. These are all abstracted behind DUK_USE_xxx + * config options. There are built-in platform specific providers for + * POSIX and Windows, but external providers can also be used. + * + * See doc/datetime.rst. + * + */ + +/* #include duk_internal.h -> already included */ + +/* XXX: currently defines unnecessary symbols when DUK_USE_DATE_BUILTIN is disabled. */ + +/* + * Forward declarations + */ + +DUK_LOCAL_DECL duk_double_t duk__push_this_get_timeval_tzoffset(duk_hthread *thr, duk_small_uint_t flags, duk_int_t *out_tzoffset); +DUK_LOCAL_DECL duk_double_t duk__push_this_get_timeval(duk_hthread *thr, duk_small_uint_t flags); +DUK_LOCAL_DECL void duk__twodigit_year_fixup(duk_hthread *thr, duk_idx_t idx_val); +DUK_LOCAL_DECL duk_ret_t duk__set_this_timeval_from_dparts(duk_hthread *thr, duk_double_t *dparts, duk_small_uint_t flags); + +/* + * Other file level defines + */ + +/* Debug macro to print all parts and dparts (used manually because of debug level). */ +#define DUK__DPRINT_PARTS_AND_DPARTS(parts,dparts) do { \ + DUK_D(DUK_DPRINT("parts: %ld %ld %ld %ld %ld %ld %ld %ld, dparts: %lf %lf %lf %lf %lf %lf %lf %lf", \ + (long) (parts)[0], (long) (parts)[1], \ + (long) (parts)[2], (long) (parts)[3], \ + (long) (parts)[4], (long) (parts)[5], \ + (long) (parts)[6], (long) (parts)[7], \ + (double) (dparts)[0], (double) (dparts)[1], \ + (double) (dparts)[2], (double) (dparts)[3], \ + (double) (dparts)[4], (double) (dparts)[5], \ + (double) (dparts)[6], (double) (dparts)[7])); \ + } while (0) +#define DUK__DPRINT_PARTS(parts) do { \ + DUK_D(DUK_DPRINT("parts: %ld %ld %ld %ld %ld %ld %ld %ld", \ + (long) (parts)[0], (long) (parts)[1], \ + (long) (parts)[2], (long) (parts)[3], \ + (long) (parts)[4], (long) (parts)[5], \ + (long) (parts)[6], (long) (parts)[7])); \ + } while (0) +#define DUK__DPRINT_DPARTS(dparts) do { \ + DUK_D(DUK_DPRINT("dparts: %lf %lf %lf %lf %lf %lf %lf %lf", \ + (double) (dparts)[0], (double) (dparts)[1], \ + (double) (dparts)[2], (double) (dparts)[3], \ + (double) (dparts)[4], (double) (dparts)[5], \ + (double) (dparts)[6], (double) (dparts)[7])); \ + } while (0) + +/* Equivalent year for DST calculations outside [1970,2038[ range, see + * E5 Section 15.9.1.8. Equivalent year has the same leap-year-ness and + * starts with the same weekday on Jan 1. + * https://bugzilla.mozilla.org/show_bug.cgi?id=351066 + */ +#define DUK__YEAR(x) ((duk_uint8_t) ((x) - 1970)) +DUK_LOCAL duk_uint8_t duk__date_equivyear[14] = { +#if 1 + /* This is based on V8 EquivalentYear() algorithm (see util/genequivyear.py): + * http://code.google.com/p/v8/source/browse/trunk/src/date.h#146 + */ + + /* non-leap year: sunday, monday, ... */ + DUK__YEAR(2023), DUK__YEAR(2035), DUK__YEAR(2019), DUK__YEAR(2031), + DUK__YEAR(2015), DUK__YEAR(2027), DUK__YEAR(2011), + + /* leap year: sunday, monday, ... */ + DUK__YEAR(2012), DUK__YEAR(2024), DUK__YEAR(2008), DUK__YEAR(2020), + DUK__YEAR(2032), DUK__YEAR(2016), DUK__YEAR(2028) +#endif + +#if 0 + /* This is based on Rhino EquivalentYear() algorithm: + * https://github.com/mozilla/rhino/blob/f99cc11d616f0cdda2c42bde72b3484df6182947/src/org/mozilla/javascript/NativeDate.java + */ + + /* non-leap year: sunday, monday, ... */ + DUK__YEAR(1978), DUK__YEAR(1973), DUK__YEAR(1985), DUK__YEAR(1986), + DUK__YEAR(1981), DUK__YEAR(1971), DUK__YEAR(1977), + + /* leap year: sunday, monday, ... */ + DUK__YEAR(1984), DUK__YEAR(1996), DUK__YEAR(1980), DUK__YEAR(1992), + DUK__YEAR(1976), DUK__YEAR(1988), DUK__YEAR(1972) +#endif +}; + +/* + * ISO 8601 subset parser. + */ + +/* Parser part count. */ +#define DUK__NUM_ISO8601_PARSER_PARTS 9 + +/* Parser part indices. */ +#define DUK__PI_YEAR 0 +#define DUK__PI_MONTH 1 +#define DUK__PI_DAY 2 +#define DUK__PI_HOUR 3 +#define DUK__PI_MINUTE 4 +#define DUK__PI_SECOND 5 +#define DUK__PI_MILLISECOND 6 +#define DUK__PI_TZHOUR 7 +#define DUK__PI_TZMINUTE 8 + +/* Parser part masks. */ +#define DUK__PM_YEAR (1 << DUK__PI_YEAR) +#define DUK__PM_MONTH (1 << DUK__PI_MONTH) +#define DUK__PM_DAY (1 << DUK__PI_DAY) +#define DUK__PM_HOUR (1 << DUK__PI_HOUR) +#define DUK__PM_MINUTE (1 << DUK__PI_MINUTE) +#define DUK__PM_SECOND (1 << DUK__PI_SECOND) +#define DUK__PM_MILLISECOND (1 << DUK__PI_MILLISECOND) +#define DUK__PM_TZHOUR (1 << DUK__PI_TZHOUR) +#define DUK__PM_TZMINUTE (1 << DUK__PI_TZMINUTE) + +/* Parser separator indices. */ +#define DUK__SI_PLUS 0 +#define DUK__SI_MINUS 1 +#define DUK__SI_T 2 +#define DUK__SI_SPACE 3 +#define DUK__SI_COLON 4 +#define DUK__SI_PERIOD 5 +#define DUK__SI_Z 6 +#define DUK__SI_NUL 7 + +/* Parser separator masks. */ +#define DUK__SM_PLUS (1 << DUK__SI_PLUS) +#define DUK__SM_MINUS (1 << DUK__SI_MINUS) +#define DUK__SM_T (1 << DUK__SI_T) +#define DUK__SM_SPACE (1 << DUK__SI_SPACE) +#define DUK__SM_COLON (1 << DUK__SI_COLON) +#define DUK__SM_PERIOD (1 << DUK__SI_PERIOD) +#define DUK__SM_Z (1 << DUK__SI_Z) +#define DUK__SM_NUL (1 << DUK__SI_NUL) + +/* Rule control flags. */ +#define DUK__CF_NEG (1 << 0) /* continue matching, set neg_tzoffset flag */ +#define DUK__CF_ACCEPT (1 << 1) /* accept string */ +#define DUK__CF_ACCEPT_NUL (1 << 2) /* accept string if next char is NUL (otherwise reject) */ + +#define DUK__PACK_RULE(partmask,sepmask,nextpart,flags) \ + ((duk_uint32_t) (partmask) + \ + (((duk_uint32_t) (sepmask)) << 9) + \ + (((duk_uint32_t) (nextpart)) << 17) + \ + (((duk_uint32_t) (flags)) << 21)) + +#define DUK__UNPACK_RULE(rule,var_nextidx,var_flags) do { \ + (var_nextidx) = (duk_small_uint_t) (((rule) >> 17) & 0x0f); \ + (var_flags) = (duk_small_uint_t) ((rule) >> 21); \ + } while (0) + +#define DUK__RULE_MASK_PART_SEP 0x1ffffUL + +/* Matching separator index is used in the control table */ +DUK_LOCAL const duk_uint8_t duk__parse_iso8601_seps[] = { + DUK_ASC_PLUS /*0*/, DUK_ASC_MINUS /*1*/, DUK_ASC_UC_T /*2*/, DUK_ASC_SPACE /*3*/, + DUK_ASC_COLON /*4*/, DUK_ASC_PERIOD /*5*/, DUK_ASC_UC_Z /*6*/, DUK_ASC_NUL /*7*/ +}; + +/* Rule table: first matching rule is used to determine what to do next. */ +DUK_LOCAL const duk_uint32_t duk__parse_iso8601_control[] = { + DUK__PACK_RULE(DUK__PM_YEAR, DUK__SM_MINUS, DUK__PI_MONTH, 0), + DUK__PACK_RULE(DUK__PM_MONTH, DUK__SM_MINUS, DUK__PI_DAY, 0), + DUK__PACK_RULE(DUK__PM_YEAR | DUK__PM_MONTH | DUK__PM_DAY, DUK__SM_T | DUK__SM_SPACE, DUK__PI_HOUR, 0), + DUK__PACK_RULE(DUK__PM_HOUR, DUK__SM_COLON, DUK__PI_MINUTE, 0), + DUK__PACK_RULE(DUK__PM_MINUTE, DUK__SM_COLON, DUK__PI_SECOND, 0), + DUK__PACK_RULE(DUK__PM_SECOND, DUK__SM_PERIOD, DUK__PI_MILLISECOND, 0), + DUK__PACK_RULE(DUK__PM_TZHOUR, DUK__SM_COLON, DUK__PI_TZMINUTE, 0), + DUK__PACK_RULE(DUK__PM_YEAR | DUK__PM_MONTH | DUK__PM_DAY | DUK__PM_HOUR /*Note1*/ | DUK__PM_MINUTE | DUK__PM_SECOND | DUK__PM_MILLISECOND, DUK__SM_PLUS, DUK__PI_TZHOUR, 0), + DUK__PACK_RULE(DUK__PM_YEAR | DUK__PM_MONTH | DUK__PM_DAY | DUK__PM_HOUR /*Note1*/ | DUK__PM_MINUTE | DUK__PM_SECOND | DUK__PM_MILLISECOND, DUK__SM_MINUS, DUK__PI_TZHOUR, DUK__CF_NEG), + DUK__PACK_RULE(DUK__PM_YEAR | DUK__PM_MONTH | DUK__PM_DAY | DUK__PM_HOUR /*Note1*/ | DUK__PM_MINUTE | DUK__PM_SECOND | DUK__PM_MILLISECOND, DUK__SM_Z, 0, DUK__CF_ACCEPT_NUL), + DUK__PACK_RULE(DUK__PM_YEAR | DUK__PM_MONTH | DUK__PM_DAY | DUK__PM_HOUR /*Note1*/ | DUK__PM_MINUTE | DUK__PM_SECOND | DUK__PM_MILLISECOND | DUK__PM_TZHOUR /*Note2*/ | DUK__PM_TZMINUTE, DUK__SM_NUL, 0, DUK__CF_ACCEPT) + + /* Note1: the specification doesn't require matching a time form with + * just hours ("HH"), but we accept it here, e.g. "2012-01-02T12Z". + * + * Note2: the specification doesn't require matching a timezone offset + * with just hours ("HH"), but accept it here, e.g. "2012-01-02T03:04:05+02" + */ +}; + +DUK_LOCAL duk_bool_t duk__parse_string_iso8601_subset(duk_hthread *thr, const char *str) { + duk_int_t parts[DUK__NUM_ISO8601_PARSER_PARTS]; + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + duk_double_t d; + const duk_uint8_t *p; + duk_small_uint_t part_idx = 0; + duk_int_t accum = 0; + duk_small_uint_t ndigits = 0; + duk_bool_t neg_year = 0; + duk_bool_t neg_tzoffset = 0; + duk_uint_fast8_t ch; + duk_small_uint_t i; + + /* During parsing, month and day are one-based; set defaults here. */ + duk_memzero(parts, sizeof(parts)); + DUK_ASSERT(parts[DUK_DATE_IDX_YEAR] == 0); /* don't care value, year is mandatory */ + parts[DUK_DATE_IDX_MONTH] = 1; + parts[DUK_DATE_IDX_DAY] = 1; + + /* Special handling for year sign. */ + p = (const duk_uint8_t *) str; + ch = p[0]; + if (ch == DUK_ASC_PLUS) { + p++; + } else if (ch == DUK_ASC_MINUS) { + neg_year = 1; + p++; + } + + for (;;) { + ch = *p++; + DUK_DDD(DUK_DDDPRINT("parsing, part_idx=%ld, char=%ld ('%c')", + (long) part_idx, (long) ch, + (int) ((ch >= 0x20 && ch <= 0x7e) ? ch : DUK_ASC_QUESTION))); + + if (ch >= DUK_ASC_0 && ch <= DUK_ASC_9) { + if (ndigits >= 9) { + DUK_DDD(DUK_DDDPRINT("too many digits -> reject")); + goto reject; + } + if (part_idx == DUK__PI_MILLISECOND && ndigits >= 3) { + /* ignore millisecond fractions after 3 */ + } else { + accum = accum * 10 + ((duk_int_t) ch) - ((duk_int_t) DUK_ASC_0) + 0x00; + ndigits++; + } + } else { + duk_uint_fast32_t match_val; + duk_small_uint_t sep_idx; + + if (ndigits <= 0) { + goto reject; + } + if (part_idx == DUK__PI_MILLISECOND) { + /* complete the millisecond field */ + while (ndigits < 3) { + accum *= 10; + ndigits++; + } + } + parts[part_idx] = accum; + DUK_DDD(DUK_DDDPRINT("wrote part %ld -> value %ld", (long) part_idx, (long) accum)); + + accum = 0; + ndigits = 0; + + for (i = 0; i < (duk_small_uint_t) (sizeof(duk__parse_iso8601_seps) / sizeof(duk_uint8_t)); i++) { + if (duk__parse_iso8601_seps[i] == ch) { + break; + } + } + if (i == (duk_small_uint_t) (sizeof(duk__parse_iso8601_seps) / sizeof(duk_uint8_t))) { + DUK_DDD(DUK_DDDPRINT("separator character doesn't match -> reject")); + goto reject; + } + + sep_idx = i; + match_val = (1UL << part_idx) + (1UL << (sep_idx + 9)); /* match against rule part/sep bits */ + + for (i = 0; i < (duk_small_uint_t) (sizeof(duk__parse_iso8601_control) / sizeof(duk_uint32_t)); i++) { + duk_uint_fast32_t rule = duk__parse_iso8601_control[i]; + duk_small_uint_t nextpart; + duk_small_uint_t cflags; + + DUK_DDD(DUK_DDDPRINT("part_idx=%ld, sep_idx=%ld, match_val=0x%08lx, considering rule=0x%08lx", + (long) part_idx, (long) sep_idx, + (unsigned long) match_val, (unsigned long) rule)); + + if ((rule & match_val) != match_val) { + continue; + } + + DUK__UNPACK_RULE(rule, nextpart, cflags); + + DUK_DDD(DUK_DDDPRINT("rule match -> part_idx=%ld, sep_idx=%ld, match_val=0x%08lx, " + "rule=0x%08lx -> nextpart=%ld, cflags=0x%02lx", + (long) part_idx, (long) sep_idx, + (unsigned long) match_val, (unsigned long) rule, + (long) nextpart, (unsigned long) cflags)); + + if (cflags & DUK__CF_NEG) { + neg_tzoffset = 1; + } + + if (cflags & DUK__CF_ACCEPT) { + goto accept; + } + + if (cflags & DUK__CF_ACCEPT_NUL) { + DUK_ASSERT(*(p - 1) != (char) 0); + if (*p == DUK_ASC_NUL) { + goto accept; + } + goto reject; + } + + part_idx = nextpart; + break; + } /* rule match */ + + if (i == (duk_small_uint_t) (sizeof(duk__parse_iso8601_control) / sizeof(duk_uint32_t))) { + DUK_DDD(DUK_DDDPRINT("no rule matches -> reject")); + goto reject; + } + + if (ch == 0) { + /* This shouldn't be necessary, but check just in case + * to avoid any chance of overruns. + */ + DUK_DDD(DUK_DDDPRINT("NUL after rule matching (should not happen) -> reject")); + goto reject; + } + } /* if-digit-else-ctrl */ + } /* char loop */ + + /* We should never exit the loop above. */ + DUK_UNREACHABLE(); + + reject: + DUK_DDD(DUK_DDDPRINT("reject")); + return 0; + + accept: + DUK_DDD(DUK_DDDPRINT("accept")); + + /* Apply timezone offset to get the main parts in UTC */ + if (neg_year) { + parts[DUK__PI_YEAR] = -parts[DUK__PI_YEAR]; + } + if (neg_tzoffset) { + parts[DUK__PI_HOUR] += parts[DUK__PI_TZHOUR]; + parts[DUK__PI_MINUTE] += parts[DUK__PI_TZMINUTE]; + } else { + parts[DUK__PI_HOUR] -= parts[DUK__PI_TZHOUR]; + parts[DUK__PI_MINUTE] -= parts[DUK__PI_TZMINUTE]; + } + parts[DUK__PI_MONTH] -= 1; /* zero-based month */ + parts[DUK__PI_DAY] -= 1; /* zero-based day */ + + /* Use double parts, they tolerate unnormalized time. + * + * Note: DUK_DATE_IDX_WEEKDAY is initialized with a bogus value (DUK__PI_TZHOUR) + * on purpose. It won't be actually used by duk_bi_date_get_timeval_from_dparts(), + * but will make the value initialized just in case, and avoid any + * potential for Valgrind issues. + */ + for (i = 0; i < DUK_DATE_IDX_NUM_PARTS; i++) { + DUK_DDD(DUK_DDDPRINT("part[%ld] = %ld", (long) i, (long) parts[i])); + dparts[i] = parts[i]; + } + + d = duk_bi_date_get_timeval_from_dparts(dparts, 0 /*flags*/); + duk_push_number(thr, d); + return 1; +} + +/* + * Date/time parsing helper. + * + * Parse a datetime string into a time value. We must first try to parse + * the input according to the standard format in E5.1 Section 15.9.1.15. + * If that fails, we can try to parse using custom parsing, which can + * either be platform neutral (custom code) or platform specific (using + * existing platform API calls). + * + * Note in particular that we must parse whatever toString(), toUTCString(), + * and toISOString() can produce; see E5.1 Section 15.9.4.2. + * + * Returns 1 to allow tail calling. + * + * There is much room for improvement here with respect to supporting + * alternative datetime formats. For instance, V8 parses '2012-01-01' as + * UTC and '2012/01/01' as local time. + */ + +DUK_LOCAL duk_ret_t duk__parse_string(duk_hthread *thr, const char *str) { + /* XXX: there is a small risk here: because the ISO 8601 parser is + * very loose, it may end up parsing some datetime values which + * would be better parsed with a platform specific parser. + */ + + DUK_ASSERT(str != NULL); + DUK_DDD(DUK_DDDPRINT("parse datetime from string '%s'", (const char *) str)); + + if (duk__parse_string_iso8601_subset(thr, str) != 0) { + return 1; + } + +#if defined(DUK_USE_DATE_PARSE_STRING) + /* Contract, either: + * - Push value on stack and return 1 + * - Don't push anything on stack and return 0 + */ + + if (DUK_USE_DATE_PARSE_STRING(thr, str) != 0) { + return 1; + } +#else + /* No platform-specific parsing, this is not an error. */ +#endif + + duk_push_nan(thr); + return 1; +} + +/* + * Calendar helpers + * + * Some helpers are used for getters and can operate on normalized values + * which can be represented with 32-bit signed integers. Other helpers are + * needed by setters and operate on un-normalized double values, must watch + * out for non-finite numbers etc. + */ + +DUK_LOCAL duk_uint8_t duk__days_in_month[12] = { + (duk_uint8_t) 31, (duk_uint8_t) 28, (duk_uint8_t) 31, (duk_uint8_t) 30, + (duk_uint8_t) 31, (duk_uint8_t) 30, (duk_uint8_t) 31, (duk_uint8_t) 31, + (duk_uint8_t) 30, (duk_uint8_t) 31, (duk_uint8_t) 30, (duk_uint8_t) 31 +}; + +/* Maximum iteration count for computing UTC-to-local time offset when + * creating an ECMAScript time value from local parts. + */ +#define DUK__LOCAL_TZOFFSET_MAXITER 4 + +/* Because 'day since epoch' can be negative and is used to compute weekday + * using a modulo operation, add this multiple of 7 to avoid negative values + * when year is below 1970 epoch. ECMAScript time values are restricted to + * +/- 100 million days from epoch, so this adder fits nicely into 32 bits. + * Round to a multiple of 7 (= floor(100000000 / 7) * 7) and add margin. + */ +#define DUK__WEEKDAY_MOD_ADDER (20000000 * 7) /* 0x08583b00 */ + +DUK_INTERNAL duk_bool_t duk_bi_date_is_leap_year(duk_int_t year) { + if ((year % 4) != 0) { + return 0; + } + if ((year % 100) != 0) { + return 1; + } + if ((year % 400) != 0) { + return 0; + } + return 1; +} + +DUK_INTERNAL duk_bool_t duk_bi_date_timeval_in_valid_range(duk_double_t x) { + return (x >= -DUK_DATE_MSEC_100M_DAYS && x <= DUK_DATE_MSEC_100M_DAYS); +} + +DUK_INTERNAL duk_bool_t duk_bi_date_timeval_in_leeway_range(duk_double_t x) { + return (x >= -DUK_DATE_MSEC_100M_DAYS_LEEWAY && x <= DUK_DATE_MSEC_100M_DAYS_LEEWAY); +} + +DUK_INTERNAL duk_bool_t duk_bi_date_year_in_valid_range(duk_double_t x) { + return (x >= DUK_DATE_MIN_ECMA_YEAR && x <= DUK_DATE_MAX_ECMA_YEAR); +} + +DUK_LOCAL duk_double_t duk__timeclip(duk_double_t x) { + if (!DUK_ISFINITE(x)) { + return DUK_DOUBLE_NAN; + } + + if (!duk_bi_date_timeval_in_valid_range(x)) { + return DUK_DOUBLE_NAN; + } + + x = duk_js_tointeger_number(x); + + /* Here we'd have the option to normalize -0 to +0. */ + return x; +} + +/* Integer division which floors also negative values correctly. */ +DUK_LOCAL duk_int_t duk__div_floor(duk_int_t a, duk_int_t b) { + DUK_ASSERT(b > 0); + if (a >= 0) { + return a / b; + } else { + /* e.g. a = -4, b = 5 --> -4 - 5 + 1 / 5 --> -8 / 5 --> -1 + * a = -5, b = 5 --> -5 - 5 + 1 / 5 --> -9 / 5 --> -1 + * a = -6, b = 5 --> -6 - 5 + 1 / 5 --> -10 / 5 --> -2 + */ + return (a - b + 1) / b; + } +} + +/* Compute day number of the first day of a given year. */ +DUK_LOCAL duk_int_t duk__day_from_year(duk_int_t year) { + /* Note: in integer arithmetic, (x / 4) is same as floor(x / 4) for non-negative + * values, but is incorrect for negative ones. + */ + return 365 * (year - 1970) + + duk__div_floor(year - 1969, 4) + - duk__div_floor(year - 1901, 100) + + duk__div_floor(year - 1601, 400); +} + +/* Given a day number, determine year and day-within-year. */ +DUK_LOCAL duk_int_t duk__year_from_day(duk_int_t day, duk_small_int_t *out_day_within_year) { + duk_int_t year; + duk_int_t diff_days; + + /* estimate year upwards (towards positive infinity), then back down; + * two iterations should be enough + */ + + if (day >= 0) { + year = 1970 + day / 365; + } else { + year = 1970 + day / 366; + } + + for (;;) { + diff_days = duk__day_from_year(year) - day; + DUK_DDD(DUK_DDDPRINT("year=%ld day=%ld, diff_days=%ld", (long) year, (long) day, (long) diff_days)); + if (diff_days <= 0) { + DUK_ASSERT(-diff_days < 366); /* fits into duk_small_int_t */ + *out_day_within_year = -diff_days; + DUK_DDD(DUK_DDDPRINT("--> year=%ld, day-within-year=%ld", + (long) year, (long) *out_day_within_year)); + DUK_ASSERT(*out_day_within_year >= 0); + DUK_ASSERT(*out_day_within_year < (duk_bi_date_is_leap_year(year) ? 366 : 365)); + return year; + } + + /* Note: this is very tricky; we must never 'overshoot' the + * correction downwards. + */ + year -= 1 + (diff_days - 1) / 366; /* conservative */ + } +} + +/* Given a (year, month, day-within-month) triple, compute day number. + * The input triple is un-normalized and may contain non-finite values. + */ +DUK_LOCAL duk_double_t duk__make_day(duk_double_t year, duk_double_t month, duk_double_t day) { + duk_int_t day_num; + duk_bool_t is_leap; + duk_small_int_t i, n; + + /* Assume that year, month, day are all coerced to whole numbers. + * They may also be NaN or infinity, in which case this function + * must return NaN or infinity to ensure time value becomes NaN. + * If 'day' is NaN, the final return will end up returning a NaN, + * so it doesn't need to be checked here. + */ + + if (!DUK_ISFINITE(year) || !DUK_ISFINITE(month)) { + return DUK_DOUBLE_NAN; + } + + year += DUK_FLOOR(month / 12.0); + + month = DUK_FMOD(month, 12.0); + if (month < 0.0) { + /* handle negative values */ + month += 12.0; + } + + /* The algorithm in E5.1 Section 15.9.1.12 normalizes month, but + * does not normalize the day-of-month (nor check whether or not + * it is finite) because it's not necessary for finding the day + * number which matches the (year,month) pair. + * + * We assume that duk__day_from_year() is exact here. + * + * Without an explicit infinity / NaN check in the beginning, + * day_num would be a bogus integer here. + * + * It's possible for 'year' to be out of integer range here. + * If so, we need to return NaN without integer overflow. + * This fixes test-bug-setyear-overflow.js. + */ + + if (!duk_bi_date_year_in_valid_range(year)) { + DUK_DD(DUK_DDPRINT("year not in ecmascript valid range, avoid integer overflow: %lf", (double) year)); + return DUK_DOUBLE_NAN; + } + day_num = duk__day_from_year((duk_int_t) year); + is_leap = duk_bi_date_is_leap_year((duk_int_t) year); + + n = (duk_small_int_t) month; + for (i = 0; i < n; i++) { + day_num += duk__days_in_month[i]; + if (i == 1 && is_leap) { + day_num++; + } + } + + /* If 'day' is NaN, returns NaN. */ + return (duk_double_t) day_num + day; +} + +/* Split time value into parts. The time value may contain fractions (it may + * come from duk_time_to_components() API call) which are truncated. Possible + * local time adjustment has already been applied when reading the time value. + */ +DUK_INTERNAL void duk_bi_date_timeval_to_parts(duk_double_t d, duk_int_t *parts, duk_double_t *dparts, duk_small_uint_t flags) { + duk_double_t d1, d2; + duk_int_t t1, t2; + duk_int_t day_since_epoch; + duk_int_t year; /* does not fit into 16 bits */ + duk_small_int_t day_in_year; + duk_small_int_t month; + duk_small_int_t day; + duk_small_int_t dim; + duk_int_t jan1_since_epoch; + duk_small_int_t jan1_weekday; + duk_int_t equiv_year; + duk_small_uint_t i; + duk_bool_t is_leap; + duk_small_int_t arridx; + + DUK_ASSERT(DUK_ISFINITE(d)); /* caller checks */ + d = DUK_FLOOR(d); /* remove fractions if present */ + DUK_ASSERT(duk_double_equals(DUK_FLOOR(d), d)); + + /* The timevalue must be in valid ECMAScript range, but since a local + * time offset can be applied, we need to allow a +/- 24h leeway to + * the value. In other words, although the UTC time is within the + * ECMAScript range, the local part values can be just outside of it. + */ + DUK_UNREF(duk_bi_date_timeval_in_leeway_range); + DUK_ASSERT(duk_bi_date_timeval_in_leeway_range(d)); + + /* These computations are guaranteed to be exact for the valid + * E5 time value range, assuming milliseconds without fractions. + */ + d1 = (duk_double_t) DUK_FMOD(d, (double) DUK_DATE_MSEC_DAY); + if (d1 < 0.0) { + /* deal with negative values */ + d1 += (duk_double_t) DUK_DATE_MSEC_DAY; + } + d2 = DUK_FLOOR((double) (d / (duk_double_t) DUK_DATE_MSEC_DAY)); + DUK_ASSERT(duk_double_equals(d2 * ((duk_double_t) DUK_DATE_MSEC_DAY) + d1, d)); + /* now expected to fit into a 32-bit integer */ + t1 = (duk_int_t) d1; + t2 = (duk_int_t) d2; + day_since_epoch = t2; + DUK_ASSERT(duk_double_equals((duk_double_t) t1, d1)); + DUK_ASSERT(duk_double_equals((duk_double_t) t2, d2)); + + /* t1 = milliseconds within day (fits 32 bit) + * t2 = day number from epoch (fits 32 bit, may be negative) + */ + + parts[DUK_DATE_IDX_MILLISECOND] = t1 % 1000; t1 /= 1000; + parts[DUK_DATE_IDX_SECOND] = t1 % 60; t1 /= 60; + parts[DUK_DATE_IDX_MINUTE] = t1 % 60; t1 /= 60; + parts[DUK_DATE_IDX_HOUR] = t1; + DUK_ASSERT(parts[DUK_DATE_IDX_MILLISECOND] >= 0 && parts[DUK_DATE_IDX_MILLISECOND] <= 999); + DUK_ASSERT(parts[DUK_DATE_IDX_SECOND] >= 0 && parts[DUK_DATE_IDX_SECOND] <= 59); + DUK_ASSERT(parts[DUK_DATE_IDX_MINUTE] >= 0 && parts[DUK_DATE_IDX_MINUTE] <= 59); + DUK_ASSERT(parts[DUK_DATE_IDX_HOUR] >= 0 && parts[DUK_DATE_IDX_HOUR] <= 23); + + DUK_DDD(DUK_DDDPRINT("d=%lf, d1=%lf, d2=%lf, t1=%ld, t2=%ld, parts: hour=%ld min=%ld sec=%ld msec=%ld", + (double) d, (double) d1, (double) d2, (long) t1, (long) t2, + (long) parts[DUK_DATE_IDX_HOUR], + (long) parts[DUK_DATE_IDX_MINUTE], + (long) parts[DUK_DATE_IDX_SECOND], + (long) parts[DUK_DATE_IDX_MILLISECOND])); + + /* This assert depends on the input parts representing time inside + * the ECMAScript range. + */ + DUK_ASSERT(t2 + DUK__WEEKDAY_MOD_ADDER >= 0); + parts[DUK_DATE_IDX_WEEKDAY] = (t2 + 4 + DUK__WEEKDAY_MOD_ADDER) % 7; /* E5.1 Section 15.9.1.6 */ + DUK_ASSERT(parts[DUK_DATE_IDX_WEEKDAY] >= 0 && parts[DUK_DATE_IDX_WEEKDAY] <= 6); + + year = duk__year_from_day(t2, &day_in_year); + day = day_in_year; + is_leap = duk_bi_date_is_leap_year(year); + for (month = 0; month < 12; month++) { + dim = duk__days_in_month[month]; + if (month == 1 && is_leap) { + dim++; + } + DUK_DDD(DUK_DDDPRINT("month=%ld, dim=%ld, day=%ld", + (long) month, (long) dim, (long) day)); + if (day < dim) { + break; + } + day -= dim; + } + DUK_DDD(DUK_DDDPRINT("final month=%ld", (long) month)); + DUK_ASSERT(month >= 0 && month <= 11); + DUK_ASSERT(day >= 0 && day <= 31); + + /* Equivalent year mapping, used to avoid DST trouble when platform + * may fail to provide reasonable DST answers for dates outside the + * ordinary range (e.g. 1970-2038). An equivalent year has the same + * leap-year-ness as the original year and begins on the same weekday + * (Jan 1). + * + * The year 2038 is avoided because there seem to be problems with it + * on some platforms. The year 1970 is also avoided as there were + * practical problems with it; an equivalent year is used for it too, + * which breaks some DST computations for 1970 right now, see e.g. + * test-bi-date-tzoffset-brute-fi.js. + */ + if ((flags & DUK_DATE_FLAG_EQUIVYEAR) && (year < 1971 || year > 2037)) { + DUK_ASSERT(is_leap == 0 || is_leap == 1); + + jan1_since_epoch = day_since_epoch - day_in_year; /* day number for Jan 1 since epoch */ + DUK_ASSERT(jan1_since_epoch + DUK__WEEKDAY_MOD_ADDER >= 0); + jan1_weekday = (jan1_since_epoch + 4 + DUK__WEEKDAY_MOD_ADDER) % 7; /* E5.1 Section 15.9.1.6 */ + DUK_ASSERT(jan1_weekday >= 0 && jan1_weekday <= 6); + arridx = jan1_weekday; + if (is_leap) { + arridx += 7; + } + DUK_ASSERT(arridx >= 0 && arridx < (duk_small_int_t) (sizeof(duk__date_equivyear) / sizeof(duk_uint8_t))); + + equiv_year = (duk_int_t) duk__date_equivyear[arridx] + 1970; + year = equiv_year; + DUK_DDD(DUK_DDDPRINT("equiv year mapping, year=%ld, day_in_year=%ld, day_since_epoch=%ld, " + "jan1_since_epoch=%ld, jan1_weekday=%ld -> equiv year %ld", + (long) year, (long) day_in_year, (long) day_since_epoch, + (long) jan1_since_epoch, (long) jan1_weekday, (long) equiv_year)); + } + + parts[DUK_DATE_IDX_YEAR] = year; + parts[DUK_DATE_IDX_MONTH] = month; + parts[DUK_DATE_IDX_DAY] = day; + + if (flags & DUK_DATE_FLAG_ONEBASED) { + parts[DUK_DATE_IDX_MONTH]++; /* zero-based -> one-based */ + parts[DUK_DATE_IDX_DAY]++; /* -""- */ + } + + if (dparts != NULL) { + for (i = 0; i < DUK_DATE_IDX_NUM_PARTS; i++) { + dparts[i] = (duk_double_t) parts[i]; + } + } +} + +/* Compute time value from (double) parts. The parts can be either UTC + * or local time; if local, they need to be (conceptually) converted into + * UTC time. The parts may represent valid or invalid time, and may be + * wildly out of range (but may cancel each other and still come out in + * the valid Date range). + */ +DUK_INTERNAL duk_double_t duk_bi_date_get_timeval_from_dparts(duk_double_t *dparts, duk_small_uint_t flags) { +#if defined(DUK_USE_PARANOID_DATE_COMPUTATION) + /* See comments below on MakeTime why these are volatile. */ + volatile duk_double_t tmp_time; + volatile duk_double_t tmp_day; + volatile duk_double_t d; +#else + duk_double_t tmp_time; + duk_double_t tmp_day; + duk_double_t d; +#endif + duk_small_uint_t i; + duk_int_t tzoff, tzoffprev1, tzoffprev2; + + /* Expects 'this' at top of stack on entry. */ + + /* Coerce all finite parts with ToInteger(). ToInteger() must not + * be called for NaN/Infinity because it will convert e.g. NaN to + * zero. If ToInteger() has already been called, this has no side + * effects and is idempotent. + * + * Don't read dparts[DUK_DATE_IDX_WEEKDAY]; it will cause Valgrind + * issues if the value is uninitialized. + */ + for (i = 0; i <= DUK_DATE_IDX_MILLISECOND; i++) { + /* SCANBUILD: scan-build complains here about assigned value + * being garbage or undefined. This is correct but operating + * on undefined values has no ill effect and is ignored by the + * caller in the case where this happens. + */ + d = dparts[i]; + if (DUK_ISFINITE(d)) { + dparts[i] = duk_js_tointeger_number(d); + } + } + + /* Use explicit steps in computation to try to ensure that + * computation happens with intermediate results coerced to + * double values (instead of using something more accurate). + * E.g. E5.1 Section 15.9.1.11 requires use of IEEE 754 + * rules (= ECMAScript '+' and '*' operators). + * + * Without 'volatile' even this approach fails on some platform + * and compiler combinations. For instance, gcc 4.8.1 on Ubuntu + * 64-bit, with -m32 and without -std=c99, test-bi-date-canceling.js + * would fail because of some optimizations when computing tmp_time + * (MakeTime below). Adding 'volatile' to tmp_time solved this + * particular problem (annoyingly, also adding debug prints or + * running the executable under valgrind hides it). + */ + + /* MakeTime */ + tmp_time = 0.0; + tmp_time += dparts[DUK_DATE_IDX_HOUR] * ((duk_double_t) DUK_DATE_MSEC_HOUR); + tmp_time += dparts[DUK_DATE_IDX_MINUTE] * ((duk_double_t) DUK_DATE_MSEC_MINUTE); + tmp_time += dparts[DUK_DATE_IDX_SECOND] * ((duk_double_t) DUK_DATE_MSEC_SECOND); + tmp_time += dparts[DUK_DATE_IDX_MILLISECOND]; + + /* MakeDay */ + tmp_day = duk__make_day(dparts[DUK_DATE_IDX_YEAR], dparts[DUK_DATE_IDX_MONTH], dparts[DUK_DATE_IDX_DAY]); + + /* MakeDate */ + d = tmp_day * ((duk_double_t) DUK_DATE_MSEC_DAY) + tmp_time; + + DUK_DDD(DUK_DDDPRINT("time=%lf day=%lf --> timeval=%lf", + (double) tmp_time, (double) tmp_day, (double) d)); + + /* Optional UTC conversion. */ + if (flags & DUK_DATE_FLAG_LOCALTIME) { + /* DUK_USE_DATE_GET_LOCAL_TZOFFSET() needs to be called with a + * time value computed from UTC parts. At this point we only + * have 'd' which is a time value computed from local parts, so + * it is off by the UTC-to-local time offset which we don't know + * yet. The current solution for computing the UTC-to-local + * time offset is to iterate a few times and detect a fixed + * point or a two-cycle loop (or a sanity iteration limit), + * see test-bi-date-local-parts.js and test-bi-date-tzoffset-basic-fi.js. + * + * E5.1 Section 15.9.1.9: + * UTC(t) = t - LocalTZA - DaylightSavingTA(t - LocalTZA) + * + * For NaN/inf, DUK_USE_DATE_GET_LOCAL_TZOFFSET() returns 0. + */ + +#if 0 + /* Old solution: don't iterate, incorrect */ + tzoff = DUK_USE_DATE_GET_LOCAL_TZOFFSET(d); + DUK_DDD(DUK_DDDPRINT("tzoffset w/o iteration, tzoff=%ld", (long) tzoff)); + d -= tzoff * 1000L; + DUK_UNREF(tzoffprev1); + DUK_UNREF(tzoffprev2); +#endif + + /* Iteration solution */ + tzoff = 0; + tzoffprev1 = 999999999L; /* invalid value which never matches */ + for (i = 0; i < DUK__LOCAL_TZOFFSET_MAXITER; i++) { + tzoffprev2 = tzoffprev1; + tzoffprev1 = tzoff; + tzoff = DUK_USE_DATE_GET_LOCAL_TZOFFSET(d - tzoff * 1000L); + DUK_DDD(DUK_DDDPRINT("tzoffset iteration, i=%d, tzoff=%ld, tzoffprev1=%ld tzoffprev2=%ld", + (int) i, (long) tzoff, (long) tzoffprev1, (long) tzoffprev2)); + if (tzoff == tzoffprev1) { + DUK_DDD(DUK_DDDPRINT("tzoffset iteration finished, i=%d, tzoff=%ld, tzoffprev1=%ld, tzoffprev2=%ld", + (int) i, (long) tzoff, (long) tzoffprev1, (long) tzoffprev2)); + break; + } else if (tzoff == tzoffprev2) { + /* Two value cycle, see e.g. test-bi-date-tzoffset-basic-fi.js. + * In these cases, favor a higher tzoffset to get a consistent + * result which is independent of iteration count. Not sure if + * this is a generically correct solution. + */ + DUK_DDD(DUK_DDDPRINT("tzoffset iteration two-value cycle, i=%d, tzoff=%ld, tzoffprev1=%ld, tzoffprev2=%ld", + (int) i, (long) tzoff, (long) tzoffprev1, (long) tzoffprev2)); + if (tzoffprev1 > tzoff) { + tzoff = tzoffprev1; + } + break; + } + } + DUK_DDD(DUK_DDDPRINT("tzoffset iteration, tzoff=%ld", (long) tzoff)); + d -= tzoff * 1000L; + } + + /* TimeClip(), which also handles Infinity -> NaN conversion */ + d = duk__timeclip(d); + + return d; +} + +/* + * API oriented helpers + */ + +/* Push 'this' binding, check that it is a Date object; then push the + * internal time value. At the end, stack is: [ ... this timeval ]. + * Returns the time value. Local time adjustment is done if requested. + */ +DUK_LOCAL duk_double_t duk__push_this_get_timeval_tzoffset(duk_hthread *thr, duk_small_uint_t flags, duk_int_t *out_tzoffset) { + duk_hobject *h; + duk_double_t d; + duk_int_t tzoffset = 0; + + duk_push_this(thr); + h = duk_get_hobject(thr, -1); /* XXX: getter with class check, useful in built-ins */ + if (h == NULL || DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_DATE) { + DUK_ERROR_TYPE(thr, "expected Date"); + DUK_WO_NORETURN(return 0.0;); + } + + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE); + d = duk_to_number_m1(thr); + duk_pop(thr); + + if (DUK_ISNAN(d)) { + if (flags & DUK_DATE_FLAG_NAN_TO_ZERO) { + d = 0.0; + } + if (flags & DUK_DATE_FLAG_NAN_TO_RANGE_ERROR) { + DUK_ERROR_RANGE(thr, "Invalid Date"); + DUK_WO_NORETURN(return 0.0;); + } + } + /* if no NaN handling flag, may still be NaN here, but not Inf */ + DUK_ASSERT(!DUK_ISINF(d)); + + if (flags & DUK_DATE_FLAG_LOCALTIME) { + /* Note: DST adjustment is determined using UTC time. + * If 'd' is NaN, tzoffset will be 0. + */ + tzoffset = DUK_USE_DATE_GET_LOCAL_TZOFFSET(d); /* seconds */ + d += tzoffset * 1000L; + } + if (out_tzoffset) { + *out_tzoffset = tzoffset; + } + + /* [ ... this ] */ + return d; +} + +DUK_LOCAL duk_double_t duk__push_this_get_timeval(duk_hthread *thr, duk_small_uint_t flags) { + return duk__push_this_get_timeval_tzoffset(thr, flags, NULL); +} + +/* Set timeval to 'this' from dparts, push the new time value onto the + * value stack and return 1 (caller can then tail call us). Expects + * the value stack to contain 'this' on the stack top. + */ +DUK_LOCAL duk_ret_t duk__set_this_timeval_from_dparts(duk_hthread *thr, duk_double_t *dparts, duk_small_uint_t flags) { + duk_double_t d; + + /* [ ... this ] */ + + d = duk_bi_date_get_timeval_from_dparts(dparts, flags); + duk_push_number(thr, d); /* -> [ ... this timeval_new ] */ + duk_dup_top(thr); /* -> [ ... this timeval_new timeval_new ] */ + + /* Must force write because e.g. .setYear() must work even when + * the Date instance is frozen. + */ + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_W); + + /* Stack top: new time value, return 1 to allow tail calls. */ + return 1; +} + +/* 'out_buf' must be at least DUK_BI_DATE_ISO8601_BUFSIZE long. */ +DUK_LOCAL void duk__format_parts_iso8601(duk_int_t *parts, duk_int_t tzoffset, duk_small_uint_t flags, duk_uint8_t *out_buf) { + char yearstr[8]; /* "-123456\0" */ + char tzstr[8]; /* "+11:22\0" */ + char sep = (flags & DUK_DATE_FLAG_SEP_T) ? DUK_ASC_UC_T : DUK_ASC_SPACE; + + DUK_ASSERT(parts[DUK_DATE_IDX_MONTH] >= 1 && parts[DUK_DATE_IDX_MONTH] <= 12); + DUK_ASSERT(parts[DUK_DATE_IDX_DAY] >= 1 && parts[DUK_DATE_IDX_DAY] <= 31); + DUK_ASSERT(parts[DUK_DATE_IDX_YEAR] >= -999999 && parts[DUK_DATE_IDX_YEAR] <= 999999); + + /* Note: %06d for positive value, %07d for negative value to include + * sign and 6 digits. + */ + DUK_SNPRINTF(yearstr, + sizeof(yearstr), + (parts[DUK_DATE_IDX_YEAR] >= 0 && parts[DUK_DATE_IDX_YEAR] <= 9999) ? "%04ld" : + ((parts[DUK_DATE_IDX_YEAR] >= 0) ? "+%06ld" : "%07ld"), + (long) parts[DUK_DATE_IDX_YEAR]); + yearstr[sizeof(yearstr) - 1] = (char) 0; + + if (flags & DUK_DATE_FLAG_LOCALTIME) { + /* tzoffset seconds are dropped; 16 bits suffice for + * time offset in minutes + */ + const char *fmt; + duk_small_int_t tmp, arg_hours, arg_minutes; + + if (tzoffset >= 0) { + tmp = tzoffset; + fmt = "+%02d:%02d"; + } else { + tmp = -tzoffset; + fmt = "-%02d:%02d"; + } + tmp = tmp / 60; + arg_hours = tmp / 60; + arg_minutes = tmp % 60; + DUK_ASSERT(arg_hours <= 24); /* Even less is actually guaranteed for a valid tzoffset. */ + arg_hours = arg_hours & 0x3f; /* For [0,24] this is a no-op, but fixes GCC 7 warning, see https://github.com/svaarala/duktape/issues/1602. */ + + DUK_SNPRINTF(tzstr, sizeof(tzstr), fmt, (int) arg_hours, (int) arg_minutes); + tzstr[sizeof(tzstr) - 1] = (char) 0; + } else { + tzstr[0] = DUK_ASC_UC_Z; + tzstr[1] = (char) 0; + } + + /* Unlike year, the other parts fit into 16 bits so %d format + * is portable. + */ + if ((flags & DUK_DATE_FLAG_TOSTRING_DATE) && (flags & DUK_DATE_FLAG_TOSTRING_TIME)) { + DUK_SPRINTF((char *) out_buf, "%s-%02d-%02d%c%02d:%02d:%02d.%03d%s", + (const char *) yearstr, (int) parts[DUK_DATE_IDX_MONTH], (int) parts[DUK_DATE_IDX_DAY], (int) sep, + (int) parts[DUK_DATE_IDX_HOUR], (int) parts[DUK_DATE_IDX_MINUTE], + (int) parts[DUK_DATE_IDX_SECOND], (int) parts[DUK_DATE_IDX_MILLISECOND], (const char *) tzstr); + } else if (flags & DUK_DATE_FLAG_TOSTRING_DATE) { + DUK_SPRINTF((char *) out_buf, "%s-%02d-%02d", + (const char *) yearstr, (int) parts[DUK_DATE_IDX_MONTH], (int) parts[DUK_DATE_IDX_DAY]); + } else { + DUK_ASSERT(flags & DUK_DATE_FLAG_TOSTRING_TIME); + DUK_SPRINTF((char *) out_buf, "%02d:%02d:%02d.%03d%s", + (int) parts[DUK_DATE_IDX_HOUR], (int) parts[DUK_DATE_IDX_MINUTE], + (int) parts[DUK_DATE_IDX_SECOND], (int) parts[DUK_DATE_IDX_MILLISECOND], + (const char *) tzstr); + } +} + +/* Helper for string conversion calls: check 'this' binding, get the + * internal time value, and format date and/or time in a few formats. + * Return value allows tail calls. + */ +DUK_LOCAL duk_ret_t duk__to_string_helper(duk_hthread *thr, duk_small_uint_t flags) { + duk_double_t d; + duk_int_t parts[DUK_DATE_IDX_NUM_PARTS]; + duk_int_t tzoffset; /* seconds, doesn't fit into 16 bits */ + duk_bool_t rc; + duk_uint8_t buf[DUK_BI_DATE_ISO8601_BUFSIZE]; + + DUK_UNREF(rc); /* unreferenced with some options */ + + d = duk__push_this_get_timeval_tzoffset(thr, flags, &tzoffset); + if (DUK_ISNAN(d)) { + duk_push_hstring_stridx(thr, DUK_STRIDX_INVALID_DATE); + return 1; + } + DUK_ASSERT(DUK_ISFINITE(d)); + + /* formatters always get one-based month/day-of-month */ + duk_bi_date_timeval_to_parts(d, parts, NULL, DUK_DATE_FLAG_ONEBASED); + DUK_ASSERT(parts[DUK_DATE_IDX_MONTH] >= 1 && parts[DUK_DATE_IDX_MONTH] <= 12); + DUK_ASSERT(parts[DUK_DATE_IDX_DAY] >= 1 && parts[DUK_DATE_IDX_DAY] <= 31); + + if (flags & DUK_DATE_FLAG_TOSTRING_LOCALE) { + /* try locale specific formatter; if it refuses to format the + * string, fall back to an ISO 8601 formatted value in local + * time. + */ +#if defined(DUK_USE_DATE_FORMAT_STRING) + /* Contract, either: + * - Push string to value stack and return 1 + * - Don't push anything and return 0 + */ + + rc = DUK_USE_DATE_FORMAT_STRING(thr, parts, tzoffset, flags); + if (rc != 0) { + return 1; + } +#else + /* No locale specific formatter; this is OK, we fall back + * to ISO 8601. + */ +#endif + } + + /* Different calling convention than above used because the helper + * is shared. + */ + duk__format_parts_iso8601(parts, tzoffset, flags, buf); + duk_push_string(thr, (const char *) buf); + return 1; +} + +/* Helper for component getter calls: check 'this' binding, get the + * internal time value, split it into parts (either as UTC time or + * local time), push a specified component as a return value to the + * value stack and return 1 (caller can then tail call us). + */ +DUK_LOCAL duk_ret_t duk__get_part_helper(duk_hthread *thr, duk_small_uint_t flags_and_idx) { + duk_double_t d; + duk_int_t parts[DUK_DATE_IDX_NUM_PARTS]; + duk_small_uint_t idx_part = (duk_small_uint_t) (flags_and_idx >> DUK_DATE_FLAG_VALUE_SHIFT); /* unpack args */ + + DUK_ASSERT_DISABLE(idx_part >= 0); /* unsigned */ + DUK_ASSERT(idx_part < DUK_DATE_IDX_NUM_PARTS); + + d = duk__push_this_get_timeval(thr, flags_and_idx); + if (DUK_ISNAN(d)) { + duk_push_nan(thr); + return 1; + } + DUK_ASSERT(DUK_ISFINITE(d)); + + duk_bi_date_timeval_to_parts(d, parts, NULL, flags_and_idx); /* no need to mask idx portion */ + + /* Setter APIs detect special year numbers (0...99) and apply a +1900 + * only in certain cases. The legacy getYear() getter applies -1900 + * unconditionally. + */ + duk_push_int(thr, (flags_and_idx & DUK_DATE_FLAG_SUB1900) ? parts[idx_part] - 1900 : parts[idx_part]); + return 1; +} + +/* Helper for component setter calls: check 'this' binding, get the + * internal time value, split it into parts (either as UTC time or + * local time), modify one or more components as specified, recompute + * the time value, set it as the internal value. Finally, push the + * new time value as a return value to the value stack and return 1 + * (caller can then tail call us). + */ +DUK_LOCAL duk_ret_t duk__set_part_helper(duk_hthread *thr, duk_small_uint_t flags_and_maxnargs) { + duk_double_t d; + duk_int_t parts[DUK_DATE_IDX_NUM_PARTS]; + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + duk_idx_t nargs; + duk_small_uint_t maxnargs = (duk_small_uint_t) (flags_and_maxnargs >> DUK_DATE_FLAG_VALUE_SHIFT); /* unpack args */ + duk_small_uint_t idx_first, idx; + duk_small_uint_t i; + + nargs = duk_get_top(thr); + d = duk__push_this_get_timeval(thr, flags_and_maxnargs); + DUK_ASSERT(DUK_ISFINITE(d) || DUK_ISNAN(d)); + + if (DUK_ISFINITE(d)) { + duk_bi_date_timeval_to_parts(d, parts, dparts, flags_and_maxnargs); + } else { + /* NaN timevalue: we need to coerce the arguments, but + * the resulting internal timestamp needs to remain NaN. + * This works but is not pretty: parts and dparts will + * be partially uninitialized, but we only write to them. + */ + } + + /* + * Determining which datetime components to overwrite based on + * stack arguments is a bit complicated, but important to factor + * out from setters themselves for compactness. + * + * If DUK_DATE_FLAG_TIMESETTER, maxnargs indicates setter type: + * + * 1 -> millisecond + * 2 -> second, [millisecond] + * 3 -> minute, [second], [millisecond] + * 4 -> hour, [minute], [second], [millisecond] + * + * Else: + * + * 1 -> date + * 2 -> month, [date] + * 3 -> year, [month], [date] + * + * By comparing nargs and maxnargs (and flags) we know which + * components to override. We rely on part index ordering. + */ + + if (flags_and_maxnargs & DUK_DATE_FLAG_TIMESETTER) { + DUK_ASSERT(maxnargs >= 1 && maxnargs <= 4); + idx_first = DUK_DATE_IDX_MILLISECOND - (maxnargs - 1); + } else { + DUK_ASSERT(maxnargs >= 1 && maxnargs <= 3); + idx_first = DUK_DATE_IDX_DAY - (maxnargs - 1); + } + DUK_ASSERT_DISABLE(idx_first >= 0); /* unsigned */ + DUK_ASSERT(idx_first < DUK_DATE_IDX_NUM_PARTS); + + for (i = 0; i < maxnargs; i++) { + if ((duk_idx_t) i >= nargs) { + /* no argument given -> leave components untouched */ + break; + } + idx = idx_first + i; + DUK_ASSERT_DISABLE(idx >= 0); /* unsigned */ + DUK_ASSERT(idx < DUK_DATE_IDX_NUM_PARTS); + + if (idx == DUK_DATE_IDX_YEAR && (flags_and_maxnargs & DUK_DATE_FLAG_YEAR_FIXUP)) { + duk__twodigit_year_fixup(thr, (duk_idx_t) i); + } + + dparts[idx] = duk_to_number(thr, (duk_idx_t) i); + + if (idx == DUK_DATE_IDX_DAY) { + /* Day-of-month is one-based in the API, but zero-based + * internally, so fix here. Note that month is zero-based + * both in the API and internally. + */ + /* SCANBUILD: complains about use of uninitialized values. + * The complaint is correct, but operating in undefined + * values here is intentional in some cases and the caller + * ignores the results. + */ + dparts[idx] -= 1.0; + } + } + + /* Leaves new timevalue on stack top and returns 1, which is correct + * for part setters. + */ + if (DUK_ISFINITE(d)) { + return duk__set_this_timeval_from_dparts(thr, dparts, flags_and_maxnargs); + } else { + /* Internal timevalue is already NaN, so don't touch it. */ + duk_push_nan(thr); + return 1; + } +} + +/* Apply ToNumber() to specified index; if ToInteger(val) in [0,99], add + * 1900 and replace value at idx_val. + */ +DUK_LOCAL void duk__twodigit_year_fixup(duk_hthread *thr, duk_idx_t idx_val) { + duk_double_t d; + + /* XXX: idx_val would fit into 16 bits, but using duk_small_uint_t + * might not generate better code due to casting. + */ + + /* E5 Sections 15.9.3.1, B.2.4, B.2.5 */ + duk_to_number(thr, idx_val); + if (duk_is_nan(thr, idx_val)) { + return; + } + duk_dup(thr, idx_val); + duk_to_int(thr, -1); + d = duk_get_number(thr, -1); /* get as double to handle huge numbers correctly */ + if (d >= 0.0 && d <= 99.0) { + d += 1900.0; + duk_push_number(thr, d); + duk_replace(thr, idx_val); + } + duk_pop(thr); +} + +/* Set datetime parts from stack arguments, defaulting any missing values. + * Day-of-week is not set; it is not required when setting the time value. + */ +DUK_LOCAL void duk__set_parts_from_args(duk_hthread *thr, duk_double_t *dparts, duk_idx_t nargs) { + duk_double_t d; + duk_small_uint_t i; + duk_small_uint_t idx; + + /* Causes a ToNumber() coercion, but doesn't break coercion order since + * year is coerced first anyway. + */ + duk__twodigit_year_fixup(thr, 0); + + /* There are at most 7 args, but we use 8 here so that also + * DUK_DATE_IDX_WEEKDAY gets initialized (to zero) to avoid the potential + * for any Valgrind gripes later. + */ + for (i = 0; i < 8; i++) { + /* Note: rely on index ordering */ + idx = DUK_DATE_IDX_YEAR + i; + if ((duk_idx_t) i < nargs) { + d = duk_to_number(thr, (duk_idx_t) i); + if (idx == DUK_DATE_IDX_DAY) { + /* Convert day from one-based to zero-based (internal). This may + * cause the day part to be negative, which is OK. + */ + d -= 1.0; + } + } else { + /* All components default to 0 except day-of-month which defaults + * to 1. However, because our internal day-of-month is zero-based, + * it also defaults to zero here. + */ + d = 0.0; + } + dparts[idx] = d; + } + + DUK_DDD(DUK_DDDPRINT("parts from args -> %lf %lf %lf %lf %lf %lf %lf %lf", + (double) dparts[0], (double) dparts[1], + (double) dparts[2], (double) dparts[3], + (double) dparts[4], (double) dparts[5], + (double) dparts[6], (double) dparts[7])); +} + +/* + * Indirect magic value lookup for Date methods. + * + * Date methods don't put their control flags into the function magic value + * because they wouldn't fit into a LIGHTFUNC's magic field. Instead, the + * magic value is set to an index pointing to the array of control flags + * below. + * + * This must be kept in strict sync with genbuiltins.py! + */ + +static duk_uint16_t duk__date_magics[] = { + /* 0: toString */ + DUK_DATE_FLAG_TOSTRING_DATE + DUK_DATE_FLAG_TOSTRING_TIME + DUK_DATE_FLAG_LOCALTIME, + + /* 1: toDateString */ + DUK_DATE_FLAG_TOSTRING_DATE + DUK_DATE_FLAG_LOCALTIME, + + /* 2: toTimeString */ + DUK_DATE_FLAG_TOSTRING_TIME + DUK_DATE_FLAG_LOCALTIME, + + /* 3: toLocaleString */ + DUK_DATE_FLAG_TOSTRING_DATE + DUK_DATE_FLAG_TOSTRING_TIME + DUK_DATE_FLAG_TOSTRING_LOCALE + DUK_DATE_FLAG_LOCALTIME, + + /* 4: toLocaleDateString */ + DUK_DATE_FLAG_TOSTRING_DATE + DUK_DATE_FLAG_TOSTRING_LOCALE + DUK_DATE_FLAG_LOCALTIME, + + /* 5: toLocaleTimeString */ + DUK_DATE_FLAG_TOSTRING_TIME + DUK_DATE_FLAG_TOSTRING_LOCALE + DUK_DATE_FLAG_LOCALTIME, + + /* 6: toUTCString */ + DUK_DATE_FLAG_TOSTRING_DATE + DUK_DATE_FLAG_TOSTRING_TIME, + + /* 7: toISOString */ + DUK_DATE_FLAG_TOSTRING_DATE + DUK_DATE_FLAG_TOSTRING_TIME + DUK_DATE_FLAG_NAN_TO_RANGE_ERROR + DUK_DATE_FLAG_SEP_T, + + /* 8: getFullYear */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_YEAR << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 9: getUTCFullYear */ + 0 + (DUK_DATE_IDX_YEAR << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 10: getMonth */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_MONTH << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 11: getUTCMonth */ + 0 + (DUK_DATE_IDX_MONTH << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 12: getDate */ + DUK_DATE_FLAG_ONEBASED + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_DAY << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 13: getUTCDate */ + DUK_DATE_FLAG_ONEBASED + (DUK_DATE_IDX_DAY << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 14: getDay */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_WEEKDAY << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 15: getUTCDay */ + 0 + (DUK_DATE_IDX_WEEKDAY << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 16: getHours */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_HOUR << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 17: getUTCHours */ + 0 + (DUK_DATE_IDX_HOUR << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 18: getMinutes */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_MINUTE << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 19: getUTCMinutes */ + 0 + (DUK_DATE_IDX_MINUTE << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 20: getSeconds */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_SECOND << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 21: getUTCSeconds */ + 0 + (DUK_DATE_IDX_SECOND << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 22: getMilliseconds */ + DUK_DATE_FLAG_LOCALTIME + (DUK_DATE_IDX_MILLISECOND << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 23: getUTCMilliseconds */ + 0 + (DUK_DATE_IDX_MILLISECOND << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 24: setMilliseconds */ + DUK_DATE_FLAG_TIMESETTER + DUK_DATE_FLAG_LOCALTIME + (1 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 25: setUTCMilliseconds */ + DUK_DATE_FLAG_TIMESETTER + (1 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 26: setSeconds */ + DUK_DATE_FLAG_TIMESETTER + DUK_DATE_FLAG_LOCALTIME + (2 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 27: setUTCSeconds */ + DUK_DATE_FLAG_TIMESETTER + (2 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 28: setMinutes */ + DUK_DATE_FLAG_TIMESETTER + DUK_DATE_FLAG_LOCALTIME + (3 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 29: setUTCMinutes */ + DUK_DATE_FLAG_TIMESETTER + (3 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 30: setHours */ + DUK_DATE_FLAG_TIMESETTER + DUK_DATE_FLAG_LOCALTIME + (4 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 31: setUTCHours */ + DUK_DATE_FLAG_TIMESETTER + (4 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 32: setDate */ + DUK_DATE_FLAG_LOCALTIME + (1 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 33: setUTCDate */ + 0 + (1 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 34: setMonth */ + DUK_DATE_FLAG_LOCALTIME + (2 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 35: setUTCMonth */ + 0 + (2 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 36: setFullYear */ + DUK_DATE_FLAG_NAN_TO_ZERO + DUK_DATE_FLAG_LOCALTIME + (3 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 37: setUTCFullYear */ + DUK_DATE_FLAG_NAN_TO_ZERO + (3 << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 38: getYear */ + DUK_DATE_FLAG_LOCALTIME + DUK_DATE_FLAG_SUB1900 + (DUK_DATE_IDX_YEAR << DUK_DATE_FLAG_VALUE_SHIFT), + + /* 39: setYear */ + DUK_DATE_FLAG_NAN_TO_ZERO + DUK_DATE_FLAG_YEAR_FIXUP + (3 << DUK_DATE_FLAG_VALUE_SHIFT), +}; + +DUK_LOCAL duk_small_uint_t duk__date_get_indirect_magic(duk_hthread *thr) { + duk_small_uint_t magicidx = (duk_small_uint_t) duk_get_current_magic(thr); + DUK_ASSERT(magicidx < (duk_small_int_t) (sizeof(duk__date_magics) / sizeof(duk_uint16_t))); + return (duk_small_uint_t) duk__date_magics[magicidx]; +} + +#if defined(DUK_USE_DATE_BUILTIN) +/* + * Constructor calls + */ + +DUK_INTERNAL duk_ret_t duk_bi_date_constructor(duk_hthread *thr) { + duk_idx_t nargs = duk_get_top(thr); + duk_bool_t is_cons = duk_is_constructor_call(thr); + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + duk_double_t d; + + DUK_DDD(DUK_DDDPRINT("Date constructor, nargs=%ld, is_cons=%ld", (long) nargs, (long) is_cons)); + + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DATE), + DUK_BIDX_DATE_PROTOTYPE); + + /* Unlike most built-ins, the internal [[PrimitiveValue]] of a Date + * is mutable. + */ + + if (nargs == 0 || !is_cons) { + d = duk__timeclip(duk_time_get_ecmascript_time_nofrac(thr)); + duk_push_number(thr, d); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_W); + if (!is_cons) { + /* called as a normal function: return new Date().toString() */ + duk_to_string(thr, -1); + } + return 1; + } else if (nargs == 1) { + const char *str; + duk_to_primitive(thr, 0, DUK_HINT_NONE); + str = duk_get_string_notsymbol(thr, 0); + if (str) { + duk__parse_string(thr, str); + duk_replace(thr, 0); /* may be NaN */ + } + d = duk__timeclip(duk_to_number(thr, 0)); /* symbols fail here */ + duk_push_number(thr, d); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_W); + return 1; + } + + duk__set_parts_from_args(thr, dparts, nargs); + + /* Parts are in local time, convert when setting. */ + + (void) duk__set_this_timeval_from_dparts(thr, dparts, DUK_DATE_FLAG_LOCALTIME /*flags*/); /* -> [ ... this timeval ] */ + duk_pop(thr); /* -> [ ... this ] */ + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_date_constructor_parse(duk_hthread *thr) { + return duk__parse_string(thr, duk_to_string(thr, 0)); +} + +DUK_INTERNAL duk_ret_t duk_bi_date_constructor_utc(duk_hthread *thr) { + duk_idx_t nargs = duk_get_top(thr); + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + duk_double_t d; + + /* Behavior for nargs < 2 is implementation dependent: currently we'll + * set a NaN time value (matching V8 behavior) in this case. + */ + + if (nargs < 2) { + duk_push_nan(thr); + } else { + duk__set_parts_from_args(thr, dparts, nargs); + d = duk_bi_date_get_timeval_from_dparts(dparts, 0 /*flags*/); + duk_push_number(thr, d); + } + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_date_constructor_now(duk_hthread *thr) { + duk_double_t d; + + d = duk_time_get_ecmascript_time_nofrac(thr); + DUK_ASSERT(duk_double_equals(duk__timeclip(d), d)); /* TimeClip() should never be necessary */ + duk_push_number(thr, d); + return 1; +} + +/* + * String/JSON conversions + * + * Human readable conversions are now basically ISO 8601 with a space + * (instead of 'T') as the date/time separator. This is a good baseline + * and is platform independent. + * + * A shared native helper to provide many conversions. Magic value contains + * a set of flags. The helper provides: + * + * toString() + * toDateString() + * toTimeString() + * toLocaleString() + * toLocaleDateString() + * toLocaleTimeString() + * toUTCString() + * toISOString() + * + * Notes: + * + * - Date.prototype.toGMTString() and Date.prototype.toUTCString() are + * required to be the same ECMAScript function object (!), so it is + * omitted from here. + * + * - Date.prototype.toUTCString(): E5.1 specification does not require a + * specific format, but result should be human readable. The + * specification suggests using ISO 8601 format with a space (instead + * of 'T') separator if a more human readable format is not available. + * + * - Date.prototype.toISOString(): unlike other conversion functions, + * toISOString() requires a RangeError for invalid date values. + */ + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_tostring_shared(duk_hthread *thr) { + duk_small_uint_t flags = duk__date_get_indirect_magic(thr); + return duk__to_string_helper(thr, flags); +} + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_value_of(duk_hthread *thr) { + /* This native function is also used for Date.prototype.getTime() + * as their behavior is identical. + */ + + duk_double_t d = duk__push_this_get_timeval(thr, 0 /*flags*/); /* -> [ this ] */ + DUK_ASSERT(DUK_ISFINITE(d) || DUK_ISNAN(d)); + duk_push_number(thr, d); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_to_json(duk_hthread *thr) { + /* Note: toJSON() is a generic function which works even if 'this' + * is not a Date. The sole argument is ignored. + */ + + duk_push_this(thr); + duk_to_object(thr, -1); + + duk_dup_top(thr); + duk_to_primitive(thr, -1, DUK_HINT_NUMBER); + if (duk_is_number(thr, -1)) { + duk_double_t d = duk_get_number(thr, -1); + if (!DUK_ISFINITE(d)) { + duk_push_null(thr); + return 1; + } + } + duk_pop(thr); + + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_TO_ISO_STRING); + duk_dup_m2(thr); /* -> [ O toIsoString O ] */ + duk_call_method(thr, 0); + return 1; +} + +/* + * Getters. + * + * Implementing getters is quite easy. The internal time value is either + * NaN, or represents milliseconds (without fractions) from Jan 1, 1970. + * The internal time value can be converted to integer parts, and each + * part will be normalized and will fit into a 32-bit signed integer. + * + * A shared native helper to provide all getters. Magic value contains + * a set of flags and also packs the date component index argument. The + * helper provides: + * + * getFullYear() + * getUTCFullYear() + * getMonth() + * getUTCMonth() + * getDate() + * getUTCDate() + * getDay() + * getUTCDay() + * getHours() + * getUTCHours() + * getMinutes() + * getUTCMinutes() + * getSeconds() + * getUTCSeconds() + * getMilliseconds() + * getUTCMilliseconds() + * getYear() + * + * Notes: + * + * - Date.prototype.getDate(): 'date' means day-of-month, and is + * zero-based in internal calculations but public API expects it to + * be one-based. + * + * - Date.prototype.getTime() and Date.prototype.valueOf() have identical + * behavior. They have separate function objects, but share the same C + * function (duk_bi_date_prototype_value_of). + */ + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_get_shared(duk_hthread *thr) { + duk_small_uint_t flags_and_idx = duk__date_get_indirect_magic(thr); + return duk__get_part_helper(thr, flags_and_idx); +} + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_get_timezone_offset(duk_hthread *thr) { + /* + * Return (t - LocalTime(t)) in minutes: + * + * t - LocalTime(t) = t - (t + LocalTZA + DaylightSavingTA(t)) + * = -(LocalTZA + DaylightSavingTA(t)) + * + * where DaylightSavingTA() is checked for time 't'. + * + * Note that the sign of the result is opposite to common usage, + * e.g. for EE(S)T which normally is +2h or +3h from UTC, this + * function returns -120 or -180. + * + */ + + duk_double_t d; + duk_int_t tzoffset; + + /* Note: DST adjustment is determined using UTC time. */ + d = duk__push_this_get_timeval(thr, 0 /*flags*/); + DUK_ASSERT(DUK_ISFINITE(d) || DUK_ISNAN(d)); + if (DUK_ISNAN(d)) { + duk_push_nan(thr); + } else { + DUK_ASSERT(DUK_ISFINITE(d)); + tzoffset = DUK_USE_DATE_GET_LOCAL_TZOFFSET(d); + duk_push_int(thr, -tzoffset / 60); + } + return 1; +} + +/* + * Setters. + * + * Setters are a bit more complicated than getters. Component setters + * break down the current time value into its (normalized) component + * parts, replace one or more components with -unnormalized- new values, + * and the components are then converted back into a time value. As an + * example of using unnormalized values: + * + * var d = new Date(1234567890); + * + * is equivalent to: + * + * var d = new Date(0); + * d.setUTCMilliseconds(1234567890); + * + * A shared native helper to provide almost all setters. Magic value + * contains a set of flags and also packs the "maxnargs" argument. The + * helper provides: + * + * setMilliseconds() + * setUTCMilliseconds() + * setSeconds() + * setUTCSeconds() + * setMinutes() + * setUTCMinutes() + * setHours() + * setUTCHours() + * setDate() + * setUTCDate() + * setMonth() + * setUTCMonth() + * setFullYear() + * setUTCFullYear() + * setYear() + * + * Notes: + * + * - Date.prototype.setYear() (Section B addition): special year check + * is omitted. NaN / Infinity will just flow through and ultimately + * result in a NaN internal time value. + * + * - Date.prototype.setYear() does not have optional arguments for + * setting month and day-in-month (like setFullYear()), but we indicate + * 'maxnargs' to be 3 to get the year written to the correct component + * index in duk__set_part_helper(). The function has nargs == 1, so only + * the year will be set regardless of actual argument count. + */ + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_set_shared(duk_hthread *thr) { + duk_small_uint_t flags_and_maxnargs = duk__date_get_indirect_magic(thr); + return duk__set_part_helper(thr, flags_and_maxnargs); +} + +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_set_time(duk_hthread *thr) { + duk_double_t d; + + (void) duk__push_this_get_timeval(thr, 0 /*flags*/); /* -> [ timeval this ] */ + d = duk__timeclip(duk_to_number(thr, 0)); + duk_push_number(thr, d); + duk_dup_top(thr); + /* Must force write because .setTime() must work even when + * the Date instance is frozen. + */ + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_W); + /* -> [ timeval this timeval ] */ + + return 1; +} + +/* + * Misc. + */ + +#if defined(DUK_USE_SYMBOL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_date_prototype_toprimitive(duk_hthread *thr) { + duk_size_t hintlen; + const char *hintstr; + duk_int_t hint; + + /* Invokes OrdinaryToPrimitive() with suitable hint. Note that the + * method is generic, and works on non-Date arguments too. + * + * https://www.ecma-international.org/ecma-262/6.0/#sec-date.prototype-@@toprimitive + */ + + duk_push_this(thr); + duk_require_object(thr, -1); + DUK_ASSERT_TOP(thr, 2); + + hintstr = duk_require_lstring(thr, 0, &hintlen); + if ((hintlen == 6 && DUK_STRCMP(hintstr, "string") == 0) || + (hintlen == 7 && DUK_STRCMP(hintstr, "default") == 0)) { + hint = DUK_HINT_STRING; + } else if (hintlen == 6 && DUK_STRCMP(hintstr, "number") == 0) { + hint = DUK_HINT_NUMBER; + } else { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + duk_to_primitive_ordinary(thr, -1, hint); + return 1; +} +#endif /* DUK_USE_SYMBOL_BUILTIN */ + +#endif /* DUK_USE_DATE_BUILTIN */ + +/* automatic undefs */ +#undef DUK__CF_ACCEPT +#undef DUK__CF_ACCEPT_NUL +#undef DUK__CF_NEG +#undef DUK__DPRINT_DPARTS +#undef DUK__DPRINT_PARTS +#undef DUK__DPRINT_PARTS_AND_DPARTS +#undef DUK__LOCAL_TZOFFSET_MAXITER +#undef DUK__NUM_ISO8601_PARSER_PARTS +#undef DUK__PACK_RULE +#undef DUK__PI_DAY +#undef DUK__PI_HOUR +#undef DUK__PI_MILLISECOND +#undef DUK__PI_MINUTE +#undef DUK__PI_MONTH +#undef DUK__PI_SECOND +#undef DUK__PI_TZHOUR +#undef DUK__PI_TZMINUTE +#undef DUK__PI_YEAR +#undef DUK__PM_DAY +#undef DUK__PM_HOUR +#undef DUK__PM_MILLISECOND +#undef DUK__PM_MINUTE +#undef DUK__PM_MONTH +#undef DUK__PM_SECOND +#undef DUK__PM_TZHOUR +#undef DUK__PM_TZMINUTE +#undef DUK__PM_YEAR +#undef DUK__RULE_MASK_PART_SEP +#undef DUK__SI_COLON +#undef DUK__SI_MINUS +#undef DUK__SI_NUL +#undef DUK__SI_PERIOD +#undef DUK__SI_PLUS +#undef DUK__SI_SPACE +#undef DUK__SI_T +#undef DUK__SI_Z +#undef DUK__SM_COLON +#undef DUK__SM_MINUS +#undef DUK__SM_NUL +#undef DUK__SM_PERIOD +#undef DUK__SM_PLUS +#undef DUK__SM_SPACE +#undef DUK__SM_T +#undef DUK__SM_Z +#undef DUK__UNPACK_RULE +#undef DUK__WEEKDAY_MOD_ADDER +#undef DUK__YEAR +#line 1 "duk_bi_date_unix.c" +/* + * Unix-like Date providers + * + * Generally useful Unix / POSIX / ANSI Date providers. + */ + +/* #include duk_internal.h -> already included */ + +/* The necessary #includes are in place in duk_config.h. */ + +/* Buffer sizes for some UNIX calls. Larger than strictly necessary + * to avoid Valgrind errors. + */ +#define DUK__STRPTIME_BUF_SIZE 64 +#define DUK__STRFTIME_BUF_SIZE 64 + +#if defined(DUK_USE_DATE_NOW_GETTIMEOFDAY) +/* Get current ECMAScript time (= UNIX/Posix time, but in milliseconds). */ +DUK_INTERNAL duk_double_t duk_bi_date_get_now_gettimeofday(void) { + struct timeval tv; + duk_double_t d; + + if (gettimeofday(&tv, NULL) != 0) { + DUK_D(DUK_DPRINT("gettimeofday() failed")); + return 0.0; + } + + /* As of Duktape 2.2.0 allow fractions. */ + d = ((duk_double_t) tv.tv_sec) * 1000.0 + + ((duk_double_t) tv.tv_usec) / 1000.0; + + return d; +} +#endif /* DUK_USE_DATE_NOW_GETTIMEOFDAY */ + +#if defined(DUK_USE_DATE_NOW_TIME) +/* Not a very good provider: only full seconds are available. */ +DUK_INTERNAL duk_double_t duk_bi_date_get_now_time(void) { + time_t t; + + t = time(NULL); + if (t == (time_t) -1) { + DUK_D(DUK_DPRINT("time() failed")); + return 0.0; + } + return ((duk_double_t) t) * 1000.0; +} +#endif /* DUK_USE_DATE_NOW_TIME */ + +#if defined(DUK_USE_DATE_TZO_GMTIME) || defined(DUK_USE_DATE_TZO_GMTIME_R) || defined(DUK_USE_DATE_TZO_GMTIME_S) +/* Get local time offset (in seconds) for a certain (UTC) instant 'd'. */ +DUK_INTERNAL duk_int_t duk_bi_date_get_local_tzoffset_gmtime(duk_double_t d) { + time_t t, t1, t2; + duk_int_t parts[DUK_DATE_IDX_NUM_PARTS]; + duk_double_t dparts[DUK_DATE_IDX_NUM_PARTS]; + struct tm tms[2]; +#if defined(DUK_USE_DATE_TZO_GMTIME) + struct tm *tm_ptr; +#endif + + /* For NaN/inf, the return value doesn't matter. */ + if (!DUK_ISFINITE(d)) { + return 0; + } + + /* If not within ECMAScript range, some integer time calculations + * won't work correctly (and some asserts will fail), so bail out + * if so. This fixes test-bug-date-insane-setyear.js. There is + * a +/- 24h leeway in this range check to avoid a test262 corner + * case documented in test-bug-date-timeval-edges.js. + */ + if (!duk_bi_date_timeval_in_leeway_range(d)) { + DUK_DD(DUK_DDPRINT("timeval not within valid range, skip tzoffset computation to avoid integer overflows")); + return 0; + } + + /* + * This is a bit tricky to implement portably. The result depends + * on the timestamp (specifically, DST depends on the timestamp). + * If e.g. UNIX APIs are used, they'll have portability issues with + * very small and very large years. + * + * Current approach: + * + * - Stay within portable UNIX limits by using equivalent year mapping. + * Avoid year 1970 and 2038 as some conversions start to fail, at + * least on some platforms. Avoiding 1970 means that there are + * currently DST discrepancies for 1970. + * + * - Create a UTC and local time breakdowns from 't'. Then create + * a time_t using gmtime() and localtime() and compute the time + * difference between the two. + * + * Equivalent year mapping (E5 Section 15.9.1.8): + * + * If the host environment provides functionality for determining + * daylight saving time, the implementation of ECMAScript is free + * to map the year in question to an equivalent year (same + * leap-year-ness and same starting week day for the year) for which + * the host environment provides daylight saving time information. + * The only restriction is that all equivalent years should produce + * the same result. + * + * This approach is quite reasonable but not entirely correct, e.g. + * the specification also states (E5 Section 15.9.1.8): + * + * The implementation of ECMAScript should not try to determine + * whether the exact time was subject to daylight saving time, but + * just whether daylight saving time would have been in effect if + * the _current daylight saving time algorithm_ had been used at the + * time. This avoids complications such as taking into account the + * years that the locale observed daylight saving time year round. + * + * Since we rely on the platform APIs for conversions between local + * time and UTC, we can't guarantee the above. Rather, if the platform + * has historical DST rules they will be applied. This seems to be the + * general preferred direction in ECMAScript standardization (or at least + * implementations) anyway, and even the equivalent year mapping should + * be disabled if the platform is known to handle DST properly for the + * full ECMAScript range. + * + * The following has useful discussion and links: + * + * https://bugzilla.mozilla.org/show_bug.cgi?id=351066 + */ + + duk_bi_date_timeval_to_parts(d, parts, dparts, DUK_DATE_FLAG_EQUIVYEAR /*flags*/); + DUK_ASSERT(parts[DUK_DATE_IDX_YEAR] >= 1970 && parts[DUK_DATE_IDX_YEAR] <= 2038); + + d = duk_bi_date_get_timeval_from_dparts(dparts, 0 /*flags*/); + DUK_ASSERT(d >= 0 && d < 2147483648.0 * 1000.0); /* unsigned 31-bit range */ + t = (time_t) (d / 1000.0); + DUK_DDD(DUK_DDDPRINT("timeval: %lf -> time_t %ld", (double) d, (long) t)); + + duk_memzero((void *) tms, sizeof(struct tm) * 2); + +#if defined(DUK_USE_DATE_TZO_GMTIME_R) + (void) gmtime_r(&t, &tms[0]); + (void) localtime_r(&t, &tms[1]); +#elif defined(DUK_USE_DATE_TZO_GMTIME_S) + (void) gmtime_s(&t, &tms[0]); + (void) localtime_s(&t, &tms[1]); +#elif defined(DUK_USE_DATE_TZO_GMTIME) + tm_ptr = gmtime(&t); + duk_memcpy((void *) &tms[0], tm_ptr, sizeof(struct tm)); + tm_ptr = localtime(&t); + duk_memcpy((void *) &tms[1], tm_ptr, sizeof(struct tm)); +#else +#error internal error +#endif + DUK_DDD(DUK_DDDPRINT("gmtime result: tm={sec:%ld,min:%ld,hour:%ld,mday:%ld,mon:%ld,year:%ld," + "wday:%ld,yday:%ld,isdst:%ld}", + (long) tms[0].tm_sec, (long) tms[0].tm_min, (long) tms[0].tm_hour, + (long) tms[0].tm_mday, (long) tms[0].tm_mon, (long) tms[0].tm_year, + (long) tms[0].tm_wday, (long) tms[0].tm_yday, (long) tms[0].tm_isdst)); + DUK_DDD(DUK_DDDPRINT("localtime result: tm={sec:%ld,min:%ld,hour:%ld,mday:%ld,mon:%ld,year:%ld," + "wday:%ld,yday:%ld,isdst:%ld}", + (long) tms[1].tm_sec, (long) tms[1].tm_min, (long) tms[1].tm_hour, + (long) tms[1].tm_mday, (long) tms[1].tm_mon, (long) tms[1].tm_year, + (long) tms[1].tm_wday, (long) tms[1].tm_yday, (long) tms[1].tm_isdst)); + + /* tm_isdst is both an input and an output to mktime(), use 0 to + * avoid DST handling in mktime(): + * - https://github.com/svaarala/duktape/issues/406 + * - http://stackoverflow.com/questions/8558919/mktime-and-tm-isdst + */ + tms[0].tm_isdst = 0; + tms[1].tm_isdst = 0; + t1 = mktime(&tms[0]); /* UTC */ + t2 = mktime(&tms[1]); /* local */ + if (t1 == (time_t) -1 || t2 == (time_t) -1) { + /* This check used to be for (t < 0) but on some platforms + * time_t is unsigned and apparently the proper way to detect + * an mktime() error return is the cast above. See e.g.: + * http://pubs.opengroup.org/onlinepubs/009695299/functions/mktime.html + */ + goto mktime_error; + } + DUK_DDD(DUK_DDDPRINT("t1=%ld (utc), t2=%ld (local)", (long) t1, (long) t2)); + + /* Compute final offset in seconds, positive if local time ahead of + * UTC (returned value is UTC-to-local offset). + * + * difftime() returns a double, so coercion to int generates quite + * a lot of code. Direct subtraction is not portable, however. + * XXX: allow direct subtraction on known platforms. + */ +#if 0 + return (duk_int_t) (t2 - t1); +#endif + return (duk_int_t) difftime(t2, t1); + + mktime_error: + /* XXX: return something more useful, so that caller can throw? */ + DUK_D(DUK_DPRINT("mktime() failed, d=%lf", (double) d)); + return 0; +} +#endif /* DUK_USE_DATE_TZO_GMTIME */ + +#if defined(DUK_USE_DATE_PRS_STRPTIME) +DUK_INTERNAL duk_bool_t duk_bi_date_parse_string_strptime(duk_hthread *thr, const char *str) { + struct tm tm; + time_t t; + char buf[DUK__STRPTIME_BUF_SIZE]; + + /* Copy to buffer with slack to avoid Valgrind gripes from strptime. */ + DUK_ASSERT(str != NULL); + duk_memzero(buf, sizeof(buf)); /* valgrind whine without this */ + DUK_SNPRINTF(buf, sizeof(buf), "%s", (const char *) str); + buf[sizeof(buf) - 1] = (char) 0; + + DUK_DDD(DUK_DDDPRINT("parsing: '%s'", (const char *) buf)); + + duk_memzero(&tm, sizeof(tm)); + if (strptime((const char *) buf, "%c", &tm) != NULL) { + DUK_DDD(DUK_DDDPRINT("before mktime: tm={sec:%ld,min:%ld,hour:%ld,mday:%ld,mon:%ld,year:%ld," + "wday:%ld,yday:%ld,isdst:%ld}", + (long) tm.tm_sec, (long) tm.tm_min, (long) tm.tm_hour, + (long) tm.tm_mday, (long) tm.tm_mon, (long) tm.tm_year, + (long) tm.tm_wday, (long) tm.tm_yday, (long) tm.tm_isdst)); + tm.tm_isdst = -1; /* negative: dst info not available */ + + t = mktime(&tm); + DUK_DDD(DUK_DDDPRINT("mktime() -> %ld", (long) t)); + if (t >= 0) { + duk_push_number(thr, ((duk_double_t) t) * 1000.0); + return 1; + } + } + + return 0; +} +#endif /* DUK_USE_DATE_PRS_STRPTIME */ + +#if defined(DUK_USE_DATE_PRS_GETDATE) +DUK_INTERNAL duk_bool_t duk_bi_date_parse_string_getdate(duk_hthread *thr, const char *str) { + struct tm tm; + duk_small_int_t rc; + time_t t; + + /* For this to work, DATEMSK must be set, so this is not very + * convenient for an embeddable interpreter. + */ + + duk_memzero(&tm, sizeof(struct tm)); + rc = (duk_small_int_t) getdate_r(str, &tm); + DUK_DDD(DUK_DDDPRINT("getdate_r() -> %ld", (long) rc)); + + if (rc == 0) { + t = mktime(&tm); + DUK_DDD(DUK_DDDPRINT("mktime() -> %ld", (long) t)); + if (t >= 0) { + duk_push_number(thr, (duk_double_t) t); + return 1; + } + } + + return 0; +} +#endif /* DUK_USE_DATE_PRS_GETDATE */ + +#if defined(DUK_USE_DATE_FMT_STRFTIME) +DUK_INTERNAL duk_bool_t duk_bi_date_format_parts_strftime(duk_hthread *thr, duk_int_t *parts, duk_int_t tzoffset, duk_small_uint_t flags) { + char buf[DUK__STRFTIME_BUF_SIZE]; + struct tm tm; + const char *fmt; + + DUK_UNREF(tzoffset); + + /* If the platform doesn't support the entire ECMAScript range, we need + * to return 0 so that the caller can fall back to the default formatter. + * + * For now, assume that if time_t is 8 bytes or more, the whole ECMAScript + * range is supported. For smaller time_t values (4 bytes in practice), + * assumes that the signed 32-bit range is supported. + * + * XXX: detect this more correctly per platform. The size of time_t is + * probably not an accurate guarantee of strftime() supporting or not + * supporting a large time range (the full ECMAScript range). + */ + if (sizeof(time_t) < 8 && + (parts[DUK_DATE_IDX_YEAR] < 1970 || parts[DUK_DATE_IDX_YEAR] > 2037)) { + /* be paranoid for 32-bit time values (even avoiding negative ones) */ + return 0; + } + + duk_memzero(&tm, sizeof(tm)); + tm.tm_sec = parts[DUK_DATE_IDX_SECOND]; + tm.tm_min = parts[DUK_DATE_IDX_MINUTE]; + tm.tm_hour = parts[DUK_DATE_IDX_HOUR]; + tm.tm_mday = parts[DUK_DATE_IDX_DAY]; /* already one-based */ + tm.tm_mon = parts[DUK_DATE_IDX_MONTH] - 1; /* one-based -> zero-based */ + tm.tm_year = parts[DUK_DATE_IDX_YEAR] - 1900; + tm.tm_wday = parts[DUK_DATE_IDX_WEEKDAY]; + tm.tm_isdst = 0; + + duk_memzero(buf, sizeof(buf)); + if ((flags & DUK_DATE_FLAG_TOSTRING_DATE) && (flags & DUK_DATE_FLAG_TOSTRING_TIME)) { + fmt = "%c"; + } else if (flags & DUK_DATE_FLAG_TOSTRING_DATE) { + fmt = "%x"; + } else { + DUK_ASSERT(flags & DUK_DATE_FLAG_TOSTRING_TIME); + fmt = "%X"; + } + (void) strftime(buf, sizeof(buf) - 1, fmt, &tm); + DUK_ASSERT(buf[sizeof(buf) - 1] == 0); + + duk_push_string(thr, buf); + return 1; +} +#endif /* DUK_USE_DATE_FMT_STRFTIME */ + +#if defined(DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME) +DUK_INTERNAL duk_double_t duk_bi_date_get_monotonic_time_clock_gettime(void) { + struct timespec ts; + + if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { + return (duk_double_t) ts.tv_sec * 1000.0 + (duk_double_t) ts.tv_nsec / 1000000.0; + } else { + DUK_D(DUK_DPRINT("clock_gettime(CLOCK_MONOTONIC) failed")); + return 0.0; + } +} +#endif + +/* automatic undefs */ +#undef DUK__STRFTIME_BUF_SIZE +#undef DUK__STRPTIME_BUF_SIZE +#line 1 "duk_bi_date_windows.c" +/* + * Windows Date providers + * + * Platform specific links: + * + * - http://msdn.microsoft.com/en-us/library/windows/desktop/ms725473(v=vs.85).aspx + */ + +/* #include duk_internal.h -> already included */ + +/* The necessary #includes are in place in duk_config.h. */ + +#if defined(DUK_USE_DATE_NOW_WINDOWS) || defined(DUK_USE_DATE_TZO_WINDOWS) +/* Shared Windows helpers. */ +DUK_LOCAL void duk__convert_systime_to_ularge(const SYSTEMTIME *st, ULARGE_INTEGER *res) { + FILETIME ft; + if (SystemTimeToFileTime(st, &ft) == 0) { + DUK_D(DUK_DPRINT("SystemTimeToFileTime() failed, returning 0")); + res->QuadPart = 0; + } else { + res->LowPart = ft.dwLowDateTime; + res->HighPart = ft.dwHighDateTime; + } +} + +#if defined(DUK_USE_DATE_NOW_WINDOWS_SUBMS) +DUK_LOCAL void duk__convert_filetime_to_ularge(const FILETIME *ft, ULARGE_INTEGER *res) { + res->LowPart = ft->dwLowDateTime; + res->HighPart = ft->dwHighDateTime; +} +#endif /* DUK_USE_DATE_NOW_WINDOWS_SUBMS */ + +DUK_LOCAL void duk__set_systime_jan1970(SYSTEMTIME *st) { + duk_memzero((void *) st, sizeof(*st)); + st->wYear = 1970; + st->wMonth = 1; + st->wDayOfWeek = 4; /* not sure whether or not needed; Thursday */ + st->wDay = 1; + DUK_ASSERT(st->wHour == 0); + DUK_ASSERT(st->wMinute == 0); + DUK_ASSERT(st->wSecond == 0); + DUK_ASSERT(st->wMilliseconds == 0); +} +#endif /* defined(DUK_USE_DATE_NOW_WINDOWS) || defined(DUK_USE_DATE_TZO_WINDOWS) */ + +#if defined(DUK_USE_DATE_NOW_WINDOWS) +DUK_INTERNAL duk_double_t duk_bi_date_get_now_windows(void) { + /* Suggested step-by-step method from documentation of RtlTimeToSecondsSince1970: + * http://msdn.microsoft.com/en-us/library/windows/desktop/ms724928(v=vs.85).aspx + */ + SYSTEMTIME st1, st2; + ULARGE_INTEGER tmp1, tmp2; + + GetSystemTime(&st1); + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st1, &tmp1); + + duk__set_systime_jan1970(&st2); + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st2, &tmp2); + + /* Difference is in 100ns units, convert to milliseconds, keeping + * fractions since Duktape 2.2.0. This is only theoretical because + * SYSTEMTIME is limited to milliseconds. + */ + return (duk_double_t) ((LONGLONG) tmp1.QuadPart - (LONGLONG) tmp2.QuadPart) / 10000.0; +} +#endif /* DUK_USE_DATE_NOW_WINDOWS */ + +#if defined(DUK_USE_DATE_NOW_WINDOWS_SUBMS) +DUK_INTERNAL duk_double_t duk_bi_date_get_now_windows_subms(void) { + /* Variant of the basic algorithm using GetSystemTimePreciseAsFileTime() + * for more accuracy. + */ + FILETIME ft1; + SYSTEMTIME st2; + ULARGE_INTEGER tmp1, tmp2; + + GetSystemTimePreciseAsFileTime(&ft1); + duk__convert_filetime_to_ularge((const FILETIME *) &ft1, &tmp1); + + duk__set_systime_jan1970(&st2); + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st2, &tmp2); + + /* Difference is in 100ns units, convert to milliseconds, keeping + * fractions since Duktape 2.2.0. + */ + return (duk_double_t) ((LONGLONG) tmp1.QuadPart - (LONGLONG) tmp2.QuadPart) / 10000.0; +} +#endif /* DUK_USE_DATE_NOW_WINDOWS */ + +#if defined(DUK_USE_DATE_TZO_WINDOWS) +DUK_INTERNAL duk_int_t duk_bi_date_get_local_tzoffset_windows(duk_double_t d) { + SYSTEMTIME st1; + SYSTEMTIME st2; + SYSTEMTIME st3; + ULARGE_INTEGER tmp1; + ULARGE_INTEGER tmp2; + ULARGE_INTEGER tmp3; + FILETIME ft1; + + /* XXX: handling of timestamps outside Windows supported range. + * How does Windows deal with dates before 1600? Does windows + * support all ECMAScript years (like -200000 and +200000)? + * Should equivalent year mapping be used here too? If so, use + * a shared helper (currently integrated into timeval-to-parts). + */ + + /* Use the approach described in "Remarks" of FileTimeToLocalFileTime: + * http://msdn.microsoft.com/en-us/library/windows/desktop/ms724277(v=vs.85).aspx + */ + + duk__set_systime_jan1970(&st1); + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st1, &tmp1); + tmp2.QuadPart = (ULONGLONG) (d * 10000.0); /* millisec -> 100ns units since jan 1, 1970 */ + tmp2.QuadPart += tmp1.QuadPart; /* input 'd' in Windows UTC, 100ns units */ + + ft1.dwLowDateTime = tmp2.LowPart; + ft1.dwHighDateTime = tmp2.HighPart; + if (FileTimeToSystemTime((const FILETIME *) &ft1, &st2) == 0) { + DUK_D(DUK_DPRINT("FileTimeToSystemTime() failed, return tzoffset 0")); + return 0; + } + if (SystemTimeToTzSpecificLocalTime((LPTIME_ZONE_INFORMATION) NULL, &st2, &st3) == 0) { + DUK_D(DUK_DPRINT("SystemTimeToTzSpecificLocalTime() failed, return tzoffset 0")); + return 0; + } + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st3, &tmp3); + + /* Positive if local time ahead of UTC. */ + return (duk_int_t) (((LONGLONG) tmp3.QuadPart - (LONGLONG) tmp2.QuadPart) / DUK_I64_CONSTANT(10000000)); /* seconds */ +} +#endif /* DUK_USE_DATE_TZO_WINDOWS */ + +#if defined(DUK_USE_DATE_TZO_WINDOWS_NO_DST) +DUK_INTERNAL duk_int_t duk_bi_date_get_local_tzoffset_windows_no_dst(duk_double_t d) { + SYSTEMTIME st1; + SYSTEMTIME st2; + FILETIME ft1; + FILETIME ft2; + ULARGE_INTEGER tmp1; + ULARGE_INTEGER tmp2; + + /* Do a similar computation to duk_bi_date_get_local_tzoffset_windows + * but without accounting for daylight savings time. Use this on + * Windows platforms (like Durango) that don't support the + * SystemTimeToTzSpecificLocalTime() call. + */ + + /* current time not needed for this computation */ + DUK_UNREF(d); + + duk__set_systime_jan1970(&st1); + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st1, &tmp1); + + ft1.dwLowDateTime = tmp1.LowPart; + ft1.dwHighDateTime = tmp1.HighPart; + if (FileTimeToLocalFileTime((const FILETIME *) &ft1, &ft2) == 0) { + DUK_D(DUK_DPRINT("FileTimeToLocalFileTime() failed, return tzoffset 0")); + return 0; + } + if (FileTimeToSystemTime((const FILETIME *) &ft2, &st2) == 0) { + DUK_D(DUK_DPRINT("FileTimeToSystemTime() failed, return tzoffset 0")); + return 0; + } + duk__convert_systime_to_ularge((const SYSTEMTIME *) &st2, &tmp2); + + return (duk_int_t) (((LONGLONG) tmp2.QuadPart - (LONGLONG) tmp1.QuadPart) / DUK_I64_CONSTANT(10000000)); /* seconds */ +} +#endif /* DUK_USE_DATE_TZO_WINDOWS_NO_DST */ + +#if defined(DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC) +DUK_INTERNAL duk_double_t duk_bi_date_get_monotonic_time_windows_qpc(void) { + LARGE_INTEGER count, freq; + + /* There are legacy issues with QueryPerformanceCounter(): + * - Potential jumps: https://support.microsoft.com/en-us/help/274323/performance-counter-value-may-unexpectedly-leap-forward + * - Differences between cores (XP): https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx#qpc_support_in_windows_versions + * + * We avoid these by enabling QPC by default only for Vista or later. + */ + + if (QueryPerformanceCounter(&count) && QueryPerformanceFrequency(&freq)) { + /* XXX: QueryPerformanceFrequency() can be cached */ + return (duk_double_t) count.QuadPart / (duk_double_t) freq.QuadPart * 1000.0; + } else { + /* MSDN: "On systems that run Windows XP or later, the function + * will always succeed and will thus never return zero." + * Provide minimal error path just in case user enables this + * feature in pre-XP Windows. + */ + return 0.0; + } +} +#endif /* DUK_USE_GET_MONOTONIC_TIME_WINDOWS_QPC */ +#line 1 "duk_bi_duktape.c" +/* + * Duktape built-ins + * + * Size optimization note: it might seem that vararg multipurpose functions + * like fin(), enc(), and dec() are not very size optimal, but using a single + * user-visible ECMAScript function saves a lot of run-time footprint; each + * Function instance takes >100 bytes. Using a shared native helper and a + * 'magic' value won't save much if there are multiple Function instances + * anyway. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_DUKTAPE_BUILTIN) + +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_info(duk_hthread *thr) { + duk_inspect_value(thr, -1); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_act(duk_hthread *thr) { + duk_int_t level; + + level = duk_to_int(thr, 0); + duk_inspect_callstack_entry(thr, level); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_gc(duk_hthread *thr) { + duk_small_uint_t flags; + + flags = (duk_small_uint_t) duk_get_uint(thr, 0); + duk_heap_mark_and_sweep(thr->heap, flags); + + /* XXX: Not sure what the best return value would be in the API. + * Return true for now. + */ + duk_push_true(thr); + return 1; +} + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_fin(duk_hthread *thr) { + (void) duk_require_hobject(thr, 0); + if (duk_get_top(thr) >= 2) { + /* Set: currently a finalizer is disabled by setting it to + * undefined; this does not remove the property at the moment. + * The value could be type checked to be either a function + * or something else; if something else, the property could + * be deleted. Must use duk_set_finalizer() to keep + * DUK_HOBJECT_FLAG_HAVE_FINALIZER in sync. + */ + duk_set_top(thr, 2); + duk_set_finalizer(thr, 0); + return 0; + } else { + /* Get. */ + DUK_ASSERT(duk_get_top(thr) == 1); + duk_get_finalizer(thr, 0); + return 1; + } +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_enc(duk_hthread *thr) { + duk_hstring *h_str; + + /* Vararg function: must be careful to check/require arguments. + * The JSON helpers accept invalid indices and treat them like + * non-existent optional parameters. + */ + + h_str = duk_require_hstring(thr, 0); /* Could reject symbols, but no point: won't match comparisons. */ + duk_require_valid_index(thr, 1); + + if (h_str == DUK_HTHREAD_STRING_HEX(thr)) { + duk_set_top(thr, 2); + duk_hex_encode(thr, 1); + DUK_ASSERT_TOP(thr, 2); + } else if (h_str == DUK_HTHREAD_STRING_BASE64(thr)) { + duk_set_top(thr, 2); + duk_base64_encode(thr, 1); + DUK_ASSERT_TOP(thr, 2); +#if defined(DUK_USE_JSON_SUPPORT) && defined(DUK_USE_JX) + } else if (h_str == DUK_HTHREAD_STRING_JX(thr)) { + duk_bi_json_stringify_helper(thr, + 1 /*idx_value*/, + 2 /*idx_replacer*/, + 3 /*idx_space*/, + DUK_JSON_FLAG_EXT_CUSTOM | + DUK_JSON_FLAG_ASCII_ONLY | + DUK_JSON_FLAG_AVOID_KEY_QUOTES /*flags*/); +#endif +#if defined(DUK_USE_JSON_SUPPORT) && defined(DUK_USE_JC) + } else if (h_str == DUK_HTHREAD_STRING_JC(thr)) { + duk_bi_json_stringify_helper(thr, + 1 /*idx_value*/, + 2 /*idx_replacer*/, + 3 /*idx_space*/, + DUK_JSON_FLAG_EXT_COMPATIBLE | + DUK_JSON_FLAG_ASCII_ONLY /*flags*/); +#endif + } else { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_dec(duk_hthread *thr) { + duk_hstring *h_str; + + /* Vararg function: must be careful to check/require arguments. + * The JSON helpers accept invalid indices and treat them like + * non-existent optional parameters. + */ + + h_str = duk_require_hstring(thr, 0); /* Could reject symbols, but no point: won't match comparisons */ + duk_require_valid_index(thr, 1); + + if (h_str == DUK_HTHREAD_STRING_HEX(thr)) { + duk_set_top(thr, 2); + duk_hex_decode(thr, 1); + DUK_ASSERT_TOP(thr, 2); + } else if (h_str == DUK_HTHREAD_STRING_BASE64(thr)) { + duk_set_top(thr, 2); + duk_base64_decode(thr, 1); + DUK_ASSERT_TOP(thr, 2); +#if defined(DUK_USE_JSON_SUPPORT) && defined(DUK_USE_JX) + } else if (h_str == DUK_HTHREAD_STRING_JX(thr)) { + duk_bi_json_parse_helper(thr, + 1 /*idx_value*/, + 2 /*idx_replacer*/, + DUK_JSON_FLAG_EXT_CUSTOM /*flags*/); +#endif +#if defined(DUK_USE_JSON_SUPPORT) && defined(DUK_USE_JC) + } else if (h_str == DUK_HTHREAD_STRING_JC(thr)) { + duk_bi_json_parse_helper(thr, + 1 /*idx_value*/, + 2 /*idx_replacer*/, + DUK_JSON_FLAG_EXT_COMPATIBLE /*flags*/); +#endif + } else { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + return 1; +} + +/* + * Compact an object + */ + +DUK_INTERNAL duk_ret_t duk_bi_duktape_object_compact(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 1); + duk_compact(thr, 0); + return 1; /* return the argument object */ +} + +#endif /* DUK_USE_DUKTAPE_BUILTIN */ +#line 1 "duk_bi_encoding.c" +/* + * WHATWG Encoding API built-ins + * + * API specification: https://encoding.spec.whatwg.org/#api + * Web IDL: https://www.w3.org/TR/WebIDL/ + */ + +/* #include duk_internal.h -> already included */ + +/* + * Data structures for encoding/decoding + */ + +typedef struct { + duk_uint8_t *out; /* where to write next byte(s) */ + duk_codepoint_t lead; /* lead surrogate */ +} duk__encode_context; + +typedef struct { + /* UTF-8 decoding state */ + duk_codepoint_t codepoint; /* built up incrementally */ + duk_uint8_t upper; /* max value of next byte (decode error otherwise) */ + duk_uint8_t lower; /* min value of next byte (ditto) */ + duk_uint8_t needed; /* how many more bytes we need */ + duk_uint8_t bom_handled; /* BOM seen or no longer expected */ + + /* Decoder configuration */ + duk_uint8_t fatal; + duk_uint8_t ignore_bom; +} duk__decode_context; + +/* The signed duk_codepoint_t type is used to signal a decoded codepoint + * (>= 0) or various other states using negative values. + */ +#define DUK__CP_CONTINUE (-1) /* continue to next byte, no completed codepoint */ +#define DUK__CP_ERROR (-2) /* decoding error */ +#define DUK__CP_RETRY (-3) /* decoding error; retry last byte */ + +/* + * Raw helpers for encoding/decoding + */ + +/* Emit UTF-8 (= CESU-8) encoded U+FFFD (replacement char), i.e. ef bf bd. */ +DUK_LOCAL duk_uint8_t *duk__utf8_emit_repl(duk_uint8_t *ptr) { + *ptr++ = 0xef; + *ptr++ = 0xbf; + *ptr++ = 0xbd; + return ptr; +} + +DUK_LOCAL void duk__utf8_decode_init(duk__decode_context *dec_ctx) { + /* (Re)init the decoding state of 'dec_ctx' but leave decoder + * configuration fields untouched. + */ + dec_ctx->codepoint = 0x0000L; + dec_ctx->upper = 0xbf; + dec_ctx->lower = 0x80; + dec_ctx->needed = 0; + dec_ctx->bom_handled = 0; +} + +DUK_LOCAL duk_codepoint_t duk__utf8_decode_next(duk__decode_context *dec_ctx, duk_uint8_t x) { + /* + * UTF-8 algorithm based on the Encoding specification: + * https://encoding.spec.whatwg.org/#utf-8-decoder + * + * Two main states: decoding initial byte vs. decoding continuation + * bytes. Shortest length encoding is validated by restricting the + * allowed range of first continuation byte using 'lower' and 'upper'. + */ + + if (dec_ctx->needed == 0) { + /* process initial byte */ + if (x <= 0x7f) { + /* U+0000-U+007F, 1 byte (ASCII) */ + return (duk_codepoint_t) x; + } else if (x >= 0xc2 && x <= 0xdf) { + /* U+0080-U+07FF, 2 bytes */ + dec_ctx->needed = 1; + dec_ctx->codepoint = x & 0x1f; + DUK_ASSERT(dec_ctx->lower == 0x80); + DUK_ASSERT(dec_ctx->upper == 0xbf); + return DUK__CP_CONTINUE; + } else if (x >= 0xe0 && x <= 0xef) { + /* U+0800-U+FFFF, 3 bytes */ + if (x == 0xe0) { + dec_ctx->lower = 0xa0; + DUK_ASSERT(dec_ctx->upper == 0xbf); + } else if (x == 0xed) { + DUK_ASSERT(dec_ctx->lower == 0x80); + dec_ctx->upper = 0x9f; + } + dec_ctx->needed = 2; + dec_ctx->codepoint = x & 0x0f; + return DUK__CP_CONTINUE; + } else if (x >= 0xf0 && x <= 0xf4) { + /* U+010000-U+10FFFF, 4 bytes */ + if (x == 0xf0) { + dec_ctx->lower = 0x90; + DUK_ASSERT(dec_ctx->upper == 0xbf); + } else if (x == 0xf4) { + DUK_ASSERT(dec_ctx->lower == 0x80); + dec_ctx->upper = 0x8f; + } + dec_ctx->needed = 3; + dec_ctx->codepoint = x & 0x07; + return DUK__CP_CONTINUE; + } else { + /* not a legal initial byte */ + return DUK__CP_ERROR; + } + } else { + /* process continuation byte */ + if (x >= dec_ctx->lower && x <= dec_ctx->upper) { + dec_ctx->lower = 0x80; + dec_ctx->upper = 0xbf; + dec_ctx->codepoint = (dec_ctx->codepoint << 6) | (x & 0x3f); + if (--dec_ctx->needed > 0) { + /* need more bytes */ + return DUK__CP_CONTINUE; + } else { + /* got a codepoint */ + duk_codepoint_t ret; + DUK_ASSERT(dec_ctx->codepoint <= 0x10ffffL); /* Decoding rules guarantee. */ + ret = dec_ctx->codepoint; + dec_ctx->codepoint = 0x0000L; + dec_ctx->needed = 0; + return ret; + } + } else { + /* We just encountered an illegal UTF-8 continuation byte. This might + * be the initial byte of the next character; if we return a plain + * error status and the decoder is in replacement mode, the character + * will be masked. We still need to alert the caller to the error + * though. + */ + dec_ctx->codepoint = 0x0000L; + dec_ctx->needed = 0; + dec_ctx->lower = 0x80; + dec_ctx->upper = 0xbf; + return DUK__CP_RETRY; + } + } +} + +#if defined(DUK_USE_ENCODING_BUILTINS) +DUK_LOCAL void duk__utf8_encode_char(void *udata, duk_codepoint_t codepoint) { + duk__encode_context *enc_ctx; + + DUK_ASSERT(codepoint >= 0); + enc_ctx = (duk__encode_context *) udata; + DUK_ASSERT(enc_ctx != NULL); + +#if !defined(DUK_USE_PREFER_SIZE) + if (codepoint <= 0x7f && enc_ctx->lead == 0x0000L) { + /* Fast path for ASCII. */ + *enc_ctx->out++ = (duk_uint8_t) codepoint; + return; + } +#endif + + if (DUK_UNLIKELY(codepoint > 0x10ffffL)) { + /* cannot legally encode in UTF-8 */ + codepoint = DUK_UNICODE_CP_REPLACEMENT_CHARACTER; + } else if (codepoint >= 0xd800L && codepoint <= 0xdfffL) { + if (codepoint <= 0xdbffL) { + /* high surrogate */ + duk_codepoint_t prev_lead = enc_ctx->lead; + enc_ctx->lead = codepoint; + if (prev_lead == 0x0000L) { + /* high surrogate, no output */ + return; + } else { + /* consecutive high surrogates, consider first one unpaired */ + codepoint = DUK_UNICODE_CP_REPLACEMENT_CHARACTER; + } + } else { + /* low surrogate */ + if (enc_ctx->lead != 0x0000L) { + codepoint = (duk_codepoint_t) (0x010000L + ((enc_ctx->lead - 0xd800L) << 10) + (codepoint - 0xdc00L)); + enc_ctx->lead = 0x0000L; + } else { + /* unpaired low surrogate */ + DUK_ASSERT(enc_ctx->lead == 0x0000L); + codepoint = DUK_UNICODE_CP_REPLACEMENT_CHARACTER; + } + } + } else { + if (enc_ctx->lead != 0x0000L) { + /* unpaired high surrogate: emit replacement character and the input codepoint */ + enc_ctx->lead = 0x0000L; + enc_ctx->out = duk__utf8_emit_repl(enc_ctx->out); + } + } + + /* Codepoint may be original input, a decoded surrogate pair, or may + * have been replaced with U+FFFD. + */ + enc_ctx->out += duk_unicode_encode_xutf8((duk_ucodepoint_t) codepoint, enc_ctx->out); +} +#endif /* DUK_USE_ENCODING_BUILTINS */ + +/* Shared helper for buffer-to-string using a TextDecoder() compatible UTF-8 + * decoder. + */ +DUK_LOCAL duk_ret_t duk__decode_helper(duk_hthread *thr, duk__decode_context *dec_ctx) { + const duk_uint8_t *input; + duk_size_t len = 0; + duk_size_t len_tmp; + duk_bool_t stream = 0; + duk_codepoint_t codepoint; + duk_uint8_t *output; + const duk_uint8_t *in; + duk_uint8_t *out; + + DUK_ASSERT(dec_ctx != NULL); + + /* Careful with input buffer pointer: any side effects involving + * code execution (e.g. getters, coercion calls, and finalizers) + * may cause a resize and invalidate a pointer we've read. This + * is why the pointer is actually looked up at the last minute. + * Argument validation must still happen first to match WHATWG + * required side effect order. + */ + + if (duk_is_undefined(thr, 0)) { + duk_push_fixed_buffer_nozero(thr, 0); + duk_replace(thr, 0); + } + (void) duk_require_buffer_data(thr, 0, &len); /* Need 'len', avoid pointer. */ + + if (duk_check_type_mask(thr, 1, DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_NULL | + DUK_TYPE_MASK_NONE)) { + /* Use defaults, treat missing value like undefined. */ + } else { + duk_require_type_mask(thr, 1, DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_NULL | + DUK_TYPE_MASK_LIGHTFUNC | + DUK_TYPE_MASK_BUFFER | + DUK_TYPE_MASK_OBJECT); + if (duk_get_prop_literal(thr, 1, "stream")) { + stream = duk_to_boolean(thr, -1); + } + } + + /* Allowance is 3*len in the general case because all bytes may potentially + * become U+FFFD. If the first byte completes a non-BMP codepoint it will + * decode to a CESU-8 surrogate pair (6 bytes) so we allow 3 extra bytes to + * compensate: (1*3)+3 = 6. Non-BMP codepoints are safe otherwise because + * the 4->6 expansion is well under the 3x allowance. + * + * XXX: As with TextEncoder, need a better buffer allocation strategy here. + */ + if (len >= (DUK_HBUFFER_MAX_BYTELEN / 3) - 3) { + DUK_ERROR_TYPE(thr, DUK_STR_RESULT_TOO_LONG); + DUK_WO_NORETURN(return 0;); + } + output = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, 3 + (3 * len)); /* used parts will be always manually written over */ + + input = (const duk_uint8_t *) duk_get_buffer_data(thr, 0, &len_tmp); + DUK_ASSERT(input != NULL || len == 0); + if (DUK_UNLIKELY(len != len_tmp)) { + /* Very unlikely but possible: source buffer was resized by + * a side effect when fixed buffer was pushed. Output buffer + * may not be large enough to hold output, so just fail if + * length has changed. + */ + DUK_D(DUK_DPRINT("input buffer resized by side effect, fail")); + goto fail_type; + } + + /* From this point onwards it's critical that no side effect occur + * which may disturb 'input': finalizer execution, property accesses, + * active coercions, etc. Even an allocation related mark-and-sweep + * may affect the pointer because it may trigger a pending finalizer. + */ + + in = input; + out = output; + while (in < input + len) { + codepoint = duk__utf8_decode_next(dec_ctx, *in++); + if (codepoint < 0) { + if (codepoint == DUK__CP_CONTINUE) { + continue; + } + + /* Decoding error with or without retry. */ + DUK_ASSERT(codepoint == DUK__CP_ERROR || codepoint == DUK__CP_RETRY); + if (codepoint == DUK__CP_RETRY) { + --in; /* retry last byte */ + } + /* replacement mode: replace with U+FFFD */ + codepoint = DUK_UNICODE_CP_REPLACEMENT_CHARACTER; + if (dec_ctx->fatal) { + /* fatal mode: throw a TypeError */ + goto fail_type; + } + /* Continue with 'codepoint', Unicode replacement. */ + } + DUK_ASSERT(codepoint >= 0x0000L && codepoint <= 0x10ffffL); + + if (!dec_ctx->bom_handled) { + dec_ctx->bom_handled = 1; + if (codepoint == 0xfeffL && !dec_ctx->ignore_bom) { + continue; + } + } + + out += duk_unicode_encode_cesu8((duk_ucodepoint_t) codepoint, out); + DUK_ASSERT(out <= output + (3 + (3 * len))); + } + + if (!stream) { + if (dec_ctx->needed != 0) { + /* truncated sequence at end of buffer */ + if (dec_ctx->fatal) { + goto fail_type; + } else { + out += duk_unicode_encode_cesu8(DUK_UNICODE_CP_REPLACEMENT_CHARACTER, out); + DUK_ASSERT(out <= output + (3 + (3 * len))); + } + } + duk__utf8_decode_init(dec_ctx); /* Initialize decoding state for potential reuse. */ + } + + /* Output buffer is fixed and thus stable even if there had been + * side effects (which there shouldn't be). + */ + duk_push_lstring(thr, (const char *) output, (duk_size_t) (out - output)); + return 1; + + fail_type: + DUK_ERROR_TYPE(thr, DUK_STR_UTF8_DECODE_FAILED); + DUK_WO_NORETURN(return 0;); +} + +/* + * Built-in bindings + */ + +#if defined(DUK_USE_ENCODING_BUILTINS) +DUK_INTERNAL duk_ret_t duk_bi_textencoder_constructor(duk_hthread *thr) { + /* TextEncoder currently requires no persistent state, so the constructor + * does nothing on purpose. + */ + + duk_require_constructor_call(thr); + return 0; +} + +DUK_INTERNAL duk_ret_t duk_bi_textencoder_prototype_encoding_getter(duk_hthread *thr) { + duk_push_literal(thr, "utf-8"); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_textencoder_prototype_encode(duk_hthread *thr) { + duk__encode_context enc_ctx; + duk_size_t len; + duk_size_t final_len; + duk_uint8_t *output; + + DUK_ASSERT_TOP(thr, 1); + if (duk_is_undefined(thr, 0)) { + len = 0; + } else { + duk_hstring *h_input; + + h_input = duk_to_hstring(thr, 0); + DUK_ASSERT(h_input != NULL); + + len = (duk_size_t) DUK_HSTRING_GET_CHARLEN(h_input); + if (len >= DUK_HBUFFER_MAX_BYTELEN / 3) { + DUK_ERROR_TYPE(thr, DUK_STR_RESULT_TOO_LONG); + DUK_WO_NORETURN(return 0;); + } + } + + /* Allowance is 3*len because all bytes can potentially be replaced with + * U+FFFD -- which rather inconveniently encodes to 3 bytes in UTF-8. + * Rely on dynamic buffer data pointer stability: no other code has + * access to the data pointer. + * + * XXX: The buffer allocation strategy used here is rather inefficient. + * Maybe switch to a chunk-based strategy, or preprocess the string to + * figure out the space needed ahead of time? + */ + DUK_ASSERT(3 * len >= len); + output = (duk_uint8_t *) duk_push_dynamic_buffer(thr, 3 * len); + + if (len > 0) { + DUK_ASSERT(duk_is_string(thr, 0)); /* True if len > 0. */ + + /* XXX: duk_decode_string() is used to process the input + * string. For standard ECMAScript strings, represented + * internally as CESU-8, this is fine. However, behavior + * beyond CESU-8 is not very strict: codepoints using an + * extended form of UTF-8 are also accepted, and invalid + * codepoint sequences (which are allowed in Duktape strings) + * are not handled as well as they could (e.g. invalid + * continuation bytes may mask following codepoints). + * This is how ECMAScript code would also see such strings. + * Maybe replace duk_decode_string() with an explicit strict + * CESU-8 decoder here? + */ + enc_ctx.lead = 0x0000L; + enc_ctx.out = output; + duk_decode_string(thr, 0, duk__utf8_encode_char, (void *) &enc_ctx); + if (enc_ctx.lead != 0x0000L) { + /* unpaired high surrogate at end of string */ + enc_ctx.out = duk__utf8_emit_repl(enc_ctx.out); + DUK_ASSERT(enc_ctx.out <= output + (3 * len)); + } + + /* The output buffer is usually very much oversized, so shrink it to + * actually needed size. Pointer stability assumed up to this point. + */ + DUK_ASSERT_TOP(thr, 2); + DUK_ASSERT(output == (duk_uint8_t *) duk_get_buffer_data(thr, -1, NULL)); + + final_len = (duk_size_t) (enc_ctx.out - output); + duk_resize_buffer(thr, -1, final_len); + /* 'output' and 'enc_ctx.out' are potentially invalidated by the resize. */ + } else { + final_len = 0; + } + + /* Standard WHATWG output is a Uint8Array. Here the Uint8Array will + * be backed by a dynamic buffer which differs from e.g. Uint8Arrays + * created as 'new Uint8Array(N)'. ECMAScript code won't see the + * difference but C code will. When bufferobjects are not supported, + * returns a plain dynamic buffer. + */ +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + duk_push_buffer_object(thr, -1, 0, final_len, DUK_BUFOBJ_UINT8ARRAY); +#endif + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_textdecoder_constructor(duk_hthread *thr) { + duk__decode_context *dec_ctx; + duk_bool_t fatal = 0; + duk_bool_t ignore_bom = 0; + + DUK_ASSERT_TOP(thr, 2); + duk_require_constructor_call(thr); + if (!duk_is_undefined(thr, 0)) { + /* XXX: For now ignore 'label' (encoding identifier). */ + duk_to_string(thr, 0); + } + if (!duk_is_null_or_undefined(thr, 1)) { + if (duk_get_prop_literal(thr, 1, "fatal")) { + fatal = duk_to_boolean(thr, -1); + } + if (duk_get_prop_literal(thr, 1, "ignoreBOM")) { + ignore_bom = duk_to_boolean(thr, -1); + } + } + + duk_push_this(thr); + + /* The decode context is not assumed to be zeroed; all fields are + * initialized explicitly. + */ + dec_ctx = (duk__decode_context *) duk_push_fixed_buffer(thr, sizeof(duk__decode_context)); + dec_ctx->fatal = (duk_uint8_t) fatal; + dec_ctx->ignore_bom = (duk_uint8_t) ignore_bom; + duk__utf8_decode_init(dec_ctx); /* Initializes remaining fields. */ + + duk_put_prop_literal(thr, -2, DUK_INTERNAL_SYMBOL("Context")); + return 0; +} + +/* Get TextDecoder context from 'this'; leaves garbage on stack. */ +DUK_LOCAL duk__decode_context *duk__get_textdecoder_context(duk_hthread *thr) { + duk__decode_context *dec_ctx; + duk_push_this(thr); + duk_get_prop_literal(thr, -1, DUK_INTERNAL_SYMBOL("Context")); + dec_ctx = (duk__decode_context *) duk_require_buffer(thr, -1, NULL); + DUK_ASSERT(dec_ctx != NULL); + return dec_ctx; +} + +DUK_INTERNAL duk_ret_t duk_bi_textdecoder_prototype_shared_getter(duk_hthread *thr) { + duk__decode_context *dec_ctx; + duk_int_t magic; + + dec_ctx = duk__get_textdecoder_context(thr); + magic = duk_get_current_magic(thr); + switch (magic) { + case 0: + /* Encoding is now fixed, so _Context lookup is only needed to + * validate the 'this' binding (TypeError if not TextDecoder-like). + */ + duk_push_literal(thr, "utf-8"); + break; + case 1: + duk_push_boolean(thr, dec_ctx->fatal); + break; + default: + duk_push_boolean(thr, dec_ctx->ignore_bom); + break; + } + + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_textdecoder_prototype_decode(duk_hthread *thr) { + duk__decode_context *dec_ctx; + + dec_ctx = duk__get_textdecoder_context(thr); + return duk__decode_helper(thr, dec_ctx); +} +#endif /* DUK_USE_ENCODING_BUILTINS */ + +/* + * Internal helper for Node.js Buffer + */ + +/* Internal helper used for Node.js Buffer .toString(). Value stack convention + * is currently odd: it mimics TextDecoder .decode() so that argument must be at + * index 0, and decode options (not present for Buffer) at index 1. Return value + * is a Duktape/C function return value. + */ +DUK_INTERNAL duk_ret_t duk_textdecoder_decode_utf8_nodejs(duk_hthread *thr) { + duk__decode_context dec_ctx; + + dec_ctx.fatal = 0; /* use replacement chars */ + dec_ctx.ignore_bom = 1; /* ignore BOMs (matches Node.js Buffer .toString()) */ + duk__utf8_decode_init(&dec_ctx); + + return duk__decode_helper(thr, &dec_ctx); +} + +/* automatic undefs */ +#undef DUK__CP_CONTINUE +#undef DUK__CP_ERROR +#undef DUK__CP_RETRY +#line 1 "duk_bi_error.c" +/* + * Error built-ins + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL duk_ret_t duk_bi_error_constructor_shared(duk_hthread *thr) { + /* Behavior for constructor and non-constructor call is + * the same except for augmenting the created error. When + * called as a constructor, the caller (duk_new()) will handle + * augmentation; when called as normal function, we need to do + * it here. + */ + + duk_small_int_t bidx_prototype = duk_get_current_magic(thr); + + /* same for both error and each subclass like TypeError */ + duk_uint_t flags_and_class = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ERROR); + + (void) duk_push_object_helper(thr, flags_and_class, bidx_prototype); + + /* If message is undefined, the own property 'message' is not set at + * all to save property space. An empty message is inherited anyway. + */ + if (!duk_is_undefined(thr, 0)) { + duk_to_string(thr, 0); + duk_dup_0(thr); /* [ message error message ] */ + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_MESSAGE, DUK_PROPDESC_FLAGS_WC); + } + + /* Augment the error if called as a normal function. __FILE__ and __LINE__ + * are not desirable in this case. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) + if (!duk_is_constructor_call(thr)) { + duk_err_augment_error_create(thr, thr, NULL, 0, DUK_AUGMENT_FLAG_NOBLAME_FILELINE); + } +#endif + + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_to_string(duk_hthread *thr) { + /* XXX: optimize with more direct internal access */ + + duk_push_this(thr); + (void) duk_require_hobject_promote_mask(thr, -1, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + + /* [ ... this ] */ + + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_NAME); + if (duk_is_undefined(thr, -1)) { + duk_pop(thr); + duk_push_literal(thr, "Error"); + } else { + duk_to_string(thr, -1); + } + + /* [ ... this name ] */ + + /* XXX: Are steps 6 and 7 in E5 Section 15.11.4.4 duplicated by + * accident or are they actually needed? The first ToString() + * could conceivably return 'undefined'. + */ + duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_MESSAGE); + if (duk_is_undefined(thr, -1)) { + duk_pop(thr); + duk_push_hstring_empty(thr); + } else { + duk_to_string(thr, -1); + } + + /* [ ... this name message ] */ + + if (duk_get_length(thr, -2) == 0) { + /* name is empty -> return message */ + return 1; + } + if (duk_get_length(thr, -1) == 0) { + /* message is empty -> return name */ + duk_pop(thr); + return 1; + } + duk_push_literal(thr, ": "); + duk_insert(thr, -2); /* ... name ': ' message */ + duk_concat(thr, 3); + + return 1; +} + +#if defined(DUK_USE_TRACEBACKS) + +/* + * Traceback handling + * + * The unified helper decodes the traceback and produces various requested + * outputs. It should be optimized for size, and may leave garbage on stack, + * only the topmost return value matters. For instance, traceback separator + * and decoded strings are pushed even when looking for filename only. + * + * NOTE: although _Tracedata is an internal property, user code can currently + * write to the array (or replace it with something other than an array). + * The code below must tolerate arbitrary _Tracedata. It can throw errors + * etc, but cannot cause a segfault or memory unsafe behavior. + */ + +/* constants arbitrary, chosen for small loads */ +#define DUK__OUTPUT_TYPE_TRACEBACK (-1) +#define DUK__OUTPUT_TYPE_FILENAME 0 +#define DUK__OUTPUT_TYPE_LINENUMBER 1 + +DUK_LOCAL duk_ret_t duk__error_getter_helper(duk_hthread *thr, duk_small_int_t output_type) { + duk_idx_t idx_td; + duk_small_int_t i; /* traceback depth fits into 16 bits */ + duk_small_int_t t; /* stack type fits into 16 bits */ + duk_small_int_t count_func = 0; /* traceback depth ensures fits into 16 bits */ + const char *str_tailcall = " tailcall"; + const char *str_strict = " strict"; + const char *str_construct = " construct"; + const char *str_prevyield = " preventsyield"; + const char *str_directeval = " directeval"; + const char *str_empty = ""; + + DUK_ASSERT_TOP(thr, 0); /* fixed arg count */ + + duk_push_this(thr); + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_TRACEDATA); + idx_td = duk_get_top_index(thr); + + duk_push_hstring_stridx(thr, DUK_STRIDX_NEWLINE_4SPACE); + duk_push_this(thr); + + /* [ ... this tracedata sep this ] */ + + /* XXX: skip null filename? */ + + if (duk_check_type(thr, idx_td, DUK_TYPE_OBJECT)) { + /* Current tracedata contains 2 entries per callstack entry. */ + for (i = 0; ; i += 2) { + duk_int_t pc; + duk_uint_t line; + duk_uint_t flags; + duk_double_t d; + const char *funcname; + const char *filename; + duk_hobject *h_func; + duk_hstring *h_name; + + duk_require_stack(thr, 5); + duk_get_prop_index(thr, idx_td, (duk_uarridx_t) i); + duk_get_prop_index(thr, idx_td, (duk_uarridx_t) (i + 1)); + d = duk_to_number_m1(thr); + pc = duk_double_to_int_t(DUK_FMOD(d, DUK_DOUBLE_2TO32)); + flags = duk_double_to_uint_t(DUK_FLOOR(d / DUK_DOUBLE_2TO32)); + t = (duk_small_int_t) duk_get_type(thr, -2); + + if (t == DUK_TYPE_OBJECT || t == DUK_TYPE_LIGHTFUNC) { + /* + * ECMAScript/native function call or lightfunc call + */ + + count_func++; + + /* [ ... v1(func) v2(pc+flags) ] */ + + /* These may be systematically omitted by Duktape + * with certain config options, but allow user to + * set them on a case-by-case basis. + */ + duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_NAME); + duk_get_prop_stridx_short(thr, -3, DUK_STRIDX_FILE_NAME); + +#if defined(DUK_USE_PC2LINE) + line = (duk_uint_t) duk_hobject_pc2line_query(thr, -4, (duk_uint_fast32_t) pc); +#else + line = 0; +#endif + + /* [ ... v1 v2 name filename ] */ + + /* When looking for .fileName/.lineNumber, blame first + * function which has a .fileName. + */ + if (duk_is_string_notsymbol(thr, -1)) { + if (output_type == DUK__OUTPUT_TYPE_FILENAME) { + return 1; + } else if (output_type == DUK__OUTPUT_TYPE_LINENUMBER) { + duk_push_uint(thr, line); + return 1; + } + } + + /* XXX: Change 'anon' handling here too, to use empty string for anonymous functions? */ + /* XXX: Could be improved by coercing to a readable duk_tval (especially string escaping) */ + h_name = duk_get_hstring_notsymbol(thr, -2); /* may be NULL */ + funcname = (h_name == NULL || h_name == DUK_HTHREAD_STRING_EMPTY_STRING(thr)) ? + "[anon]" : (const char *) DUK_HSTRING_GET_DATA(h_name); + filename = duk_get_string_notsymbol(thr, -1); + filename = filename ? filename : ""; + DUK_ASSERT(funcname != NULL); + DUK_ASSERT(filename != NULL); + + h_func = duk_get_hobject(thr, -4); /* NULL for lightfunc */ + + if (h_func == NULL) { + duk_push_sprintf(thr, "at %s light%s%s%s%s%s", + (const char *) funcname, + (const char *) ((flags & DUK_ACT_FLAG_STRICT) ? str_strict : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_TAILCALLED) ? str_tailcall : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_CONSTRUCT) ? str_construct : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_DIRECT_EVAL) ? str_directeval : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_PREVENT_YIELD) ? str_prevyield : str_empty)); + } else if (DUK_HOBJECT_HAS_NATFUNC(h_func)) { + duk_push_sprintf(thr, "at %s (%s) native%s%s%s%s%s", + (const char *) funcname, + (const char *) filename, + (const char *) ((flags & DUK_ACT_FLAG_STRICT) ? str_strict : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_TAILCALLED) ? str_tailcall : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_CONSTRUCT) ? str_construct : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_DIRECT_EVAL) ? str_directeval : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_PREVENT_YIELD) ? str_prevyield : str_empty)); + } else { + duk_push_sprintf(thr, "at %s (%s:%lu)%s%s%s%s%s", + (const char *) funcname, + (const char *) filename, + (unsigned long) line, + (const char *) ((flags & DUK_ACT_FLAG_STRICT) ? str_strict : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_TAILCALLED) ? str_tailcall : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_CONSTRUCT) ? str_construct : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_DIRECT_EVAL) ? str_directeval : str_empty), + (const char *) ((flags & DUK_ACT_FLAG_PREVENT_YIELD) ? str_prevyield : str_empty)); + } + duk_replace(thr, -5); /* [ ... v1 v2 name filename str ] -> [ ... str v2 name filename ] */ + duk_pop_3(thr); /* -> [ ... str ] */ + } else if (t == DUK_TYPE_STRING) { + const char *str_file; + + /* + * __FILE__ / __LINE__ entry, here 'pc' is line number directly. + * Sometimes __FILE__ / __LINE__ is reported as the source for + * the error (fileName, lineNumber), sometimes not. + */ + + /* [ ... v1(filename) v2(line+flags) ] */ + + /* When looking for .fileName/.lineNumber, blame compilation + * or C call site unless flagged not to do so. + */ + if (!(flags & DUK_TB_FLAG_NOBLAME_FILELINE)) { + if (output_type == DUK__OUTPUT_TYPE_FILENAME) { + duk_pop(thr); + return 1; + } else if (output_type == DUK__OUTPUT_TYPE_LINENUMBER) { + duk_push_int(thr, pc); + return 1; + } + } + + /* Tracedata is trusted but avoid any risk of using a NULL + * for %s format because it has undefined behavior. Symbols + * don't need to be explicitly rejected as they pose no memory + * safety issues. + */ + str_file = (const char *) duk_get_string(thr, -2); + duk_push_sprintf(thr, "at [anon] (%s:%ld) internal", + (const char *) (str_file ? str_file : "null"), (long) pc); + duk_replace(thr, -3); /* [ ... v1 v2 str ] -> [ ... str v2 ] */ + duk_pop(thr); /* -> [ ... str ] */ + } else { + /* unknown, ignore */ + duk_pop_2(thr); + break; + } + } + + if (count_func >= DUK_USE_TRACEBACK_DEPTH) { + /* Possibly truncated; there is no explicit truncation + * marker so this is the best we can do. + */ + + duk_push_hstring_stridx(thr, DUK_STRIDX_BRACKETED_ELLIPSIS); + } + } + + /* [ ... this tracedata sep this str1 ... strN ] */ + + if (output_type != DUK__OUTPUT_TYPE_TRACEBACK) { + return 0; + } else { + /* The 'this' after 'sep' will get ToString() coerced by + * duk_join() automatically. We don't want to do that + * coercion when providing .fileName or .lineNumber (GH-254). + */ + duk_join(thr, duk_get_top(thr) - (idx_td + 2) /*count, not including sep*/); + return 1; + } +} + +/* XXX: Output type could be encoded into native function 'magic' value to + * save space. For setters the stridx could be encoded into 'magic'. + */ + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_stack_getter(duk_hthread *thr) { + return duk__error_getter_helper(thr, DUK__OUTPUT_TYPE_TRACEBACK); +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_filename_getter(duk_hthread *thr) { + return duk__error_getter_helper(thr, DUK__OUTPUT_TYPE_FILENAME); +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_linenumber_getter(duk_hthread *thr) { + return duk__error_getter_helper(thr, DUK__OUTPUT_TYPE_LINENUMBER); +} + +#else /* DUK_USE_TRACEBACKS */ + +/* + * Traceback handling when tracebacks disabled. + * + * The fileName / lineNumber stubs are now necessary because built-in + * data will include the accessor properties in Error.prototype. If those + * are removed for builds without tracebacks, these can also be removed. + * 'stack' should still be present and produce a ToString() equivalent: + * this is useful for user code which prints a stacktrace and expects to + * see something useful. A normal stacktrace also begins with a ToString() + * of the error so this makes sense. + */ + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_stack_getter(duk_hthread *thr) { + /* XXX: remove this native function and map 'stack' accessor + * to the toString() implementation directly. + */ + return duk_bi_error_prototype_to_string(thr); +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_filename_getter(duk_hthread *thr) { + DUK_UNREF(thr); + return 0; +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_linenumber_getter(duk_hthread *thr) { + DUK_UNREF(thr); + return 0; +} + +#endif /* DUK_USE_TRACEBACKS */ + +DUK_LOCAL duk_ret_t duk__error_setter_helper(duk_hthread *thr, duk_small_uint_t stridx_key) { + /* Attempt to write 'stack', 'fileName', 'lineNumber' works as if + * user code called Object.defineProperty() to create an overriding + * own property. This allows user code to overwrite .fileName etc + * intuitively as e.g. "err.fileName = 'dummy'" as one might expect. + * See https://github.com/svaarala/duktape/issues/387. + */ + + DUK_ASSERT_TOP(thr, 1); /* fixed arg count: value */ + + duk_push_this(thr); + duk_push_hstring_stridx(thr, stridx_key); + duk_dup_0(thr); + + /* [ ... obj key value ] */ + + DUK_DD(DUK_DDPRINT("error setter: %!T %!T %!T", + duk_get_tval(thr, -3), duk_get_tval(thr, -2), duk_get_tval(thr, -1))); + + duk_def_prop(thr, -3, DUK_DEFPROP_HAVE_VALUE | + DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_WRITABLE | + DUK_DEFPROP_HAVE_ENUMERABLE | /*not enumerable*/ + DUK_DEFPROP_HAVE_CONFIGURABLE | DUK_DEFPROP_CONFIGURABLE); + return 0; +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_stack_setter(duk_hthread *thr) { + return duk__error_setter_helper(thr, DUK_STRIDX_STACK); +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_filename_setter(duk_hthread *thr) { + return duk__error_setter_helper(thr, DUK_STRIDX_FILE_NAME); +} + +DUK_INTERNAL duk_ret_t duk_bi_error_prototype_linenumber_setter(duk_hthread *thr) { + return duk__error_setter_helper(thr, DUK_STRIDX_LINE_NUMBER); +} + +/* automatic undefs */ +#undef DUK__OUTPUT_TYPE_FILENAME +#undef DUK__OUTPUT_TYPE_LINENUMBER +#undef DUK__OUTPUT_TYPE_TRACEBACK +#line 1 "duk_bi_function.c" +/* + * Function built-ins + */ + +/* #include duk_internal.h -> already included */ + +/* Needed even when Function built-in is disabled. */ +DUK_INTERNAL duk_ret_t duk_bi_function_prototype(duk_hthread *thr) { + /* ignore arguments, return undefined (E5 Section 15.3.4) */ + DUK_UNREF(thr); + return 0; +} + +#if defined(DUK_USE_FUNCTION_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_function_constructor(duk_hthread *thr) { + duk_hstring *h_sourcecode; + duk_idx_t nargs; + duk_idx_t i; + duk_small_uint_t comp_flags; + duk_hcompfunc *func; + duk_hobject *outer_lex_env; + duk_hobject *outer_var_env; + + /* normal and constructor calls have identical semantics */ + + nargs = duk_get_top(thr); + for (i = 0; i < nargs; i++) { + duk_to_string(thr, i); /* Rejects Symbols during coercion. */ + } + + if (nargs == 0) { + duk_push_hstring_empty(thr); + duk_push_hstring_empty(thr); + } else if (nargs == 1) { + /* XXX: cover this with the generic >1 case? */ + duk_push_hstring_empty(thr); + } else { + duk_insert(thr, 0); /* [ arg1 ... argN-1 body] -> [body arg1 ... argN-1] */ + duk_push_literal(thr, ","); + duk_insert(thr, 1); + duk_join(thr, nargs - 1); + } + + /* [ body formals ], formals is comma separated list that needs to be parsed */ + + DUK_ASSERT_TOP(thr, 2); + + /* XXX: this placeholder is not always correct, but use for now. + * It will fail in corner cases; see test-dev-func-cons-args.js. + */ + duk_push_literal(thr, "function("); + duk_dup_1(thr); + duk_push_literal(thr, "){"); + duk_dup_0(thr); + duk_push_literal(thr, "\n}"); /* Newline is important to handle trailing // comment. */ + duk_concat(thr, 5); + + /* [ body formals source ] */ + + DUK_ASSERT_TOP(thr, 3); + + /* strictness is not inherited, intentional */ + comp_flags = DUK_COMPILE_FUNCEXPR; + + duk_push_hstring_stridx(thr, DUK_STRIDX_COMPILE); /* XXX: copy from caller? */ /* XXX: ignored now */ + h_sourcecode = duk_require_hstring(thr, -2); /* no symbol check needed; -2 is concat'd code */ + duk_js_compile(thr, + (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_sourcecode), + (duk_size_t) DUK_HSTRING_GET_BYTELEN(h_sourcecode), + comp_flags); + + /* Force .name to 'anonymous' (ES2015). */ + duk_push_literal(thr, "anonymous"); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_C); + + func = (duk_hcompfunc *) duk_known_hobject(thr, -1); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) func)); + DUK_ASSERT(DUK_HOBJECT_HAS_CONSTRUCTABLE((duk_hobject *) func)); + + /* [ body formals source template ] */ + + /* only outer_lex_env matters, as functions always get a new + * variable declaration environment. + */ + + outer_lex_env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + outer_var_env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + + duk_js_push_closure(thr, func, outer_var_env, outer_lex_env, 1 /*add_auto_proto*/); + + /* [ body formals source template closure ] */ + + return 1; +} +#endif /* DUK_USE_FUNCTION_BUILTIN */ + +#if defined(DUK_USE_FUNCTION_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_function_prototype_to_string(duk_hthread *thr) { + duk_tval *tv; + + /* + * E5 Section 15.3.4.2 places few requirements on the output of + * this function: the result is implementation dependent, must + * follow FunctionDeclaration syntax (in particular, must have a + * name even for anonymous functions or functions with empty name). + * The output does NOT need to compile into anything useful. + * + * E6 Section 19.2.3.5 changes the requirements completely: the + * result must either eval() to a functionally equivalent object + * OR eval() to a SyntaxError. + * + * We opt for the SyntaxError approach for now, with a syntax that + * mimics V8's native function syntax: + * + * 'function cos() { [native code] }' + * + * but extended with [ecmascript code], [bound code], and + * [lightfunc code]. + */ + + duk_push_this(thr); + tv = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *obj = DUK_TVAL_GET_OBJECT(tv); + const char *func_name; + + /* Function name: missing/undefined is mapped to empty string, + * otherwise coerce to string. No handling for invalid identifier + * characters or e.g. '{' in the function name. This doesn't + * really matter as long as a SyntaxError results. Technically + * if the name contained a suitable prefix followed by '//' it + * might cause the result to parse without error. + */ + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_NAME); + if (duk_is_undefined(thr, -1)) { + func_name = ""; + } else { + func_name = duk_to_string(thr, -1); + DUK_ASSERT(func_name != NULL); + } + + if (DUK_HOBJECT_IS_COMPFUNC(obj)) { + duk_push_sprintf(thr, "function %s() { [ecmascript code] }", (const char *) func_name); + } else if (DUK_HOBJECT_IS_NATFUNC(obj)) { + duk_push_sprintf(thr, "function %s() { [native code] }", (const char *) func_name); + } else if (DUK_HOBJECT_IS_BOUNDFUNC(obj)) { + duk_push_sprintf(thr, "function %s() { [bound code] }", (const char *) func_name); + } else { + goto type_error; + } + } else if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + duk_push_lightfunc_tostring(thr, tv); + } else { + goto type_error; + } + + return 1; + + type_error: + DUK_DCERROR_TYPE_INVALID_ARGS(thr); +} +#endif + +/* Always present because the native function pointer is needed in call + * handling. + */ +DUK_INTERNAL duk_ret_t duk_bi_function_prototype_call(duk_hthread *thr) { + /* .call() is dealt with in call handling by simulating its + * effects so this function is actually never called. + */ + DUK_UNREF(thr); + return DUK_RET_TYPE_ERROR; +} + +DUK_INTERNAL duk_ret_t duk_bi_function_prototype_apply(duk_hthread *thr) { + /* Like .call(), never actually called. */ + DUK_UNREF(thr); + return DUK_RET_TYPE_ERROR; +} + +DUK_INTERNAL duk_ret_t duk_bi_reflect_apply(duk_hthread *thr) { + /* Like .call(), never actually called. */ + DUK_UNREF(thr); + return DUK_RET_TYPE_ERROR; +} + +DUK_INTERNAL duk_ret_t duk_bi_reflect_construct(duk_hthread *thr) { + /* Like .call(), never actually called. */ + DUK_UNREF(thr); + return DUK_RET_TYPE_ERROR; +} + +#if defined(DUK_USE_FUNCTION_BUILTIN) +/* Create a bound function which points to a target function which may + * be bound or non-bound. If the target is bound, the argument lists + * and 'this' binding of the functions are merged and the resulting + * function points directly to the non-bound target. + */ +DUK_INTERNAL duk_ret_t duk_bi_function_prototype_bind(duk_hthread *thr) { + duk_hboundfunc *h_bound; + duk_idx_t nargs; /* bound args, not counting 'this' binding */ + duk_idx_t bound_nargs; + duk_int_t bound_len; + duk_tval *tv_prevbound; + duk_idx_t n_prevbound; + duk_tval *tv_res; + duk_tval *tv_tmp; + + /* XXX: C API call, e.g. duk_push_bound_function(thr, target_idx, nargs); */ + + /* Vararg function, careful arg handling, e.g. thisArg may not + * be present. + */ + nargs = duk_get_top(thr) - 1; /* actual args, not counting 'this' binding */ + if (nargs < 0) { + nargs++; + duk_push_undefined(thr); + } + DUK_ASSERT(nargs >= 0); + + /* Limit 'nargs' for bound functions to guarantee arithmetic + * below will never wrap. + */ + if (nargs > (duk_idx_t) DUK_HBOUNDFUNC_MAX_ARGS) { + DUK_DCERROR_RANGE_INVALID_COUNT(thr); + } + + duk_push_this(thr); + duk_require_callable(thr, -1); + + /* [ thisArg arg1 ... argN func ] (thisArg+args == nargs+1 total) */ + DUK_ASSERT_TOP(thr, nargs + 2); + + /* Create bound function object. */ + h_bound = duk_push_hboundfunc(thr); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&h_bound->target)); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&h_bound->this_binding)); + DUK_ASSERT(h_bound->args == NULL); + DUK_ASSERT(h_bound->nargs == 0); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) h_bound) == NULL); + + /* [ thisArg arg1 ... argN func boundFunc ] */ + + /* If the target is a bound function, argument lists must be + * merged. The 'this' binding closest to the target function + * wins because in call handling the 'this' gets replaced over + * and over again until we call the non-bound function. + */ + tv_prevbound = NULL; + n_prevbound = 0; + tv_tmp = DUK_GET_TVAL_POSIDX(thr, 0); + DUK_TVAL_SET_TVAL(&h_bound->this_binding, tv_tmp); + tv_tmp = DUK_GET_TVAL_NEGIDX(thr, -2); + DUK_TVAL_SET_TVAL(&h_bound->target, tv_tmp); + + if (DUK_TVAL_IS_OBJECT(tv_tmp)) { + duk_hobject *h_target; + duk_hobject *bound_proto; + + h_target = DUK_TVAL_GET_OBJECT(tv_tmp); + DUK_ASSERT(DUK_HOBJECT_IS_CALLABLE(h_target)); + + /* Internal prototype must be copied from the target. + * For lightfuncs Function.prototype is used and is already + * in place. + */ + bound_proto = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_target); + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) h_bound, bound_proto); + + /* The 'strict' flag is copied to get the special [[Get]] of E5.1 + * Section 15.3.5.4 to apply when a 'caller' value is a strict bound + * function. Not sure if this is correct, because the specification + * is a bit ambiguous on this point but it would make sense. + */ + /* Strictness is inherited from target. */ + if (DUK_HOBJECT_HAS_STRICT(h_target)) { + DUK_HOBJECT_SET_STRICT((duk_hobject *) h_bound); + } + + if (DUK_HOBJECT_HAS_BOUNDFUNC(h_target)) { + duk_hboundfunc *h_boundtarget; + + h_boundtarget = (duk_hboundfunc *) (void *) h_target; + + /* The final function should always be non-bound, unless + * there's a bug in the internals. Assert for it. + */ + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(&h_boundtarget->target) || + (DUK_TVAL_IS_OBJECT(&h_boundtarget->target) && + DUK_HOBJECT_IS_CALLABLE(DUK_TVAL_GET_OBJECT(&h_boundtarget->target)) && + !DUK_HOBJECT_IS_BOUNDFUNC(DUK_TVAL_GET_OBJECT(&h_boundtarget->target)))); + + DUK_TVAL_SET_TVAL(&h_bound->target, &h_boundtarget->target); + DUK_TVAL_SET_TVAL(&h_bound->this_binding, &h_boundtarget->this_binding); + + tv_prevbound = h_boundtarget->args; + n_prevbound = h_boundtarget->nargs; + } + } else { + /* Lightfuncs are always strict. */ + duk_hobject *bound_proto; + + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(tv_tmp)); + DUK_HOBJECT_SET_STRICT((duk_hobject *) h_bound); + bound_proto = thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]; + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) h_bound, bound_proto); + } + + DUK_TVAL_INCREF(thr, &h_bound->target); /* old values undefined, no decref needed */ + DUK_TVAL_INCREF(thr, &h_bound->this_binding); + + bound_nargs = n_prevbound + nargs; + if (bound_nargs > (duk_idx_t) DUK_HBOUNDFUNC_MAX_ARGS) { + DUK_DCERROR_RANGE_INVALID_COUNT(thr); + } + tv_res = (duk_tval *) DUK_ALLOC_CHECKED(thr, ((duk_size_t) bound_nargs) * sizeof(duk_tval)); + DUK_ASSERT(tv_res != NULL || bound_nargs == 0); + DUK_ASSERT(h_bound->args == NULL); + DUK_ASSERT(h_bound->nargs == 0); + h_bound->args = tv_res; + h_bound->nargs = bound_nargs; + + DUK_ASSERT(n_prevbound >= 0); + duk_copy_tvals_incref(thr, tv_res, tv_prevbound, (duk_size_t) n_prevbound); + DUK_ASSERT(nargs >= 0); + duk_copy_tvals_incref(thr, tv_res + n_prevbound, DUK_GET_TVAL_POSIDX(thr, 1), (duk_size_t) nargs); + + /* [ thisArg arg1 ... argN func boundFunc ] */ + + /* Bound function 'length' property is interesting. + * For lightfuncs, simply read the virtual property. + */ + duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH); + bound_len = duk_get_int(thr, -1); /* ES2015: no coercion */ + if (bound_len < nargs) { + bound_len = 0; + } else { + bound_len -= nargs; + } + if (sizeof(duk_int_t) > 4 && bound_len > (duk_int_t) DUK_UINT32_MAX) { + bound_len = (duk_int_t) DUK_UINT32_MAX; + } + duk_pop(thr); + DUK_ASSERT(bound_len >= 0); + tv_tmp = thr->valstack_top++; + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv_tmp)); + DUK_ASSERT(!DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv_tmp)); + DUK_TVAL_SET_U32(tv_tmp, (duk_uint32_t) bound_len); /* in-place update, fastint */ + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_C); /* attrs in E6 Section 9.2.4 */ + + /* XXX: could these be virtual? */ + /* Caller and arguments must use the same thrower, [[ThrowTypeError]]. */ + duk_xdef_prop_stridx_thrower(thr, -1, DUK_STRIDX_CALLER); + duk_xdef_prop_stridx_thrower(thr, -1, DUK_STRIDX_LC_ARGUMENTS); + + /* Function name and fileName (non-standard). */ + duk_push_literal(thr, "bound "); /* ES2015 19.2.3.2. */ + duk_get_prop_stridx(thr, -3, DUK_STRIDX_NAME); + if (!duk_is_string_notsymbol(thr, -1)) { + /* ES2015 has requirement to check that .name of target is a string + * (also must check for Symbol); if not, targetName should be the + * empty string. ES2015 19.2.3.2. + */ + duk_pop(thr); + duk_push_hstring_empty(thr); + } + duk_concat(thr, 2); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_C); +#if defined(DUK_USE_FUNC_FILENAME_PROPERTY) + duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_FILE_NAME); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_FILE_NAME, DUK_PROPDESC_FLAGS_C); +#endif + + DUK_DDD(DUK_DDDPRINT("created bound function: %!iT", (duk_tval *) duk_get_tval(thr, -1))); + + return 1; +} +#endif /* DUK_USE_FUNCTION_BUILTIN */ + +/* %NativeFunctionPrototype% .length getter. */ +DUK_INTERNAL duk_ret_t duk_bi_native_function_length(duk_hthread *thr) { + duk_tval *tv; + duk_hnatfunc *h; + duk_int16_t func_nargs; + + tv = duk_get_borrowed_this_tval(thr); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_OBJECT(tv)) { + h = (duk_hnatfunc *) DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (!DUK_HOBJECT_IS_NATFUNC((duk_hobject *) h)) { + goto fail_type; + } + func_nargs = h->nargs; + duk_push_int(thr, func_nargs == DUK_HNATFUNC_NARGS_VARARGS ? 0 : func_nargs); + } else if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + duk_small_uint_t lf_flags; + duk_small_uint_t lf_len; + + lf_flags = DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv); + lf_len = DUK_LFUNC_FLAGS_GET_LENGTH(lf_flags); + duk_push_uint(thr, lf_len); + } else { + goto fail_type; + } + return 1; + + fail_type: + DUK_DCERROR_TYPE_INVALID_ARGS(thr); +} + +/* %NativeFunctionPrototype% .name getter. */ +DUK_INTERNAL duk_ret_t duk_bi_native_function_name(duk_hthread *thr) { + duk_tval *tv; + duk_hnatfunc *h; + + tv = duk_get_borrowed_this_tval(thr); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_OBJECT(tv)) { + h = (duk_hnatfunc *) DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + if (!DUK_HOBJECT_IS_NATFUNC((duk_hobject *) h)) { + goto fail_type; + } +#if 0 + duk_push_hnatfunc_name(thr, h); +#endif + duk_push_hstring_empty(thr); + } else if (DUK_TVAL_IS_LIGHTFUNC(tv)) { + duk_push_lightfunc_name(thr, tv); + } else { + goto fail_type; + } + return 1; + + fail_type: + DUK_DCERROR_TYPE_INVALID_ARGS(thr); +} + +#if defined(DUK_USE_SYMBOL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_function_prototype_hasinstance(duk_hthread *thr) { + /* This binding: RHS, stack index 0: LHS. */ + duk_bool_t ret; + + ret = duk_js_instanceof_ordinary(thr, DUK_GET_TVAL_POSIDX(thr, 0), DUK_GET_THIS_TVAL_PTR(thr)); + duk_push_boolean(thr, ret); + return 1; +} +#endif /* DUK_USE_SYMBOL_BUILTIN */ +#line 1 "duk_bi_global.c" +/* + * Global object built-ins + */ + +/* #include duk_internal.h -> already included */ + +/* + * Encoding/decoding helpers + */ + +/* XXX: Could add fast path (for each transform callback) with direct byte + * lookups (no shifting) and no explicit check for x < 0x80 before table + * lookup. + */ + +/* Macros for creating and checking bitmasks for character encoding. + * Bit number is a bit counterintuitive, but minimizes code size. + */ +#define DUK__MKBITS(a,b,c,d,e,f,g,h) ((duk_uint8_t) ( \ + ((a) << 0) | ((b) << 1) | ((c) << 2) | ((d) << 3) | \ + ((e) << 4) | ((f) << 5) | ((g) << 6) | ((h) << 7) \ + )) +#define DUK__CHECK_BITMASK(table,cp) ((table)[(cp) >> 3] & (1 << ((cp) & 0x07))) + +/* E5.1 Section 15.1.3.3: uriReserved + uriUnescaped + '#' */ +DUK_LOCAL const duk_uint8_t duk__encode_uriunescaped_table[16] = { + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x00-0x0f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x10-0x1f */ + DUK__MKBITS(0, 1, 0, 1, 1, 0, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x20-0x2f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 0, 1, 0, 1), /* 0x30-0x3f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x40-0x4f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 0, 0, 0, 0, 1), /* 0x50-0x5f */ + DUK__MKBITS(0, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x60-0x6f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 0, 0, 0, 1, 0), /* 0x70-0x7f */ +}; + +/* E5.1 Section 15.1.3.4: uriUnescaped */ +DUK_LOCAL const duk_uint8_t duk__encode_uricomponent_unescaped_table[16] = { + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x00-0x0f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x10-0x1f */ + DUK__MKBITS(0, 1, 0, 0, 0, 0, 0, 1), DUK__MKBITS(1, 1, 1, 0, 0, 1, 1, 0), /* 0x20-0x2f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 0, 0, 0, 0, 0, 0), /* 0x30-0x3f */ + DUK__MKBITS(0, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x40-0x4f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 0, 0, 0, 0, 1), /* 0x50-0x5f */ + DUK__MKBITS(0, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x60-0x6f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 0, 0, 0, 1, 0), /* 0x70-0x7f */ +}; + +/* E5.1 Section 15.1.3.1: uriReserved + '#' */ +DUK_LOCAL const duk_uint8_t duk__decode_uri_reserved_table[16] = { + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x00-0x0f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x10-0x1f */ + DUK__MKBITS(0, 0, 0, 1, 1, 0, 1, 0), DUK__MKBITS(0, 0, 0, 1, 1, 0, 0, 1), /* 0x20-0x2f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 1, 1, 0, 1, 0, 1), /* 0x30-0x3f */ + DUK__MKBITS(1, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x40-0x4f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x50-0x5f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x60-0x6f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x70-0x7f */ +}; + +/* E5.1 Section 15.1.3.2: empty */ +DUK_LOCAL const duk_uint8_t duk__decode_uri_component_reserved_table[16] = { + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x00-0x0f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x10-0x1f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x20-0x2f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x30-0x3f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x40-0x4f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x50-0x5f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x60-0x6f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x70-0x7f */ +}; + +#if defined(DUK_USE_SECTION_B) +/* E5.1 Section B.2.2, step 7. */ +DUK_LOCAL const duk_uint8_t duk__escape_unescaped_table[16] = { + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x00-0x0f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), /* 0x10-0x1f */ + DUK__MKBITS(0, 0, 0, 0, 0, 0, 0, 0), DUK__MKBITS(0, 0, 1, 1, 0, 1, 1, 1), /* 0x20-0x2f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 0, 0, 0, 0, 0, 0), /* 0x30-0x3f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x40-0x4f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 0, 0, 0, 0, 1), /* 0x50-0x5f */ + DUK__MKBITS(0, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), /* 0x60-0x6f */ + DUK__MKBITS(1, 1, 1, 1, 1, 1, 1, 1), DUK__MKBITS(1, 1, 1, 0, 0, 0, 0, 0) /* 0x70-0x7f */ +}; +#endif /* DUK_USE_SECTION_B */ + +typedef struct { + duk_hthread *thr; + duk_hstring *h_str; + duk_bufwriter_ctx bw; + const duk_uint8_t *p; + const duk_uint8_t *p_start; + const duk_uint8_t *p_end; +} duk__transform_context; + +typedef void (*duk__transform_callback)(duk__transform_context *tfm_ctx, const void *udata, duk_codepoint_t cp); + +/* XXX: refactor and share with other code */ +DUK_LOCAL duk_small_int_t duk__decode_hex_escape(const duk_uint8_t *p, duk_small_int_t n) { + duk_small_int_t ch; + duk_small_int_t t = 0; + + while (n > 0) { + t = t * 16; + ch = (duk_small_int_t) duk_hex_dectab[*p++]; + if (DUK_LIKELY(ch >= 0)) { + t += ch; + } else { + return -1; + } + n--; + } + return t; +} + +DUK_LOCAL int duk__transform_helper(duk_hthread *thr, duk__transform_callback callback, const void *udata) { + duk__transform_context tfm_ctx_alloc; + duk__transform_context *tfm_ctx = &tfm_ctx_alloc; + duk_codepoint_t cp; + + tfm_ctx->thr = thr; + + tfm_ctx->h_str = duk_to_hstring(thr, 0); + DUK_ASSERT(tfm_ctx->h_str != NULL); + + DUK_BW_INIT_PUSHBUF(thr, &tfm_ctx->bw, DUK_HSTRING_GET_BYTELEN(tfm_ctx->h_str)); /* initial size guess */ + + tfm_ctx->p_start = DUK_HSTRING_GET_DATA(tfm_ctx->h_str); + tfm_ctx->p_end = tfm_ctx->p_start + DUK_HSTRING_GET_BYTELEN(tfm_ctx->h_str); + tfm_ctx->p = tfm_ctx->p_start; + + while (tfm_ctx->p < tfm_ctx->p_end) { + cp = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(thr, &tfm_ctx->p, tfm_ctx->p_start, tfm_ctx->p_end); + callback(tfm_ctx, udata, cp); + } + + DUK_BW_COMPACT(thr, &tfm_ctx->bw); + + (void) duk_buffer_to_string(thr, -1); /* Safe if transform is safe. */ + return 1; +} + +DUK_LOCAL void duk__transform_callback_encode_uri(duk__transform_context *tfm_ctx, const void *udata, duk_codepoint_t cp) { + duk_uint8_t xutf8_buf[DUK_UNICODE_MAX_XUTF8_LENGTH]; + duk_small_int_t len; + duk_codepoint_t cp1, cp2; + duk_small_int_t i, t; + const duk_uint8_t *unescaped_table = (const duk_uint8_t *) udata; + + /* UTF-8 encoded bytes escaped as %xx%xx%xx... -> 3 * nbytes. + * Codepoint range is restricted so this is a slightly too large + * but doesn't matter. + */ + DUK_BW_ENSURE(tfm_ctx->thr, &tfm_ctx->bw, 3 * DUK_UNICODE_MAX_XUTF8_LENGTH); + + if (cp < 0) { + goto uri_error; + } else if ((cp < 0x80L) && DUK__CHECK_BITMASK(unescaped_table, cp)) { + DUK_BW_WRITE_RAW_U8(tfm_ctx->thr, &tfm_ctx->bw, (duk_uint8_t) cp); + return; + } else if (cp >= 0xdc00L && cp <= 0xdfffL) { + goto uri_error; + } else if (cp >= 0xd800L && cp <= 0xdbffL) { + /* Needs lookahead */ + if (duk_unicode_decode_xutf8(tfm_ctx->thr, &tfm_ctx->p, tfm_ctx->p_start, tfm_ctx->p_end, (duk_ucodepoint_t *) &cp2) == 0) { + goto uri_error; + } + if (!(cp2 >= 0xdc00L && cp2 <= 0xdfffL)) { + goto uri_error; + } + cp1 = cp; + cp = (duk_codepoint_t) (((cp1 - 0xd800L) << 10) + (cp2 - 0xdc00L) + 0x10000L); + } else if (cp > 0x10ffffL) { + /* Although we can allow non-BMP characters (they'll decode + * back into surrogate pairs), we don't allow extended UTF-8 + * characters; they would encode to URIs which won't decode + * back because of strict UTF-8 checks in URI decoding. + * (However, we could just as well allow them here.) + */ + goto uri_error; + } else { + /* Non-BMP characters within valid UTF-8 range: encode as is. + * They'll decode back into surrogate pairs if the escaped + * output is decoded. + */ + ; + } + + len = duk_unicode_encode_xutf8((duk_ucodepoint_t) cp, xutf8_buf); + for (i = 0; i < len; i++) { + t = (duk_small_int_t) xutf8_buf[i]; + DUK_BW_WRITE_RAW_U8_3(tfm_ctx->thr, + &tfm_ctx->bw, + DUK_ASC_PERCENT, + (duk_uint8_t) duk_uc_nybbles[t >> 4], + (duk_uint8_t) duk_uc_nybbles[t & 0x0f]); + } + + return; + + uri_error: + DUK_ERROR_URI(tfm_ctx->thr, DUK_STR_INVALID_INPUT); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__transform_callback_decode_uri(duk__transform_context *tfm_ctx, const void *udata, duk_codepoint_t cp) { + const duk_uint8_t *reserved_table = (const duk_uint8_t *) udata; + duk_small_uint_t utf8_blen; + duk_codepoint_t min_cp; + duk_small_int_t t; /* must be signed */ + duk_small_uint_t i; + + /* Maximum write size: XUTF8 path writes max DUK_UNICODE_MAX_XUTF8_LENGTH, + * percent escape path writes max two times CESU-8 encoded BMP length. + */ + DUK_BW_ENSURE(tfm_ctx->thr, + &tfm_ctx->bw, + (DUK_UNICODE_MAX_XUTF8_LENGTH >= 2 * DUK_UNICODE_MAX_CESU8_BMP_LENGTH ? + DUK_UNICODE_MAX_XUTF8_LENGTH : DUK_UNICODE_MAX_CESU8_BMP_LENGTH)); + + if (cp == (duk_codepoint_t) '%') { + const duk_uint8_t *p = tfm_ctx->p; + duk_size_t left = (duk_size_t) (tfm_ctx->p_end - p); /* bytes left */ + + DUK_DDD(DUK_DDDPRINT("percent encoding, left=%ld", (long) left)); + + if (left < 2) { + goto uri_error; + } + + t = duk__decode_hex_escape(p, 2); + DUK_DDD(DUK_DDDPRINT("first byte: %ld", (long) t)); + if (t < 0) { + goto uri_error; + } + + if (t < 0x80) { + if (DUK__CHECK_BITMASK(reserved_table, t)) { + /* decode '%xx' to '%xx' if decoded char in reserved set */ + DUK_ASSERT(tfm_ctx->p - 1 >= tfm_ctx->p_start); + DUK_BW_WRITE_RAW_U8_3(tfm_ctx->thr, + &tfm_ctx->bw, + DUK_ASC_PERCENT, + p[0], + p[1]); + } else { + DUK_BW_WRITE_RAW_U8(tfm_ctx->thr, &tfm_ctx->bw, (duk_uint8_t) t); + } + tfm_ctx->p += 2; + return; + } + + /* Decode UTF-8 codepoint from a sequence of hex escapes. The + * first byte of the sequence has been decoded to 't'. + * + * Note that UTF-8 validation must be strict according to the + * specification: E5.1 Section 15.1.3, decode algorithm step + * 4.d.vii.8. URIError from non-shortest encodings is also + * specifically noted in the spec. + */ + + DUK_ASSERT(t >= 0x80); + if (t < 0xc0) { + /* continuation byte */ + goto uri_error; + } else if (t < 0xe0) { + /* 110x xxxx; 2 bytes */ + utf8_blen = 2; + min_cp = 0x80L; + cp = t & 0x1f; + } else if (t < 0xf0) { + /* 1110 xxxx; 3 bytes */ + utf8_blen = 3; + min_cp = 0x800L; + cp = t & 0x0f; + } else if (t < 0xf8) { + /* 1111 0xxx; 4 bytes */ + utf8_blen = 4; + min_cp = 0x10000L; + cp = t & 0x07; + } else { + /* extended utf-8 not allowed for URIs */ + goto uri_error; + } + + if (left < utf8_blen * 3 - 1) { + /* '%xx%xx...%xx', p points to char after first '%' */ + goto uri_error; + } + + p += 3; + for (i = 1; i < utf8_blen; i++) { + /* p points to digit part ('%xy', p points to 'x') */ + t = duk__decode_hex_escape(p, 2); + DUK_DDD(DUK_DDDPRINT("i=%ld utf8_blen=%ld cp=%ld t=0x%02lx", + (long) i, (long) utf8_blen, (long) cp, (unsigned long) t)); + if (t < 0) { + goto uri_error; + } + if ((t & 0xc0) != 0x80) { + goto uri_error; + } + cp = (cp << 6) + (t & 0x3f); + p += 3; + } + p--; /* p overshoots */ + tfm_ctx->p = p; + + DUK_DDD(DUK_DDDPRINT("final cp=%ld, min_cp=%ld", (long) cp, (long) min_cp)); + + if (cp < min_cp || cp > 0x10ffffL || (cp >= 0xd800L && cp <= 0xdfffL)) { + goto uri_error; + } + + /* The E5.1 algorithm checks whether or not a decoded codepoint + * is below 0x80 and perhaps may be in the "reserved" set. + * This seems pointless because the single byte UTF-8 case is + * handled separately, and non-shortest encodings are rejected. + * So, 'cp' cannot be below 0x80 here, and thus cannot be in + * the reserved set. + */ + + /* utf-8 validation ensures these */ + DUK_ASSERT(cp >= 0x80L && cp <= 0x10ffffL); + + if (cp >= 0x10000L) { + cp -= 0x10000L; + DUK_ASSERT(cp < 0x100000L); + + DUK_BW_WRITE_RAW_XUTF8(tfm_ctx->thr, &tfm_ctx->bw, ((cp >> 10) + 0xd800L)); + DUK_BW_WRITE_RAW_XUTF8(tfm_ctx->thr, &tfm_ctx->bw, ((cp & 0x03ffL) + 0xdc00L)); + } else { + DUK_BW_WRITE_RAW_XUTF8(tfm_ctx->thr, &tfm_ctx->bw, cp); + } + } else { + DUK_BW_WRITE_RAW_XUTF8(tfm_ctx->thr, &tfm_ctx->bw, cp); + } + return; + + uri_error: + DUK_ERROR_URI(tfm_ctx->thr, DUK_STR_INVALID_INPUT); + DUK_WO_NORETURN(return;); +} + +#if defined(DUK_USE_SECTION_B) +DUK_LOCAL void duk__transform_callback_escape(duk__transform_context *tfm_ctx, const void *udata, duk_codepoint_t cp) { + DUK_UNREF(udata); + + DUK_BW_ENSURE(tfm_ctx->thr, &tfm_ctx->bw, 6); + + if (cp < 0) { + goto esc_error; + } else if ((cp < 0x80L) && DUK__CHECK_BITMASK(duk__escape_unescaped_table, cp)) { + DUK_BW_WRITE_RAW_U8(tfm_ctx->thr, &tfm_ctx->bw, (duk_uint8_t) cp); + } else if (cp < 0x100L) { + DUK_BW_WRITE_RAW_U8_3(tfm_ctx->thr, + &tfm_ctx->bw, + (duk_uint8_t) DUK_ASC_PERCENT, + (duk_uint8_t) duk_uc_nybbles[cp >> 4], + (duk_uint8_t) duk_uc_nybbles[cp & 0x0f]); + } else if (cp < 0x10000L) { + DUK_BW_WRITE_RAW_U8_6(tfm_ctx->thr, + &tfm_ctx->bw, + (duk_uint8_t) DUK_ASC_PERCENT, + (duk_uint8_t) DUK_ASC_LC_U, + (duk_uint8_t) duk_uc_nybbles[cp >> 12], + (duk_uint8_t) duk_uc_nybbles[(cp >> 8) & 0x0f], + (duk_uint8_t) duk_uc_nybbles[(cp >> 4) & 0x0f], + (duk_uint8_t) duk_uc_nybbles[cp & 0x0f]); + } else { + /* Characters outside BMP cannot be escape()'d. We could + * encode them as surrogate pairs (for codepoints inside + * valid UTF-8 range, but not extended UTF-8). Because + * escape() and unescape() are legacy functions, we don't. + */ + goto esc_error; + } + + return; + + esc_error: + DUK_ERROR_TYPE(tfm_ctx->thr, DUK_STR_INVALID_INPUT); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__transform_callback_unescape(duk__transform_context *tfm_ctx, const void *udata, duk_codepoint_t cp) { + duk_small_int_t t; + + DUK_UNREF(udata); + + if (cp == (duk_codepoint_t) '%') { + const duk_uint8_t *p = tfm_ctx->p; + duk_size_t left = (duk_size_t) (tfm_ctx->p_end - p); /* bytes left */ + + if (left >= 5 && p[0] == 'u' && + ((t = duk__decode_hex_escape(p + 1, 4)) >= 0)) { + cp = (duk_codepoint_t) t; + tfm_ctx->p += 5; + } else if (left >= 2 && + ((t = duk__decode_hex_escape(p, 2)) >= 0)) { + cp = (duk_codepoint_t) t; + tfm_ctx->p += 2; + } + } + + DUK_BW_WRITE_ENSURE_XUTF8(tfm_ctx->thr, &tfm_ctx->bw, cp); +} +#endif /* DUK_USE_SECTION_B */ + +/* + * Eval + * + * Eval needs to handle both a "direct eval" and an "indirect eval". + * Direct eval handling needs access to the caller's activation so that its + * lexical environment can be accessed. A direct eval is only possible from + * ECMAScript code; an indirect eval call is possible also from C code. + * When an indirect eval call is made from C code, there may not be a + * calling activation at all which needs careful handling. + */ + +DUK_INTERNAL duk_ret_t duk_bi_global_object_eval(duk_hthread *thr) { + duk_hstring *h; + duk_activation *act_caller; + duk_activation *act_eval; + duk_hcompfunc *func; + duk_hobject *outer_lex_env; + duk_hobject *outer_var_env; + duk_bool_t this_to_global = 1; + duk_small_uint_t comp_flags; + duk_int_t level = -2; + duk_small_uint_t call_flags; + + DUK_ASSERT(duk_get_top(thr) == 1 || duk_get_top(thr) == 2); /* 2 when called by debugger */ + DUK_ASSERT(thr->callstack_top >= 1); /* at least this function exists */ + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT((thr->callstack_curr->flags & DUK_ACT_FLAG_DIRECT_EVAL) == 0 || /* indirect eval */ + (thr->callstack_top >= 2)); /* if direct eval, calling activation must exist */ + + /* + * callstack_top - 1 --> this function + * callstack_top - 2 --> caller (may not exist) + * + * If called directly from C, callstack_top might be 1. If calling + * activation doesn't exist, call must be indirect. + */ + + h = duk_get_hstring_notsymbol(thr, 0); + if (!h) { + /* Symbol must be returned as is, like any non-string values. */ + return 1; /* return arg as-is */ + } + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + /* NOTE: level is used only by the debugger and should never be present + * for an ECMAScript eval(). + */ + DUK_ASSERT(level == -2); /* by default, use caller's environment */ + if (duk_get_top(thr) >= 2 && duk_is_number(thr, 1)) { + level = duk_get_int(thr, 1); + } + DUK_ASSERT(level <= -2); /* This is guaranteed by debugger code. */ +#endif + + /* [ source ] */ + + comp_flags = DUK_COMPILE_EVAL; + act_eval = thr->callstack_curr; /* this function */ + DUK_ASSERT(act_eval != NULL); + act_caller = duk_hthread_get_activation_for_level(thr, level); + if (act_caller != NULL) { + /* Have a calling activation, check for direct eval (otherwise + * assume indirect eval. + */ + if ((act_caller->flags & DUK_ACT_FLAG_STRICT) && + (act_eval->flags & DUK_ACT_FLAG_DIRECT_EVAL)) { + /* Only direct eval inherits strictness from calling code + * (E5.1 Section 10.1.1). + */ + comp_flags |= DUK_COMPILE_STRICT; + } + } else { + DUK_ASSERT((act_eval->flags & DUK_ACT_FLAG_DIRECT_EVAL) == 0); + } + + duk_push_hstring_stridx(thr, DUK_STRIDX_INPUT); /* XXX: copy from caller? */ + duk_js_compile(thr, + (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h), + (duk_size_t) DUK_HSTRING_GET_BYTELEN(h), + comp_flags); + func = (duk_hcompfunc *) duk_known_hobject(thr, -1); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) func)); + + /* [ source template ] */ + + /* E5 Section 10.4.2 */ + + if (act_eval->flags & DUK_ACT_FLAG_DIRECT_EVAL) { + DUK_ASSERT(thr->callstack_top >= 2); + DUK_ASSERT(act_caller != NULL); + if (act_caller->lex_env == NULL) { + DUK_ASSERT(act_caller->var_env == NULL); + DUK_DDD(DUK_DDDPRINT("delayed environment initialization")); + + /* this may have side effects, so re-lookup act */ + duk_js_init_activation_environment_records_delayed(thr, act_caller); + } + DUK_ASSERT(act_caller->lex_env != NULL); + DUK_ASSERT(act_caller->var_env != NULL); + + this_to_global = 0; + + if (DUK_HOBJECT_HAS_STRICT((duk_hobject *) func)) { + duk_hdecenv *new_env; + duk_hobject *act_lex_env; + + DUK_DDD(DUK_DDDPRINT("direct eval call to a strict function -> " + "var_env and lex_env to a fresh env, " + "this_binding to caller's this_binding")); + + act_lex_env = act_caller->lex_env; + + new_env = duk_hdecenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DECENV)); + DUK_ASSERT(new_env != NULL); + duk_push_hobject(thr, (duk_hobject *) new_env); + + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) new_env) == NULL); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, (duk_hobject *) new_env, act_lex_env); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, act_lex_env); + DUK_DDD(DUK_DDDPRINT("new_env allocated: %!iO", (duk_heaphdr *) new_env)); + + outer_lex_env = (duk_hobject *) new_env; + outer_var_env = (duk_hobject *) new_env; + + duk_insert(thr, 0); /* stash to bottom of value stack to keep new_env reachable for duration of eval */ + + /* compiler's responsibility */ + DUK_ASSERT(DUK_HOBJECT_HAS_NEWENV((duk_hobject *) func)); + } else { + DUK_DDD(DUK_DDDPRINT("direct eval call to a non-strict function -> " + "var_env and lex_env to caller's envs, " + "this_binding to caller's this_binding")); + + outer_lex_env = act_caller->lex_env; + outer_var_env = act_caller->var_env; + + /* compiler's responsibility */ + DUK_ASSERT(!DUK_HOBJECT_HAS_NEWENV((duk_hobject *) func)); + } + } else { + DUK_DDD(DUK_DDDPRINT("indirect eval call -> var_env and lex_env to " + "global object, this_binding to global object")); + + this_to_global = 1; + outer_lex_env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + outer_var_env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + } + + /* Eval code doesn't need an automatic .prototype object. */ + duk_js_push_closure(thr, func, outer_var_env, outer_lex_env, 0 /*add_auto_proto*/); + + /* [ env? source template closure ] */ + + if (this_to_global) { + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + duk_push_hobject_bidx(thr, DUK_BIDX_GLOBAL); + } else { + duk_tval *tv; + DUK_ASSERT(thr->callstack_top >= 2); + DUK_ASSERT(act_caller != NULL); + tv = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + act_caller->bottom_byteoff - sizeof(duk_tval)); /* this is just beneath bottom */ + DUK_ASSERT(tv >= thr->valstack); + duk_push_tval(thr, tv); + } + + DUK_DDD(DUK_DDDPRINT("eval -> lex_env=%!iO, var_env=%!iO, this_binding=%!T", + (duk_heaphdr *) outer_lex_env, + (duk_heaphdr *) outer_var_env, + duk_get_tval(thr, -1))); + + /* [ env? source template closure this ] */ + + call_flags = 0; + if (act_eval->flags & DUK_ACT_FLAG_DIRECT_EVAL) { + /* Set DIRECT_EVAL flag for the call; it's not strictly + * needed for the 'inner' eval call (the eval body) but + * current new.target implementation expects to find it + * so it can traverse direct eval chains up to the real + * calling function. + */ + call_flags |= DUK_CALL_FLAG_DIRECT_EVAL; + } + duk_handle_call_unprotected_nargs(thr, 0, call_flags); + + /* [ env? source template result ] */ + + return 1; +} + +/* + * Parsing of ints and floats + */ + +#if defined(DUK_USE_GLOBAL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_global_object_parse_int(duk_hthread *thr) { + duk_int32_t radix; + duk_small_uint_t s2n_flags; + + DUK_ASSERT_TOP(thr, 2); + duk_to_string(thr, 0); /* Reject symbols. */ + + radix = duk_to_int32(thr, 1); + + /* While parseInt() recognizes 0xdeadbeef, it doesn't recognize + * ES2015 0o123 or 0b10001. + */ + s2n_flags = DUK_S2N_FLAG_TRIM_WHITE | + DUK_S2N_FLAG_ALLOW_GARBAGE | + DUK_S2N_FLAG_ALLOW_PLUS | + DUK_S2N_FLAG_ALLOW_MINUS | + DUK_S2N_FLAG_ALLOW_LEADING_ZERO | + DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT; + + /* Specification stripPrefix maps to DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT. + * + * Don't autodetect octals (from leading zeroes), require user code to + * provide an explicit radix 8 for parsing octal. See write-up from Mozilla: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt#ECMAScript_5_Removes_Octal_Interpretation + */ + + if (radix != 0) { + if (radix < 2 || radix > 36) { + goto ret_nan; + } + if (radix != 16) { + s2n_flags &= ~DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT; + } + } else { + radix = 10; + } + + duk_dup_0(thr); + duk_numconv_parse(thr, (duk_small_int_t) radix, s2n_flags); + return 1; + + ret_nan: + duk_push_nan(thr); + return 1; +} +#endif /* DUK_USE_GLOBAL_BUILTIN */ + +#if defined(DUK_USE_GLOBAL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_global_object_parse_float(duk_hthread *thr) { + duk_small_uint_t s2n_flags; + + DUK_ASSERT_TOP(thr, 1); + duk_to_string(thr, 0); /* Reject symbols. */ + + /* XXX: check flags */ + s2n_flags = DUK_S2N_FLAG_TRIM_WHITE | + DUK_S2N_FLAG_ALLOW_EXP | + DUK_S2N_FLAG_ALLOW_GARBAGE | + DUK_S2N_FLAG_ALLOW_PLUS | + DUK_S2N_FLAG_ALLOW_MINUS | + DUK_S2N_FLAG_ALLOW_INF | + DUK_S2N_FLAG_ALLOW_FRAC | + DUK_S2N_FLAG_ALLOW_NAKED_FRAC | + DUK_S2N_FLAG_ALLOW_EMPTY_FRAC | + DUK_S2N_FLAG_ALLOW_LEADING_ZERO; + + duk_numconv_parse(thr, 10 /*radix*/, s2n_flags); + return 1; +} +#endif /* DUK_USE_GLOBAL_BUILTIN */ + +/* + * Number checkers + */ + +#if defined(DUK_USE_GLOBAL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_global_object_is_nan(duk_hthread *thr) { + duk_double_t d = duk_to_number(thr, 0); + duk_push_boolean(thr, (duk_bool_t) DUK_ISNAN(d)); + return 1; +} +#endif /* DUK_USE_GLOBAL_BUILTIN */ + +#if defined(DUK_USE_GLOBAL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_global_object_is_finite(duk_hthread *thr) { + duk_double_t d = duk_to_number(thr, 0); + duk_push_boolean(thr, (duk_bool_t) DUK_ISFINITE(d)); + return 1; +} +#endif /* DUK_USE_GLOBAL_BUILTIN */ + +/* + * URI handling + */ + +#if defined(DUK_USE_GLOBAL_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_global_object_decode_uri(duk_hthread *thr) { + return duk__transform_helper(thr, duk__transform_callback_decode_uri, (const void *) duk__decode_uri_reserved_table); +} + +DUK_INTERNAL duk_ret_t duk_bi_global_object_decode_uri_component(duk_hthread *thr) { + return duk__transform_helper(thr, duk__transform_callback_decode_uri, (const void *) duk__decode_uri_component_reserved_table); +} + +DUK_INTERNAL duk_ret_t duk_bi_global_object_encode_uri(duk_hthread *thr) { + return duk__transform_helper(thr, duk__transform_callback_encode_uri, (const void *) duk__encode_uriunescaped_table); +} + +DUK_INTERNAL duk_ret_t duk_bi_global_object_encode_uri_component(duk_hthread *thr) { + return duk__transform_helper(thr, duk__transform_callback_encode_uri, (const void *) duk__encode_uricomponent_unescaped_table); +} + +#if defined(DUK_USE_SECTION_B) +DUK_INTERNAL duk_ret_t duk_bi_global_object_escape(duk_hthread *thr) { + return duk__transform_helper(thr, duk__transform_callback_escape, (const void *) NULL); +} + +DUK_INTERNAL duk_ret_t duk_bi_global_object_unescape(duk_hthread *thr) { + return duk__transform_helper(thr, duk__transform_callback_unescape, (const void *) NULL); +} +#endif /* DUK_USE_SECTION_B */ +#endif /* DUK_USE_GLOBAL_BUILTIN */ + +/* automatic undefs */ +#undef DUK__CHECK_BITMASK +#undef DUK__MKBITS +#line 1 "duk_bi_json.c" +/* + * JSON built-ins. + * + * See doc/json.rst. + * + * Codepoints are handled as duk_uint_fast32_t to ensure that the full + * unsigned 32-bit range is supported. This matters to e.g. JX. + * + * Input parsing doesn't do an explicit end-of-input check at all. This is + * safe: input string data is always NUL-terminated (0x00) and valid JSON + * inputs never contain plain NUL characters, so that as long as syntax checks + * are correct, we'll never read past the NUL. This approach reduces code size + * and improves parsing performance, but it's critical that syntax checks are + * indeed correct! + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_JSON_SUPPORT) + +/* + * Local defines and forward declarations. + */ + +#define DUK__JSON_DECSTR_BUFSIZE 128 +#define DUK__JSON_DECSTR_CHUNKSIZE 64 +#define DUK__JSON_ENCSTR_CHUNKSIZE 64 +#define DUK__JSON_STRINGIFY_BUFSIZE 128 +#define DUK__JSON_MAX_ESC_LEN 10 /* '\Udeadbeef' */ + +DUK_LOCAL_DECL void duk__dec_syntax_error(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_eat_white(duk_json_dec_ctx *js_ctx); +#if defined(DUK_USE_JX) +DUK_LOCAL_DECL duk_uint8_t duk__dec_peek(duk_json_dec_ctx *js_ctx); +#endif +DUK_LOCAL_DECL duk_uint8_t duk__dec_get(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL duk_uint8_t duk__dec_get_nonwhite(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL duk_uint_fast32_t duk__dec_decode_hex_escape(duk_json_dec_ctx *js_ctx, duk_small_uint_t n); +DUK_LOCAL_DECL void duk__dec_req_stridx(duk_json_dec_ctx *js_ctx, duk_small_uint_t stridx); +DUK_LOCAL_DECL void duk__dec_string(duk_json_dec_ctx *js_ctx); +#if defined(DUK_USE_JX) +DUK_LOCAL_DECL void duk__dec_plain_string(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_pointer(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_buffer(duk_json_dec_ctx *js_ctx); +#endif +DUK_LOCAL_DECL void duk__dec_number(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_objarr_entry(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_objarr_exit(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_object(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_array(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_value(duk_json_dec_ctx *js_ctx); +DUK_LOCAL_DECL void duk__dec_reviver_walk(duk_json_dec_ctx *js_ctx); + +DUK_LOCAL_DECL void duk__emit_1(duk_json_enc_ctx *js_ctx, duk_uint_fast8_t ch); +DUK_LOCAL_DECL void duk__emit_2(duk_json_enc_ctx *js_ctx, duk_uint_fast8_t ch1, duk_uint_fast8_t ch2); +DUK_LOCAL_DECL void duk__unemit_1(duk_json_enc_ctx *js_ctx); +DUK_LOCAL_DECL void duk__emit_hstring(duk_json_enc_ctx *js_ctx, duk_hstring *h); +#if defined(DUK_USE_FASTINT) +DUK_LOCAL_DECL void duk__emit_cstring(duk_json_enc_ctx *js_ctx, const char *p); +#endif +DUK_LOCAL_DECL void duk__emit_stridx(duk_json_enc_ctx *js_ctx, duk_small_uint_t stridx); +DUK_LOCAL_DECL duk_uint8_t *duk__emit_esc_auto_fast(duk_json_enc_ctx *js_ctx, duk_uint_fast32_t cp, duk_uint8_t *q); +DUK_LOCAL_DECL void duk__enc_key_autoquote(duk_json_enc_ctx *js_ctx, duk_hstring *k); +DUK_LOCAL_DECL void duk__enc_quote_string(duk_json_enc_ctx *js_ctx, duk_hstring *h_str); +DUK_LOCAL_DECL void duk__enc_objarr_entry(duk_json_enc_ctx *js_ctx, duk_idx_t *entry_top); +DUK_LOCAL_DECL void duk__enc_objarr_exit(duk_json_enc_ctx *js_ctx, duk_idx_t *entry_top); +DUK_LOCAL_DECL void duk__enc_object(duk_json_enc_ctx *js_ctx); +DUK_LOCAL_DECL void duk__enc_array(duk_json_enc_ctx *js_ctx); +DUK_LOCAL_DECL duk_bool_t duk__enc_value(duk_json_enc_ctx *js_ctx, duk_idx_t idx_holder); +DUK_LOCAL_DECL duk_bool_t duk__enc_allow_into_proplist(duk_tval *tv); +DUK_LOCAL_DECL void duk__enc_double(duk_json_enc_ctx *js_ctx); +#if defined(DUK_USE_FASTINT) +DUK_LOCAL_DECL void duk__enc_fastint_tval(duk_json_enc_ctx *js_ctx, duk_tval *tv); +#endif +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) +DUK_LOCAL_DECL void duk__enc_buffer_jx_jc(duk_json_enc_ctx *js_ctx, duk_hbuffer *h); +DUK_LOCAL_DECL void duk__enc_pointer(duk_json_enc_ctx *js_ctx, void *ptr); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_LOCAL_DECL void duk__enc_bufobj(duk_json_enc_ctx *js_ctx, duk_hbufobj *h_bufobj); +#endif +#endif +#if defined(DUK_USE_JSON_STRINGIFY_FASTPATH) +DUK_LOCAL_DECL void duk__enc_buffer_json_fastpath(duk_json_enc_ctx *js_ctx, duk_hbuffer *h); +#endif +DUK_LOCAL_DECL void duk__enc_newline_indent(duk_json_enc_ctx *js_ctx, duk_uint_t depth); + +/* + * Helper tables + */ + +#if defined(DUK_USE_JSON_QUOTESTRING_FASTPATH) +DUK_LOCAL const duk_uint8_t duk__json_quotestr_lookup[256] = { + /* 0x00 ... 0x7f: as is + * 0x80: escape generically + * 0x81: slow path + * 0xa0 ... 0xff: backslash + one char + */ + + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe2, 0xf4, 0xee, 0x80, 0xe6, 0xf2, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x20, 0x21, 0xa2, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0xdc, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81 +}; +#else /* DUK_USE_JSON_QUOTESTRING_FASTPATH */ +DUK_LOCAL const duk_uint8_t duk__json_quotestr_esc[14] = { + DUK_ASC_NUL, DUK_ASC_NUL, DUK_ASC_NUL, DUK_ASC_NUL, + DUK_ASC_NUL, DUK_ASC_NUL, DUK_ASC_NUL, DUK_ASC_NUL, + DUK_ASC_LC_B, DUK_ASC_LC_T, DUK_ASC_LC_N, DUK_ASC_NUL, + DUK_ASC_LC_F, DUK_ASC_LC_R +}; +#endif /* DUK_USE_JSON_QUOTESTRING_FASTPATH */ + +#if defined(DUK_USE_JSON_DECSTRING_FASTPATH) +DUK_LOCAL const duk_uint8_t duk__json_decstr_lookup[256] = { + /* 0x00: slow path + * other: as is + */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x00, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x00, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; +#endif /* DUK_USE_JSON_DECSTRING_FASTPATH */ + +#if defined(DUK_USE_JSON_EATWHITE_FASTPATH) +DUK_LOCAL const duk_uint8_t duk__json_eatwhite_lookup[256] = { + /* 0x00: finish (non-white) + * 0x01: continue + */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif /* DUK_USE_JSON_EATWHITE_FASTPATH */ + +#if defined(DUK_USE_JSON_DECNUMBER_FASTPATH) +DUK_LOCAL const duk_uint8_t duk__json_decnumber_lookup[256] = { + /* 0x00: finish (not part of number) + * 0x01: continue + */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif /* DUK_USE_JSON_DECNUMBER_FASTPATH */ + +/* + * Parsing implementation. + * + * JSON lexer is now separate from duk_lexer.c because there are numerous + * small differences making it difficult to share the lexer. + * + * The parser here works with raw bytes directly; this works because all + * JSON delimiters are ASCII characters. Invalid xUTF-8 encoded values + * inside strings will be passed on without normalization; this is not a + * compliance concern because compliant inputs will always be valid + * CESU-8 encodings. + */ + +DUK_LOCAL void duk__dec_syntax_error(duk_json_dec_ctx *js_ctx) { + /* Shared handler to minimize parser size. Cause will be + * hidden, unfortunately, but we'll have an offset which + * is often quite enough. + */ + DUK_ERROR_FMT1(js_ctx->thr, DUK_ERR_SYNTAX_ERROR, DUK_STR_FMT_INVALID_JSON, + (long) (js_ctx->p - js_ctx->p_start)); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__dec_eat_white(duk_json_dec_ctx *js_ctx) { + const duk_uint8_t *p; + duk_uint8_t t; + + p = js_ctx->p; + for (;;) { + DUK_ASSERT(p <= js_ctx->p_end); + t = *p; + +#if defined(DUK_USE_JSON_EATWHITE_FASTPATH) + /* This fast path is pretty marginal in practice. + * XXX: candidate for removal. + */ + DUK_ASSERT(duk__json_eatwhite_lookup[0x00] == 0x00); /* end-of-input breaks */ + if (duk__json_eatwhite_lookup[t] == 0) { + break; + } +#else /* DUK_USE_JSON_EATWHITE_FASTPATH */ + if (!(t == 0x20 || t == 0x0a || t == 0x0d || t == 0x09)) { + /* NUL also comes here. Comparison order matters, 0x20 + * is most common whitespace. + */ + break; + } +#endif /* DUK_USE_JSON_EATWHITE_FASTPATH */ + p++; + } + js_ctx->p = p; +} + +#if defined(DUK_USE_JX) +DUK_LOCAL duk_uint8_t duk__dec_peek(duk_json_dec_ctx *js_ctx) { + DUK_ASSERT(js_ctx->p <= js_ctx->p_end); + return *js_ctx->p; +} +#endif + +DUK_LOCAL duk_uint8_t duk__dec_get(duk_json_dec_ctx *js_ctx) { + DUK_ASSERT(js_ctx->p <= js_ctx->p_end); + return *js_ctx->p++; +} + +DUK_LOCAL duk_uint8_t duk__dec_get_nonwhite(duk_json_dec_ctx *js_ctx) { + duk__dec_eat_white(js_ctx); + return duk__dec_get(js_ctx); +} + +/* For JX, expressing the whole unsigned 32-bit range matters. */ +DUK_LOCAL duk_uint_fast32_t duk__dec_decode_hex_escape(duk_json_dec_ctx *js_ctx, duk_small_uint_t n) { + duk_small_uint_t i; + duk_uint_fast32_t res = 0; + duk_uint8_t x; + duk_small_int_t t; + + for (i = 0; i < n; i++) { + /* XXX: share helper from lexer; duk_lexer.c / hexval(). */ + + x = duk__dec_get(js_ctx); + DUK_DDD(DUK_DDDPRINT("decode_hex_escape: i=%ld, n=%ld, res=%ld, x=%ld", + (long) i, (long) n, (long) res, (long) x)); + + /* x == 0x00 (EOF) causes syntax_error */ + DUK_ASSERT(duk_hex_dectab[0] == -1); + t = duk_hex_dectab[x & 0xff]; + if (DUK_LIKELY(t >= 0)) { + res = (res * 16) + (duk_uint_fast32_t) t; + } else { + /* catches EOF and invalid digits */ + goto syntax_error; + } + } + + DUK_DDD(DUK_DDDPRINT("final hex decoded value: %ld", (long) res)); + return res; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); + return 0; +} + +DUK_LOCAL void duk__dec_req_stridx(duk_json_dec_ctx *js_ctx, duk_small_uint_t stridx) { + duk_hstring *h; + const duk_uint8_t *p; + duk_uint8_t x, y; + + /* First character has already been eaten and checked by the caller. + * We can scan until a NUL in stridx string because no built-in strings + * have internal NULs. + */ + + DUK_ASSERT_STRIDX_VALID(stridx); + h = DUK_HTHREAD_GET_STRING(js_ctx->thr, stridx); + DUK_ASSERT(h != NULL); + + p = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h) + 1; + DUK_ASSERT(*(js_ctx->p - 1) == *(p - 1)); /* first character has been matched */ + + for (;;) { + x = *p; + if (x == 0) { + break; + } + y = duk__dec_get(js_ctx); + if (x != y) { + /* Catches EOF of JSON input. */ + goto syntax_error; + } + p++; + } + + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} + +DUK_LOCAL duk_small_int_t duk__dec_string_escape(duk_json_dec_ctx *js_ctx, duk_uint8_t **ext_p) { + duk_uint_fast32_t cp; + + /* EOF (-1) will be cast to an unsigned value first + * and then re-cast for the switch. In any case, it + * will match the default case (syntax error). + */ + cp = (duk_uint_fast32_t) duk__dec_get(js_ctx); + switch (cp) { + case DUK_ASC_BACKSLASH: break; + case DUK_ASC_DOUBLEQUOTE: break; + case DUK_ASC_SLASH: break; + case DUK_ASC_LC_T: cp = 0x09; break; + case DUK_ASC_LC_N: cp = 0x0a; break; + case DUK_ASC_LC_R: cp = 0x0d; break; + case DUK_ASC_LC_F: cp = 0x0c; break; + case DUK_ASC_LC_B: cp = 0x08; break; + case DUK_ASC_LC_U: { + cp = duk__dec_decode_hex_escape(js_ctx, 4); + break; + } +#if defined(DUK_USE_JX) + case DUK_ASC_UC_U: { + if (js_ctx->flag_ext_custom) { + cp = duk__dec_decode_hex_escape(js_ctx, 8); + } else { + return 1; /* syntax error */ + } + break; + } + case DUK_ASC_LC_X: { + if (js_ctx->flag_ext_custom) { + cp = duk__dec_decode_hex_escape(js_ctx, 2); + } else { + return 1; /* syntax error */ + } + break; + } +#endif /* DUK_USE_JX */ + default: + /* catches EOF (0x00) */ + return 1; /* syntax error */ + } + + DUK_RAW_WRITEINC_XUTF8(*ext_p, cp); + + return 0; +} + +DUK_LOCAL void duk__dec_string(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_bufwriter_ctx bw_alloc; + duk_bufwriter_ctx *bw; + duk_uint8_t *q; + + /* '"' was eaten by caller */ + + /* Note that we currently parse -bytes-, not codepoints. + * All non-ASCII extended UTF-8 will encode to bytes >= 0x80, + * so they'll simply pass through (valid UTF-8 or not). + */ + + bw = &bw_alloc; + DUK_BW_INIT_PUSHBUF(js_ctx->thr, bw, DUK__JSON_DECSTR_BUFSIZE); + q = DUK_BW_GET_PTR(js_ctx->thr, bw); + +#if defined(DUK_USE_JSON_DECSTRING_FASTPATH) + for (;;) { + duk_small_uint_t safe; + duk_uint8_t b, x; + const duk_uint8_t *p; + + /* Select a safe loop count where no output checks are + * needed assuming we won't encounter escapes. Input + * bound checks are not necessary as a NUL (guaranteed) + * will cause a SyntaxError before we read out of bounds. + */ + + safe = DUK__JSON_DECSTR_CHUNKSIZE; + + /* Ensure space for 1:1 output plus one escape. */ + q = DUK_BW_ENSURE_RAW(js_ctx->thr, bw, safe + DUK_UNICODE_MAX_XUTF8_LENGTH, q); + + p = js_ctx->p; /* temp copy, write back for next loop */ + for (;;) { + if (safe == 0) { + js_ctx->p = p; + break; + } + safe--; + + /* End of input (NUL) goes through slow path and causes SyntaxError. */ + DUK_ASSERT(duk__json_decstr_lookup[0] == 0x00); + + b = *p++; + x = (duk_small_int_t) duk__json_decstr_lookup[b]; + if (DUK_LIKELY(x != 0)) { + /* Fast path, decode as is. */ + *q++ = b; + } else if (b == DUK_ASC_DOUBLEQUOTE) { + js_ctx->p = p; + goto found_quote; + } else if (b == DUK_ASC_BACKSLASH) { + /* We've ensured space for one escaped input; then + * bail out and recheck (this makes escape handling + * quite slow but it's uncommon). + */ + js_ctx->p = p; + if (duk__dec_string_escape(js_ctx, &q) != 0) { + goto syntax_error; + } + break; + } else { + js_ctx->p = p; + goto syntax_error; + } + } + } + found_quote: +#else /* DUK_USE_JSON_DECSTRING_FASTPATH */ + for (;;) { + duk_uint8_t x; + + q = DUK_BW_ENSURE_RAW(js_ctx->thr, bw, DUK_UNICODE_MAX_XUTF8_LENGTH, q); + + x = duk__dec_get(js_ctx); + + if (x == DUK_ASC_DOUBLEQUOTE) { + break; + } else if (x == DUK_ASC_BACKSLASH) { + if (duk__dec_string_escape(js_ctx, &q) != 0) { + goto syntax_error; + } + } else if (x < 0x20) { + /* catches EOF (NUL) */ + goto syntax_error; + } else { + *q++ = (duk_uint8_t) x; + } + } +#endif /* DUK_USE_JSON_DECSTRING_FASTPATH */ + + DUK_BW_SETPTR_AND_COMPACT(js_ctx->thr, bw, q); + (void) duk_buffer_to_string(thr, -1); /* Safe if input string is safe. */ + + /* [ ... str ] */ + + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} + +#if defined(DUK_USE_JX) +/* Decode a plain string consisting entirely of identifier characters. + * Used to parse plain keys (e.g. "foo: 123"). + */ +DUK_LOCAL void duk__dec_plain_string(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + const duk_uint8_t *p; + duk_small_int_t x; + + /* Caller has already eaten the first char so backtrack one byte. */ + + js_ctx->p--; /* safe */ + p = js_ctx->p; + + /* Here again we parse bytes, and non-ASCII UTF-8 will cause end of + * parsing (which is correct except if there are non-shortest encodings). + * There is also no need to check explicitly for end of input buffer as + * the input is NUL padded and NUL will exit the parsing loop. + * + * Because no unescaping takes place, we can just scan to the end of the + * plain string and intern from the input buffer. + */ + + for (;;) { + x = *p; + + /* There is no need to check the first character specially here + * (i.e. reject digits): the caller only accepts valid initial + * characters and won't call us if the first character is a digit. + * This also ensures that the plain string won't be empty. + */ + + if (!duk_unicode_is_identifier_part((duk_codepoint_t) x)) { + break; + } + p++; + } + + duk_push_lstring(thr, (const char *) js_ctx->p, (duk_size_t) (p - js_ctx->p)); + js_ctx->p = p; + + /* [ ... str ] */ +} +#endif /* DUK_USE_JX */ + +#if defined(DUK_USE_JX) +DUK_LOCAL void duk__dec_pointer(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + const duk_uint8_t *p; + duk_small_int_t x; + void *voidptr; + + /* Caller has already eaten the first character ('(') which we don't need. */ + + p = js_ctx->p; + + for (;;) { + x = *p; + + /* Assume that the native representation never contains a closing + * parenthesis. + */ + + if (x == DUK_ASC_RPAREN) { + break; + } else if (x <= 0) { + /* NUL term or -1 (EOF), NUL check would suffice */ + goto syntax_error; + } + p++; + } + + /* There is no need to NUL delimit the sscanf() call: trailing garbage is + * ignored and there is always a NUL terminator which will force an error + * if no error is encountered before it. It's possible that the scan + * would scan further than between [js_ctx->p,p[ though and we'd advance + * by less than the scanned value. + * + * Because pointers are platform specific, a failure to scan a pointer + * results in a null pointer which is a better placeholder than a missing + * value or an error. + */ + + voidptr = NULL; + (void) DUK_SSCANF((const char *) js_ctx->p, DUK_STR_FMT_PTR, &voidptr); + duk_push_pointer(thr, voidptr); + js_ctx->p = p + 1; /* skip ')' */ + + /* [ ... ptr ] */ + + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} +#endif /* DUK_USE_JX */ + +#if defined(DUK_USE_JX) +DUK_LOCAL void duk__dec_buffer(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + const duk_uint8_t *p; + duk_uint8_t *buf; + duk_size_t src_len; + duk_small_int_t x; + + /* Caller has already eaten the first character ('|') which we don't need. */ + + p = js_ctx->p; + + /* XXX: Would be nice to share the fast path loop from duk_hex_decode() + * and avoid creating a temporary buffer. However, there are some + * differences which prevent trivial sharing: + * + * - Pipe char detection + * - EOF detection + * - Unknown length of input and output + * + * The best approach here would be a bufwriter and a reasonaly sized + * safe inner loop (e.g. 64 output bytes at a time). + */ + + for (;;) { + x = *p; + + /* This loop intentionally does not ensure characters are valid + * ([0-9a-fA-F]) because the hex decode call below will do that. + */ + if (x == DUK_ASC_PIPE) { + break; + } else if (x <= 0) { + /* NUL term or -1 (EOF), NUL check would suffice */ + goto syntax_error; + } + p++; + } + + /* XXX: this is not very nice; unnecessary copy is made. */ + src_len = (duk_size_t) (p - js_ctx->p); + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, src_len); + DUK_ASSERT(buf != NULL); + duk_memcpy((void *) buf, (const void *) js_ctx->p, src_len); + duk_hex_decode(thr, -1); + + js_ctx->p = p + 1; /* skip '|' */ + + /* [ ... buf ] */ + + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} +#endif /* DUK_USE_JX */ + +/* Parse a number, other than NaN or +/- Infinity */ +DUK_LOCAL void duk__dec_number(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + const duk_uint8_t *p_start; + const duk_uint8_t *p; + duk_uint8_t x; + duk_small_uint_t s2n_flags; + + DUK_DDD(DUK_DDDPRINT("parse_number")); + + p_start = js_ctx->p; + + /* First pass parse is very lenient (e.g. allows '1.2.3') and extracts a + * string for strict number parsing. + */ + + p = js_ctx->p; + for (;;) { + x = *p; + + DUK_DDD(DUK_DDDPRINT("parse_number: p_start=%p, p=%p, p_end=%p, x=%ld", + (const void *) p_start, (const void *) p, + (const void *) js_ctx->p_end, (long) x)); + +#if defined(DUK_USE_JSON_DECNUMBER_FASTPATH) + /* This fast path is pretty marginal in practice. + * XXX: candidate for removal. + */ + DUK_ASSERT(duk__json_decnumber_lookup[0x00] == 0x00); /* end-of-input breaks */ + if (duk__json_decnumber_lookup[x] == 0) { + break; + } +#else /* DUK_USE_JSON_DECNUMBER_FASTPATH */ + if (!((x >= DUK_ASC_0 && x <= DUK_ASC_9) || + (x == DUK_ASC_PERIOD || x == DUK_ASC_LC_E || + x == DUK_ASC_UC_E || x == DUK_ASC_MINUS || x == DUK_ASC_PLUS))) { + /* Plus sign must be accepted for positive exponents + * (e.g. '1.5e+2'). This clause catches NULs. + */ + break; + } +#endif /* DUK_USE_JSON_DECNUMBER_FASTPATH */ + p++; /* safe, because matched (NUL causes a break) */ + } + js_ctx->p = p; + + DUK_ASSERT(js_ctx->p > p_start); + duk_push_lstring(thr, (const char *) p_start, (duk_size_t) (p - p_start)); + + s2n_flags = DUK_S2N_FLAG_ALLOW_EXP | + DUK_S2N_FLAG_ALLOW_MINUS | /* but don't allow leading plus */ + DUK_S2N_FLAG_ALLOW_FRAC; + + DUK_DDD(DUK_DDDPRINT("parse_number: string before parsing: %!T", + (duk_tval *) duk_get_tval(thr, -1))); + duk_numconv_parse(thr, 10 /*radix*/, s2n_flags); + if (duk_is_nan(thr, -1)) { + duk__dec_syntax_error(js_ctx); + } + DUK_ASSERT(duk_is_number(thr, -1)); + DUK_DDD(DUK_DDDPRINT("parse_number: final number: %!T", + (duk_tval *) duk_get_tval(thr, -1))); + + /* [ ... num ] */ +} + +DUK_LOCAL void duk__dec_objarr_entry(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_require_stack(thr, DUK_JSON_DEC_REQSTACK); + + /* c recursion check */ + + DUK_ASSERT_DISABLE(js_ctx->recursion_depth >= 0); /* unsigned */ + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + if (js_ctx->recursion_depth >= js_ctx->recursion_limit) { + DUK_ERROR_RANGE(thr, DUK_STR_JSONDEC_RECLIMIT); + DUK_WO_NORETURN(return;); + } + js_ctx->recursion_depth++; +} + +DUK_LOCAL void duk__dec_objarr_exit(duk_json_dec_ctx *js_ctx) { + /* c recursion check */ + + DUK_ASSERT(js_ctx->recursion_depth > 0); + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + js_ctx->recursion_depth--; +} + +DUK_LOCAL void duk__dec_object(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_int_t key_count; /* XXX: a "first" flag would suffice */ + duk_uint8_t x; + + DUK_DDD(DUK_DDDPRINT("parse_object")); + + duk__dec_objarr_entry(js_ctx); + + duk_push_object(thr); + + /* Initial '{' has been checked and eaten by caller. */ + + key_count = 0; + for (;;) { + x = duk__dec_get_nonwhite(js_ctx); + + DUK_DDD(DUK_DDDPRINT("parse_object: obj=%!T, x=%ld, key_count=%ld", + (duk_tval *) duk_get_tval(thr, -1), + (long) x, (long) key_count)); + + /* handle comma and closing brace */ + + if (x == DUK_ASC_COMMA && key_count > 0) { + /* accept comma, expect new value */ + x = duk__dec_get_nonwhite(js_ctx); + } else if (x == DUK_ASC_RCURLY) { + /* eat closing brace */ + break; + } else if (key_count == 0) { + /* accept anything, expect first value (EOF will be + * caught by key parsing below. + */ + ; + } else { + /* catches EOF (NUL) and initial comma */ + goto syntax_error; + } + + /* parse key and value */ + + if (x == DUK_ASC_DOUBLEQUOTE) { + duk__dec_string(js_ctx); +#if defined(DUK_USE_JX) + } else if (js_ctx->flag_ext_custom && + duk_unicode_is_identifier_start((duk_codepoint_t) x)) { + duk__dec_plain_string(js_ctx); +#endif + } else { + goto syntax_error; + } + + /* [ ... obj key ] */ + + x = duk__dec_get_nonwhite(js_ctx); + if (x != DUK_ASC_COLON) { + goto syntax_error; + } + + duk__dec_value(js_ctx); + + /* [ ... obj key val ] */ + + duk_xdef_prop_wec(thr, -3); + + /* [ ... obj ] */ + + key_count++; + } + + /* [ ... obj ] */ + + DUK_DDD(DUK_DDDPRINT("parse_object: final object is %!T", + (duk_tval *) duk_get_tval(thr, -1))); + + duk__dec_objarr_exit(js_ctx); + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} + +DUK_LOCAL void duk__dec_array(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_uarridx_t arr_idx; + duk_uint8_t x; + + DUK_DDD(DUK_DDDPRINT("parse_array")); + + duk__dec_objarr_entry(js_ctx); + + duk_push_array(thr); + + /* Initial '[' has been checked and eaten by caller. */ + + arr_idx = 0; + for (;;) { + x = duk__dec_get_nonwhite(js_ctx); + + DUK_DDD(DUK_DDDPRINT("parse_array: arr=%!T, x=%ld, arr_idx=%ld", + (duk_tval *) duk_get_tval(thr, -1), + (long) x, (long) arr_idx)); + + /* handle comma and closing bracket */ + + if ((x == DUK_ASC_COMMA) && (arr_idx != 0)) { + /* accept comma, expect new value */ + ; + } else if (x == DUK_ASC_RBRACKET) { + /* eat closing bracket */ + break; + } else if (arr_idx == 0) { + /* accept anything, expect first value (EOF will be + * caught by duk__dec_value() below. + */ + js_ctx->p--; /* backtrack (safe) */ + } else { + /* catches EOF (NUL) and initial comma */ + goto syntax_error; + } + + /* parse value */ + + duk__dec_value(js_ctx); + + /* [ ... arr val ] */ + + duk_xdef_prop_index_wec(thr, -2, arr_idx); + arr_idx++; + } + + /* Must set 'length' explicitly when using duk_xdef_prop_xxx() to + * set the values. + */ + + duk_set_length(thr, -1, arr_idx); + + /* [ ... arr ] */ + + DUK_DDD(DUK_DDDPRINT("parse_array: final array is %!T", + (duk_tval *) duk_get_tval(thr, -1))); + + duk__dec_objarr_exit(js_ctx); + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} + +DUK_LOCAL void duk__dec_value(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_uint8_t x; + + x = duk__dec_get_nonwhite(js_ctx); + + DUK_DDD(DUK_DDDPRINT("parse_value: initial x=%ld", (long) x)); + + /* Note: duk__dec_req_stridx() backtracks one char */ + + if (x == DUK_ASC_DOUBLEQUOTE) { + duk__dec_string(js_ctx); + } else if ((x >= DUK_ASC_0 && x <= DUK_ASC_9) || (x == DUK_ASC_MINUS)) { +#if defined(DUK_USE_JX) + if (js_ctx->flag_ext_custom && x == DUK_ASC_MINUS && duk__dec_peek(js_ctx) == DUK_ASC_UC_I) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_MINUS_INFINITY); /* "-Infinity", '-' has been eaten */ + duk_push_number(thr, -DUK_DOUBLE_INFINITY); + } else { +#else + { /* unconditional block */ +#endif + /* We already ate 'x', so backup one byte. */ + js_ctx->p--; /* safe */ + duk__dec_number(js_ctx); + } + } else if (x == DUK_ASC_LC_T) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_TRUE); + duk_push_true(thr); + } else if (x == DUK_ASC_LC_F) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_FALSE); + duk_push_false(thr); + } else if (x == DUK_ASC_LC_N) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_LC_NULL); + duk_push_null(thr); +#if defined(DUK_USE_JX) + } else if (js_ctx->flag_ext_custom && x == DUK_ASC_LC_U) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_LC_UNDEFINED); + duk_push_undefined(thr); + } else if (js_ctx->flag_ext_custom && x == DUK_ASC_UC_N) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_NAN); + duk_push_nan(thr); + } else if (js_ctx->flag_ext_custom && x == DUK_ASC_UC_I) { + duk__dec_req_stridx(js_ctx, DUK_STRIDX_INFINITY); + duk_push_number(thr, DUK_DOUBLE_INFINITY); + } else if (js_ctx->flag_ext_custom && x == DUK_ASC_LPAREN) { + duk__dec_pointer(js_ctx); + } else if (js_ctx->flag_ext_custom && x == DUK_ASC_PIPE) { + duk__dec_buffer(js_ctx); +#endif + } else if (x == DUK_ASC_LCURLY) { + duk__dec_object(js_ctx); + } else if (x == DUK_ASC_LBRACKET) { + duk__dec_array(js_ctx); + } else { + /* catches EOF (NUL) */ + goto syntax_error; + } + + duk__dec_eat_white(js_ctx); + + /* [ ... val ] */ + return; + + syntax_error: + duk__dec_syntax_error(js_ctx); + DUK_UNREACHABLE(); +} + +/* Recursive value reviver, implements the Walk() algorithm. No C recursion + * check is done here because the initial parsing step will already ensure + * there is a reasonable limit on C recursion depth and hence object depth. + */ +DUK_LOCAL void duk__dec_reviver_walk(duk_json_dec_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_hobject *h; + duk_uarridx_t i, arr_len; + + DUK_DDD(DUK_DDDPRINT("walk: top=%ld, holder=%!T, name=%!T", + (long) duk_get_top(thr), + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + + duk_dup_top(thr); + duk_get_prop(thr, -3); /* -> [ ... holder name val ] */ + + h = duk_get_hobject(thr, -1); + if (h != NULL) { + if (duk_js_isarray_hobject(h)) { + arr_len = (duk_uarridx_t) duk_get_length(thr, -1); + for (i = 0; i < arr_len; i++) { + /* [ ... holder name val ] */ + + DUK_DDD(DUK_DDDPRINT("walk: array, top=%ld, i=%ld, arr_len=%ld, holder=%!T, name=%!T, val=%!T", + (long) duk_get_top(thr), (long) i, (long) arr_len, + (duk_tval *) duk_get_tval(thr, -3), (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + + duk_dup_top(thr); + (void) duk_push_uint_to_hstring(thr, (duk_uint_t) i); /* -> [ ... holder name val val ToString(i) ] */ + duk__dec_reviver_walk(js_ctx); /* -> [ ... holder name val new_elem ] */ + + if (duk_is_undefined(thr, -1)) { + duk_pop(thr); + duk_del_prop_index(thr, -1, i); + } else { + /* XXX: duk_xdef_prop_index_wec() would be more appropriate + * here but it currently makes some assumptions that might + * not hold (e.g. that previous property is not an accessor). + */ + duk_put_prop_index(thr, -2, i); + } + } + } else { + /* [ ... holder name val ] */ + duk_enum(thr, -1, DUK_ENUM_OWN_PROPERTIES_ONLY /*flags*/); + while (duk_next(thr, -1 /*enum_index*/, 0 /*get_value*/)) { + DUK_DDD(DUK_DDDPRINT("walk: object, top=%ld, holder=%!T, name=%!T, val=%!T, enum=%!iT, obj_key=%!T", + (long) duk_get_top(thr), (duk_tval *) duk_get_tval(thr, -5), + (duk_tval *) duk_get_tval(thr, -4), (duk_tval *) duk_get_tval(thr, -3), + (duk_tval *) duk_get_tval(thr, -2), (duk_tval *) duk_get_tval(thr, -1))); + + /* [ ... holder name val enum obj_key ] */ + duk_dup_m3(thr); + duk_dup_m2(thr); + + /* [ ... holder name val enum obj_key val obj_key ] */ + duk__dec_reviver_walk(js_ctx); + + /* [ ... holder name val enum obj_key new_elem ] */ + if (duk_is_undefined(thr, -1)) { + duk_pop(thr); + duk_del_prop(thr, -3); + } else { + /* XXX: duk_xdef_prop_index_wec() would be more appropriate + * here but it currently makes some assumptions that might + * not hold (e.g. that previous property is not an accessor). + * + * Using duk_put_prop() works incorrectly with '__proto__' + * if the own property with that name has been deleted. This + * does not happen normally, but a clever reviver can trigger + * that, see complex reviver case in: test-bug-json-parse-__proto__.js. + */ + duk_put_prop(thr, -4); + } + } + duk_pop(thr); /* pop enum */ + } + } + + /* [ ... holder name val ] */ + + duk_dup(thr, js_ctx->idx_reviver); + duk_insert(thr, -4); /* -> [ ... reviver holder name val ] */ + duk_call_method(thr, 2); /* -> [ ... res ] */ + + DUK_DDD(DUK_DDDPRINT("walk: top=%ld, result=%!T", + (long) duk_get_top(thr), (duk_tval *) duk_get_tval(thr, -1))); +} + +/* + * Stringify implementation. + */ + +#define DUK__EMIT_1(js_ctx,ch) duk__emit_1((js_ctx), (duk_uint_fast8_t) (ch)) +#define DUK__EMIT_2(js_ctx,ch1,ch2) duk__emit_2((js_ctx), (duk_uint_fast8_t) (ch1), (duk_uint_fast8_t) (ch2)) +#define DUK__EMIT_HSTR(js_ctx,h) duk__emit_hstring((js_ctx), (h)) +#if defined(DUK_USE_FASTINT) || defined(DUK_USE_JX) || defined(DUK_USE_JC) +#define DUK__EMIT_CSTR(js_ctx,p) duk__emit_cstring((js_ctx), (p)) +#endif +#define DUK__EMIT_STRIDX(js_ctx,i) duk__emit_stridx((js_ctx), (i)) +#define DUK__UNEMIT_1(js_ctx) duk__unemit_1((js_ctx)) + +DUK_LOCAL void duk__emit_1(duk_json_enc_ctx *js_ctx, duk_uint_fast8_t ch) { + DUK_BW_WRITE_ENSURE_U8(js_ctx->thr, &js_ctx->bw, ch); +} + +DUK_LOCAL void duk__emit_2(duk_json_enc_ctx *js_ctx, duk_uint_fast8_t ch1, duk_uint_fast8_t ch2) { + DUK_BW_WRITE_ENSURE_U8_2(js_ctx->thr, &js_ctx->bw, ch1, ch2); +} + +DUK_LOCAL void duk__emit_hstring(duk_json_enc_ctx *js_ctx, duk_hstring *h) { + DUK_BW_WRITE_ENSURE_HSTRING(js_ctx->thr, &js_ctx->bw, h); +} + +#if defined(DUK_USE_FASTINT) || defined(DUK_USE_JX) || defined(DUK_USE_JC) +DUK_LOCAL void duk__emit_cstring(duk_json_enc_ctx *js_ctx, const char *str) { + DUK_BW_WRITE_ENSURE_CSTRING(js_ctx->thr, &js_ctx->bw, str); +} +#endif + +DUK_LOCAL void duk__emit_stridx(duk_json_enc_ctx *js_ctx, duk_small_uint_t stridx) { + duk_hstring *h; + + DUK_ASSERT_STRIDX_VALID(stridx); + h = DUK_HTHREAD_GET_STRING(js_ctx->thr, stridx); + DUK_ASSERT(h != NULL); + + DUK_BW_WRITE_ENSURE_HSTRING(js_ctx->thr, &js_ctx->bw, h); +} + +DUK_LOCAL void duk__unemit_1(duk_json_enc_ctx *js_ctx) { + DUK_ASSERT(DUK_BW_GET_SIZE(js_ctx->thr, &js_ctx->bw) >= 1); + DUK_BW_ADD_PTR(js_ctx->thr, &js_ctx->bw, -1); +} + +#define DUK__MKESC(nybbles,esc1,esc2) \ + (((duk_uint_fast32_t) (nybbles)) << 16) | \ + (((duk_uint_fast32_t) (esc1)) << 8) | \ + ((duk_uint_fast32_t) (esc2)) + +DUK_LOCAL duk_uint8_t *duk__emit_esc_auto_fast(duk_json_enc_ctx *js_ctx, duk_uint_fast32_t cp, duk_uint8_t *q) { + duk_uint_fast32_t tmp; + duk_small_uint_t dig; + + DUK_UNREF(js_ctx); + + /* Caller ensures space for at least DUK__JSON_MAX_ESC_LEN. */ + + /* Select appropriate escape format automatically, and set 'tmp' to a + * value encoding both the escape format character and the nybble count: + * + * (nybble_count << 16) | (escape_char1) | (escape_char2) + */ + +#if defined(DUK_USE_JX) + if (DUK_LIKELY(cp < 0x100UL)) { + if (DUK_UNLIKELY(js_ctx->flag_ext_custom != 0U)) { + tmp = DUK__MKESC(2, DUK_ASC_BACKSLASH, DUK_ASC_LC_X); + } else { + tmp = DUK__MKESC(4, DUK_ASC_BACKSLASH, DUK_ASC_LC_U); + } + } else +#endif + if (DUK_LIKELY(cp < 0x10000UL)) { + tmp = DUK__MKESC(4, DUK_ASC_BACKSLASH, DUK_ASC_LC_U); + } else { +#if defined(DUK_USE_JX) + if (DUK_LIKELY(js_ctx->flag_ext_custom != 0U)) { + tmp = DUK__MKESC(8, DUK_ASC_BACKSLASH, DUK_ASC_UC_U); + } else +#endif + { + /* In compatible mode and standard JSON mode, output + * something useful for non-BMP characters. This won't + * roundtrip but will still be more or less readable and + * more useful than an error. + */ + tmp = DUK__MKESC(8, DUK_ASC_UC_U, DUK_ASC_PLUS); + } + } + + *q++ = (duk_uint8_t) ((tmp >> 8) & 0xff); + *q++ = (duk_uint8_t) (tmp & 0xff); + + tmp = tmp >> 16; + while (tmp > 0) { + tmp--; + dig = (duk_small_uint_t) ((cp >> (4 * tmp)) & 0x0f); + *q++ = duk_lc_digits[dig]; + } + + return q; +} + +DUK_LOCAL void duk__enc_key_autoquote(duk_json_enc_ctx *js_ctx, duk_hstring *k) { + const duk_int8_t *p, *p_start, *p_end; /* Note: intentionally signed. */ + duk_size_t k_len; + duk_codepoint_t cp; + + DUK_ASSERT(k != NULL); + + /* Accept ASCII strings which conform to identifier requirements + * as being emitted without key quotes. Since we only accept ASCII + * there's no need for actual decoding: 'p' is intentionally signed + * so that bytes >= 0x80 extend to negative values and are rejected + * as invalid identifier codepoints. + */ + + if (js_ctx->flag_avoid_key_quotes) { + k_len = DUK_HSTRING_GET_BYTELEN(k); + p_start = (const duk_int8_t *) DUK_HSTRING_GET_DATA(k); + p_end = p_start + k_len; + p = p_start; + + if (p == p_end) { + /* Zero length string is not accepted without quotes */ + goto quote_normally; + } + cp = (duk_codepoint_t) (*p++); + if (DUK_UNLIKELY(!duk_unicode_is_identifier_start(cp))) { + goto quote_normally; + } + while (p < p_end) { + cp = (duk_codepoint_t) (*p++); + if (DUK_UNLIKELY(!duk_unicode_is_identifier_part(cp))) { + goto quote_normally; + } + } + + /* This seems faster than emitting bytes one at a time and + * then potentially rewinding. + */ + DUK__EMIT_HSTR(js_ctx, k); + return; + } + + quote_normally: + duk__enc_quote_string(js_ctx, k); +} + +/* The Quote(value) operation: quote a string. + * + * Stack policy: [ ] -> [ ]. + */ + +DUK_LOCAL void duk__enc_quote_string(duk_json_enc_ctx *js_ctx, duk_hstring *h_str) { + duk_hthread *thr = js_ctx->thr; + const duk_uint8_t *p, *p_start, *p_end, *p_now, *p_tmp; + duk_uint8_t *q; + duk_ucodepoint_t cp; /* typed for duk_unicode_decode_xutf8() */ + + DUK_DDD(DUK_DDDPRINT("duk__enc_quote_string: h_str=%!O", (duk_heaphdr *) h_str)); + + DUK_ASSERT(h_str != NULL); + p_start = DUK_HSTRING_GET_DATA(h_str); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_str); + p = p_start; + + DUK__EMIT_1(js_ctx, DUK_ASC_DOUBLEQUOTE); + + /* Encode string in small chunks, estimating the maximum expansion so that + * there's no need to ensure space while processing the chunk. + */ + + while (p < p_end) { + duk_size_t left, now, space; + + left = (duk_size_t) (p_end - p); + now = (left > DUK__JSON_ENCSTR_CHUNKSIZE ? + DUK__JSON_ENCSTR_CHUNKSIZE : left); + + /* Maximum expansion per input byte is 6: + * - invalid UTF-8 byte causes "\uXXXX" to be emitted (6/1 = 6). + * - 2-byte UTF-8 encodes as "\uXXXX" (6/2 = 3). + * - 4-byte UTF-8 encodes as "\Uxxxxxxxx" (10/4 = 2.5). + */ + space = now * 6; + q = DUK_BW_ENSURE_GETPTR(thr, &js_ctx->bw, space); + + p_now = p + now; + + while (p < p_now) { +#if defined(DUK_USE_JSON_QUOTESTRING_FASTPATH) + duk_uint8_t b; + + b = duk__json_quotestr_lookup[*p++]; + if (DUK_LIKELY(b < 0x80)) { + /* Most input bytes go through here. */ + *q++ = b; + } else if (b >= 0xa0) { + *q++ = DUK_ASC_BACKSLASH; + *q++ = (duk_uint8_t) (b - 0x80); + } else if (b == 0x80) { + cp = (duk_ucodepoint_t) (*(p - 1)); + q = duk__emit_esc_auto_fast(js_ctx, cp, q); + } else if (b == 0x7f && js_ctx->flag_ascii_only) { + /* 0x7F is special */ + DUK_ASSERT(b == 0x81); + cp = (duk_ucodepoint_t) 0x7f; + q = duk__emit_esc_auto_fast(js_ctx, cp, q); + } else { + DUK_ASSERT(b == 0x81); + p--; + + /* slow path is shared */ +#else /* DUK_USE_JSON_QUOTESTRING_FASTPATH */ + cp = *p; + + if (DUK_LIKELY(cp <= 0x7f)) { + /* ascii fast path: avoid decoding utf-8 */ + p++; + if (cp == 0x22 || cp == 0x5c) { + /* double quote or backslash */ + *q++ = DUK_ASC_BACKSLASH; + *q++ = (duk_uint8_t) cp; + } else if (cp < 0x20) { + duk_uint_fast8_t esc_char; + + /* This approach is a bit shorter than a straight + * if-else-ladder and also a bit faster. + */ + if (cp < (sizeof(duk__json_quotestr_esc) / sizeof(duk_uint8_t)) && + (esc_char = duk__json_quotestr_esc[cp]) != 0) { + *q++ = DUK_ASC_BACKSLASH; + *q++ = (duk_uint8_t) esc_char; + } else { + q = duk__emit_esc_auto_fast(js_ctx, cp, q); + } + } else if (cp == 0x7f && js_ctx->flag_ascii_only) { + q = duk__emit_esc_auto_fast(js_ctx, cp, q); + } else { + /* any other printable -> as is */ + *q++ = (duk_uint8_t) cp; + } + } else { + /* slow path is shared */ +#endif /* DUK_USE_JSON_QUOTESTRING_FASTPATH */ + + /* slow path decode */ + + /* If XUTF-8 decoding fails, treat the offending byte as a codepoint directly + * and go forward one byte. This is of course very lossy, but allows some kind + * of output to be produced even for internal strings which don't conform to + * XUTF-8. All standard ECMAScript strings are always CESU-8, so this behavior + * does not violate the ECMAScript specification. The behavior is applied to + * all modes, including ECMAScript standard JSON. Because the current XUTF-8 + * decoding is not very strict, this behavior only really affects initial bytes + * and truncated codepoints. + * + * Another alternative would be to scan forwards to start of next codepoint + * (or end of input) and emit just one replacement codepoint. + */ + + p_tmp = p; + if (!duk_unicode_decode_xutf8(thr, &p, p_start, p_end, &cp)) { + /* Decode failed. */ + cp = *p_tmp; + p = p_tmp + 1; + } + +#if defined(DUK_USE_NONSTD_JSON_ESC_U2028_U2029) + if (js_ctx->flag_ascii_only || cp == 0x2028 || cp == 0x2029) { +#else + if (js_ctx->flag_ascii_only) { +#endif + q = duk__emit_esc_auto_fast(js_ctx, cp, q); + } else { + /* as is */ + DUK_RAW_WRITEINC_XUTF8(q, cp); + } + } + } + + DUK_BW_SET_PTR(thr, &js_ctx->bw, q); + } + + DUK__EMIT_1(js_ctx, DUK_ASC_DOUBLEQUOTE); +} + +/* Encode a double (checked by caller) from stack top. Stack top may be + * replaced by serialized string but is not popped (caller does that). + */ +DUK_LOCAL void duk__enc_double(duk_json_enc_ctx *js_ctx) { + duk_hthread *thr; + duk_tval *tv; + duk_double_t d; + duk_small_int_t c; + duk_small_int_t s; + duk_small_uint_t stridx; + duk_small_uint_t n2s_flags; + duk_hstring *h_str; + + DUK_ASSERT(js_ctx != NULL); + thr = js_ctx->thr; + DUK_ASSERT(thr != NULL); + + /* Caller must ensure 'tv' is indeed a double and not a fastint! */ + tv = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(DUK_TVAL_IS_DOUBLE(tv)); + d = DUK_TVAL_GET_DOUBLE(tv); + + c = (duk_small_int_t) DUK_FPCLASSIFY(d); + s = (duk_small_int_t) DUK_SIGNBIT(d); + DUK_UNREF(s); + + if (DUK_LIKELY(!(c == DUK_FP_INFINITE || c == DUK_FP_NAN))) { + DUK_ASSERT(DUK_ISFINITE(d)); + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + /* Negative zero needs special handling in JX/JC because + * it would otherwise serialize to '0', not '-0'. + */ + if (DUK_UNLIKELY(c == DUK_FP_ZERO && s != 0 && + (js_ctx->flag_ext_custom_or_compatible))) { + duk_push_hstring_stridx(thr, DUK_STRIDX_MINUS_ZERO); /* '-0' */ + } else +#endif /* DUK_USE_JX || DUK_USE_JC */ + { + n2s_flags = 0; + /* [ ... number ] -> [ ... string ] */ + duk_numconv_stringify(thr, 10 /*radix*/, 0 /*digits*/, n2s_flags); + } + h_str = duk_known_hstring(thr, -1); + DUK__EMIT_HSTR(js_ctx, h_str); + return; + } + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (!(js_ctx->flags & (DUK_JSON_FLAG_EXT_CUSTOM | + DUK_JSON_FLAG_EXT_COMPATIBLE))) { + stridx = DUK_STRIDX_LC_NULL; + } else if (c == DUK_FP_NAN) { + stridx = js_ctx->stridx_custom_nan; + } else if (s == 0) { + stridx = js_ctx->stridx_custom_posinf; + } else { + stridx = js_ctx->stridx_custom_neginf; + } +#else + stridx = DUK_STRIDX_LC_NULL; +#endif + DUK__EMIT_STRIDX(js_ctx, stridx); +} + +#if defined(DUK_USE_FASTINT) +/* Encode a fastint from duk_tval ptr, no value stack effects. */ +DUK_LOCAL void duk__enc_fastint_tval(duk_json_enc_ctx *js_ctx, duk_tval *tv) { + duk_int64_t v; + + /* Fastint range is signed 48-bit so longest value is -2^47 = -140737488355328 + * (16 chars long), longest signed 64-bit value is -2^63 = -9223372036854775808 + * (20 chars long). Alloc space for 64-bit range to be safe. + */ + duk_uint8_t buf[20 + 1]; + + /* Caller must ensure 'tv' is indeed a fastint! */ + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv)); + v = DUK_TVAL_GET_FASTINT(tv); + + /* XXX: There are no format strings in duk_config.h yet, could add + * one for formatting duk_int64_t. For now, assumes "%lld" and that + * "long long" type exists. Could also rely on C99 directly but that + * won't work for older MSVC. + */ + DUK_SPRINTF((char *) buf, "%lld", (long long) v); + DUK__EMIT_CSTR(js_ctx, (const char *) buf); +} +#endif + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) +#if defined(DUK_USE_HEX_FASTPATH) +DUK_LOCAL duk_uint8_t *duk__enc_buffer_data_hex(const duk_uint8_t *src, duk_size_t src_len, duk_uint8_t *dst) { + duk_uint8_t *q; + duk_uint16_t *q16; + duk_small_uint_t x; + duk_size_t i, len_safe; +#if !defined(DUK_USE_UNALIGNED_ACCESSES_POSSIBLE) + duk_bool_t shift_dst; +#endif + + /* Unlike in duk_hex_encode() 'dst' is not necessarily aligned by 2. + * For platforms where unaligned accesses are not allowed, shift 'dst' + * ahead by 1 byte to get alignment and then duk_memmove() the result + * in place. The faster encoding loop makes up the difference. + * There's always space for one extra byte because a terminator always + * follows the hex data and that's been accounted for by the caller. + */ + +#if defined(DUK_USE_UNALIGNED_ACCESSES_POSSIBLE) + q16 = (duk_uint16_t *) (void *) dst; +#else + shift_dst = (duk_bool_t) (((duk_size_t) dst) & 0x01U); + if (shift_dst) { + DUK_DD(DUK_DDPRINT("unaligned accesses not possible, dst not aligned -> step to dst + 1")); + q16 = (duk_uint16_t *) (void *) (dst + 1); + } else { + DUK_DD(DUK_DDPRINT("unaligned accesses not possible, dst is aligned")); + q16 = (duk_uint16_t *) (void *) dst; + } + DUK_ASSERT((((duk_size_t) q16) & 0x01U) == 0); +#endif + + len_safe = src_len & ~0x03U; + for (i = 0; i < len_safe; i += 4) { + q16[0] = duk_hex_enctab[src[i]]; + q16[1] = duk_hex_enctab[src[i + 1]]; + q16[2] = duk_hex_enctab[src[i + 2]]; + q16[3] = duk_hex_enctab[src[i + 3]]; + q16 += 4; + } + q = (duk_uint8_t *) q16; + +#if !defined(DUK_USE_UNALIGNED_ACCESSES_POSSIBLE) + if (shift_dst) { + q--; + duk_memmove((void *) dst, (const void *) (dst + 1), 2 * len_safe); + DUK_ASSERT(dst + 2 * len_safe == q); + } +#endif + + for (; i < src_len; i++) { + x = src[i]; + *q++ = duk_lc_digits[x >> 4]; + *q++ = duk_lc_digits[x & 0x0f]; + } + + return q; +} +#else /* DUK_USE_HEX_FASTPATH */ +DUK_LOCAL duk_uint8_t *duk__enc_buffer_data_hex(const duk_uint8_t *src, duk_size_t src_len, duk_uint8_t *dst) { + const duk_uint8_t *p; + const duk_uint8_t *p_end; + duk_uint8_t *q; + duk_small_uint_t x; + + p = src; + p_end = src + src_len; + q = dst; + while (p != p_end) { + x = *p++; + *q++ = duk_lc_digits[x >> 4]; + *q++ = duk_lc_digits[x & 0x0f]; + } + + return q; +} +#endif /* DUK_USE_HEX_FASTPATH */ + +DUK_LOCAL void duk__enc_buffer_data(duk_json_enc_ctx *js_ctx, duk_uint8_t *buf_data, duk_size_t buf_len) { + duk_hthread *thr; + duk_uint8_t *q; + duk_size_t space; + + thr = js_ctx->thr; + + DUK_ASSERT(js_ctx->flag_ext_custom || js_ctx->flag_ext_compatible); /* caller checks */ + DUK_ASSERT(js_ctx->flag_ext_custom_or_compatible); + + /* Buffer values are encoded in (lowercase) hex to make the + * binary data readable. Base64 or similar would be more + * compact but less readable, and the point of JX/JC + * variants is to be as useful to a programmer as possible. + */ + + /* The #if defined() clutter here needs to handle the three + * cases: (1) JX+JC, (2) JX only, (3) JC only. + */ + + /* Note: space must cater for both JX and JC. */ + space = 9 + buf_len * 2 + 2; + DUK_ASSERT(DUK_HBUFFER_MAX_BYTELEN <= 0x7ffffffeUL); + DUK_ASSERT((space - 2) / 2 >= buf_len); /* overflow not possible, buffer limits */ + q = DUK_BW_ENSURE_GETPTR(thr, &js_ctx->bw, space); + +#if defined(DUK_USE_JX) && defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom) +#endif +#if defined(DUK_USE_JX) + { + *q++ = DUK_ASC_PIPE; + q = duk__enc_buffer_data_hex(buf_data, buf_len, q); + *q++ = DUK_ASC_PIPE; + + } +#endif +#if defined(DUK_USE_JX) && defined(DUK_USE_JC) + else +#endif +#if defined(DUK_USE_JC) + { + DUK_ASSERT(js_ctx->flag_ext_compatible); + duk_memcpy((void *) q, (const void *) "{\"_buf\":\"", 9); /* len: 9 */ + q += 9; + q = duk__enc_buffer_data_hex(buf_data, buf_len, q); + *q++ = DUK_ASC_DOUBLEQUOTE; + *q++ = DUK_ASC_RCURLY; + } +#endif + + DUK_BW_SET_PTR(thr, &js_ctx->bw, q); +} + +DUK_LOCAL void duk__enc_buffer_jx_jc(duk_json_enc_ctx *js_ctx, duk_hbuffer *h) { + duk__enc_buffer_data(js_ctx, + (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(js_ctx->thr->heap, h), + (duk_size_t) DUK_HBUFFER_GET_SIZE(h)); +} +#endif /* DUK_USE_JX || DUK_USE_JC */ + +#if defined(DUK_USE_JSON_STRINGIFY_FASTPATH) +DUK_LOCAL void duk__enc_buffer_json_fastpath(duk_json_enc_ctx *js_ctx, duk_hbuffer *h) { + duk_size_t i, n; + const duk_uint8_t *buf; + duk_uint8_t *q; + + n = DUK_HBUFFER_GET_SIZE(h); + if (n == 0) { + DUK__EMIT_2(js_ctx, DUK_ASC_LCURLY, DUK_ASC_RCURLY); + return; + } + + DUK__EMIT_1(js_ctx, DUK_ASC_LCURLY); + + /* Maximum encoded length with 32-bit index: 1 + 10 + 2 + 3 + 1 + 1 = 18, + * with 64-bit index: 1 + 20 + 2 + 3 + 1 + 1 = 28. 32 has some slack. + * + * Note that because the output buffer is reallocated from time to time, + * side effects (such as finalizers) affecting the buffer 'h' must be + * disabled. This is the case in the JSON.stringify() fast path. + */ + + buf = (const duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(js_ctx->thr->heap, h); + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + for (i = 0; i < n; i++) { + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth + 1); + q = DUK_BW_ENSURE_GETPTR(js_ctx->thr, &js_ctx->bw, 32); + q += DUK_SPRINTF((char *) q, "\"%lu\": %u,", (unsigned long) i, (unsigned int) buf[i]); + DUK_BW_SET_PTR(js_ctx->thr, &js_ctx->bw, q); + } + } else { + q = DUK_BW_GET_PTR(js_ctx->thr, &js_ctx->bw); + for (i = 0; i < n; i++) { + q = DUK_BW_ENSURE_RAW(js_ctx->thr, &js_ctx->bw, 32, q); + q += DUK_SPRINTF((char *) q, "\"%lu\":%u,", (unsigned long) i, (unsigned int) buf[i]); + } + DUK_BW_SET_PTR(js_ctx->thr, &js_ctx->bw, q); + } + DUK__UNEMIT_1(js_ctx); /* eat trailing comma */ + + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth); + } + DUK__EMIT_1(js_ctx, DUK_ASC_RCURLY); +} +#endif /* DUK_USE_JSON_STRINGIFY_FASTPATH */ + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) +DUK_LOCAL void duk__enc_pointer(duk_json_enc_ctx *js_ctx, void *ptr) { + char buf[64]; /* XXX: how to figure correct size? */ + const char *fmt; + + DUK_ASSERT(js_ctx->flag_ext_custom || js_ctx->flag_ext_compatible); /* caller checks */ + DUK_ASSERT(js_ctx->flag_ext_custom_or_compatible); + + duk_memzero(buf, sizeof(buf)); + + /* The #if defined() clutter here needs to handle the three + * cases: (1) JX+JC, (2) JX only, (3) JC only. + */ +#if defined(DUK_USE_JX) && defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom) +#endif +#if defined(DUK_USE_JX) + { + fmt = ptr ? "(%p)" : "(null)"; + } +#endif +#if defined(DUK_USE_JX) && defined(DUK_USE_JC) + else +#endif +#if defined(DUK_USE_JC) + { + DUK_ASSERT(js_ctx->flag_ext_compatible); + fmt = ptr ? "{\"_ptr\":\"%p\"}" : "{\"_ptr\":\"null\"}"; + } +#endif + + /* When ptr == NULL, the format argument is unused. */ + DUK_SNPRINTF(buf, sizeof(buf) - 1, fmt, ptr); /* must not truncate */ + DUK__EMIT_CSTR(js_ctx, buf); +} +#endif /* DUK_USE_JX || DUK_USE_JC */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) +DUK_LOCAL void duk__enc_bufobj(duk_json_enc_ctx *js_ctx, duk_hbufobj *h_bufobj) { + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + if (h_bufobj->buf == NULL || !DUK_HBUFOBJ_VALID_SLICE(h_bufobj)) { + DUK__EMIT_STRIDX(js_ctx, DUK_STRIDX_LC_NULL); + } else { + /* Handle both full and partial slice (as long as covered). */ + duk__enc_buffer_data(js_ctx, + (duk_uint8_t *) DUK_HBUFOBJ_GET_SLICE_BASE(js_ctx->thr->heap, h_bufobj), + (duk_size_t) h_bufobj->length); + } +} +#endif /* DUK_USE_JX || DUK_USE_JC */ +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* Indent helper. Calling code relies on js_ctx->recursion_depth also being + * directly related to indent depth. + */ +#if defined(DUK_USE_PREFER_SIZE) +DUK_LOCAL void duk__enc_newline_indent(duk_json_enc_ctx *js_ctx, duk_uint_t depth) { + DUK_ASSERT(js_ctx->h_gap != NULL); + DUK_ASSERT(DUK_HSTRING_GET_BYTELEN(js_ctx->h_gap) > 0); /* caller guarantees */ + + DUK__EMIT_1(js_ctx, 0x0a); + while (depth-- > 0) { + DUK__EMIT_HSTR(js_ctx, js_ctx->h_gap); + } +} +#else /* DUK_USE_PREFER_SIZE */ +DUK_LOCAL void duk__enc_newline_indent(duk_json_enc_ctx *js_ctx, duk_uint_t depth) { + const duk_uint8_t *gap_data; + duk_size_t gap_len; + duk_size_t avail_bytes; /* bytes of indent available for copying */ + duk_size_t need_bytes; /* bytes of indent still needed */ + duk_uint8_t *p_start; + duk_uint8_t *p; + + DUK_ASSERT(js_ctx->h_gap != NULL); + DUK_ASSERT(DUK_HSTRING_GET_BYTELEN(js_ctx->h_gap) > 0); /* caller guarantees */ + + DUK__EMIT_1(js_ctx, 0x0a); + if (DUK_UNLIKELY(depth == 0)) { + return; + } + + /* To handle deeper indents efficiently, make use of copies we've + * already emitted. In effect we can emit a sequence of 1, 2, 4, + * 8, etc copies, and then finish the last run. Byte counters + * avoid multiply with gap_len on every loop. + */ + + gap_data = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(js_ctx->h_gap); + gap_len = (duk_size_t) DUK_HSTRING_GET_BYTELEN(js_ctx->h_gap); + DUK_ASSERT(gap_len > 0); + + need_bytes = gap_len * depth; + p = DUK_BW_ENSURE_GETPTR(js_ctx->thr, &js_ctx->bw, need_bytes); + p_start = p; + + duk_memcpy((void *) p, (const void *) gap_data, (size_t) gap_len); + p += gap_len; + avail_bytes = gap_len; + DUK_ASSERT(need_bytes >= gap_len); + need_bytes -= gap_len; + + while (need_bytes >= avail_bytes) { + duk_memcpy((void *) p, (const void *) p_start, (size_t) avail_bytes); + p += avail_bytes; + need_bytes -= avail_bytes; + avail_bytes <<= 1; + } + + DUK_ASSERT(need_bytes < avail_bytes); /* need_bytes may be zero */ + duk_memcpy((void *) p, (const void *) p_start, (size_t) need_bytes); + p += need_bytes; + /*avail_bytes += need_bytes*/ + + DUK_BW_SET_PTR(js_ctx->thr, &js_ctx->bw, p); +} +#endif /* DUK_USE_PREFER_SIZE */ + +/* Shared entry handling for object/array serialization. */ +DUK_LOCAL void duk__enc_objarr_entry(duk_json_enc_ctx *js_ctx, duk_idx_t *entry_top) { + duk_hthread *thr = js_ctx->thr; + duk_hobject *h_target; + duk_uint_fast32_t i, n; + + *entry_top = duk_get_top(thr); + + duk_require_stack(thr, DUK_JSON_ENC_REQSTACK); + + /* Loop check using a hybrid approach: a fixed-size visited[] array + * with overflow in a loop check object. + */ + + h_target = duk_known_hobject(thr, -1); /* object or array */ + + n = js_ctx->recursion_depth; + if (DUK_UNLIKELY(n > DUK_JSON_ENC_LOOPARRAY)) { + n = DUK_JSON_ENC_LOOPARRAY; + } + for (i = 0; i < n; i++) { + if (DUK_UNLIKELY(js_ctx->visiting[i] == h_target)) { + DUK_DD(DUK_DDPRINT("slow path loop detect")); + DUK_ERROR_TYPE(thr, DUK_STR_CYCLIC_INPUT); + DUK_WO_NORETURN(return;); + } + } + if (js_ctx->recursion_depth < DUK_JSON_ENC_LOOPARRAY) { + js_ctx->visiting[js_ctx->recursion_depth] = h_target; + } else { + duk_push_sprintf(thr, DUK_STR_FMT_PTR, (void *) h_target); + duk_dup_top(thr); /* -> [ ... voidp voidp ] */ + if (duk_has_prop(thr, js_ctx->idx_loop)) { + DUK_ERROR_TYPE(thr, DUK_STR_CYCLIC_INPUT); + DUK_WO_NORETURN(return;); + } + duk_push_true(thr); /* -> [ ... voidp true ] */ + duk_put_prop(thr, js_ctx->idx_loop); /* -> [ ... ] */ + } + + /* C recursion check. */ + + DUK_ASSERT_DISABLE(js_ctx->recursion_depth >= 0); /* unsigned */ + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + if (js_ctx->recursion_depth >= js_ctx->recursion_limit) { + DUK_ERROR_RANGE(thr, DUK_STR_JSONENC_RECLIMIT); + DUK_WO_NORETURN(return;); + } + js_ctx->recursion_depth++; + + DUK_DDD(DUK_DDDPRINT("shared entry finished: top=%ld, loop=%!T", + (long) duk_get_top(thr), (duk_tval *) duk_get_tval(thr, js_ctx->idx_loop))); +} + +/* Shared exit handling for object/array serialization. */ +DUK_LOCAL void duk__enc_objarr_exit(duk_json_enc_ctx *js_ctx, duk_idx_t *entry_top) { + duk_hthread *thr = js_ctx->thr; + duk_hobject *h_target; + + /* C recursion check. */ + + DUK_ASSERT(js_ctx->recursion_depth > 0); + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + js_ctx->recursion_depth--; + + /* Loop check. */ + + h_target = duk_known_hobject(thr, *entry_top - 1); /* original target at entry_top - 1 */ + + if (js_ctx->recursion_depth < DUK_JSON_ENC_LOOPARRAY) { + /* Previous entry was inside visited[], nothing to do. */ + } else { + duk_push_sprintf(thr, DUK_STR_FMT_PTR, (void *) h_target); + duk_del_prop(thr, js_ctx->idx_loop); /* -> [ ... ] */ + } + + /* Restore stack top after unbalanced code paths. */ + duk_set_top(thr, *entry_top); + + DUK_DDD(DUK_DDDPRINT("shared entry finished: top=%ld, loop=%!T", + (long) duk_get_top(thr), (duk_tval *) duk_get_tval(thr, js_ctx->idx_loop))); +} + +/* The JO(value) operation: encode object. + * + * Stack policy: [ object ] -> [ object ]. + */ +DUK_LOCAL void duk__enc_object(duk_json_enc_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_hstring *h_key; + duk_idx_t entry_top; + duk_idx_t idx_obj; + duk_idx_t idx_keys; + duk_bool_t emitted; + duk_uarridx_t arr_len, i; + duk_size_t prev_size; + + DUK_DDD(DUK_DDDPRINT("duk__enc_object: obj=%!T", (duk_tval *) duk_get_tval(thr, -1))); + + duk__enc_objarr_entry(js_ctx, &entry_top); + + idx_obj = entry_top - 1; + + if (js_ctx->idx_proplist >= 0) { + idx_keys = js_ctx->idx_proplist; + } else { + /* XXX: would be nice to enumerate an object at specified index */ + duk_dup(thr, idx_obj); + (void) duk_hobject_get_enumerated_keys(thr, DUK_ENUM_OWN_PROPERTIES_ONLY /*flags*/); /* [ ... target ] -> [ ... target keys ] */ + idx_keys = duk_require_normalize_index(thr, -1); + /* leave stack unbalanced on purpose */ + } + + DUK_DDD(DUK_DDDPRINT("idx_keys=%ld, h_keys=%!T", + (long) idx_keys, (duk_tval *) duk_get_tval(thr, idx_keys))); + + /* Steps 8-10 have been merged to avoid a "partial" variable. */ + + DUK__EMIT_1(js_ctx, DUK_ASC_LCURLY); + + /* XXX: keys is an internal object with all keys to be processed + * in its (gapless) array part. Because nobody can touch the keys + * object, we could iterate its array part directly (keeping in mind + * that it can be reallocated). + */ + + arr_len = (duk_uarridx_t) duk_get_length(thr, idx_keys); + emitted = 0; + for (i = 0; i < arr_len; i++) { + duk_get_prop_index(thr, idx_keys, i); /* -> [ ... key ] */ + + DUK_DDD(DUK_DDDPRINT("object property loop: holder=%!T, key=%!T", + (duk_tval *) duk_get_tval(thr, idx_obj), + (duk_tval *) duk_get_tval(thr, -1))); + + h_key = duk_known_hstring(thr, -1); + DUK_ASSERT(h_key != NULL); + DUK_ASSERT(!DUK_HSTRING_HAS_SYMBOL(h_key)); /* proplist filtering; enum options */ + + prev_size = DUK_BW_GET_SIZE(js_ctx->thr, &js_ctx->bw); + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth); + duk__enc_key_autoquote(js_ctx, h_key); + DUK__EMIT_2(js_ctx, DUK_ASC_COLON, DUK_ASC_SPACE); + } else { + duk__enc_key_autoquote(js_ctx, h_key); + DUK__EMIT_1(js_ctx, DUK_ASC_COLON); + } + + /* [ ... key ] */ + + if (DUK_UNLIKELY(duk__enc_value(js_ctx, idx_obj) == 0)) { + /* Value would yield 'undefined', so skip key altogether. + * Side effects have already happened. + */ + DUK_BW_SET_SIZE(js_ctx->thr, &js_ctx->bw, prev_size); + } else { + DUK__EMIT_1(js_ctx, DUK_ASC_COMMA); + emitted = 1; + } + + /* [ ... ] */ + } + + if (emitted) { + DUK_ASSERT(*((duk_uint8_t *) DUK_BW_GET_PTR(js_ctx->thr, &js_ctx->bw) - 1) == DUK_ASC_COMMA); + DUK__UNEMIT_1(js_ctx); /* eat trailing comma */ + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + DUK_ASSERT(js_ctx->recursion_depth >= 1); + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth - 1U); + } + } + DUK__EMIT_1(js_ctx, DUK_ASC_RCURLY); + + duk__enc_objarr_exit(js_ctx, &entry_top); + + DUK_ASSERT_TOP(thr, entry_top); +} + +/* The JA(value) operation: encode array. + * + * Stack policy: [ array ] -> [ array ]. + */ +DUK_LOCAL void duk__enc_array(duk_json_enc_ctx *js_ctx) { + duk_hthread *thr = js_ctx->thr; + duk_idx_t entry_top; + duk_idx_t idx_arr; + duk_bool_t emitted; + duk_uarridx_t i, arr_len; + + DUK_DDD(DUK_DDDPRINT("duk__enc_array: array=%!T", + (duk_tval *) duk_get_tval(thr, -1))); + + duk__enc_objarr_entry(js_ctx, &entry_top); + + idx_arr = entry_top - 1; + + /* Steps 8-10 have been merged to avoid a "partial" variable. */ + + DUK__EMIT_1(js_ctx, DUK_ASC_LBRACKET); + + arr_len = (duk_uarridx_t) duk_get_length(thr, idx_arr); + emitted = 0; + for (i = 0; i < arr_len; i++) { + DUK_DDD(DUK_DDDPRINT("array entry loop: array=%!T, index=%ld, arr_len=%ld", + (duk_tval *) duk_get_tval(thr, idx_arr), + (long) i, (long) arr_len)); + + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + DUK_ASSERT(js_ctx->recursion_depth >= 1); + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth); + } + + (void) duk_push_uint_to_hstring(thr, (duk_uint_t) i); /* -> [ ... key ] */ + + /* [ ... key ] */ + + if (DUK_UNLIKELY(duk__enc_value(js_ctx, idx_arr) == 0)) { + /* Value would normally be omitted, replace with 'null'. */ + DUK__EMIT_STRIDX(js_ctx, DUK_STRIDX_LC_NULL); + } else { + ; + } + + /* [ ... ] */ + + DUK__EMIT_1(js_ctx, DUK_ASC_COMMA); + emitted = 1; + } + + if (emitted) { + DUK_ASSERT(*((duk_uint8_t *) DUK_BW_GET_PTR(js_ctx->thr, &js_ctx->bw) - 1) == DUK_ASC_COMMA); + DUK__UNEMIT_1(js_ctx); /* eat trailing comma */ + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + DUK_ASSERT(js_ctx->recursion_depth >= 1); + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth - 1U); + } + } + DUK__EMIT_1(js_ctx, DUK_ASC_RBRACKET); + + duk__enc_objarr_exit(js_ctx, &entry_top); + + DUK_ASSERT_TOP(thr, entry_top); +} + +/* The Str(key, holder) operation. + * + * Stack policy: [ ... key ] -> [ ... ] + */ +DUK_LOCAL duk_bool_t duk__enc_value(duk_json_enc_ctx *js_ctx, duk_idx_t idx_holder) { + duk_hthread *thr = js_ctx->thr; + duk_tval *tv; + duk_tval *tv_holder; + duk_tval *tv_key; + duk_small_int_t c; + + DUK_DDD(DUK_DDDPRINT("duk__enc_value: idx_holder=%ld, holder=%!T, key=%!T", + (long) idx_holder, (duk_tval *) duk_get_tval(thr, idx_holder), + (duk_tval *) duk_get_tval(thr, -1))); + + tv_holder = DUK_GET_TVAL_POSIDX(thr, idx_holder); + DUK_ASSERT(DUK_TVAL_IS_OBJECT(tv_holder)); + tv_key = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv_key)); + DUK_ASSERT(!DUK_HSTRING_HAS_SYMBOL(DUK_TVAL_GET_STRING(tv_key))); /* Caller responsible. */ + (void) duk_hobject_getprop(thr, tv_holder, tv_key); + + /* -> [ ... key val ] */ + + DUK_DDD(DUK_DDDPRINT("value=%!T", (duk_tval *) duk_get_tval(thr, -1))); + + /* Standard JSON checks for .toJSON() only for actual objects; for + * example, setting Number.prototype.toJSON and then serializing a + * number won't invoke the .toJSON() method. However, lightfuncs and + * plain buffers mimic objects so we check for their .toJSON() method. + */ + if (duk_check_type_mask(thr, -1, DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_LIGHTFUNC | + DUK_TYPE_MASK_BUFFER)) { + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_TO_JSON); + if (duk_is_callable(thr, -1)) { /* toJSON() can also be a lightfunc */ + DUK_DDD(DUK_DDDPRINT("value is object, has callable toJSON() -> call it")); + /* XXX: duk_dup_unvalidated(thr, -2) etc. */ + duk_dup_m2(thr); /* -> [ ... key val toJSON val ] */ + duk_dup_m4(thr); /* -> [ ... key val toJSON val key ] */ + duk_call_method(thr, 1); /* -> [ ... key val val' ] */ + duk_remove_m2(thr); /* -> [ ... key val' ] */ + } else { + duk_pop(thr); /* -> [ ... key val ] */ + } + } + + /* [ ... key val ] */ + + DUK_DDD(DUK_DDDPRINT("value=%!T", (duk_tval *) duk_get_tval(thr, -1))); + + if (js_ctx->h_replacer) { + /* XXX: Here a "slice copy" would be useful. */ + DUK_DDD(DUK_DDDPRINT("replacer is set, call replacer")); + duk_push_hobject(thr, js_ctx->h_replacer); /* -> [ ... key val replacer ] */ + duk_dup(thr, idx_holder); /* -> [ ... key val replacer holder ] */ + duk_dup_m4(thr); /* -> [ ... key val replacer holder key ] */ + duk_dup_m4(thr); /* -> [ ... key val replacer holder key val ] */ + duk_call_method(thr, 2); /* -> [ ... key val val' ] */ + duk_remove_m2(thr); /* -> [ ... key val' ] */ + } + + /* [ ... key val ] */ + + DUK_DDD(DUK_DDDPRINT("value=%!T", (duk_tval *) duk_get_tval(thr, -1))); + + tv = DUK_GET_TVAL_NEGIDX(thr, -1); + if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h; + + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (DUK_HOBJECT_IS_BUFOBJ(h) && + js_ctx->flags & (DUK_JSON_FLAG_EXT_CUSTOM | DUK_JSON_FLAG_EXT_COMPATIBLE)) { + /* With JX/JC a bufferobject gets serialized specially. */ + duk_hbufobj *h_bufobj; + h_bufobj = (duk_hbufobj *) h; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + duk__enc_bufobj(js_ctx, h_bufobj); + goto pop2_emitted; + } + /* Otherwise bufferobjects get serialized as normal objects. */ +#endif /* JX || JC */ +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + c = (duk_small_int_t) DUK_HOBJECT_GET_CLASS_NUMBER(h); + switch (c) { + case DUK_HOBJECT_CLASS_NUMBER: { + DUK_DDD(DUK_DDDPRINT("value is a Number object -> coerce with ToNumber()")); + duk_to_number_m1(thr); + /* The coercion potentially invokes user .valueOf() and .toString() + * but can't result in a function value because ToPrimitive() would + * reject such a result: test-dev-json-stringify-coercion-1.js. + */ + DUK_ASSERT(!duk_is_callable(thr, -1)); + break; + } + case DUK_HOBJECT_CLASS_STRING: { + DUK_DDD(DUK_DDDPRINT("value is a String object -> coerce with ToString()")); + duk_to_string(thr, -1); + /* Same coercion behavior as for Number. */ + DUK_ASSERT(!duk_is_callable(thr, -1)); + break; + } +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + case DUK_HOBJECT_CLASS_POINTER: +#endif + case DUK_HOBJECT_CLASS_BOOLEAN: { + DUK_DDD(DUK_DDDPRINT("value is a Boolean/Buffer/Pointer object -> get internal value")); + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE); + duk_remove_m2(thr); + break; + } + default: { + /* Normal object which doesn't get automatically coerced to a + * primitive value. Functions are checked for specially. The + * primitive value coercions for Number, String, Pointer, and + * Boolean can't result in functions so suffices to check here. + * Symbol objects are handled like plain objects (their primitive + * value is NOT looked up like for e.g. String objects). + */ + DUK_ASSERT(h != NULL); + if (DUK_HOBJECT_IS_CALLABLE(h)) { +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flags & (DUK_JSON_FLAG_EXT_CUSTOM | + DUK_JSON_FLAG_EXT_COMPATIBLE)) { + /* We only get here when doing non-standard JSON encoding */ + DUK_DDD(DUK_DDDPRINT("-> function allowed, serialize to custom format")); + DUK_ASSERT(js_ctx->flag_ext_custom || js_ctx->flag_ext_compatible); + DUK__EMIT_STRIDX(js_ctx, js_ctx->stridx_custom_function); + goto pop2_emitted; + } else { + DUK_DDD(DUK_DDDPRINT("-> will result in undefined (function)")); + goto pop2_undef; + } +#else /* DUK_USE_JX || DUK_USE_JC */ + DUK_DDD(DUK_DDDPRINT("-> will result in undefined (function)")); + goto pop2_undef; +#endif /* DUK_USE_JX || DUK_USE_JC */ + } + } + } /* end switch */ + } + + /* [ ... key val ] */ + + DUK_DDD(DUK_DDDPRINT("value=%!T", (duk_tval *) duk_get_tval(thr, -1))); + + if (duk_check_type_mask(thr, -1, js_ctx->mask_for_undefined)) { + /* will result in undefined */ + DUK_DDD(DUK_DDDPRINT("-> will result in undefined (type mask check)")); + goto pop2_undef; + } + tv = DUK_GET_TVAL_NEGIDX(thr, -1); + + switch (DUK_TVAL_GET_TAG(tv)) { +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + /* When JX/JC not in use, the type mask above will avoid this case if needed. */ + case DUK_TAG_UNDEFINED: { + DUK__EMIT_STRIDX(js_ctx, js_ctx->stridx_custom_undefined); + break; + } +#endif + case DUK_TAG_NULL: { + DUK__EMIT_STRIDX(js_ctx, DUK_STRIDX_LC_NULL); + break; + } + case DUK_TAG_BOOLEAN: { + DUK__EMIT_STRIDX(js_ctx, DUK_TVAL_GET_BOOLEAN(tv) ? + DUK_STRIDX_TRUE : DUK_STRIDX_FALSE); + break; + } +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + /* When JX/JC not in use, the type mask above will avoid this case if needed. */ + case DUK_TAG_POINTER: { + duk__enc_pointer(js_ctx, DUK_TVAL_GET_POINTER(tv)); + break; + } +#endif /* DUK_USE_JX || DUK_USE_JC */ + case DUK_TAG_STRING: { + duk_hstring *h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + goto pop2_undef; + } + duk__enc_quote_string(js_ctx, h); + break; + } + case DUK_TAG_OBJECT: { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + + /* Function values are handled completely above (including + * coercion results): + */ + DUK_ASSERT(!DUK_HOBJECT_IS_CALLABLE(h)); + + if (duk_js_isarray_hobject(h)) { + duk__enc_array(js_ctx); + } else { + duk__enc_object(js_ctx); + } + break; + } + /* Because plain buffers mimics Uint8Array, they have enumerable + * index properties [0,byteLength[. Because JSON only serializes + * enumerable own properties, no properties can be serialized for + * plain buffers (all virtual properties are non-enumerable). However, + * there may be a .toJSON() method which was already handled above. + */ + case DUK_TAG_BUFFER: { +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom_or_compatible) { + duk__enc_buffer_jx_jc(js_ctx, DUK_TVAL_GET_BUFFER(tv)); + break; + } +#endif + + /* Could implement a fastpath, but the fast path would need + * to handle realloc side effects correctly. + */ + duk_to_object(thr, -1); + duk__enc_object(js_ctx); + break; + } + case DUK_TAG_LIGHTFUNC: { +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + /* We only get here when doing non-standard JSON encoding */ + DUK_ASSERT(js_ctx->flag_ext_custom || js_ctx->flag_ext_compatible); + DUK__EMIT_STRIDX(js_ctx, js_ctx->stridx_custom_function); +#else + /* Standard JSON omits functions */ + DUK_UNREACHABLE(); +#endif + break; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: + /* Number serialization has a significant impact relative to + * other fast path code, so careful fast path for fastints. + */ + duk__enc_fastint_tval(js_ctx, tv); + break; +#endif + default: { + /* number */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + /* XXX: A fast path for usual integers would be useful when + * fastint support is not enabled. + */ + duk__enc_double(js_ctx); + break; + } + } + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + pop2_emitted: +#endif + duk_pop_2(thr); /* [ ... key val ] -> [ ... ] */ + return 1; /* emitted */ + + pop2_undef: + duk_pop_2(thr); /* [ ... key val ] -> [ ... ] */ + return 0; /* not emitted */ +} + +/* E5 Section 15.12.3, main algorithm, step 4.b.ii steps 1-4. */ +DUK_LOCAL duk_bool_t duk__enc_allow_into_proplist(duk_tval *tv) { + duk_small_int_t c; + + /* XXX: some kind of external internal type checker? + * - type mask; symbol flag; class mask + */ + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_STRING(tv)) { + duk_hstring *h; + h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + return 0; + } + return 1; + } else if (DUK_TVAL_IS_NUMBER(tv)) { + return 1; + } else if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h; + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + c = (duk_small_int_t) DUK_HOBJECT_GET_CLASS_NUMBER(h); + if (c == DUK_HOBJECT_CLASS_STRING || c == DUK_HOBJECT_CLASS_NUMBER) { + return 1; + } + } + + return 0; +} + +/* + * JSON.stringify() fast path + * + * Otherwise supports full JSON, JX, and JC features, but bails out on any + * possible side effect which might change the value being serialized. The + * fast path can take advantage of the fact that the value being serialized + * is unchanged so that we can walk directly through property tables etc. + */ + +#if defined(DUK_USE_JSON_STRINGIFY_FASTPATH) +DUK_LOCAL duk_bool_t duk__json_stringify_fast_value(duk_json_enc_ctx *js_ctx, duk_tval *tv) { + duk_uint_fast32_t i, n; + + DUK_DDD(DUK_DDDPRINT("stringify fast: %!T", tv)); + + DUK_ASSERT(js_ctx != NULL); + DUK_ASSERT(js_ctx->thr != NULL); + +#if 0 /* disabled for now */ + restart_match: +#endif + + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: { +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom || js_ctx->flag_ext_compatible) { + DUK__EMIT_STRIDX(js_ctx, js_ctx->stridx_custom_undefined); + break; + } else { + goto emit_undefined; + } +#else + goto emit_undefined; +#endif + } + case DUK_TAG_NULL: { + DUK__EMIT_STRIDX(js_ctx, DUK_STRIDX_LC_NULL); + break; + } + case DUK_TAG_BOOLEAN: { + DUK__EMIT_STRIDX(js_ctx, DUK_TVAL_GET_BOOLEAN(tv) ? + DUK_STRIDX_TRUE : DUK_STRIDX_FALSE); + break; + } + case DUK_TAG_STRING: { + duk_hstring *h; + h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + goto emit_undefined; + } + duk__enc_quote_string(js_ctx, h); + break; + } + case DUK_TAG_OBJECT: { + duk_hobject *obj; + duk_tval *tv_val; + duk_bool_t emitted = 0; + duk_uint32_t c_bit, c_all, c_array, c_unbox, c_undef, + c_func, c_bufobj, c_object, c_abort; + + /* For objects JSON.stringify() only looks for own, enumerable + * properties which is nice for the fast path here. + * + * For arrays JSON.stringify() uses [[Get]] so it will actually + * inherit properties during serialization! This fast path + * supports gappy arrays as long as there's no actual inherited + * property (which might be a getter etc). + * + * Since recursion only happens for objects, we can have both + * recursion and loop checks here. We use a simple, depth-limited + * loop check in the fast path because the object-based tracking + * is very slow (when tested, it accounted for 50% of fast path + * execution time for input data with a lot of small objects!). + */ + + /* XXX: for real world code, could just ignore array inheritance + * and only look at array own properties. + */ + + /* We rely on a few object flag / class number relationships here, + * assert for them. + */ + + obj = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(obj != NULL); + DUK_HOBJECT_ASSERT_VALID(obj); + + /* Once recursion depth is increased, exit path must decrease + * it (though it's OK to abort the fast path). + */ + + DUK_ASSERT_DISABLE(js_ctx->recursion_depth >= 0); /* unsigned */ + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + if (js_ctx->recursion_depth >= js_ctx->recursion_limit) { + DUK_DD(DUK_DDPRINT("fast path recursion limit")); + DUK_ERROR_RANGE(js_ctx->thr, DUK_STR_JSONDEC_RECLIMIT); + DUK_WO_NORETURN(return 0;); + } + + for (i = 0, n = (duk_uint_fast32_t) js_ctx->recursion_depth; i < n; i++) { + if (DUK_UNLIKELY(js_ctx->visiting[i] == obj)) { + DUK_DD(DUK_DDPRINT("fast path loop detect")); + DUK_ERROR_TYPE(js_ctx->thr, DUK_STR_CYCLIC_INPUT); + DUK_WO_NORETURN(return 0;); + } + } + + /* Guaranteed by recursion_limit setup so we don't have to + * check twice. + */ + DUK_ASSERT(js_ctx->recursion_depth < DUK_JSON_ENC_LOOPARRAY); + js_ctx->visiting[js_ctx->recursion_depth] = obj; + js_ctx->recursion_depth++; + + /* If object has a .toJSON() property, we can't be certain + * that it wouldn't mutate any value arbitrarily, so bail + * out of the fast path. + * + * If an object is a Proxy we also can't avoid side effects + * so abandon. + */ + /* XXX: non-callable .toJSON() doesn't need to cause an abort + * but does at the moment, probably not worth fixing. + */ + if (duk_hobject_hasprop_raw(js_ctx->thr, obj, DUK_HTHREAD_STRING_TO_JSON(js_ctx->thr)) || + DUK_HOBJECT_IS_PROXY(obj)) { + DUK_DD(DUK_DDPRINT("object has a .toJSON property or object is a Proxy, abort fast path")); + goto abort_fastpath; + } + + /* We could use a switch-case for the class number but it turns out + * a small if-else ladder on class masks is better. The if-ladder + * should be in order of relevancy. + */ + + /* XXX: move masks to js_ctx? they don't change during one + * fast path invocation. + */ + DUK_ASSERT(DUK_HOBJECT_CLASS_MAX <= 31); +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom_or_compatible) { + c_all = DUK_HOBJECT_CMASK_ALL; + c_array = DUK_HOBJECT_CMASK_ARRAY; + c_unbox = DUK_HOBJECT_CMASK_NUMBER | + DUK_HOBJECT_CMASK_STRING | + DUK_HOBJECT_CMASK_BOOLEAN | + DUK_HOBJECT_CMASK_POINTER; /* Symbols are not unboxed. */ + c_func = DUK_HOBJECT_CMASK_FUNCTION; + c_bufobj = DUK_HOBJECT_CMASK_ALL_BUFOBJS; + c_undef = 0; + c_abort = 0; + c_object = c_all & ~(c_array | c_unbox | c_func | c_bufobj | c_undef | c_abort); + } + else +#endif + { + c_all = DUK_HOBJECT_CMASK_ALL; + c_array = DUK_HOBJECT_CMASK_ARRAY; + c_unbox = DUK_HOBJECT_CMASK_NUMBER | + DUK_HOBJECT_CMASK_STRING | + DUK_HOBJECT_CMASK_BOOLEAN; /* Symbols are not unboxed. */ + c_func = 0; + c_bufobj = 0; + c_undef = DUK_HOBJECT_CMASK_FUNCTION | + DUK_HOBJECT_CMASK_POINTER; + /* As the fast path doesn't currently properly support + * duk_hbufobj virtual properties, abort fast path if + * we encounter them in plain JSON mode. + */ + c_abort = DUK_HOBJECT_CMASK_ALL_BUFOBJS; + c_object = c_all & ~(c_array | c_unbox | c_func | c_bufobj | c_undef | c_abort); + } + + c_bit = (duk_uint32_t) DUK_HOBJECT_GET_CLASS_MASK(obj); + if (c_bit & c_object) { + /* All other object types. */ + DUK__EMIT_1(js_ctx, DUK_ASC_LCURLY); + + /* A non-Array object should not have an array part in practice. + * But since it is supported internally (and perhaps used at some + * point), check and abandon if that's the case. + */ + if (DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + DUK_DD(DUK_DDPRINT("non-Array object has array part, abort fast path")); + goto abort_fastpath; + } + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(obj); i++) { + duk_hstring *k; + duk_size_t prev_size; + + k = DUK_HOBJECT_E_GET_KEY(js_ctx->thr->heap, obj, i); + if (!k) { + continue; + } + if (DUK_HSTRING_HAS_ARRIDX(k)) { + /* If an object has array index keys we would need + * to sort them into the ES2015 enumeration order to + * be consistent with the slow path. Abort the fast + * path and handle in the slow path for now. + */ + DUK_DD(DUK_DDPRINT("property key is an array index, abort fast path")); + goto abort_fastpath; + } + if (!DUK_HOBJECT_E_SLOT_IS_ENUMERABLE(js_ctx->thr->heap, obj, i)) { + continue; + } + if (DUK_HOBJECT_E_SLOT_IS_ACCESSOR(js_ctx->thr->heap, obj, i)) { + /* Getter might have arbitrary side effects, + * so bail out. + */ + DUK_DD(DUK_DDPRINT("property is an accessor, abort fast path")); + goto abort_fastpath; + } + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(k))) { + continue; + } + + tv_val = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(js_ctx->thr->heap, obj, i); + + prev_size = DUK_BW_GET_SIZE(js_ctx->thr, &js_ctx->bw); + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth); + duk__enc_key_autoquote(js_ctx, k); + DUK__EMIT_2(js_ctx, DUK_ASC_COLON, DUK_ASC_SPACE); + } else { + duk__enc_key_autoquote(js_ctx, k); + DUK__EMIT_1(js_ctx, DUK_ASC_COLON); + } + + if (duk__json_stringify_fast_value(js_ctx, tv_val) == 0) { + DUK_DD(DUK_DDPRINT("prop value not supported, rewind key and colon")); + DUK_BW_SET_SIZE(js_ctx->thr, &js_ctx->bw, prev_size); + } else { + DUK__EMIT_1(js_ctx, DUK_ASC_COMMA); + emitted = 1; + } + } + + /* If any non-Array value had enumerable virtual own + * properties, they should be serialized here (actually, + * before the explicit properties). Standard types don't. + */ + + if (emitted) { + DUK_ASSERT(*((duk_uint8_t *) DUK_BW_GET_PTR(js_ctx->thr, &js_ctx->bw) - 1) == DUK_ASC_COMMA); + DUK__UNEMIT_1(js_ctx); /* eat trailing comma */ + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + DUK_ASSERT(js_ctx->recursion_depth >= 1); + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth - 1U); + } + } + DUK__EMIT_1(js_ctx, DUK_ASC_RCURLY); + } else if (c_bit & c_array) { + duk_uint_fast32_t arr_len; + duk_uint_fast32_t asize; + + DUK__EMIT_1(js_ctx, DUK_ASC_LBRACKET); + + /* Assume arrays are dense in the fast path. */ + if (!DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + DUK_DD(DUK_DDPRINT("Array object is sparse, abort fast path")); + goto abort_fastpath; + } + + arr_len = (duk_uint_fast32_t) ((duk_harray *) obj)->length; + asize = (duk_uint_fast32_t) DUK_HOBJECT_GET_ASIZE(obj); + /* Array part may be larger than 'length'; if so, iterate + * only up to array 'length'. Array part may also be smaller + * than 'length' in some cases. + */ + for (i = 0; i < arr_len; i++) { + duk_tval *tv_arrval; + duk_hstring *h_tmp; + duk_bool_t has_inherited; + + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth); + } + + if (DUK_LIKELY(i < asize)) { + tv_arrval = DUK_HOBJECT_A_GET_VALUE_PTR(js_ctx->thr->heap, obj, i); + if (DUK_LIKELY(!DUK_TVAL_IS_UNUSED(tv_arrval))) { + /* Expected case: element is present. */ + if (duk__json_stringify_fast_value(js_ctx, tv_arrval) == 0) { + DUK__EMIT_STRIDX(js_ctx, DUK_STRIDX_LC_NULL); + } + goto elem_done; + } + } + + /* Gap in array; check for inherited property, + * bail out if one exists. This should be enough + * to support gappy arrays for all practical code. + */ + + h_tmp = duk_push_uint_to_hstring(js_ctx->thr, (duk_uint_t) i); + has_inherited = duk_hobject_hasprop_raw(js_ctx->thr, obj, h_tmp); + duk_pop(js_ctx->thr); + if (has_inherited) { + DUK_D(DUK_DPRINT("gap in array, conflicting inherited property, abort fast path")); + goto abort_fastpath; + } + + /* Ordinary gap, undefined encodes to 'null' in + * standard JSON, but JX/JC use their form for + * undefined to better preserve the typing. + */ + DUK_D(DUK_DPRINT("gap in array, no conflicting inherited property, remain on fast path")); +#if defined(DUK_USE_JX) + DUK__EMIT_STRIDX(js_ctx, js_ctx->stridx_custom_undefined); +#else + DUK__EMIT_STRIDX(js_ctx, DUK_STRIDX_LC_NULL); +#endif + /* fall through */ + + elem_done: + DUK__EMIT_1(js_ctx, DUK_ASC_COMMA); + emitted = 1; + } + + if (emitted) { + DUK_ASSERT(*((duk_uint8_t *) DUK_BW_GET_PTR(js_ctx->thr, &js_ctx->bw) - 1) == DUK_ASC_COMMA); + DUK__UNEMIT_1(js_ctx); /* eat trailing comma */ + if (DUK_UNLIKELY(js_ctx->h_gap != NULL)) { + DUK_ASSERT(js_ctx->recursion_depth >= 1); + duk__enc_newline_indent(js_ctx, js_ctx->recursion_depth - 1U); + } + } + DUK__EMIT_1(js_ctx, DUK_ASC_RBRACKET); + } else if (c_bit & c_unbox) { + /* Certain boxed types are required to go through + * automatic unboxing. Rely on internal value being + * sane (to avoid infinite recursion). + */ + DUK_ASSERT((c_bit & DUK_HOBJECT_CMASK_SYMBOL) == 0); /* Symbols are not unboxed. */ + +#if 1 + /* The code below is incorrect if .toString() or .valueOf() have + * have been overridden. The correct approach would be to look up + * the method(s) and if they resolve to the built-in function we + * can safely bypass it and look up the internal value directly. + * Unimplemented for now, abort fast path for boxed values. + */ + goto abort_fastpath; +#else /* disabled */ + /* Disabled until fixed, see above. */ + duk_tval *tv_internal; + + DUK_DD(DUK_DDPRINT("auto unboxing in fast path")); + + tv_internal = duk_hobject_get_internal_value_tval_ptr(js_ctx->thr->heap, obj); + DUK_ASSERT(tv_internal != NULL); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv_internal) || + DUK_TVAL_IS_NUMBER(tv_internal) || + DUK_TVAL_IS_BOOLEAN(tv_internal) || + DUK_TVAL_IS_POINTER(tv_internal)); + + tv = tv_internal; + DUK_ASSERT(js_ctx->recursion_depth > 0); + js_ctx->recursion_depth--; /* required to keep recursion depth correct */ + goto restart_match; +#endif /* disabled */ +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + } else if (c_bit & c_func) { + DUK__EMIT_STRIDX(js_ctx, js_ctx->stridx_custom_function); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + } else if (c_bit & c_bufobj) { + duk__enc_bufobj(js_ctx, (duk_hbufobj *) obj); +#endif +#endif + } else if (c_bit & c_abort) { + DUK_DD(DUK_DDPRINT("abort fast path for unsupported type")); + goto abort_fastpath; + } else { + DUK_ASSERT((c_bit & c_undef) != 0); + + /* Must decrease recursion depth before returning. */ + DUK_ASSERT(js_ctx->recursion_depth > 0); + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + js_ctx->recursion_depth--; + goto emit_undefined; + } + + DUK_ASSERT(js_ctx->recursion_depth > 0); + DUK_ASSERT(js_ctx->recursion_depth <= js_ctx->recursion_limit); + js_ctx->recursion_depth--; + break; + } + case DUK_TAG_BUFFER: { + /* Plain buffers are treated like Uint8Arrays: they have + * enumerable indices. Other virtual properties are not + * enumerable, and inherited properties are not serialized. + * However, there can be a replacer (not relevant here) or + * a .toJSON() method (which we need to check for explicitly). + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + if (duk_hobject_hasprop_raw(js_ctx->thr, + js_ctx->thr->builtins[DUK_BIDX_UINT8ARRAY_PROTOTYPE], + DUK_HTHREAD_STRING_TO_JSON(js_ctx->thr))) { + DUK_DD(DUK_DDPRINT("value is a plain buffer and there's an inherited .toJSON, abort fast path")); + goto abort_fastpath; + } +#endif + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom_or_compatible) { + duk__enc_buffer_jx_jc(js_ctx, DUK_TVAL_GET_BUFFER(tv)); + break; + } +#endif + + /* Plain buffers mimic Uint8Arrays, and have enumerable index + * properties. + */ + duk__enc_buffer_json_fastpath(js_ctx, DUK_TVAL_GET_BUFFER(tv)); + break; + } + case DUK_TAG_POINTER: { +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flag_ext_custom_or_compatible) { + duk__enc_pointer(js_ctx, DUK_TVAL_GET_POINTER(tv)); + break; + } else { + goto emit_undefined; + } +#else + goto emit_undefined; +#endif + } + case DUK_TAG_LIGHTFUNC: { + /* A lightfunc might also inherit a .toJSON() so just bail out. */ + /* XXX: Could just lookup .toJSON() and continue in fast path, + * as it would almost never be defined. + */ + DUK_DD(DUK_DDPRINT("value is a lightfunc, abort fast path")); + goto abort_fastpath; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: { + /* Number serialization has a significant impact relative to + * other fast path code, so careful fast path for fastints. + */ + duk__enc_fastint_tval(js_ctx, tv); + break; + } +#endif + default: { + /* XXX: A fast path for usual integers would be useful when + * fastint support is not enabled. + */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + + /* XXX: Stack discipline is annoying, could be changed in numconv. */ + duk_push_tval(js_ctx->thr, tv); + duk__enc_double(js_ctx); + duk_pop(js_ctx->thr); + +#if 0 + /* Could also rely on native sprintf(), but it will handle + * values like NaN, Infinity, -0, exponent notation etc in + * a JSON-incompatible way. + */ + duk_double_t d; + char buf[64]; + + DUK_ASSERT(DUK_TVAL_IS_DOUBLE(tv)); + d = DUK_TVAL_GET_DOUBLE(tv); + DUK_SPRINTF(buf, "%lg", d); + DUK__EMIT_CSTR(js_ctx, buf); +#endif + } + } + return 1; /* not undefined */ + + emit_undefined: + return 0; /* value was undefined/unsupported */ + + abort_fastpath: + /* Error message doesn't matter: the error is ignored anyway. */ + DUK_DD(DUK_DDPRINT("aborting fast path")); + DUK_ERROR_INTERNAL(js_ctx->thr); + DUK_WO_NORETURN(return 0;); +} + +DUK_LOCAL duk_ret_t duk__json_stringify_fast(duk_hthread *thr, void *udata) { + duk_json_enc_ctx *js_ctx; + duk_tval *tv; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(udata != NULL); + + js_ctx = (duk_json_enc_ctx *) udata; + DUK_ASSERT(js_ctx != NULL); + + tv = DUK_GET_TVAL_NEGIDX(thr, -1); + if (duk__json_stringify_fast_value(js_ctx, tv) == 0) { + DUK_DD(DUK_DDPRINT("top level value not supported, fail fast path")); + DUK_DCERROR_TYPE_INVALID_ARGS(thr); /* Error message is ignored, so doesn't matter. */ + } + + return 0; +} +#endif /* DUK_USE_JSON_STRINGIFY_FASTPATH */ + +/* + * Top level wrappers + */ + +DUK_INTERNAL +void duk_bi_json_parse_helper(duk_hthread *thr, + duk_idx_t idx_value, + duk_idx_t idx_reviver, + duk_small_uint_t flags) { + duk_json_dec_ctx js_ctx_alloc; + duk_json_dec_ctx *js_ctx = &js_ctx_alloc; + duk_hstring *h_text; +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t entry_top = duk_get_top(thr); +#endif + + /* negative top-relative indices not allowed now */ + DUK_ASSERT(idx_value == DUK_INVALID_INDEX || idx_value >= 0); + DUK_ASSERT(idx_reviver == DUK_INVALID_INDEX || idx_reviver >= 0); + + DUK_DDD(DUK_DDDPRINT("JSON parse start: text=%!T, reviver=%!T, flags=0x%08lx, stack_top=%ld", + (duk_tval *) duk_get_tval(thr, idx_value), + (duk_tval *) duk_get_tval(thr, idx_reviver), + (unsigned long) flags, + (long) duk_get_top(thr))); + + duk_memzero(&js_ctx_alloc, sizeof(js_ctx_alloc)); + js_ctx->thr = thr; +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + /* nothing now */ +#endif + js_ctx->recursion_limit = DUK_USE_JSON_DEC_RECLIMIT; + DUK_ASSERT(js_ctx->recursion_depth == 0); + + /* Flag handling currently assumes that flags are consistent. This is OK + * because the call sites are now strictly controlled. + */ + + js_ctx->flags = flags; +#if defined(DUK_USE_JX) + js_ctx->flag_ext_custom = flags & DUK_JSON_FLAG_EXT_CUSTOM; +#endif +#if defined(DUK_USE_JC) + js_ctx->flag_ext_compatible = flags & DUK_JSON_FLAG_EXT_COMPATIBLE; +#endif +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + js_ctx->flag_ext_custom_or_compatible = flags & (DUK_JSON_FLAG_EXT_CUSTOM | DUK_JSON_FLAG_EXT_COMPATIBLE); +#endif + + h_text = duk_to_hstring(thr, idx_value); /* coerce in-place; rejects Symbols */ + DUK_ASSERT(h_text != NULL); + + /* JSON parsing code is allowed to read [p_start,p_end]: p_end is + * valid and points to the string NUL terminator (which is always + * guaranteed for duk_hstrings. + */ + js_ctx->p_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_text); + js_ctx->p = js_ctx->p_start; + js_ctx->p_end = ((const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_text)) + + DUK_HSTRING_GET_BYTELEN(h_text); + DUK_ASSERT(*(js_ctx->p_end) == 0x00); + + duk__dec_value(js_ctx); /* -> [ ... value ] */ + + /* Trailing whitespace has been eaten by duk__dec_value(), so if + * we're not at end of input here, it's a SyntaxError. + */ + + if (js_ctx->p != js_ctx->p_end) { + duk__dec_syntax_error(js_ctx); + } + + if (duk_is_callable(thr, idx_reviver)) { + DUK_DDD(DUK_DDDPRINT("applying reviver: %!T", + (duk_tval *) duk_get_tval(thr, idx_reviver))); + + js_ctx->idx_reviver = idx_reviver; + + duk_push_object(thr); + duk_dup_m2(thr); /* -> [ ... val root val ] */ + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_EMPTY_STRING); /* default attrs ok */ + duk_push_hstring_stridx(thr, DUK_STRIDX_EMPTY_STRING); /* -> [ ... val root "" ] */ + + DUK_DDD(DUK_DDDPRINT("start reviver walk, root=%!T, name=%!T", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + + duk__dec_reviver_walk(js_ctx); /* [ ... val root "" ] -> [ ... val val' ] */ + duk_remove_m2(thr); /* -> [ ... val' ] */ + } else { + DUK_DDD(DUK_DDDPRINT("reviver does not exist or is not callable: %!T", + (duk_tval *) duk_get_tval(thr, idx_reviver))); + } + + /* Final result is at stack top. */ + + DUK_DDD(DUK_DDDPRINT("JSON parse end: text=%!T, reviver=%!T, flags=0x%08lx, result=%!T, stack_top=%ld", + (duk_tval *) duk_get_tval(thr, idx_value), + (duk_tval *) duk_get_tval(thr, idx_reviver), + (unsigned long) flags, + (duk_tval *) duk_get_tval(thr, -1), + (long) duk_get_top(thr))); + + DUK_ASSERT(duk_get_top(thr) == entry_top + 1); +} + +DUK_INTERNAL +void duk_bi_json_stringify_helper(duk_hthread *thr, + duk_idx_t idx_value, + duk_idx_t idx_replacer, + duk_idx_t idx_space, + duk_small_uint_t flags) { + duk_json_enc_ctx js_ctx_alloc; + duk_json_enc_ctx *js_ctx = &js_ctx_alloc; + duk_hobject *h; + duk_idx_t idx_holder; + duk_idx_t entry_top; + + /* negative top-relative indices not allowed now */ + DUK_ASSERT(idx_value == DUK_INVALID_INDEX || idx_value >= 0); + DUK_ASSERT(idx_replacer == DUK_INVALID_INDEX || idx_replacer >= 0); + DUK_ASSERT(idx_space == DUK_INVALID_INDEX || idx_space >= 0); + + DUK_DDD(DUK_DDDPRINT("JSON stringify start: value=%!T, replacer=%!T, space=%!T, flags=0x%08lx, stack_top=%ld", + (duk_tval *) duk_get_tval(thr, idx_value), + (duk_tval *) duk_get_tval(thr, idx_replacer), + (duk_tval *) duk_get_tval(thr, idx_space), + (unsigned long) flags, + (long) duk_get_top(thr))); + + entry_top = duk_get_top(thr); + + /* + * Context init + */ + + duk_memzero(&js_ctx_alloc, sizeof(js_ctx_alloc)); + js_ctx->thr = thr; +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + js_ctx->h_replacer = NULL; + js_ctx->h_gap = NULL; +#endif + js_ctx->idx_proplist = -1; + + /* Flag handling currently assumes that flags are consistent. This is OK + * because the call sites are now strictly controlled. + */ + + js_ctx->flags = flags; + js_ctx->flag_ascii_only = flags & DUK_JSON_FLAG_ASCII_ONLY; + js_ctx->flag_avoid_key_quotes = flags & DUK_JSON_FLAG_AVOID_KEY_QUOTES; +#if defined(DUK_USE_JX) + js_ctx->flag_ext_custom = flags & DUK_JSON_FLAG_EXT_CUSTOM; +#endif +#if defined(DUK_USE_JC) + js_ctx->flag_ext_compatible = flags & DUK_JSON_FLAG_EXT_COMPATIBLE; +#endif +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + js_ctx->flag_ext_custom_or_compatible = flags & (DUK_JSON_FLAG_EXT_CUSTOM | DUK_JSON_FLAG_EXT_COMPATIBLE); +#endif + + /* The #if defined() clutter here handles the JX/JC enable/disable + * combinations properly. + */ +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + js_ctx->stridx_custom_undefined = DUK_STRIDX_LC_NULL; /* standard JSON; array gaps */ +#if defined(DUK_USE_JX) + if (flags & DUK_JSON_FLAG_EXT_CUSTOM) { + js_ctx->stridx_custom_undefined = DUK_STRIDX_LC_UNDEFINED; + js_ctx->stridx_custom_nan = DUK_STRIDX_NAN; + js_ctx->stridx_custom_neginf = DUK_STRIDX_MINUS_INFINITY; + js_ctx->stridx_custom_posinf = DUK_STRIDX_INFINITY; + js_ctx->stridx_custom_function = + (flags & DUK_JSON_FLAG_AVOID_KEY_QUOTES) ? + DUK_STRIDX_JSON_EXT_FUNCTION2 : + DUK_STRIDX_JSON_EXT_FUNCTION1; + } +#endif /* DUK_USE_JX */ +#if defined(DUK_USE_JX) && defined(DUK_USE_JC) + else +#endif /* DUK_USE_JX && DUK_USE_JC */ +#if defined(DUK_USE_JC) + if (js_ctx->flags & DUK_JSON_FLAG_EXT_COMPATIBLE) { + js_ctx->stridx_custom_undefined = DUK_STRIDX_JSON_EXT_UNDEFINED; + js_ctx->stridx_custom_nan = DUK_STRIDX_JSON_EXT_NAN; + js_ctx->stridx_custom_neginf = DUK_STRIDX_JSON_EXT_NEGINF; + js_ctx->stridx_custom_posinf = DUK_STRIDX_JSON_EXT_POSINF; + js_ctx->stridx_custom_function = DUK_STRIDX_JSON_EXT_FUNCTION1; + } +#endif /* DUK_USE_JC */ +#endif /* DUK_USE_JX || DUK_USE_JC */ + +#if defined(DUK_USE_JX) || defined(DUK_USE_JC) + if (js_ctx->flags & (DUK_JSON_FLAG_EXT_CUSTOM | + DUK_JSON_FLAG_EXT_COMPATIBLE)) { + DUK_ASSERT(js_ctx->mask_for_undefined == 0); /* already zero */ + } + else +#endif /* DUK_USE_JX || DUK_USE_JC */ + { + /* Plain buffer is treated like ArrayBuffer and serialized. + * Lightfuncs are treated like objects, but JSON explicitly + * skips serializing Function objects so we can just reject + * lightfuncs here. + */ + js_ctx->mask_for_undefined = DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_POINTER | + DUK_TYPE_MASK_LIGHTFUNC; + } + + DUK_BW_INIT_PUSHBUF(thr, &js_ctx->bw, DUK__JSON_STRINGIFY_BUFSIZE); + + js_ctx->idx_loop = duk_push_bare_object(thr); + DUK_ASSERT(js_ctx->idx_loop >= 0); + + /* [ ... buf loop ] */ + + /* + * Process replacer/proplist (2nd argument to JSON.stringify) + */ + + h = duk_get_hobject(thr, idx_replacer); + if (h != NULL) { + if (DUK_HOBJECT_IS_CALLABLE(h)) { + js_ctx->h_replacer = h; + } else if (duk_js_isarray_hobject(h)) { + /* Here the specification requires correct array index enumeration + * which is a bit tricky for sparse arrays (it is handled by the + * enum setup code). We now enumerate ancestors too, although the + * specification is not very clear on whether that is required. + */ + + duk_uarridx_t plist_idx = 0; + duk_small_uint_t enum_flags; + + js_ctx->idx_proplist = duk_push_array(thr); /* XXX: array internal? */ + + enum_flags = DUK_ENUM_ARRAY_INDICES_ONLY | + DUK_ENUM_SORT_ARRAY_INDICES; /* expensive flag */ + duk_enum(thr, idx_replacer, enum_flags); + while (duk_next(thr, -1 /*enum_index*/, 1 /*get_value*/)) { + /* [ ... proplist enum_obj key val ] */ + if (duk__enc_allow_into_proplist(duk_get_tval(thr, -1))) { + /* XXX: duplicates should be eliminated here */ + DUK_DDD(DUK_DDDPRINT("proplist enum: key=%!T, val=%!T --> accept", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + duk_to_string(thr, -1); /* extra coercion of strings is OK */ + duk_put_prop_index(thr, -4, plist_idx); /* -> [ ... proplist enum_obj key ] */ + plist_idx++; + duk_pop(thr); + } else { + DUK_DDD(DUK_DDDPRINT("proplist enum: key=%!T, val=%!T --> reject", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + duk_pop_2(thr); + } + } + duk_pop(thr); /* pop enum */ + + /* [ ... proplist ] */ + } + } + + /* [ ... buf loop (proplist) ] */ + + /* + * Process space (3rd argument to JSON.stringify) + */ + + h = duk_get_hobject(thr, idx_space); + if (h != NULL) { + duk_small_uint_t c = DUK_HOBJECT_GET_CLASS_NUMBER(h); + if (c == DUK_HOBJECT_CLASS_NUMBER) { + duk_to_number(thr, idx_space); + } else if (c == DUK_HOBJECT_CLASS_STRING) { + duk_to_string(thr, idx_space); + } + } + + if (duk_is_number(thr, idx_space)) { + duk_small_int_t nspace; + /* spaces[] must be static to allow initializer with old compilers like BCC */ + static const char spaces[10] = { + DUK_ASC_SPACE, DUK_ASC_SPACE, DUK_ASC_SPACE, DUK_ASC_SPACE, + DUK_ASC_SPACE, DUK_ASC_SPACE, DUK_ASC_SPACE, DUK_ASC_SPACE, + DUK_ASC_SPACE, DUK_ASC_SPACE + }; /* XXX: helper */ + + /* ToInteger() coercion; NaN -> 0, infinities are clamped to 0 and 10 */ + nspace = (duk_small_int_t) duk_to_int_clamped(thr, idx_space, 0 /*minval*/, 10 /*maxval*/); + DUK_ASSERT(nspace >= 0 && nspace <= 10); + + duk_push_lstring(thr, spaces, (duk_size_t) nspace); + js_ctx->h_gap = duk_known_hstring(thr, -1); + DUK_ASSERT(js_ctx->h_gap != NULL); + } else if (duk_is_string_notsymbol(thr, idx_space)) { + duk_dup(thr, idx_space); + duk_substring(thr, -1, 0, 10); /* clamp to 10 chars */ + js_ctx->h_gap = duk_known_hstring(thr, -1); + } else { + /* nop */ + } + + if (js_ctx->h_gap != NULL) { + /* If gap is empty, behave as if not given at all. Check + * against byte length because character length is more + * expensive. + */ + if (DUK_HSTRING_GET_BYTELEN(js_ctx->h_gap) == 0) { + js_ctx->h_gap = NULL; + } + } + + /* [ ... buf loop (proplist) (gap) ] */ + + /* + * Fast path: assume no mutation, iterate object property tables + * directly; bail out if that assumption doesn't hold. + */ + +#if defined(DUK_USE_JSON_STRINGIFY_FASTPATH) + if (js_ctx->h_replacer == NULL && /* replacer is a mutation risk */ + js_ctx->idx_proplist == -1) { /* proplist is very rare */ + duk_int_t pcall_rc; + duk_small_uint_t prev_ms_base_flags; + + DUK_DD(DUK_DDPRINT("try JSON.stringify() fast path")); + + /* Use recursion_limit to ensure we don't overwrite js_ctx->visiting[] + * array so we don't need two counter checks in the fast path. The + * slow path has a much larger recursion limit which we'll use if + * necessary. + */ + DUK_ASSERT(DUK_USE_JSON_ENC_RECLIMIT >= DUK_JSON_ENC_LOOPARRAY); + js_ctx->recursion_limit = DUK_JSON_ENC_LOOPARRAY; + DUK_ASSERT(js_ctx->recursion_depth == 0); + + /* Execute the fast path in a protected call. If any error is thrown, + * fall back to the slow path. This includes e.g. recursion limit + * because the fast path has a smaller recursion limit (and simpler, + * limited loop detection). + */ + + duk_dup(thr, idx_value); + + /* Must prevent finalizers which may have arbitrary side effects. */ + prev_ms_base_flags = thr->heap->ms_base_flags; + thr->heap->ms_base_flags |= + DUK_MS_FLAG_NO_OBJECT_COMPACTION; /* Avoid attempt to compact any objects. */ + thr->heap->pf_prevent_count++; /* Prevent finalizers. */ + DUK_ASSERT(thr->heap->pf_prevent_count != 0); /* Wrap. */ + + pcall_rc = duk_safe_call(thr, duk__json_stringify_fast, (void *) js_ctx /*udata*/, 1 /*nargs*/, 0 /*nret*/); + + DUK_ASSERT(thr->heap->pf_prevent_count > 0); + thr->heap->pf_prevent_count--; + thr->heap->ms_base_flags = prev_ms_base_flags; + + if (pcall_rc == DUK_EXEC_SUCCESS) { + DUK_DD(DUK_DDPRINT("fast path successful")); + DUK_BW_PUSH_AS_STRING(thr, &js_ctx->bw); + goto replace_finished; + } + + /* We come here for actual aborts (like encountering .toJSON()) + * but also for recursion/loop errors. Bufwriter size can be + * kept because we'll probably need at least as much as we've + * allocated so far. + */ + DUK_D(DUK_DPRINT("fast path failed, serialize using slow path instead")); + DUK_BW_RESET_SIZE(thr, &js_ctx->bw); + js_ctx->recursion_depth = 0; + } +#endif + + /* + * Create wrapper object and serialize + */ + + idx_holder = duk_push_object(thr); + duk_dup(thr, idx_value); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_EMPTY_STRING); + + DUK_DDD(DUK_DDDPRINT("before: flags=0x%08lx, loop=%!T, replacer=%!O, " + "proplist=%!T, gap=%!O, holder=%!T", + (unsigned long) js_ctx->flags, + (duk_tval *) duk_get_tval(thr, js_ctx->idx_loop), + (duk_heaphdr *) js_ctx->h_replacer, + (duk_tval *) (js_ctx->idx_proplist >= 0 ? duk_get_tval(thr, js_ctx->idx_proplist) : NULL), + (duk_heaphdr *) js_ctx->h_gap, + (duk_tval *) duk_get_tval(thr, -1))); + + /* serialize the wrapper with empty string key */ + + duk_push_hstring_empty(thr); + + /* [ ... buf loop (proplist) (gap) holder "" ] */ + + js_ctx->recursion_limit = DUK_USE_JSON_ENC_RECLIMIT; + DUK_ASSERT(js_ctx->recursion_depth == 0); + + if (DUK_UNLIKELY(duk__enc_value(js_ctx, idx_holder) == 0)) { /* [ ... holder key ] -> [ ... holder ] */ + /* Result is undefined. */ + duk_push_undefined(thr); + } else { + /* Convert buffer to result string. */ + DUK_BW_PUSH_AS_STRING(thr, &js_ctx->bw); + } + + DUK_DDD(DUK_DDDPRINT("after: flags=0x%08lx, loop=%!T, replacer=%!O, " + "proplist=%!T, gap=%!O, holder=%!T", + (unsigned long) js_ctx->flags, + (duk_tval *) duk_get_tval(thr, js_ctx->idx_loop), + (duk_heaphdr *) js_ctx->h_replacer, + (duk_tval *) (js_ctx->idx_proplist >= 0 ? duk_get_tval(thr, js_ctx->idx_proplist) : NULL), + (duk_heaphdr *) js_ctx->h_gap, + (duk_tval *) duk_get_tval(thr, idx_holder))); + + /* The stack has a variable shape here, so force it to the + * desired one explicitly. + */ + +#if defined(DUK_USE_JSON_STRINGIFY_FASTPATH) + replace_finished: +#endif + duk_replace(thr, entry_top); + duk_set_top(thr, entry_top + 1); + + DUK_DDD(DUK_DDDPRINT("JSON stringify end: value=%!T, replacer=%!T, space=%!T, " + "flags=0x%08lx, result=%!T, stack_top=%ld", + (duk_tval *) duk_get_tval(thr, idx_value), + (duk_tval *) duk_get_tval(thr, idx_replacer), + (duk_tval *) duk_get_tval(thr, idx_space), + (unsigned long) flags, + (duk_tval *) duk_get_tval(thr, -1), + (long) duk_get_top(thr))); + + DUK_ASSERT(duk_get_top(thr) == entry_top + 1); +} + +#if defined(DUK_USE_JSON_BUILTIN) + +/* + * Entry points + */ + +DUK_INTERNAL duk_ret_t duk_bi_json_object_parse(duk_hthread *thr) { + duk_bi_json_parse_helper(thr, + 0 /*idx_value*/, + 1 /*idx_replacer*/, + 0 /*flags*/); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_json_object_stringify(duk_hthread *thr) { + duk_bi_json_stringify_helper(thr, + 0 /*idx_value*/, + 1 /*idx_replacer*/, + 2 /*idx_space*/, + 0 /*flags*/); + return 1; +} + +#endif /* DUK_USE_JSON_BUILTIN */ + +#endif /* DUK_USE_JSON_SUPPORT */ + +/* automatic undefs */ +#undef DUK__EMIT_1 +#undef DUK__EMIT_2 +#undef DUK__EMIT_CSTR +#undef DUK__EMIT_HSTR +#undef DUK__EMIT_STRIDX +#undef DUK__JSON_DECSTR_BUFSIZE +#undef DUK__JSON_DECSTR_CHUNKSIZE +#undef DUK__JSON_ENCSTR_CHUNKSIZE +#undef DUK__JSON_MAX_ESC_LEN +#undef DUK__JSON_STRINGIFY_BUFSIZE +#undef DUK__MKESC +#undef DUK__UNEMIT_1 +#line 1 "duk_bi_math.c" +/* + * Math built-ins + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_MATH_BUILTIN) + +/* + * Use static helpers which can work with math.h functions matching + * the following signatures. This is not portable if any of these math + * functions is actually a macro. + * + * Typing here is intentionally 'double' wherever values interact with + * the standard library APIs. + */ + +typedef double (*duk__one_arg_func)(double); +typedef double (*duk__two_arg_func)(double, double); + +DUK_LOCAL duk_ret_t duk__math_minmax(duk_hthread *thr, duk_double_t initial, duk__two_arg_func min_max) { + duk_idx_t n = duk_get_top(thr); + duk_idx_t i; + duk_double_t res = initial; + duk_double_t t; + + /* + * Note: fmax() does not match the E5 semantics. E5 requires + * that if -any- input to Math.max() is a NaN, the result is a + * NaN. fmax() will return a NaN only if -both- inputs are NaN. + * Same applies to fmin(). + * + * Note: every input value must be coerced with ToNumber(), even + * if we know the result will be a NaN anyway: ToNumber() may have + * side effects for which even order of evaluation matters. + */ + + for (i = 0; i < n; i++) { + t = duk_to_number(thr, i); + if (DUK_FPCLASSIFY(t) == DUK_FP_NAN || DUK_FPCLASSIFY(res) == DUK_FP_NAN) { + /* Note: not normalized, but duk_push_number() will normalize */ + res = (duk_double_t) DUK_DOUBLE_NAN; + } else { + res = (duk_double_t) min_max(res, (double) t); + } + } + + duk_push_number(thr, res); + return 1; +} + +DUK_LOCAL double duk__fmin_fixed(double x, double y) { + /* fmin() with args -0 and +0 is not guaranteed to return + * -0 as ECMAScript requires. + */ + if (duk_double_equals(x, 0.0) && duk_double_equals(y, 0.0)) { + duk_double_union du1, du2; + du1.d = x; + du2.d = y; + + /* Already checked to be zero so these must hold, and allow us + * to check for "x is -0 or y is -0" by ORing the high parts + * for comparison. + */ + DUK_ASSERT(du1.ui[DUK_DBL_IDX_UI0] == 0 || du1.ui[DUK_DBL_IDX_UI0] == 0x80000000UL); + DUK_ASSERT(du2.ui[DUK_DBL_IDX_UI0] == 0 || du2.ui[DUK_DBL_IDX_UI0] == 0x80000000UL); + + /* XXX: what's the safest way of creating a negative zero? */ + if ((du1.ui[DUK_DBL_IDX_UI0] | du2.ui[DUK_DBL_IDX_UI0]) != 0) { + /* Enter here if either x or y (or both) is -0. */ + return -0.0; + } else { + return +0.0; + } + } + return duk_double_fmin(x, y); +} + +DUK_LOCAL double duk__fmax_fixed(double x, double y) { + /* fmax() with args -0 and +0 is not guaranteed to return + * +0 as ECMAScript requires. + */ + if (duk_double_equals(x, 0.0) && duk_double_equals(y, 0.0)) { + if (DUK_SIGNBIT(x) == 0 || DUK_SIGNBIT(y) == 0) { + return +0.0; + } else { + return -0.0; + } + } + return duk_double_fmax(x, y); +} + +#if defined(DUK_USE_ES6) +DUK_LOCAL double duk__cbrt(double x) { + /* cbrt() is C99. To avoid hassling embedders with the need to provide a + * cube root function, we can get by with pow(). The result is not + * identical, but that's OK: ES2015 says it's implementation-dependent. + */ + +#if defined(DUK_CBRT) + /* cbrt() matches ES2015 requirements. */ + return DUK_CBRT(x); +#else + duk_small_int_t c = (duk_small_int_t) DUK_FPCLASSIFY(x); + + /* pow() does not, however. */ + if (c == DUK_FP_NAN || c == DUK_FP_INFINITE || c == DUK_FP_ZERO) { + return x; + } + if (DUK_SIGNBIT(x)) { + return -DUK_POW(-x, 1.0 / 3.0); + } else { + return DUK_POW(x, 1.0 / 3.0); + } +#endif +} + +DUK_LOCAL double duk__log2(double x) { +#if defined(DUK_LOG2) + return DUK_LOG2(x); +#else + return DUK_LOG(x) * DUK_DOUBLE_LOG2E; +#endif +} + +DUK_LOCAL double duk__log10(double x) { +#if defined(DUK_LOG10) + return DUK_LOG10(x); +#else + return DUK_LOG(x) * DUK_DOUBLE_LOG10E; +#endif +} + +DUK_LOCAL double duk__trunc(double x) { +#if defined(DUK_TRUNC) + return DUK_TRUNC(x); +#else + /* Handles -0 correctly: -0.0 matches 'x >= 0.0' but floor() + * is required to return -0 when the argument is -0. + */ + return x >= 0.0 ? DUK_FLOOR(x) : DUK_CEIL(x); +#endif +} +#endif /* DUK_USE_ES6 */ + +DUK_LOCAL double duk__round_fixed(double x) { + /* Numbers half-way between integers must be rounded towards +Infinity, + * e.g. -3.5 must be rounded to -3 (not -4). When rounded to zero, zero + * sign must be set appropriately. E5.1 Section 15.8.2.15. + * + * Note that ANSI C round() is "round to nearest integer, away from zero", + * which is incorrect for negative values. Here we make do with floor(). + */ + + duk_small_int_t c = (duk_small_int_t) DUK_FPCLASSIFY(x); + if (c == DUK_FP_NAN || c == DUK_FP_INFINITE || c == DUK_FP_ZERO) { + return x; + } + + /* + * x is finite and non-zero + * + * -1.6 -> floor(-1.1) -> -2 + * -1.5 -> floor(-1.0) -> -1 (towards +Inf) + * -1.4 -> floor(-0.9) -> -1 + * -0.5 -> -0.0 (special case) + * -0.1 -> -0.0 (special case) + * +0.1 -> +0.0 (special case) + * +0.5 -> floor(+1.0) -> 1 (towards +Inf) + * +1.4 -> floor(+1.9) -> 1 + * +1.5 -> floor(+2.0) -> 2 (towards +Inf) + * +1.6 -> floor(+2.1) -> 2 + */ + + if (x >= -0.5 && x < 0.5) { + /* +0.5 is handled by floor, this is on purpose */ + if (x < 0.0) { + return -0.0; + } else { + return +0.0; + } + } + + return DUK_FLOOR(x + 0.5); +} + +/* Wrappers for calling standard math library methods. These may be required + * on platforms where one or more of the math built-ins are defined as macros + * or inline functions and are thus not suitable to be used as function pointers. + */ +#if defined(DUK_USE_AVOID_PLATFORM_FUNCPTRS) +DUK_LOCAL double duk__fabs(double x) { + return DUK_FABS(x); +} +DUK_LOCAL double duk__acos(double x) { + return DUK_ACOS(x); +} +DUK_LOCAL double duk__asin(double x) { + return DUK_ASIN(x); +} +DUK_LOCAL double duk__atan(double x) { + return DUK_ATAN(x); +} +DUK_LOCAL double duk__ceil(double x) { + return DUK_CEIL(x); +} +DUK_LOCAL double duk__cos(double x) { + return DUK_COS(x); +} +DUK_LOCAL double duk__exp(double x) { + return DUK_EXP(x); +} +DUK_LOCAL double duk__floor(double x) { + return DUK_FLOOR(x); +} +DUK_LOCAL double duk__log(double x) { + return DUK_LOG(x); +} +DUK_LOCAL double duk__sin(double x) { + return DUK_SIN(x); +} +DUK_LOCAL double duk__sqrt(double x) { + return DUK_SQRT(x); +} +DUK_LOCAL double duk__tan(double x) { + return DUK_TAN(x); +} +DUK_LOCAL double duk__atan2_fixed(double x, double y) { +#if defined(DUK_USE_ATAN2_WORKAROUNDS) + /* Specific fixes to common atan2() implementation issues: + * - test-bug-mingw-math-issues.js + */ + if (DUK_ISINF(x) && DUK_ISINF(y)) { + if (DUK_SIGNBIT(x)) { + if (DUK_SIGNBIT(y)) { + return -2.356194490192345; + } else { + return -0.7853981633974483; + } + } else { + if (DUK_SIGNBIT(y)) { + return 2.356194490192345; + } else { + return 0.7853981633974483; + } + } + } +#else + /* Some ISO C assumptions. */ + + DUK_ASSERT(duk_double_equals(DUK_ATAN2(DUK_DOUBLE_INFINITY, DUK_DOUBLE_INFINITY), 0.7853981633974483)); + DUK_ASSERT(duk_double_equals(DUK_ATAN2(-DUK_DOUBLE_INFINITY, DUK_DOUBLE_INFINITY), -0.7853981633974483)); + DUK_ASSERT(duk_double_equals(DUK_ATAN2(DUK_DOUBLE_INFINITY, -DUK_DOUBLE_INFINITY), 2.356194490192345)); + DUK_ASSERT(duk_double_equals(DUK_ATAN2(-DUK_DOUBLE_INFINITY, -DUK_DOUBLE_INFINITY), -2.356194490192345)); +#endif + + return DUK_ATAN2(x, y); +} +#endif /* DUK_USE_AVOID_PLATFORM_FUNCPTRS */ + +/* order must match constants in genbuiltins.py */ +DUK_LOCAL const duk__one_arg_func duk__one_arg_funcs[] = { +#if defined(DUK_USE_AVOID_PLATFORM_FUNCPTRS) + duk__fabs, + duk__acos, + duk__asin, + duk__atan, + duk__ceil, + duk__cos, + duk__exp, + duk__floor, + duk__log, + duk__round_fixed, + duk__sin, + duk__sqrt, + duk__tan, +#if defined(DUK_USE_ES6) + duk__cbrt, + duk__log2, + duk__log10, + duk__trunc +#endif +#else /* DUK_USE_AVOID_PLATFORM_FUNCPTRS */ + DUK_FABS, + DUK_ACOS, + DUK_ASIN, + DUK_ATAN, + DUK_CEIL, + DUK_COS, + DUK_EXP, + DUK_FLOOR, + DUK_LOG, + duk__round_fixed, + DUK_SIN, + DUK_SQRT, + DUK_TAN, +#if defined(DUK_USE_ES6) + duk__cbrt, + duk__log2, + duk__log10, + duk__trunc +#endif +#endif /* DUK_USE_AVOID_PLATFORM_FUNCPTRS */ +}; + +/* order must match constants in genbuiltins.py */ +DUK_LOCAL const duk__two_arg_func duk__two_arg_funcs[] = { +#if defined(DUK_USE_AVOID_PLATFORM_FUNCPTRS) + duk__atan2_fixed, + duk_js_arith_pow +#else + duk__atan2_fixed, + duk_js_arith_pow +#endif +}; + +DUK_INTERNAL duk_ret_t duk_bi_math_object_onearg_shared(duk_hthread *thr) { + duk_small_int_t fun_idx = duk_get_current_magic(thr); + duk__one_arg_func fun; + duk_double_t arg1; + + DUK_ASSERT(fun_idx >= 0); + DUK_ASSERT(fun_idx < (duk_small_int_t) (sizeof(duk__one_arg_funcs) / sizeof(duk__one_arg_func))); + arg1 = duk_to_number(thr, 0); + fun = duk__one_arg_funcs[fun_idx]; + duk_push_number(thr, (duk_double_t) fun((double) arg1)); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_math_object_twoarg_shared(duk_hthread *thr) { + duk_small_int_t fun_idx = duk_get_current_magic(thr); + duk__two_arg_func fun; + duk_double_t arg1; + duk_double_t arg2; + + DUK_ASSERT(fun_idx >= 0); + DUK_ASSERT(fun_idx < (duk_small_int_t) (sizeof(duk__two_arg_funcs) / sizeof(duk__two_arg_func))); + arg1 = duk_to_number(thr, 0); /* explicit ordered evaluation to match coercion semantics */ + arg2 = duk_to_number(thr, 1); + fun = duk__two_arg_funcs[fun_idx]; + duk_push_number(thr, (duk_double_t) fun((double) arg1, (double) arg2)); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_math_object_max(duk_hthread *thr) { + return duk__math_minmax(thr, -DUK_DOUBLE_INFINITY, duk__fmax_fixed); +} + +DUK_INTERNAL duk_ret_t duk_bi_math_object_min(duk_hthread *thr) { + return duk__math_minmax(thr, DUK_DOUBLE_INFINITY, duk__fmin_fixed); +} + +DUK_INTERNAL duk_ret_t duk_bi_math_object_random(duk_hthread *thr) { + duk_push_number(thr, (duk_double_t) DUK_UTIL_GET_RANDOM_DOUBLE(thr)); + return 1; +} + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_math_object_hypot(duk_hthread *thr) { + /* + * E6 Section 20.2.2.18: Math.hypot + * + * - If no arguments are passed, the result is +0. + * - If any argument is +inf, the result is +inf. + * - If any argument is -inf, the result is +inf. + * - If no argument is +inf or -inf, and any argument is NaN, the result is + * NaN. + * - If all arguments are either +0 or -0, the result is +0. + */ + + duk_idx_t nargs; + duk_idx_t i; + duk_bool_t found_nan; + duk_double_t max; + duk_double_t sum, summand; + duk_double_t comp, prelim; + duk_double_t t; + + nargs = duk_get_top(thr); + + /* Find the highest value. Also ToNumber() coerces. */ + max = 0.0; + found_nan = 0; + for (i = 0; i < nargs; i++) { + t = DUK_FABS(duk_to_number(thr, i)); + if (DUK_FPCLASSIFY(t) == DUK_FP_NAN) { + found_nan = 1; + } else { + max = duk_double_fmax(max, t); + } + } + + /* Early return cases. */ + if (duk_double_equals(max, DUK_DOUBLE_INFINITY)) { + duk_push_number(thr, DUK_DOUBLE_INFINITY); + return 1; + } else if (found_nan) { + duk_push_number(thr, DUK_DOUBLE_NAN); + return 1; + } else if (duk_double_equals(max, 0.0)) { + duk_push_number(thr, 0.0); + /* Otherwise we'd divide by zero. */ + return 1; + } + + /* Use Kahan summation and normalize to the highest value to minimize + * floating point rounding error and avoid overflow. + * + * https://en.wikipedia.org/wiki/Kahan_summation_algorithm + */ + sum = 0.0; + comp = 0.0; + for (i = 0; i < nargs; i++) { + t = DUK_FABS(duk_get_number(thr, i)) / max; + summand = (t * t) - comp; + prelim = sum + summand; + comp = (prelim - sum) - summand; + sum = prelim; + } + + duk_push_number(thr, (duk_double_t) DUK_SQRT(sum) * max); + return 1; +} +#endif /* DUK_USE_ES6 */ + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_math_object_sign(duk_hthread *thr) { + duk_double_t d; + + d = duk_to_number(thr, 0); + if (duk_double_is_nan(d)) { + DUK_ASSERT(duk_is_nan(thr, -1)); + return 1; /* NaN input -> return NaN */ + } + if (duk_double_equals(d, 0.0)) { + /* Zero sign kept, i.e. -0 -> -0, +0 -> +0. */ + return 1; + } + duk_push_int(thr, (d > 0.0 ? 1 : -1)); + return 1; +} +#endif /* DUK_USE_ES6 */ + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_math_object_clz32(duk_hthread *thr) { + duk_uint32_t x; + duk_small_uint_t i; + +#if defined(DUK_USE_PREFER_SIZE) + duk_uint32_t mask; + + x = duk_to_uint32(thr, 0); + for (i = 0, mask = 0x80000000UL; mask != 0; mask >>= 1) { + if (x & mask) { + break; + } + i++; + } + DUK_ASSERT(i <= 32); + duk_push_uint(thr, i); + return 1; +#else /* DUK_USE_PREFER_SIZE */ + i = 0; + x = duk_to_uint32(thr, 0); + if (x & 0xffff0000UL) { + x >>= 16; + } else { + i += 16; + } + if (x & 0x0000ff00UL) { + x >>= 8; + } else { + i += 8; + } + if (x & 0x000000f0UL) { + x >>= 4; + } else { + i += 4; + } + if (x & 0x0000000cUL) { + x >>= 2; + } else { + i += 2; + } + if (x & 0x00000002UL) { + x >>= 1; + } else { + i += 1; + } + if (x & 0x00000001UL) { + ; + } else { + i += 1; + } + DUK_ASSERT(i <= 32); + duk_push_uint(thr, i); + return 1; +#endif /* DUK_USE_PREFER_SIZE */ +} +#endif /* DUK_USE_ES6 */ + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_math_object_imul(duk_hthread *thr) { + duk_uint32_t x, y, z; + + x = duk_to_uint32(thr, 0); + y = duk_to_uint32(thr, 1); + z = x * y; + + /* While arguments are ToUint32() coerced and the multiplication + * is unsigned as such, the final result is curiously interpreted + * as a signed 32-bit value. + */ + duk_push_i32(thr, (duk_int32_t) z); + return 1; +} +#endif /* DUK_USE_ES6 */ + +#endif /* DUK_USE_MATH_BUILTIN */ +#line 1 "duk_bi_number.c" +/* + * Number built-ins + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_NUMBER_BUILTIN) + +DUK_LOCAL duk_double_t duk__push_this_number_plain(duk_hthread *thr) { + duk_hobject *h; + + /* Number built-in accepts a plain number or a Number object (whose + * internal value is operated on). Other types cause TypeError. + */ + + duk_push_this(thr); + if (duk_is_number(thr, -1)) { + DUK_DDD(DUK_DDDPRINT("plain number value: %!T", (duk_tval *) duk_get_tval(thr, -1))); + goto done; + } + h = duk_get_hobject(thr, -1); + if (!h || + (DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_NUMBER)) { + DUK_DDD(DUK_DDDPRINT("unacceptable this value: %!T", (duk_tval *) duk_get_tval(thr, -1))); + DUK_ERROR_TYPE(thr, "number expected"); + DUK_WO_NORETURN(return 0.0;); + } + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE); + DUK_ASSERT(duk_is_number(thr, -1)); + DUK_DDD(DUK_DDDPRINT("number object: %!T, internal value: %!T", + (duk_tval *) duk_get_tval(thr, -2), (duk_tval *) duk_get_tval(thr, -1))); + duk_remove_m2(thr); + + done: + return duk_get_number(thr, -1); +} + +DUK_INTERNAL duk_ret_t duk_bi_number_constructor(duk_hthread *thr) { + duk_idx_t nargs; + duk_hobject *h_this; + + /* + * The Number constructor uses ToNumber(arg) for number coercion + * (coercing an undefined argument to NaN). However, if the + * argument is not given at all, +0 must be used instead. To do + * this, a vararg function is used. + */ + + nargs = duk_get_top(thr); + if (nargs == 0) { + duk_push_int(thr, 0); + } + duk_to_number(thr, 0); + duk_set_top(thr, 1); + DUK_ASSERT_TOP(thr, 1); + + if (!duk_is_constructor_call(thr)) { + return 1; + } + + /* + * E5 Section 15.7.2.1 requires that the constructed object + * must have the original Number.prototype as its internal + * prototype. However, since Number.prototype is non-writable + * and non-configurable, this doesn't have to be enforced here: + * The default object (bound to 'this') is OK, though we have + * to change its class. + * + * Internal value set to ToNumber(arg) or +0; if no arg given, + * ToNumber(undefined) = NaN, so special treatment is needed + * (above). String internal value is immutable. + */ + + /* XXX: helper */ + duk_push_this(thr); + h_this = duk_known_hobject(thr, -1); + DUK_HOBJECT_SET_CLASS_NUMBER(h_this, DUK_HOBJECT_CLASS_NUMBER); + + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_this) == thr->builtins[DUK_BIDX_NUMBER_PROTOTYPE]); + DUK_ASSERT(DUK_HOBJECT_GET_CLASS_NUMBER(h_this) == DUK_HOBJECT_CLASS_NUMBER); + DUK_ASSERT(DUK_HOBJECT_HAS_EXTENSIBLE(h_this)); + + duk_dup_0(thr); /* -> [ val obj val ] */ + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE); + return 0; /* no return value -> don't replace created value */ +} + +DUK_INTERNAL duk_ret_t duk_bi_number_prototype_value_of(duk_hthread *thr) { + (void) duk__push_this_number_plain(thr); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_string(duk_hthread *thr) { + duk_small_int_t radix; + duk_small_uint_t n2s_flags; + + (void) duk__push_this_number_plain(thr); + if (duk_is_undefined(thr, 0)) { + radix = 10; + } else { + radix = (duk_small_int_t) duk_to_int_check_range(thr, 0, 2, 36); + } + DUK_DDD(DUK_DDDPRINT("radix=%ld", (long) radix)); + + n2s_flags = 0; + + duk_numconv_stringify(thr, + radix /*radix*/, + 0 /*digits*/, + n2s_flags /*flags*/); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_locale_string(duk_hthread *thr) { + /* XXX: just use toString() for now; permitted although not recommended. + * nargs==1, so radix is passed to toString(). + */ + return duk_bi_number_prototype_to_string(thr); +} + +/* + * toFixed(), toExponential(), toPrecision() + */ + +/* XXX: shared helper for toFixed(), toExponential(), toPrecision()? */ + +DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_fixed(duk_hthread *thr) { + duk_small_int_t frac_digits; + duk_double_t d; + duk_small_int_t c; + duk_small_uint_t n2s_flags; + + /* In ES5.1 frac_digits is coerced first; in ES2015 the 'this number + * value' check is done first. + */ + d = duk__push_this_number_plain(thr); + frac_digits = (duk_small_int_t) duk_to_int_check_range(thr, 0, 0, 20); + + c = (duk_small_int_t) DUK_FPCLASSIFY(d); + if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) { + goto use_to_string; + } + + if (d >= 1.0e21 || d <= -1.0e21) { + goto use_to_string; + } + + n2s_flags = DUK_N2S_FLAG_FIXED_FORMAT | + DUK_N2S_FLAG_FRACTION_DIGITS; + + duk_numconv_stringify(thr, + 10 /*radix*/, + frac_digits /*digits*/, + n2s_flags /*flags*/); + return 1; + + use_to_string: + DUK_ASSERT_TOP(thr, 2); + duk_to_string(thr, -1); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_exponential(duk_hthread *thr) { + duk_bool_t frac_undefined; + duk_small_int_t frac_digits; + duk_double_t d; + duk_small_int_t c; + duk_small_uint_t n2s_flags; + + d = duk__push_this_number_plain(thr); + + frac_undefined = duk_is_undefined(thr, 0); + duk_to_int(thr, 0); /* for side effects */ + + c = (duk_small_int_t) DUK_FPCLASSIFY(d); + if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) { + goto use_to_string; + } + + frac_digits = (duk_small_int_t) duk_to_int_check_range(thr, 0, 0, 20); + + n2s_flags = DUK_N2S_FLAG_FORCE_EXP | + (frac_undefined ? 0 : DUK_N2S_FLAG_FIXED_FORMAT); + + duk_numconv_stringify(thr, + 10 /*radix*/, + frac_digits + 1 /*leading digit + fractions*/, + n2s_flags /*flags*/); + return 1; + + use_to_string: + DUK_ASSERT_TOP(thr, 2); + duk_to_string(thr, -1); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_precision(duk_hthread *thr) { + /* The specification has quite awkward order of coercion and + * checks for toPrecision(). The operations below are a bit + * reordered, within constraints of observable side effects. + */ + + duk_double_t d; + duk_small_int_t prec; + duk_small_int_t c; + duk_small_uint_t n2s_flags; + + DUK_ASSERT_TOP(thr, 1); + + d = duk__push_this_number_plain(thr); + if (duk_is_undefined(thr, 0)) { + goto use_to_string; + } + DUK_ASSERT_TOP(thr, 2); + + duk_to_int(thr, 0); /* for side effects */ + + c = (duk_small_int_t) DUK_FPCLASSIFY(d); + if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) { + goto use_to_string; + } + + prec = (duk_small_int_t) duk_to_int_check_range(thr, 0, 1, 21); + + n2s_flags = DUK_N2S_FLAG_FIXED_FORMAT | + DUK_N2S_FLAG_NO_ZERO_PAD; + + duk_numconv_stringify(thr, + 10 /*radix*/, + prec /*digits*/, + n2s_flags /*flags*/); + return 1; + + use_to_string: + /* Used when precision is undefined; also used for NaN (-> "NaN"), + * and +/- infinity (-> "Infinity", "-Infinity"). + */ + + DUK_ASSERT_TOP(thr, 2); + duk_to_string(thr, -1); + return 1; +} + +/* + * ES2015 isFinite() etc + */ + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_number_check_shared(duk_hthread *thr) { + duk_int_t magic; + duk_bool_t ret = 0; + + if (duk_is_number(thr, 0)) { + duk_double_t d; + + magic = duk_get_current_magic(thr); + d = duk_get_number(thr, 0); + + switch (magic) { + case 0: /* isFinite() */ + ret = duk_double_is_finite(d); + break; + case 1: /* isInteger() */ + ret = duk_double_is_integer(d); + break; + case 2: /* isNaN() */ + ret = duk_double_is_nan(d); + break; + default: /* isSafeInteger() */ + DUK_ASSERT(magic == 3); + ret = duk_double_is_safe_integer(d); + } + } + + duk_push_boolean(thr, ret); + return 1; +} +#endif /* DUK_USE_ES6 */ + +#endif /* DUK_USE_NUMBER_BUILTIN */ +#line 1 "duk_bi_object.c" +/* + * Object built-ins + */ + +/* #include duk_internal.h -> already included */ + +/* Needed even when Object built-in disabled. */ +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_to_string(duk_hthread *thr) { + duk_tval *tv; + + tv = DUK_HTHREAD_THIS_PTR(thr); + duk_push_class_string_tval(thr, tv, 0 /*avoid_side_effects*/); + return 1; +} + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor(duk_hthread *thr) { + duk_uint_t arg_mask; + + arg_mask = duk_get_type_mask(thr, 0); + + if (!duk_is_constructor_call(thr) && /* not a constructor call */ + ((arg_mask & (DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_UNDEFINED)) == 0)) { /* and argument not null or undefined */ + duk_to_object(thr, 0); + return 1; + } + + /* Pointer and buffer primitive values are treated like other + * primitives values which have a fully fledged object counterpart: + * promote to an object value. Lightfuncs and plain buffers are + * coerced with ToObject() even they could also be returned as is. + */ + if (arg_mask & (DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_STRING | + DUK_TYPE_MASK_BOOLEAN | + DUK_TYPE_MASK_NUMBER | + DUK_TYPE_MASK_POINTER | + DUK_TYPE_MASK_BUFFER | + DUK_TYPE_MASK_LIGHTFUNC)) { + /* For DUK_TYPE_OBJECT the coercion is a no-op and could + * be checked for explicitly, but Object(obj) calls are + * not very common so opt for minimal footprint. + */ + duk_to_object(thr, 0); + return 1; + } + + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT), + DUK_BIDX_OBJECT_PROTOTYPE); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) && defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_assign(duk_hthread *thr) { + duk_idx_t nargs; + duk_int_t idx; + + nargs = duk_get_top_require_min(thr, 1 /*min_top*/); + + duk_to_object(thr, 0); + for (idx = 1; idx < nargs; idx++) { + /* E7 19.1.2.1 (step 4a) */ + if (duk_is_null_or_undefined(thr, idx)) { + continue; + } + + /* duk_enum() respects ES2015+ [[OwnPropertyKeys]] ordering, which is + * convenient here. + */ + duk_to_object(thr, idx); + duk_enum(thr, idx, DUK_ENUM_OWN_PROPERTIES_ONLY); + while (duk_next(thr, -1, 1 /*get_value*/)) { + /* [ target ... enum key value ] */ + duk_put_prop(thr, 0); + /* [ target ... enum ] */ + } + /* Could pop enumerator, but unnecessary because of duk_set_top() + * below. + */ + } + + duk_set_top(thr, 1); + return 1; +} +#endif + +#if defined(DUK_USE_OBJECT_BUILTIN) && defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 2); + duk_push_boolean(thr, duk_samevalue(thr, 0, 1)); + return 1; +} +#endif + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_create(duk_hthread *thr) { + duk_hobject *proto; + + DUK_ASSERT_TOP(thr, 2); + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + duk_hbufobj_promote_plain(thr, 0); +#endif + proto = duk_require_hobject_accept_mask(thr, 0, DUK_TYPE_MASK_NULL); + DUK_ASSERT(proto != NULL || duk_is_null(thr, 0)); + + (void) duk_push_object_helper_proto(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT), + proto); + + if (!duk_is_undefined(thr, 1)) { + /* [ O Properties obj ] */ + + duk_replace(thr, 0); + + /* [ obj Properties ] */ + + /* Just call the "original" Object.defineProperties() to + * finish up. + */ + + return duk_bi_object_constructor_define_properties(thr); + } + + /* [ O Properties obj ] */ + + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_define_properties(duk_hthread *thr) { + duk_small_uint_t pass; + duk_uint_t defprop_flags; + duk_hobject *obj; + duk_idx_t idx_value; + duk_hobject *get; + duk_hobject *set; + + /* Lightfunc and plain buffer handling by ToObject() coercion. */ + obj = duk_require_hobject_promote_mask(thr, 0, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + DUK_ASSERT(obj != NULL); + + duk_to_object(thr, 1); /* properties object */ + + DUK_DDD(DUK_DDDPRINT("target=%!iT, properties=%!iT", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1))); + + /* + * Two pass approach to processing the property descriptors. + * On first pass validate and normalize all descriptors before + * any changes are made to the target object. On second pass + * make the actual modifications to the target object. + * + * Right now we'll just use the same normalize/validate helper + * on both passes, ignoring its outputs on the first pass. + */ + + for (pass = 0; pass < 2; pass++) { + duk_set_top(thr, 2); /* -> [ hobject props ] */ + duk_enum(thr, 1, DUK_ENUM_OWN_PROPERTIES_ONLY | DUK_ENUM_INCLUDE_SYMBOLS /*enum_flags*/); + + for (;;) { + duk_hstring *key; + + /* [ hobject props enum(props) ] */ + + duk_set_top(thr, 3); + + if (!duk_next(thr, 2, 1 /*get_value*/)) { + break; + } + + DUK_DDD(DUK_DDDPRINT("-> key=%!iT, desc=%!iT", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + + /* [ hobject props enum(props) key desc ] */ + + duk_hobject_prepare_property_descriptor(thr, + 4 /*idx_desc*/, + &defprop_flags, + &idx_value, + &get, + &set); + + /* [ hobject props enum(props) key desc [multiple values] ] */ + + if (pass == 0) { + continue; + } + + /* This allows symbols on purpose. */ + key = duk_known_hstring(thr, 3); + DUK_ASSERT(key != NULL); + + duk_hobject_define_property_helper(thr, + defprop_flags, + obj, + key, + idx_value, + get, + set, + 1 /*throw_flag*/); + } + } + + /* + * Return target object + */ + + duk_dup_0(thr); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_seal_freeze_shared(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 1); + + duk_seal_freeze_raw(thr, 0, (duk_bool_t) duk_get_current_magic(thr) /*is_freeze*/); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is_sealed_frozen_shared(duk_hthread *thr) { + duk_hobject *h; + duk_bool_t is_frozen; + duk_uint_t mask; + + is_frozen = (duk_bool_t) duk_get_current_magic(thr); + mask = duk_get_type_mask(thr, 0); + if (mask & (DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER)) { + DUK_ASSERT(is_frozen == 0 || is_frozen == 1); + duk_push_boolean(thr, (mask & DUK_TYPE_MASK_LIGHTFUNC) ? + 1 : /* lightfunc always frozen and sealed */ + (is_frozen ^ 1)); /* buffer sealed but not frozen (index props writable) */ + } else { + /* ES2015 Sections 19.1.2.12, 19.1.2.13: anything other than an object + * is considered to be already sealed and frozen. + */ + h = duk_get_hobject(thr, 0); + duk_push_boolean(thr, (h == NULL) || + duk_hobject_object_is_sealed_frozen_helper(thr, h, is_frozen /*is_frozen*/)); + } + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_to_locale_string(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 0); + (void) duk_push_this_coercible_to_object(thr); + duk_get_prop_stridx_short(thr, 0, DUK_STRIDX_TO_STRING); +#if 0 /* This is mentioned explicitly in the E5.1 spec, but duk_call_method() checks for it in practice. */ + duk_require_callable(thr, 1); +#endif + duk_dup_0(thr); /* -> [ O toString O ] */ + duk_call_method(thr, 0); /* XXX: call method tail call? */ + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_value_of(duk_hthread *thr) { + /* For lightfuncs and plain buffers, returns Object() coerced. */ + (void) duk_push_this_coercible_to_object(thr); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_is_prototype_of(duk_hthread *thr) { + duk_hobject *h_v; + duk_hobject *h_obj; + + DUK_ASSERT_TOP(thr, 1); + + h_v = duk_get_hobject(thr, 0); + if (!h_v) { + duk_push_false(thr); /* XXX: tail call: return duk_push_false(thr) */ + return 1; + } + + h_obj = duk_push_this_coercible_to_object(thr); + DUK_ASSERT(h_obj != NULL); + + /* E5.1 Section 15.2.4.6, step 3.a, lookup proto once before compare. + * Prototype loops should cause an error to be thrown. + */ + duk_push_boolean(thr, duk_hobject_prototype_chain_contains(thr, DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_v), h_obj, 0 /*ignore_loop*/)); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_has_own_property(duk_hthread *thr) { + return (duk_ret_t) duk_hobject_object_ownprop_helper(thr, 0 /*required_desc_flags*/); +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_property_is_enumerable(duk_hthread *thr) { + return (duk_ret_t) duk_hobject_object_ownprop_helper(thr, DUK_PROPDESC_FLAG_ENUMERABLE /*required_desc_flags*/); +} +#endif /* DUK_USE_OBJECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +/* Shared helper to implement Object.getPrototypeOf, + * Object.prototype.__proto__ getter, and Reflect.getPrototypeOf. + * + * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-get-object.prototype.__proto__ + */ +DUK_INTERNAL duk_ret_t duk_bi_object_getprototype_shared(duk_hthread *thr) { + /* + * magic = 0: __proto__ getter + * magic = 1: Object.getPrototypeOf() + * magic = 2: Reflect.getPrototypeOf() + */ + + duk_hobject *h; + duk_hobject *proto; + duk_tval *tv; + duk_int_t magic; + + magic = duk_get_current_magic(thr); + + if (magic == 0) { + DUK_ASSERT_TOP(thr, 0); + duk_push_this_coercible_to_object(thr); + } + DUK_ASSERT(duk_get_top(thr) >= 1); + if (magic < 2) { + /* ES2015 Section 19.1.2.9, step 1 */ + duk_to_object(thr, 0); + } + tv = DUK_GET_TVAL_POSIDX(thr, 0); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_BUFFER: + proto = thr->builtins[DUK_BIDX_UINT8ARRAY_PROTOTYPE]; + break; + case DUK_TAG_LIGHTFUNC: + proto = thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]; + break; + case DUK_TAG_OBJECT: + h = DUK_TVAL_GET_OBJECT(tv); + proto = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h); + break; + default: + /* This implicitly handles CheckObjectCoercible() caused + * TypeError. + */ + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + if (proto != NULL) { + duk_push_hobject(thr, proto); + } else { + duk_push_null(thr); + } + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +/* Shared helper to implement ES2015 Object.setPrototypeOf, + * Object.prototype.__proto__ setter, and Reflect.setPrototypeOf. + * + * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-get-object.prototype.__proto__ + * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-object.setprototypeof + */ +DUK_INTERNAL duk_ret_t duk_bi_object_setprototype_shared(duk_hthread *thr) { + /* + * magic = 0: __proto__ setter + * magic = 1: Object.setPrototypeOf() + * magic = 2: Reflect.setPrototypeOf() + */ + + duk_hobject *h_obj; + duk_hobject *h_new_proto; + duk_hobject *h_curr; + duk_ret_t ret_success = 1; /* retval for success path */ + duk_uint_t mask; + duk_int_t magic; + + /* Preliminaries for __proto__ and setPrototypeOf (E6 19.1.2.18 steps 1-4). */ + magic = duk_get_current_magic(thr); + if (magic == 0) { + duk_push_this_check_object_coercible(thr); + duk_insert(thr, 0); + if (!duk_check_type_mask(thr, 1, DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_OBJECT)) { + return 0; + } + + /* __proto__ setter returns 'undefined' on success unlike the + * setPrototypeOf() call which returns the target object. + */ + ret_success = 0; + } else { + if (magic == 1) { + duk_require_object_coercible(thr, 0); + } else { + duk_require_hobject_accept_mask(thr, 0, + DUK_TYPE_MASK_LIGHTFUNC | + DUK_TYPE_MASK_BUFFER); + } + duk_require_type_mask(thr, 1, DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_OBJECT); + } + + h_new_proto = duk_get_hobject(thr, 1); + /* h_new_proto may be NULL */ + + mask = duk_get_type_mask(thr, 0); + if (mask & (DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER)) { + duk_hobject *curr_proto; + curr_proto = thr->builtins[(mask & DUK_TYPE_MASK_LIGHTFUNC) ? + DUK_BIDX_FUNCTION_PROTOTYPE : + DUK_BIDX_UINT8ARRAY_PROTOTYPE]; + if (h_new_proto == curr_proto) { + goto skip; + } + goto fail_nonextensible; + } + h_obj = duk_get_hobject(thr, 0); + if (h_obj == NULL) { + goto skip; + } + DUK_ASSERT(h_obj != NULL); + + /* [[SetPrototypeOf]] standard behavior, E6 9.1.2. */ + /* TODO: implement Proxy object support here */ + + if (h_new_proto == DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_obj)) { + goto skip; + } + if (!DUK_HOBJECT_HAS_EXTENSIBLE(h_obj)) { + goto fail_nonextensible; + } + for (h_curr = h_new_proto; h_curr != NULL; h_curr = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_curr)) { + /* Loop prevention. */ + if (h_curr == h_obj) { + goto fail_loop; + } + } + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h_obj, h_new_proto); + /* fall thru */ + + skip: + duk_set_top(thr, 1); + if (magic == 2) { + duk_push_true(thr); + } + return ret_success; + + fail_nonextensible: + fail_loop: + if (magic != 2) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } else { + duk_push_false(thr); + return 1; + } +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_define_property(duk_hthread *thr) { + /* + * magic = 0: Object.defineProperty() + * magic = 1: Reflect.defineProperty() + */ + + duk_hobject *obj; + duk_hstring *key; + duk_hobject *get; + duk_hobject *set; + duk_idx_t idx_value; + duk_uint_t defprop_flags; + duk_small_uint_t magic; + duk_bool_t throw_flag; + duk_bool_t ret; + + DUK_ASSERT(thr != NULL); + + DUK_DDD(DUK_DDDPRINT("Object.defineProperty(): ctx=%p obj=%!T key=%!T desc=%!T", + (void *) thr, + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1), + (duk_tval *) duk_get_tval(thr, 2))); + + /* [ obj key desc ] */ + + magic = (duk_small_uint_t) duk_get_current_magic(thr); + + /* Lightfuncs are currently supported by coercing to a temporary + * Function object; changes will be allowed (the coerced value is + * extensible) but will be lost. Same for plain buffers. + */ + obj = duk_require_hobject_promote_mask(thr, 0, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + DUK_ASSERT(obj != NULL); + key = duk_to_property_key_hstring(thr, 1); + (void) duk_require_hobject(thr, 2); + + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(duk_get_hobject(thr, 2) != NULL); + + /* + * Validate and convert argument property descriptor (an ECMAScript + * object) into a set of defprop_flags and possibly property value, + * getter, and/or setter values on the value stack. + * + * Lightfunc set/get values are coerced to full Functions. + */ + + duk_hobject_prepare_property_descriptor(thr, + 2 /*idx_desc*/, + &defprop_flags, + &idx_value, + &get, + &set); + + /* + * Use Object.defineProperty() helper for the actual operation. + */ + + DUK_ASSERT(magic == 0U || magic == 1U); + throw_flag = magic ^ 1U; + ret = duk_hobject_define_property_helper(thr, + defprop_flags, + obj, + key, + idx_value, + get, + set, + throw_flag); + + /* Ignore the normalize/validate helper outputs on the value stack, + * they're popped automatically. + */ + + if (magic == 0U) { + /* Object.defineProperty(): return target object. */ + duk_push_hobject(thr, obj); + } else { + /* Reflect.defineProperty(): return success/fail. */ + duk_push_boolean(thr, ret); + } + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_get_own_property_descriptor(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 2); + + /* ES2015 Section 19.1.2.6, step 1 */ + if (duk_get_current_magic(thr) == 0) { + duk_to_object(thr, 0); + } + + /* [ obj key ] */ + + duk_hobject_object_get_own_property_descriptor(thr, -2); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is_extensible(duk_hthread *thr) { + /* + * magic = 0: Object.isExtensible() + * magic = 1: Reflect.isExtensible() + */ + + duk_hobject *h; + + if (duk_get_current_magic(thr) == 0) { + h = duk_get_hobject(thr, 0); + } else { + /* Reflect.isExtensible(): throw if non-object, but we accept lightfuncs + * and plain buffers here because they pretend to be objects. + */ + h = duk_require_hobject_accept_mask(thr, 0, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + } + + duk_push_boolean(thr, (h != NULL) && DUK_HOBJECT_HAS_EXTENSIBLE(h)); + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +/* Shared helper for various key/symbol listings, magic: + * 0=Object.keys() + * 1=Object.getOwnPropertyNames(), + * 2=Object.getOwnPropertySymbols(), + * 3=Reflect.ownKeys() + */ +DUK_LOCAL const duk_small_uint_t duk__object_keys_enum_flags[4] = { + /* Object.keys() */ + DUK_ENUM_OWN_PROPERTIES_ONLY | + DUK_ENUM_NO_PROXY_BEHAVIOR, + + /* Object.getOwnPropertyNames() */ + DUK_ENUM_INCLUDE_NONENUMERABLE | + DUK_ENUM_OWN_PROPERTIES_ONLY | + DUK_ENUM_NO_PROXY_BEHAVIOR, + + /* Object.getOwnPropertySymbols() */ + DUK_ENUM_INCLUDE_SYMBOLS | + DUK_ENUM_OWN_PROPERTIES_ONLY | + DUK_ENUM_EXCLUDE_STRINGS | + DUK_ENUM_INCLUDE_NONENUMERABLE | + DUK_ENUM_NO_PROXY_BEHAVIOR, + + /* Reflect.ownKeys() */ + DUK_ENUM_INCLUDE_SYMBOLS | + DUK_ENUM_OWN_PROPERTIES_ONLY | + DUK_ENUM_INCLUDE_NONENUMERABLE | + DUK_ENUM_NO_PROXY_BEHAVIOR +}; + +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_keys_shared(duk_hthread *thr) { + duk_hobject *obj; +#if defined(DUK_USE_ES6_PROXY) + duk_hobject *h_proxy_target; + duk_hobject *h_proxy_handler; + duk_hobject *h_trap_result; +#endif + duk_small_uint_t enum_flags; + duk_int_t magic; + + DUK_ASSERT_TOP(thr, 1); + + magic = duk_get_current_magic(thr); + if (magic == 3) { + /* ES2015 Section 26.1.11 requires a TypeError for non-objects. Lightfuncs + * and plain buffers pretend to be objects, so accept those too. + */ + obj = duk_require_hobject_promote_mask(thr, 0, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + } else { + /* ES2015: ToObject coerce. */ + obj = duk_to_hobject(thr, 0); + } + DUK_ASSERT(obj != NULL); + DUK_UNREF(obj); + + /* XXX: proxy chains */ + +#if defined(DUK_USE_ES6_PROXY) + /* XXX: better sharing of code between proxy target call sites */ + if (DUK_LIKELY(!duk_hobject_proxy_check(obj, + &h_proxy_target, + &h_proxy_handler))) { + goto skip_proxy; + } + + duk_push_hobject(thr, h_proxy_handler); + if (!duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_OWN_KEYS)) { + /* Careful with reachability here: don't pop 'obj' before pushing + * proxy target. + */ + DUK_DDD(DUK_DDDPRINT("no ownKeys trap, get keys of target instead")); + duk_pop_2(thr); + duk_push_hobject(thr, h_proxy_target); + duk_replace(thr, 0); + DUK_ASSERT_TOP(thr, 1); + goto skip_proxy; + } + + /* [ obj handler trap ] */ + duk_insert(thr, -2); + duk_push_hobject(thr, h_proxy_target); /* -> [ obj trap handler target ] */ + duk_call_method(thr, 1 /*nargs*/); /* -> [ obj trap_result ] */ + h_trap_result = duk_require_hobject(thr, -1); + DUK_UNREF(h_trap_result); + + magic = duk_get_current_magic(thr); + DUK_ASSERT(magic >= 0 && magic < (duk_int_t) (sizeof(duk__object_keys_enum_flags) / sizeof(duk_small_uint_t))); + enum_flags = duk__object_keys_enum_flags[magic]; + + duk_proxy_ownkeys_postprocess(thr, h_proxy_target, enum_flags); + return 1; + + skip_proxy: +#endif /* DUK_USE_ES6_PROXY */ + + DUK_ASSERT_TOP(thr, 1); + magic = duk_get_current_magic(thr); + DUK_ASSERT(magic >= 0 && magic < (duk_int_t) (sizeof(duk__object_keys_enum_flags) / sizeof(duk_small_uint_t))); + enum_flags = duk__object_keys_enum_flags[magic]; + return duk_hobject_get_enumerated_keys(thr, enum_flags); +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +#if defined(DUK_USE_OBJECT_BUILTIN) || defined(DUK_USE_REFLECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_object_constructor_prevent_extensions(duk_hthread *thr) { + /* + * magic = 0: Object.preventExtensions() + * magic = 1: Reflect.preventExtensions() + */ + + duk_hobject *h; + duk_uint_t mask; + duk_int_t magic; + + magic = duk_get_current_magic(thr); + + /* Silent success for lightfuncs and plain buffers always. */ + mask = DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER; + + /* Object.preventExtensions() silent success for non-object. */ + if (magic == 0) { + mask |= DUK_TYPE_MASK_UNDEFINED | + DUK_TYPE_MASK_NULL | + DUK_TYPE_MASK_BOOLEAN | + DUK_TYPE_MASK_NUMBER | + DUK_TYPE_MASK_STRING | + DUK_TYPE_MASK_POINTER; + } + + if (duk_check_type_mask(thr, 0, mask)) { + /* Not an object, already non-extensible so always success. */ + goto done; + } + h = duk_require_hobject(thr, 0); + DUK_ASSERT(h != NULL); + + DUK_HOBJECT_CLEAR_EXTENSIBLE(h); + + /* A non-extensible object cannot gain any more properties, + * so this is a good time to compact. + */ + duk_hobject_compact_props(thr, h); + + done: + if (magic == 1) { + duk_push_true(thr); + } + return 1; +} +#endif /* DUK_USE_OBJECT_BUILTIN || DUK_USE_REFLECT_BUILTIN */ + +/* + * __defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__ + */ + +#if defined(DUK_USE_ES8) +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_defineaccessor(duk_hthread *thr) { + duk_push_this(thr); + duk_insert(thr, 0); + duk_to_object(thr, 0); + duk_require_callable(thr, 2); + + /* [ ToObject(this) key getter/setter ] */ + + /* ToPropertyKey() coercion is not needed, duk_def_prop() does it. */ + duk_def_prop(thr, 0, DUK_DEFPROP_SET_ENUMERABLE | + DUK_DEFPROP_SET_CONFIGURABLE | + (duk_get_current_magic(thr) ? DUK_DEFPROP_HAVE_SETTER : DUK_DEFPROP_HAVE_GETTER)); + return 0; +} +DUK_INTERNAL duk_ret_t duk_bi_object_prototype_lookupaccessor(duk_hthread *thr) { + duk_uint_t sanity; + + duk_push_this(thr); + duk_to_object(thr, -1); + + /* XXX: Prototype walk (with sanity) should be a core property + * operation, could add a flag to e.g. duk_get_prop_desc(). + */ + + /* ToPropertyKey() coercion is not needed, duk_get_prop_desc() does it. */ + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + while (!duk_is_undefined(thr, -1)) { + /* [ key obj ] */ + duk_dup(thr, 0); + duk_get_prop_desc(thr, 1, 0 /*flags*/); + if (!duk_is_undefined(thr, -1)) { + duk_get_prop_stridx(thr, -1, (duk_get_current_magic(thr) != 0 ? DUK_STRIDX_SET : DUK_STRIDX_GET)); + return 1; + } + duk_pop(thr); + + if (DUK_UNLIKELY(sanity-- == 0)) { + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + } + + duk_get_prototype(thr, -1); + duk_remove(thr, -2); + } + return 1; +} +#endif /* DUK_USE_ES8 */ +#line 1 "duk_bi_performance.c" +/* + * High resolution time API (performance.now() et al) + * + * API specification: https://encoding.spec.whatwg.org/#ap://www.w3.org/TR/hr-time/ + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_PERFORMANCE_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_performance_now(duk_hthread *thr) { + /* From API spec: + * The DOMHighResTimeStamp type is used to store a time value in + * milliseconds, measured relative from the time origin, global + * monotonic clock, or a time value that represents a duration + * between two DOMHighResTimeStamp's. + */ + duk_push_number(thr, duk_time_get_monotonic_time(thr)); + return 1; +} + +#if 0 /* Missing until semantics decided. */ +DUK_INTERNAL duk_ret_t duk_bi_performance_timeorigin_getter(duk_hthread *thr) { + /* No decision yet how to handle timeOrigins, e.g. should one be + * initialized per heap, or per global object set. See + * https://www.w3.org/TR/hr-time/#time-origin. + */ + duk_push_uint(thr, 0); + return 1; +} +#endif /* 0 */ +#endif /* DUK_USE_PERFORMANCE_BUILTIN */ +#line 1 "duk_bi_pointer.c" +/* + * Pointer built-ins + */ + +/* #include duk_internal.h -> already included */ + +/* + * Constructor + */ + +DUK_INTERNAL duk_ret_t duk_bi_pointer_constructor(duk_hthread *thr) { + /* XXX: this behavior is quite useless now; it would be nice to be able + * to create pointer values from e.g. numbers or strings. Numbers are + * problematic on 64-bit platforms though. Hex encoded strings? + */ + if (duk_get_top(thr) == 0) { + duk_push_pointer(thr, NULL); + } else { + duk_to_pointer(thr, 0); + } + DUK_ASSERT(duk_is_pointer(thr, 0)); + duk_set_top(thr, 1); + + if (duk_is_constructor_call(thr)) { + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_POINTER), + DUK_BIDX_POINTER_PROTOTYPE); + + /* Pointer object internal value is immutable. */ + duk_dup_0(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE); + } + /* Note: unbalanced stack on purpose */ + + return 1; +} + +/* + * toString(), valueOf() + */ + +DUK_INTERNAL duk_ret_t duk_bi_pointer_prototype_tostring_shared(duk_hthread *thr) { + duk_tval *tv; + duk_small_int_t to_string = duk_get_current_magic(thr); + + duk_push_this(thr); + tv = duk_require_tval(thr, -1); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_POINTER(tv)) { + /* nop */ + } else if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + + /* Must be a "pointer object", i.e. class "Pointer" */ + if (DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_POINTER) { + goto type_error; + } + + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE); + } else { + goto type_error; + } + + if (to_string) { + duk_to_string(thr, -1); + } + return 1; + + type_error: + DUK_DCERROR_TYPE_INVALID_ARGS(thr); +} +#line 1 "duk_bi_promise.c" +/* + * Promise built-in + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_PROMISE_BUILTIN) + +DUK_INTERNAL duk_ret_t duk_bi_promise_constructor(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_ret_t duk_bi_promise_all(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_ret_t duk_bi_promise_race(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_ret_t duk_bi_promise_reject(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_ret_t duk_bi_promise_resolve(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_ret_t duk_bi_promise_catch(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL duk_ret_t duk_bi_promise_then(duk_hthread *thr) { + DUK_ERROR_TYPE(thr, "unimplemented"); + DUK_WO_NORETURN(return 0;); +} + +#endif /* DUK_USE_PROMISE_BUILTIN */ +#line 1 "duk_bi_proxy.c" +/* + * Proxy built-in (ES2015) + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ES6_PROXY) +/* Post-process a Proxy ownKeys() result at stack top. Push a cleaned up + * array of valid result keys (strings or symbols). TypeError for invalid + * values. Flags are shared with duk_enum(). + */ +DUK_INTERNAL void duk_proxy_ownkeys_postprocess(duk_hthread *thr, duk_hobject *h_proxy_target, duk_uint_t flags) { + duk_uarridx_t i, len, idx; + duk_propdesc desc; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(h_proxy_target != NULL); + + len = (duk_uarridx_t) duk_get_length(thr, -1); + idx = 0; + duk_push_array(thr); + /* XXX: preallocated dense array, fill in directly */ + for (i = 0; i < len; i++) { + duk_hstring *h; + + /* [ obj trap_result res_arr ] */ + (void) duk_get_prop_index(thr, -2, i); + h = duk_get_hstring(thr, -1); + if (h == NULL) { + DUK_ERROR_TYPE_INVALID_TRAP_RESULT(thr); + DUK_WO_NORETURN(return;); + } + + if (!(flags & DUK_ENUM_INCLUDE_NONENUMERABLE)) { + /* No support for 'getOwnPropertyDescriptor' trap yet, + * so check enumerability always from target object + * descriptor. + */ + if (duk_hobject_get_own_propdesc(thr, h_proxy_target, duk_known_hstring(thr, -1), &desc, 0 /*flags*/)) { + if ((desc.flags & DUK_PROPDESC_FLAG_ENUMERABLE) == 0) { + DUK_DDD(DUK_DDDPRINT("ignore non-enumerable property: %!T", duk_get_tval(thr, -1))); + goto skip_key; + } + } else { + DUK_DDD(DUK_DDDPRINT("ignore non-existent property: %!T", duk_get_tval(thr, -1))); + goto skip_key; + } + } + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + if (!(flags & DUK_ENUM_INCLUDE_SYMBOLS)) { + DUK_DDD(DUK_DDDPRINT("ignore symbol property: %!T", duk_get_tval(thr, -1))); + goto skip_key; + } + if (DUK_HSTRING_HAS_HIDDEN(h) && !(flags & DUK_ENUM_INCLUDE_HIDDEN)) { + DUK_DDD(DUK_DDDPRINT("ignore hidden symbol property: %!T", duk_get_tval(thr, -1))); + goto skip_key; + } + } else { + if (flags & DUK_ENUM_EXCLUDE_STRINGS) { + DUK_DDD(DUK_DDDPRINT("ignore string property: %!T", duk_get_tval(thr, -1))); + goto skip_key; + } + } + + /* [ obj trap_result res_arr propname ] */ + duk_put_prop_index(thr, -2, idx++); + continue; + + skip_key: + duk_pop(thr); + continue; + } + + /* XXX: Missing trap result validation for non-configurable target keys + * (must be present), for non-extensible target all target keys must be + * present and no extra keys can be present. + * http://www.ecma-international.org/ecma-262/6.0/#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys + */ + + /* XXX: The key enumerability check should trigger the "getOwnPropertyDescriptor" + * trap which has not yet been implemented. In the absence of such a trap, + * the enumerability should be checked from the target object; this is + * handled above. + */ +} +#endif /* DUK_USE_ES6_PROXY */ + +#if defined(DUK_USE_ES6_PROXY) +DUK_INTERNAL duk_ret_t duk_bi_proxy_constructor(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 2); /* [ target handler ] */ + + duk_require_constructor_call(thr); + duk_push_proxy(thr, 0 /*flags*/); /* [ target handler ] -> [ proxy ] */ + return 1; /* replacement */ +} +#endif /* DUK_USE_ES6_PROXY */ +#line 1 "duk_bi_reflect.c" +/* + * 'Reflect' built-in (ES2016 Section 26.1) + * http://www.ecma-international.org/ecma-262/7.0/#sec-reflect-object + * + * Many Reflect built-in functions are provided by shared helpers in + * duk_bi_object.c or duk_bi_function.c. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_REFLECT_BUILTIN) +DUK_INTERNAL duk_ret_t duk_bi_reflect_object_delete_property(duk_hthread *thr) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_bool_t ret; + + DUK_ASSERT_TOP(thr, 2); + (void) duk_require_hobject(thr, 0); + (void) duk_to_string(thr, 1); + + /* [ target key ] */ + + DUK_ASSERT(thr != NULL); + tv_obj = DUK_GET_TVAL_POSIDX(thr, 0); + tv_key = DUK_GET_TVAL_POSIDX(thr, 1); + ret = duk_hobject_delprop(thr, tv_obj, tv_key, 0 /*throw_flag*/); + duk_push_boolean(thr, ret); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_reflect_object_get(duk_hthread *thr) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_idx_t nargs; + + DUK_ASSERT(thr != NULL); + nargs = duk_get_top_require_min(thr, 2 /*min_top*/); + (void) duk_require_hobject(thr, 0); + (void) duk_to_string(thr, 1); + if (nargs >= 3 && !duk_strict_equals(thr, 0, 2)) { + /* XXX: [[Get]] receiver currently unsupported */ + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return 0;); + } + + /* [ target key receiver? ...? ] */ + + tv_obj = DUK_GET_TVAL_POSIDX(thr, 0); + tv_key = DUK_GET_TVAL_POSIDX(thr, 1); + (void) duk_hobject_getprop(thr, tv_obj, tv_key); /* This could also be a duk_get_prop(). */ + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_reflect_object_has(duk_hthread *thr) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_bool_t ret; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT_TOP(thr, 2); + (void) duk_require_hobject(thr, 0); + (void) duk_to_string(thr, 1); + + /* [ target key ] */ + + tv_obj = DUK_GET_TVAL_POSIDX(thr, 0); + tv_key = DUK_GET_TVAL_POSIDX(thr, 1); + ret = duk_hobject_hasprop(thr, tv_obj, tv_key); + duk_push_boolean(thr, ret); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_reflect_object_set(duk_hthread *thr) { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_tval *tv_val; + duk_idx_t nargs; + duk_bool_t ret; + + DUK_ASSERT(thr != NULL); + nargs = duk_get_top_require_min(thr, 3 /*min_top*/); + (void) duk_require_hobject(thr, 0); + (void) duk_to_string(thr, 1); + if (nargs >= 4 && !duk_strict_equals(thr, 0, 3)) { + /* XXX: [[Set]] receiver currently unsupported */ + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return 0;); + } + + /* [ target key value receiver? ...? ] */ + + tv_obj = DUK_GET_TVAL_POSIDX(thr, 0); + tv_key = DUK_GET_TVAL_POSIDX(thr, 1); + tv_val = DUK_GET_TVAL_POSIDX(thr, 2); + ret = duk_hobject_putprop(thr, tv_obj, tv_key, tv_val, 0 /*throw_flag*/); + duk_push_boolean(thr, ret); + return 1; +} +#endif /* DUK_USE_REFLECT_BUILTIN */ +#line 1 "duk_bi_regexp.c" +/* + * RegExp built-ins + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_REGEXP_SUPPORT) + +DUK_LOCAL void duk__get_this_regexp(duk_hthread *thr) { + duk_hobject *h; + + duk_push_this(thr); + h = duk_require_hobject_with_class(thr, -1, DUK_HOBJECT_CLASS_REGEXP); + DUK_ASSERT(h != NULL); + DUK_UNREF(h); + duk_insert(thr, 0); /* prepend regexp to valstack 0 index */ +} + +/* XXX: much to improve (code size) */ +DUK_INTERNAL duk_ret_t duk_bi_regexp_constructor(duk_hthread *thr) { + duk_hobject *h_pattern; + + DUK_ASSERT_TOP(thr, 2); + h_pattern = duk_get_hobject(thr, 0); + + if (!duk_is_constructor_call(thr) && + h_pattern != NULL && + DUK_HOBJECT_GET_CLASS_NUMBER(h_pattern) == DUK_HOBJECT_CLASS_REGEXP && + duk_is_undefined(thr, 1)) { + /* Called as a function, pattern has [[Class]] "RegExp" and + * flags is undefined -> return object as is. + */ + /* XXX: ES2015 has a NewTarget SameValue() check which is not + * yet implemented. + */ + duk_dup_0(thr); + return 1; + } + + /* Else functionality is identical for function call and constructor + * call. + */ + + if (h_pattern != NULL && + DUK_HOBJECT_GET_CLASS_NUMBER(h_pattern) == DUK_HOBJECT_CLASS_REGEXP) { + duk_get_prop_stridx_short(thr, 0, DUK_STRIDX_SOURCE); + if (duk_is_undefined(thr, 1)) { + /* In ES5 one would need to read the flags individually; + * in ES2015 just read .flags. + */ + duk_get_prop_stridx(thr, 0, DUK_STRIDX_FLAGS); + } else { + /* In ES2015 allowed; overrides argument RegExp flags. */ + duk_dup_1(thr); + } + } else { + if (duk_is_undefined(thr, 0)) { + duk_push_hstring_empty(thr); + } else { + duk_dup_0(thr); + duk_to_string(thr, -1); /* Rejects Symbols. */ + } + if (duk_is_undefined(thr, 1)) { + duk_push_hstring_empty(thr); + } else { + duk_dup_1(thr); + duk_to_string(thr, -1); /* Rejects Symbols. */ + } + + /* [ ... pattern flags ] */ + } + + DUK_DDD(DUK_DDDPRINT("RegExp constructor/function call, pattern=%!T, flags=%!T", + (duk_tval *) duk_get_tval(thr, -2), (duk_tval *) duk_get_tval(thr, -1))); + + /* [ ... pattern flags ] (both uncoerced) */ + + duk_to_string(thr, -2); + duk_to_string(thr, -1); + duk_regexp_compile(thr); + + /* [ ... bytecode escaped_source ] */ + + duk_regexp_create_instance(thr); + + /* [ ... RegExp ] */ + + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_exec(duk_hthread *thr) { + duk__get_this_regexp(thr); + + /* [ regexp input ] */ + + duk_regexp_match(thr); + + /* [ result ] */ + + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_test(duk_hthread *thr) { + duk__get_this_regexp(thr); + + /* [ regexp input ] */ + + /* result object is created and discarded; wasteful but saves code space */ + duk_regexp_match(thr); + + /* [ result ] */ + + duk_push_boolean(thr, (duk_is_null(thr, -1) ? 0 : 1)); + + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_tostring(duk_hthread *thr) { + /* This must be generic in ES2015 and later. */ + DUK_ASSERT_TOP(thr, 0); + duk_push_this(thr); + duk_push_literal(thr, "/"); + duk_get_prop_stridx(thr, 0, DUK_STRIDX_SOURCE); + duk_dup_m2(thr); /* another "/" */ + duk_get_prop_stridx(thr, 0, DUK_STRIDX_FLAGS); + duk_concat(thr, 4); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_flags(duk_hthread *thr) { + /* .flags is ES2015 but present even when ES2015 bindings are + * disabled because the constructor relies on it. + */ + duk_uint8_t buf[8]; /* enough for all flags + NUL */ + duk_uint8_t *p = buf; + + /* .flags is generic and works on any object. */ + duk_push_this(thr); + (void) duk_require_hobject(thr, -1); + if (duk_get_prop_stridx_boolean(thr, 0, DUK_STRIDX_GLOBAL, NULL)) { + *p++ = DUK_ASC_LC_G; + } + if (duk_get_prop_stridx_boolean(thr, 0, DUK_STRIDX_IGNORE_CASE, NULL)) { + *p++ = DUK_ASC_LC_I; + } + if (duk_get_prop_stridx_boolean(thr, 0, DUK_STRIDX_MULTILINE, NULL)) { + *p++ = DUK_ASC_LC_M; + } + /* .unicode: to be added */ + /* .sticky: to be added */ + *p++ = DUK_ASC_NUL; + DUK_ASSERT((duk_size_t) (p - buf) <= sizeof(buf)); + + duk_push_string(thr, (const char *) buf); + return 1; +} + +/* Shared helper for providing .source, .global, .multiline, etc getters. */ +DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_shared_getter(duk_hthread *thr) { + duk_hstring *h_bc; + duk_small_uint_t re_flags; + duk_hobject *h; + duk_int_t magic; + + DUK_ASSERT_TOP(thr, 0); + + duk_push_this(thr); + h = duk_require_hobject(thr, -1); + magic = duk_get_current_magic(thr); + + if (DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_REGEXP) { + duk_xget_owndataprop_stridx_short(thr, 0, DUK_STRIDX_INT_SOURCE); + duk_xget_owndataprop_stridx_short(thr, 0, DUK_STRIDX_INT_BYTECODE); + h_bc = duk_require_hstring(thr, -1); + re_flags = (duk_small_uint_t) DUK_HSTRING_GET_DATA(h_bc)[0]; /* Safe even if h_bc length is 0 (= NUL) */ + duk_pop(thr); + } else if (h == thr->builtins[DUK_BIDX_REGEXP_PROTOTYPE]) { + /* In ES2015 and ES2016 a TypeError would be thrown here. + * However, this had real world issues so ES2017 draft + * allows RegExp.prototype specifically, returning '(?:)' + * for .source and undefined for all flags. + */ + if (magic != 16 /* .source */) { + return 0; + } + duk_push_literal(thr, "(?:)"); /* .source handled by switch-case */ + re_flags = 0; + } else { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); + } + + /* [ regexp source ] */ + + switch (magic) { + case 0: { /* global */ + duk_push_boolean(thr, (re_flags & DUK_RE_FLAG_GLOBAL)); + break; + } + case 1: { /* ignoreCase */ + duk_push_boolean(thr, (re_flags & DUK_RE_FLAG_IGNORE_CASE)); + break; + } + case 2: { /* multiline */ + duk_push_boolean(thr, (re_flags & DUK_RE_FLAG_MULTILINE)); + break; + } +#if 0 + /* Don't provide until implemented to avoid interfering with feature + * detection in user code. + */ + case 3: /* sticky */ + case 4: { /* unicode */ + duk_push_false(thr); + break; + } +#endif + default: { /* source */ + /* leave 'source' on top */ + break; + } + } + + return 1; +} + +#endif /* DUK_USE_REGEXP_SUPPORT */ +#line 1 "duk_bi_string.c" +/* + * String built-ins + * + * Most String built-ins must only accept strings (or String objects). + * Symbols, represented internally as strings, must be generally rejected. + * The duk_push_this_coercible_to_string() helper does this automatically. + */ + +/* XXX: There are several limitations in the current implementation for + * strings with >= 0x80000000UL characters. In some cases one would need + * to be able to represent the range [-0xffffffff,0xffffffff] and so on. + * Generally character and byte length are assumed to fit into signed 32 + * bits (< 0x80000000UL). Places with issues are not marked explicitly + * below in all cases, look for signed type usage (duk_int_t etc) for + * offsets/lengths. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_STRING_BUILTIN) + +/* + * Helpers + */ + +DUK_LOCAL duk_hstring *duk__str_tostring_notregexp(duk_hthread *thr, duk_idx_t idx) { + duk_hstring *h; + + if (duk_get_class_number(thr, idx) == DUK_HOBJECT_CLASS_REGEXP) { + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return NULL;); + } + h = duk_to_hstring(thr, idx); + DUK_ASSERT(h != NULL); + + return h; +} + +DUK_LOCAL duk_int_t duk__str_search_shared(duk_hthread *thr, duk_hstring *h_this, duk_hstring *h_search, duk_int_t start_cpos, duk_bool_t backwards) { + duk_int_t cpos; + duk_int_t bpos; + const duk_uint8_t *p_start, *p_end, *p; + const duk_uint8_t *q_start; + duk_int_t q_blen; + duk_uint8_t firstbyte; + duk_uint8_t t; + + cpos = start_cpos; + + /* Empty searchstring always matches; cpos must be clamped here. + * (If q_blen were < 0 due to clamped coercion, it would also be + * caught here.) + */ + q_start = DUK_HSTRING_GET_DATA(h_search); + q_blen = (duk_int_t) DUK_HSTRING_GET_BYTELEN(h_search); + if (q_blen <= 0) { + return cpos; + } + DUK_ASSERT(q_blen > 0); + + bpos = (duk_int_t) duk_heap_strcache_offset_char2byte(thr, h_this, (duk_uint32_t) cpos); + + p_start = DUK_HSTRING_GET_DATA(h_this); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_this); + p = p_start + bpos; + + /* This loop is optimized for size. For speed, there should be + * two separate loops, and we should ensure that memcmp() can be + * used without an extra "will searchstring fit" check. Doing + * the preconditioning for 'p' and 'p_end' is easy but cpos + * must be updated if 'p' is wound back (backward scanning). + */ + + firstbyte = q_start[0]; /* leading byte of match string */ + while (p <= p_end && p >= p_start) { + t = *p; + + /* For ECMAScript strings, this check can only match for + * initial UTF-8 bytes (not continuation bytes). For other + * strings all bets are off. + */ + + if ((t == firstbyte) && ((duk_size_t) (p_end - p) >= (duk_size_t) q_blen)) { + DUK_ASSERT(q_blen > 0); + if (duk_memcmp((const void *) p, (const void *) q_start, (size_t) q_blen) == 0) { + return cpos; + } + } + + /* track cpos while scanning */ + if (backwards) { + /* when going backwards, we decrement cpos 'early'; + * 'p' may point to a continuation byte of the char + * at offset 'cpos', but that's OK because we'll + * backtrack all the way to the initial byte. + */ + if ((t & 0xc0) != 0x80) { + cpos--; + } + p--; + } else { + if ((t & 0xc0) != 0x80) { + cpos++; + } + p++; + } + } + + /* Not found. Empty string case is handled specially above. */ + return -1; +} + +/* + * Constructor + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_constructor(duk_hthread *thr) { + duk_hstring *h; + duk_uint_t flags; + + /* String constructor needs to distinguish between an argument not given at all + * vs. given as 'undefined'. We're a vararg function to handle this properly. + */ + + /* XXX: copy current activation flags to thr, including current magic, + * is_constructor_call etc. This takes a few bytes in duk_hthread but + * makes call sites smaller (there are >30 is_constructor_call and get + * current magic call sites. + */ + + if (duk_get_top(thr) == 0) { + duk_push_hstring_empty(thr); + } else { + h = duk_to_hstring_acceptsymbol(thr, 0); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h) && !duk_is_constructor_call(thr))) { + duk_push_symbol_descriptive_string(thr, h); + duk_replace(thr, 0); + } + } + duk_to_string(thr, 0); /* catches symbol argument for constructor call */ + DUK_ASSERT(duk_is_string(thr, 0)); + duk_set_top(thr, 1); /* Top may be 1 or larger. */ + + if (duk_is_constructor_call(thr)) { + /* String object internal value is immutable */ + flags = DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_STRING); + duk_push_object_helper(thr, flags, DUK_BIDX_STRING_PROTOTYPE); + duk_dup_0(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE); + } + /* Note: unbalanced stack on purpose */ + + return 1; +} + +DUK_LOCAL duk_ret_t duk__construct_from_codepoints(duk_hthread *thr, duk_bool_t nonbmp) { + duk_bufwriter_ctx bw_alloc; + duk_bufwriter_ctx *bw; + duk_idx_t i, n; + duk_ucodepoint_t cp; + + /* XXX: It would be nice to build the string directly but ToUint16() + * coercion is needed so a generic helper would not be very + * helpful (perhaps coerce the value stack first here and then + * build a string from a duk_tval number sequence in one go?). + */ + + n = duk_get_top(thr); + + bw = &bw_alloc; + DUK_BW_INIT_PUSHBUF(thr, bw, (duk_size_t) n); /* initial estimate for ASCII only codepoints */ + + for (i = 0; i < n; i++) { + /* XXX: could improve bufwriter handling to write multiple codepoints + * with one ensure call but the relative benefit would be quite small. + */ + + if (nonbmp) { + /* ES2015 requires that (1) SameValue(cp, ToInteger(cp)) and + * (2) cp >= 0 and cp <= 0x10ffff. This check does not + * implement the steps exactly but the outcome should be + * the same. + */ + duk_int32_t i32 = 0; + if (!duk_is_whole_get_int32(duk_to_number(thr, i), &i32) || + i32 < 0 || i32 > 0x10ffffL) { + DUK_DCERROR_RANGE_INVALID_ARGS(thr); + } + DUK_ASSERT(i32 >= 0 && i32 <= 0x10ffffL); + cp = (duk_ucodepoint_t) i32; + DUK_BW_WRITE_ENSURE_CESU8(thr, bw, cp); + } else { +#if defined(DUK_USE_NONSTD_STRING_FROMCHARCODE_32BIT) + /* ToUint16() coercion is mandatory in the E5.1 specification, but + * this non-compliant behavior makes more sense because we support + * non-BMP codepoints. Don't use CESU-8 because that'd create + * surrogate pairs. + */ + cp = (duk_ucodepoint_t) duk_to_uint32(thr, i); + DUK_BW_WRITE_ENSURE_XUTF8(thr, bw, cp); +#else + cp = (duk_ucodepoint_t) duk_to_uint16(thr, i); + DUK_ASSERT(cp >= 0 && cp <= 0x10ffffL); + DUK_BW_WRITE_ENSURE_CESU8(thr, bw, cp); +#endif + } + } + + DUK_BW_COMPACT(thr, bw); + (void) duk_buffer_to_string(thr, -1); /* Safe, extended UTF-8 or CESU-8 encoded. */ + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_string_constructor_from_char_code(duk_hthread *thr) { + return duk__construct_from_codepoints(thr, 0 /*nonbmp*/); +} + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_string_constructor_from_code_point(duk_hthread *thr) { + return duk__construct_from_codepoints(thr, 1 /*nonbmp*/); +} +#endif + +/* + * toString(), valueOf() + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_to_string(duk_hthread *thr) { + duk_tval *tv; + + duk_push_this(thr); + tv = duk_require_tval(thr, -1); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_IS_STRING(tv)) { + /* return as is */ + } else if (DUK_TVAL_IS_OBJECT(tv)) { + duk_hobject *h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + + /* Must be a "string object", i.e. class "String" */ + if (DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_STRING) { + goto type_error; + } + + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_VALUE); + DUK_ASSERT(duk_is_string(thr, -1)); + } else { + goto type_error; + } + + (void) duk_require_hstring_notsymbol(thr, -1); /* Reject symbols (and wrapped symbols). */ + return 1; + + type_error: + DUK_DCERROR_TYPE_INVALID_ARGS(thr); +} + +/* + * Character and charcode access + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_char_at(duk_hthread *thr) { + duk_hstring *h; + duk_int_t pos; + + /* XXX: faster implementation */ + + h = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h != NULL); + + pos = duk_to_int(thr, 0); + + if (sizeof(duk_size_t) >= sizeof(duk_uint_t)) { + /* Cast to duk_size_t works in this case: + * - If pos < 0, (duk_size_t) pos will always be + * >= max_charlen, and result will be the empty string + * (see duk_substring()). + * - If pos >= 0, pos + 1 cannot wrap. + */ + DUK_ASSERT((duk_size_t) DUK_INT_MIN >= DUK_HSTRING_MAX_BYTELEN); + DUK_ASSERT((duk_size_t) DUK_INT_MAX + 1U > (duk_size_t) DUK_INT_MAX); + duk_substring(thr, -1, (duk_size_t) pos, (duk_size_t) pos + 1U); + } else { + /* If size_t is smaller than int, explicit bounds checks + * are needed because an int may wrap multiple times. + */ + if (DUK_UNLIKELY(pos < 0 || (duk_uint_t) pos >= (duk_uint_t) DUK_HSTRING_GET_CHARLEN(h))) { + duk_push_hstring_empty(thr); + } else { + duk_substring(thr, -1, (duk_size_t) pos, (duk_size_t) pos + 1U); + } + } + + return 1; +} + +/* Magic: 0=charCodeAt, 1=codePointAt */ +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_char_code_at(duk_hthread *thr) { + duk_int_t pos; + duk_hstring *h; + duk_bool_t clamped; + duk_uint32_t cp; + duk_int_t magic; + + /* XXX: faster implementation */ + + DUK_DDD(DUK_DDDPRINT("arg=%!T", (duk_tval *) duk_get_tval(thr, 0))); + + h = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h != NULL); + + pos = duk_to_int_clamped_raw(thr, + 0 /*index*/, + 0 /*min(incl)*/, + (duk_int_t) DUK_HSTRING_GET_CHARLEN(h) - 1 /*max(incl)*/, + &clamped /*out_clamped*/); +#if defined(DUK_USE_ES6) + magic = duk_get_current_magic(thr); +#else + DUK_ASSERT(duk_get_current_magic(thr) == 0); + magic = 0; +#endif + if (clamped) { + /* For out-of-bounds indices .charCodeAt() returns NaN and + * .codePointAt() returns undefined. + */ + if (magic != 0) { + return 0; + } + duk_push_nan(thr); + } else { + DUK_ASSERT(pos >= 0); + cp = (duk_uint32_t) duk_hstring_char_code_at_raw(thr, h, (duk_uint_t) pos, (duk_bool_t) magic /*surrogate_aware*/); + duk_push_u32(thr, cp); + } + return 1; +} + +/* + * substring(), substr(), slice() + */ + +/* XXX: any chance of merging these three similar but still slightly + * different algorithms so that footprint would be reduced? + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_substring(duk_hthread *thr) { + duk_hstring *h; + duk_int_t start_pos, end_pos; + duk_int_t len; + + h = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h != NULL); + len = (duk_int_t) DUK_HSTRING_GET_CHARLEN(h); + + /* [ start end str ] */ + + start_pos = duk_to_int_clamped(thr, 0, 0, len); + if (duk_is_undefined(thr, 1)) { + end_pos = len; + } else { + end_pos = duk_to_int_clamped(thr, 1, 0, len); + } + DUK_ASSERT(start_pos >= 0 && start_pos <= len); + DUK_ASSERT(end_pos >= 0 && end_pos <= len); + + if (start_pos > end_pos) { + duk_int_t tmp = start_pos; + start_pos = end_pos; + end_pos = tmp; + } + + DUK_ASSERT(end_pos >= start_pos); + + duk_substring(thr, -1, (duk_size_t) start_pos, (duk_size_t) end_pos); + return 1; +} + +#if defined(DUK_USE_SECTION_B) +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_substr(duk_hthread *thr) { + duk_hstring *h; + duk_int_t start_pos, end_pos; + duk_int_t len; + + /* Unlike non-obsolete String calls, substr() algorithm in E5.1 + * specification will happily coerce undefined and null to strings + * ("undefined" and "null"). + */ + duk_push_this(thr); + h = duk_to_hstring_m1(thr); /* Reject Symbols. */ + DUK_ASSERT(h != NULL); + len = (duk_int_t) DUK_HSTRING_GET_CHARLEN(h); + + /* [ start length str ] */ + + /* The implementation for computing of start_pos and end_pos differs + * from the standard algorithm, but is intended to result in the exactly + * same behavior. This is not always obvious. + */ + + /* combines steps 2 and 5; -len ensures max() not needed for step 5 */ + start_pos = duk_to_int_clamped(thr, 0, -len, len); + if (start_pos < 0) { + start_pos = len + start_pos; + } + DUK_ASSERT(start_pos >= 0 && start_pos <= len); + + /* combines steps 3, 6; step 7 is not needed */ + if (duk_is_undefined(thr, 1)) { + end_pos = len; + } else { + DUK_ASSERT(start_pos <= len); + end_pos = start_pos + duk_to_int_clamped(thr, 1, 0, len - start_pos); + } + DUK_ASSERT(start_pos >= 0 && start_pos <= len); + DUK_ASSERT(end_pos >= 0 && end_pos <= len); + DUK_ASSERT(end_pos >= start_pos); + + duk_substring(thr, -1, (duk_size_t) start_pos, (duk_size_t) end_pos); + return 1; +} +#endif /* DUK_USE_SECTION_B */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_slice(duk_hthread *thr) { + duk_hstring *h; + duk_int_t start_pos, end_pos; + duk_int_t len; + + h = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h != NULL); + len = (duk_int_t) DUK_HSTRING_GET_CHARLEN(h); + + /* [ start end str ] */ + + start_pos = duk_to_int_clamped(thr, 0, -len, len); + if (start_pos < 0) { + start_pos = len + start_pos; + } + if (duk_is_undefined(thr, 1)) { + end_pos = len; + } else { + end_pos = duk_to_int_clamped(thr, 1, -len, len); + if (end_pos < 0) { + end_pos = len + end_pos; + } + } + DUK_ASSERT(start_pos >= 0 && start_pos <= len); + DUK_ASSERT(end_pos >= 0 && end_pos <= len); + + if (end_pos < start_pos) { + end_pos = start_pos; + } + + DUK_ASSERT(end_pos >= start_pos); + + duk_substring(thr, -1, (duk_size_t) start_pos, (duk_size_t) end_pos); + return 1; +} + +/* + * Case conversion + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_caseconv_shared(duk_hthread *thr) { + duk_small_int_t uppercase = duk_get_current_magic(thr); + + (void) duk_push_this_coercible_to_string(thr); + duk_unicode_case_convert_string(thr, (duk_bool_t) uppercase); + return 1; +} + +/* + * indexOf() and lastIndexOf() + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_indexof_shared(duk_hthread *thr) { + duk_hstring *h_this; + duk_hstring *h_search; + duk_int_t clen_this; + duk_int_t cpos; + duk_small_uint_t is_lastindexof = (duk_small_uint_t) duk_get_current_magic(thr); /* 0=indexOf, 1=lastIndexOf */ + + h_this = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h_this != NULL); + clen_this = (duk_int_t) DUK_HSTRING_GET_CHARLEN(h_this); + + h_search = duk_to_hstring(thr, 0); + DUK_ASSERT(h_search != NULL); + + duk_to_number(thr, 1); + if (duk_is_nan(thr, 1) && is_lastindexof) { + /* indexOf: NaN should cause pos to be zero. + * lastIndexOf: NaN should cause pos to be +Infinity + * (and later be clamped to len). + */ + cpos = clen_this; + } else { + cpos = duk_to_int_clamped(thr, 1, 0, clen_this); + } + + cpos = duk__str_search_shared(thr, h_this, h_search, cpos, is_lastindexof /*backwards*/); + duk_push_int(thr, cpos); + return 1; +} + +/* + * replace() + */ + +/* XXX: the current implementation works but is quite clunky; it compiles + * to almost 1,4kB of x86 code so it needs to be simplified (better approach, + * shared helpers, etc). Some ideas for refactoring: + * + * - a primitive to convert a string into a regexp matcher (reduces matching + * code at the cost of making matching much slower) + * - use replace() as a basic helper for match() and split(), which are both + * much simpler + * - API call to get_prop and to_boolean + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_replace(duk_hthread *thr) { + duk_hstring *h_input; + duk_hstring *h_match; + duk_hstring *h_search; + duk_hobject *h_re; + duk_bufwriter_ctx bw_alloc; + duk_bufwriter_ctx *bw; +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_bool_t is_regexp; + duk_bool_t is_global; +#endif + duk_bool_t is_repl_func; + duk_uint32_t match_start_coff, match_start_boff; +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_int_t match_caps; +#endif + duk_uint32_t prev_match_end_boff; + const duk_uint8_t *r_start, *r_end, *r; /* repl string scan */ + duk_size_t tmp_sz; + + DUK_ASSERT_TOP(thr, 2); + h_input = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h_input != NULL); + + bw = &bw_alloc; + DUK_BW_INIT_PUSHBUF(thr, bw, DUK_HSTRING_GET_BYTELEN(h_input)); /* input size is good output starting point */ + + DUK_ASSERT_TOP(thr, 4); + + /* stack[0] = search value + * stack[1] = replace value + * stack[2] = input string + * stack[3] = result buffer + */ + + h_re = duk_get_hobject_with_class(thr, 0, DUK_HOBJECT_CLASS_REGEXP); + if (h_re) { +#if defined(DUK_USE_REGEXP_SUPPORT) + is_regexp = 1; + is_global = duk_get_prop_stridx_boolean(thr, 0, DUK_STRIDX_GLOBAL, NULL); + + if (is_global) { + /* start match from beginning */ + duk_push_int(thr, 0); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + } +#else /* DUK_USE_REGEXP_SUPPORT */ + DUK_DCERROR_UNSUPPORTED(thr); +#endif /* DUK_USE_REGEXP_SUPPORT */ + } else { + duk_to_string(thr, 0); /* rejects symbols */ +#if defined(DUK_USE_REGEXP_SUPPORT) + is_regexp = 0; + is_global = 0; +#endif + } + + if (duk_is_function(thr, 1)) { + is_repl_func = 1; + r_start = NULL; + r_end = NULL; + } else { + duk_hstring *h_repl; + + is_repl_func = 0; + h_repl = duk_to_hstring(thr, 1); /* reject symbols */ + DUK_ASSERT(h_repl != NULL); + r_start = DUK_HSTRING_GET_DATA(h_repl); + r_end = r_start + DUK_HSTRING_GET_BYTELEN(h_repl); + } + + prev_match_end_boff = 0; + + for (;;) { + /* + * If matching with a regexp: + * - non-global RegExp: lastIndex not touched on a match, zeroed + * on a non-match + * - global RegExp: on match, lastIndex will be updated by regexp + * executor to point to next char after the matching part (so that + * characters in the matching part are not matched again) + * + * If matching with a string: + * - always non-global match, find first occurrence + * + * We need: + * - The character offset of start-of-match for the replacer function + * - The byte offsets for start-of-match and end-of-match to implement + * the replacement values $&, $`, and $', and to copy non-matching + * input string portions (including header and trailer) verbatim. + * + * NOTE: the E5.1 specification is a bit vague how the RegExp should + * behave in the replacement process; e.g. is matching done first for + * all matches (in the global RegExp case) before any replacer calls + * are made? See: test-bi-string-proto-replace.js for discussion. + */ + + DUK_ASSERT_TOP(thr, 4); + +#if defined(DUK_USE_REGEXP_SUPPORT) + if (is_regexp) { + duk_dup_0(thr); + duk_dup_2(thr); + duk_regexp_match(thr); /* [ ... regexp input ] -> [ res_obj ] */ + if (!duk_is_object(thr, -1)) { + duk_pop(thr); + break; + } + + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_INDEX); + DUK_ASSERT(duk_is_number(thr, -1)); + match_start_coff = duk_get_uint(thr, -1); + duk_pop(thr); + + duk_get_prop_index(thr, -1, 0); + DUK_ASSERT(duk_is_string(thr, -1)); + h_match = duk_known_hstring(thr, -1); + duk_pop(thr); /* h_match is borrowed, remains reachable through match_obj */ + + if (DUK_HSTRING_GET_BYTELEN(h_match) == 0) { + /* This should be equivalent to match() algorithm step 8.f.iii.2: + * detect an empty match and allow it, but don't allow it twice. + */ + duk_uint32_t last_index; + + duk_get_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + last_index = (duk_uint32_t) duk_get_uint(thr, -1); + DUK_DDD(DUK_DDDPRINT("empty match, bump lastIndex: %ld -> %ld", + (long) last_index, (long) (last_index + 1))); + duk_pop(thr); + duk_push_uint(thr, (duk_uint_t) (last_index + 1)); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + } + + DUK_ASSERT(duk_get_length(thr, -1) <= DUK_INT_MAX); /* string limits */ + match_caps = (duk_int_t) duk_get_length(thr, -1); + } else { +#else /* DUK_USE_REGEXP_SUPPORT */ + { /* unconditionally */ +#endif /* DUK_USE_REGEXP_SUPPORT */ + const duk_uint8_t *p_start, *p_end, *p; /* input string scan */ + const duk_uint8_t *q_start; /* match string */ + duk_size_t q_blen; + +#if defined(DUK_USE_REGEXP_SUPPORT) + DUK_ASSERT(!is_global); /* single match always */ +#endif + + p_start = DUK_HSTRING_GET_DATA(h_input); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_input); + p = p_start; + + h_search = duk_known_hstring(thr, 0); + q_start = DUK_HSTRING_GET_DATA(h_search); + q_blen = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h_search); + + p_end -= q_blen; /* ensure full memcmp() fits in while */ + + match_start_coff = 0; + + while (p <= p_end) { + DUK_ASSERT(p + q_blen <= DUK_HSTRING_GET_DATA(h_input) + DUK_HSTRING_GET_BYTELEN(h_input)); + if (duk_memcmp((const void *) p, (const void *) q_start, (size_t) q_blen) == 0) { + duk_dup_0(thr); + h_match = duk_known_hstring(thr, -1); +#if defined(DUK_USE_REGEXP_SUPPORT) + match_caps = 0; +#endif + goto found; + } + + /* track utf-8 non-continuation bytes */ + if ((p[0] & 0xc0) != 0x80) { + match_start_coff++; + } + p++; + } + + /* not found */ + break; + } + found: + + /* stack[0] = search value + * stack[1] = replace value + * stack[2] = input string + * stack[3] = result buffer + * stack[4] = regexp match OR match string + */ + + match_start_boff = (duk_uint32_t) duk_heap_strcache_offset_char2byte(thr, h_input, match_start_coff); + + tmp_sz = (duk_size_t) (match_start_boff - prev_match_end_boff); + DUK_BW_WRITE_ENSURE_BYTES(thr, bw, DUK_HSTRING_GET_DATA(h_input) + prev_match_end_boff, tmp_sz); + + prev_match_end_boff = match_start_boff + DUK_HSTRING_GET_BYTELEN(h_match); + + if (is_repl_func) { + duk_idx_t idx_args; + duk_hstring *h_repl; + + /* regexp res_obj is at index 4 */ + + duk_dup_1(thr); + idx_args = duk_get_top(thr); + +#if defined(DUK_USE_REGEXP_SUPPORT) + if (is_regexp) { + duk_int_t idx; + duk_require_stack(thr, match_caps + 2); + for (idx = 0; idx < match_caps; idx++) { + /* match followed by capture(s) */ + duk_get_prop_index(thr, 4, (duk_uarridx_t) idx); + } + } else { +#else /* DUK_USE_REGEXP_SUPPORT */ + { /* unconditionally */ +#endif /* DUK_USE_REGEXP_SUPPORT */ + /* match == search string, by definition */ + duk_dup_0(thr); + } + duk_push_uint(thr, (duk_uint_t) match_start_coff); + duk_dup_2(thr); + + /* [ ... replacer match [captures] match_char_offset input ] */ + + duk_call(thr, duk_get_top(thr) - idx_args); + h_repl = duk_to_hstring_m1(thr); /* -> [ ... repl_value ] */ + DUK_ASSERT(h_repl != NULL); + + DUK_BW_WRITE_ENSURE_HSTRING(thr, bw, h_repl); + + duk_pop(thr); /* repl_value */ + } else { + r = r_start; + + while (r < r_end) { + duk_int_t ch1; + duk_int_t ch2; +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_int_t ch3; +#endif + duk_size_t left; + + ch1 = *r++; + if (ch1 != DUK_ASC_DOLLAR) { + goto repl_write; + } + DUK_ASSERT(r <= r_end); + left = (duk_size_t) (r_end - r); + + if (left <= 0) { + goto repl_write; + } + + ch2 = r[0]; + switch (ch2) { + case DUK_ASC_DOLLAR: { + ch1 = (1 << 8) + DUK_ASC_DOLLAR; + goto repl_write; + } + case DUK_ASC_AMP: { + DUK_BW_WRITE_ENSURE_HSTRING(thr, bw, h_match); + r++; + continue; + } + case DUK_ASC_GRAVE: { + tmp_sz = (duk_size_t) match_start_boff; + DUK_BW_WRITE_ENSURE_BYTES(thr, bw, DUK_HSTRING_GET_DATA(h_input), tmp_sz); + r++; + continue; + } + case DUK_ASC_SINGLEQUOTE: { + duk_uint32_t match_end_boff; + + /* Use match charlen instead of bytelen, just in case the input and + * match codepoint encodings would have different lengths. + */ + /* XXX: charlen computed here, and also in char2byte helper. */ + match_end_boff = (duk_uint32_t) duk_heap_strcache_offset_char2byte(thr, + h_input, + match_start_coff + (duk_uint_fast32_t) DUK_HSTRING_GET_CHARLEN(h_match)); + + tmp_sz = (duk_size_t) (DUK_HSTRING_GET_BYTELEN(h_input) - match_end_boff); + DUK_BW_WRITE_ENSURE_BYTES(thr, bw, DUK_HSTRING_GET_DATA(h_input) + match_end_boff, tmp_sz); + r++; + continue; + } + default: { +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_int_t capnum, captmp, capadv; + /* XXX: optional check, match_caps is zero if no regexp, + * so dollar will be interpreted literally anyway. + */ + + if (!is_regexp) { + goto repl_write; + } + + if (!(ch2 >= DUK_ASC_0 && ch2 <= DUK_ASC_9)) { + goto repl_write; + } + capnum = ch2 - DUK_ASC_0; + capadv = 1; + + if (left >= 2) { + ch3 = r[1]; + if (ch3 >= DUK_ASC_0 && ch3 <= DUK_ASC_9) { + captmp = capnum * 10 + (ch3 - DUK_ASC_0); + if (captmp < match_caps) { + capnum = captmp; + capadv = 2; + } + } + } + + if (capnum > 0 && capnum < match_caps) { + DUK_ASSERT(is_regexp != 0); /* match_caps == 0 without regexps */ + + /* regexp res_obj is at offset 4 */ + duk_get_prop_index(thr, 4, (duk_uarridx_t) capnum); + if (duk_is_string(thr, -1)) { + duk_hstring *h_tmp_str; + + h_tmp_str = duk_known_hstring(thr, -1); + + DUK_BW_WRITE_ENSURE_HSTRING(thr, bw, h_tmp_str); + } else { + /* undefined -> skip (replaced with empty) */ + } + duk_pop(thr); + r += capadv; + continue; + } else { + goto repl_write; + } +#else /* DUK_USE_REGEXP_SUPPORT */ + goto repl_write; /* unconditionally */ +#endif /* DUK_USE_REGEXP_SUPPORT */ + } /* default case */ + } /* switch (ch2) */ + + repl_write: + /* ch1 = (r_increment << 8) + byte */ + + DUK_BW_WRITE_ENSURE_U8(thr, bw, (duk_uint8_t) (ch1 & 0xff)); + r += ch1 >> 8; + } /* while repl */ + } /* if (is_repl_func) */ + + duk_pop(thr); /* pop regexp res_obj or match string */ + +#if defined(DUK_USE_REGEXP_SUPPORT) + if (!is_global) { +#else + { /* unconditionally; is_global==0 */ +#endif + break; + } + } + + /* trailer */ + tmp_sz = (duk_size_t) (DUK_HSTRING_GET_BYTELEN(h_input) - prev_match_end_boff); + DUK_BW_WRITE_ENSURE_BYTES(thr, bw, DUK_HSTRING_GET_DATA(h_input) + prev_match_end_boff, tmp_sz); + + DUK_ASSERT_TOP(thr, 4); + DUK_BW_COMPACT(thr, bw); + (void) duk_buffer_to_string(thr, -1); /* Safe if inputs are safe. */ + return 1; +} + +/* + * split() + */ + +/* XXX: very messy now, but works; clean up, remove unused variables (nomimally + * used so compiler doesn't complain). + */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_split(duk_hthread *thr) { + duk_hstring *h_input; + duk_hstring *h_sep; + duk_uint32_t limit; + duk_uint32_t arr_idx; +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_bool_t is_regexp; +#endif + duk_bool_t matched; /* set to 1 if any match exists (needed for empty input special case) */ + duk_uint32_t prev_match_end_coff, prev_match_end_boff; + duk_uint32_t match_start_boff, match_start_coff; + duk_uint32_t match_end_boff, match_end_coff; + + h_input = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h_input != NULL); + + duk_push_array(thr); + + if (duk_is_undefined(thr, 1)) { + limit = 0xffffffffUL; + } else { + limit = duk_to_uint32(thr, 1); + } + + if (limit == 0) { + return 1; + } + + /* If the separator is a RegExp, make a "clone" of it. The specification + * algorithm calls [[Match]] directly for specific indices; we emulate this + * by tweaking lastIndex and using a "force global" variant of duk_regexp_match() + * which will use global-style matching even when the RegExp itself is non-global. + */ + + if (duk_is_undefined(thr, 0)) { + /* The spec algorithm first does "R = ToString(separator)" before checking + * whether separator is undefined. Since this is side effect free, we can + * skip the ToString() here. + */ + duk_dup_2(thr); + duk_put_prop_index(thr, 3, 0); + return 1; + } else if (duk_get_hobject_with_class(thr, 0, DUK_HOBJECT_CLASS_REGEXP) != NULL) { +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_push_hobject_bidx(thr, DUK_BIDX_REGEXP_CONSTRUCTOR); + duk_dup_0(thr); + duk_new(thr, 1); /* [ ... RegExp val ] -> [ ... res ] */ + duk_replace(thr, 0); + /* lastIndex is initialized to zero by new RegExp() */ + is_regexp = 1; +#else + DUK_DCERROR_UNSUPPORTED(thr); +#endif + } else { + duk_to_string(thr, 0); +#if defined(DUK_USE_REGEXP_SUPPORT) + is_regexp = 0; +#endif + } + + /* stack[0] = separator (string or regexp) + * stack[1] = limit + * stack[2] = input string + * stack[3] = result array + */ + + prev_match_end_boff = 0; + prev_match_end_coff = 0; + arr_idx = 0; + matched = 0; + + for (;;) { + /* + * The specification uses RegExp [[Match]] to attempt match at specific + * offsets. We don't have such a primitive, so we use an actual RegExp + * and tweak lastIndex. Since the RegExp may be non-global, we use a + * special variant which forces global-like behavior for matching. + */ + + DUK_ASSERT_TOP(thr, 4); + +#if defined(DUK_USE_REGEXP_SUPPORT) + if (is_regexp) { + duk_dup_0(thr); + duk_dup_2(thr); + duk_regexp_match_force_global(thr); /* [ ... regexp input ] -> [ res_obj ] */ + if (!duk_is_object(thr, -1)) { + duk_pop(thr); + break; + } + matched = 1; + + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_INDEX); + DUK_ASSERT(duk_is_number(thr, -1)); + match_start_coff = duk_get_uint(thr, -1); + match_start_boff = (duk_uint32_t) duk_heap_strcache_offset_char2byte(thr, h_input, match_start_coff); + duk_pop(thr); + + if (match_start_coff == DUK_HSTRING_GET_CHARLEN(h_input)) { + /* don't allow an empty match at the end of the string */ + duk_pop(thr); + break; + } + + duk_get_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + DUK_ASSERT(duk_is_number(thr, -1)); + match_end_coff = duk_get_uint(thr, -1); + match_end_boff = (duk_uint32_t) duk_heap_strcache_offset_char2byte(thr, h_input, match_end_coff); + duk_pop(thr); + + /* empty match -> bump and continue */ + if (prev_match_end_boff == match_end_boff) { + duk_push_uint(thr, (duk_uint_t) (match_end_coff + 1)); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + duk_pop(thr); + continue; + } + } else { +#else /* DUK_USE_REGEXP_SUPPORT */ + { /* unconditionally */ +#endif /* DUK_USE_REGEXP_SUPPORT */ + const duk_uint8_t *p_start, *p_end, *p; /* input string scan */ + const duk_uint8_t *q_start; /* match string */ + duk_size_t q_blen, q_clen; + + p_start = DUK_HSTRING_GET_DATA(h_input); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h_input); + p = p_start + prev_match_end_boff; + + h_sep = duk_known_hstring(thr, 0); /* symbol already rejected above */ + q_start = DUK_HSTRING_GET_DATA(h_sep); + q_blen = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h_sep); + q_clen = (duk_size_t) DUK_HSTRING_GET_CHARLEN(h_sep); + + p_end -= q_blen; /* ensure full memcmp() fits in while */ + + match_start_coff = prev_match_end_coff; + + if (q_blen == 0) { + /* Handle empty separator case: it will always match, and always + * triggers the check in step 13.c.iii initially. Note that we + * must skip to either end of string or start of first codepoint, + * skipping over any continuation bytes! + * + * Don't allow an empty string to match at the end of the input. + */ + + matched = 1; /* empty separator can always match */ + + match_start_coff++; + p++; + while (p < p_end) { + if ((p[0] & 0xc0) != 0x80) { + goto found; + } + p++; + } + goto not_found; + } + + DUK_ASSERT(q_blen > 0 && q_clen > 0); + while (p <= p_end) { + DUK_ASSERT(p + q_blen <= DUK_HSTRING_GET_DATA(h_input) + DUK_HSTRING_GET_BYTELEN(h_input)); + DUK_ASSERT(q_blen > 0); /* no issues with empty memcmp() */ + if (duk_memcmp((const void *) p, (const void *) q_start, (size_t) q_blen) == 0) { + /* never an empty match, so step 13.c.iii can't be triggered */ + goto found; + } + + /* track utf-8 non-continuation bytes */ + if ((p[0] & 0xc0) != 0x80) { + match_start_coff++; + } + p++; + } + + not_found: + /* not found */ + break; + + found: + matched = 1; + match_start_boff = (duk_uint32_t) (p - p_start); + match_end_coff = (duk_uint32_t) (match_start_coff + q_clen); /* constrained by string length */ + match_end_boff = (duk_uint32_t) (match_start_boff + q_blen); /* ditto */ + + /* empty match (may happen with empty separator) -> bump and continue */ + if (prev_match_end_boff == match_end_boff) { + prev_match_end_boff++; + prev_match_end_coff++; + continue; + } + } /* if (is_regexp) */ + + /* stack[0] = separator (string or regexp) + * stack[1] = limit + * stack[2] = input string + * stack[3] = result array + * stack[4] = regexp res_obj (if is_regexp) + */ + + DUK_DDD(DUK_DDDPRINT("split; match_start b=%ld,c=%ld, match_end b=%ld,c=%ld, prev_end b=%ld,c=%ld", + (long) match_start_boff, (long) match_start_coff, + (long) match_end_boff, (long) match_end_coff, + (long) prev_match_end_boff, (long) prev_match_end_coff)); + + duk_push_lstring(thr, + (const char *) (DUK_HSTRING_GET_DATA(h_input) + prev_match_end_boff), + (duk_size_t) (match_start_boff - prev_match_end_boff)); + duk_put_prop_index(thr, 3, arr_idx); + arr_idx++; + if (arr_idx >= limit) { + goto hit_limit; + } + +#if defined(DUK_USE_REGEXP_SUPPORT) + if (is_regexp) { + duk_size_t i, len; + + len = duk_get_length(thr, 4); + for (i = 1; i < len; i++) { + DUK_ASSERT(i <= DUK_UARRIDX_MAX); /* cannot have >4G captures */ + duk_get_prop_index(thr, 4, (duk_uarridx_t) i); + duk_put_prop_index(thr, 3, arr_idx); + arr_idx++; + if (arr_idx >= limit) { + goto hit_limit; + } + } + + duk_pop(thr); + /* lastIndex already set up for next match */ + } else { +#else /* DUK_USE_REGEXP_SUPPORT */ + { /* unconditionally */ +#endif /* DUK_USE_REGEXP_SUPPORT */ + /* no action */ + } + + prev_match_end_boff = match_end_boff; + prev_match_end_coff = match_end_coff; + continue; + } /* for */ + + /* Combined step 11 (empty string special case) and 14-15. */ + + DUK_DDD(DUK_DDDPRINT("split trailer; prev_end b=%ld,c=%ld", + (long) prev_match_end_boff, (long) prev_match_end_coff)); + + if (DUK_HSTRING_GET_BYTELEN(h_input) > 0 || !matched) { + /* Add trailer if: + * a) non-empty input + * b) empty input and no (zero size) match found (step 11) + */ + + duk_push_lstring(thr, + (const char *) DUK_HSTRING_GET_DATA(h_input) + prev_match_end_boff, + (duk_size_t) (DUK_HSTRING_GET_BYTELEN(h_input) - prev_match_end_boff)); + duk_put_prop_index(thr, 3, arr_idx); + /* No arr_idx update or limit check */ + } + + return 1; + + hit_limit: +#if defined(DUK_USE_REGEXP_SUPPORT) + if (is_regexp) { + duk_pop(thr); + } +#endif + + return 1; +} + +/* + * Various + */ + +#if defined(DUK_USE_REGEXP_SUPPORT) +DUK_LOCAL void duk__to_regexp_helper(duk_hthread *thr, duk_idx_t idx, duk_bool_t force_new) { + duk_hobject *h; + + /* Shared helper for match() steps 3-4, search() steps 3-4. */ + + DUK_ASSERT(idx >= 0); + + if (force_new) { + goto do_new; + } + + h = duk_get_hobject_with_class(thr, idx, DUK_HOBJECT_CLASS_REGEXP); + if (!h) { + goto do_new; + } + return; + + do_new: + duk_push_hobject_bidx(thr, DUK_BIDX_REGEXP_CONSTRUCTOR); + duk_dup(thr, idx); + duk_new(thr, 1); /* [ ... RegExp val ] -> [ ... res ] */ + duk_replace(thr, idx); +} +#endif /* DUK_USE_REGEXP_SUPPORT */ + +#if defined(DUK_USE_REGEXP_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_search(duk_hthread *thr) { + /* Easiest way to implement the search required by the specification + * is to do a RegExp test() with lastIndex forced to zero. To avoid + * side effects on the argument, "clone" the RegExp if a RegExp was + * given as input. + * + * The global flag of the RegExp should be ignored; setting lastIndex + * to zero (which happens when "cloning" the RegExp) should have an + * equivalent effect. + */ + + DUK_ASSERT_TOP(thr, 1); + (void) duk_push_this_coercible_to_string(thr); /* at index 1 */ + duk__to_regexp_helper(thr, 0 /*index*/, 1 /*force_new*/); + + /* stack[0] = regexp + * stack[1] = string + */ + + /* Avoid using RegExp.prototype methods, as they're writable and + * configurable and may have been changed. + */ + + duk_dup_0(thr); + duk_dup_1(thr); /* [ ... re_obj input ] */ + duk_regexp_match(thr); /* -> [ ... res_obj ] */ + + if (!duk_is_object(thr, -1)) { + duk_push_int(thr, -1); + return 1; + } + + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_INDEX); + DUK_ASSERT(duk_is_number(thr, -1)); + return 1; +} +#endif /* DUK_USE_REGEXP_SUPPORT */ + +#if defined(DUK_USE_REGEXP_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_match(duk_hthread *thr) { + duk_bool_t global; + duk_int_t prev_last_index; + duk_int_t this_index; + duk_int_t arr_idx; + + DUK_ASSERT_TOP(thr, 1); + (void) duk_push_this_coercible_to_string(thr); + duk__to_regexp_helper(thr, 0 /*index*/, 0 /*force_new*/); + global = duk_get_prop_stridx_boolean(thr, 0, DUK_STRIDX_GLOBAL, NULL); + DUK_ASSERT_TOP(thr, 2); + + /* stack[0] = regexp + * stack[1] = string + */ + + if (!global) { + duk_regexp_match(thr); /* -> [ res_obj ] */ + return 1; /* return 'res_obj' */ + } + + /* Global case is more complex. */ + + /* [ regexp string ] */ + + duk_push_int(thr, 0); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + duk_push_array(thr); + + /* [ regexp string res_arr ] */ + + prev_last_index = 0; + arr_idx = 0; + + for (;;) { + DUK_ASSERT_TOP(thr, 3); + + duk_dup_0(thr); + duk_dup_1(thr); + duk_regexp_match(thr); /* -> [ ... regexp string ] -> [ ... res_obj ] */ + + if (!duk_is_object(thr, -1)) { + duk_pop(thr); + break; + } + + duk_get_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + DUK_ASSERT(duk_is_number(thr, -1)); + this_index = duk_get_int(thr, -1); + duk_pop(thr); + + if (this_index == prev_last_index) { + this_index++; + duk_push_int(thr, this_index); + duk_put_prop_stridx_short(thr, 0, DUK_STRIDX_LAST_INDEX); + } + prev_last_index = this_index; + + duk_get_prop_index(thr, -1, 0); /* match string */ + duk_put_prop_index(thr, 2, (duk_uarridx_t) arr_idx); + arr_idx++; + duk_pop(thr); /* res_obj */ + } + + if (arr_idx == 0) { + duk_push_null(thr); + } + + return 1; /* return 'res_arr' or 'null' */ +} +#endif /* DUK_USE_REGEXP_SUPPORT */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_concat(duk_hthread *thr) { + /* duk_concat() coerces arguments with ToString() in correct order */ + (void) duk_push_this_coercible_to_string(thr); + duk_insert(thr, 0); /* this is relatively expensive */ + duk_concat(thr, duk_get_top(thr)); + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_trim(duk_hthread *thr) { + DUK_ASSERT_TOP(thr, 0); + (void) duk_push_this_coercible_to_string(thr); + duk_trim(thr, 0); + DUK_ASSERT_TOP(thr, 1); + return 1; +} + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_repeat(duk_hthread *thr) { + duk_hstring *h_input; + duk_size_t input_blen; + duk_size_t result_len; + duk_int_t count_signed; + duk_uint_t count; + const duk_uint8_t *src; + duk_uint8_t *buf; + duk_uint8_t *p; + duk_double_t d; +#if !defined(DUK_USE_PREFER_SIZE) + duk_size_t copy_size; + duk_uint8_t *p_end; +#endif + + DUK_ASSERT_TOP(thr, 1); + h_input = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h_input != NULL); + input_blen = DUK_HSTRING_GET_BYTELEN(h_input); + + /* Count is ToNumber() coerced; +Infinity must be always rejected + * (even if input string is zero length), as well as negative values + * and -Infinity. -Infinity doesn't require an explicit check + * because duk_get_int() clamps it to DUK_INT_MIN which gets rejected + * as a negative value (regardless of input string length). + */ + d = duk_to_number(thr, 0); + if (duk_double_is_posinf(d)) { + goto fail_range; + } + count_signed = duk_get_int(thr, 0); + if (count_signed < 0) { + goto fail_range; + } + count = (duk_uint_t) count_signed; + + /* Overflow check for result length. */ + result_len = count * input_blen; + if (count != 0 && result_len / count != input_blen) { + goto fail_range; + } + + /* Temporary fixed buffer, later converted to string. */ + buf = (duk_uint8_t *) duk_push_fixed_buffer_nozero(thr, result_len); + DUK_ASSERT(buf != NULL); + src = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_input); + DUK_ASSERT(src != NULL); + +#if defined(DUK_USE_PREFER_SIZE) + p = buf; + while (count-- > 0) { + duk_memcpy((void *) p, (const void *) src, input_blen); /* copy size may be zero, but pointers are valid */ + p += input_blen; + } +#else /* DUK_USE_PREFER_SIZE */ + /* Take advantage of already copied pieces to speed up the process + * especially for small repeated strings. + */ + p = buf; + p_end = p + result_len; + copy_size = input_blen; + for (;;) { + duk_size_t remain = (duk_size_t) (p_end - p); + DUK_DDD(DUK_DDDPRINT("remain=%ld, copy_size=%ld, input_blen=%ld, result_len=%ld", + (long) remain, (long) copy_size, (long) input_blen, + (long) result_len)); + if (remain <= copy_size) { + /* If result_len is zero, this case is taken and does + * a zero size copy (with valid pointers). + */ + duk_memcpy((void *) p, (const void *) src, remain); + break; + } else { + duk_memcpy((void *) p, (const void *) src, copy_size); + p += copy_size; + } + + src = (const duk_uint8_t *) buf; /* Use buf as source for larger copies. */ + copy_size = (duk_size_t) (p - buf); + } +#endif /* DUK_USE_PREFER_SIZE */ + + /* XXX: It would be useful to be able to create a duk_hstring with + * a certain byte size whose data area wasn't initialized and which + * wasn't in the string table yet. This would allow a string to be + * constructed directly without a buffer temporary and when it was + * finished, it could be injected into the string table. Currently + * this isn't possible because duk_hstrings are only tracked by the + * intern table (they are not in heap_allocated). + */ + + duk_buffer_to_string(thr, -1); /* Safe if input is safe. */ + return 1; + + fail_range: + DUK_DCERROR_RANGE_INVALID_ARGS(thr); +} +#endif /* DUK_USE_ES6 */ + +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_locale_compare(duk_hthread *thr) { + duk_hstring *h1; + duk_hstring *h2; + duk_size_t h1_len, h2_len, prefix_len; + duk_small_int_t ret = 0; + duk_small_int_t rc; + + /* The current implementation of localeCompare() is simply a codepoint + * by codepoint comparison, implemented with a simple string compare + * because UTF-8 should preserve codepoint ordering (assuming valid + * shortest UTF-8 encoding). + * + * The specification requires that the return value must be related + * to the sort order: e.g. negative means that 'this' comes before + * 'that' in sort order. We assume an ascending sort order. + */ + + /* XXX: could share code with duk_js_ops.c, duk_js_compare_helper */ + + h1 = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h1 != NULL); + + h2 = duk_to_hstring(thr, 0); + DUK_ASSERT(h2 != NULL); + + h1_len = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h1); + h2_len = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h2); + prefix_len = (h1_len <= h2_len ? h1_len : h2_len); + + rc = (duk_small_int_t) duk_memcmp((const void *) DUK_HSTRING_GET_DATA(h1), + (const void *) DUK_HSTRING_GET_DATA(h2), + (size_t) prefix_len); + + if (rc < 0) { + ret = -1; + goto done; + } else if (rc > 0) { + ret = 1; + goto done; + } + + /* prefix matches, lengths matter now */ + if (h1_len > h2_len) { + ret = 1; + goto done; + } else if (h1_len == h2_len) { + DUK_ASSERT(ret == 0); + goto done; + } + ret = -1; + goto done; + + done: + duk_push_int(thr, (duk_int_t) ret); + return 1; +} + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_startswith_endswith(duk_hthread *thr) { + duk_int_t magic; + duk_hstring *h; + duk_hstring *h_search; + duk_size_t blen_search; + const duk_uint8_t *p_cmp_start; + duk_bool_t result; + + h = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h != NULL); + + h_search = duk__str_tostring_notregexp(thr, 0); + DUK_ASSERT(h_search != NULL); + + magic = duk_get_current_magic(thr); + + p_cmp_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h); + blen_search = DUK_HSTRING_GET_BYTELEN(h_search); + + if (duk_is_undefined(thr, 1)) { + if (magic) { + p_cmp_start = p_cmp_start + DUK_HSTRING_GET_BYTELEN(h) - blen_search; + } else { + /* p_cmp_start already OK */ + } + } else { + duk_int_t len; + duk_int_t pos; + + DUK_ASSERT(DUK_HSTRING_MAX_BYTELEN <= DUK_INT_MAX); + len = (duk_int_t) DUK_HSTRING_GET_CHARLEN(h); + pos = duk_to_int_clamped(thr, 1, 0, len); + DUK_ASSERT(pos >= 0 && pos <= len); + + if (magic) { + p_cmp_start -= blen_search; /* Conceptually subtracted last, but do already here. */ + } + DUK_ASSERT(pos >= 0 && pos <= len); + + p_cmp_start += duk_heap_strcache_offset_char2byte(thr, h, (duk_uint_fast32_t) pos); + } + + /* The main comparison can be done using a memcmp() rather than + * doing codepoint comparisons: for CESU-8 strings there is a + * canonical representation for every codepoint. But we do need + * to deal with the char/byte offset translation to find the + * comparison range. + */ + + result = 0; + if (p_cmp_start >= DUK_HSTRING_GET_DATA(h) && + (duk_size_t) (p_cmp_start - (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h)) + blen_search <= DUK_HSTRING_GET_BYTELEN(h)) { + if (duk_memcmp((const void *) p_cmp_start, + (const void *) DUK_HSTRING_GET_DATA(h_search), + (size_t) blen_search) == 0) { + result = 1; + } + } + + duk_push_boolean(thr, result); + return 1; +} +#endif /* DUK_USE_ES6 */ + +#if defined(DUK_USE_ES6) +DUK_INTERNAL duk_ret_t duk_bi_string_prototype_includes(duk_hthread *thr) { + duk_hstring *h; + duk_hstring *h_search; + duk_int_t len; + duk_int_t pos; + + h = duk_push_this_coercible_to_string(thr); + DUK_ASSERT(h != NULL); + + h_search = duk__str_tostring_notregexp(thr, 0); + DUK_ASSERT(h_search != NULL); + + len = (duk_int_t) DUK_HSTRING_GET_CHARLEN(h); + pos = duk_to_int_clamped(thr, 1, 0, len); + DUK_ASSERT(pos >= 0 && pos <= len); + + pos = duk__str_search_shared(thr, h, h_search, pos, 0 /*backwards*/); + duk_push_boolean(thr, pos >= 0); + return 1; +} +#endif /* DUK_USE_ES6 */ +#endif /* DUK_USE_STRING_BUILTIN */ +#line 1 "duk_bi_symbol.c" +/* + * Symbol built-in + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_SYMBOL_BUILTIN) + +/* + * Constructor + */ + +DUK_INTERNAL duk_ret_t duk_bi_symbol_constructor_shared(duk_hthread *thr) { + const duk_uint8_t *desc; + duk_size_t len; + duk_uint8_t *buf; + duk_uint8_t *p; + duk_int_t magic; + + magic = duk_get_current_magic(thr); + if (duk_is_undefined(thr, 0) && (magic == 0)) { + /* Symbol() accepts undefined and empty string, but they are + * treated differently. + */ + desc = NULL; + len = 0; + } else { + /* Symbol.for() coerces undefined to 'undefined' */ + desc = (const duk_uint8_t *) duk_to_lstring(thr, 0, &len); + } + + /* Maximum symbol data length: + * +1 initial byte (0x80 or 0x81) + * +len description + * +1 0xff after description, before unique suffix + * +17 autogenerated unique suffix: 'ffffffff-ffffffff' is longest + * +1 0xff after unique suffix for symbols with undefined description + */ + buf = (duk_uint8_t *) duk_push_fixed_buffer(thr, 1 + len + 1 + 17 + 1); + DUK_ASSERT(buf != NULL); + p = buf + 1; + DUK_ASSERT(desc != NULL || len == 0); /* may be NULL if len is 0 */ + duk_memcpy_unsafe((void *) p, (const void *) desc, len); + p += len; + if (magic == 0) { + /* Symbol(): create unique symbol. Use two 32-bit values + * to avoid dependency on 64-bit types and 64-bit integer + * formatting (at least for now). + */ + if (++thr->heap->sym_counter[0] == 0) { + thr->heap->sym_counter[1]++; + } + p += DUK_SPRINTF((char *) p, "\xFF" "%lx-%lx", + (unsigned long) thr->heap->sym_counter[1], + (unsigned long) thr->heap->sym_counter[0]); + if (desc == NULL) { + /* Special case for 'undefined' description, trailing + * 0xff distinguishes from empty string description, + * but needs minimal special case handling elsewhere. + */ + *p++ = 0xff; + } + buf[0] = 0x81; + } else { + /* Symbol.for(): create a global symbol */ + buf[0] = 0x80; + } + + duk_push_lstring(thr, (const char *) buf, (duk_size_t) (p - buf)); + DUK_DDD(DUK_DDDPRINT("created symbol: %!T", duk_get_tval(thr, -1))); + return 1; +} + +DUK_LOCAL duk_hstring *duk__auto_unbox_symbol(duk_hthread *thr, duk_tval *tv_arg) { + duk_tval *tv; + duk_hobject *h_obj; + duk_hstring *h_str; + + DUK_ASSERT(tv_arg != NULL); + + /* XXX: add internal helper: duk_auto_unbox_tval(thr, tv, mask); */ + /* XXX: add internal helper: duk_auto_unbox(thr, tv, idx); */ + + tv = tv_arg; + if (DUK_TVAL_IS_OBJECT(tv)) { + h_obj = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h_obj != NULL); + if (DUK_HOBJECT_GET_CLASS_NUMBER(h_obj) == DUK_HOBJECT_CLASS_SYMBOL) { + tv = duk_hobject_get_internal_value_tval_ptr(thr->heap, h_obj); + if (tv == NULL) { + return NULL; + } + } else { + return NULL; + } + } + + if (!DUK_TVAL_IS_STRING(tv)) { + return NULL; + } + h_str = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h_str != NULL); + + /* Here symbol is more expected than not. */ + if (DUK_UNLIKELY(!DUK_HSTRING_HAS_SYMBOL(h_str))) { + return NULL; + } + + return h_str; +} + +DUK_INTERNAL duk_ret_t duk_bi_symbol_tostring_shared(duk_hthread *thr) { + duk_hstring *h_str; + + h_str = duk__auto_unbox_symbol(thr, DUK_HTHREAD_THIS_PTR(thr)); + if (h_str == NULL) { + return DUK_RET_TYPE_ERROR; + } + + if (duk_get_current_magic(thr) == 0) { + /* .toString() */ + duk_push_symbol_descriptive_string(thr, h_str); + } else { + /* .valueOf() */ + duk_push_hstring(thr, h_str); + } + return 1; +} + +DUK_INTERNAL duk_ret_t duk_bi_symbol_key_for(duk_hthread *thr) { + duk_hstring *h; + const duk_uint8_t *p; + + /* Argument must be a symbol but not checked here. The initial byte + * check will catch non-symbol strings. + */ + h = duk_require_hstring(thr, 0); + DUK_ASSERT(h != NULL); + + p = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h); + DUK_ASSERT(p != NULL); + + /* Even for zero length strings there's at least one NUL byte so + * we can safely check the initial byte. + */ + if (p[0] == 0x80) { + /* Global symbol, return its key (bytes just after the initial byte). */ + duk_push_lstring(thr, (const char *) (p + 1), (duk_size_t) (DUK_HSTRING_GET_BYTELEN(h) - 1)); + return 1; + } else if (p[0] == 0x81 || p[0] == 0x82 || p[0] == 0xff) { + /* Local symbol or hidden symbol, return undefined. */ + return 0; + } + + /* Covers normal strings and unknown initial bytes. */ + return DUK_RET_TYPE_ERROR; +} + +DUK_INTERNAL duk_ret_t duk_bi_symbol_toprimitive(duk_hthread *thr) { + duk_hstring *h_str; + + h_str = duk__auto_unbox_symbol(thr, DUK_HTHREAD_THIS_PTR(thr)); + if (h_str == NULL) { + return DUK_RET_TYPE_ERROR; + } + duk_push_hstring(thr, h_str); + return 1; +} + +#endif /* DUK_USE_SYMBOL_BUILTIN */ +#line 1 "duk_bi_thread.c" +/* + * Thread builtins + */ + +/* #include duk_internal.h -> already included */ + +/* + * Constructor + */ + +#if defined(DUK_USE_COROUTINE_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_thread_constructor(duk_hthread *thr) { + duk_hthread *new_thr; + duk_hobject *func; + + /* Check that the argument is callable; this is not 100% because we + * don't allow native functions to be a thread's initial function. + * Resume will reject such functions in any case. + */ + /* XXX: need a duk_require_func_promote_lfunc() */ + func = duk_require_hobject_promote_lfunc(thr, 0); + DUK_ASSERT(func != NULL); + duk_require_callable(thr, 0); + + duk_push_thread(thr); + new_thr = (duk_hthread *) duk_known_hobject(thr, -1); + new_thr->state = DUK_HTHREAD_STATE_INACTIVE; + + /* push initial function call to new thread stack; this is + * picked up by resume(). + */ + duk_push_hobject(new_thr, func); + + return 1; /* return thread */ +} +#endif + +/* + * Resume a thread. + * + * The thread must be in resumable state, either (a) new thread which hasn't + * yet started, or (b) a thread which has previously yielded. This method + * must be called from an ECMAScript function. + * + * Args: + * - thread + * - value + * - isError (defaults to false) + * + * Note: yield and resume handling is currently asymmetric. + */ + +#if defined(DUK_USE_COROUTINE_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_thread_resume(duk_hthread *ctx) { + duk_hthread *thr = (duk_hthread *) ctx; + duk_hthread *thr_resume; + duk_hobject *caller_func; + duk_small_uint_t is_error; + + DUK_DDD(DUK_DDDPRINT("Duktape.Thread.resume(): thread=%!T, value=%!T, is_error=%!T", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1), + (duk_tval *) duk_get_tval(thr, 2))); + + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_RUNNING); + DUK_ASSERT(thr->heap->curr_thread == thr); + + thr_resume = duk_require_hthread(thr, 0); + DUK_ASSERT(duk_get_top(thr) == 3); + is_error = (duk_small_uint_t) duk_to_boolean_top_pop(thr); + DUK_ASSERT(duk_get_top(thr) == 2); + + /* [ thread value ] */ + + /* + * Thread state and calling context checks + */ + + if (thr->callstack_top < 2) { + DUK_DD(DUK_DDPRINT("resume state invalid: callstack should contain at least 2 entries (caller and Duktape.Thread.resume)")); + goto state_error; + } + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL); /* us */ + DUK_ASSERT(DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr))); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr->parent) != NULL); /* caller */ + + caller_func = DUK_ACT_GET_FUNC(thr->callstack_curr->parent); + if (!DUK_HOBJECT_IS_COMPFUNC(caller_func)) { + DUK_DD(DUK_DDPRINT("resume state invalid: caller must be ECMAScript code")); + goto state_error; + } + + /* Note: there is no requirement that: 'thr->callstack_preventcount == 1' + * like for yield. + */ + + if (thr_resume->state != DUK_HTHREAD_STATE_INACTIVE && + thr_resume->state != DUK_HTHREAD_STATE_YIELDED) { + DUK_DD(DUK_DDPRINT("resume state invalid: target thread must be INACTIVE or YIELDED")); + goto state_error; + } + + DUK_ASSERT(thr_resume->state == DUK_HTHREAD_STATE_INACTIVE || + thr_resume->state == DUK_HTHREAD_STATE_YIELDED); + + /* Further state-dependent pre-checks */ + + if (thr_resume->state == DUK_HTHREAD_STATE_YIELDED) { + /* no pre-checks now, assume a previous yield() has left things in + * tip-top shape (longjmp handler will assert for these). + */ + } else { + duk_hobject *h_fun; + + DUK_ASSERT(thr_resume->state == DUK_HTHREAD_STATE_INACTIVE); + + /* The initial function must be an ECMAScript function (but + * can be bound). We must make sure of that before we longjmp + * because an error in the RESUME handler call processing will + * not be handled very cleanly. + */ + if ((thr_resume->callstack_top != 0) || + (thr_resume->valstack_top - thr_resume->valstack != 1)) { + goto state_error; + } + + duk_push_tval(thr, DUK_GET_TVAL_NEGIDX(thr_resume, -1)); + duk_resolve_nonbound_function(thr); + h_fun = duk_require_hobject(thr, -1); /* reject lightfuncs on purpose */ + if (!DUK_HOBJECT_IS_CALLABLE(h_fun) || !DUK_HOBJECT_IS_COMPFUNC(h_fun)) { + goto state_error; + } + duk_pop(thr); + } + +#if 0 + /* This check would prevent a heap destruction time finalizer from + * launching a coroutine, which would ensure that during finalization + * 'thr' would always equal heap_thread. Normal runtime finalizers + * run with ms_running == 0, i.e. outside mark-and-sweep. See GH-2030. + */ + if (thr->heap->ms_running) { + DUK_D(DUK_DPRINT("refuse Duktape.Thread.resume() when ms_running != 0")); + goto state_error; + } +#endif + + /* + * The error object has been augmented with a traceback and other + * info from its creation point -- usually another thread. The + * error handler is called here right before throwing, but it also + * runs in the resumer's thread. It might be nice to get a traceback + * from the resumee but this is not the case now. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_THROW) + if (is_error) { + DUK_ASSERT_TOP(thr, 2); /* value (error) is at stack top */ + duk_err_augment_error_throw(thr); /* in resumer's context */ + } +#endif + +#if defined(DUK_USE_DEBUG) + if (is_error) { + DUK_DDD(DUK_DDDPRINT("RESUME ERROR: thread=%!T, value=%!T", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1))); + } else if (thr_resume->state == DUK_HTHREAD_STATE_YIELDED) { + DUK_DDD(DUK_DDDPRINT("RESUME NORMAL: thread=%!T, value=%!T", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1))); + } else { + DUK_DDD(DUK_DDDPRINT("RESUME INITIAL: thread=%!T, value=%!T", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1))); + } +#endif + + thr->heap->lj.type = DUK_LJ_TYPE_RESUME; + + /* lj value2: thread */ + DUK_ASSERT(thr->valstack_bottom < thr->valstack_top); + DUK_TVAL_SET_TVAL_UPDREF(thr, &thr->heap->lj.value2, &thr->valstack_bottom[0]); /* side effects */ + + /* lj value1: value */ + DUK_ASSERT(thr->valstack_bottom + 1 < thr->valstack_top); + DUK_TVAL_SET_TVAL_UPDREF(thr, &thr->heap->lj.value1, &thr->valstack_bottom[1]); /* side effects */ + DUK_TVAL_CHKFAST_INPLACE_SLOW(&thr->heap->lj.value1); + + thr->heap->lj.iserror = is_error; + + DUK_ASSERT(thr->heap->lj.jmpbuf_ptr != NULL); /* call is from executor, so we know we have a jmpbuf */ + duk_err_longjmp(thr); /* execution resumes in bytecode executor */ + DUK_UNREACHABLE(); + /* Never here, fall through to error (from compiler point of view). */ + + state_error: + DUK_DCERROR_TYPE_INVALID_STATE(thr); +} +#endif + +/* + * Yield the current thread. + * + * The thread must be in yieldable state: it must have a resumer, and there + * must not be any yield-preventing calls (native calls and constructor calls, + * currently) in the thread's call stack (otherwise a resume would not be + * possible later). This method must be called from an ECMAScript function. + * + * Args: + * - value + * - isError (defaults to false) + * + * Note: yield and resume handling is currently asymmetric. + */ + +#if defined(DUK_USE_COROUTINE_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_thread_yield(duk_hthread *thr) { + duk_hobject *caller_func; + duk_small_uint_t is_error; + + DUK_DDD(DUK_DDDPRINT("Duktape.Thread.yield(): value=%!T, is_error=%!T", + (duk_tval *) duk_get_tval(thr, 0), + (duk_tval *) duk_get_tval(thr, 1))); + + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_RUNNING); + DUK_ASSERT(thr->heap->curr_thread == thr); + + DUK_ASSERT(duk_get_top(thr) == 2); + is_error = (duk_small_uint_t) duk_to_boolean_top_pop(thr); + DUK_ASSERT(duk_get_top(thr) == 1); + + /* [ value ] */ + + /* + * Thread state and calling context checks + */ + + if (!thr->resumer) { + DUK_DD(DUK_DDPRINT("yield state invalid: current thread must have a resumer")); + goto state_error; + } + DUK_ASSERT(thr->resumer->state == DUK_HTHREAD_STATE_RESUMED); + + if (thr->callstack_top < 2) { + DUK_DD(DUK_DDPRINT("yield state invalid: callstack should contain at least 2 entries (caller and Duktape.Thread.yield)")); + goto state_error; + } + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL); /* us */ + DUK_ASSERT(DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr))); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr->parent) != NULL); /* caller */ + + caller_func = DUK_ACT_GET_FUNC(thr->callstack_curr->parent); + if (!DUK_HOBJECT_IS_COMPFUNC(caller_func)) { + DUK_DD(DUK_DDPRINT("yield state invalid: caller must be ECMAScript code")); + goto state_error; + } + + DUK_ASSERT(thr->callstack_preventcount >= 1); /* should never be zero, because we (Duktape.Thread.yield) are on the stack */ + if (thr->callstack_preventcount != 1) { + /* Note: the only yield-preventing call is Duktape.Thread.yield(), hence check for 1, not 0 */ + DUK_DD(DUK_DDPRINT("yield state invalid: there must be no yield-preventing calls in current thread callstack (preventcount is %ld)", + (long) thr->callstack_preventcount)); + goto state_error; + } + + /* + * The error object has been augmented with a traceback and other + * info from its creation point -- usually the current thread. + * The error handler, however, is called right before throwing + * and runs in the yielder's thread. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_THROW) + if (is_error) { + DUK_ASSERT_TOP(thr, 1); /* value (error) is at stack top */ + duk_err_augment_error_throw(thr); /* in yielder's context */ + } +#endif + +#if defined(DUK_USE_DEBUG) + if (is_error) { + DUK_DDD(DUK_DDDPRINT("YIELD ERROR: value=%!T", + (duk_tval *) duk_get_tval(thr, 0))); + } else { + DUK_DDD(DUK_DDDPRINT("YIELD NORMAL: value=%!T", + (duk_tval *) duk_get_tval(thr, 0))); + } +#endif + + /* + * Process yield + * + * After longjmp(), processing continues in bytecode executor longjmp + * handler, which will e.g. update thr->resumer to NULL. + */ + + thr->heap->lj.type = DUK_LJ_TYPE_YIELD; + + /* lj value1: value */ + DUK_ASSERT(thr->valstack_bottom < thr->valstack_top); + DUK_TVAL_SET_TVAL_UPDREF(thr, &thr->heap->lj.value1, &thr->valstack_bottom[0]); /* side effects */ + DUK_TVAL_CHKFAST_INPLACE_SLOW(&thr->heap->lj.value1); + + thr->heap->lj.iserror = is_error; + + DUK_ASSERT(thr->heap->lj.jmpbuf_ptr != NULL); /* call is from executor, so we know we have a jmpbuf */ + duk_err_longjmp(thr); /* execution resumes in bytecode executor */ + DUK_UNREACHABLE(); + /* Never here, fall through to error (from compiler point of view). */ + + state_error: + DUK_DCERROR_TYPE_INVALID_STATE(thr); +} +#endif + +#if defined(DUK_USE_COROUTINE_SUPPORT) +DUK_INTERNAL duk_ret_t duk_bi_thread_current(duk_hthread *thr) { + duk_push_current_thread(thr); + return 1; +} +#endif +#line 1 "duk_bi_thrower.c" +/* + * Type error thrower, E5 Section 13.2.3. + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL duk_ret_t duk_bi_type_error_thrower(duk_hthread *thr) { + DUK_DCERROR_TYPE_INVALID_ARGS(thr); +} +#line 1 "duk_debug_fixedbuffer.c" +/* + * Fixed buffer helper useful for debugging, requires no allocation + * which is critical for debugging. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_DEBUG) + +DUK_INTERNAL void duk_fb_put_bytes(duk_fixedbuffer *fb, const duk_uint8_t *buffer, duk_size_t length) { + duk_size_t avail; + duk_size_t copylen; + + avail = (fb->offset >= fb->length ? (duk_size_t) 0 : (duk_size_t) (fb->length - fb->offset)); + if (length > avail) { + copylen = avail; + fb->truncated = 1; + } else { + copylen = length; + } + duk_memcpy_unsafe(fb->buffer + fb->offset, buffer, copylen); + fb->offset += copylen; +} + +DUK_INTERNAL void duk_fb_put_byte(duk_fixedbuffer *fb, duk_uint8_t x) { + duk_fb_put_bytes(fb, (const duk_uint8_t *) &x, 1); +} + +DUK_INTERNAL void duk_fb_put_cstring(duk_fixedbuffer *fb, const char *x) { + duk_fb_put_bytes(fb, (const duk_uint8_t *) x, (duk_size_t) DUK_STRLEN(x)); +} + +DUK_INTERNAL void duk_fb_sprintf(duk_fixedbuffer *fb, const char *fmt, ...) { + duk_size_t avail; + va_list ap; + + va_start(ap, fmt); + avail = (fb->offset >= fb->length ? (duk_size_t) 0 : (duk_size_t) (fb->length - fb->offset)); + if (avail > 0) { + duk_int_t res = (duk_int_t) DUK_VSNPRINTF((char *) (fb->buffer + fb->offset), avail, fmt, ap); + if (res < 0) { + /* error */ + } else if ((duk_size_t) res >= avail) { + /* (maybe) truncated */ + fb->offset += avail; + if ((duk_size_t) res > avail) { + /* actual chars dropped (not just NUL term) */ + fb->truncated = 1; + } + } else { + /* normal */ + fb->offset += (duk_size_t) res; + } + } + va_end(ap); +} + +DUK_INTERNAL void duk_fb_put_funcptr(duk_fixedbuffer *fb, duk_uint8_t *fptr, duk_size_t fptr_size) { + char buf[64+1]; + duk_debug_format_funcptr(buf, sizeof(buf), fptr, fptr_size); + buf[sizeof(buf) - 1] = (char) 0; + duk_fb_put_cstring(fb, buf); +} + +DUK_INTERNAL duk_bool_t duk_fb_is_full(duk_fixedbuffer *fb) { + return (fb->offset >= fb->length); +} + +#endif /* DUK_USE_DEBUG */ +#line 1 "duk_debug_vsnprintf.c" +/* + * Custom formatter for debug printing, allowing Duktape specific data + * structures (such as tagged values and heap objects) to be printed with + * a nice format string. Because debug printing should not affect execution + * state, formatting here must be independent of execution (see implications + * below) and must not allocate memory. + * + * Custom format tags begin with a '%!' to safely distinguish them from + * standard format tags. The following conversions are supported: + * + * %!T tagged value (duk_tval *) + * %!O heap object (duk_heaphdr *) + * %!I decoded bytecode instruction + * %!X bytecode instruction opcode name (arg is long) + * %!C catcher (duk_catcher *) + * %!A activation (duk_activation *) + * + * Everything is serialized in a JSON-like manner. The default depth is one + * level, internal prototype is not followed, and internal properties are not + * serialized. The following modifiers change this behavior: + * + * @ print pointers + * # print binary representations (where applicable) + * d deep traversal of own properties (not prototype) + * p follow prototype chain (useless without 'd') + * i include internal properties (other than prototype) + * x hexdump buffers + * h heavy formatting + * + * For instance, the following serializes objects recursively, but does not + * follow the prototype chain nor print internal properties: "%!dO". + * + * Notes: + * + * * Standard snprintf return value semantics seem to vary. This + * implementation returns the number of bytes it actually wrote + * (excluding the null terminator). If retval == buffer size, + * output was truncated (except for corner cases). + * + * * Output format is intentionally different from ECMAScript + * formatting requirements, as formatting here serves debugging + * of internals. + * + * * Depth checking (and updating) is done in each type printer + * separately, to allow them to call each other freely. + * + * * Some pathological structures might take ages to print (e.g. + * self recursion with 100 properties pointing to the object + * itself). To guard against these, each printer also checks + * whether the output buffer is full; if so, early exit. + * + * * Reference loops are detected using a loop stack. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_DEBUG) + +/* #include stdio.h -> already included */ +/* #include stdarg.h -> already included */ +#include + +/* list of conversion specifiers that terminate a format tag; + * this is unfortunately guesswork. + */ +#define DUK__ALLOWED_STANDARD_SPECIFIERS "diouxXeEfFgGaAcsCSpnm" + +/* maximum length of standard format tag that we support */ +#define DUK__MAX_FORMAT_TAG_LENGTH 32 + +/* heapobj recursion depth when deep printing is selected */ +#define DUK__DEEP_DEPTH_LIMIT 8 + +/* maximum recursion depth for loop detection stacks */ +#define DUK__LOOP_STACK_DEPTH 256 + +/* must match bytecode defines now; build autogenerate? */ +DUK_LOCAL const char * const duk__bc_optab[256] = { + "LDREG", "STREG", "JUMP", "LDCONST", "LDINT", "LDINTX", "LDTHIS", "LDUNDEF", + "LDNULL", "LDTRUE", "LDFALSE", "GETVAR", "BNOT", "LNOT", "UNM", "UNP", + "EQ_RR", "EQ_CR", "EQ_RC", "EQ_CC", "NEQ_RR", "NEQ_CR", "NEQ_RC", "NEQ_CC", + "SEQ_RR", "SEQ_CR", "SEQ_RC", "SEQ_CC", "SNEQ_RR", "SNEQ_CR", "SNEQ_RC", "SNEQ_CC", + + "GT_RR", "GT_CR", "GT_RC", "GT_CC", "GE_RR", "GE_CR", "GE_RC", "GE_CC", + "LT_RR", "LT_CR", "LT_RC", "LT_CC", "LE_RR", "LE_CR", "LE_RC", "LE_CC", + "IFTRUE_R", "IFTRUE_C", "IFFALSE_R", "IFFALSE_C", "ADD_RR", "ADD_CR", "ADD_RC", "ADD_CC", + "SUB_RR", "SUB_CR", "SUB_RC", "SUB_CC", "MUL_RR", "MUL_CR", "MUL_RC", "MUL_CC", + + "DIV_RR", "DIV_CR", "DIV_RC", "DIV_CC", "MOD_RR", "MOD_CR", "MOD_RC", "MOD_CC", + "EXP_RR", "EXP_CR", "EXP_RC", "EXP_CC", "BAND_RR", "BAND_CR", "BAND_RC", "BAND_CC", + "BOR_RR", "BOR_CR", "BOR_RC", "BOR_CC", "BXOR_RR", "BXOR_CR", "BXOR_RC", "BXOR_CC", + "BASL_RR", "BASL_CR", "BASL_RC", "BASL_CC", "BLSR_RR", "BLSR_CR", "BLSR_RC", "BLSR_CC", + + "BASR_RR", "BASR_CR", "BASR_RC", "BASR_CC", "INSTOF_RR", "INSTOF_CR", "INSTOF_RC", "INSTOF_CC", + "IN_RR", "IN_CR", "IN_RC", "IN_CC", "GETPROP_RR", "GETPROP_CR", "GETPROP_RC", "GETPROP_CC", + "PUTPROP_RR", "PUTPROP_CR", "PUTPROP_RC", "PUTPROP_CC", "DELPROP_RR", "DELPROP_CR", "DELPROP_RC", "DELPROP_CC", + "PREINCR", "PREDECR", "POSTINCR", "POSTDECR", "PREINCV", "PREDECV", "POSTINCV", "POSTDECV", + + "PREINCP_RR", "PREINCP_CR", "PREINCP_RC", "PREINCP_CC", "PREDECP_RR", "PREDECP_CR", "PREDECP_RC", "PREDECP_CC", + "POSTINCP_RR", "POSTINCP_CR", "POSTINCP_RC", "POSTINCP_CC", "POSTDECP_RR", "POSTDECP_CR", "POSTDECP_RC", "POSTDECP_CC", + "DECLVAR_RR", "DECLVAR_CR", "DECLVAR_RC", "DECLVAR_CC", "REGEXP_RR", "REGEXP_RC", "REGEXP_CR", "REGEXP_CC", + "CLOSURE", "TYPEOF", "TYPEOFID", "PUTVAR", "DELVAR", "RETREG", "RETUNDEF", "RETCONST", + + "RETCONSTN", "LABEL", "ENDLABEL", "BREAK", "CONTINUE", "TRYCATCH", "ENDTRY", "ENDCATCH", + "ENDFIN", "THROW", "INVLHS", "CSREG", "CSVAR_RR", "CSVAR_CR", "CSVAR_RC", "CSVAR_CC", + "CALL0", "CALL1", "CALL2", "CALL3", "CALL4", "CALL5", "CALL6", "CALL7", + "CALL8", "CALL9", "CALL10", "CALL11", "CALL12", "CALL13", "CALL14", "CALL15", + + "NEWOBJ", "NEWARR", "MPUTOBJ", "MPUTOBJI", "INITSET", "INITGET", "MPUTARR", "MPUTARRI", + "SETALEN", "INITENUM", "NEXTENUM", "NEWTARGET", "DEBUGGER", "NOP", "INVALID", "UNUSED207", + "GETPROPC_RR", "GETPROPC_CR", "GETPROPC_RC", "GETPROPC_CC", "UNUSED212", "UNUSED213", "UNUSED214", "UNUSED215", + "UNUSED216", "UNUSED217", "UNUSED218", "UNUSED219", "UNUSED220", "UNUSED221", "UNUSED222", "UNUSED223", + + "UNUSED224", "UNUSED225", "UNUSED226", "UNUSED227", "UNUSED228", "UNUSED229", "UNUSED230", "UNUSED231", + "UNUSED232", "UNUSED233", "UNUSED234", "UNUSED235", "UNUSED236", "UNUSED237", "UNUSED238", "UNUSED239", + "UNUSED240", "UNUSED241", "UNUSED242", "UNUSED243", "UNUSED244", "UNUSED245", "UNUSED246", "UNUSED247", + "UNUSED248", "UNUSED249", "UNUSED250", "UNUSED251", "UNUSED252", "UNUSED253", "UNUSED254", "UNUSED255" +}; + +typedef struct duk__dprint_state duk__dprint_state; +struct duk__dprint_state { + duk_fixedbuffer *fb; + + /* loop_stack_index could be perhaps be replaced by 'depth', but it's nice + * to not couple these two mechanisms unnecessarily. + */ + duk_hobject *loop_stack[DUK__LOOP_STACK_DEPTH]; + duk_int_t loop_stack_index; + duk_int_t loop_stack_limit; + + duk_int_t depth; + duk_int_t depth_limit; + + duk_bool_t pointer; + duk_bool_t heavy; + duk_bool_t binary; + duk_bool_t follow_proto; + duk_bool_t internal; + duk_bool_t hexdump; +}; + +/* helpers */ +DUK_LOCAL_DECL void duk__print_hstring(duk__dprint_state *st, duk_hstring *k, duk_bool_t quotes); +DUK_LOCAL_DECL void duk__print_hobject(duk__dprint_state *st, duk_hobject *h); +DUK_LOCAL_DECL void duk__print_hbuffer(duk__dprint_state *st, duk_hbuffer *h); +DUK_LOCAL_DECL void duk__print_tval(duk__dprint_state *st, duk_tval *tv); +DUK_LOCAL_DECL void duk__print_instr(duk__dprint_state *st, duk_instr_t ins); +DUK_LOCAL_DECL void duk__print_heaphdr(duk__dprint_state *st, duk_heaphdr *h); +DUK_LOCAL_DECL void duk__print_shared_heaphdr(duk__dprint_state *st, duk_heaphdr *h); +DUK_LOCAL_DECL void duk__print_shared_heaphdr_string(duk__dprint_state *st, duk_heaphdr_string *h); + +DUK_LOCAL void duk__print_shared_heaphdr(duk__dprint_state *st, duk_heaphdr *h) { + duk_fixedbuffer *fb = st->fb; + + if (st->heavy) { + duk_fb_sprintf(fb, "(%p)", (void *) h); + } + + if (!h) { + return; + } + + if (st->binary) { + duk_size_t i; + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_LBRACKET); + for (i = 0; i < (duk_size_t) sizeof(*h); i++) { + duk_fb_sprintf(fb, "%02lx", (unsigned long) ((duk_uint8_t *)h)[i]); + } + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_RBRACKET); + } + +#if defined(DUK_USE_REFERENCE_COUNTING) /* currently implicitly also DUK_USE_DOUBLE_LINKED_HEAP */ + if (st->heavy) { + duk_fb_sprintf(fb, "[h_next=%p,h_prev=%p,h_refcount=%lu,h_flags=%08lx,type=%ld," + "reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]", + (void *) DUK_HEAPHDR_GET_NEXT(NULL, h), + (void *) DUK_HEAPHDR_GET_PREV(NULL, h), + (unsigned long) DUK_HEAPHDR_GET_REFCOUNT(h), + (unsigned long) DUK_HEAPHDR_GET_FLAGS(h), + (long) DUK_HEAPHDR_GET_TYPE(h), + (long) (DUK_HEAPHDR_HAS_REACHABLE(h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_TEMPROOT(h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZABLE(h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZED(h) ? 1 : 0)); + } +#else + if (st->heavy) { + duk_fb_sprintf(fb, "[h_next=%p,h_flags=%08lx,type=%ld,reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]", + (void *) DUK_HEAPHDR_GET_NEXT(NULL, h), + (unsigned long) DUK_HEAPHDR_GET_FLAGS(h), + (long) DUK_HEAPHDR_GET_TYPE(h), + (long) (DUK_HEAPHDR_HAS_REACHABLE(h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_TEMPROOT(h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZABLE(h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZED(h) ? 1 : 0)); + } +#endif +} + +DUK_LOCAL void duk__print_shared_heaphdr_string(duk__dprint_state *st, duk_heaphdr_string *h) { + duk_fixedbuffer *fb = st->fb; + + if (st->heavy) { + duk_fb_sprintf(fb, "(%p)", (void *) h); + } + + if (!h) { + return; + } + + if (st->binary) { + duk_size_t i; + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_LBRACKET); + for (i = 0; i < (duk_size_t) sizeof(*h); i++) { + duk_fb_sprintf(fb, "%02lx", (unsigned long) ((duk_uint8_t *)h)[i]); + } + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_RBRACKET); + } + +#if defined(DUK_USE_REFERENCE_COUNTING) + if (st->heavy) { + duk_fb_sprintf(fb, "[h_refcount=%lu,h_flags=%08lx,type=%ld,reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]", + (unsigned long) DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h), + (unsigned long) DUK_HEAPHDR_GET_FLAGS((duk_heaphdr *) h), + (long) DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) h), + (long) (DUK_HEAPHDR_HAS_REACHABLE((duk_heaphdr *) h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_TEMPROOT((duk_heaphdr *) h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZABLE((duk_heaphdr *) h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZED((duk_heaphdr *) h) ? 1 : 0)); + } +#else + if (st->heavy) { + duk_fb_sprintf(fb, "[h_flags=%08lx,type=%ld,reachable=%ld,temproot=%ld,finalizable=%ld,finalized=%ld]", + (unsigned long) DUK_HEAPHDR_GET_FLAGS((duk_heaphdr *) h), + (long) DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) h), + (long) (DUK_HEAPHDR_HAS_REACHABLE((duk_heaphdr *) h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_TEMPROOT((duk_heaphdr *) h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZABLE((duk_heaphdr *) h) ? 1 : 0), + (long) (DUK_HEAPHDR_HAS_FINALIZED((duk_heaphdr *) h) ? 1 : 0)); + } +#endif +} + +DUK_LOCAL void duk__print_hstring(duk__dprint_state *st, duk_hstring *h, duk_bool_t quotes) { + duk_fixedbuffer *fb = st->fb; + const duk_uint8_t *p; + const duk_uint8_t *p_end; + + /* terminal type: no depth check */ + + if (duk_fb_is_full(fb)) { + return; + } + + duk__print_shared_heaphdr_string(st, &h->hdr); + + if (!h) { + duk_fb_put_cstring(fb, "NULL"); + return; + } + + p = DUK_HSTRING_GET_DATA(h); + p_end = p + DUK_HSTRING_GET_BYTELEN(h); + + if (p_end > p && p[0] == DUK_ASC_UNDERSCORE) { + /* If property key begins with underscore, encode it with + * forced quotes (e.g. "_Foo") to distinguish it from encoded + * internal properties (e.g. \x82Bar -> _Bar). + */ + quotes = 1; + } + + if (quotes) { + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_DOUBLEQUOTE); + } + while (p < p_end) { + duk_uint8_t ch = *p++; + + /* two special escapes: '\' and '"', other printables as is */ + if (ch == '\\') { + duk_fb_sprintf(fb, "\\\\"); + } else if (ch == '"') { + duk_fb_sprintf(fb, "\\\""); + } else if (ch >= 0x20 && ch <= 0x7e) { + duk_fb_put_byte(fb, ch); + } else if (ch == 0x82 && !quotes) { + /* encode \x82Bar as _Bar if no quotes are + * applied, this is for readable internal keys. + */ + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_UNDERSCORE); + } else { + duk_fb_sprintf(fb, "\\x%02lx", (unsigned long) ch); + } + } + if (quotes) { + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_DOUBLEQUOTE); + } +#if defined(DUK_USE_REFERENCE_COUNTING) + /* XXX: limit to quoted strings only, to save keys from being cluttered? */ + duk_fb_sprintf(fb, "/%lu", (unsigned long) DUK_HEAPHDR_GET_REFCOUNT(&h->hdr)); +#endif +} + +#define DUK__COMMA() do { \ + if (first) { \ + first = 0; \ + } else { \ + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_COMMA); \ + } \ + } while (0) + +DUK_LOCAL void duk__print_hobject(duk__dprint_state *st, duk_hobject *h) { + duk_fixedbuffer *fb = st->fb; + duk_uint_fast32_t i; + duk_tval *tv; + duk_hstring *key; + duk_bool_t first = 1; + const char *brace1 = "{"; + const char *brace2 = "}"; + duk_bool_t pushed_loopstack = 0; + + if (duk_fb_is_full(fb)) { + return; + } + + duk__print_shared_heaphdr(st, &h->hdr); + + if (h && DUK_HOBJECT_HAS_ARRAY_PART(h)) { + brace1 = "["; + brace2 = "]"; + } + + if (!h) { + duk_fb_put_cstring(fb, "NULL"); + goto finished; + } + + if (st->depth >= st->depth_limit) { + const char *subtype = "generic"; + + if (DUK_HOBJECT_IS_COMPFUNC(h)) { + subtype = "compfunc"; + } else if (DUK_HOBJECT_IS_NATFUNC(h)) { + subtype = "natfunc"; + } else if (DUK_HOBJECT_IS_THREAD(h)) { + subtype = "thread"; + } else if (DUK_HOBJECT_IS_BUFOBJ(h)) { + subtype = "bufobj"; + } else if (DUK_HOBJECT_IS_ARRAY(h)) { + subtype = "array"; + } + duk_fb_sprintf(fb, "%sobject/%s %p%s", (const char *) brace1, subtype, (void *) h, (const char *) brace2); + return; + } + + for (i = 0; i < (duk_uint_fast32_t) st->loop_stack_index; i++) { + if (st->loop_stack[i] == h) { + duk_fb_sprintf(fb, "%sLOOP:%p%s", (const char *) brace1, (void *) h, (const char *) brace2); + return; + } + } + + /* after this, return paths should 'goto finished' for decrement */ + st->depth++; + + if (st->loop_stack_index >= st->loop_stack_limit) { + duk_fb_sprintf(fb, "%sOUT-OF-LOOP-STACK%s", (const char *) brace1, (const char *) brace2); + goto finished; + } + st->loop_stack[st->loop_stack_index++] = h; + pushed_loopstack = 1; + + /* + * Notation: double underscore used for internal properties which are not + * stored in the property allocation (e.g. '__valstack'). + */ + + duk_fb_put_cstring(fb, brace1); + + if (DUK_HOBJECT_GET_PROPS(NULL, h)) { + duk_uint32_t a_limit; + + a_limit = DUK_HOBJECT_GET_ASIZE(h); + if (st->internal) { + /* dump all allocated entries, unused entries print as 'unused', + * note that these may extend beyond current 'length' and look + * a bit funny. + */ + } else { + /* leave out trailing 'unused' elements */ + while (a_limit > 0) { + tv = DUK_HOBJECT_A_GET_VALUE_PTR(NULL, h, a_limit - 1); + if (!DUK_TVAL_IS_UNUSED(tv)) { + break; + } + a_limit--; + } + } + + for (i = 0; i < a_limit; i++) { + tv = DUK_HOBJECT_A_GET_VALUE_PTR(NULL, h, i); + DUK__COMMA(); + duk__print_tval(st, tv); + } + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(h); i++) { + key = DUK_HOBJECT_E_GET_KEY(NULL, h, i); + if (!key) { + continue; + } + if (!st->internal && DUK_HSTRING_HAS_HIDDEN(key)) { + continue; + } + DUK__COMMA(); + duk__print_hstring(st, key, 0); + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_COLON); + if (DUK_HOBJECT_E_SLOT_IS_ACCESSOR(NULL, h, i)) { + duk_fb_sprintf(fb, "[get:%p,set:%p]", + (void *) DUK_HOBJECT_E_GET_VALUE(NULL, h, i).a.get, + (void *) DUK_HOBJECT_E_GET_VALUE(NULL, h, i).a.set); + } else { + tv = &DUK_HOBJECT_E_GET_VALUE(NULL, h, i).v; + duk__print_tval(st, tv); + } + if (st->heavy) { + duk_fb_sprintf(fb, "<%02lx>", (unsigned long) DUK_HOBJECT_E_GET_FLAGS(NULL, h, i)); + } + } + } + if (st->internal) { + if (DUK_HOBJECT_IS_ARRAY(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__array:true"); + } + if (DUK_HOBJECT_HAS_EXTENSIBLE(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__extensible:true"); + } + if (DUK_HOBJECT_HAS_CONSTRUCTABLE(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__constructable:true"); + } + if (DUK_HOBJECT_HAS_BOUNDFUNC(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__boundfunc:true"); + } + if (DUK_HOBJECT_HAS_COMPFUNC(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__compfunc:true"); + } + if (DUK_HOBJECT_HAS_NATFUNC(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__natfunc:true"); + } + if (DUK_HOBJECT_HAS_BUFOBJ(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__bufobj:true"); + } + if (DUK_HOBJECT_IS_THREAD(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__thread:true"); + } + if (DUK_HOBJECT_HAS_ARRAY_PART(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__array_part:true"); + } + if (DUK_HOBJECT_HAS_STRICT(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__strict:true"); + } + if (DUK_HOBJECT_HAS_NOTAIL(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__notail:true"); + } + if (DUK_HOBJECT_HAS_NEWENV(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__newenv:true"); + } + if (DUK_HOBJECT_HAS_NAMEBINDING(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__namebinding:true"); + } + if (DUK_HOBJECT_HAS_CREATEARGS(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__createargs:true"); + } + if (DUK_HOBJECT_HAS_EXOTIC_ARRAY(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__exotic_array:true"); + } + if (DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__exotic_stringobj:true"); + } + if (DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__exotic_arguments:true"); + } + if (DUK_HOBJECT_IS_BUFOBJ(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__exotic_bufobj:true"); + } + if (DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h)) { + DUK__COMMA(); duk_fb_sprintf(fb, "__exotic_proxyobj:true"); + } + } + + if (st->internal && DUK_HOBJECT_IS_ARRAY(h)) { + duk_harray *a = (duk_harray *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__length:%ld", (long) a->length); + DUK__COMMA(); duk_fb_sprintf(fb, "__length_nonwritable:%ld", (long) a->length_nonwritable); + } else if (st->internal && DUK_HOBJECT_IS_COMPFUNC(h)) { + duk_hcompfunc *f = (duk_hcompfunc *) h; + DUK__COMMA(); duk_fb_put_cstring(fb, "__data:"); + duk__print_hbuffer(st, (duk_hbuffer *) DUK_HCOMPFUNC_GET_DATA(NULL, f)); + DUK__COMMA(); duk_fb_put_cstring(fb, "__lexenv:"); duk__print_hobject(st, DUK_HCOMPFUNC_GET_LEXENV(NULL, f)); + DUK__COMMA(); duk_fb_put_cstring(fb, "__varenv:"); duk__print_hobject(st, DUK_HCOMPFUNC_GET_VARENV(NULL, f)); + DUK__COMMA(); duk_fb_sprintf(fb, "__nregs:%ld", (long) f->nregs); + DUK__COMMA(); duk_fb_sprintf(fb, "__nargs:%ld", (long) f->nargs); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + DUK__COMMA(); duk_fb_sprintf(fb, "__start_line:%ld", (long) f->start_line); + DUK__COMMA(); duk_fb_sprintf(fb, "__end_line:%ld", (long) f->end_line); +#endif + DUK__COMMA(); duk_fb_put_cstring(fb, "__data:"); + duk__print_hbuffer(st, (duk_hbuffer *) DUK_HCOMPFUNC_GET_DATA(NULL, f)); + } else if (st->internal && DUK_HOBJECT_IS_NATFUNC(h)) { + duk_hnatfunc *f = (duk_hnatfunc *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__func:"); + duk_fb_put_funcptr(fb, (duk_uint8_t *) &f->func, sizeof(f->func)); + DUK__COMMA(); duk_fb_sprintf(fb, "__nargs:%ld", (long) f->nargs); + DUK__COMMA(); duk_fb_sprintf(fb, "__magic:%ld", (long) f->magic); + } else if (st->internal && DUK_HOBJECT_IS_DECENV(h)) { + duk_hdecenv *e = (duk_hdecenv *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__thread:"); duk__print_hobject(st, (duk_hobject *) e->thread); + DUK__COMMA(); duk_fb_sprintf(fb, "__varmap:"); duk__print_hobject(st, (duk_hobject *) e->varmap); + DUK__COMMA(); duk_fb_sprintf(fb, "__regbase_byteoff:%ld", (long) e->regbase_byteoff); + } else if (st->internal && DUK_HOBJECT_IS_OBJENV(h)) { + duk_hobjenv *e = (duk_hobjenv *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__target:"); duk__print_hobject(st, (duk_hobject *) e->target); + DUK__COMMA(); duk_fb_sprintf(fb, "__has_this:%ld", (long) e->has_this); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + } else if (st->internal && DUK_HOBJECT_IS_BUFOBJ(h)) { + duk_hbufobj *b = (duk_hbufobj *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__buf:"); + duk__print_hbuffer(st, (duk_hbuffer *) b->buf); + DUK__COMMA(); duk_fb_sprintf(fb, "__buf_prop:"); + duk__print_hobject(st, (duk_hobject *) b->buf_prop); + DUK__COMMA(); duk_fb_sprintf(fb, "__offset:%ld", (long) b->offset); + DUK__COMMA(); duk_fb_sprintf(fb, "__length:%ld", (long) b->length); + DUK__COMMA(); duk_fb_sprintf(fb, "__shift:%ld", (long) b->shift); + DUK__COMMA(); duk_fb_sprintf(fb, "__elemtype:%ld", (long) b->elem_type); +#endif + } else if (st->internal && DUK_HOBJECT_IS_PROXY(h)) { + duk_hproxy *p = (duk_hproxy *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__target:"); + duk__print_hobject(st, p->target); + DUK__COMMA(); duk_fb_sprintf(fb, "__handler:"); + duk__print_hobject(st, p->handler); + } else if (st->internal && DUK_HOBJECT_IS_THREAD(h)) { + duk_hthread *t = (duk_hthread *) h; + DUK__COMMA(); duk_fb_sprintf(fb, "__ptr_curr_pc:%p", (void *) t->ptr_curr_pc); + DUK__COMMA(); duk_fb_sprintf(fb, "__heap:%p", (void *) t->heap); + DUK__COMMA(); duk_fb_sprintf(fb, "__strict:%ld", (long) t->strict); + DUK__COMMA(); duk_fb_sprintf(fb, "__state:%ld", (long) t->state); + DUK__COMMA(); duk_fb_sprintf(fb, "__unused1:%ld", (long) t->unused1); + DUK__COMMA(); duk_fb_sprintf(fb, "__unused2:%ld", (long) t->unused2); + DUK__COMMA(); duk_fb_sprintf(fb, "__valstack:%p", (void *) t->valstack); + DUK__COMMA(); duk_fb_sprintf(fb, "__valstack_end:%p/%ld", (void *) t->valstack_end, (long) (t->valstack_end - t->valstack)); + DUK__COMMA(); duk_fb_sprintf(fb, "__valstack_alloc_end:%p/%ld", (void *) t->valstack_alloc_end, (long) (t->valstack_alloc_end - t->valstack)); + DUK__COMMA(); duk_fb_sprintf(fb, "__valstack_bottom:%p/%ld", (void *) t->valstack_bottom, (long) (t->valstack_bottom - t->valstack)); + DUK__COMMA(); duk_fb_sprintf(fb, "__valstack_top:%p/%ld", (void *) t->valstack_top, (long) (t->valstack_top - t->valstack)); + DUK__COMMA(); duk_fb_sprintf(fb, "__callstack_curr:%p", (void *) t->callstack_curr); + DUK__COMMA(); duk_fb_sprintf(fb, "__callstack_top:%ld", (long) t->callstack_top); + DUK__COMMA(); duk_fb_sprintf(fb, "__callstack_preventcount:%ld", (long) t->callstack_preventcount); + DUK__COMMA(); duk_fb_sprintf(fb, "__resumer:"); duk__print_hobject(st, (duk_hobject *) t->resumer); + DUK__COMMA(); duk_fb_sprintf(fb, "__compile_ctx:%p", (void *) t->compile_ctx); +#if defined(DUK_USE_INTERRUPT_COUNTER) + DUK__COMMA(); duk_fb_sprintf(fb, "__interrupt_counter:%ld", (long) t->interrupt_counter); + DUK__COMMA(); duk_fb_sprintf(fb, "__interrupt_init:%ld", (long) t->interrupt_init); +#endif + + /* XXX: print built-ins array? */ + + } +#if defined(DUK_USE_REFERENCE_COUNTING) + if (st->internal) { + DUK__COMMA(); duk_fb_sprintf(fb, "__refcount:%lu", (unsigned long) DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h)); + } +#endif + if (st->internal) { + DUK__COMMA(); duk_fb_sprintf(fb, "__class:%ld", (long) DUK_HOBJECT_GET_CLASS_NUMBER(h)); + } + + DUK__COMMA(); duk_fb_sprintf(fb, "__heapptr:%p", (void *) h); /* own pointer */ + + /* prototype should be last, for readability */ + if (DUK_HOBJECT_GET_PROTOTYPE(NULL, h)) { + if (st->follow_proto) { + DUK__COMMA(); duk_fb_put_cstring(fb, "__prototype:"); duk__print_hobject(st, DUK_HOBJECT_GET_PROTOTYPE(NULL, h)); + } else { + DUK__COMMA(); duk_fb_sprintf(fb, "__prototype:%p", (void *) DUK_HOBJECT_GET_PROTOTYPE(NULL, h)); + } + } + + duk_fb_put_cstring(fb, brace2); + +#if defined(DUK_USE_HOBJECT_HASH_PART) + if (st->heavy && DUK_HOBJECT_GET_HSIZE(h) > 0) { + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_LANGLE); + for (i = 0; i < DUK_HOBJECT_GET_HSIZE(h); i++) { + duk_uint_t h_idx = DUK_HOBJECT_H_GET_INDEX(NULL, h, i); + if (i > 0) { + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_COMMA); + } + if (h_idx == DUK_HOBJECT_HASHIDX_UNUSED) { + duk_fb_sprintf(fb, "u"); + } else if (h_idx == DUK_HOBJECT_HASHIDX_DELETED) { + duk_fb_sprintf(fb, "d"); + } else { + duk_fb_sprintf(fb, "%ld", (long) h_idx); + } + } + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_RANGLE); + } +#endif + + finished: + st->depth--; + if (pushed_loopstack) { + st->loop_stack_index--; + st->loop_stack[st->loop_stack_index] = NULL; + } +} + +DUK_LOCAL void duk__print_hbuffer(duk__dprint_state *st, duk_hbuffer *h) { + duk_fixedbuffer *fb = st->fb; + duk_size_t i, n; + duk_uint8_t *p; + + if (duk_fb_is_full(fb)) { + return; + } + + /* terminal type: no depth check */ + + if (!h) { + duk_fb_put_cstring(fb, "NULL"); + return; + } + + if (DUK_HBUFFER_HAS_DYNAMIC(h)) { + if (DUK_HBUFFER_HAS_EXTERNAL(h)) { + duk_hbuffer_external *g = (duk_hbuffer_external *) h; + duk_fb_sprintf(fb, "buffer:external:%p:%ld", + (void *) DUK_HBUFFER_EXTERNAL_GET_DATA_PTR(NULL, g), + (long) DUK_HBUFFER_EXTERNAL_GET_SIZE(g)); + } else { + duk_hbuffer_dynamic *g = (duk_hbuffer_dynamic *) h; + duk_fb_sprintf(fb, "buffer:dynamic:%p:%ld", + (void *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(NULL, g), + (long) DUK_HBUFFER_DYNAMIC_GET_SIZE(g)); + } + } else { + duk_fb_sprintf(fb, "buffer:fixed:%ld", (long) DUK_HBUFFER_GET_SIZE(h)); + } + +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_fb_sprintf(fb, "/%lu", (unsigned long) DUK_HEAPHDR_GET_REFCOUNT(&h->hdr)); +#endif + + if (st->hexdump) { + duk_fb_sprintf(fb, "=["); + n = DUK_HBUFFER_GET_SIZE(h); + p = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(NULL, h); + for (i = 0; i < n; i++) { + duk_fb_sprintf(fb, "%02lx", (unsigned long) p[i]); + } + duk_fb_sprintf(fb, "]"); + } +} + +DUK_LOCAL void duk__print_heaphdr(duk__dprint_state *st, duk_heaphdr *h) { + duk_fixedbuffer *fb = st->fb; + + if (duk_fb_is_full(fb)) { + return; + } + + if (!h) { + duk_fb_put_cstring(fb, "NULL"); + return; + } + + switch (DUK_HEAPHDR_GET_TYPE(h)) { + case DUK_HTYPE_STRING: + duk__print_hstring(st, (duk_hstring *) h, 1); + break; + case DUK_HTYPE_OBJECT: + duk__print_hobject(st, (duk_hobject *) h); + break; + case DUK_HTYPE_BUFFER: + duk__print_hbuffer(st, (duk_hbuffer *) h); + break; + default: + duk_fb_sprintf(fb, "[unknown htype %ld]", (long) DUK_HEAPHDR_GET_TYPE(h)); + break; + } +} + +DUK_LOCAL void duk__print_tval(duk__dprint_state *st, duk_tval *tv) { + duk_fixedbuffer *fb = st->fb; + + if (duk_fb_is_full(fb)) { + return; + } + + /* depth check is done when printing an actual type */ + + if (st->heavy) { + duk_fb_sprintf(fb, "(%p)", (void *) tv); + } + + if (!tv) { + duk_fb_put_cstring(fb, "NULL"); + return; + } + + if (st->binary) { + duk_size_t i; + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_LBRACKET); + for (i = 0; i < (duk_size_t) sizeof(*tv); i++) { + duk_fb_sprintf(fb, "%02lx", (unsigned long) ((duk_uint8_t *)tv)[i]); + } + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_RBRACKET); + } + + if (st->heavy) { + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_LANGLE); + } + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: { + duk_fb_put_cstring(fb, "undefined"); + break; + } + case DUK_TAG_UNUSED: { + duk_fb_put_cstring(fb, "unused"); + break; + } + case DUK_TAG_NULL: { + duk_fb_put_cstring(fb, "null"); + break; + } + case DUK_TAG_BOOLEAN: { + duk_fb_put_cstring(fb, DUK_TVAL_GET_BOOLEAN(tv) ? "true" : "false"); + break; + } + case DUK_TAG_STRING: { + /* Note: string is a terminal heap object, so no depth check here */ + duk__print_hstring(st, DUK_TVAL_GET_STRING(tv), 1); + break; + } + case DUK_TAG_OBJECT: { + duk__print_hobject(st, DUK_TVAL_GET_OBJECT(tv)); + break; + } + case DUK_TAG_BUFFER: { + duk__print_hbuffer(st, DUK_TVAL_GET_BUFFER(tv)); + break; + } + case DUK_TAG_POINTER: { + duk_fb_sprintf(fb, "pointer:%p", (void *) DUK_TVAL_GET_POINTER(tv)); + break; + } + case DUK_TAG_LIGHTFUNC: { + duk_c_function func; + duk_small_uint_t lf_flags; + + DUK_TVAL_GET_LIGHTFUNC(tv, func, lf_flags); + duk_fb_sprintf(fb, "lightfunc:"); + duk_fb_put_funcptr(fb, (duk_uint8_t *) &func, sizeof(func)); + duk_fb_sprintf(fb, ":%04lx", (long) lf_flags); + break; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + duk_fb_sprintf(fb, "%.18g_F", (double) DUK_TVAL_GET_NUMBER(tv)); + break; +#endif + default: { + /* IEEE double is approximately 16 decimal digits; print a couple extra */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + duk_fb_sprintf(fb, "%.18g", (double) DUK_TVAL_GET_NUMBER(tv)); + break; + } + } + if (st->heavy) { + duk_fb_put_byte(fb, (duk_uint8_t) DUK_ASC_RANGLE); + } +} + +DUK_LOCAL void duk__print_instr(duk__dprint_state *st, duk_instr_t ins) { + duk_fixedbuffer *fb = st->fb; + duk_small_int_t op; + const char *op_name; + + op = (duk_small_int_t) DUK_DEC_OP(ins); + op_name = duk__bc_optab[op]; + + /* XXX: option to fix opcode length so it lines up nicely */ + + if (op == DUK_OP_JUMP) { + duk_int_t diff1 = (duk_int_t) (DUK_DEC_ABC(ins) - DUK_BC_JUMP_BIAS); /* from next pc */ + duk_int_t diff2 = diff1 + 1; /* from curr pc */ + + duk_fb_sprintf(fb, "%s %ld (to pc%c%ld)", + (const char *) op_name, (long) diff1, + (int) (diff2 >= 0 ? '+' : '-'), /* char format: use int */ + (long) (diff2 >= 0 ? diff2 : -diff2)); + } else { + duk_fb_sprintf(fb, "%s %ld, %ld, %ld", + (const char *) op_name, (long) DUK_DEC_A(ins), + (long) DUK_DEC_B(ins), (long) DUK_DEC_C(ins)); + } +} + +DUK_LOCAL void duk__print_opcode(duk__dprint_state *st, duk_small_int_t opcode) { + duk_fixedbuffer *fb = st->fb; + + if (opcode < DUK_BC_OP_MIN || opcode > DUK_BC_OP_MAX) { + duk_fb_sprintf(fb, "?(%ld)", (long) opcode); + } else { + duk_fb_sprintf(fb, "%s", (const char *) duk__bc_optab[opcode]); + } +} + +DUK_LOCAL void duk__print_catcher(duk__dprint_state *st, duk_catcher *cat) { + duk_fixedbuffer *fb = st->fb; + + if (duk_fb_is_full(fb)) { + return; + } + + if (!cat) { + duk_fb_put_cstring(fb, "NULL"); + return; + } + + duk_fb_sprintf(fb, "[catcher ptr=%p parent=%p varname=%p pc_base=%p, idx_base=%ld, flags=0x%08lx]", + (void *) cat, + (void *) cat->parent, (void *) cat->h_varname, (void *) cat->pc_base, + (long) cat->idx_base, (unsigned long) cat->flags); +} + + +DUK_LOCAL void duk__print_activation(duk__dprint_state *st, duk_activation *act) { + duk_fixedbuffer *fb = st->fb; + + if (duk_fb_is_full(fb)) { + return; + } + + if (!act) { + duk_fb_put_cstring(fb, "NULL"); + return; + } + + /* prev_caller: conditional, omitted on purpose, it's rarely used. */ + /* prev_line: conditional, omitted on purpose (but would be nice). */ + duk_fb_sprintf(fb, "[activation ptr=%p tv_func= func=%p parent=%p var_env=%p lex_env=%p cat=%p curr_pc=%p bottom_byteoff=%ld retval_byteoff=%ld reserve_byteoff=%ld flags=%ld]", + (void *) act, + (void *) act->func, (void *) act->parent, (void *) act->var_env, + (void *) act->lex_env, (void *) act->cat, (void *) act->curr_pc, + (long) act->bottom_byteoff, (long) act->retval_byteoff, (long) act->reserve_byteoff, + (long) act->flags); +} + +DUK_INTERNAL duk_int_t duk_debug_vsnprintf(char *str, duk_size_t size, const char *format, va_list ap) { + duk_fixedbuffer fb; + const char *p = format; + const char *p_end = p + DUK_STRLEN(format); + duk_int_t retval; + + duk_memzero(&fb, sizeof(fb)); + fb.buffer = (duk_uint8_t *) str; + fb.length = size; + fb.offset = 0; + fb.truncated = 0; + + while (p < p_end) { + char ch = *p++; + const char *p_begfmt = NULL; + duk_bool_t got_exclamation = 0; + duk_bool_t got_long = 0; /* %lf, %ld etc */ + duk__dprint_state st; + + if (ch != DUK_ASC_PERCENT) { + duk_fb_put_byte(&fb, (duk_uint8_t) ch); + continue; + } + + /* + * Format tag parsing. Since we don't understand all the + * possible format tags allowed, we just scan for a terminating + * specifier and keep track of relevant modifiers that we do + * understand. See man 3 printf. + */ + + duk_memzero(&st, sizeof(st)); + st.fb = &fb; + st.depth = 0; + st.depth_limit = 1; + st.loop_stack_index = 0; + st.loop_stack_limit = DUK__LOOP_STACK_DEPTH; + + p_begfmt = p - 1; + while (p < p_end) { + ch = *p++; + + if (ch == DUK_ASC_STAR) { + /* unsupported: would consume multiple args */ + goto format_error; + } else if (ch == DUK_ASC_PERCENT) { + duk_fb_put_byte(&fb, (duk_uint8_t) DUK_ASC_PERCENT); + break; + } else if (ch == DUK_ASC_EXCLAMATION) { + got_exclamation = 1; + } else if (!got_exclamation && ch == DUK_ASC_LC_L) { + got_long = 1; + } else if (got_exclamation && ch == DUK_ASC_LC_D) { + st.depth_limit = DUK__DEEP_DEPTH_LIMIT; + } else if (got_exclamation && ch == DUK_ASC_LC_P) { + st.follow_proto = 1; + } else if (got_exclamation && ch == DUK_ASC_LC_I) { + st.internal = 1; + } else if (got_exclamation && ch == DUK_ASC_LC_X) { + st.hexdump = 1; + } else if (got_exclamation && ch == DUK_ASC_LC_H) { + st.heavy = 1; + } else if (got_exclamation && ch == DUK_ASC_ATSIGN) { + st.pointer = 1; + } else if (got_exclamation && ch == DUK_ASC_HASH) { + st.binary = 1; + } else if (got_exclamation && ch == DUK_ASC_UC_T) { + duk_tval *t = va_arg(ap, duk_tval *); + if (st.pointer && !st.heavy) { + duk_fb_sprintf(&fb, "(%p)", (void *) t); + } + duk__print_tval(&st, t); + break; + } else if (got_exclamation && ch == DUK_ASC_UC_O) { + duk_heaphdr *t = va_arg(ap, duk_heaphdr *); + if (st.pointer && !st.heavy) { + duk_fb_sprintf(&fb, "(%p)", (void *) t); + } + duk__print_heaphdr(&st, t); + break; + } else if (got_exclamation && ch == DUK_ASC_UC_I) { + duk_instr_t t = va_arg(ap, duk_instr_t); + duk__print_instr(&st, t); + break; + } else if (got_exclamation && ch == DUK_ASC_UC_X) { + long t = va_arg(ap, long); + duk__print_opcode(&st, (duk_small_int_t) t); + break; + } else if (got_exclamation && ch == DUK_ASC_UC_C) { + duk_catcher *t = va_arg(ap, duk_catcher *); + duk__print_catcher(&st, t); + break; + } else if (got_exclamation && ch == DUK_ASC_UC_A) { + duk_activation *t = va_arg(ap, duk_activation *); + duk__print_activation(&st, t); + break; + } else if (!got_exclamation && strchr(DUK__ALLOWED_STANDARD_SPECIFIERS, (int) ch)) { + char fmtbuf[DUK__MAX_FORMAT_TAG_LENGTH]; + duk_size_t fmtlen; + + DUK_ASSERT(p >= p_begfmt); + fmtlen = (duk_size_t) (p - p_begfmt); + if (fmtlen >= sizeof(fmtbuf)) { + /* format is too large, abort */ + goto format_error; + } + duk_memzero(fmtbuf, sizeof(fmtbuf)); + duk_memcpy(fmtbuf, p_begfmt, fmtlen); + + /* assume exactly 1 arg, which is why '*' is forbidden; arg size still + * depends on type though. + */ + + if (ch == DUK_ASC_LC_F || ch == DUK_ASC_LC_G || ch == DUK_ASC_LC_E) { + /* %f and %lf both consume a 'long' */ + double arg = va_arg(ap, double); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_D && got_long) { + /* %ld */ + long arg = va_arg(ap, long); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_D) { + /* %d; only 16 bits are guaranteed */ + int arg = va_arg(ap, int); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_U && got_long) { + /* %lu */ + unsigned long arg = va_arg(ap, unsigned long); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_U) { + /* %u; only 16 bits are guaranteed */ + unsigned int arg = va_arg(ap, unsigned int); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_X && got_long) { + /* %lx */ + unsigned long arg = va_arg(ap, unsigned long); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_X) { + /* %x; only 16 bits are guaranteed */ + unsigned int arg = va_arg(ap, unsigned int); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else if (ch == DUK_ASC_LC_S) { + /* %s */ + const char *arg = va_arg(ap, const char *); + if (arg == NULL) { + /* '%s' and NULL is not portable, so special case + * it for debug printing. + */ + duk_fb_sprintf(&fb, "NULL"); + } else { + duk_fb_sprintf(&fb, fmtbuf, arg); + } + } else if (ch == DUK_ASC_LC_P) { + /* %p */ + void *arg = va_arg(ap, void *); + if (arg == NULL) { + /* '%p' and NULL is portable, but special case it + * anyway to get a standard NULL marker in logs. + */ + duk_fb_sprintf(&fb, "NULL"); + } else { + duk_fb_sprintf(&fb, fmtbuf, arg); + } + } else if (ch == DUK_ASC_LC_C) { + /* '%c', passed concretely as int */ + int arg = va_arg(ap, int); + duk_fb_sprintf(&fb, fmtbuf, arg); + } else { + /* Should not happen. */ + duk_fb_sprintf(&fb, "INVALID-FORMAT(%s)", (const char *) fmtbuf); + } + break; + } else { + /* ignore */ + } + } + } + goto done; + + format_error: + duk_fb_put_cstring(&fb, "FMTERR"); + /* fall through */ + + done: + retval = (duk_int_t) fb.offset; + duk_fb_put_byte(&fb, (duk_uint8_t) 0); + + /* return total chars written excluding terminator */ + return retval; +} + +#if 0 /*unused*/ +DUK_INTERNAL duk_int_t duk_debug_snprintf(char *str, duk_size_t size, const char *format, ...) { + duk_int_t retval; + va_list ap; + va_start(ap, format); + retval = duk_debug_vsnprintf(str, size, format, ap); + va_end(ap); + return retval; +} +#endif + +/* Formatting function pointers is tricky: there is no standard pointer for + * function pointers and the size of a function pointer may depend on the + * specific pointer type. This helper formats a function pointer based on + * its memory layout to get something useful on most platforms. + */ +DUK_INTERNAL void duk_debug_format_funcptr(char *buf, duk_size_t buf_size, duk_uint8_t *fptr, duk_size_t fptr_size) { + duk_size_t i; + duk_uint8_t *p = (duk_uint8_t *) buf; + duk_uint8_t *p_end = (duk_uint8_t *) (buf + buf_size - 1); + + DUK_ASSERT(buf != NULL); + duk_memzero(buf, buf_size); + + for (i = 0; i < fptr_size; i++) { + duk_int_t left = (duk_int_t) (p_end - p); + duk_uint8_t ch; + if (left <= 0) { + break; + } + + /* Quite approximate but should be useful for little and big endian. */ +#if defined(DUK_USE_INTEGER_BE) + ch = fptr[i]; +#else + ch = fptr[fptr_size - 1 - i]; +#endif + p += DUK_SNPRINTF((char *) p, (duk_size_t) left, "%02lx", (unsigned long) ch); + } +} + +#endif /* DUK_USE_DEBUG */ + +/* automatic undefs */ +#undef DUK__ALLOWED_STANDARD_SPECIFIERS +#undef DUK__COMMA +#undef DUK__DEEP_DEPTH_LIMIT +#undef DUK__LOOP_STACK_DEPTH +#undef DUK__MAX_FORMAT_TAG_LENGTH +#line 1 "duk_debugger.c" +/* + * Duktape debugger + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + +/* + * Assert helpers + */ + +#if defined(DUK_USE_ASSERTIONS) +#define DUK__DBG_TPORT_ENTER() do { \ + DUK_ASSERT(heap->dbg_calling_transport == 0); \ + heap->dbg_calling_transport = 1; \ + } while (0) +#define DUK__DBG_TPORT_EXIT() do { \ + DUK_ASSERT(heap->dbg_calling_transport == 1); \ + heap->dbg_calling_transport = 0; \ + } while (0) +#else +#define DUK__DBG_TPORT_ENTER() do {} while (0) +#define DUK__DBG_TPORT_EXIT() do {} while (0) +#endif + +/* + * Helper structs + */ + +typedef union { + void *p; + duk_uint_t b[1]; + /* Use b[] to access the size of the union, which is strictly not + * correct. Can't use fixed size unless there's feature detection + * for pointer byte size. + */ +} duk__ptr_union; + +/* + * Detach handling + */ + +#define DUK__SET_CONN_BROKEN(thr,reason) do { \ + /* For now shared handler is fine. */ \ + duk__debug_do_detach1((thr)->heap, (reason)); \ + } while (0) + +DUK_LOCAL void duk__debug_do_detach1(duk_heap *heap, duk_int_t reason) { + /* Can be called multiple times with no harm. Mark the transport + * bad (dbg_read_cb == NULL) and clear state except for the detached + * callback and the udata field. The detached callback is delayed + * to the message loop so that it can be called between messages; + * this avoids corner cases related to immediate debugger reattach + * inside the detached callback. + */ + + if (heap->dbg_detaching) { + DUK_D(DUK_DPRINT("debugger already detaching, ignore detach1")); + return; + } + + DUK_D(DUK_DPRINT("debugger transport detaching, marking transport broken")); + + heap->dbg_detaching = 1; /* prevent multiple in-progress detaches */ + + if (heap->dbg_write_cb != NULL) { + duk_hthread *thr; + + thr = heap->heap_thread; + DUK_ASSERT(thr != NULL); + + duk_debug_write_notify(thr, DUK_DBG_CMD_DETACHING); + duk_debug_write_int(thr, reason); + duk_debug_write_eom(thr); + } + + heap->dbg_read_cb = NULL; + heap->dbg_write_cb = NULL; + heap->dbg_peek_cb = NULL; + heap->dbg_read_flush_cb = NULL; + heap->dbg_write_flush_cb = NULL; + heap->dbg_request_cb = NULL; + /* heap->dbg_detached_cb: keep */ + /* heap->dbg_udata: keep */ + /* heap->dbg_processing: keep on purpose to avoid debugger re-entry in detaching state */ + heap->dbg_state_dirty = 0; + heap->dbg_force_restart = 0; + heap->dbg_pause_flags = 0; + heap->dbg_pause_act = NULL; + heap->dbg_pause_startline = 0; + heap->dbg_have_next_byte = 0; + duk_debug_clear_paused(heap); /* XXX: some overlap with field inits above */ + heap->dbg_state_dirty = 0; /* XXX: clear_paused sets dirty; rework? */ + + /* Ensure there are no stale active breakpoint pointers. + * Breakpoint list is currently kept - we could empty it + * here but we'd need to handle refcounts correctly, and + * we'd need a 'thr' reference for that. + * + * XXX: clear breakpoint on either attach or detach? + */ + heap->dbg_breakpoints_active[0] = (duk_breakpoint *) NULL; +} + +DUK_LOCAL void duk__debug_do_detach2(duk_heap *heap) { + duk_debug_detached_function detached_cb; + void *detached_udata; + duk_hthread *thr; + + thr = heap->heap_thread; + if (thr == NULL) { + DUK_ASSERT(heap->dbg_detached_cb == NULL); + return; + } + + /* Safe to call multiple times. */ + + detached_cb = heap->dbg_detached_cb; + detached_udata = heap->dbg_udata; + heap->dbg_detached_cb = NULL; + heap->dbg_udata = NULL; + + if (detached_cb) { + /* Careful here: state must be wiped before the call + * so that we can cleanly handle a re-attach from + * inside the callback. + */ + DUK_D(DUK_DPRINT("detached during message loop, delayed call to detached_cb")); + detached_cb(thr, detached_udata); + } + + heap->dbg_detaching = 0; +} + +DUK_INTERNAL void duk_debug_do_detach(duk_heap *heap) { + duk__debug_do_detach1(heap, 0); + duk__debug_do_detach2(heap); +} + +/* Called on a read/write error: NULL all callbacks except the detached + * callback so that we never accidentally call them after a read/write + * error has been indicated. This is especially important for the transport + * I/O callbacks to fulfill guaranteed callback semantics. + */ +DUK_LOCAL void duk__debug_null_most_callbacks(duk_hthread *thr) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + + heap = thr->heap; + DUK_D(DUK_DPRINT("transport read/write error, NULL all callbacks expected detached")); + heap->dbg_read_cb = NULL; + heap->dbg_write_cb = NULL; /* this is especially critical to avoid another write call in detach1() */ + heap->dbg_peek_cb = NULL; + heap->dbg_read_flush_cb = NULL; + heap->dbg_write_flush_cb = NULL; + heap->dbg_request_cb = NULL; + /* keep heap->dbg_detached_cb */ +} + +/* + * Pause handling + */ + +DUK_LOCAL void duk__debug_set_pause_state(duk_hthread *thr, duk_heap *heap, duk_small_uint_t pause_flags) { + duk_uint_fast32_t line; + + line = duk_debug_curr_line(thr); + if (line == 0) { + /* No line info for current function. */ + duk_small_uint_t updated_flags; + + updated_flags = pause_flags & ~(DUK_PAUSE_FLAG_LINE_CHANGE); + DUK_D(DUK_DPRINT("no line info for current activation, disable line-based pause flags: 0x%08lx -> 0x%08lx", + (long) pause_flags, (long) updated_flags)); + pause_flags = updated_flags; + } + + heap->dbg_pause_flags = pause_flags; + heap->dbg_pause_act = thr->callstack_curr; + heap->dbg_pause_startline = (duk_uint32_t) line; + heap->dbg_state_dirty = 1; + + DUK_D(DUK_DPRINT("set state for automatic pause triggers, flags=0x%08lx, act=%p, startline=%ld", + (long) heap->dbg_pause_flags, (void *) heap->dbg_pause_act, + (long) heap->dbg_pause_startline)); +} + +/* + * Debug connection peek and flush primitives + */ + +DUK_INTERNAL duk_bool_t duk_debug_read_peek(duk_hthread *thr) { + duk_heap *heap; + duk_bool_t ret; + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + if (heap->dbg_read_cb == NULL) { + DUK_D(DUK_DPRINT("attempt to peek in detached state, return zero (= no data)")); + return 0; + } + if (heap->dbg_peek_cb == NULL) { + DUK_DD(DUK_DDPRINT("no peek callback, return zero (= no data)")); + return 0; + } + + DUK__DBG_TPORT_ENTER(); + ret = (duk_bool_t) (heap->dbg_peek_cb(heap->dbg_udata) > 0); + DUK__DBG_TPORT_EXIT(); + return ret; +} + +DUK_INTERNAL void duk_debug_read_flush(duk_hthread *thr) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + if (heap->dbg_read_cb == NULL) { + DUK_D(DUK_DPRINT("attempt to read flush in detached state, ignore")); + return; + } + if (heap->dbg_read_flush_cb == NULL) { + DUK_DD(DUK_DDPRINT("no read flush callback, ignore")); + return; + } + + DUK__DBG_TPORT_ENTER(); + heap->dbg_read_flush_cb(heap->dbg_udata); + DUK__DBG_TPORT_EXIT(); +} + +DUK_INTERNAL void duk_debug_write_flush(duk_hthread *thr) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + if (heap->dbg_read_cb == NULL) { + DUK_D(DUK_DPRINT("attempt to write flush in detached state, ignore")); + return; + } + if (heap->dbg_write_flush_cb == NULL) { + DUK_DD(DUK_DDPRINT("no write flush callback, ignore")); + return; + } + + DUK__DBG_TPORT_ENTER(); + heap->dbg_write_flush_cb(heap->dbg_udata); + DUK__DBG_TPORT_EXIT(); +} + +/* + * Debug connection skip primitives + */ + +/* Skip fully. */ +DUK_INTERNAL void duk_debug_skip_bytes(duk_hthread *thr, duk_size_t length) { + duk_uint8_t dummy[64]; + duk_size_t now; + + DUK_ASSERT(thr != NULL); + + while (length > 0) { + now = (length > sizeof(dummy) ? sizeof(dummy) : length); + duk_debug_read_bytes(thr, dummy, now); + length -= now; + } +} + +DUK_INTERNAL void duk_debug_skip_byte(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + + (void) duk_debug_read_byte(thr); +} + +/* + * Debug connection read primitives + */ + +/* Peek ahead in the stream one byte. */ +DUK_INTERNAL uint8_t duk_debug_peek_byte(duk_hthread *thr) { + /* It is important not to call this if the last byte read was an EOM. + * Reading ahead in this scenario would cause unnecessary blocking if + * another message is not available. + */ + + duk_uint8_t x; + + x = duk_debug_read_byte(thr); + thr->heap->dbg_have_next_byte = 1; + thr->heap->dbg_next_byte = x; + return x; +} + +/* Read fully. */ +DUK_INTERNAL void duk_debug_read_bytes(duk_hthread *thr, duk_uint8_t *data, duk_size_t length) { + duk_heap *heap; + duk_uint8_t *p; + duk_size_t left; + duk_size_t got; + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + DUK_ASSERT(data != NULL); + + if (heap->dbg_read_cb == NULL) { + DUK_D(DUK_DPRINT("attempt to read %ld bytes in detached state, return zero data", (long) length)); + goto fail; + } + + /* NOTE: length may be zero */ + p = data; + if (length >= 1 && heap->dbg_have_next_byte) { + heap->dbg_have_next_byte = 0; + *p++ = heap->dbg_next_byte; + } + for (;;) { + left = (duk_size_t) ((data + length) - p); + if (left == 0) { + break; + } + DUK_ASSERT(heap->dbg_read_cb != NULL); + DUK_ASSERT(left >= 1); +#if defined(DUK_USE_DEBUGGER_TRANSPORT_TORTURE) + left = 1; +#endif + DUK__DBG_TPORT_ENTER(); + got = heap->dbg_read_cb(heap->dbg_udata, (char *) p, left); + DUK__DBG_TPORT_EXIT(); + + if (got == 0 || got > left) { + DUK_D(DUK_DPRINT("connection error during read, return zero data")); + duk__debug_null_most_callbacks(thr); /* avoid calling write callback in detach1() */ + DUK__SET_CONN_BROKEN(thr, 1); + goto fail; + } + p += got; + } + return; + + fail: + duk_memzero((void *) data, (size_t) length); +} + +DUK_INTERNAL duk_uint8_t duk_debug_read_byte(duk_hthread *thr) { + duk_uint8_t x; + + x = 0; /* just in case callback is broken and won't write 'x' */ + duk_debug_read_bytes(thr, &x, 1); + return x; +} + +DUK_LOCAL duk_uint32_t duk__debug_read_uint32_raw(duk_hthread *thr) { + duk_uint8_t buf[4]; + + DUK_ASSERT(thr != NULL); + + duk_debug_read_bytes(thr, buf, 4); + return ((duk_uint32_t) buf[0] << 24) | + ((duk_uint32_t) buf[1] << 16) | + ((duk_uint32_t) buf[2] << 8) | + (duk_uint32_t) buf[3]; +} + +DUK_LOCAL duk_int32_t duk__debug_read_int32_raw(duk_hthread *thr) { + return (duk_int32_t) duk__debug_read_uint32_raw(thr); +} + +DUK_LOCAL duk_uint16_t duk__debug_read_uint16_raw(duk_hthread *thr) { + duk_uint8_t buf[2]; + + DUK_ASSERT(thr != NULL); + + duk_debug_read_bytes(thr, buf, 2); + return ((duk_uint16_t) buf[0] << 8) | + (duk_uint16_t) buf[1]; +} + +DUK_INTERNAL duk_int32_t duk_debug_read_int(duk_hthread *thr) { + duk_small_uint_t x; + duk_small_uint_t t; + + DUK_ASSERT(thr != NULL); + + x = duk_debug_read_byte(thr); + if (x >= 0xc0) { + t = duk_debug_read_byte(thr); + return (duk_int32_t) (((x - 0xc0) << 8) + t); + } else if (x >= 0x80) { + return (duk_int32_t) (x - 0x80); + } else if (x == DUK_DBG_IB_INT4) { + return (duk_int32_t) duk__debug_read_uint32_raw(thr); + } + + DUK_D(DUK_DPRINT("debug connection error: failed to decode int")); + DUK__SET_CONN_BROKEN(thr, 1); + return 0; +} + +DUK_LOCAL duk_hstring *duk__debug_read_hstring_raw(duk_hthread *thr, duk_uint32_t len) { + duk_uint8_t buf[31]; + duk_uint8_t *p; + + if (len <= sizeof(buf)) { + duk_debug_read_bytes(thr, buf, (duk_size_t) len); + duk_push_lstring(thr, (const char *) buf, (duk_size_t) len); + } else { + p = (duk_uint8_t *) duk_push_fixed_buffer(thr, (duk_size_t) len); /* zero for paranoia */ + DUK_ASSERT(p != NULL); + duk_debug_read_bytes(thr, p, (duk_size_t) len); + (void) duk_buffer_to_string(thr, -1); /* Safety relies on debug client, which is OK. */ + } + + return duk_require_hstring(thr, -1); +} + +DUK_INTERNAL duk_hstring *duk_debug_read_hstring(duk_hthread *thr) { + duk_small_uint_t x; + duk_uint32_t len; + + DUK_ASSERT(thr != NULL); + + x = duk_debug_read_byte(thr); + if (x >= 0x60 && x <= 0x7f) { + /* For short strings, use a fixed temp buffer. */ + len = (duk_uint32_t) (x - 0x60); + } else if (x == DUK_DBG_IB_STR2) { + len = (duk_uint32_t) duk__debug_read_uint16_raw(thr); + } else if (x == DUK_DBG_IB_STR4) { + len = (duk_uint32_t) duk__debug_read_uint32_raw(thr); + } else { + goto fail; + } + + return duk__debug_read_hstring_raw(thr, len); + + fail: + DUK_D(DUK_DPRINT("debug connection error: failed to decode int")); + DUK__SET_CONN_BROKEN(thr, 1); + duk_push_hstring_empty(thr); /* always push some string */ + return duk_require_hstring(thr, -1); +} + +DUK_LOCAL duk_hbuffer *duk__debug_read_hbuffer_raw(duk_hthread *thr, duk_uint32_t len) { + duk_uint8_t *p; + + p = (duk_uint8_t *) duk_push_fixed_buffer(thr, (duk_size_t) len); /* zero for paranoia */ + DUK_ASSERT(p != NULL); + duk_debug_read_bytes(thr, p, (duk_size_t) len); + + return duk_require_hbuffer(thr, -1); +} + +DUK_LOCAL void *duk__debug_read_pointer_raw(duk_hthread *thr) { + duk_small_uint_t x; + duk__ptr_union pu; + + DUK_ASSERT(thr != NULL); + + x = duk_debug_read_byte(thr); + if (x != sizeof(pu)) { + goto fail; + } + duk_debug_read_bytes(thr, (duk_uint8_t *) &pu.p, sizeof(pu)); +#if defined(DUK_USE_INTEGER_LE) + duk_byteswap_bytes((duk_uint8_t *) pu.b, sizeof(pu)); +#endif + return (void *) pu.p; + + fail: + DUK_D(DUK_DPRINT("debug connection error: failed to decode pointer")); + DUK__SET_CONN_BROKEN(thr, 1); + return (void *) NULL; +} + +DUK_LOCAL duk_double_t duk__debug_read_double_raw(duk_hthread *thr) { + duk_double_union du; + + DUK_ASSERT(sizeof(du.uc) == 8); + duk_debug_read_bytes(thr, (duk_uint8_t *) du.uc, sizeof(du.uc)); + DUK_DBLUNION_DOUBLE_NTOH(&du); + return du.d; +} + +#if 0 +DUK_INTERNAL duk_heaphdr *duk_debug_read_heapptr(duk_hthread *thr) { + duk_small_uint_t x; + + DUK_ASSERT(thr != NULL); + + x = duk_debug_read_byte(thr); + if (x != DUK_DBG_IB_HEAPPTR) { + goto fail; + } + + return (duk_heaphdr *) duk__debug_read_pointer_raw(thr); + + fail: + DUK_D(DUK_DPRINT("debug connection error: failed to decode heapptr")); + DUK__SET_CONN_BROKEN(thr, 1); + return NULL; +} +#endif + +DUK_INTERNAL duk_heaphdr *duk_debug_read_any_ptr(duk_hthread *thr) { + duk_small_uint_t x; + + DUK_ASSERT(thr != NULL); + + x = duk_debug_read_byte(thr); + switch (x) { + case DUK_DBG_IB_OBJECT: + case DUK_DBG_IB_POINTER: + case DUK_DBG_IB_HEAPPTR: + /* Accept any pointer-like value; for 'object' dvalue, read + * and ignore the class number. + */ + if (x == DUK_DBG_IB_OBJECT) { + duk_debug_skip_byte(thr); + } + break; + default: + goto fail; + } + + return (duk_heaphdr *) duk__debug_read_pointer_raw(thr); + + fail: + DUK_D(DUK_DPRINT("debug connection error: failed to decode any pointer (object, pointer, heapptr)")); + DUK__SET_CONN_BROKEN(thr, 1); + return NULL; +} + +DUK_INTERNAL duk_tval *duk_debug_read_tval(duk_hthread *thr) { + duk_uint8_t x; + duk_uint_t t; + duk_uint32_t len; + + DUK_ASSERT(thr != NULL); + + x = duk_debug_read_byte(thr); + + if (x >= 0xc0) { + t = (duk_uint_t) (x - 0xc0); + t = (t << 8) + duk_debug_read_byte(thr); + duk_push_uint(thr, (duk_uint_t) t); + goto return_ptr; + } + if (x >= 0x80) { + duk_push_uint(thr, (duk_uint_t) (x - 0x80)); + goto return_ptr; + } + if (x >= 0x60) { + len = (duk_uint32_t) (x - 0x60); + duk__debug_read_hstring_raw(thr, len); + goto return_ptr; + } + + switch (x) { + case DUK_DBG_IB_INT4: { + duk_int32_t i = duk__debug_read_int32_raw(thr); + duk_push_i32(thr, i); + break; + } + case DUK_DBG_IB_STR4: { + len = duk__debug_read_uint32_raw(thr); + duk__debug_read_hstring_raw(thr, len); + break; + } + case DUK_DBG_IB_STR2: { + len = duk__debug_read_uint16_raw(thr); + duk__debug_read_hstring_raw(thr, len); + break; + } + case DUK_DBG_IB_BUF4: { + len = duk__debug_read_uint32_raw(thr); + duk__debug_read_hbuffer_raw(thr, len); + break; + } + case DUK_DBG_IB_BUF2: { + len = duk__debug_read_uint16_raw(thr); + duk__debug_read_hbuffer_raw(thr, len); + break; + } + case DUK_DBG_IB_UNDEFINED: { + duk_push_undefined(thr); + break; + } + case DUK_DBG_IB_NULL: { + duk_push_null(thr); + break; + } + case DUK_DBG_IB_TRUE: { + duk_push_true(thr); + break; + } + case DUK_DBG_IB_FALSE: { + duk_push_false(thr); + break; + } + case DUK_DBG_IB_NUMBER: { + duk_double_t d; + d = duk__debug_read_double_raw(thr); + duk_push_number(thr, d); + break; + } + case DUK_DBG_IB_OBJECT: { + duk_heaphdr *h; + duk_debug_skip_byte(thr); + h = (duk_heaphdr *) duk__debug_read_pointer_raw(thr); + duk_push_heapptr(thr, (void *) h); + break; + } + case DUK_DBG_IB_POINTER: { + void *ptr; + ptr = duk__debug_read_pointer_raw(thr); + duk_push_pointer(thr, ptr); + break; + } + case DUK_DBG_IB_LIGHTFUNC: { + /* XXX: Not needed for now, so not implemented. Note that + * function pointers may have different size/layout than + * a void pointer. + */ + DUK_D(DUK_DPRINT("reading lightfunc values unimplemented")); + goto fail; + } + case DUK_DBG_IB_HEAPPTR: { + duk_heaphdr *h; + h = (duk_heaphdr *) duk__debug_read_pointer_raw(thr); + duk_push_heapptr(thr, (void *) h); + break; + } + case DUK_DBG_IB_UNUSED: /* unused: not accepted in inbound messages */ + default: + goto fail; + } + + return_ptr: + return DUK_GET_TVAL_NEGIDX(thr, -1); + + fail: + DUK_D(DUK_DPRINT("debug connection error: failed to decode tval")); + DUK__SET_CONN_BROKEN(thr, 1); + return NULL; +} + +/* + * Debug connection write primitives + */ + +/* Write fully. */ +DUK_INTERNAL void duk_debug_write_bytes(duk_hthread *thr, const duk_uint8_t *data, duk_size_t length) { + duk_heap *heap; + const duk_uint8_t *p; + duk_size_t left; + duk_size_t got; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(length == 0 || data != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + if (heap->dbg_write_cb == NULL) { + DUK_D(DUK_DPRINT("attempt to write %ld bytes in detached state, ignore", (long) length)); + return; + } + if (length == 0) { + /* Avoid doing an actual write callback with length == 0, + * because that's reserved for a write flush. + */ + return; + } + DUK_ASSERT(data != NULL); + + p = data; + for (;;) { + left = (duk_size_t) ((data + length) - p); + if (left == 0) { + break; + } + DUK_ASSERT(heap->dbg_write_cb != NULL); + DUK_ASSERT(left >= 1); +#if defined(DUK_USE_DEBUGGER_TRANSPORT_TORTURE) + left = 1; +#endif + DUK__DBG_TPORT_ENTER(); + got = heap->dbg_write_cb(heap->dbg_udata, (const char *) p, left); + DUK__DBG_TPORT_EXIT(); + + if (got == 0 || got > left) { + duk__debug_null_most_callbacks(thr); /* avoid calling write callback in detach1() */ + DUK_D(DUK_DPRINT("connection error during write")); + DUK__SET_CONN_BROKEN(thr, 1); + return; + } + p += got; + } +} + +DUK_INTERNAL void duk_debug_write_byte(duk_hthread *thr, duk_uint8_t x) { + duk_debug_write_bytes(thr, (const duk_uint8_t *) &x, 1); +} + +DUK_INTERNAL void duk_debug_write_unused(duk_hthread *thr) { + duk_debug_write_byte(thr, DUK_DBG_IB_UNUSED); +} + +DUK_INTERNAL void duk_debug_write_undefined(duk_hthread *thr) { + duk_debug_write_byte(thr, DUK_DBG_IB_UNDEFINED); +} + +#if defined(DUK_USE_DEBUGGER_INSPECT) +DUK_INTERNAL void duk_debug_write_null(duk_hthread *thr) { + duk_debug_write_byte(thr, DUK_DBG_IB_NULL); +} +#endif + +DUK_INTERNAL void duk_debug_write_boolean(duk_hthread *thr, duk_uint_t val) { + duk_debug_write_byte(thr, val ? DUK_DBG_IB_TRUE : DUK_DBG_IB_FALSE); +} + +/* Write signed 32-bit integer. */ +DUK_INTERNAL void duk_debug_write_int(duk_hthread *thr, duk_int32_t x) { + duk_uint8_t buf[5]; + duk_size_t len; + + DUK_ASSERT(thr != NULL); + + if (x >= 0 && x <= 0x3fL) { + buf[0] = (duk_uint8_t) (0x80 + x); + len = 1; + } else if (x >= 0 && x <= 0x3fffL) { + buf[0] = (duk_uint8_t) (0xc0 + (x >> 8)); + buf[1] = (duk_uint8_t) (x & 0xff); + len = 2; + } else { + /* Signed integers always map to 4 bytes now. */ + buf[0] = (duk_uint8_t) DUK_DBG_IB_INT4; + buf[1] = (duk_uint8_t) ((x >> 24) & 0xff); + buf[2] = (duk_uint8_t) ((x >> 16) & 0xff); + buf[3] = (duk_uint8_t) ((x >> 8) & 0xff); + buf[4] = (duk_uint8_t) (x & 0xff); + len = 5; + } + duk_debug_write_bytes(thr, buf, len); +} + +/* Write unsigned 32-bit integer. */ +DUK_INTERNAL void duk_debug_write_uint(duk_hthread *thr, duk_uint32_t x) { + /* The debugger protocol doesn't support a plain integer encoding for + * the full 32-bit unsigned range (only 32-bit signed). For now, + * unsigned 32-bit values simply written as signed ones. This is not + * a concrete issue except for 32-bit heaphdr fields. Proper solutions + * would be to (a) write such integers as IEEE doubles or (b) add an + * unsigned 32-bit dvalue. + */ + if (x >= 0x80000000UL) { + DUK_D(DUK_DPRINT("writing unsigned integer 0x%08lx as signed integer", + (long) x)); + } + duk_debug_write_int(thr, (duk_int32_t) x); +} + +DUK_INTERNAL void duk_debug_write_strbuf(duk_hthread *thr, const char *data, duk_size_t length, duk_uint8_t marker_base) { + duk_uint8_t buf[5]; + duk_size_t buflen; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(length == 0 || data != NULL); + + if (length <= 0x1fUL && marker_base == DUK_DBG_IB_STR4) { + /* For strings, special form for short lengths. */ + buf[0] = (duk_uint8_t) (0x60 + length); + buflen = 1; + } else if (length <= 0xffffUL) { + buf[0] = (duk_uint8_t) (marker_base + 1); + buf[1] = (duk_uint8_t) (length >> 8); + buf[2] = (duk_uint8_t) (length & 0xff); + buflen = 3; + } else { + buf[0] = (duk_uint8_t) marker_base; + buf[1] = (duk_uint8_t) (length >> 24); + buf[2] = (duk_uint8_t) ((length >> 16) & 0xff); + buf[3] = (duk_uint8_t) ((length >> 8) & 0xff); + buf[4] = (duk_uint8_t) (length & 0xff); + buflen = 5; + } + + duk_debug_write_bytes(thr, (const duk_uint8_t *) buf, buflen); + duk_debug_write_bytes(thr, (const duk_uint8_t *) data, length); +} + +DUK_INTERNAL void duk_debug_write_string(duk_hthread *thr, const char *data, duk_size_t length) { + duk_debug_write_strbuf(thr, data, length, DUK_DBG_IB_STR4); +} + +DUK_INTERNAL void duk_debug_write_cstring(duk_hthread *thr, const char *data) { + DUK_ASSERT(thr != NULL); + + duk_debug_write_string(thr, + data, + data ? DUK_STRLEN(data) : 0); +} + +DUK_INTERNAL void duk_debug_write_hstring(duk_hthread *thr, duk_hstring *h) { + DUK_ASSERT(thr != NULL); + + /* XXX: differentiate null pointer from empty string? */ + duk_debug_write_string(thr, + (h != NULL ? (const char *) DUK_HSTRING_GET_DATA(h) : NULL), + (h != NULL ? (duk_size_t) DUK_HSTRING_GET_BYTELEN(h) : 0)); +} + +DUK_LOCAL void duk__debug_write_hstring_safe_top(duk_hthread *thr) { + duk_debug_write_hstring(thr, duk_safe_to_hstring(thr, -1)); +} + +DUK_INTERNAL void duk_debug_write_buffer(duk_hthread *thr, const char *data, duk_size_t length) { + duk_debug_write_strbuf(thr, data, length, DUK_DBG_IB_BUF4); +} + +DUK_INTERNAL void duk_debug_write_hbuffer(duk_hthread *thr, duk_hbuffer *h) { + DUK_ASSERT(thr != NULL); + + duk_debug_write_buffer(thr, + (h != NULL ? (const char *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h) : NULL), + (h != NULL ? (duk_size_t) DUK_HBUFFER_GET_SIZE(h) : 0)); +} + +DUK_LOCAL void duk__debug_write_pointer_raw(duk_hthread *thr, void *ptr, duk_uint8_t ibyte) { + duk_uint8_t buf[2]; + duk__ptr_union pu; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(sizeof(ptr) >= 1 && sizeof(ptr) <= 16); + /* ptr may be NULL */ + + buf[0] = ibyte; + buf[1] = sizeof(pu); + duk_debug_write_bytes(thr, buf, 2); + pu.p = (void *) ptr; +#if defined(DUK_USE_INTEGER_LE) + duk_byteswap_bytes((duk_uint8_t *) pu.b, sizeof(pu)); +#endif + duk_debug_write_bytes(thr, (const duk_uint8_t *) &pu.p, (duk_size_t) sizeof(pu)); +} + +DUK_INTERNAL void duk_debug_write_pointer(duk_hthread *thr, void *ptr) { + duk__debug_write_pointer_raw(thr, ptr, DUK_DBG_IB_POINTER); +} + +#if defined(DUK_USE_DEBUGGER_DUMPHEAP) || defined(DUK_USE_DEBUGGER_INSPECT) +DUK_INTERNAL void duk_debug_write_heapptr(duk_hthread *thr, duk_heaphdr *h) { + duk__debug_write_pointer_raw(thr, (void *) h, DUK_DBG_IB_HEAPPTR); +} +#endif /* DUK_USE_DEBUGGER_DUMPHEAP || DUK_USE_DEBUGGER_INSPECT */ + +DUK_INTERNAL void duk_debug_write_hobject(duk_hthread *thr, duk_hobject *obj) { + duk_uint8_t buf[3]; + duk__ptr_union pu; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(sizeof(obj) >= 1 && sizeof(obj) <= 16); + DUK_ASSERT(obj != NULL); + + buf[0] = DUK_DBG_IB_OBJECT; + buf[1] = (duk_uint8_t) DUK_HOBJECT_GET_CLASS_NUMBER(obj); + buf[2] = sizeof(pu); + duk_debug_write_bytes(thr, buf, 3); + pu.p = (void *) obj; +#if defined(DUK_USE_INTEGER_LE) + duk_byteswap_bytes((duk_uint8_t *) pu.b, sizeof(pu)); +#endif + duk_debug_write_bytes(thr, (const duk_uint8_t *) &pu.p, (duk_size_t) sizeof(pu)); +} + +DUK_INTERNAL void duk_debug_write_tval(duk_hthread *thr, duk_tval *tv) { + duk_c_function lf_func; + duk_small_uint_t lf_flags; + duk_uint8_t buf[4]; + duk_double_union du1; + duk_double_union du2; + duk_int32_t i32; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: + duk_debug_write_byte(thr, DUK_DBG_IB_UNDEFINED); + break; + case DUK_TAG_UNUSED: + duk_debug_write_byte(thr, DUK_DBG_IB_UNUSED); + break; + case DUK_TAG_NULL: + duk_debug_write_byte(thr, DUK_DBG_IB_NULL); + break; + case DUK_TAG_BOOLEAN: + DUK_ASSERT(DUK_TVAL_GET_BOOLEAN(tv) == 0 || + DUK_TVAL_GET_BOOLEAN(tv) == 1); + duk_debug_write_boolean(thr, DUK_TVAL_GET_BOOLEAN(tv)); + break; + case DUK_TAG_POINTER: + duk_debug_write_pointer(thr, (void *) DUK_TVAL_GET_POINTER(tv)); + break; + case DUK_TAG_LIGHTFUNC: + DUK_TVAL_GET_LIGHTFUNC(tv, lf_func, lf_flags); + buf[0] = DUK_DBG_IB_LIGHTFUNC; + buf[1] = (duk_uint8_t) (lf_flags >> 8); + buf[2] = (duk_uint8_t) (lf_flags & 0xff); + buf[3] = sizeof(lf_func); + duk_debug_write_bytes(thr, buf, 4); + duk_debug_write_bytes(thr, (const duk_uint8_t *) &lf_func, sizeof(lf_func)); + break; + case DUK_TAG_STRING: + duk_debug_write_hstring(thr, DUK_TVAL_GET_STRING(tv)); + break; + case DUK_TAG_OBJECT: + duk_debug_write_hobject(thr, DUK_TVAL_GET_OBJECT(tv)); + break; + case DUK_TAG_BUFFER: + duk_debug_write_hbuffer(thr, DUK_TVAL_GET_BUFFER(tv)); + break; +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: + /* Numbers are normalized to big (network) endian. We can + * (but are not required) to use integer dvalues when there's + * no loss of precision. + * + * XXX: share check with other code; this check is slow but + * reliable and doesn't require careful exponent/mantissa + * mask tricks as in the fastint downgrade code. + */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + du1.d = DUK_TVAL_GET_NUMBER(tv); + i32 = (duk_int32_t) du1.d; + du2.d = (duk_double_t) i32; + + DUK_DD(DUK_DDPRINT("i32=%ld du1=%02x%02x%02x%02x%02x%02x%02x%02x " + "du2=%02x%02x%02x%02x%02x%02x%02x%02x", + (long) i32, + (unsigned int) du1.uc[0], (unsigned int) du1.uc[1], + (unsigned int) du1.uc[2], (unsigned int) du1.uc[3], + (unsigned int) du1.uc[4], (unsigned int) du1.uc[5], + (unsigned int) du1.uc[6], (unsigned int) du1.uc[7], + (unsigned int) du2.uc[0], (unsigned int) du2.uc[1], + (unsigned int) du2.uc[2], (unsigned int) du2.uc[3], + (unsigned int) du2.uc[4], (unsigned int) du2.uc[5], + (unsigned int) du2.uc[6], (unsigned int) du2.uc[7])); + + if (duk_memcmp((const void *) du1.uc, (const void *) du2.uc, sizeof(du1.uc)) == 0) { + duk_debug_write_int(thr, i32); + } else { + DUK_DBLUNION_DOUBLE_HTON(&du1); + duk_debug_write_byte(thr, DUK_DBG_IB_NUMBER); + duk_debug_write_bytes(thr, (const duk_uint8_t *) du1.uc, sizeof(du1.uc)); + } + } +} + +#if defined(DUK_USE_DEBUGGER_DUMPHEAP) +/* Variant for writing duk_tvals so that any heap allocated values are + * written out as tagged heap pointers. + */ +DUK_LOCAL void duk__debug_write_tval_heapptr(duk_hthread *thr, duk_tval *tv) { + if (DUK_TVAL_IS_HEAP_ALLOCATED(tv)) { + duk_heaphdr *h = DUK_TVAL_GET_HEAPHDR(tv); + duk_debug_write_heapptr(thr, h); + } else { + duk_debug_write_tval(thr, tv); + } +} +#endif /* DUK_USE_DEBUGGER_DUMPHEAP */ + +/* + * Debug connection message write helpers + */ + +#if 0 /* unused */ +DUK_INTERNAL void duk_debug_write_request(duk_hthread *thr, duk_small_uint_t command) { + duk_debug_write_byte(thr, DUK_DBG_IB_REQUEST); + duk_debug_write_int(thr, command); +} +#endif + +DUK_INTERNAL void duk_debug_write_reply(duk_hthread *thr) { + duk_debug_write_byte(thr, DUK_DBG_IB_REPLY); +} + +DUK_INTERNAL void duk_debug_write_error_eom(duk_hthread *thr, duk_small_uint_t err_code, const char *msg) { + /* Allow NULL 'msg' */ + duk_debug_write_byte(thr, DUK_DBG_IB_ERROR); + duk_debug_write_int(thr, (duk_int32_t) err_code); + duk_debug_write_cstring(thr, msg); + duk_debug_write_eom(thr); +} + +DUK_INTERNAL void duk_debug_write_notify(duk_hthread *thr, duk_small_uint_t command) { + duk_debug_write_byte(thr, DUK_DBG_IB_NOTIFY); + duk_debug_write_int(thr, (duk_int32_t) command); +} + +DUK_INTERNAL void duk_debug_write_eom(duk_hthread *thr) { + duk_debug_write_byte(thr, DUK_DBG_IB_EOM); + + /* As an initial implementation, write flush after every EOM (and the + * version identifier). A better implementation would flush only when + * Duktape is finished processing messages so that a flush only happens + * after all outbound messages are finished on that occasion. + */ + duk_debug_write_flush(thr); +} + +/* + * Status message and helpers + */ + +DUK_INTERNAL duk_uint_fast32_t duk_debug_curr_line(duk_hthread *thr) { + duk_activation *act; + duk_uint_fast32_t line; + duk_uint_fast32_t pc; + + act = thr->callstack_curr; + if (act == NULL) { + return 0; + } + + /* We're conceptually between two opcodes; act->pc indicates the next + * instruction to be executed. This is usually the correct pc/line to + * indicate in Status. (For the 'debugger' statement this now reports + * the pc/line after the debugger statement because the debugger opcode + * has already been executed.) + */ + + pc = duk_hthread_get_act_curr_pc(thr, act); + + /* XXX: this should be optimized to be a raw query and avoid valstack + * operations if possible. + */ + duk_push_tval(thr, &act->tv_func); + line = duk_hobject_pc2line_query(thr, -1, pc); + duk_pop(thr); + return line; +} + +DUK_INTERNAL void duk_debug_send_status(duk_hthread *thr) { + duk_activation *act; + + duk_debug_write_notify(thr, DUK_DBG_CMD_STATUS); + duk_debug_write_int(thr, (DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap) ? 1 : 0)); + + act = thr->callstack_curr; + if (act == NULL) { + duk_debug_write_undefined(thr); + duk_debug_write_undefined(thr); + duk_debug_write_int(thr, 0); + duk_debug_write_int(thr, 0); + } else { + duk_push_tval(thr, &act->tv_func); + duk_get_prop_literal(thr, -1, "fileName"); + duk__debug_write_hstring_safe_top(thr); + duk_get_prop_literal(thr, -2, "name"); + duk__debug_write_hstring_safe_top(thr); + duk_pop_3(thr); + /* Report next pc/line to be executed. */ + duk_debug_write_uint(thr, (duk_uint32_t) duk_debug_curr_line(thr)); + duk_debug_write_uint(thr, (duk_uint32_t) duk_hthread_get_act_curr_pc(thr, act)); + } + + duk_debug_write_eom(thr); +} + +#if defined(DUK_USE_DEBUGGER_THROW_NOTIFY) +DUK_INTERNAL void duk_debug_send_throw(duk_hthread *thr, duk_bool_t fatal) { + /* + * NFY EOM + */ + + duk_activation *act; + duk_uint32_t pc; + + DUK_ASSERT(thr->valstack_top > thr->valstack); /* At least: ... [err] */ + + duk_debug_write_notify(thr, DUK_DBG_CMD_THROW); + duk_debug_write_int(thr, (duk_int32_t) fatal); + + /* Report thrown value to client coerced to string */ + duk_dup_top(thr); + duk__debug_write_hstring_safe_top(thr); + duk_pop(thr); + + if (duk_is_error(thr, -1)) { + /* Error instance, use augmented error data directly */ + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_FILE_NAME); + duk__debug_write_hstring_safe_top(thr); + duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_LINE_NUMBER); + duk_debug_write_uint(thr, duk_get_uint(thr, -1)); + duk_pop_2(thr); + } else { + /* For anything other than an Error instance, we calculate the + * error location directly from the current activation if one + * exists. + */ + act = thr->callstack_curr; + if (act != NULL) { + duk_push_tval(thr, &act->tv_func); + duk_get_prop_literal(thr, -1, "fileName"); + duk__debug_write_hstring_safe_top(thr); + pc = (duk_uint32_t) duk_hthread_get_act_prev_pc(thr, act); + duk_debug_write_uint(thr, (duk_uint32_t) duk_hobject_pc2line_query(thr, -2, pc)); + duk_pop_2(thr); + } else { + /* Can happen if duk_throw() is called on an empty + * callstack. + */ + duk_debug_write_cstring(thr, ""); + duk_debug_write_uint(thr, 0); + } + } + + duk_debug_write_eom(thr); +} +#endif /* DUK_USE_DEBUGGER_THROW_NOTIFY */ + +/* + * Debug message processing + */ + +/* Skip dvalue. */ +DUK_LOCAL duk_bool_t duk__debug_skip_dvalue(duk_hthread *thr) { + duk_uint8_t x; + duk_uint32_t len; + + x = duk_debug_read_byte(thr); + + if (x >= 0xc0) { + duk_debug_skip_byte(thr); + return 0; + } + if (x >= 0x80) { + return 0; + } + if (x >= 0x60) { + duk_debug_skip_bytes(thr, (duk_size_t) (x - 0x60)); + return 0; + } + switch(x) { + case DUK_DBG_IB_EOM: + return 1; /* Return 1: got EOM */ + case DUK_DBG_IB_REQUEST: + case DUK_DBG_IB_REPLY: + case DUK_DBG_IB_ERROR: + case DUK_DBG_IB_NOTIFY: + break; + case DUK_DBG_IB_INT4: + (void) duk__debug_read_uint32_raw(thr); + break; + case DUK_DBG_IB_STR4: + case DUK_DBG_IB_BUF4: + len = duk__debug_read_uint32_raw(thr); + duk_debug_skip_bytes(thr, len); + break; + case DUK_DBG_IB_STR2: + case DUK_DBG_IB_BUF2: + len = duk__debug_read_uint16_raw(thr); + duk_debug_skip_bytes(thr, len); + break; + case DUK_DBG_IB_UNUSED: + case DUK_DBG_IB_UNDEFINED: + case DUK_DBG_IB_NULL: + case DUK_DBG_IB_TRUE: + case DUK_DBG_IB_FALSE: + break; + case DUK_DBG_IB_NUMBER: + duk_debug_skip_bytes(thr, 8); + break; + case DUK_DBG_IB_OBJECT: + duk_debug_skip_byte(thr); + len = duk_debug_read_byte(thr); + duk_debug_skip_bytes(thr, len); + break; + case DUK_DBG_IB_POINTER: + case DUK_DBG_IB_HEAPPTR: + len = duk_debug_read_byte(thr); + duk_debug_skip_bytes(thr, len); + break; + case DUK_DBG_IB_LIGHTFUNC: + duk_debug_skip_bytes(thr, 2); + len = duk_debug_read_byte(thr); + duk_debug_skip_bytes(thr, len); + break; + default: + goto fail; + } + + return 0; + + fail: + DUK__SET_CONN_BROKEN(thr, 1); + return 1; /* Pretend like we got EOM */ +} + +/* Skip dvalues to EOM. */ +DUK_LOCAL void duk__debug_skip_to_eom(duk_hthread *thr) { + for (;;) { + if (duk__debug_skip_dvalue(thr)) { + break; + } + } +} + +/* Read and validate a call stack index. If index is invalid, write out an + * error message and return zero. + */ +DUK_LOCAL duk_int32_t duk__debug_read_validate_csindex(duk_hthread *thr) { + duk_int32_t level; + level = duk_debug_read_int(thr); + if (level >= 0 || -level > (duk_int32_t) thr->callstack_top) { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_NOTFOUND, "invalid callstack index"); + return 0; /* zero indicates failure */ + } + return level; +} + +/* Read a call stack index and lookup the corresponding duk_activation. + * If index is invalid, write out an error message and return NULL. + */ +DUK_LOCAL duk_activation *duk__debug_read_level_get_activation(duk_hthread *thr) { + duk_activation *act; + duk_int32_t level; + + level = duk_debug_read_int(thr); + act = duk_hthread_get_activation_for_level(thr, level); + if (act == NULL) { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_NOTFOUND, "invalid callstack index"); + } + return act; +} + +/* + * Simple commands + */ + +DUK_LOCAL void duk__debug_handle_basic_info(duk_hthread *thr, duk_heap *heap) { + DUK_UNREF(heap); + DUK_D(DUK_DPRINT("debug command Version")); + + duk_debug_write_reply(thr); + duk_debug_write_int(thr, DUK_VERSION); + duk_debug_write_cstring(thr, DUK_GIT_DESCRIBE); + duk_debug_write_cstring(thr, DUK_USE_TARGET_INFO); +#if defined(DUK_USE_DOUBLE_LE) + duk_debug_write_int(thr, 1); +#elif defined(DUK_USE_DOUBLE_ME) + duk_debug_write_int(thr, 2); +#elif defined(DUK_USE_DOUBLE_BE) + duk_debug_write_int(thr, 3); +#else + duk_debug_write_int(thr, 0); +#endif + duk_debug_write_int(thr, (duk_int_t) sizeof(void *)); + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_trigger_status(duk_hthread *thr, duk_heap *heap) { + DUK_UNREF(heap); + DUK_D(DUK_DPRINT("debug command TriggerStatus")); + + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); + heap->dbg_state_dirty = 1; +} + +DUK_LOCAL void duk__debug_handle_pause(duk_hthread *thr, duk_heap *heap) { + DUK_D(DUK_DPRINT("debug command Pause")); + duk_debug_set_paused(heap); + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_resume(duk_hthread *thr, duk_heap *heap) { + duk_small_uint_t pause_flags; + + DUK_D(DUK_DPRINT("debug command Resume")); + + duk_debug_clear_paused(heap); + + pause_flags = 0; +#if 0 /* manual testing */ + pause_flags |= DUK_PAUSE_FLAG_ONE_OPCODE; + pause_flags |= DUK_PAUSE_FLAG_CAUGHT_ERROR; + pause_flags |= DUK_PAUSE_FLAG_UNCAUGHT_ERROR; +#endif +#if defined(DUK_USE_DEBUGGER_PAUSE_UNCAUGHT) + pause_flags |= DUK_PAUSE_FLAG_UNCAUGHT_ERROR; +#endif + + duk__debug_set_pause_state(thr, heap, pause_flags); + + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_step(duk_hthread *thr, duk_heap *heap, duk_int32_t cmd) { + duk_small_uint_t pause_flags; + + DUK_D(DUK_DPRINT("debug command StepInto/StepOver/StepOut: %d", (int) cmd)); + + if (cmd == DUK_DBG_CMD_STEPINTO) { + pause_flags = DUK_PAUSE_FLAG_LINE_CHANGE | + DUK_PAUSE_FLAG_FUNC_ENTRY | + DUK_PAUSE_FLAG_FUNC_EXIT; + } else if (cmd == DUK_DBG_CMD_STEPOVER) { + pause_flags = DUK_PAUSE_FLAG_LINE_CHANGE | + DUK_PAUSE_FLAG_FUNC_EXIT; + } else { + DUK_ASSERT(cmd == DUK_DBG_CMD_STEPOUT); + pause_flags = DUK_PAUSE_FLAG_FUNC_EXIT; + } +#if defined(DUK_USE_DEBUGGER_PAUSE_UNCAUGHT) + pause_flags |= DUK_PAUSE_FLAG_UNCAUGHT_ERROR; +#endif + + /* If current activation doesn't have line information, line-based + * pause flags are automatically disabled. As a result, e.g. + * StepInto will then pause on (native) function entry or exit. + */ + duk_debug_clear_paused(heap); + duk__debug_set_pause_state(thr, heap, pause_flags); + + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_list_break(duk_hthread *thr, duk_heap *heap) { + duk_small_int_t i; + + DUK_D(DUK_DPRINT("debug command ListBreak")); + duk_debug_write_reply(thr); + for (i = 0; i < (duk_small_int_t) heap->dbg_breakpoint_count; i++) { + duk_debug_write_hstring(thr, heap->dbg_breakpoints[i].filename); + duk_debug_write_uint(thr, (duk_uint32_t) heap->dbg_breakpoints[i].line); + } + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_add_break(duk_hthread *thr, duk_heap *heap) { + duk_hstring *filename; + duk_uint32_t linenumber; + duk_small_int_t idx; + + DUK_UNREF(heap); + + filename = duk_debug_read_hstring(thr); + linenumber = (duk_uint32_t) duk_debug_read_int(thr); + DUK_D(DUK_DPRINT("debug command AddBreak: %!O:%ld", (duk_hobject *) filename, (long) linenumber)); + idx = duk_debug_add_breakpoint(thr, filename, linenumber); + if (idx >= 0) { + duk_debug_write_reply(thr); + duk_debug_write_int(thr, (duk_int32_t) idx); + duk_debug_write_eom(thr); + } else { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_TOOMANY, "no space for breakpoint"); + } +} + +DUK_LOCAL void duk__debug_handle_del_break(duk_hthread *thr, duk_heap *heap) { + duk_small_uint_t idx; + + DUK_UNREF(heap); + + DUK_D(DUK_DPRINT("debug command DelBreak")); + idx = (duk_small_uint_t) duk_debug_read_int(thr); + if (duk_debug_remove_breakpoint(thr, idx)) { + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); + } else { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_NOTFOUND, "invalid breakpoint index"); + } +} + +DUK_LOCAL void duk__debug_handle_get_var(duk_hthread *thr, duk_heap *heap) { + duk_activation *act; + duk_hstring *str; + duk_bool_t rc; + + DUK_UNREF(heap); + DUK_D(DUK_DPRINT("debug command GetVar")); + + act = duk__debug_read_level_get_activation(thr); + if (act == NULL) { + return; + } + str = duk_debug_read_hstring(thr); /* push to stack */ + DUK_ASSERT(str != NULL); + + rc = duk_js_getvar_activation(thr, act, str, 0); + + duk_debug_write_reply(thr); + if (rc) { + duk_debug_write_int(thr, 1); + DUK_ASSERT(duk_get_tval(thr, -2) != NULL); + duk_debug_write_tval(thr, duk_get_tval(thr, -2)); + } else { + duk_debug_write_int(thr, 0); + duk_debug_write_unused(thr); + } + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_put_var(duk_hthread *thr, duk_heap *heap) { + duk_activation *act; + duk_hstring *str; + duk_tval *tv; + + DUK_UNREF(heap); + DUK_D(DUK_DPRINT("debug command PutVar")); + + act = duk__debug_read_level_get_activation(thr); + if (act == NULL) { + return; + } + str = duk_debug_read_hstring(thr); /* push to stack */ + DUK_ASSERT(str != NULL); + tv = duk_debug_read_tval(thr); + if (tv == NULL) { + /* detached */ + return; + } + + duk_js_putvar_activation(thr, act, str, tv, 0); + + /* XXX: Current putvar implementation doesn't have a success flag, + * add one and send to debug client? + */ + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_get_call_stack(duk_hthread *thr, duk_heap *heap) { + duk_hthread *curr_thr = thr; + duk_activation *curr_act; + duk_uint_fast32_t pc; + duk_uint_fast32_t line; + + DUK_ASSERT(thr != NULL); + DUK_UNREF(heap); + + duk_debug_write_reply(thr); + while (curr_thr != NULL) { + for (curr_act = curr_thr->callstack_curr; curr_act != NULL; curr_act = curr_act->parent) { + /* PC/line semantics here are: + * - For callstack top we're conceptually between two + * opcodes and current PC indicates next line to + * execute, so report that (matches Status). + * - For other activations we're conceptually still + * executing the instruction at PC-1, so report that + * (matches error stacktrace behavior). + * - See: https://github.com/svaarala/duktape/issues/281 + */ + + /* XXX: optimize to use direct reads, i.e. avoid + * value stack operations. + */ + duk_push_tval(thr, &curr_act->tv_func); + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_FILE_NAME); + duk__debug_write_hstring_safe_top(thr); + duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_NAME); + duk__debug_write_hstring_safe_top(thr); + pc = duk_hthread_get_act_curr_pc(thr, curr_act); + if (curr_act != curr_thr->callstack_curr && pc > 0) { + pc--; + } + line = duk_hobject_pc2line_query(thr, -3, pc); + duk_debug_write_uint(thr, (duk_uint32_t) line); + duk_debug_write_uint(thr, (duk_uint32_t) pc); + duk_pop_3(thr); + } + curr_thr = curr_thr->resumer; + } + /* SCANBUILD: warning about 'thr' potentially being NULL here, + * warning is incorrect because thr != NULL always here. + */ + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_get_locals(duk_hthread *thr, duk_heap *heap) { + duk_activation *act; + duk_hstring *varname; + + DUK_UNREF(heap); + + act = duk__debug_read_level_get_activation(thr); + if (act == NULL) { + return; + } + + duk_debug_write_reply(thr); + + /* XXX: several nice-to-have improvements here: + * - Use direct reads avoiding value stack operations + * - Avoid triggering getters, indicate getter values to debug client + * - If side effects are possible, add error catching + */ + + if (DUK_TVAL_IS_OBJECT(&act->tv_func)) { + duk_hobject *h_func = DUK_TVAL_GET_OBJECT(&act->tv_func); + duk_hobject *h_varmap; + + h_varmap = duk_hobject_get_varmap(thr, h_func); + if (h_varmap != NULL) { + duk_push_hobject(thr, h_varmap); + duk_enum(thr, -1, 0 /*enum_flags*/); + while (duk_next(thr, -1 /*enum_index*/, 0 /*get_value*/)) { + varname = duk_known_hstring(thr, -1); + + duk_js_getvar_activation(thr, act, varname, 0 /*throw_flag*/); + /* [ ... func varmap enum key value this ] */ + duk_debug_write_hstring(thr, duk_get_hstring(thr, -3)); + duk_debug_write_tval(thr, duk_get_tval(thr, -2)); + duk_pop_3(thr); /* -> [ ... func varmap enum ] */ + } + } else { + DUK_D(DUK_DPRINT("varmap missing in GetLocals, ignore")); + } + } else { + DUK_D(DUK_DPRINT("varmap is not an object in GetLocals, ignore")); + } + + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_eval(duk_hthread *thr, duk_heap *heap) { + duk_small_uint_t call_flags; + duk_int_t call_ret; + duk_small_int_t eval_err; + duk_bool_t direct_eval; + duk_int32_t level; + duk_idx_t idx_func; + + DUK_UNREF(heap); + + DUK_D(DUK_DPRINT("debug command Eval")); + + /* The eval code is executed within the lexical environment of a specified + * activation. For now, use global object eval() function, with the eval + * considered a 'direct call to eval'. + * + * Callstack index for debug commands only affects scope -- the callstack + * as seen by, e.g. Duktape.act() will be the same regardless. + */ + + /* nargs == 2 so we can pass a callstack index to eval(). */ + idx_func = duk_get_top(thr); + duk_push_c_function(thr, duk_bi_global_object_eval, 2 /*nargs*/); + duk_push_undefined(thr); /* 'this' binding shouldn't matter here */ + + /* Read callstack index, if non-null. */ + if (duk_debug_peek_byte(thr) == DUK_DBG_IB_NULL) { + direct_eval = 0; + level = -1; /* Not needed, but silences warning. */ + (void) duk_debug_read_byte(thr); + } else { + direct_eval = 1; + level = duk__debug_read_validate_csindex(thr); + if (level == 0) { + return; + } + } + + DUK_ASSERT(!direct_eval || + (level < 0 && -level <= (duk_int32_t) thr->callstack_top)); + + (void) duk_debug_read_hstring(thr); + if (direct_eval) { + duk_push_int(thr, level - 1); /* compensate for eval() call */ + } + + /* [ ... eval "eval" eval_input level? ] */ + + call_flags = 0; + if (direct_eval) { + duk_activation *act; + duk_hobject *fun; + + act = duk_hthread_get_activation_for_level(thr, level); + if (act != NULL) { + fun = DUK_ACT_GET_FUNC(act); + if (fun != NULL && DUK_HOBJECT_IS_COMPFUNC(fun)) { + /* Direct eval requires that there's a current + * activation and it is an ECMAScript function. + * When Eval is executed from e.g. cooperate API + * call we'll need to do an indirect eval instead. + */ + call_flags |= DUK_CALL_FLAG_DIRECT_EVAL; + } + } + } + + call_ret = duk_pcall_method_flags(thr, duk_get_top(thr) - (idx_func + 2), call_flags); + + if (call_ret == DUK_EXEC_SUCCESS) { + eval_err = 0; + /* Use result value as is. */ + } else { + /* For errors a string coerced result is most informative + * right now, as the debug client doesn't have the capability + * to traverse the error object. + */ + eval_err = 1; + duk_safe_to_string(thr, -1); + } + + /* [ ... result ] */ + + duk_debug_write_reply(thr); + duk_debug_write_int(thr, (duk_int32_t) eval_err); + DUK_ASSERT(duk_get_tval(thr, -1) != NULL); + duk_debug_write_tval(thr, duk_get_tval(thr, -1)); + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_detach(duk_hthread *thr, duk_heap *heap) { + DUK_UNREF(heap); + DUK_D(DUK_DPRINT("debug command Detach")); + + duk_debug_write_reply(thr); + duk_debug_write_eom(thr); + + DUK_D(DUK_DPRINT("debug connection detached, mark broken")); + DUK__SET_CONN_BROKEN(thr, 0); /* not an error */ +} + +DUK_LOCAL void duk__debug_handle_apprequest(duk_hthread *thr, duk_heap *heap) { + duk_idx_t old_top; + + DUK_D(DUK_DPRINT("debug command AppRequest")); + + old_top = duk_get_top(thr); /* save stack top */ + + if (heap->dbg_request_cb != NULL) { + duk_idx_t nrets; + duk_idx_t nvalues = 0; + duk_idx_t top, idx; + + /* Read tvals from the message and push them onto the valstack, + * then call the request callback to process the request. + */ + while (duk_debug_peek_byte(thr) != DUK_DBG_IB_EOM) { + duk_tval *tv; + if (!duk_check_stack(thr, 1)) { + DUK_D(DUK_DPRINT("failed to allocate space for request dvalue(s)")); + goto fail; + } + tv = duk_debug_read_tval(thr); /* push to stack */ + if (tv == NULL) { + /* detached */ + return; + } + nvalues++; + } + DUK_ASSERT(duk_get_top(thr) == old_top + nvalues); + + /* Request callback should push values for reply to client onto valstack */ + DUK_D(DUK_DPRINT("calling into AppRequest request_cb with nvalues=%ld, old_top=%ld, top=%ld", + (long) nvalues, (long) old_top, (long) duk_get_top(thr))); + nrets = heap->dbg_request_cb(thr, heap->dbg_udata, nvalues); + DUK_D(DUK_DPRINT("returned from AppRequest request_cb; nvalues=%ld -> nrets=%ld, old_top=%ld, top=%ld", + (long) nvalues, (long) nrets, (long) old_top, (long) duk_get_top(thr))); + if (nrets >= 0) { + DUK_ASSERT(duk_get_top(thr) >= old_top + nrets); + if (duk_get_top(thr) < old_top + nrets) { + DUK_D(DUK_DPRINT("AppRequest callback doesn't match value stack configuration, " + "top=%ld < old_top=%ld + nrets=%ld; " + "this might mean it's unsafe to continue!", + (long) duk_get_top(thr), (long) old_top, (long) nrets)); + goto fail; + } + + /* Reply with tvals pushed by request callback */ + duk_debug_write_byte(thr, DUK_DBG_IB_REPLY); + top = duk_get_top(thr); + for (idx = top - nrets; idx < top; idx++) { + duk_debug_write_tval(thr, DUK_GET_TVAL_POSIDX(thr, idx)); + } + duk_debug_write_eom(thr); + } else { + DUK_ASSERT(duk_get_top(thr) >= old_top + 1); + if (duk_get_top(thr) < old_top + 1) { + DUK_D(DUK_DPRINT("request callback return value doesn't match value stack configuration")); + goto fail; + } + duk_debug_write_error_eom(thr, DUK_DBG_ERR_APPLICATION, duk_get_string(thr, -1)); + } + + duk_set_top(thr, old_top); /* restore stack top */ + } else { + DUK_D(DUK_DPRINT("no request callback, treat AppRequest as unsupported")); + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNSUPPORTED, "AppRequest unsupported by target"); + } + + return; + + fail: + duk_set_top(thr, old_top); /* restore stack top */ + DUK__SET_CONN_BROKEN(thr, 1); +} + +/* + * DumpHeap command + */ + +#if defined(DUK_USE_DEBUGGER_DUMPHEAP) +/* XXX: this has some overlap with object inspection; remove this and make + * DumpHeap return lists of heapptrs instead? + */ +DUK_LOCAL void duk__debug_dump_heaphdr(duk_hthread *thr, duk_heap *heap, duk_heaphdr *hdr) { + DUK_UNREF(heap); + + duk_debug_write_heapptr(thr, hdr); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HEAPHDR_GET_TYPE(hdr)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HEAPHDR_GET_FLAGS_RAW(hdr)); +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HEAPHDR_GET_REFCOUNT(hdr)); +#else + duk_debug_write_int(thr, (duk_int32_t) -1); +#endif + + switch (DUK_HEAPHDR_GET_TYPE(hdr)) { + case DUK_HTYPE_STRING: { + duk_hstring *h = (duk_hstring *) hdr; + + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HSTRING_GET_BYTELEN(h)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HSTRING_GET_CHARLEN(h)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HSTRING_GET_HASH(h)); + duk_debug_write_hstring(thr, h); + break; + } + case DUK_HTYPE_OBJECT: { + duk_hobject *h = (duk_hobject *) hdr; + duk_hstring *k; + duk_uint_fast32_t i; + + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HOBJECT_GET_CLASS_NUMBER(h)); + duk_debug_write_heapptr(thr, (duk_heaphdr *) DUK_HOBJECT_GET_PROTOTYPE(heap, h)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HOBJECT_GET_ESIZE(h)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HOBJECT_GET_ENEXT(h)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HOBJECT_GET_ASIZE(h)); + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HOBJECT_GET_HSIZE(h)); + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(h); i++) { + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HOBJECT_E_GET_FLAGS(heap, h, i)); + k = DUK_HOBJECT_E_GET_KEY(heap, h, i); + duk_debug_write_heapptr(thr, (duk_heaphdr *) k); + if (k == NULL) { + duk_debug_write_int(thr, 0); /* isAccessor */ + duk_debug_write_unused(thr); + continue; + } + if (DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, h, i)) { + duk_debug_write_int(thr, 1); /* isAccessor */ + duk_debug_write_heapptr(thr, (duk_heaphdr *) DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)->a.get); + duk_debug_write_heapptr(thr, (duk_heaphdr *) DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)->a.set); + } else { + duk_debug_write_int(thr, 0); /* isAccessor */ + + duk__debug_write_tval_heapptr(thr, &DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)->v); + } + } + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ASIZE(h); i++) { + /* Note: array dump will include elements beyond + * 'length'. + */ + duk__debug_write_tval_heapptr(thr, DUK_HOBJECT_A_GET_VALUE_PTR(heap, h, i)); + } + break; + } + case DUK_HTYPE_BUFFER: { + duk_hbuffer *h = (duk_hbuffer *) hdr; + + duk_debug_write_uint(thr, (duk_uint32_t) DUK_HBUFFER_GET_SIZE(h)); + duk_debug_write_buffer(thr, (const char *) DUK_HBUFFER_GET_DATA_PTR(heap, h), (duk_size_t) DUK_HBUFFER_GET_SIZE(h)); + break; + } + default: { + DUK_D(DUK_DPRINT("invalid htype: %d", (int) DUK_HEAPHDR_GET_TYPE(hdr))); + } + } +} + +DUK_LOCAL void duk__debug_dump_heap_allocated(duk_hthread *thr, duk_heap *heap) { + duk_heaphdr *hdr; + + hdr = heap->heap_allocated; + while (hdr != NULL) { + duk__debug_dump_heaphdr(thr, heap, hdr); + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } +} + +DUK_LOCAL void duk__debug_dump_strtab(duk_hthread *thr, duk_heap *heap) { + duk_uint32_t i; + duk_hstring *h; + + for (i = 0; i < heap->st_size; i++) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + h = DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, heap->strtable16[i]); +#else + h = heap->strtable[i]; +#endif + while (h != NULL) { + duk__debug_dump_heaphdr(thr, heap, (duk_heaphdr *) h); + h = h->hdr.h_next; + } + } +} + +DUK_LOCAL void duk__debug_handle_dump_heap(duk_hthread *thr, duk_heap *heap) { + DUK_D(DUK_DPRINT("debug command DumpHeap")); + + duk_debug_write_reply(thr); + duk__debug_dump_heap_allocated(thr, heap); + duk__debug_dump_strtab(thr, heap); + duk_debug_write_eom(thr); +} +#endif /* DUK_USE_DEBUGGER_DUMPHEAP */ + +DUK_LOCAL void duk__debug_handle_get_bytecode(duk_hthread *thr, duk_heap *heap) { + duk_activation *act; + duk_hcompfunc *fun = NULL; + duk_size_t i, n; + duk_tval *tv; + duk_hobject **fn; + duk_int32_t level = -1; + duk_uint8_t ibyte; + + DUK_UNREF(heap); + + DUK_D(DUK_DPRINT("debug command GetBytecode")); + + ibyte = duk_debug_peek_byte(thr); + if (ibyte != DUK_DBG_IB_EOM) { + tv = duk_debug_read_tval(thr); + if (tv == NULL) { + /* detached */ + return; + } + if (DUK_TVAL_IS_OBJECT(tv)) { + /* tentative, checked later */ + fun = (duk_hcompfunc *) DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(fun != NULL); + } else if (DUK_TVAL_IS_NUMBER(tv)) { + level = (duk_int32_t) DUK_TVAL_GET_NUMBER(tv); + } else { + DUK_D(DUK_DPRINT("invalid argument to GetBytecode: %!T", tv)); + goto fail_args; + } + } + + if (fun == NULL) { + act = duk_hthread_get_activation_for_level(thr, level); + if (act == NULL) { + goto fail_index; + } + fun = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + } + + if (fun == NULL || !DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) fun)) { + DUK_D(DUK_DPRINT("invalid argument to GetBytecode: %!O", fun)); + goto fail_args; + } + DUK_ASSERT(fun != NULL && DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) fun)); + + duk_debug_write_reply(thr); + n = DUK_HCOMPFUNC_GET_CONSTS_COUNT(heap, fun); + duk_debug_write_int(thr, (duk_int32_t) n); + tv = DUK_HCOMPFUNC_GET_CONSTS_BASE(heap, fun); + for (i = 0; i < n; i++) { + duk_debug_write_tval(thr, tv); + tv++; + } + n = DUK_HCOMPFUNC_GET_FUNCS_COUNT(heap, fun); + duk_debug_write_int(thr, (duk_int32_t) n); + fn = DUK_HCOMPFUNC_GET_FUNCS_BASE(heap, fun); + for (i = 0; i < n; i++) { + duk_debug_write_hobject(thr, *fn); + fn++; + } + duk_debug_write_string(thr, + (const char *) DUK_HCOMPFUNC_GET_CODE_BASE(heap, fun), + (duk_size_t) DUK_HCOMPFUNC_GET_CODE_SIZE(heap, fun)); + duk_debug_write_eom(thr); + return; + + fail_args: + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNKNOWN, "invalid argument"); + return; + + fail_index: + duk_debug_write_error_eom(thr, DUK_DBG_ERR_NOTFOUND, "invalid callstack index"); + return; +} + +/* + * Object inspection commands: GetHeapObjInfo, GetObjPropDesc, + * GetObjPropDescRange + */ + +#if defined(DUK_USE_DEBUGGER_INSPECT) + +#if 0 /* pruned */ +DUK_LOCAL const char * const duk__debug_getinfo_heaphdr_keys[] = { + "reachable", + "temproot", + "finalizable", + "finalized", + "readonly" + /* NULL not needed here */ +}; +DUK_LOCAL duk_uint_t duk__debug_getinfo_heaphdr_masks[] = { + DUK_HEAPHDR_FLAG_REACHABLE, + DUK_HEAPHDR_FLAG_TEMPROOT, + DUK_HEAPHDR_FLAG_FINALIZABLE, + DUK_HEAPHDR_FLAG_FINALIZED, + DUK_HEAPHDR_FLAG_READONLY, + 0 /* terminator */ +}; +#endif +DUK_LOCAL const char * const duk__debug_getinfo_hstring_keys[] = { +#if 0 + "arridx", + "symbol", + "hidden", + "reserved_word", + "strict_reserved_word", + "eval_or_arguments", +#endif + "extdata" + /* NULL not needed here */ +}; +DUK_LOCAL duk_uint_t duk__debug_getinfo_hstring_masks[] = { +#if 0 + DUK_HSTRING_FLAG_ARRIDX, + DUK_HSTRING_FLAG_SYMBOL, + DUK_HSTRING_FLAG_HIDDEN, + DUK_HSTRING_FLAG_RESERVED_WORD, + DUK_HSTRING_FLAG_STRICT_RESERVED_WORD, + DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS, +#endif + DUK_HSTRING_FLAG_EXTDATA, + 0 /* terminator */ +}; +DUK_LOCAL const char * const duk__debug_getinfo_hobject_keys[] = { + "extensible", + "constructable", + "callable", + "boundfunc", + "compfunc", + "natfunc", + "bufobj", + "fastrefs", + "array_part", + "strict", + "notail", + "newenv", + "namebinding", + "createargs", + "have_finalizer", + "exotic_array", + "exotic_stringobj", + "exotic_arguments", + "exotic_proxyobj", + "special_call" + /* NULL not needed here */ +}; +DUK_LOCAL duk_uint_t duk__debug_getinfo_hobject_masks[] = { + DUK_HOBJECT_FLAG_EXTENSIBLE, + DUK_HOBJECT_FLAG_CONSTRUCTABLE, + DUK_HOBJECT_FLAG_CALLABLE, + DUK_HOBJECT_FLAG_BOUNDFUNC, + DUK_HOBJECT_FLAG_COMPFUNC, + DUK_HOBJECT_FLAG_NATFUNC, + DUK_HOBJECT_FLAG_BUFOBJ, + DUK_HOBJECT_FLAG_FASTREFS, + DUK_HOBJECT_FLAG_ARRAY_PART, + DUK_HOBJECT_FLAG_STRICT, + DUK_HOBJECT_FLAG_NOTAIL, + DUK_HOBJECT_FLAG_NEWENV, + DUK_HOBJECT_FLAG_NAMEBINDING, + DUK_HOBJECT_FLAG_CREATEARGS, + DUK_HOBJECT_FLAG_HAVE_FINALIZER, + DUK_HOBJECT_FLAG_EXOTIC_ARRAY, + DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ, + DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS, + DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ, + DUK_HOBJECT_FLAG_SPECIAL_CALL, + 0 /* terminator */ +}; +DUK_LOCAL const char * const duk__debug_getinfo_hbuffer_keys[] = { + "dynamic", + "external" + /* NULL not needed here */ +}; +DUK_LOCAL duk_uint_t duk__debug_getinfo_hbuffer_masks[] = { + DUK_HBUFFER_FLAG_DYNAMIC, + DUK_HBUFFER_FLAG_EXTERNAL, + 0 /* terminator */ +}; + +DUK_LOCAL void duk__debug_getinfo_flags_key(duk_hthread *thr, const char *key) { + duk_debug_write_uint(thr, 0); + duk_debug_write_cstring(thr, key); +} + +DUK_LOCAL void duk__debug_getinfo_prop_uint(duk_hthread *thr, const char *key, duk_uint_t val) { + duk_debug_write_uint(thr, 0); + duk_debug_write_cstring(thr, key); + duk_debug_write_uint(thr, val); +} + +DUK_LOCAL void duk__debug_getinfo_prop_int(duk_hthread *thr, const char *key, duk_int_t val) { + duk_debug_write_uint(thr, 0); + duk_debug_write_cstring(thr, key); + duk_debug_write_int(thr, val); +} + +DUK_LOCAL void duk__debug_getinfo_prop_bool(duk_hthread *thr, const char *key, duk_bool_t val) { + duk_debug_write_uint(thr, 0); + duk_debug_write_cstring(thr, key); + duk_debug_write_boolean(thr, val); +} + +DUK_LOCAL void duk__debug_getinfo_bitmask(duk_hthread *thr, const char * const * keys, duk_uint_t *masks, duk_uint_t flags) { + const char *key; + duk_uint_t mask; + + for (;;) { + mask = *masks++; + if (mask == 0) { + break; + } + key = *keys++; + DUK_ASSERT(key != NULL); + + DUK_DD(DUK_DDPRINT("inspect bitmask: key=%s, mask=0x%08lx, flags=0x%08lx", key, (unsigned long) mask, (unsigned long) flags)); + duk__debug_getinfo_prop_bool(thr, key, flags & mask); + } +} + +/* Inspect a property using a virtual index into a conceptual property list + * consisting of (1) all array part items from [0,a_size[ (even when above + * .length) and (2) all entry part items from [0,e_next[. Unused slots are + * indicated using dvalue 'unused'. + */ +DUK_LOCAL duk_bool_t duk__debug_getprop_index(duk_hthread *thr, duk_heap *heap, duk_hobject *h_obj, duk_uint_t idx) { + duk_uint_t a_size; + duk_tval *tv; + duk_hstring *h_key; + duk_hobject *h_getset; + duk_uint_t flags; + + DUK_UNREF(heap); + + a_size = DUK_HOBJECT_GET_ASIZE(h_obj); + if (idx < a_size) { + duk_debug_write_uint(thr, DUK_PROPDESC_FLAGS_WEC); + duk_debug_write_uint(thr, idx); + tv = DUK_HOBJECT_A_GET_VALUE_PTR(heap, h_obj, idx); + duk_debug_write_tval(thr, tv); + return 1; + } + + idx -= a_size; + if (idx >= DUK_HOBJECT_GET_ENEXT(h_obj)) { + return 0; + } + + h_key = DUK_HOBJECT_E_GET_KEY(heap, h_obj, idx); + if (h_key == NULL) { + duk_debug_write_uint(thr, 0); + duk_debug_write_null(thr); + duk_debug_write_unused(thr); + return 1; + } + + flags = DUK_HOBJECT_E_GET_FLAGS(heap, h_obj, idx); + if (DUK_HSTRING_HAS_SYMBOL(h_key)) { + flags |= DUK_DBG_PROPFLAG_SYMBOL; + } + if (DUK_HSTRING_HAS_HIDDEN(h_key)) { + flags |= DUK_DBG_PROPFLAG_HIDDEN; + } + duk_debug_write_uint(thr, flags); + duk_debug_write_hstring(thr, h_key); + if (flags & DUK_PROPDESC_FLAG_ACCESSOR) { + h_getset = DUK_HOBJECT_E_GET_VALUE_GETTER(heap, h_obj, idx); + if (h_getset) { + duk_debug_write_hobject(thr, h_getset); + } else { + duk_debug_write_null(thr); + } + h_getset = DUK_HOBJECT_E_GET_VALUE_SETTER(heap, h_obj, idx); + if (h_getset) { + duk_debug_write_hobject(thr, h_getset); + } else { + duk_debug_write_null(thr); + } + } else { + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(heap, h_obj, idx); + duk_debug_write_tval(thr, tv); + } + return 1; +} + +DUK_LOCAL void duk__debug_handle_get_heap_obj_info(duk_hthread *thr, duk_heap *heap) { + duk_heaphdr *h; + + DUK_D(DUK_DPRINT("debug command GetHeapObjInfo")); + DUK_UNREF(heap); + + DUK_ASSERT(sizeof(duk__debug_getinfo_hstring_keys) / sizeof(const char *) == sizeof(duk__debug_getinfo_hstring_masks) / sizeof(duk_uint_t) - 1); + DUK_ASSERT(sizeof(duk__debug_getinfo_hobject_keys) / sizeof(const char *) == sizeof(duk__debug_getinfo_hobject_masks) / sizeof(duk_uint_t) - 1); + DUK_ASSERT(sizeof(duk__debug_getinfo_hbuffer_keys) / sizeof(const char *) == sizeof(duk__debug_getinfo_hbuffer_masks) / sizeof(duk_uint_t) - 1); + + h = duk_debug_read_any_ptr(thr); + if (!h) { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNKNOWN, "invalid target"); + return; + } + + duk_debug_write_reply(thr); + + /* As with all inspection code, we rely on the debug client providing + * a valid, non-stale pointer: there's no portable way to safely + * validate the pointer here. + */ + + duk__debug_getinfo_flags_key(thr, "heapptr"); + duk_debug_write_heapptr(thr, h); + + /* XXX: comes out as signed now */ + duk__debug_getinfo_prop_uint(thr, "heaphdr_flags", (duk_uint_t) DUK_HEAPHDR_GET_FLAGS(h)); + duk__debug_getinfo_prop_uint(thr, "heaphdr_type", (duk_uint_t) DUK_HEAPHDR_GET_TYPE(h)); +#if defined(DUK_USE_REFERENCE_COUNTING) + duk__debug_getinfo_prop_uint(thr, "refcount", (duk_uint_t) DUK_HEAPHDR_GET_REFCOUNT(h)); +#endif +#if 0 /* pruned */ + duk__debug_getinfo_bitmask(thr, + duk__debug_getinfo_heaphdr_keys, + duk__debug_getinfo_heaphdr_masks, + DUK_HEAPHDR_GET_FLAGS_RAW(h)); +#endif + + switch (DUK_HEAPHDR_GET_TYPE(h)) { + case DUK_HTYPE_STRING: { + duk_hstring *h_str; + + h_str = (duk_hstring *) h; + duk__debug_getinfo_bitmask(thr, + duk__debug_getinfo_hstring_keys, + duk__debug_getinfo_hstring_masks, + DUK_HEAPHDR_GET_FLAGS_RAW(h)); + duk__debug_getinfo_prop_uint(thr, "bytelen", (duk_uint_t) DUK_HSTRING_GET_BYTELEN(h_str)); + duk__debug_getinfo_prop_uint(thr, "charlen", (duk_uint_t) DUK_HSTRING_GET_CHARLEN(h_str)); + duk__debug_getinfo_prop_uint(thr, "hash", (duk_uint_t) DUK_HSTRING_GET_HASH(h_str)); + duk__debug_getinfo_flags_key(thr, "data"); + duk_debug_write_hstring(thr, h_str); + break; + } + case DUK_HTYPE_OBJECT: { + duk_hobject *h_obj; + duk_hobject *h_proto; + + h_obj = (duk_hobject *) h; + h_proto = DUK_HOBJECT_GET_PROTOTYPE(heap, h_obj); + + /* duk_hobject specific fields. */ + duk__debug_getinfo_bitmask(thr, + duk__debug_getinfo_hobject_keys, + duk__debug_getinfo_hobject_masks, + DUK_HEAPHDR_GET_FLAGS_RAW(h)); + duk__debug_getinfo_prop_uint(thr, "class_number", DUK_HOBJECT_GET_CLASS_NUMBER(h_obj)); + duk__debug_getinfo_flags_key(thr, "class_name"); + duk_debug_write_hstring(thr, DUK_HOBJECT_GET_CLASS_STRING(heap, h_obj)); + duk__debug_getinfo_flags_key(thr, "prototype"); + if (h_proto != NULL) { + duk_debug_write_hobject(thr, h_proto); + } else { + duk_debug_write_null(thr); + } + duk__debug_getinfo_flags_key(thr, "props"); + duk_debug_write_pointer(thr, (void *) DUK_HOBJECT_GET_PROPS(heap, h_obj)); + duk__debug_getinfo_prop_uint(thr, "e_size", (duk_uint_t) DUK_HOBJECT_GET_ESIZE(h_obj)); + duk__debug_getinfo_prop_uint(thr, "e_next", (duk_uint_t) DUK_HOBJECT_GET_ENEXT(h_obj)); + duk__debug_getinfo_prop_uint(thr, "a_size", (duk_uint_t) DUK_HOBJECT_GET_ASIZE(h_obj)); + duk__debug_getinfo_prop_uint(thr, "h_size", (duk_uint_t) DUK_HOBJECT_GET_HSIZE(h_obj)); + + if (DUK_HOBJECT_IS_ARRAY(h_obj)) { + duk_harray *h_arr; + h_arr = (duk_harray *) h_obj; + + duk__debug_getinfo_prop_uint(thr, "length", (duk_uint_t) h_arr->length); + duk__debug_getinfo_prop_bool(thr, "length_nonwritable", h_arr->length_nonwritable); + } + + if (DUK_HOBJECT_IS_NATFUNC(h_obj)) { + duk_hnatfunc *h_fun; + h_fun = (duk_hnatfunc *) h_obj; + + duk__debug_getinfo_prop_int(thr, "nargs", h_fun->nargs); + duk__debug_getinfo_prop_int(thr, "magic", h_fun->magic); + duk__debug_getinfo_prop_bool(thr, "varargs", h_fun->magic == DUK_HNATFUNC_NARGS_VARARGS); + /* Native function pointer may be different from a void pointer, + * and we serialize it from memory directly now (no byte swapping etc). + */ + duk__debug_getinfo_flags_key(thr, "funcptr"); + duk_debug_write_buffer(thr, (const char *) &h_fun->func, sizeof(h_fun->func)); + } + + if (DUK_HOBJECT_IS_COMPFUNC(h_obj)) { + duk_hcompfunc *h_fun; + duk_hbuffer *h_buf; + duk_hobject *h_lexenv; + duk_hobject *h_varenv; + h_fun = (duk_hcompfunc *) h_obj; + + duk__debug_getinfo_prop_int(thr, "nregs", h_fun->nregs); + duk__debug_getinfo_prop_int(thr, "nargs", h_fun->nargs); + + duk__debug_getinfo_flags_key(thr, "lex_env"); + h_lexenv = DUK_HCOMPFUNC_GET_LEXENV(thr->heap, h_fun); + if (h_lexenv != NULL) { + duk_debug_write_hobject(thr, h_lexenv); + } else { + duk_debug_write_null(thr); + } + duk__debug_getinfo_flags_key(thr, "var_env"); + h_varenv = DUK_HCOMPFUNC_GET_VARENV(thr->heap, h_fun); + if (h_varenv != NULL) { + duk_debug_write_hobject(thr, h_varenv); + } else { + duk_debug_write_null(thr); + } + + duk__debug_getinfo_prop_uint(thr, "start_line", h_fun->start_line); + duk__debug_getinfo_prop_uint(thr, "end_line", h_fun->end_line); + h_buf = (duk_hbuffer *) DUK_HCOMPFUNC_GET_DATA(thr->heap, h_fun); + if (h_buf != NULL) { + duk__debug_getinfo_flags_key(thr, "data"); + duk_debug_write_heapptr(thr, (duk_heaphdr *) h_buf); + } + } + + if (DUK_HOBJECT_IS_BOUNDFUNC(h_obj)) { + duk_hboundfunc *h_bfun; + h_bfun = (duk_hboundfunc *) (void *) h_obj; + + duk__debug_getinfo_flags_key(thr, "target"); + duk_debug_write_tval(thr, &h_bfun->target); + duk__debug_getinfo_flags_key(thr, "this_binding"); + duk_debug_write_tval(thr, &h_bfun->this_binding); + duk__debug_getinfo_flags_key(thr, "nargs"); + duk_debug_write_int(thr, h_bfun->nargs); + /* h_bfun->args not exposed now */ + } + + if (DUK_HOBJECT_IS_THREAD(h_obj)) { + /* XXX: Currently no inspection of threads, e.g. value stack, call + * stack, catch stack, etc. + */ + duk_hthread *h_thr; + h_thr = (duk_hthread *) h_obj; + DUK_UNREF(h_thr); + } + + if (DUK_HOBJECT_IS_DECENV(h_obj)) { + duk_hdecenv *h_env; + h_env = (duk_hdecenv *) h_obj; + + duk__debug_getinfo_flags_key(thr, "thread"); + duk_debug_write_heapptr(thr, (duk_heaphdr *) (h_env->thread)); + duk__debug_getinfo_flags_key(thr, "varmap"); + duk_debug_write_heapptr(thr, (duk_heaphdr *) (h_env->varmap)); + duk__debug_getinfo_prop_uint(thr, "regbase", (duk_uint_t) h_env->regbase_byteoff); + } + + if (DUK_HOBJECT_IS_OBJENV(h_obj)) { + duk_hobjenv *h_env; + h_env = (duk_hobjenv *) h_obj; + + duk__debug_getinfo_flags_key(thr, "target"); + duk_debug_write_heapptr(thr, (duk_heaphdr *) (h_env->target)); + duk__debug_getinfo_prop_bool(thr, "has_this", h_env->has_this); + } + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + if (DUK_HOBJECT_IS_BUFOBJ(h_obj)) { + duk_hbufobj *h_bufobj; + h_bufobj = (duk_hbufobj *) h_obj; + + duk__debug_getinfo_prop_uint(thr, "slice_offset", h_bufobj->offset); + duk__debug_getinfo_prop_uint(thr, "slice_length", h_bufobj->length); + duk__debug_getinfo_prop_uint(thr, "elem_shift", (duk_uint_t) h_bufobj->shift); + duk__debug_getinfo_prop_uint(thr, "elem_type", (duk_uint_t) h_bufobj->elem_type); + duk__debug_getinfo_prop_bool(thr, "is_typedarray", (duk_uint_t) h_bufobj->is_typedarray); + if (h_bufobj->buf != NULL) { + duk__debug_getinfo_flags_key(thr, "buffer"); + duk_debug_write_heapptr(thr, (duk_heaphdr *) h_bufobj->buf); + } + } +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + break; + } + case DUK_HTYPE_BUFFER: { + duk_hbuffer *h_buf; + + h_buf = (duk_hbuffer *) h; + duk__debug_getinfo_bitmask(thr, + duk__debug_getinfo_hbuffer_keys, + duk__debug_getinfo_hbuffer_masks, + DUK_HEAPHDR_GET_FLAGS_RAW(h)); + duk__debug_getinfo_prop_uint(thr, "size", (duk_uint_t) DUK_HBUFFER_GET_SIZE(h_buf)); + duk__debug_getinfo_flags_key(thr, "dataptr"); + duk_debug_write_pointer(thr, (void *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_buf)); + duk__debug_getinfo_flags_key(thr, "data"); + duk_debug_write_hbuffer(thr, h_buf); /* tolerates NULL h_buf */ + break; + } + default: { + /* Since we already started writing the reply, just emit nothing. */ + DUK_D(DUK_DPRINT("inspect target pointer has invalid heaphdr type")); + } + } + + duk_debug_write_eom(thr); +} + +DUK_LOCAL void duk__debug_handle_get_obj_prop_desc(duk_hthread *thr, duk_heap *heap) { + duk_heaphdr *h; + duk_hobject *h_obj; + duk_hstring *h_key; + duk_propdesc desc; + + DUK_D(DUK_DPRINT("debug command GetObjPropDesc")); + DUK_UNREF(heap); + + h = duk_debug_read_any_ptr(thr); + if (!h) { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNKNOWN, "invalid target"); + return; + } + h_key = duk_debug_read_hstring(thr); + if (h == NULL || DUK_HEAPHDR_GET_TYPE(h) != DUK_HTYPE_OBJECT || h_key == NULL) { + goto fail_args; + } + h_obj = (duk_hobject *) h; + + if (duk_hobject_get_own_propdesc(thr, h_obj, h_key, &desc, 0 /*flags*/)) { + duk_int_t virtual_idx; + duk_bool_t rc; + + /* To use the shared helper need the virtual index. */ + DUK_ASSERT(desc.e_idx >= 0 || desc.a_idx >= 0); + virtual_idx = (desc.a_idx >= 0 ? desc.a_idx : + (duk_int_t) DUK_HOBJECT_GET_ASIZE(h_obj) + desc.e_idx); + + duk_debug_write_reply(thr); + rc = duk__debug_getprop_index(thr, heap, h_obj, (duk_uint_t) virtual_idx); + DUK_ASSERT(rc == 1); + DUK_UNREF(rc); + duk_debug_write_eom(thr); + } else { + duk_debug_write_error_eom(thr, DUK_DBG_ERR_NOTFOUND, "not found"); + } + return; + + fail_args: + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNKNOWN, "invalid args"); +} + +DUK_LOCAL void duk__debug_handle_get_obj_prop_desc_range(duk_hthread *thr, duk_heap *heap) { + duk_heaphdr *h; + duk_hobject *h_obj; + duk_uint_t idx, idx_start, idx_end; + + DUK_D(DUK_DPRINT("debug command GetObjPropDescRange")); + DUK_UNREF(heap); + + h = duk_debug_read_any_ptr(thr); + idx_start = (duk_uint_t) duk_debug_read_int(thr); + idx_end = (duk_uint_t) duk_debug_read_int(thr); + if (h == NULL || DUK_HEAPHDR_GET_TYPE(h) != DUK_HTYPE_OBJECT) { + goto fail_args; + } + h_obj = (duk_hobject *) h; + + /* The index range space is conceptually the array part followed by the + * entry part. Unlike normal enumeration all slots are exposed here as + * is and return 'unused' if the slots are not in active use. In particular + * the array part is included for the full a_size regardless of what the + * array .length is. + */ + + duk_debug_write_reply(thr); + for (idx = idx_start; idx < idx_end; idx++) { + if (!duk__debug_getprop_index(thr, heap, h_obj, idx)) { + break; + } + } + duk_debug_write_eom(thr); + return; + + fail_args: + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNKNOWN, "invalid args"); +} + +#endif /* DUK_USE_DEBUGGER_INSPECT */ + +/* + * Process incoming debug requests + * + * Individual request handlers can push temporaries on the value stack and + * rely on duk__debug_process_message() to restore the value stack top + * automatically. + */ + +/* Process one debug message. Automatically restore value stack top to its + * entry value, so that individual message handlers don't need exact value + * stack handling which is convenient. + */ +DUK_LOCAL void duk__debug_process_message(duk_hthread *thr) { + duk_heap *heap; + duk_uint8_t x; + duk_int32_t cmd; + duk_idx_t entry_top; + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + entry_top = duk_get_top(thr); + + x = duk_debug_read_byte(thr); + switch (x) { + case DUK_DBG_IB_REQUEST: { + cmd = duk_debug_read_int(thr); + switch (cmd) { + case DUK_DBG_CMD_BASICINFO: { + duk__debug_handle_basic_info(thr, heap); + break; + } + case DUK_DBG_CMD_TRIGGERSTATUS: { + duk__debug_handle_trigger_status(thr, heap); + break; + } + case DUK_DBG_CMD_PAUSE: { + duk__debug_handle_pause(thr, heap); + break; + } + case DUK_DBG_CMD_RESUME: { + duk__debug_handle_resume(thr, heap); + break; + } + case DUK_DBG_CMD_STEPINTO: + case DUK_DBG_CMD_STEPOVER: + case DUK_DBG_CMD_STEPOUT: { + duk__debug_handle_step(thr, heap, cmd); + break; + } + case DUK_DBG_CMD_LISTBREAK: { + duk__debug_handle_list_break(thr, heap); + break; + } + case DUK_DBG_CMD_ADDBREAK: { + duk__debug_handle_add_break(thr, heap); + break; + } + case DUK_DBG_CMD_DELBREAK: { + duk__debug_handle_del_break(thr, heap); + break; + } + case DUK_DBG_CMD_GETVAR: { + duk__debug_handle_get_var(thr, heap); + break; + } + case DUK_DBG_CMD_PUTVAR: { + duk__debug_handle_put_var(thr, heap); + break; + } + case DUK_DBG_CMD_GETCALLSTACK: { + duk__debug_handle_get_call_stack(thr, heap); + break; + } + case DUK_DBG_CMD_GETLOCALS: { + duk__debug_handle_get_locals(thr, heap); + break; + } + case DUK_DBG_CMD_EVAL: { + duk__debug_handle_eval(thr, heap); + break; + } + case DUK_DBG_CMD_DETACH: { + /* The actual detached_cb call is postponed to message loop so + * we don't need any special precautions here (just skip to EOM + * on the already closed connection). + */ + duk__debug_handle_detach(thr, heap); + break; + } +#if defined(DUK_USE_DEBUGGER_DUMPHEAP) + case DUK_DBG_CMD_DUMPHEAP: { + duk__debug_handle_dump_heap(thr, heap); + break; + } +#endif /* DUK_USE_DEBUGGER_DUMPHEAP */ + case DUK_DBG_CMD_GETBYTECODE: { + duk__debug_handle_get_bytecode(thr, heap); + break; + } + case DUK_DBG_CMD_APPREQUEST: { + duk__debug_handle_apprequest(thr, heap); + break; + } +#if defined(DUK_USE_DEBUGGER_INSPECT) + case DUK_DBG_CMD_GETHEAPOBJINFO: { + duk__debug_handle_get_heap_obj_info(thr, heap); + break; + } + case DUK_DBG_CMD_GETOBJPROPDESC: { + duk__debug_handle_get_obj_prop_desc(thr, heap); + break; + } + case DUK_DBG_CMD_GETOBJPROPDESCRANGE: { + duk__debug_handle_get_obj_prop_desc_range(thr, heap); + break; + } +#endif /* DUK_USE_DEBUGGER_INSPECT */ + default: { + DUK_D(DUK_DPRINT("debug command unsupported: %d", (int) cmd)); + duk_debug_write_error_eom(thr, DUK_DBG_ERR_UNSUPPORTED, "unsupported command"); + } + } /* switch cmd */ + break; + } + case DUK_DBG_IB_REPLY: { + DUK_D(DUK_DPRINT("debug reply, skipping")); + break; + } + case DUK_DBG_IB_ERROR: { + DUK_D(DUK_DPRINT("debug error, skipping")); + break; + } + case DUK_DBG_IB_NOTIFY: { + DUK_D(DUK_DPRINT("debug notify, skipping")); + break; + } + default: { + DUK_D(DUK_DPRINT("invalid initial byte, drop connection: %d", (int) x)); + goto fail; + } + } /* switch initial byte */ + + DUK_ASSERT(duk_get_top(thr) >= entry_top); + duk_set_top(thr, entry_top); + duk__debug_skip_to_eom(thr); + return; + + fail: + DUK_ASSERT(duk_get_top(thr) >= entry_top); + duk_set_top(thr, entry_top); + DUK__SET_CONN_BROKEN(thr, 1); + return; +} + +DUK_LOCAL void duk__check_resend_status(duk_hthread *thr) { + if (thr->heap->dbg_read_cb != NULL && thr->heap->dbg_state_dirty) { + duk_debug_send_status(thr); + thr->heap->dbg_state_dirty = 0; + } +} + +DUK_INTERNAL duk_bool_t duk_debug_process_messages(duk_hthread *thr, duk_bool_t no_block) { +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t entry_top; +#endif + duk_bool_t retval = 0; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); +#if defined(DUK_USE_ASSERTIONS) + entry_top = duk_get_top(thr); +#endif + + DUK_D(DUK_DPRINT("process debug messages: read_cb=%s, no_block=%ld, detaching=%ld, processing=%ld", + thr->heap->dbg_read_cb ? "not NULL" : "NULL", (long) no_block, + (long) thr->heap->dbg_detaching, (long) thr->heap->dbg_processing)); + DUK_DD(DUK_DDPRINT("top at entry: %ld", (long) duk_get_top(thr))); + + /* thr->heap->dbg_detaching may be != 0 if a debugger write outside + * the message loop caused a transport error and detach1() to run. + */ + DUK_ASSERT(thr->heap->dbg_detaching == 0 || thr->heap->dbg_detaching == 1); + DUK_ASSERT(thr->heap->dbg_processing == 0); + thr->heap->dbg_processing = 1; + + /* Ensure dirty state causes a Status even if never process any + * messages. This is expected by the bytecode executor when in + * the running state. + */ + duk__check_resend_status(thr); + + for (;;) { + /* Process messages until we're no longer paused or we peek + * and see there's nothing to read right now. + */ + DUK_DD(DUK_DDPRINT("top at loop top: %ld", (long) duk_get_top(thr))); + DUK_ASSERT(thr->heap->dbg_processing == 1); + + while (thr->heap->dbg_read_cb == NULL && thr->heap->dbg_detaching) { + /* Detach is pending; can be triggered from outside the + * debugger loop (e.g. Status notify write error) or by + * previous message handling. Call detached callback + * here, in a controlled state, to ensure a possible + * reattach inside the detached_cb is handled correctly. + * + * Recheck for detach in a while loop: an immediate + * reattach involves a call to duk_debugger_attach() + * which writes a debugger handshake line immediately + * inside the API call. If the transport write fails + * for that handshake, we can immediately end up in a + * "transport broken, detaching" case several times here. + * Loop back until we're either cleanly attached or + * fully detached. + * + * NOTE: Reset dbg_processing = 1 forcibly, in case we + * re-attached; duk_debugger_attach() sets dbg_processing + * to 0 at the moment. + */ + + DUK_D(DUK_DPRINT("detach pending (dbg_read_cb == NULL, dbg_detaching != 0), call detach2")); + + duk__debug_do_detach2(thr->heap); + thr->heap->dbg_processing = 1; /* may be set to 0 by duk_debugger_attach() inside callback */ + + DUK_D(DUK_DPRINT("after detach2 (and possible reattach): dbg_read_cb=%s, dbg_detaching=%ld", + thr->heap->dbg_read_cb ? "not NULL" : "NULL", (long) thr->heap->dbg_detaching)); + } + DUK_ASSERT(thr->heap->dbg_detaching == 0); /* true even with reattach */ + DUK_ASSERT(thr->heap->dbg_processing == 1); /* even after a detach and possible reattach */ + + if (thr->heap->dbg_read_cb == NULL) { + DUK_D(DUK_DPRINT("debug connection broken (and not detaching), stop processing messages")); + break; + } + + if (!DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap) || no_block) { + if (!duk_debug_read_peek(thr)) { + /* Note: peek cannot currently trigger a detach + * so the dbg_detaching == 0 assert outside the + * loop is correct. + */ + DUK_D(DUK_DPRINT("processing debug message, peek indicated no data, stop processing messages")); + break; + } + DUK_D(DUK_DPRINT("processing debug message, peek indicated there is data, handle it")); + } else { + DUK_D(DUK_DPRINT("paused, process debug message, blocking if necessary")); + } + + duk__check_resend_status(thr); + duk__debug_process_message(thr); + duk__check_resend_status(thr); + + retval = 1; /* processed one or more messages */ + } + + DUK_ASSERT(thr->heap->dbg_detaching == 0); + DUK_ASSERT(thr->heap->dbg_processing == 1); + thr->heap->dbg_processing = 0; + + /* As an initial implementation, read flush after exiting the message + * loop. If transport is broken, this is a no-op (with debug logs). + */ + duk_debug_read_flush(thr); /* this cannot initiate a detach */ + DUK_ASSERT(thr->heap->dbg_detaching == 0); + + DUK_DD(DUK_DDPRINT("top at exit: %ld", (long) duk_get_top(thr))); + +#if defined(DUK_USE_ASSERTIONS) + /* Easy to get wrong, so assert for it. */ + DUK_ASSERT(entry_top == duk_get_top(thr)); +#endif + + return retval; +} + +/* + * Halt execution helper + */ + +/* Halt execution and enter a debugger message loop until execution is resumed + * by the client. PC for the current activation may be temporarily decremented + * so that the "current" instruction will be shown by the client. This helper + * is callable from anywhere, also outside bytecode executor. + */ + +DUK_INTERNAL void duk_debug_halt_execution(duk_hthread *thr, duk_bool_t use_prev_pc) { + duk_activation *act; + duk_hcompfunc *fun; + duk_instr_t *old_pc = NULL; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(duk_debug_is_attached(thr->heap)); + DUK_ASSERT(thr->heap->dbg_processing == 0); + DUK_ASSERT(!duk_debug_is_paused(thr->heap)); + + duk_debug_set_paused(thr->heap); + + act = thr->callstack_curr; + + /* NOTE: act may be NULL if an error is thrown outside of any activation, + * which may happen in the case of, e.g. syntax errors. + */ + + /* Decrement PC if that was requested, this requires a PC sync. */ + if (act != NULL) { + duk_hthread_sync_currpc(thr); + old_pc = act->curr_pc; + fun = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + + /* Short circuit if is safe: if act->curr_pc != NULL, 'fun' is + * guaranteed to be a non-NULL ECMAScript function. + */ + DUK_ASSERT(act->curr_pc == NULL || + (fun != NULL && DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) fun))); + if (use_prev_pc && + act->curr_pc != NULL && + act->curr_pc > DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, fun)) { + act->curr_pc--; + } + } + + /* Process debug messages until we are no longer paused. */ + + /* NOTE: This is a bit fragile. It's important to ensure that + * duk_debug_process_messages() never throws an error or + * act->curr_pc will never be reset. + */ + + thr->heap->dbg_state_dirty = 1; + while (DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap)) { + DUK_ASSERT(duk_debug_is_attached(thr->heap)); + DUK_ASSERT(thr->heap->dbg_processing == 0); + duk_debug_process_messages(thr, 0 /*no_block*/); + } + + /* XXX: Decrementing and restoring act->curr_pc works now, but if the + * debugger message loop gains the ability to adjust the current PC + * (e.g. a forced jump) restoring the PC here will break. Another + * approach would be to use a state flag for the "decrement 1 from + * topmost activation's PC" and take it into account whenever dealing + * with PC values. + */ + if (act != NULL) { + act->curr_pc = old_pc; /* restore PC */ + } +} + +/* + * Breakpoint management + */ + +DUK_INTERNAL duk_small_int_t duk_debug_add_breakpoint(duk_hthread *thr, duk_hstring *filename, duk_uint32_t line) { + duk_heap *heap; + duk_breakpoint *b; + + /* Caller must trigger recomputation of active breakpoint list. To + * ensure stale values are not used if that doesn't happen, clear the + * active breakpoint list here. + */ + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(filename != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + + if (heap->dbg_breakpoint_count >= DUK_HEAP_MAX_BREAKPOINTS) { + DUK_D(DUK_DPRINT("failed to add breakpoint for %O:%ld, all breakpoint slots used", + (duk_heaphdr *) filename, (long) line)); + return -1; + } + heap->dbg_breakpoints_active[0] = (duk_breakpoint *) NULL; + b = heap->dbg_breakpoints + (heap->dbg_breakpoint_count++); + b->filename = filename; + b->line = line; + DUK_HSTRING_INCREF(thr, filename); + + return (duk_small_int_t) (heap->dbg_breakpoint_count - 1); /* index */ +} + +DUK_INTERNAL duk_bool_t duk_debug_remove_breakpoint(duk_hthread *thr, duk_small_uint_t breakpoint_index) { + duk_heap *heap; + duk_hstring *h; + duk_breakpoint *b; + duk_size_t move_size; + + /* Caller must trigger recomputation of active breakpoint list. To + * ensure stale values are not used if that doesn't happen, clear the + * active breakpoint list here. + */ + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + DUK_ASSERT(duk_debug_is_attached(thr->heap)); + DUK_ASSERT_DISABLE(breakpoint_index >= 0); /* unsigned */ + + if (breakpoint_index >= heap->dbg_breakpoint_count) { + DUK_D(DUK_DPRINT("invalid breakpoint index: %ld", (long) breakpoint_index)); + return 0; + } + b = heap->dbg_breakpoints + breakpoint_index; + + h = b->filename; + DUK_ASSERT(h != NULL); + + move_size = sizeof(duk_breakpoint) * (heap->dbg_breakpoint_count - breakpoint_index - 1); + duk_memmove((void *) b, + (const void *) (b + 1), + (size_t) move_size); + + heap->dbg_breakpoint_count--; + heap->dbg_breakpoints_active[0] = (duk_breakpoint *) NULL; + + DUK_HSTRING_DECREF(thr, h); /* side effects */ + DUK_UNREF(h); /* w/o refcounting */ + + /* Breakpoint entries above the used area are left as garbage. */ + + return 1; +} + +/* + * Misc state management + */ + +DUK_INTERNAL duk_bool_t duk_debug_is_attached(duk_heap *heap) { + return (heap->dbg_read_cb != NULL); +} + +DUK_INTERNAL duk_bool_t duk_debug_is_paused(duk_heap *heap) { + return (DUK_HEAP_HAS_DEBUGGER_PAUSED(heap) != 0); +} + +DUK_INTERNAL void duk_debug_set_paused(duk_heap *heap) { + if (duk_debug_is_paused(heap)) { + DUK_D(DUK_DPRINT("trying to set paused state when already paused, ignoring")); + } else { + DUK_HEAP_SET_DEBUGGER_PAUSED(heap); + heap->dbg_state_dirty = 1; + duk_debug_clear_pause_state(heap); + DUK_ASSERT(heap->ms_running == 0); /* debugger can't be triggered within mark-and-sweep */ + heap->ms_running = 2; /* prevent mark-and-sweep, prevent refzero queueing */ + heap->ms_prevent_count++; + DUK_ASSERT(heap->ms_prevent_count != 0); /* Wrap. */ + DUK_ASSERT(heap->heap_thread != NULL); + } +} + +DUK_INTERNAL void duk_debug_clear_paused(duk_heap *heap) { + if (duk_debug_is_paused(heap)) { + DUK_HEAP_CLEAR_DEBUGGER_PAUSED(heap); + heap->dbg_state_dirty = 1; + duk_debug_clear_pause_state(heap); + DUK_ASSERT(heap->ms_running == 2); + DUK_ASSERT(heap->ms_prevent_count > 0); + heap->ms_prevent_count--; + heap->ms_running = 0; + DUK_ASSERT(heap->heap_thread != NULL); + } else { + DUK_D(DUK_DPRINT("trying to clear paused state when not paused, ignoring")); + } +} + +DUK_INTERNAL void duk_debug_clear_pause_state(duk_heap *heap) { + heap->dbg_pause_flags = 0; + heap->dbg_pause_act = NULL; + heap->dbg_pause_startline = 0; +} + +#else /* DUK_USE_DEBUGGER_SUPPORT */ + +/* No debugger support. */ + +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +/* automatic undefs */ +#undef DUK__DBG_TPORT_ENTER +#undef DUK__DBG_TPORT_EXIT +#undef DUK__SET_CONN_BROKEN +#line 1 "duk_error_augment.c" +/* + * Augmenting errors at their creation site and their throw site. + * + * When errors are created, traceback data is added by built-in code + * and a user error handler (if defined) can process or replace the + * error. Similarly, when errors are thrown, a user error handler + * (if defined) can process or replace the error. + * + * Augmentation and other processing at error creation time is nice + * because an error is only created once, but it may be thrown and + * rethrown multiple times. User error handler registered for processing + * an error at its throw site must be careful to handle rethrowing in + * a useful manner. + * + * Error augmentation may throw an internal error (e.g. alloc error). + * + * ECMAScript allows throwing any values, so all values cannot be + * augmented. Currently, the built-in augmentation at error creation + * only augments error values which are Error instances (= have the + * built-in Error.prototype in their prototype chain) and are also + * extensible. User error handlers have no limitations in this respect. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Helper for calling a user error handler. + * + * 'thr' must be the currently active thread; the error handler is called + * in its context. The valstack of 'thr' must have the error value on + * top, and will be replaced by another error value based on the return + * value of the error handler. + * + * The helper calls duk_handle_call() recursively in protected mode. + * Before that call happens, no longjmps should happen; as a consequence, + * we must assume that the valstack contains enough temporary space for + * arguments and such. + * + * While the error handler runs, any errors thrown will not trigger a + * recursive error handler call (this is implemented using a heap level + * flag which will "follow" through any coroutines resumed inside the + * error handler). If the error handler is not callable or throws an + * error, the resulting error replaces the original error (for Duktape + * internal errors, duk_error_throw.c further substitutes this error with + * a DoubleError which is not ideal). This would be easy to change and + * even signal to the caller. + * + * The user error handler is stored in 'Duktape.errCreate' or + * 'Duktape.errThrow' depending on whether we're augmenting the error at + * creation or throw time. There are several alternatives to this approach, + * see doc/error-objects.rst for discussion. + * + * Note: since further longjmp()s may occur while calling the error handler + * (for many reasons, e.g. a labeled 'break' inside the handler), the + * caller can make no assumptions on the thr->heap->lj state after the + * call (this affects especially duk_error_throw.c). This is not an issue + * as long as the caller writes to the lj state only after the error handler + * finishes. + */ + +#if defined(DUK_USE_ERRTHROW) || defined(DUK_USE_ERRCREATE) +DUK_LOCAL void duk__err_augment_user(duk_hthread *thr, duk_small_uint_t stridx_cb) { + duk_tval *tv_hnd; + duk_int_t rc; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT_STRIDX_VALID(stridx_cb); + + if (thr->heap->augmenting_error) { + DUK_D(DUK_DPRINT("recursive call to error augmentation, ignore")); + return; + } + + /* + * Check whether or not we have an error handler. + * + * We must be careful of not triggering an error when looking up the + * property. For instance, if the property is a getter, we don't want + * to call it, only plain values are allowed. The value, if it exists, + * is not checked. If the value is not a function, a TypeError happens + * when it is called and that error replaces the original one. + */ + + DUK_ASSERT_VALSTACK_SPACE(thr, 4); /* 3 entries actually needed below */ + + /* [ ... errval ] */ + + if (thr->builtins[DUK_BIDX_DUKTAPE] == NULL) { + /* When creating built-ins, some of the built-ins may not be set + * and we want to tolerate that when throwing errors. + */ + DUK_DD(DUK_DDPRINT("error occurred when DUK_BIDX_DUKTAPE is NULL, ignoring")); + return; + } + tv_hnd = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, + thr->builtins[DUK_BIDX_DUKTAPE], + stridx_cb); + if (tv_hnd == NULL) { + DUK_DD(DUK_DDPRINT("error handler does not exist or is not a plain value: %!T", + (duk_tval *) tv_hnd)); + return; + } + DUK_DDD(DUK_DDDPRINT("error handler dump (callability not checked): %!T", + (duk_tval *) tv_hnd)); + duk_push_tval(thr, tv_hnd); + + /* [ ... errval errhandler ] */ + + duk_insert(thr, -2); /* -> [ ... errhandler errval ] */ + duk_push_undefined(thr); + duk_insert(thr, -2); /* -> [ ... errhandler undefined(= this) errval ] */ + + /* [ ... errhandler undefined errval ] */ + + /* + * heap->augmenting_error prevents recursive re-entry and also causes + * call handling to use a larger (but not unbounded) call stack limit + * for the duration of error augmentation. + * + * We ignore errors now: a success return and an error value both + * replace the original error value. (This would be easy to change.) + */ + + DUK_ASSERT(thr->heap->augmenting_error == 0); + thr->heap->augmenting_error = 1; + + rc = duk_pcall_method(thr, 1); + DUK_UNREF(rc); /* no need to check now: both success and error are OK */ + + DUK_ASSERT(thr->heap->augmenting_error == 1); + thr->heap->augmenting_error = 0; + + /* [ ... errval ] */ +} +#endif /* DUK_USE_ERRTHROW || DUK_USE_ERRCREATE */ + +/* + * Add ._Tracedata to an error on the stack top. + */ + +#if defined(DUK_USE_TRACEBACKS) +DUK_LOCAL void duk__add_traceback(duk_hthread *thr, duk_hthread *thr_callstack, const char *c_filename, duk_int_t c_line, duk_small_uint_t flags) { + duk_activation *act; + duk_int_t depth; + duk_int_t arr_size; + duk_tval *tv; + duk_hstring *s; + duk_uint32_t u32; + duk_double_t d; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr_callstack != NULL); + + /* [ ... error ] */ + + /* + * The traceback format is pretty arcane in an attempt to keep it compact + * and cheap to create. It may change arbitrarily from version to version. + * It should be decoded/accessed through version specific accessors only. + * + * See doc/error-objects.rst. + */ + + DUK_DDD(DUK_DDDPRINT("adding traceback to object: %!T", + (duk_tval *) duk_get_tval(thr, -1))); + + /* Preallocate array to correct size, so that we can just write out + * the _Tracedata values into the array part. + */ + act = thr->callstack_curr; + depth = DUK_USE_TRACEBACK_DEPTH; + DUK_ASSERT(thr_callstack->callstack_top <= DUK_INT_MAX); /* callstack limits */ + if (depth > (duk_int_t) thr_callstack->callstack_top) { + depth = (duk_int_t) thr_callstack->callstack_top; + } + if (depth > 0) { + if (flags & DUK_AUGMENT_FLAG_SKIP_ONE) { + DUK_ASSERT(act != NULL); + act = act->parent; + depth--; + } + } + arr_size = depth * 2; + if (thr->compile_ctx != NULL && thr->compile_ctx->h_filename != NULL) { + arr_size += 2; + } + if (c_filename) { + /* We need the C filename to be interned before getting the + * array part pointer to avoid any GC interference while the + * array part is populated. + */ + duk_push_string(thr, c_filename); + arr_size += 2; + } + + /* XXX: Uninitialized would be OK. Maybe add internal primitive to + * push bare duk_harray with size? + */ + DUK_D(DUK_DPRINT("preallocated _Tracedata to %ld items", (long) arr_size)); + tv = duk_push_harray_with_size_outptr(thr, (duk_uint32_t) arr_size); + duk_clear_prototype(thr, -1); + DUK_ASSERT(duk_is_bare_object(thr, -1)); + DUK_ASSERT(arr_size == 0 || tv != NULL); + + /* Compiler SyntaxErrors (and other errors) come first, and are + * blamed by default (not flagged "noblame"). + */ + if (thr->compile_ctx != NULL && thr->compile_ctx->h_filename != NULL) { + s = thr->compile_ctx->h_filename; + DUK_TVAL_SET_STRING(tv, s); + DUK_HSTRING_INCREF(thr, s); + tv++; + + u32 = (duk_uint32_t) thr->compile_ctx->curr_token.start_line; /* (flags<<32) + (line), flags = 0 */ + DUK_TVAL_SET_U32(tv, u32); + tv++; + } + + /* Filename/line from C macros (__FILE__, __LINE__) are added as an + * entry with a special format: (string, number). The number contains + * the line and flags. + */ + + /* [ ... error c_filename? arr ] */ + + if (c_filename) { + DUK_ASSERT(DUK_TVAL_IS_STRING(thr->valstack_top - 2)); + s = DUK_TVAL_GET_STRING(thr->valstack_top - 2); /* interned c_filename */ + DUK_ASSERT(s != NULL); + DUK_TVAL_SET_STRING(tv, s); + DUK_HSTRING_INCREF(thr, s); + tv++; + + d = ((flags & DUK_AUGMENT_FLAG_NOBLAME_FILELINE) ? ((duk_double_t) DUK_TB_FLAG_NOBLAME_FILELINE) * DUK_DOUBLE_2TO32 : 0.0) + + (duk_double_t) c_line; + DUK_TVAL_SET_DOUBLE(tv, d); + tv++; + } + + /* Traceback depth doesn't take into account the filename/line + * special handling above (intentional). + */ + for (; depth-- > 0; act = act->parent) { + duk_uint32_t pc; + duk_tval *tv_src; + + /* [... arr] */ + + DUK_ASSERT(act != NULL); /* depth check above, assumes book-keeping is correct */ + DUK_ASSERT_DISABLE(act->pc >= 0); /* unsigned */ + + /* Add function object. */ + tv_src = &act->tv_func; /* object (function) or lightfunc */ + DUK_ASSERT(DUK_TVAL_IS_OBJECT(tv_src) || DUK_TVAL_IS_LIGHTFUNC(tv_src)); + DUK_TVAL_SET_TVAL(tv, tv_src); + DUK_TVAL_INCREF(thr, tv); + tv++; + + /* Add a number containing: pc, activation flags. + * + * PC points to next instruction, find offending PC. Note that + * PC == 0 for native code. + */ + pc = (duk_uint32_t) duk_hthread_get_act_prev_pc(thr_callstack, act); + DUK_ASSERT_DISABLE(pc >= 0); /* unsigned */ + DUK_ASSERT((duk_double_t) pc < DUK_DOUBLE_2TO32); /* assume PC is at most 32 bits and non-negative */ + d = ((duk_double_t) act->flags) * DUK_DOUBLE_2TO32 + (duk_double_t) pc; + DUK_TVAL_SET_DOUBLE(tv, d); + tv++; + } + +#if defined(DUK_USE_ASSERTIONS) + { + duk_harray *a; + a = (duk_harray *) duk_known_hobject(thr, -1); + DUK_ASSERT(a != NULL); + DUK_ASSERT((duk_uint32_t) (tv - DUK_HOBJECT_A_GET_BASE(thr->heap, (duk_hobject *) a)) == a->length); + DUK_ASSERT(a->length == (duk_uint32_t) arr_size); + DUK_ASSERT(duk_is_bare_object(thr, -1)); + } +#endif + + /* [ ... error c_filename? arr ] */ + + if (c_filename) { + duk_remove_m2(thr); + } + + /* [ ... error arr ] */ + + duk_xdef_prop_stridx_short_wec(thr, -2, DUK_STRIDX_INT_TRACEDATA); /* -> [ ... error ] */ +} +#endif /* DUK_USE_TRACEBACKS */ + +/* + * Add .fileName and .lineNumber to an error on the stack top. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) && !defined(DUK_USE_TRACEBACKS) +DUK_LOCAL void duk__add_fileline(duk_hthread *thr, duk_hthread *thr_callstack, const char *c_filename, duk_int_t c_line, duk_small_uint_t flags) { +#if defined(DUK_USE_ASSERTIONS) + duk_int_t entry_top; +#endif + +#if defined(DUK_USE_ASSERTIONS) + entry_top = duk_get_top(thr); +#endif + + /* + * If tracebacks are disabled, 'fileName' and 'lineNumber' are added + * as plain own properties. Since Error.prototype has accessors of + * the same name, we need to define own properties directly (cannot + * just use e.g. duk_put_prop_stridx). Existing properties are not + * overwritten in case they already exist. + */ + + if (thr->compile_ctx != NULL && thr->compile_ctx->h_filename != NULL) { + /* Compiler SyntaxError (or other error) gets the primary blame. + * Currently no flag to prevent blaming. + */ + duk_push_uint(thr, (duk_uint_t) thr->compile_ctx->curr_token.start_line); + duk_push_hstring(thr, thr->compile_ctx->h_filename); + } else if (c_filename && (flags & DUK_AUGMENT_FLAG_NOBLAME_FILELINE) == 0) { + /* C call site gets blamed next, unless flagged not to do so. + * XXX: file/line is disabled in minimal builds, so disable this + * too when appropriate. + */ + duk_push_int(thr, c_line); + duk_push_string(thr, c_filename); + } else { + /* Finally, blame the innermost callstack entry which has a + * .fileName property. + */ + duk_small_uint_t depth; + duk_uint32_t ecma_line; + duk_activation *act; + + DUK_ASSERT(thr_callstack->callstack_top <= DUK_INT_MAX); /* callstack limits */ + depth = DUK_USE_TRACEBACK_DEPTH; + if (depth > thr_callstack->callstack_top) { + depth = thr_callstack->callstack_top; + } + for (act = thr_callstack->callstack_curr; depth-- > 0; act = act->parent) { + duk_hobject *func; + duk_uint32_t pc; + + DUK_ASSERT(act != NULL); + func = DUK_ACT_GET_FUNC(act); + if (func == NULL) { + /* Lightfunc, not blamed now. */ + continue; + } + + /* PC points to next instruction, find offending PC, + * PC == 0 for native code. + */ + pc = duk_hthread_get_act_prev_pc(thr, act); /* thr argument only used for thr->heap, so specific thread doesn't matter */ + DUK_UNREF(pc); + DUK_ASSERT_DISABLE(pc >= 0); /* unsigned */ + DUK_ASSERT((duk_double_t) pc < DUK_DOUBLE_2TO32); /* assume PC is at most 32 bits and non-negative */ + + duk_push_hobject(thr, func); + + /* [ ... error func ] */ + + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_FILE_NAME); + if (!duk_is_string_notsymbol(thr, -1)) { + duk_pop_2(thr); + continue; + } + + /* [ ... error func fileName ] */ + + ecma_line = 0; +#if defined(DUK_USE_PC2LINE) + if (DUK_HOBJECT_IS_COMPFUNC(func)) { + ecma_line = duk_hobject_pc2line_query(thr, -2, (duk_uint_fast32_t) pc); + } else { + /* Native function, no relevant lineNumber. */ + } +#endif /* DUK_USE_PC2LINE */ + duk_push_u32(thr, ecma_line); + + /* [ ... error func fileName lineNumber ] */ + + duk_replace(thr, -3); + + /* [ ... error lineNumber fileName ] */ + goto define_props; + } + + /* No activation matches, use undefined for both .fileName and + * .lineNumber (matches what we do with a _Tracedata based + * no-match lookup. + */ + duk_push_undefined(thr); + duk_push_undefined(thr); + } + + define_props: + /* [ ... error lineNumber fileName ] */ +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(duk_get_top(thr) == entry_top + 2); +#endif + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_FILE_NAME, DUK_PROPDESC_FLAGS_C | DUK_PROPDESC_FLAG_NO_OVERWRITE); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LINE_NUMBER, DUK_PROPDESC_FLAGS_C | DUK_PROPDESC_FLAG_NO_OVERWRITE); +} +#endif /* DUK_USE_AUGMENT_ERROR_CREATE && !DUK_USE_TRACEBACKS */ + +/* + * Add line number to a compiler error. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) +DUK_LOCAL void duk__add_compiler_error_line(duk_hthread *thr) { + + /* Append a "(line NNN)" to the "message" property of any error + * thrown during compilation. Usually compilation errors are + * SyntaxErrors but they can also be out-of-memory errors and + * the like. + */ + + /* [ ... error ] */ + + DUK_ASSERT(duk_is_object(thr, -1)); + + if (!(thr->compile_ctx != NULL && thr->compile_ctx->h_filename != NULL)) { + return; + } + + DUK_DDD(DUK_DDDPRINT("compile error, before adding line info: %!T", + (duk_tval *) duk_get_tval(thr, -1))); + + if (duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_MESSAGE)) { + duk_bool_t at_end; + + /* Best guesstimate that error occurred at end of input, token + * truncated by end of input, etc. + */ +#if 0 + at_end = (thr->compile_ctx->curr_token.start_offset + 1 >= thr->compile_ctx->lex.input_length); + at_end = (thr->compile_ctx->lex.window[0].codepoint < 0 || thr->compile_ctx->lex.window[1].codepoint < 0); +#endif + at_end = (thr->compile_ctx->lex.window[0].codepoint < 0); + + DUK_D(DUK_DPRINT("syntax error, determined at_end=%ld; curr_token.start_offset=%ld, " + "lex.input_length=%ld, window[0].codepoint=%ld, window[1].codepoint=%ld", + (long) at_end, + (long) thr->compile_ctx->curr_token.start_offset, + (long) thr->compile_ctx->lex.input_length, + (long) thr->compile_ctx->lex.window[0].codepoint, + (long) thr->compile_ctx->lex.window[1].codepoint)); + + duk_push_sprintf(thr, " (line %ld%s)", + (long) thr->compile_ctx->curr_token.start_line, + at_end ? ", end of input" : ""); + duk_concat(thr, 2); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_MESSAGE); + } else { + duk_pop(thr); + } + + DUK_DDD(DUK_DDDPRINT("compile error, after adding line info: %!T", + (duk_tval *) duk_get_tval(thr, -1))); +} +#endif /* DUK_USE_AUGMENT_ERROR_CREATE */ + +/* + * Augment an error being created using Duktape specific properties + * like _Tracedata or .fileName/.lineNumber. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) +DUK_LOCAL void duk__err_augment_builtin_create(duk_hthread *thr, duk_hthread *thr_callstack, const char *c_filename, duk_int_t c_line, duk_hobject *obj, duk_small_uint_t flags) { +#if defined(DUK_USE_ASSERTIONS) + duk_int_t entry_top; +#endif + +#if defined(DUK_USE_ASSERTIONS) + entry_top = duk_get_top(thr); +#endif + DUK_ASSERT(obj != NULL); + + DUK_UNREF(obj); /* unreferenced w/o tracebacks */ + + duk__add_compiler_error_line(thr); + +#if defined(DUK_USE_TRACEBACKS) + /* If tracebacks are enabled, the '_Tracedata' property is the only + * thing we need: 'fileName' and 'lineNumber' are virtual properties + * which use '_Tracedata'. (Check _Tracedata only as own property.) + */ + if (duk_hobject_find_entry_tval_ptr_stridx(thr->heap, obj, DUK_STRIDX_INT_TRACEDATA) != NULL) { + DUK_DDD(DUK_DDDPRINT("error value already has a '_Tracedata' property, not modifying it")); + } else { + duk__add_traceback(thr, thr_callstack, c_filename, c_line, flags); + } +#else + /* Without tracebacks the concrete .fileName and .lineNumber need + * to be added directly. + */ + duk__add_fileline(thr, thr_callstack, c_filename, c_line, flags); +#endif + +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(duk_get_top(thr) == entry_top); +#endif +} +#endif /* DUK_USE_AUGMENT_ERROR_CREATE */ + +/* + * Augment an error at creation time with _Tracedata/fileName/lineNumber + * and allow a user error handler (if defined) to process/replace the error. + * The error to be augmented is at the stack top. + * + * thr: thread containing the error value + * thr_callstack: thread which should be used for generating callstack etc. + * c_filename: C __FILE__ related to the error + * c_line: C __LINE__ related to the error + * flags & DUK_AUGMENT_FLAG_NOBLAME_FILELINE: + * if true, don't fileName/line as error source, otherwise use traceback + * (needed because user code filename/line are reported but internal ones + * are not) + */ + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) +DUK_INTERNAL void duk_err_augment_error_create(duk_hthread *thr, duk_hthread *thr_callstack, const char *c_filename, duk_int_t c_line, duk_small_uint_t flags) { + duk_hobject *obj; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr_callstack != NULL); + + /* [ ... error ] */ + + /* + * Criteria for augmenting: + * + * - augmentation enabled in build (naturally) + * - error value internal prototype chain contains the built-in + * Error prototype object (i.e. 'val instanceof Error') + * + * Additional criteria for built-in augmenting: + * + * - error value is an extensible object + */ + + obj = duk_get_hobject(thr, -1); + if (!obj) { + DUK_DDD(DUK_DDDPRINT("value is not an object, skip both built-in and user augment")); + return; + } + if (!duk_hobject_prototype_chain_contains(thr, obj, thr->builtins[DUK_BIDX_ERROR_PROTOTYPE], 1 /*ignore_loop*/)) { + /* If the value has a prototype loop, it's critical not to + * throw here. Instead, assume the value is not to be + * augmented. + */ + DUK_DDD(DUK_DDDPRINT("value is not an error instance, skip both built-in and user augment")); + return; + } + if (DUK_HOBJECT_HAS_EXTENSIBLE(obj)) { + DUK_DDD(DUK_DDDPRINT("error meets criteria, built-in augment")); + duk__err_augment_builtin_create(thr, thr_callstack, c_filename, c_line, obj, flags); + } else { + DUK_DDD(DUK_DDDPRINT("error does not meet criteria, no built-in augment")); + } + + /* [ ... error ] */ + +#if defined(DUK_USE_ERRCREATE) + duk__err_augment_user(thr, DUK_STRIDX_ERR_CREATE); +#endif +} +#endif /* DUK_USE_AUGMENT_ERROR_CREATE */ + +/* + * Augment an error at throw time; allow a user error handler (if defined) + * to process/replace the error. The error to be augmented is at the + * stack top. + */ + +#if defined(DUK_USE_AUGMENT_ERROR_THROW) +DUK_INTERNAL void duk_err_augment_error_throw(duk_hthread *thr) { +#if defined(DUK_USE_ERRTHROW) + duk__err_augment_user(thr, DUK_STRIDX_ERR_THROW); +#endif /* DUK_USE_ERRTHROW */ +} +#endif /* DUK_USE_AUGMENT_ERROR_THROW */ +#line 1 "duk_error_longjmp.c" +/* + * Do a longjmp call, calling the fatal error handler if no + * catchpoint exists. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_PREFER_SIZE) +DUK_NORETURN(DUK_LOCAL_DECL void duk__uncaught_minimal(duk_hthread *thr)); +DUK_LOCAL void duk__uncaught_minimal(duk_hthread *thr) { + (void) duk_fatal(thr, "uncaught error"); + DUK_WO_NORETURN(return;); +} +#endif + +#if 0 +DUK_NORETURN(DUK_LOCAL_DECL void duk__uncaught_readable(duk_hthread *thr)); +DUK_LOCAL void duk__uncaught_readable(duk_hthread *thr) { + const char *summary; + char buf[DUK_USE_FATAL_MAXLEN]; + + summary = duk_push_string_tval_readable(thr, &thr->heap->lj.value1); + DUK_SNPRINTF(buf, sizeof(buf), "uncaught: %s", summary); + buf[sizeof(buf) - 1] = (char) 0; + (void) duk_fatal(thr, (const char *) buf); + DUK_WO_NORETURN(return;); +} +#endif + +#if !defined(DUK_USE_PREFER_SIZE) +DUK_NORETURN(DUK_LOCAL_DECL void duk__uncaught_error_aware(duk_hthread *thr)); +DUK_LOCAL void duk__uncaught_error_aware(duk_hthread *thr) { + const char *summary; + char buf[DUK_USE_FATAL_MAXLEN]; + + summary = duk_push_string_tval_readable_error(thr, &thr->heap->lj.value1); + DUK_ASSERT(summary != NULL); + DUK_SNPRINTF(buf, sizeof(buf), "uncaught: %s", summary); + buf[sizeof(buf) - 1] = (char) 0; + (void) duk_fatal(thr, (const char *) buf); + DUK_WO_NORETURN(return;); +} +#endif + +DUK_INTERNAL void duk_err_longjmp(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + + DUK_DD(DUK_DDPRINT("longjmp error: type=%d iserror=%d value1=%!T value2=%!T", + (int) thr->heap->lj.type, (int) thr->heap->lj.iserror, + &thr->heap->lj.value1, &thr->heap->lj.value2)); + + /* Prevent finalizer execution during error handling. All error + * handling sites will process pending finalizers once error handling + * is complete and we're ready for the side effects. Does not prevent + * refzero freeing or mark-and-sweep during error handling. + * + * NOTE: when we come here some calling code may have used DECREF + * NORZ macros without an explicit DUK_REFZERO_CHECK_xxx() call. + * We don't want to do it here because it would just check for + * pending finalizers and we prevent that explicitly. Instead, + * the error catcher will run the finalizers once error handling + * is complete. + */ + + DUK_ASSERT_LJSTATE_SET(thr->heap); + + thr->heap->pf_prevent_count++; + DUK_ASSERT(thr->heap->pf_prevent_count != 0); /* Wrap. */ + +#if defined(DUK_USE_ASSERTIONS) + /* XXX: set this immediately when longjmp state is set */ + DUK_ASSERT(thr->heap->error_not_allowed == 0); /* Detect error within critical section. */ + thr->heap->error_not_allowed = 1; +#endif + + DUK_DD(DUK_DDPRINT("about to longjmp, pf_prevent_count=%ld", (long) thr->heap->pf_prevent_count)); + + /* If we don't have a jmpbuf_ptr, there is little we can do except + * cause a fatal error. The caller's expectation is that we never + * return. + */ + if (!thr->heap->lj.jmpbuf_ptr) { + DUK_D(DUK_DPRINT("uncaught error: type=%d iserror=%d value1=%!T value2=%!T", + (int) thr->heap->lj.type, (int) thr->heap->lj.iserror, + &thr->heap->lj.value1, &thr->heap->lj.value2)); + +#if defined(DUK_USE_PREFER_SIZE) + duk__uncaught_minimal(thr); +#else + duk__uncaught_error_aware(thr); +#endif + DUK_UNREACHABLE(); + } + +#if defined(DUK_USE_CPP_EXCEPTIONS) + throw duk_internal_exception(); /* dummy */ +#else + DUK_LONGJMP(thr->heap->lj.jmpbuf_ptr->jb); +#endif + + DUK_UNREACHABLE(); +} +#line 1 "duk_error_misc.c" +/* + * Error helpers + */ + +/* #include duk_internal.h -> already included */ + +/* + * Helper to walk the thread chain and see if there is an active error + * catcher. Protected calls or finally blocks aren't considered catching. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_LOCAL duk_bool_t duk__have_active_catcher(duk_hthread *thr) { + /* As noted above, a protected API call won't be counted as a + * catcher. This is usually convenient, e.g. in the case of a top- + * level duk_pcall(), but may not always be desirable. Perhaps add + * an argument to treat them as catchers? + */ + + duk_activation *act; + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + + for (; thr != NULL; thr = thr->resumer) { + for (act = thr->callstack_curr; act != NULL; act = act->parent) { + for (cat = act->cat; cat != NULL; cat = cat->parent) { + if (DUK_CAT_HAS_CATCH_ENABLED(cat)) { + return 1; /* all we need to know */ + } + } + } + } + return 0; +} +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +/* + * Get prototype object for an integer error code. + */ + +DUK_INTERNAL duk_hobject *duk_error_prototype_from_code(duk_hthread *thr, duk_errcode_t code) { + switch (code) { + case DUK_ERR_EVAL_ERROR: + return thr->builtins[DUK_BIDX_EVAL_ERROR_PROTOTYPE]; + case DUK_ERR_RANGE_ERROR: + return thr->builtins[DUK_BIDX_RANGE_ERROR_PROTOTYPE]; + case DUK_ERR_REFERENCE_ERROR: + return thr->builtins[DUK_BIDX_REFERENCE_ERROR_PROTOTYPE]; + case DUK_ERR_SYNTAX_ERROR: + return thr->builtins[DUK_BIDX_SYNTAX_ERROR_PROTOTYPE]; + case DUK_ERR_TYPE_ERROR: + return thr->builtins[DUK_BIDX_TYPE_ERROR_PROTOTYPE]; + case DUK_ERR_URI_ERROR: + return thr->builtins[DUK_BIDX_URI_ERROR_PROTOTYPE]; + case DUK_ERR_ERROR: + default: + return thr->builtins[DUK_BIDX_ERROR_PROTOTYPE]; + } +} + +/* + * Helper for debugger throw notify and pause-on-uncaught integration. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_INTERNAL void duk_err_check_debugger_integration(duk_hthread *thr) { + duk_bool_t uncaught; + duk_tval *tv_obj; + + /* If something is thrown with the debugger attached and nobody will + * catch it, execution is paused before the longjmp, turning over + * control to the debug client. This allows local state to be examined + * before the stack is unwound. Errors are not intercepted when debug + * message loop is active (e.g. for Eval). + */ + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + + /* XXX: Allow customizing the pause and notify behavior at runtime + * using debugger runtime flags. For now the behavior is fixed using + * config options. + */ + + if (!duk_debug_is_attached(thr->heap) || + thr->heap->dbg_processing || + thr->heap->lj.type != DUK_LJ_TYPE_THROW || + thr->heap->creating_error) { + DUK_D(DUK_DPRINT("skip debugger error integration; not attached, debugger processing, not THROW, or error thrown while creating error")); + return; + } + + /* Don't intercept a DoubleError, we may have caused the initial double + * fault and attempting to intercept it will cause us to be called + * recursively and exhaust the C stack. (This should no longer happen + * for the initial throw because DoubleError path doesn't do a debugger + * integration check, but it might happen for rethrows.) + */ + tv_obj = &thr->heap->lj.value1; + if (DUK_TVAL_IS_OBJECT(tv_obj) && DUK_TVAL_GET_OBJECT(tv_obj) == thr->builtins[DUK_BIDX_DOUBLE_ERROR]) { + DUK_D(DUK_DPRINT("built-in DoubleError instance (re)thrown, not intercepting")); + return; + } + + uncaught = !duk__have_active_catcher(thr); + + /* Debugger code expects the value at stack top. This also serves + * as a backup: we need to store/restore the longjmp state because + * when the debugger is paused Eval commands may be executed and + * they can arbitrarily clobber the longjmp state. + */ + duk_push_tval(thr, tv_obj); + + /* Store and reset longjmp state. */ + DUK_ASSERT_LJSTATE_SET(thr->heap); + DUK_TVAL_DECREF_NORZ(thr, tv_obj); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&thr->heap->lj.value2)); /* Always for THROW type. */ + DUK_TVAL_SET_UNDEFINED(tv_obj); + thr->heap->lj.type = DUK_LJ_TYPE_UNKNOWN; + DUK_ASSERT_LJSTATE_UNSET(thr->heap); + +#if defined(DUK_USE_DEBUGGER_THROW_NOTIFY) + /* Report it to the debug client */ + DUK_D(DUK_DPRINT("throw with debugger attached, report to client")); + duk_debug_send_throw(thr, uncaught); +#endif + + if (uncaught) { + if (thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_UNCAUGHT_ERROR) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by uncaught error")); + duk_debug_halt_execution(thr, 1 /*use_prev_pc*/); + } + } else { + if (thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_CAUGHT_ERROR) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by caught error")); + duk_debug_halt_execution(thr, 1 /*use_prev_pc*/); + } + } + + /* Restore longjmp state. */ + DUK_ASSERT_LJSTATE_UNSET(thr->heap); + thr->heap->lj.type = DUK_LJ_TYPE_THROW; + tv_obj = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&thr->heap->lj.value1)); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(&thr->heap->lj.value2)); + DUK_TVAL_SET_TVAL(&thr->heap->lj.value1, tv_obj); + DUK_TVAL_INCREF(thr, tv_obj); + DUK_ASSERT_LJSTATE_SET(thr->heap); + + duk_pop(thr); +} +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +/* + * Helpers for setting up heap longjmp state. + */ + +DUK_INTERNAL void duk_err_setup_ljstate1(duk_hthread *thr, duk_small_uint_t lj_type, duk_tval *tv_val) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + heap = thr->heap; + DUK_ASSERT(heap != NULL); + DUK_ASSERT(tv_val != NULL); + + DUK_ASSERT_LJSTATE_UNSET(heap); + + heap->lj.type = lj_type; + DUK_TVAL_SET_TVAL(&heap->lj.value1, tv_val); + DUK_TVAL_INCREF(thr, tv_val); + + DUK_ASSERT_LJSTATE_SET(heap); +} +#line 1 "duk_error_throw.c" +/* + * Create and throw an ECMAScript error object based on a code and a message. + * + * Used when we throw errors internally. ECMAScript generated error objects + * are created by ECMAScript code, and the throwing is handled by the bytecode + * executor. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Create and throw an error (originating from Duktape internally) + * + * Push an error object on top of the stack, possibly throw augmenting + * the error, and finally longjmp. + * + * If an error occurs while we're dealing with the current error, we might + * enter an infinite recursion loop. This is prevented by detecting a + * "double fault" through the heap->creating_error flag; the recursion + * then stops at the second level. + */ + +#if defined(DUK_USE_VERBOSE_ERRORS) +DUK_INTERNAL void duk_err_create_and_throw(duk_hthread *thr, duk_errcode_t code, const char *msg, const char *filename, duk_int_t line) { +#else +DUK_INTERNAL void duk_err_create_and_throw(duk_hthread *thr, duk_errcode_t code) { +#endif +#if defined(DUK_USE_VERBOSE_ERRORS) + DUK_DD(DUK_DDPRINT("duk_err_create_and_throw(): code=%ld, msg=%s, filename=%s, line=%ld", + (long) code, (const char *) msg, + (const char *) filename, (long) line)); +#else + DUK_DD(DUK_DDPRINT("duk_err_create_and_throw(): code=%ld", (long) code)); +#endif + + DUK_ASSERT(thr != NULL); + + /* Even though nested call is possible because we throw an error when + * trying to create an error, the potential errors must happen before + * the longjmp state is configured. + */ + DUK_ASSERT_LJSTATE_UNSET(thr->heap); + + /* Sync so that augmentation sees up-to-date activations, NULL + * thr->ptr_curr_pc so that it's not used if side effects occur + * in augmentation or longjmp handling. + */ + duk_hthread_sync_and_null_currpc(thr); + + /* + * Create and push an error object onto the top of stack. + * The error is potentially augmented before throwing. + * + * If a "double error" occurs, use a fixed error instance + * to avoid further trouble. + */ + + if (thr->heap->creating_error) { + duk_tval tv_val; + duk_hobject *h_err; + + thr->heap->creating_error = 0; + + h_err = thr->builtins[DUK_BIDX_DOUBLE_ERROR]; + if (h_err != NULL) { + DUK_D(DUK_DPRINT("double fault detected -> use built-in fixed 'double error' instance")); + DUK_TVAL_SET_OBJECT(&tv_val, h_err); + } else { + DUK_D(DUK_DPRINT("double fault detected; there is no built-in fixed 'double error' instance " + "-> use the error code as a number")); + DUK_TVAL_SET_I32(&tv_val, (duk_int32_t) code); + } + + duk_err_setup_ljstate1(thr, DUK_LJ_TYPE_THROW, &tv_val); + + /* No augmentation to avoid any allocations or side effects. */ + } else { + /* Prevent infinite recursion. Extra call stack and C + * recursion headroom (see GH-191) is added for augmentation. + * That is now signalled by heap->augmenting error and taken + * into account in call handling without an explicit limit bump. + */ + thr->heap->creating_error = 1; + + duk_require_stack(thr, 1); + + /* XXX: usually unnecessary '%s' formatting here, but cannot + * use 'msg' as a format string directly. + */ +#if defined(DUK_USE_VERBOSE_ERRORS) + duk_push_error_object_raw(thr, + code | DUK_ERRCODE_FLAG_NOBLAME_FILELINE, + filename, + line, + "%s", + (const char *) msg); +#else + duk_push_error_object_raw(thr, + code | DUK_ERRCODE_FLAG_NOBLAME_FILELINE, + NULL, + 0, + NULL); +#endif + + /* Note that an alloc error may happen during error augmentation. + * This may happen both when the original error is an alloc error + * and when it's something else. Because any error in augmentation + * must be handled correctly anyway, there's no special check for + * avoiding it for alloc errors (this differs from Duktape 1.x). + */ +#if defined(DUK_USE_AUGMENT_ERROR_THROW) + DUK_DDD(DUK_DDDPRINT("THROW ERROR (INTERNAL): %!iT (before throw augment)", + (duk_tval *) duk_get_tval(thr, -1))); + duk_err_augment_error_throw(thr); +#endif + + duk_err_setup_ljstate1(thr, DUK_LJ_TYPE_THROW, DUK_GET_TVAL_NEGIDX(thr, -1)); + thr->heap->creating_error = 0; + + /* Error is now created and we assume no errors can occur any + * more. Check for debugger Throw integration only when the + * error is complete. If we enter debugger message loop, + * creating_error must be 0 so that errors can be thrown in + * the paused state, e.g. in Eval commands. + */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_err_check_debugger_integration(thr); +#endif + } + + /* + * Finally, longjmp + */ + + DUK_DDD(DUK_DDDPRINT("THROW ERROR (INTERNAL): %!iT, %!iT (after throw augment)", + (duk_tval *) &thr->heap->lj.value1, (duk_tval *) &thr->heap->lj.value2)); + + duk_err_longjmp(thr); + DUK_UNREACHABLE(); +} + +/* + * Helper for C function call negative return values. + */ + +DUK_INTERNAL void duk_error_throw_from_negative_rc(duk_hthread *thr, duk_ret_t rc) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(rc < 0); + + /* + * The __FILE__ and __LINE__ information is intentionally not used in the + * creation of the error object, as it isn't useful in the tracedata. The + * tracedata still contains the function which returned the negative return + * code, and having the file/line of this function isn't very useful. + * + * The error messages for DUK_RET_xxx shorthand are intentionally very + * minimal: they're only really useful for low memory targets. + */ + + duk_error_raw(thr, -rc, NULL, 0, "error (rc %ld)", (long) rc); + DUK_WO_NORETURN(return;); +} +#line 1 "duk_hbuffer_alloc.c" +/* + * duk_hbuffer allocation and freeing. + */ + +/* #include duk_internal.h -> already included */ + +/* Allocate a new duk_hbuffer of a certain type and return a pointer to it + * (NULL on error). Write buffer data pointer to 'out_bufdata' (only if + * allocation successful). + */ +DUK_INTERNAL duk_hbuffer *duk_hbuffer_alloc(duk_heap *heap, duk_size_t size, duk_small_uint_t flags, void **out_bufdata) { + duk_hbuffer *res = NULL; + duk_size_t header_size; + duk_size_t alloc_size; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(out_bufdata != NULL); + + DUK_DDD(DUK_DDDPRINT("allocate hbuffer")); + + /* Size sanity check. Should not be necessary because caller is + * required to check this, but we don't want to cause a segfault + * if the size wraps either in duk_size_t computation or when + * storing the size in a 16-bit field. + */ + if (size > DUK_HBUFFER_MAX_BYTELEN) { + DUK_D(DUK_DPRINT("hbuffer alloc failed: size too large: %ld", (long) size)); + return NULL; /* no need to write 'out_bufdata' */ + } + + if (flags & DUK_BUF_FLAG_EXTERNAL) { + header_size = sizeof(duk_hbuffer_external); + alloc_size = sizeof(duk_hbuffer_external); + } else if (flags & DUK_BUF_FLAG_DYNAMIC) { + header_size = sizeof(duk_hbuffer_dynamic); + alloc_size = sizeof(duk_hbuffer_dynamic); + } else { + header_size = sizeof(duk_hbuffer_fixed); + alloc_size = sizeof(duk_hbuffer_fixed) + size; + DUK_ASSERT(alloc_size >= sizeof(duk_hbuffer_fixed)); /* no wrapping */ + } + + res = (duk_hbuffer *) DUK_ALLOC(heap, alloc_size); + if (DUK_UNLIKELY(res == NULL)) { + goto alloc_error; + } + + /* zero everything unless requested not to do so */ +#if defined(DUK_USE_ZERO_BUFFER_DATA) + duk_memzero((void *) res, + (flags & DUK_BUF_FLAG_NOZERO) ? header_size : alloc_size); +#else + duk_memzero((void *) res, header_size); +#endif + + if (flags & DUK_BUF_FLAG_EXTERNAL) { + duk_hbuffer_external *h; + h = (duk_hbuffer_external *) res; + DUK_UNREF(h); + *out_bufdata = NULL; +#if defined(DUK_USE_EXPLICIT_NULL_INIT) +#if defined(DUK_USE_HEAPPTR16) +/* the compressed pointer is zeroed which maps to NULL, so nothing to do. */ +#else + DUK_HBUFFER_EXTERNAL_SET_DATA_PTR(heap, h, NULL); +#endif +#endif + DUK_ASSERT(DUK_HBUFFER_EXTERNAL_GET_DATA_PTR(heap, h) == NULL); + } else if (flags & DUK_BUF_FLAG_DYNAMIC) { + duk_hbuffer_dynamic *h = (duk_hbuffer_dynamic *) res; + void *ptr; + + if (size > 0) { + DUK_ASSERT(!(flags & DUK_BUF_FLAG_EXTERNAL)); /* alloc external with size zero */ + DUK_DDD(DUK_DDDPRINT("dynamic buffer with nonzero size, alloc actual buffer")); +#if defined(DUK_USE_ZERO_BUFFER_DATA) + ptr = DUK_ALLOC_ZEROED(heap, size); +#else + ptr = DUK_ALLOC(heap, size); +#endif + if (DUK_UNLIKELY(ptr == NULL)) { + /* Because size > 0, NULL check is correct */ + goto alloc_error; + } + *out_bufdata = ptr; + + DUK_HBUFFER_DYNAMIC_SET_DATA_PTR(heap, h, ptr); + } else { + *out_bufdata = NULL; +#if defined(DUK_USE_EXPLICIT_NULL_INIT) +#if defined(DUK_USE_HEAPPTR16) +/* the compressed pointer is zeroed which maps to NULL, so nothing to do. */ +#else + DUK_HBUFFER_DYNAMIC_SET_DATA_PTR(heap, h, NULL); +#endif +#endif + DUK_ASSERT(DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap, h) == NULL); + } + } else { + *out_bufdata = (void *) ((duk_hbuffer_fixed *) (void *) res + 1); + } + + DUK_HBUFFER_SET_SIZE(res, size); + + DUK_HEAPHDR_SET_TYPE(&res->hdr, DUK_HTYPE_BUFFER); + if (flags & DUK_BUF_FLAG_DYNAMIC) { + DUK_HBUFFER_SET_DYNAMIC(res); + if (flags & DUK_BUF_FLAG_EXTERNAL) { + DUK_HBUFFER_SET_EXTERNAL(res); + } + } else { + DUK_ASSERT(!(flags & DUK_BUF_FLAG_EXTERNAL)); + } + DUK_HEAP_INSERT_INTO_HEAP_ALLOCATED(heap, &res->hdr); + + DUK_DDD(DUK_DDDPRINT("allocated hbuffer: %p", (void *) res)); + return res; + + alloc_error: + DUK_DD(DUK_DDPRINT("hbuffer allocation failed")); + + DUK_FREE(heap, res); + return NULL; /* no need to write 'out_bufdata' */ +} + +/* For indirect allocs. */ + +DUK_INTERNAL void *duk_hbuffer_get_dynalloc_ptr(duk_heap *heap, void *ud) { + duk_hbuffer_dynamic *buf = (duk_hbuffer_dynamic *) ud; + DUK_UNREF(heap); + return (void *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap, buf); +} +#line 1 "duk_hbuffer_assert.c" +/* + * duk_hbuffer assertion helpers + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ASSERTIONS) + +DUK_INTERNAL void duk_hbuffer_assert_valid(duk_hbuffer *h) { + DUK_ASSERT(h != NULL); +} + +#endif /* DUK_USE_ASSERTIONS */ +#line 1 "duk_hbuffer_ops.c" +/* + * duk_hbuffer operations such as resizing and inserting/appending data to + * a dynamic buffer. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Resizing + */ + +DUK_INTERNAL void duk_hbuffer_resize(duk_hthread *thr, duk_hbuffer_dynamic *buf, duk_size_t new_size) { + void *res; + duk_size_t prev_size; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(buf != NULL); + DUK_ASSERT(DUK_HBUFFER_HAS_DYNAMIC(buf)); + DUK_ASSERT(!DUK_HBUFFER_HAS_EXTERNAL(buf)); + + /* + * Maximum size check + */ + + if (new_size > DUK_HBUFFER_MAX_BYTELEN) { + DUK_ERROR_RANGE(thr, "buffer too long"); + DUK_WO_NORETURN(return;); + } + + /* + * Note: use indirect realloc variant just in case mark-and-sweep + * (finalizers) might resize this same buffer during garbage + * collection. + */ + + res = DUK_REALLOC_INDIRECT(thr->heap, duk_hbuffer_get_dynalloc_ptr, (void *) buf, new_size); + if (DUK_LIKELY(res != NULL || new_size == 0)) { + /* 'res' may be NULL if new allocation size is 0. */ + + DUK_DDD(DUK_DDDPRINT("resized dynamic buffer %p:%ld -> %p:%ld", + (void *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, buf), + (long) DUK_HBUFFER_DYNAMIC_GET_SIZE(buf), + (void *) res, + (long) new_size)); + + /* + * The entire allocated buffer area, regardless of actual used + * size, is kept zeroed in resizes for simplicity. If the buffer + * is grown, zero the new part. + */ + + prev_size = DUK_HBUFFER_DYNAMIC_GET_SIZE(buf); + if (new_size > prev_size) { + DUK_ASSERT(new_size - prev_size > 0); +#if defined(DUK_USE_ZERO_BUFFER_DATA) + duk_memzero((void *) ((char *) res + prev_size), + (duk_size_t) (new_size - prev_size)); +#endif + } + + DUK_HBUFFER_DYNAMIC_SET_SIZE(buf, new_size); + DUK_HBUFFER_DYNAMIC_SET_DATA_PTR(thr->heap, buf, res); + } else { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return;); + } + + DUK_ASSERT(res != NULL || new_size == 0); +} + +DUK_INTERNAL void duk_hbuffer_reset(duk_hthread *thr, duk_hbuffer_dynamic *buf) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(buf != NULL); + DUK_ASSERT(DUK_HBUFFER_HAS_DYNAMIC(buf)); + DUK_ASSERT(!DUK_HBUFFER_HAS_EXTERNAL(buf)); + + duk_hbuffer_resize(thr, buf, 0); +} +/* #include duk_internal.h -> already included */ +#line 2 "duk_hbufobj_misc.c" + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_uint_t duk_hbufobj_clamp_bytelength(duk_hbufobj *h_bufobj, duk_uint_t len) { + duk_uint_t buf_size; + duk_uint_t buf_avail; + + DUK_ASSERT(h_bufobj != NULL); + DUK_ASSERT(h_bufobj->buf != NULL); + + buf_size = (duk_uint_t) DUK_HBUFFER_GET_SIZE(h_bufobj->buf); + if (h_bufobj->offset > buf_size) { + /* Slice starting point is beyond current length. */ + return 0; + } + buf_avail = buf_size - h_bufobj->offset; + + return buf_avail >= len ? len : buf_avail; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ +#line 1 "duk_heap_alloc.c" +/* + * duk_heap allocation and freeing. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ROM_STRINGS) +/* Fixed seed value used with ROM strings. */ +#define DUK__FIXED_HASH_SEED 0xabcd1234 +#endif + +/* + * Free a heap object. + * + * Free heap object and its internal (non-heap) pointers. Assumes that + * caller has removed the object from heap allocated list or the string + * intern table, and any weak references (which strings may have) have + * been already dealt with. + */ + +DUK_INTERNAL void duk_free_hobject(duk_heap *heap, duk_hobject *h) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(h != NULL); + + DUK_FREE(heap, DUK_HOBJECT_GET_PROPS(heap, h)); + + if (DUK_HOBJECT_IS_COMPFUNC(h)) { + duk_hcompfunc *f = (duk_hcompfunc *) h; + DUK_UNREF(f); + /* Currently nothing to free; 'data' is a heap object */ + } else if (DUK_HOBJECT_IS_NATFUNC(h)) { + duk_hnatfunc *f = (duk_hnatfunc *) h; + DUK_UNREF(f); + /* Currently nothing to free */ + } else if (DUK_HOBJECT_IS_THREAD(h)) { + duk_hthread *t = (duk_hthread *) h; + duk_activation *act; + + DUK_FREE(heap, t->valstack); + + /* Don't free h->resumer because it exists in the heap. + * Callstack entries also contain function pointers which + * are not freed for the same reason. They are decref + * finalized and the targets are freed if necessary based + * on their refcount (or reachability). + */ + for (act = t->callstack_curr; act != NULL;) { + duk_activation *act_next; + duk_catcher *cat; + + for (cat = act->cat; cat != NULL;) { + duk_catcher *cat_next; + + cat_next = cat->parent; + DUK_FREE(heap, (void *) cat); + cat = cat_next; + } + + act_next = act->parent; + DUK_FREE(heap, (void *) act); + act = act_next; + } + + /* XXX: with 'caller' property the callstack would need + * to be unwound to update the 'caller' properties of + * functions in the callstack. + */ + } else if (DUK_HOBJECT_IS_BOUNDFUNC(h)) { + duk_hboundfunc *f = (duk_hboundfunc *) (void *) h; + + DUK_FREE(heap, f->args); + } + + DUK_FREE(heap, (void *) h); +} + +DUK_INTERNAL void duk_free_hbuffer(duk_heap *heap, duk_hbuffer *h) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(h != NULL); + + if (DUK_HBUFFER_HAS_DYNAMIC(h) && !DUK_HBUFFER_HAS_EXTERNAL(h)) { + duk_hbuffer_dynamic *g = (duk_hbuffer_dynamic *) h; + DUK_DDD(DUK_DDDPRINT("free dynamic buffer %p", (void *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap, g))); + DUK_FREE(heap, DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(heap, g)); + } + DUK_FREE(heap, (void *) h); +} + +DUK_INTERNAL void duk_free_hstring(duk_heap *heap, duk_hstring *h) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(h != NULL); + + DUK_UNREF(heap); + DUK_UNREF(h); + +#if defined(DUK_USE_HSTRING_EXTDATA) && defined(DUK_USE_EXTSTR_FREE) + if (DUK_HSTRING_HAS_EXTDATA(h)) { + DUK_DDD(DUK_DDDPRINT("free extstr: hstring %!O, extdata: %p", + h, DUK_HSTRING_GET_EXTDATA((duk_hstring_external *) h))); + DUK_USE_EXTSTR_FREE(heap->heap_udata, (const void *) DUK_HSTRING_GET_EXTDATA((duk_hstring_external *) h)); + } +#endif + DUK_FREE(heap, (void *) h); +} + +DUK_INTERNAL void duk_heap_free_heaphdr_raw(duk_heap *heap, duk_heaphdr *hdr) { + DUK_ASSERT(heap); + DUK_ASSERT(hdr); + + DUK_DDD(DUK_DDDPRINT("free heaphdr %p, htype %ld", (void *) hdr, (long) DUK_HEAPHDR_GET_TYPE(hdr))); + + switch (DUK_HEAPHDR_GET_TYPE(hdr)) { + case DUK_HTYPE_STRING: + duk_free_hstring(heap, (duk_hstring *) hdr); + break; + case DUK_HTYPE_OBJECT: + duk_free_hobject(heap, (duk_hobject *) hdr); + break; + default: + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(hdr) == DUK_HTYPE_BUFFER); + duk_free_hbuffer(heap, (duk_hbuffer *) hdr); + } + +} + +/* + * Free the heap. + * + * Frees heap-related non-heap-tracked allocations such as the + * string intern table; then frees the heap allocated objects; + * and finally frees the heap structure itself. Reference counts + * and GC markers are ignored (and not updated) in this process, + * and finalizers won't be called. + * + * The heap pointer and heap object pointers must not be used + * after this call. + */ + +#if defined(DUK_USE_CACHE_ACTIVATION) +DUK_LOCAL duk_size_t duk__heap_free_activation_freelist(duk_heap *heap) { + duk_activation *act; + duk_activation *act_next; + duk_size_t count_act = 0; + + for (act = heap->activation_free; act != NULL;) { + act_next = act->parent; + DUK_FREE(heap, (void *) act); + act = act_next; +#if defined(DUK_USE_DEBUG) + count_act++; +#endif + } + heap->activation_free = NULL; /* needed when called from mark-and-sweep */ + return count_act; +} +#endif /* DUK_USE_CACHE_ACTIVATION */ + +#if defined(DUK_USE_CACHE_CATCHER) +DUK_LOCAL duk_size_t duk__heap_free_catcher_freelist(duk_heap *heap) { + duk_catcher *cat; + duk_catcher *cat_next; + duk_size_t count_cat = 0; + + for (cat = heap->catcher_free; cat != NULL;) { + cat_next = cat->parent; + DUK_FREE(heap, (void *) cat); + cat = cat_next; +#if defined(DUK_USE_DEBUG) + count_cat++; +#endif + } + heap->catcher_free = NULL; /* needed when called from mark-and-sweep */ + + return count_cat; +} +#endif /* DUK_USE_CACHE_CATCHER */ + +DUK_INTERNAL void duk_heap_free_freelists(duk_heap *heap) { + duk_size_t count_act = 0; + duk_size_t count_cat = 0; + +#if defined(DUK_USE_CACHE_ACTIVATION) + count_act = duk__heap_free_activation_freelist(heap); +#endif +#if defined(DUK_USE_CACHE_CATCHER) + count_cat = duk__heap_free_catcher_freelist(heap); +#endif + DUK_UNREF(heap); + DUK_UNREF(count_act); + DUK_UNREF(count_cat); + + DUK_D(DUK_DPRINT("freed %ld activation freelist entries, %ld catcher freelist entries", + (long) count_act, (long) count_cat)); +} + +DUK_LOCAL void duk__free_allocated(duk_heap *heap) { + duk_heaphdr *curr; + duk_heaphdr *next; + + curr = heap->heap_allocated; + while (curr) { + /* We don't log or warn about freeing zero refcount objects + * because they may happen with finalizer processing. + */ + + DUK_DDD(DUK_DDDPRINT("FINALFREE (allocated): %!iO", + (duk_heaphdr *) curr)); + next = DUK_HEAPHDR_GET_NEXT(heap, curr); + duk_heap_free_heaphdr_raw(heap, curr); + curr = next; + } +} + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_LOCAL void duk__free_finalize_list(duk_heap *heap) { + duk_heaphdr *curr; + duk_heaphdr *next; + + curr = heap->finalize_list; + while (curr) { + DUK_DDD(DUK_DDDPRINT("FINALFREE (finalize_list): %!iO", + (duk_heaphdr *) curr)); + next = DUK_HEAPHDR_GET_NEXT(heap, curr); + duk_heap_free_heaphdr_raw(heap, curr); + curr = next; + } +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +DUK_LOCAL void duk__free_stringtable(duk_heap *heap) { + /* strings are only tracked by stringtable */ + duk_heap_strtable_free(heap); +} + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_LOCAL void duk__free_run_finalizers(duk_heap *heap) { + duk_heaphdr *curr; + duk_uint_t round_no; + duk_size_t count_all; + duk_size_t count_finalized; + duk_size_t curr_limit; + + DUK_ASSERT(heap != NULL); + +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* refzero not running -> must be empty */ +#endif + DUK_ASSERT(heap->finalize_list == NULL); /* mark-and-sweep last pass */ + + if (heap->heap_thread == NULL) { + /* May happen when heap allocation fails right off. There + * cannot be any finalizable objects in this case. + */ + DUK_D(DUK_DPRINT("no heap_thread in heap destruct, assume no finalizable objects")); + return; + } + + /* Prevent finalize_list processing and mark-and-sweep entirely. + * Setting ms_running != 0 also prevents refzero handling from moving + * objects away from the heap_allocated list. The flag name is a bit + * misleading here. + * + * Use a distinct value for ms_running here (== 2) so that assertions + * can detect this situation separate from the normal runtime + * mark-and-sweep case. This allows better assertions (GH-2030). + */ + DUK_ASSERT(heap->pf_prevent_count == 0); + DUK_ASSERT(heap->ms_running == 0); + DUK_ASSERT(heap->ms_prevent_count == 0); + heap->pf_prevent_count = 1; + heap->ms_running = 2; /* Use distinguishable value. */ + heap->ms_prevent_count = 1; /* Bump, because mark-and-sweep assumes it's bumped when ms_running is set. */ + + curr_limit = 0; /* suppress warning, not used */ + for (round_no = 0; ; round_no++) { + curr = heap->heap_allocated; + count_all = 0; + count_finalized = 0; + while (curr) { + count_all++; + if (DUK_HEAPHDR_IS_OBJECT(curr)) { + /* Only objects in heap_allocated may have finalizers. Check that + * the object itself has a _Finalizer property (own or inherited) + * so that we don't execute finalizers for e.g. Proxy objects. + */ + DUK_ASSERT(curr != NULL); + + if (DUK_HOBJECT_HAS_FINALIZER_FAST(heap, (duk_hobject *) curr)) { + if (!DUK_HEAPHDR_HAS_FINALIZED((duk_heaphdr *) curr)) { + DUK_ASSERT(DUK_HEAP_HAS_FINALIZER_NORESCUE(heap)); /* maps to finalizer 2nd argument */ + duk_heap_run_finalizer(heap, (duk_hobject *) curr); + count_finalized++; + } + } + } + curr = DUK_HEAPHDR_GET_NEXT(heap, curr); + } + + /* Each round of finalizer execution may spawn new finalizable objects + * which is normal behavior for some applications. Allow multiple + * rounds of finalization, but use a shrinking limit based on the + * first round to detect the case where a runaway finalizer creates + * an unbounded amount of new finalizable objects. Finalizer rescue + * is not supported: the semantics are unclear because most of the + * objects being finalized here are already reachable. The finalizer + * is given a boolean to indicate that rescue is not possible. + * + * See discussion in: https://github.com/svaarala/duktape/pull/473 + */ + + if (round_no == 0) { + /* Cannot wrap: each object is at least 8 bytes so count is + * at most 1/8 of that. + */ + curr_limit = count_all * 2; + } else { + curr_limit = (curr_limit * 3) / 4; /* Decrease by 25% every round */ + } + DUK_D(DUK_DPRINT("finalizer round %ld complete, %ld objects, tried to execute %ld finalizers, current limit is %ld", + (long) round_no, (long) count_all, (long) count_finalized, (long) curr_limit)); + + if (count_finalized == 0) { + DUK_D(DUK_DPRINT("no more finalizable objects, forced finalization finished")); + break; + } + if (count_finalized >= curr_limit) { + DUK_D(DUK_DPRINT("finalizer count above limit, potentially runaway finalizer; skip remaining finalizers")); + break; + } + } + + DUK_ASSERT(heap->ms_running == 2); + DUK_ASSERT(heap->pf_prevent_count == 1); + heap->ms_running = 0; + heap->pf_prevent_count = 0; +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +DUK_INTERNAL void duk_heap_free(duk_heap *heap) { + DUK_D(DUK_DPRINT("free heap: %p", (void *) heap)); + +#if defined(DUK_USE_DEBUG) + duk_heap_strtable_dump(heap); +#endif + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + /* Detach a debugger if attached (can be called multiple times) + * safely. + */ + /* XXX: Add a flag to reject an attempt to re-attach? Otherwise + * the detached callback may immediately reattach. + */ + duk_debug_do_detach(heap); +#endif + + /* Execute finalizers before freeing the heap, even for reachable + * objects. This gives finalizers the chance to free any native + * resources like file handles, allocations made outside Duktape, + * etc. This is quite tricky to get right, so that all finalizer + * guarantees are honored. + * + * Run mark-and-sweep a few times just in case (unreachable object + * finalizers run already here). The last round must rescue objects + * from the previous round without running any more finalizers. This + * ensures rescued objects get their FINALIZED flag cleared so that + * their finalizer is called once more in forced finalization to + * satisfy finalizer guarantees. However, we don't want to run any + * more finalizers because that'd required one more loop, and so on. + * + * XXX: this perhaps requires an execution time limit. + */ + DUK_D(DUK_DPRINT("execute finalizers before freeing heap")); + DUK_ASSERT(heap->pf_skip_finalizers == 0); + DUK_D(DUK_DPRINT("forced gc #1 in heap destruction")); + duk_heap_mark_and_sweep(heap, 0); + DUK_D(DUK_DPRINT("forced gc #2 in heap destruction")); + duk_heap_mark_and_sweep(heap, 0); + DUK_D(DUK_DPRINT("forced gc #3 in heap destruction (don't run finalizers)")); + heap->pf_skip_finalizers = 1; + duk_heap_mark_and_sweep(heap, 0); /* Skip finalizers; queue finalizable objects to heap_allocated. */ + + /* There are never objects in refzero_list at this point, or at any + * point beyond a DECREF (even a DECREF_NORZ). Since Duktape 2.1 + * refzero_list processing is side effect free, so it is always + * processed to completion by a DECREF initially triggering a zero + * refcount. + */ +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* Always processed to completion inline. */ +#endif +#if defined(DUK_USE_FINALIZER_SUPPORT) + DUK_ASSERT(heap->finalize_list == NULL); /* Last mark-and-sweep with skip_finalizers. */ +#endif + +#if defined(DUK_USE_FINALIZER_SUPPORT) + DUK_D(DUK_DPRINT("run finalizers for remaining finalizable objects")); + DUK_HEAP_SET_FINALIZER_NORESCUE(heap); /* Rescue no longer supported. */ + duk__free_run_finalizers(heap); +#endif /* DUK_USE_FINALIZER_SUPPORT */ + + /* Note: heap->heap_thread, heap->curr_thread, and heap->heap_object + * are on the heap allocated list. + */ + + DUK_D(DUK_DPRINT("freeing temporary freelists")); + duk_heap_free_freelists(heap); + + DUK_D(DUK_DPRINT("freeing heap_allocated of heap: %p", (void *) heap)); + duk__free_allocated(heap); + +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* Always processed to completion inline. */ +#endif + +#if defined(DUK_USE_FINALIZER_SUPPORT) + DUK_D(DUK_DPRINT("freeing finalize_list of heap: %p", (void *) heap)); + duk__free_finalize_list(heap); +#endif + + DUK_D(DUK_DPRINT("freeing string table of heap: %p", (void *) heap)); + duk__free_stringtable(heap); + + DUK_D(DUK_DPRINT("freeing heap structure: %p", (void *) heap)); + heap->free_func(heap->heap_udata, heap); +} + +/* + * Allocate a heap. + * + * String table is initialized with built-in strings from genbuiltins.py, + * either by dynamically creating the strings or by referring to ROM strings. + */ + +#if defined(DUK_USE_ROM_STRINGS) +DUK_LOCAL duk_bool_t duk__init_heap_strings(duk_heap *heap) { +#if defined(DUK_USE_ASSERTIONS) + duk_small_uint_t i; +#endif + + DUK_UNREF(heap); + + /* With ROM-based strings, heap->strs[] and thr->strs[] are omitted + * so nothing to initialize for strs[]. + */ + +#if defined(DUK_USE_ASSERTIONS) + for (i = 0; i < sizeof(duk_rom_strings_lookup) / sizeof(const duk_hstring *); i++) { + const duk_hstring *h; + duk_uint32_t hash; + + h = duk_rom_strings_lookup[i]; + while (h != NULL) { + hash = duk_heap_hashstring(heap, (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h), DUK_HSTRING_GET_BYTELEN(h)); + DUK_DD(DUK_DDPRINT("duk_rom_strings_lookup[%d] -> hash 0x%08lx, computed 0x%08lx", + (int) i, (unsigned long) DUK_HSTRING_GET_HASH(h), (unsigned long) hash)); + DUK_ASSERT(hash == (duk_uint32_t) DUK_HSTRING_GET_HASH(h)); + + h = (const duk_hstring *) h->hdr.h_next; + } + } +#endif + return 1; +} +#else /* DUK_USE_ROM_STRINGS */ + +DUK_LOCAL duk_bool_t duk__init_heap_strings(duk_heap *heap) { + duk_bitdecoder_ctx bd_ctx; + duk_bitdecoder_ctx *bd = &bd_ctx; /* convenience */ + duk_small_uint_t i; + + duk_memzero(&bd_ctx, sizeof(bd_ctx)); + bd->data = (const duk_uint8_t *) duk_strings_data; + bd->length = (duk_size_t) DUK_STRDATA_DATA_LENGTH; + + for (i = 0; i < DUK_HEAP_NUM_STRINGS; i++) { + duk_uint8_t tmp[DUK_STRDATA_MAX_STRLEN]; + duk_small_uint_t len; + duk_hstring *h; + + len = duk_bd_decode_bitpacked_string(bd, tmp); + + /* No need to length check string: it will never exceed even + * the 16-bit length maximum. + */ + DUK_ASSERT(len <= 0xffffUL); + DUK_DDD(DUK_DDDPRINT("intern built-in string %ld", (long) i)); + h = duk_heap_strtable_intern(heap, tmp, len); + if (!h) { + goto failed; + } + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)); + + /* Special flags checks. Since these strings are always + * reachable and a string cannot appear twice in the string + * table, there's no need to check/set these flags elsewhere. + * The 'internal' flag is set by string intern code. + */ + if (i == DUK_STRIDX_EVAL || i == DUK_STRIDX_LC_ARGUMENTS) { + DUK_HSTRING_SET_EVAL_OR_ARGUMENTS(h); + } + if (i >= DUK_STRIDX_START_RESERVED && i < DUK_STRIDX_END_RESERVED) { + DUK_HSTRING_SET_RESERVED_WORD(h); + if (i >= DUK_STRIDX_START_STRICT_RESERVED) { + DUK_HSTRING_SET_STRICT_RESERVED_WORD(h); + } + } + + DUK_DDD(DUK_DDDPRINT("interned: %!O", (duk_heaphdr *) h)); + + /* XXX: The incref macro takes a thread pointer but doesn't + * use it right now. + */ + DUK_HSTRING_INCREF(_never_referenced_, h); + +#if defined(DUK_USE_HEAPPTR16) + heap->strs16[i] = DUK_USE_HEAPPTR_ENC16(heap->heap_udata, (void *) h); +#else + heap->strs[i] = h; +#endif + } + + return 1; + + failed: + return 0; +} +#endif /* DUK_USE_ROM_STRINGS */ + +DUK_LOCAL duk_bool_t duk__init_heap_thread(duk_heap *heap) { + duk_hthread *thr; + + DUK_D(DUK_DPRINT("heap init: alloc heap thread")); + thr = duk_hthread_alloc_unchecked(heap, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_THREAD)); + if (thr == NULL) { + DUK_D(DUK_DPRINT("failed to alloc heap_thread")); + return 0; + } + thr->state = DUK_HTHREAD_STATE_INACTIVE; +#if defined(DUK_USE_ROM_STRINGS) + /* No strs[] pointer. */ +#else /* DUK_USE_ROM_STRINGS */ +#if defined(DUK_USE_HEAPPTR16) + thr->strs16 = heap->strs16; +#else + thr->strs = heap->strs; +#endif +#endif /* DUK_USE_ROM_STRINGS */ + + heap->heap_thread = thr; + DUK_HTHREAD_INCREF(thr, thr); /* Note: first argument not really used */ + + /* 'thr' is now reachable */ + + DUK_D(DUK_DPRINT("heap init: init heap thread stacks")); + if (!duk_hthread_init_stacks(heap, thr)) { + return 0; + } + + /* XXX: this may now fail, and is not handled correctly */ + duk_hthread_create_builtin_objects(thr); + + /* default prototype */ + DUK_HOBJECT_SET_PROTOTYPE_INIT_INCREF(thr, (duk_hobject *) thr, thr->builtins[DUK_BIDX_THREAD_PROTOTYPE]); + + return 1; +} + +#if defined(DUK_USE_DEBUG) +#define DUK__DUMPSZ(t) do { \ + DUK_D(DUK_DPRINT("" #t "=%ld", (long) sizeof(t))); \ + } while (0) + +/* These is not 100% because format would need to be non-portable "long long". + * Also print out as doubles to catch cases where the "long" type is not wide + * enough; the limits will then not be printed accurately but the magnitude + * will be correct. + */ +#define DUK__DUMPLM_SIGNED_RAW(t,a,b) do { \ + DUK_D(DUK_DPRINT(t "=[%ld,%ld]=[%lf,%lf]", \ + (long) (a), (long) (b), \ + (double) (a), (double) (b))); \ + } while (0) +#define DUK__DUMPLM_UNSIGNED_RAW(t,a,b) do { \ + DUK_D(DUK_DPRINT(t "=[%lu,%lu]=[%lf,%lf]", \ + (unsigned long) (a), (unsigned long) (b), \ + (double) (a), (double) (b))); \ + } while (0) +#define DUK__DUMPLM_SIGNED(t) do { \ + DUK__DUMPLM_SIGNED_RAW("DUK_" #t "_{MIN,MAX}", DUK_##t##_MIN, DUK_##t##_MAX); \ + } while (0) +#define DUK__DUMPLM_UNSIGNED(t) do { \ + DUK__DUMPLM_UNSIGNED_RAW("DUK_" #t "_{MIN,MAX}", DUK_##t##_MIN, DUK_##t##_MAX); \ + } while (0) + +DUK_LOCAL void duk__dump_type_sizes(void) { + DUK_D(DUK_DPRINT("sizeof()")); + + /* basic platform types */ + DUK__DUMPSZ(char); + DUK__DUMPSZ(short); + DUK__DUMPSZ(int); + DUK__DUMPSZ(long); + DUK__DUMPSZ(double); + DUK__DUMPSZ(void *); + DUK__DUMPSZ(size_t); + + /* basic types from duk_features.h */ + DUK__DUMPSZ(duk_uint8_t); + DUK__DUMPSZ(duk_int8_t); + DUK__DUMPSZ(duk_uint16_t); + DUK__DUMPSZ(duk_int16_t); + DUK__DUMPSZ(duk_uint32_t); + DUK__DUMPSZ(duk_int32_t); + DUK__DUMPSZ(duk_uint64_t); + DUK__DUMPSZ(duk_int64_t); + DUK__DUMPSZ(duk_uint_least8_t); + DUK__DUMPSZ(duk_int_least8_t); + DUK__DUMPSZ(duk_uint_least16_t); + DUK__DUMPSZ(duk_int_least16_t); + DUK__DUMPSZ(duk_uint_least32_t); + DUK__DUMPSZ(duk_int_least32_t); +#if defined(DUK_USE_64BIT_OPS) + DUK__DUMPSZ(duk_uint_least64_t); + DUK__DUMPSZ(duk_int_least64_t); +#endif + DUK__DUMPSZ(duk_uint_fast8_t); + DUK__DUMPSZ(duk_int_fast8_t); + DUK__DUMPSZ(duk_uint_fast16_t); + DUK__DUMPSZ(duk_int_fast16_t); + DUK__DUMPSZ(duk_uint_fast32_t); + DUK__DUMPSZ(duk_int_fast32_t); +#if defined(DUK_USE_64BIT_OPS) + DUK__DUMPSZ(duk_uint_fast64_t); + DUK__DUMPSZ(duk_int_fast64_t); +#endif + DUK__DUMPSZ(duk_uintptr_t); + DUK__DUMPSZ(duk_intptr_t); + DUK__DUMPSZ(duk_uintmax_t); + DUK__DUMPSZ(duk_intmax_t); + DUK__DUMPSZ(duk_double_t); + + /* important chosen base types */ + DUK__DUMPSZ(duk_int_t); + DUK__DUMPSZ(duk_uint_t); + DUK__DUMPSZ(duk_int_fast_t); + DUK__DUMPSZ(duk_uint_fast_t); + DUK__DUMPSZ(duk_small_int_t); + DUK__DUMPSZ(duk_small_uint_t); + DUK__DUMPSZ(duk_small_int_fast_t); + DUK__DUMPSZ(duk_small_uint_fast_t); + + /* some derived types */ + DUK__DUMPSZ(duk_codepoint_t); + DUK__DUMPSZ(duk_ucodepoint_t); + DUK__DUMPSZ(duk_idx_t); + DUK__DUMPSZ(duk_errcode_t); + DUK__DUMPSZ(duk_uarridx_t); + + /* tval */ + DUK__DUMPSZ(duk_double_union); + DUK__DUMPSZ(duk_tval); + + /* structs from duk_forwdecl.h */ + DUK__DUMPSZ(duk_jmpbuf); /* just one 'int' for C++ exceptions */ + DUK__DUMPSZ(duk_heaphdr); + DUK__DUMPSZ(duk_heaphdr_string); + DUK__DUMPSZ(duk_hstring); + DUK__DUMPSZ(duk_hstring_external); + DUK__DUMPSZ(duk_hobject); + DUK__DUMPSZ(duk_harray); + DUK__DUMPSZ(duk_hcompfunc); + DUK__DUMPSZ(duk_hnatfunc); + DUK__DUMPSZ(duk_hdecenv); + DUK__DUMPSZ(duk_hobjenv); + DUK__DUMPSZ(duk_hthread); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + DUK__DUMPSZ(duk_hbufobj); +#endif + DUK__DUMPSZ(duk_hproxy); + DUK__DUMPSZ(duk_hbuffer); + DUK__DUMPSZ(duk_hbuffer_fixed); + DUK__DUMPSZ(duk_hbuffer_dynamic); + DUK__DUMPSZ(duk_hbuffer_external); + DUK__DUMPSZ(duk_propaccessor); + DUK__DUMPSZ(duk_propvalue); + DUK__DUMPSZ(duk_propdesc); + DUK__DUMPSZ(duk_heap); + DUK__DUMPSZ(duk_activation); + DUK__DUMPSZ(duk_catcher); + DUK__DUMPSZ(duk_strcache_entry); + DUK__DUMPSZ(duk_litcache_entry); + DUK__DUMPSZ(duk_ljstate); + DUK__DUMPSZ(duk_fixedbuffer); + DUK__DUMPSZ(duk_bitdecoder_ctx); + DUK__DUMPSZ(duk_bitencoder_ctx); + DUK__DUMPSZ(duk_token); + DUK__DUMPSZ(duk_re_token); + DUK__DUMPSZ(duk_lexer_point); + DUK__DUMPSZ(duk_lexer_ctx); + DUK__DUMPSZ(duk_compiler_instr); + DUK__DUMPSZ(duk_compiler_func); + DUK__DUMPSZ(duk_compiler_ctx); + DUK__DUMPSZ(duk_re_matcher_ctx); + DUK__DUMPSZ(duk_re_compiler_ctx); +} +DUK_LOCAL void duk__dump_type_limits(void) { + DUK_D(DUK_DPRINT("limits")); + + /* basic types */ + DUK__DUMPLM_SIGNED(INT8); + DUK__DUMPLM_UNSIGNED(UINT8); + DUK__DUMPLM_SIGNED(INT_FAST8); + DUK__DUMPLM_UNSIGNED(UINT_FAST8); + DUK__DUMPLM_SIGNED(INT_LEAST8); + DUK__DUMPLM_UNSIGNED(UINT_LEAST8); + DUK__DUMPLM_SIGNED(INT16); + DUK__DUMPLM_UNSIGNED(UINT16); + DUK__DUMPLM_SIGNED(INT_FAST16); + DUK__DUMPLM_UNSIGNED(UINT_FAST16); + DUK__DUMPLM_SIGNED(INT_LEAST16); + DUK__DUMPLM_UNSIGNED(UINT_LEAST16); + DUK__DUMPLM_SIGNED(INT32); + DUK__DUMPLM_UNSIGNED(UINT32); + DUK__DUMPLM_SIGNED(INT_FAST32); + DUK__DUMPLM_UNSIGNED(UINT_FAST32); + DUK__DUMPLM_SIGNED(INT_LEAST32); + DUK__DUMPLM_UNSIGNED(UINT_LEAST32); +#if defined(DUK_USE_64BIT_OPS) + DUK__DUMPLM_SIGNED(INT64); + DUK__DUMPLM_UNSIGNED(UINT64); + DUK__DUMPLM_SIGNED(INT_FAST64); + DUK__DUMPLM_UNSIGNED(UINT_FAST64); + DUK__DUMPLM_SIGNED(INT_LEAST64); + DUK__DUMPLM_UNSIGNED(UINT_LEAST64); +#endif + DUK__DUMPLM_SIGNED(INTPTR); + DUK__DUMPLM_UNSIGNED(UINTPTR); + DUK__DUMPLM_SIGNED(INTMAX); + DUK__DUMPLM_UNSIGNED(UINTMAX); + + /* derived types */ + DUK__DUMPLM_SIGNED(INT); + DUK__DUMPLM_UNSIGNED(UINT); + DUK__DUMPLM_SIGNED(INT_FAST); + DUK__DUMPLM_UNSIGNED(UINT_FAST); + DUK__DUMPLM_SIGNED(SMALL_INT); + DUK__DUMPLM_UNSIGNED(SMALL_UINT); + DUK__DUMPLM_SIGNED(SMALL_INT_FAST); + DUK__DUMPLM_UNSIGNED(SMALL_UINT_FAST); +} + +DUK_LOCAL void duk__dump_misc_options(void) { + DUK_D(DUK_DPRINT("DUK_VERSION: %ld", (long) DUK_VERSION)); + DUK_D(DUK_DPRINT("DUK_GIT_DESCRIBE: %s", DUK_GIT_DESCRIBE)); + DUK_D(DUK_DPRINT("OS string: %s", DUK_USE_OS_STRING)); + DUK_D(DUK_DPRINT("architecture string: %s", DUK_USE_ARCH_STRING)); + DUK_D(DUK_DPRINT("compiler string: %s", DUK_USE_COMPILER_STRING)); + DUK_D(DUK_DPRINT("debug level: %ld", (long) DUK_USE_DEBUG_LEVEL)); +#if defined(DUK_USE_PACKED_TVAL) + DUK_D(DUK_DPRINT("DUK_USE_PACKED_TVAL: yes")); +#else + DUK_D(DUK_DPRINT("DUK_USE_PACKED_TVAL: no")); +#endif +#if defined(DUK_USE_VARIADIC_MACROS) + DUK_D(DUK_DPRINT("DUK_USE_VARIADIC_MACROS: yes")); +#else + DUK_D(DUK_DPRINT("DUK_USE_VARIADIC_MACROS: no")); +#endif +#if defined(DUK_USE_INTEGER_LE) + DUK_D(DUK_DPRINT("integer endianness: little")); +#elif defined(DUK_USE_INTEGER_ME) + DUK_D(DUK_DPRINT("integer endianness: mixed")); +#elif defined(DUK_USE_INTEGER_BE) + DUK_D(DUK_DPRINT("integer endianness: big")); +#else + DUK_D(DUK_DPRINT("integer endianness: ???")); +#endif +#if defined(DUK_USE_DOUBLE_LE) + DUK_D(DUK_DPRINT("IEEE double endianness: little")); +#elif defined(DUK_USE_DOUBLE_ME) + DUK_D(DUK_DPRINT("IEEE double endianness: mixed")); +#elif defined(DUK_USE_DOUBLE_BE) + DUK_D(DUK_DPRINT("IEEE double endianness: big")); +#else + DUK_D(DUK_DPRINT("IEEE double endianness: ???")); +#endif +} +#endif /* DUK_USE_DEBUG */ + +DUK_INTERNAL +duk_heap *duk_heap_alloc(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *heap_udata, + duk_fatal_function fatal_func) { + duk_heap *res = NULL; + duk_uint32_t st_initsize; + + DUK_D(DUK_DPRINT("allocate heap")); + + /* + * Random config sanity asserts + */ + + DUK_ASSERT(DUK_USE_STRTAB_MINSIZE >= 64); + + DUK_ASSERT((DUK_HTYPE_STRING & 0x01U) == 0); + DUK_ASSERT((DUK_HTYPE_BUFFER & 0x01U) == 0); + DUK_ASSERT((DUK_HTYPE_OBJECT & 0x01U) == 1); /* DUK_HEAPHDR_IS_OBJECT() relies ont his. */ + + /* + * Debug dump type sizes + */ + +#if defined(DUK_USE_DEBUG) + duk__dump_misc_options(); + duk__dump_type_sizes(); + duk__dump_type_limits(); +#endif + + /* + * If selftests enabled, run them as early as possible. + */ + +#if defined(DUK_USE_SELF_TESTS) + DUK_D(DUK_DPRINT("run self tests")); + if (duk_selftest_run_tests(alloc_func, realloc_func, free_func, heap_udata) > 0) { + fatal_func(heap_udata, "self test(s) failed"); + } + DUK_D(DUK_DPRINT("self tests passed")); +#endif + + /* + * Important assert-like checks that should be enabled even + * when assertions are otherwise not enabled. + */ + +#if defined(DUK_USE_EXEC_REGCONST_OPTIMIZE) + /* Can't check sizeof() using preprocessor so explicit check. + * This will be optimized away in practice; unfortunately a + * warning is generated on some compilers as a result. + */ +#if defined(DUK_USE_PACKED_TVAL) + if (sizeof(duk_tval) != 8) { +#else + if (sizeof(duk_tval) != 16) { +#endif + fatal_func(heap_udata, "sizeof(duk_tval) not 8 or 16, cannot use DUK_USE_EXEC_REGCONST_OPTIMIZE option"); + } +#endif /* DUK_USE_EXEC_REGCONST_OPTIMIZE */ + + /* + * Computed values (e.g. INFINITY) + */ + +#if defined(DUK_USE_COMPUTED_NAN) + do { + /* Workaround for some exotic platforms where NAN is missing + * and the expression (0.0 / 0.0) does NOT result in a NaN. + * Such platforms use the global 'duk_computed_nan' which must + * be initialized at runtime. Use 'volatile' to ensure that + * the compiler will actually do the computation and not try + * to do constant folding which might result in the original + * problem. + */ + volatile double dbl1 = 0.0; + volatile double dbl2 = 0.0; + duk_computed_nan = dbl1 / dbl2; + } while (0); +#endif + +#if defined(DUK_USE_COMPUTED_INFINITY) + do { + /* Similar workaround for INFINITY. */ + volatile double dbl1 = 1.0; + volatile double dbl2 = 0.0; + duk_computed_infinity = dbl1 / dbl2; + } while (0); +#endif + + /* + * Allocate heap struct + * + * Use a raw call, all macros expect the heap to be initialized + */ + +#if defined(DUK_USE_INJECT_HEAP_ALLOC_ERROR) && (DUK_USE_INJECT_HEAP_ALLOC_ERROR == 1) + goto failed; +#endif + DUK_D(DUK_DPRINT("alloc duk_heap object")); + res = (duk_heap *) alloc_func(heap_udata, sizeof(duk_heap)); + if (!res) { + goto failed; + } + + /* + * Zero the struct, and start initializing roughly in order + */ + + duk_memzero(res, sizeof(*res)); +#if defined(DUK_USE_ASSERTIONS) + res->heap_initializing = 1; +#endif + + /* explicit NULL inits */ +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->heap_udata = NULL; + res->heap_allocated = NULL; +#if defined(DUK_USE_REFERENCE_COUNTING) + res->refzero_list = NULL; +#endif +#if defined(DUK_USE_FINALIZER_SUPPORT) + res->finalize_list = NULL; +#if defined(DUK_USE_ASSERTIONS) + res->currently_finalizing = NULL; +#endif +#endif +#if defined(DUK_USE_CACHE_ACTIVATION) + res->activation_free = NULL; +#endif +#if defined(DUK_USE_CACHE_CATCHER) + res->catcher_free = NULL; +#endif + res->heap_thread = NULL; + res->curr_thread = NULL; + res->heap_object = NULL; +#if defined(DUK_USE_STRTAB_PTRCOMP) + res->strtable16 = NULL; +#else + res->strtable = NULL; +#endif +#if defined(DUK_USE_ROM_STRINGS) + /* no res->strs[] */ +#else /* DUK_USE_ROM_STRINGS */ +#if defined(DUK_USE_HEAPPTR16) + /* res->strs16[] is zeroed and zero decodes to NULL, so no NULL inits. */ +#else + { + duk_small_uint_t i; + for (i = 0; i < DUK_HEAP_NUM_STRINGS; i++) { + res->strs[i] = NULL; + } + } +#endif +#endif /* DUK_USE_ROM_STRINGS */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + res->dbg_read_cb = NULL; + res->dbg_write_cb = NULL; + res->dbg_peek_cb = NULL; + res->dbg_read_flush_cb = NULL; + res->dbg_write_flush_cb = NULL; + res->dbg_request_cb = NULL; + res->dbg_udata = NULL; + res->dbg_pause_act = NULL; +#endif +#endif /* DUK_USE_EXPLICIT_NULL_INIT */ + + res->alloc_func = alloc_func; + res->realloc_func = realloc_func; + res->free_func = free_func; + res->heap_udata = heap_udata; + res->fatal_func = fatal_func; + + /* XXX: for now there's a pointer packing zero assumption, i.e. + * NULL <=> compressed pointer 0. If this is removed, may need + * to precompute e.g. null16 here. + */ + + /* res->ms_trigger_counter == 0 -> now causes immediate GC; which is OK */ + + /* Prevent mark-and-sweep and finalizer execution until heap is completely + * initialized. + */ + DUK_ASSERT(res->ms_prevent_count == 0); + DUK_ASSERT(res->pf_prevent_count == 0); + res->ms_prevent_count = 1; + res->pf_prevent_count = 1; + DUK_ASSERT(res->ms_running == 0); + + res->call_recursion_depth = 0; + res->call_recursion_limit = DUK_USE_NATIVE_CALL_RECLIMIT; + + /* XXX: use the pointer as a seed for now: mix in time at least */ + + /* The casts through duk_uintptr_t is to avoid the following GCC warning: + * + * warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] + * + * This still generates a /Wp64 warning on VS2010 when compiling for x86. + */ +#if defined(DUK_USE_ROM_STRINGS) + /* XXX: make a common DUK_USE_ option, and allow custom fixed seed? */ + DUK_D(DUK_DPRINT("using rom strings, force heap hash_seed to fixed value 0x%08lx", (long) DUK__FIXED_HASH_SEED)); + res->hash_seed = (duk_uint32_t) DUK__FIXED_HASH_SEED; +#else /* DUK_USE_ROM_STRINGS */ + res->hash_seed = (duk_uint32_t) (duk_uintptr_t) res; +#if !defined(DUK_USE_STRHASH_DENSE) + res->hash_seed ^= 5381; /* Bernstein hash init value is normally 5381; XOR it in in case pointer low bits are 0 */ +#endif +#endif /* DUK_USE_ROM_STRINGS */ + +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->lj.jmpbuf_ptr = NULL; +#endif + DUK_ASSERT(res->lj.type == DUK_LJ_TYPE_UNKNOWN); /* zero */ + DUK_ASSERT(res->lj.iserror == 0); + DUK_TVAL_SET_UNDEFINED(&res->lj.value1); + DUK_TVAL_SET_UNDEFINED(&res->lj.value2); + + DUK_ASSERT_LJSTATE_UNSET(res); + + /* + * Init stringtable: fixed variant + */ + + st_initsize = DUK_USE_STRTAB_MINSIZE; +#if defined(DUK_USE_STRTAB_PTRCOMP) + res->strtable16 = (duk_uint16_t *) alloc_func(heap_udata, sizeof(duk_uint16_t) * st_initsize); + if (res->strtable16 == NULL) { + goto failed; + } +#else + res->strtable = (duk_hstring **) alloc_func(heap_udata, sizeof(duk_hstring *) * st_initsize); + if (res->strtable == NULL) { + goto failed; + } +#endif + res->st_size = st_initsize; + res->st_mask = st_initsize - 1; +#if (DUK_USE_STRTAB_MINSIZE != DUK_USE_STRTAB_MAXSIZE) + DUK_ASSERT(res->st_count == 0); +#endif + +#if defined(DUK_USE_STRTAB_PTRCOMP) + /* zero assumption */ + duk_memzero(res->strtable16, sizeof(duk_uint16_t) * st_initsize); +#else +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + { + duk_uint32_t i; + for (i = 0; i < st_initsize; i++) { + res->strtable[i] = NULL; + } + } +#else + duk_memzero(res->strtable, sizeof(duk_hstring *) * st_initsize); +#endif /* DUK_USE_EXPLICIT_NULL_INIT */ +#endif /* DUK_USE_STRTAB_PTRCOMP */ + + /* + * Init stringcache + */ + +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + { + duk_uint_t i; + for (i = 0; i < DUK_HEAP_STRCACHE_SIZE; i++) { + res->strcache[i].h = NULL; + } + } +#endif + + /* + * Init litcache + */ +#if defined(DUK_USE_LITCACHE_SIZE) + DUK_ASSERT(DUK_USE_LITCACHE_SIZE > 0); + DUK_ASSERT(DUK_IS_POWER_OF_TWO((duk_uint_t) DUK_USE_LITCACHE_SIZE)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + { + duk_uint_t i; + for (i = 0; i < DUK_USE_LITCACHE_SIZE; i++) { + res->litcache[i].addr = NULL; + res->litcache[i].h = NULL; + } + } +#endif +#endif /* DUK_USE_LITCACHE_SIZE */ + + /* XXX: error handling is incomplete. It would be cleanest if + * there was a setjmp catchpoint, so that all init code could + * freely throw errors. If that were the case, the return code + * passing here could be removed. + */ + + /* + * Init built-in strings + */ + +#if defined(DUK_USE_INJECT_HEAP_ALLOC_ERROR) && (DUK_USE_INJECT_HEAP_ALLOC_ERROR == 2) + goto failed; +#endif + DUK_D(DUK_DPRINT("heap init: initialize heap strings")); + if (!duk__init_heap_strings(res)) { + goto failed; + } + + /* + * Init the heap thread + */ + +#if defined(DUK_USE_INJECT_HEAP_ALLOC_ERROR) && (DUK_USE_INJECT_HEAP_ALLOC_ERROR == 3) + goto failed; +#endif + DUK_D(DUK_DPRINT("heap init: initialize heap thread")); + if (!duk__init_heap_thread(res)) { + goto failed; + } + + /* + * Init the heap object + */ + +#if defined(DUK_USE_INJECT_HEAP_ALLOC_ERROR) && (DUK_USE_INJECT_HEAP_ALLOC_ERROR == 4) + goto failed; +#endif + DUK_D(DUK_DPRINT("heap init: initialize heap object")); + DUK_ASSERT(res->heap_thread != NULL); + res->heap_object = duk_hobject_alloc_unchecked(res, DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT)); + if (res->heap_object == NULL) { + goto failed; + } + DUK_HOBJECT_INCREF(res->heap_thread, res->heap_object); + + /* + * Odds and ends depending on the heap thread + */ + +#if !defined(DUK_USE_GET_RANDOM_DOUBLE) +#if defined(DUK_USE_PREFER_SIZE) || !defined(DUK_USE_64BIT_OPS) + res->rnd_state = (duk_uint32_t) duk_time_get_ecmascript_time(res->heap_thread); + duk_util_tinyrandom_prepare_seed(res->heap_thread); +#else + res->rnd_state[0] = (duk_uint64_t) duk_time_get_ecmascript_time(res->heap_thread); + DUK_ASSERT(res->rnd_state[1] == 0); /* Not filled here, filled in by seed preparation. */ +#if 0 /* Manual test values matching misc/xoroshiro128plus_test.c. */ + res->rnd_state[0] = DUK_U64_CONSTANT(0xdeadbeef12345678); + res->rnd_state[1] = DUK_U64_CONSTANT(0xcafed00d12345678); +#endif + duk_util_tinyrandom_prepare_seed(res->heap_thread); + /* Mix in heap pointer: this ensures that if two Duktape heaps are + * created on the same millisecond, they get a different PRNG + * sequence (unless e.g. virtual memory addresses cause also the + * heap object pointer to be the same). + */ + { + duk_uint64_t tmp_u64; + tmp_u64 = 0; + duk_memcpy((void *) &tmp_u64, + (const void *) &res, + (size_t) (sizeof(void *) >= sizeof(duk_uint64_t) ? sizeof(duk_uint64_t) : sizeof(void *))); + res->rnd_state[1] ^= tmp_u64; + } + do { + duk_small_uint_t i; + for (i = 0; i < 10; i++) { + /* Throw away a few initial random numbers just in + * case. Probably unnecessary due to SplitMix64 + * preparation. + */ + (void) duk_util_tinyrandom_get_double(res->heap_thread); + } + } while (0); +#endif +#endif + + /* + * Allow finalizer and mark-and-sweep processing. + */ + + DUK_D(DUK_DPRINT("heap init: allow finalizer/mark-and-sweep processing")); + DUK_ASSERT(res->ms_prevent_count == 1); + DUK_ASSERT(res->pf_prevent_count == 1); + res->ms_prevent_count = 0; + res->pf_prevent_count = 0; + DUK_ASSERT(res->ms_running == 0); +#if defined(DUK_USE_ASSERTIONS) + res->heap_initializing = 0; +#endif + + /* + * All done. + */ + + DUK_D(DUK_DPRINT("allocated heap: %p", (void *) res)); + return res; + + failed: + DUK_D(DUK_DPRINT("heap allocation failed")); + + if (res != NULL) { + /* Assumes that allocated pointers and alloc funcs are valid + * if res exists. + */ + DUK_ASSERT(res->ms_prevent_count == 1); + DUK_ASSERT(res->pf_prevent_count == 1); + DUK_ASSERT(res->ms_running == 0); + if (res->heap_thread != NULL) { + res->ms_prevent_count = 0; + res->pf_prevent_count = 0; + } +#if defined(DUK_USE_ASSERTIONS) + res->heap_initializing = 0; +#endif + + DUK_ASSERT(res->alloc_func != NULL); + DUK_ASSERT(res->realloc_func != NULL); + DUK_ASSERT(res->free_func != NULL); + duk_heap_free(res); + } + + return NULL; +} + +/* automatic undefs */ +#undef DUK__DUMPLM_SIGNED +#undef DUK__DUMPLM_SIGNED_RAW +#undef DUK__DUMPLM_UNSIGNED +#undef DUK__DUMPLM_UNSIGNED_RAW +#undef DUK__DUMPSZ +#undef DUK__FIXED_HASH_SEED +#line 1 "duk_heap_finalize.c" +/* + * Finalizer handling. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) + +/* + * Fake torture finalizer. + */ + +#if defined(DUK_USE_FINALIZER_TORTURE) +DUK_LOCAL duk_ret_t duk__fake_global_finalizer(duk_hthread *thr) { + DUK_DD(DUK_DDPRINT("fake global torture finalizer executed")); + + /* Require a lot of stack to force a value stack grow/shrink. */ + duk_require_stack(thr, 100000); + + /* Force a reallocation with pointer change for value stack + * to maximize side effects. + */ + duk_hthread_valstack_torture_realloc(thr); + + /* Inner function call, error throw. */ + duk_eval_string_noresult(thr, + "(function dummy() {\n" + " dummy.prototype = null; /* break reference loop */\n" + " try {\n" + " throw 'fake-finalizer-dummy-error';\n" + " } catch (e) {\n" + " void e;\n" + " }\n" + "})()"); + + /* The above creates garbage (e.g. a function instance). Because + * the function/prototype reference loop is broken, it gets collected + * immediately by DECREF. If Function.prototype has a _Finalizer + * property (happens in some test cases), the garbage gets queued to + * finalize_list. This still won't cause an infinite loop because + * the torture finalizer is called once per finalize_list run and + * the garbage gets handled in the same run. (If the garbage needs + * mark-and-sweep collection, an infinite loop might ensue.) + */ + return 0; +} + +DUK_LOCAL void duk__run_global_torture_finalizer(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + + /* Avoid fake finalization when callstack limit is near. Otherwise + * a callstack limit error will be created, then refzero'ed. The + * +5 headroom is conservative. + */ + if (thr->heap->call_recursion_depth + 5 >= thr->heap->call_recursion_limit || + thr->callstack_top + 5 >= DUK_USE_CALLSTACK_LIMIT) { + DUK_D(DUK_DPRINT("skip global torture finalizer, too little headroom for call recursion or call stack size")); + return; + } + + /* Run fake finalizer. Avoid creating unnecessary garbage. */ + duk_push_c_function(thr, duk__fake_global_finalizer, 0 /*nargs*/); + (void) duk_pcall(thr, 0 /*nargs*/); + duk_pop(thr); +} +#endif /* DUK_USE_FINALIZER_TORTURE */ + +/* + * Process the finalize_list to completion. + * + * An object may be placed on finalize_list by either refcounting or + * mark-and-sweep. The refcount of objects placed by refcounting will be + * zero; the refcount of objects placed by mark-and-sweep is > 0. In both + * cases the refcount is bumped by 1 artificially so that a REFZERO event + * can never happen while an object is waiting for finalization. Without + * this bump a REFZERO could now happen because user code may call + * duk_push_heapptr() and then pop a value even when it's on finalize_list. + * + * List processing assumes refcounts are kept up-to-date at all times, so + * that once the finalizer returns, a zero refcount is a reliable reason to + * free the object immediately rather than place it back to the heap. This + * is the case because we run outside of refzero_list processing so that + * DECREF cascades are handled fully inline. + * + * For mark-and-sweep queued objects (had_zero_refcount false) the object + * may be freed immediately if its refcount is zero after the finalizer call + * (i.e. finalizer removed the reference loop for the object). If not, the + * next mark-and-sweep will collect the object unless it has become reachable + * (i.e. rescued) by that time and its refcount hasn't fallen to zero before + * that. Mark-and-sweep detects these objects because their FINALIZED flag + * is set. + * + * There's an inherent limitation for mark-and-sweep finalizer rescuing: an + * object won't get refinalized if (1) it's rescued, but (2) becomes + * unreachable before mark-and-sweep has had time to notice it. The next + * mark-and-sweep round simply doesn't have any information of whether the + * object has been unreachable the whole time or not (the only way to get + * that information would be a mark-and-sweep pass for *every finalized + * object*). This is awkward for the application because the mark-and-sweep + * round is not generally visible or under full application control. + * + * For refcount queued objects (had_zero_refcount true) the object is either + * immediately freed or rescued, and waiting for a mark-and-sweep round is not + * necessary (or desirable); FINALIZED is cleared when a rescued object is + * queued back to heap_allocated. The object is eligible for finalization + * again (either via refcounting or mark-and-sweep) immediately after being + * rescued. If a refcount finalized object is placed into an unreachable + * reference loop by its finalizer, it will get collected by mark-and-sweep + * and currently the finalizer will execute again. + * + * There's a special case where: + * + * - Mark-and-sweep queues an object to finalize_list for finalization. + * - The finalizer is executed, FINALIZED is set, and object is queued + * back to heap_allocated, waiting for a new mark-and-sweep round. + * - The object's refcount drops to zero before mark-and-sweep has a + * chance to run another round and make a rescue/free decision. + * + * This is now handled by refzero code: if an object has a finalizer but + * FINALIZED is already set, the object is freed without finalizer processing. + * The outcome is the same as if mark-and-sweep was executed at that point; + * mark-and-sweep would also free the object without another finalizer run. + * This could also be changed so that the refzero-triggered finalizer *IS* + * executed: being refzero collected implies someone has operated on the + * object so it hasn't been totally unreachable the whole time. This would + * risk a finalizer loop however. + */ + +DUK_INTERNAL void duk_heap_process_finalize_list(duk_heap *heap) { + duk_heaphdr *curr; +#if defined(DUK_USE_DEBUG) + duk_size_t count = 0; +#endif + + DUK_DDD(DUK_DDDPRINT("duk_heap_process_finalize_list: %p", (void *) heap)); + + if (heap->pf_prevent_count != 0) { + DUK_DDD(DUK_DDDPRINT("skip finalize_list processing: pf_prevent_count != 0")); + return; + } + + /* Heap alloc prevents mark-and-sweep before heap_thread is ready. */ + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(heap->heap_thread->valstack != NULL); +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); +#endif + + DUK_ASSERT(heap->pf_prevent_count == 0); + heap->pf_prevent_count = 1; + + /* Mark-and-sweep no longer needs to be prevented when running + * finalizers: mark-and-sweep skips any rescue decisions if there + * are any objects in finalize_list when mark-and-sweep is entered. + * This protects finalized objects from incorrect rescue decisions + * caused by finalize_list being a reachability root and only + * partially processed. Freeing decisions are not postponed. + */ + + /* When finalizer torture is enabled, make a fake finalizer call with + * maximum side effects regardless of whether finalize_list is empty. + */ +#if defined(DUK_USE_FINALIZER_TORTURE) + duk__run_global_torture_finalizer(heap->heap_thread); +#endif + + /* Process finalize_list until it becomes empty. There's currently no + * protection against a finalizer always creating more garbage. + */ + while ((curr = heap->finalize_list) != NULL) { +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_bool_t queue_back; +#endif + + DUK_DD(DUK_DDPRINT("processing finalize_list entry: %p -> %!iO", (void *) curr, curr)); + + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(curr) == DUK_HTYPE_OBJECT); /* Only objects have finalizers. */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_REACHABLE(curr)); + DUK_ASSERT(!DUK_HEAPHDR_HAS_TEMPROOT(curr)); + DUK_ASSERT(DUK_HEAPHDR_HAS_FINALIZABLE(curr)); /* All objects on finalize_list will have this flag (except object being finalized right now). */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZED(curr)); /* Queueing code ensures. */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY(curr)); /* ROM objects never get freed (or finalized). */ + +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(heap->currently_finalizing == NULL); + heap->currently_finalizing = curr; +#endif + + /* Clear FINALIZABLE for object being finalized, so that + * duk_push_heapptr() can properly ignore the object. + */ + DUK_HEAPHDR_CLEAR_FINALIZABLE(curr); + + if (DUK_LIKELY(!heap->pf_skip_finalizers)) { + /* Run the finalizer, duk_heap_run_finalizer() sets + * and checks for FINALIZED to prevent the finalizer + * from executing multiple times per finalization cycle. + * (This safeguard shouldn't be actually needed anymore). + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_bool_t had_zero_refcount; +#endif + + /* The object's refcount is >0 throughout so it won't be + * refzero processed prematurely. + */ +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(curr) >= 1); + had_zero_refcount = (DUK_HEAPHDR_GET_REFCOUNT(curr) == 1); /* Preincremented on finalize_list insert. */ +#endif + + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZED(curr)); + duk_heap_run_finalizer(heap, (duk_hobject *) curr); /* must never longjmp */ + DUK_ASSERT(DUK_HEAPHDR_HAS_FINALIZED(curr)); + /* XXX: assert that object is still in finalize_list + * when duk_push_heapptr() allows automatic rescue. + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_DD(DUK_DDPRINT("refcount after finalizer (includes bump): %ld", (long) DUK_HEAPHDR_GET_REFCOUNT(curr))); + if (DUK_HEAPHDR_GET_REFCOUNT(curr) == 1) { /* Only artificial bump in refcount? */ +#if defined(DUK_USE_DEBUG) + if (had_zero_refcount) { + DUK_DD(DUK_DDPRINT("finalized object's refcount is zero -> free immediately (refcount queued)")); + } else { + DUK_DD(DUK_DDPRINT("finalized object's refcount is zero -> free immediately (mark-and-sweep queued)")); + } +#endif + queue_back = 0; + } else +#endif + { +#if defined(DUK_USE_REFERENCE_COUNTING) + queue_back = 1; + if (had_zero_refcount) { + /* When finalization is triggered + * by refzero and we queue the object + * back, clear FINALIZED right away + * so that the object can be refinalized + * immediately if necessary. + */ + DUK_HEAPHDR_CLEAR_FINALIZED(curr); + } +#endif + } + } else { + /* Used during heap destruction: don't actually run finalizers + * because we're heading into forced finalization. Instead, + * queue finalizable objects back to the heap_allocated list. + */ + DUK_D(DUK_DPRINT("skip finalizers flag set, queue object to heap_allocated without finalizing")); + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZED(curr)); +#if defined(DUK_USE_REFERENCE_COUNTING) + queue_back = 1; +#endif + } + + /* Dequeue object from finalize_list. Note that 'curr' may no + * longer be finalize_list head because new objects may have + * been queued to the list. As a result we can't optimize for + * the single-linked heap case and must scan the list for + * removal, typically the scan is very short however. + */ + DUK_HEAP_REMOVE_FROM_FINALIZE_LIST(heap, curr); + + /* Queue back to heap_allocated or free immediately. */ +#if defined(DUK_USE_REFERENCE_COUNTING) + if (queue_back) { + /* FINALIZED is only cleared if object originally + * queued for finalization by refcounting. For + * mark-and-sweep FINALIZED is left set, so that + * next mark-and-sweep round can make a rescue/free + * decision. + */ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(curr) >= 1); + DUK_HEAPHDR_PREDEC_REFCOUNT(curr); /* Remove artificial refcount bump. */ + DUK_HEAPHDR_CLEAR_FINALIZABLE(curr); + DUK_HEAP_INSERT_INTO_HEAP_ALLOCATED(heap, curr); + } else { + /* No need to remove the refcount bump here. */ + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(curr) == DUK_HTYPE_OBJECT); /* currently, always the case */ + DUK_DD(DUK_DDPRINT("refcount finalize after finalizer call: %!O", curr)); + duk_hobject_refcount_finalize_norz(heap, (duk_hobject *) curr); + duk_free_hobject(heap, (duk_hobject *) curr); + DUK_DD(DUK_DDPRINT("freed hobject after finalization: %p", (void *) curr)); + } +#else /* DUK_USE_REFERENCE_COUNTING */ + DUK_HEAPHDR_CLEAR_FINALIZABLE(curr); + DUK_HEAP_INSERT_INTO_HEAP_ALLOCATED(heap, curr); +#endif /* DUK_USE_REFERENCE_COUNTING */ + +#if defined(DUK_USE_DEBUG) + count++; +#endif + +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(heap->currently_finalizing != NULL); + heap->currently_finalizing = NULL; +#endif + } + + /* finalize_list will always be processed completely. */ + DUK_ASSERT(heap->finalize_list == NULL); + +#if 0 + /* While NORZ macros are used above, this is unnecessary because the + * only pending side effects are now finalizers, and finalize_list is + * empty. + */ + DUK_REFZERO_CHECK_SLOW(heap->heap_thread); +#endif + + /* Prevent count may be bumped while finalizers run, but should always + * be reliably unbumped by the time we get here. + */ + DUK_ASSERT(heap->pf_prevent_count == 1); + heap->pf_prevent_count = 0; + +#if defined(DUK_USE_DEBUG) + DUK_DD(DUK_DDPRINT("duk_heap_process_finalize_list: %ld finalizers called", (long) count)); +#endif +} + +/* + * Run an duk_hobject finalizer. Must never throw an uncaught error + * (but may throw caught errors). + * + * There is no return value. Any return value or error thrown by + * the finalizer is ignored (although errors are debug logged). + * + * Notes: + * + * - The finalizer thread 'top' assertions are there because it is + * critical that strict stack policy is observed (i.e. no cruft + * left on the finalizer stack). + */ + +DUK_LOCAL duk_ret_t duk__finalize_helper(duk_hthread *thr, void *udata) { + DUK_ASSERT(thr != NULL); + DUK_UNREF(udata); + + DUK_DDD(DUK_DDDPRINT("protected finalization helper running")); + + /* [... obj] */ + + /* _Finalizer property is read without checking if the value is + * callable or even exists. This is intentional, and handled + * by throwing an error which is caught by the safe call wrapper. + * + * XXX: Finalizer lookup should traverse the prototype chain (to allow + * inherited finalizers) but should not invoke accessors or proxy object + * behavior. At the moment this lookup will invoke proxy behavior, so + * caller must ensure that this function is not called if the target is + * a Proxy. + */ + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_INT_FINALIZER); /* -> [... obj finalizer] */ + duk_dup_m2(thr); + duk_push_boolean(thr, DUK_HEAP_HAS_FINALIZER_NORESCUE(thr->heap)); + DUK_DDD(DUK_DDDPRINT("calling finalizer")); + duk_call(thr, 2); /* [ ... obj finalizer obj heapDestruct ] -> [ ... obj retval ] */ + DUK_DDD(DUK_DDDPRINT("finalizer returned successfully")); + return 0; + + /* Note: we rely on duk_safe_call() to fix up the stack for the caller, + * so we don't need to pop stuff here. There is no return value; + * caller determines rescued status based on object refcount. + */ +} + +DUK_INTERNAL void duk_heap_run_finalizer(duk_heap *heap, duk_hobject *obj) { + duk_hthread *thr; + duk_ret_t rc; +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t entry_top; +#endif + + DUK_DD(DUK_DDPRINT("running duk_hobject finalizer for object: %p", (void *) obj)); + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + thr = heap->heap_thread; + DUK_ASSERT(obj != NULL); + DUK_ASSERT_VALSTACK_SPACE(heap->heap_thread, 1); + +#if defined(DUK_USE_ASSERTIONS) + entry_top = duk_get_top(thr); +#endif + /* + * Get and call the finalizer. All of this must be wrapped + * in a protected call, because even getting the finalizer + * may trigger an error (getter may throw one, for instance). + */ + + /* ROM objects could inherit a finalizer, but they are never deemed + * unreachable by mark-and-sweep, and their refcount never falls to 0. + */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)); + + /* Duktape 2.1: finalize_list never contains objects with FINALIZED + * set, so no need to check here. + */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZED((duk_heaphdr *) obj)); +#if 0 + if (DUK_HEAPHDR_HAS_FINALIZED((duk_heaphdr *) obj)) { + DUK_D(DUK_DPRINT("object already finalized, avoid running finalizer twice: %!O", obj)); + return; + } +#endif + DUK_HEAPHDR_SET_FINALIZED((duk_heaphdr *) obj); /* ensure never re-entered until rescue cycle complete */ + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_HOBJECT_IS_PROXY(obj)) { + /* This may happen if duk_set_finalizer() or Duktape.fin() is + * called for a Proxy object. In such cases the fast finalizer + * flag will be set on the Proxy, not the target, and neither + * will be finalized. + */ + DUK_D(DUK_DPRINT("object is a Proxy, skip finalizer call")); + return; + } +#endif /* DUK_USE_ES6_PROXY */ + + duk_push_hobject(thr, obj); /* this also increases refcount by one */ + rc = duk_safe_call(thr, duk__finalize_helper, NULL /*udata*/, 0 /*nargs*/, 1 /*nrets*/); /* -> [... obj retval/error] */ + DUK_ASSERT_TOP(thr, entry_top + 2); /* duk_safe_call discipline */ + + if (rc != DUK_EXEC_SUCCESS) { + /* Note: we ask for one return value from duk_safe_call to get this + * error debugging here. + */ + DUK_D(DUK_DPRINT("wrapped finalizer call failed for object %p (ignored); error: %!T", + (void *) obj, (duk_tval *) duk_get_tval(thr, -1))); + } + duk_pop_2(thr); /* -> [...] */ + + DUK_ASSERT_TOP(thr, entry_top); +} + +#else /* DUK_USE_FINALIZER_SUPPORT */ + +/* nothing */ + +#endif /* DUK_USE_FINALIZER_SUPPORT */ +#line 1 "duk_heap_hashstring.c" +/* + * String hash computation (interning). + * + * String hashing is performance critical because a string hash is computed + * for all new strings which are candidates to be added to the string table. + * However, strings actually added to the string table go through a codepoint + * length calculation which dominates performance because it goes through + * every byte of the input string (but only for strings added). + * + * The string hash algorithm should be fast, but on the other hand provide + * good enough hashes to ensure both string table and object property table + * hash tables work reasonably well (i.e., there aren't too many collisions + * with real world inputs). Unless the hash is cryptographic, it's always + * possible to craft inputs with maximal hash collisions. + * + * NOTE: The hash algorithms must match tools/dukutil.py:duk_heap_hashstring() + * for ROM string support! + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_STRHASH_DENSE) +/* Constants for duk_hashstring(). */ +#define DUK__STRHASH_SHORTSTRING 4096L +#define DUK__STRHASH_MEDIUMSTRING (256L * 1024L) +#define DUK__STRHASH_BLOCKSIZE 256L + +DUK_INTERNAL duk_uint32_t duk_heap_hashstring(duk_heap *heap, const duk_uint8_t *str, duk_size_t len) { + duk_uint32_t hash; + + /* Use Murmurhash2 directly for short strings, and use "block skipping" + * for long strings: hash an initial part and then sample the rest of + * the string with reasonably sized chunks. An initial offset for the + * sampling is computed based on a hash of the initial part of the string; + * this is done to (usually) avoid the case where all long strings have + * certain offset ranges which are never sampled. + * + * Skip should depend on length and bound the total time to roughly + * logarithmic. With current values: + * + * 1M string => 256 * 241 = 61696 bytes (0.06M) of hashing + * 1G string => 256 * 16321 = 4178176 bytes (3.98M) of hashing + * + * XXX: It would be better to compute the skip offset more "smoothly" + * instead of having a few boundary values. + */ + + /* note: mixing len into seed improves hashing when skipping */ + duk_uint32_t str_seed = heap->hash_seed ^ ((duk_uint32_t) len); + + if (len <= DUK__STRHASH_SHORTSTRING) { + hash = duk_util_hashbytes(str, len, str_seed); + } else { + duk_size_t off; + duk_size_t skip; + + if (len <= DUK__STRHASH_MEDIUMSTRING) { + skip = (duk_size_t) (16 * DUK__STRHASH_BLOCKSIZE + DUK__STRHASH_BLOCKSIZE); + } else { + skip = (duk_size_t) (256 * DUK__STRHASH_BLOCKSIZE + DUK__STRHASH_BLOCKSIZE); + } + + hash = duk_util_hashbytes(str, (duk_size_t) DUK__STRHASH_SHORTSTRING, str_seed); + off = DUK__STRHASH_SHORTSTRING + (skip * (hash % 256)) / 256; + + /* XXX: inefficient loop */ + while (off < len) { + duk_size_t left = len - off; + duk_size_t now = (duk_size_t) (left > DUK__STRHASH_BLOCKSIZE ? DUK__STRHASH_BLOCKSIZE : left); + hash ^= duk_util_hashbytes(str + off, now, str_seed); + off += skip; + } + } + +#if defined(DUK_USE_STRHASH16) + /* Truncate to 16 bits here, so that a computed hash can be compared + * against a hash stored in a 16-bit field. + */ + hash &= 0x0000ffffUL; +#endif + return hash; +} +#else /* DUK_USE_STRHASH_DENSE */ +DUK_INTERNAL duk_uint32_t duk_heap_hashstring(duk_heap *heap, const duk_uint8_t *str, duk_size_t len) { + duk_uint32_t hash; + duk_size_t step; + duk_size_t off; + + /* Slightly modified "Bernstein hash" from: + * + * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx + * + * Modifications: string skipping and reverse direction similar to + * Lua 5.1.5, and different hash initializer. + * + * The reverse direction ensures last byte it always included in the + * hash which is a good default as changing parts of the string are + * more often in the suffix than in the prefix. + */ + + hash = heap->hash_seed ^ ((duk_uint32_t) len); /* Bernstein hash init value is normally 5381 */ + step = (len >> DUK_USE_STRHASH_SKIP_SHIFT) + 1; + for (off = len; off >= step; off -= step) { + DUK_ASSERT(off >= 1); /* off >= step, and step >= 1 */ + hash = (hash * 33) + str[off - 1]; + } + +#if defined(DUK_USE_STRHASH16) + /* Truncate to 16 bits here, so that a computed hash can be compared + * against a hash stored in a 16-bit field. + */ + hash &= 0x0000ffffUL; +#endif + return hash; +} +#endif /* DUK_USE_STRHASH_DENSE */ + +/* automatic undefs */ +#undef DUK__STRHASH_BLOCKSIZE +#undef DUK__STRHASH_MEDIUMSTRING +#undef DUK__STRHASH_SHORTSTRING +#line 1 "duk_heap_markandsweep.c" +/* + * Mark-and-sweep garbage collection. + */ + +/* #include duk_internal.h -> already included */ + +DUK_LOCAL_DECL void duk__mark_heaphdr(duk_heap *heap, duk_heaphdr *h); +DUK_LOCAL_DECL void duk__mark_heaphdr_nonnull(duk_heap *heap, duk_heaphdr *h); +DUK_LOCAL_DECL void duk__mark_tval(duk_heap *heap, duk_tval *tv); +DUK_LOCAL_DECL void duk__mark_tvals(duk_heap *heap, duk_tval *tv, duk_idx_t count); + +/* + * Marking functions for heap types: mark children recursively. + */ + +DUK_LOCAL void duk__mark_hstring(duk_heap *heap, duk_hstring *h) { + DUK_UNREF(heap); + DUK_UNREF(h); + + DUK_DDD(DUK_DDDPRINT("duk__mark_hstring: %p", (void *) h)); + DUK_ASSERT(h); + DUK_HSTRING_ASSERT_VALID(h); + + /* nothing to process */ +} + +DUK_LOCAL void duk__mark_hobject(duk_heap *heap, duk_hobject *h) { + duk_uint_fast32_t i; + + DUK_DDD(DUK_DDDPRINT("duk__mark_hobject: %p", (void *) h)); + + DUK_ASSERT(h); + DUK_HOBJECT_ASSERT_VALID(h); + + /* XXX: use advancing pointers instead of index macros -> faster and smaller? */ + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(h); i++) { + duk_hstring *key = DUK_HOBJECT_E_GET_KEY(heap, h, i); + if (key == NULL) { + continue; + } + duk__mark_heaphdr_nonnull(heap, (duk_heaphdr *) key); + if (DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, h, i)) { + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)->a.get); + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)->a.set); + } else { + duk__mark_tval(heap, &DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)->v); + } + } + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ASIZE(h); i++) { + duk__mark_tval(heap, DUK_HOBJECT_A_GET_VALUE_PTR(heap, h, i)); + } + + /* Hash part is a 'weak reference' and does not contribute. */ + + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_HOBJECT_GET_PROTOTYPE(heap, h)); + + /* Fast path for objects which don't have a subclass struct, or have a + * subclass struct but nothing that needs marking in the subclass struct. + */ + if (DUK_HOBJECT_HAS_FASTREFS(h)) { + DUK_ASSERT(DUK_HOBJECT_ALLOWS_FASTREFS(h)); + return; + } + DUK_ASSERT(DUK_HOBJECT_PROHIBITS_FASTREFS(h)); + + /* XXX: reorg, more common first */ + if (DUK_HOBJECT_IS_COMPFUNC(h)) { + duk_hcompfunc *f = (duk_hcompfunc *) h; + duk_tval *tv, *tv_end; + duk_hobject **fn, **fn_end; + + DUK_HCOMPFUNC_ASSERT_VALID(f); + + /* 'data' is reachable through every compiled function which + * contains a reference. + */ + + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_HCOMPFUNC_GET_DATA(heap, f)); + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_HCOMPFUNC_GET_LEXENV(heap, f)); + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_HCOMPFUNC_GET_VARENV(heap, f)); + + if (DUK_HCOMPFUNC_GET_DATA(heap, f) != NULL) { + tv = DUK_HCOMPFUNC_GET_CONSTS_BASE(heap, f); + tv_end = DUK_HCOMPFUNC_GET_CONSTS_END(heap, f); + while (tv < tv_end) { + duk__mark_tval(heap, tv); + tv++; + } + + fn = DUK_HCOMPFUNC_GET_FUNCS_BASE(heap, f); + fn_end = DUK_HCOMPFUNC_GET_FUNCS_END(heap, f); + while (fn < fn_end) { + duk__mark_heaphdr_nonnull(heap, (duk_heaphdr *) *fn); + fn++; + } + } else { + /* May happen in some out-of-memory corner cases. */ + DUK_D(DUK_DPRINT("duk_hcompfunc 'data' is NULL, skipping marking")); + } + } else if (DUK_HOBJECT_IS_DECENV(h)) { + duk_hdecenv *e = (duk_hdecenv *) h; + DUK_HDECENV_ASSERT_VALID(e); + duk__mark_heaphdr(heap, (duk_heaphdr *) e->thread); + duk__mark_heaphdr(heap, (duk_heaphdr *) e->varmap); + } else if (DUK_HOBJECT_IS_OBJENV(h)) { + duk_hobjenv *e = (duk_hobjenv *) h; + DUK_HOBJENV_ASSERT_VALID(e); + duk__mark_heaphdr_nonnull(heap, (duk_heaphdr *) e->target); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + } else if (DUK_HOBJECT_IS_BUFOBJ(h)) { + duk_hbufobj *b = (duk_hbufobj *) h; + DUK_HBUFOBJ_ASSERT_VALID(b); + duk__mark_heaphdr(heap, (duk_heaphdr *) b->buf); + duk__mark_heaphdr(heap, (duk_heaphdr *) b->buf_prop); +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + } else if (DUK_HOBJECT_IS_BOUNDFUNC(h)) { + duk_hboundfunc *f = (duk_hboundfunc *) (void *) h; + DUK_HBOUNDFUNC_ASSERT_VALID(f); + duk__mark_tval(heap, &f->target); + duk__mark_tval(heap, &f->this_binding); + duk__mark_tvals(heap, f->args, f->nargs); +#if defined(DUK_USE_ES6_PROXY) + } else if (DUK_HOBJECT_IS_PROXY(h)) { + duk_hproxy *p = (duk_hproxy *) h; + DUK_HPROXY_ASSERT_VALID(p); + duk__mark_heaphdr_nonnull(heap, (duk_heaphdr *) p->target); + duk__mark_heaphdr_nonnull(heap, (duk_heaphdr *) p->handler); +#endif /* DUK_USE_ES6_PROXY */ + } else if (DUK_HOBJECT_IS_THREAD(h)) { + duk_hthread *t = (duk_hthread *) h; + duk_activation *act; + duk_tval *tv; + + DUK_HTHREAD_ASSERT_VALID(t); + + tv = t->valstack; + while (tv < t->valstack_top) { + duk__mark_tval(heap, tv); + tv++; + } + + for (act = t->callstack_curr; act != NULL; act = act->parent) { + duk__mark_heaphdr(heap, (duk_heaphdr *) DUK_ACT_GET_FUNC(act)); + duk__mark_heaphdr(heap, (duk_heaphdr *) act->var_env); + duk__mark_heaphdr(heap, (duk_heaphdr *) act->lex_env); +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + duk__mark_heaphdr(heap, (duk_heaphdr *) act->prev_caller); +#endif +#if 0 /* nothing now */ + for (cat = act->cat; cat != NULL; cat = cat->parent) { + } +#endif + } + + duk__mark_heaphdr(heap, (duk_heaphdr *) t->resumer); + + for (i = 0; i < DUK_NUM_BUILTINS; i++) { + duk__mark_heaphdr(heap, (duk_heaphdr *) t->builtins[i]); + } + } else { + /* We may come here if the object should have a FASTREFS flag + * but it's missing for some reason. Assert for never getting + * here; however, other than performance, this is harmless. + */ + DUK_D(DUK_DPRINT("missing FASTREFS flag for: %!iO", h)); + DUK_ASSERT(0); + } +} + +/* Mark any duk_heaphdr type. Recursion tracking happens only here. */ +DUK_LOCAL void duk__mark_heaphdr(duk_heap *heap, duk_heaphdr *h) { + DUK_DDD(DUK_DDDPRINT("duk__mark_heaphdr %p, type %ld", + (void *) h, + (h != NULL ? (long) DUK_HEAPHDR_GET_TYPE(h) : (long) -1))); + + /* XXX: add non-null variant? */ + if (h == NULL) { + return; + } + + DUK_HEAPHDR_ASSERT_VALID(h); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY(h) || DUK_HEAPHDR_HAS_REACHABLE(h)); + +#if defined(DUK_USE_ASSERTIONS) && defined(DUK_USE_REFERENCE_COUNTING) + if (!DUK_HEAPHDR_HAS_READONLY(h)) { + h->h_assert_refcount++; /* Comparison refcount: bump even if already reachable. */ + } +#endif + if (DUK_HEAPHDR_HAS_REACHABLE(h)) { + DUK_DDD(DUK_DDDPRINT("already marked reachable, skip")); + return; + } +#if defined(DUK_USE_ROM_OBJECTS) + /* READONLY objects always have REACHABLE set, so the check above + * will prevent READONLY objects from being marked here. + */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY(h)); +#endif + + DUK_HEAPHDR_SET_REACHABLE(h); + + if (heap->ms_recursion_depth >= DUK_USE_MARK_AND_SWEEP_RECLIMIT) { + DUK_D(DUK_DPRINT("mark-and-sweep recursion limit reached, marking as temproot: %p", (void *) h)); + DUK_HEAP_SET_MARKANDSWEEP_RECLIMIT_REACHED(heap); + DUK_HEAPHDR_SET_TEMPROOT(h); + return; + } + + heap->ms_recursion_depth++; + DUK_ASSERT(heap->ms_recursion_depth != 0); /* Wrap. */ + + switch (DUK_HEAPHDR_GET_TYPE(h)) { + case DUK_HTYPE_STRING: + duk__mark_hstring(heap, (duk_hstring *) h); + break; + case DUK_HTYPE_OBJECT: + duk__mark_hobject(heap, (duk_hobject *) h); + break; + case DUK_HTYPE_BUFFER: + /* nothing to mark */ + break; + default: + DUK_D(DUK_DPRINT("attempt to mark heaphdr %p with invalid htype %ld", (void *) h, (long) DUK_HEAPHDR_GET_TYPE(h))); + DUK_UNREACHABLE(); + } + + DUK_ASSERT(heap->ms_recursion_depth > 0); + heap->ms_recursion_depth--; +} + +DUK_LOCAL void duk__mark_tval(duk_heap *heap, duk_tval *tv) { + DUK_DDD(DUK_DDDPRINT("duk__mark_tval %p", (void *) tv)); + if (tv == NULL) { + return; + } + DUK_TVAL_ASSERT_VALID(tv); + if (DUK_TVAL_IS_HEAP_ALLOCATED(tv)) { + duk_heaphdr *h; + h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + duk__mark_heaphdr_nonnull(heap, h); + } +} + +DUK_LOCAL void duk__mark_tvals(duk_heap *heap, duk_tval *tv, duk_idx_t count) { + DUK_ASSERT(count == 0 || tv != NULL); + + while (count-- > 0) { + DUK_TVAL_ASSERT_VALID(tv); + if (DUK_TVAL_IS_HEAP_ALLOCATED(tv)) { + duk_heaphdr *h; + h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + duk__mark_heaphdr_nonnull(heap, h); + } + tv++; + } +} + +/* Mark any duk_heaphdr type, caller guarantees a non-NULL pointer. */ +DUK_LOCAL void duk__mark_heaphdr_nonnull(duk_heap *heap, duk_heaphdr *h) { + /* For now, just call the generic handler. Change when call sites + * are changed too. + */ + duk__mark_heaphdr(heap, h); +} + +/* + * Mark the heap. + */ + +DUK_LOCAL void duk__mark_roots_heap(duk_heap *heap) { + duk_small_uint_t i; + + DUK_DD(DUK_DDPRINT("duk__mark_roots_heap: %p", (void *) heap)); + + duk__mark_heaphdr(heap, (duk_heaphdr *) heap->heap_thread); + duk__mark_heaphdr(heap, (duk_heaphdr *) heap->heap_object); + + for (i = 0; i < DUK_HEAP_NUM_STRINGS; i++) { + duk_hstring *h = DUK_HEAP_GET_STRING(heap, i); + duk__mark_heaphdr(heap, (duk_heaphdr *) h); + } + + duk__mark_tval(heap, &heap->lj.value1); + duk__mark_tval(heap, &heap->lj.value2); + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + for (i = 0; i < heap->dbg_breakpoint_count; i++) { + duk__mark_heaphdr(heap, (duk_heaphdr *) heap->dbg_breakpoints[i].filename); + } +#endif +} + +/* + * Mark unreachable, finalizable objects. + * + * Such objects will be moved aside and their finalizers run later. They + * have to be treated as reachability roots for their properties etc to + * remain allocated. This marking is only done for unreachable values which + * would be swept later. + * + * Objects are first marked FINALIZABLE and only then marked as reachability + * roots; otherwise circular references might be handled inconsistently. + */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_LOCAL void duk__mark_finalizable(duk_heap *heap) { + duk_heaphdr *hdr; + duk_size_t count_finalizable = 0; + + DUK_DD(DUK_DDPRINT("duk__mark_finalizable: %p", (void *) heap)); + + DUK_ASSERT(heap->heap_thread != NULL); + + hdr = heap->heap_allocated; + while (hdr != NULL) { + /* A finalizer is looked up from the object and up its + * prototype chain (which allows inherited finalizers). + * The finalizer is checked for using a duk_hobject flag + * which is kept in sync with the presence and callability + * of a _Finalizer hidden symbol. + */ + + if (!DUK_HEAPHDR_HAS_REACHABLE(hdr) && + DUK_HEAPHDR_IS_OBJECT(hdr) && + !DUK_HEAPHDR_HAS_FINALIZED(hdr) && + DUK_HOBJECT_HAS_FINALIZER_FAST(heap, (duk_hobject *) hdr)) { + /* heaphdr: + * - is not reachable + * - is an object + * - is not a finalized object waiting for rescue/keep decision + * - has a finalizer + */ + + DUK_DD(DUK_DDPRINT("unreachable heap object will be " + "finalized -> mark as finalizable " + "and treat as a reachability root: %p", + (void *) hdr)); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY(hdr)); + DUK_HEAPHDR_SET_FINALIZABLE(hdr); + count_finalizable++; + } + + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } + + if (count_finalizable == 0) { + return; + } + + DUK_DD(DUK_DDPRINT("marked %ld heap objects as finalizable, now mark them reachable", + (long) count_finalizable)); + + hdr = heap->heap_allocated; + while (hdr != NULL) { + if (DUK_HEAPHDR_HAS_FINALIZABLE(hdr)) { + duk__mark_heaphdr_nonnull(heap, hdr); + } + + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } + + /* Caller will finish the marking process if we hit a recursion limit. */ +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +/* + * Mark objects on finalize_list. + */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_LOCAL void duk__mark_finalize_list(duk_heap *heap) { + duk_heaphdr *hdr; +#if defined(DUK_USE_DEBUG) + duk_size_t count_finalize_list = 0; +#endif + + DUK_DD(DUK_DDPRINT("duk__mark_finalize_list: %p", (void *) heap)); + + hdr = heap->finalize_list; + while (hdr != NULL) { + duk__mark_heaphdr_nonnull(heap, hdr); + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); +#if defined(DUK_USE_DEBUG) + count_finalize_list++; +#endif + } + +#if defined(DUK_USE_DEBUG) + if (count_finalize_list > 0) { + DUK_D(DUK_DPRINT("marked %ld objects on the finalize_list as reachable (previous finalizer run skipped)", + (long) count_finalize_list)); + } +#endif +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +/* + * Fallback marking handler if recursion limit is reached. + * + * Iterates 'temproots' until recursion limit is no longer hit. Temproots + * can be in heap_allocated or finalize_list; refzero_list is now always + * empty for mark-and-sweep. A temproot may occur in finalize_list now if + * there are objects on the finalize_list and user code creates a reference + * from an object in heap_allocated to the object in finalize_list (which is + * now allowed), and it happened to coincide with the recursion depth limit. + * + * This is a slow scan, but guarantees that we finish with a bounded C stack. + * + * Note that nodes may have been marked as temproots before this scan begun, + * OR they may have been marked during the scan (as we process nodes + * recursively also during the scan). This is intended behavior. + */ + +#if defined(DUK_USE_DEBUG) +DUK_LOCAL void duk__handle_temproot(duk_heap *heap, duk_heaphdr *hdr, duk_size_t *count) { +#else +DUK_LOCAL void duk__handle_temproot(duk_heap *heap, duk_heaphdr *hdr) { +#endif + DUK_ASSERT(hdr != NULL); + + if (!DUK_HEAPHDR_HAS_TEMPROOT(hdr)) { + DUK_DDD(DUK_DDDPRINT("not a temp root: %p", (void *) hdr)); + return; + } + + DUK_DDD(DUK_DDDPRINT("found a temp root: %p", (void *) hdr)); + DUK_HEAPHDR_CLEAR_TEMPROOT(hdr); + DUK_HEAPHDR_CLEAR_REACHABLE(hdr); /* Done so that duk__mark_heaphdr() works correctly. */ +#if defined(DUK_USE_ASSERTIONS) && defined(DUK_USE_REFERENCE_COUNTING) + hdr->h_assert_refcount--; /* Same node visited twice. */ +#endif + duk__mark_heaphdr_nonnull(heap, hdr); + +#if defined(DUK_USE_DEBUG) + (*count)++; +#endif +} + +DUK_LOCAL void duk__mark_temproots_by_heap_scan(duk_heap *heap) { + duk_heaphdr *hdr; +#if defined(DUK_USE_DEBUG) + duk_size_t count; +#endif + + DUK_DD(DUK_DDPRINT("duk__mark_temproots_by_heap_scan: %p", (void *) heap)); + + while (DUK_HEAP_HAS_MARKANDSWEEP_RECLIMIT_REACHED(heap)) { + DUK_DD(DUK_DDPRINT("recursion limit reached, doing heap scan to continue from temproots")); + +#if defined(DUK_USE_DEBUG) + count = 0; +#endif + DUK_HEAP_CLEAR_MARKANDSWEEP_RECLIMIT_REACHED(heap); + + hdr = heap->heap_allocated; + while (hdr) { +#if defined(DUK_USE_DEBUG) + duk__handle_temproot(heap, hdr, &count); +#else + duk__handle_temproot(heap, hdr); +#endif + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } + +#if defined(DUK_USE_FINALIZER_SUPPORT) + hdr = heap->finalize_list; + while (hdr) { +#if defined(DUK_USE_DEBUG) + duk__handle_temproot(heap, hdr, &count); +#else + duk__handle_temproot(heap, hdr); +#endif + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } +#endif + +#if defined(DUK_USE_DEBUG) + DUK_DD(DUK_DDPRINT("temproot mark heap scan processed %ld temp roots", (long) count)); +#endif + } +} + +/* + * Finalize refcounts for heap elements just about to be freed. + * This must be done for all objects before freeing to avoid any + * stale pointer dereferences. + * + * Note that this must deduce the set of objects to be freed + * identically to duk__sweep_heap(). + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) +DUK_LOCAL void duk__finalize_refcounts(duk_heap *heap) { + duk_heaphdr *hdr; + + DUK_ASSERT(heap->heap_thread != NULL); + + DUK_DD(DUK_DDPRINT("duk__finalize_refcounts: heap=%p", (void *) heap)); + + hdr = heap->heap_allocated; + while (hdr) { + if (!DUK_HEAPHDR_HAS_REACHABLE(hdr)) { + /* + * Unreachable object about to be swept. Finalize target refcounts + * (objects which the unreachable object points to) without doing + * refzero processing. Recursive decrefs are also prevented when + * refzero processing is disabled. + * + * Value cannot be a finalizable object, as they have been made + * temporarily reachable for this round. + */ + + DUK_DDD(DUK_DDDPRINT("unreachable object, refcount finalize before sweeping: %p", (void *) hdr)); + + /* Finalize using heap->heap_thread; DECREF has a + * suppress check for mark-and-sweep which is based + * on heap->ms_running. + */ + duk_heaphdr_refcount_finalize_norz(heap, hdr); + } + + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } +} +#endif /* DUK_USE_REFERENCE_COUNTING */ + +/* + * Clear (reachable) flags of finalize_list. + * + * We could mostly do in the sweep phase when we move objects from the + * heap into the finalize_list. However, if a finalizer run is skipped + * during a mark-and-sweep, the objects on the finalize_list will be marked + * reachable during the next mark-and-sweep. Since they're already on the + * finalize_list, no-one will be clearing their REACHABLE flag so we do it + * here. (This now overlaps with the sweep handling in a harmless way.) + */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_LOCAL void duk__clear_finalize_list_flags(duk_heap *heap) { + duk_heaphdr *hdr; + + DUK_DD(DUK_DDPRINT("duk__clear_finalize_list_flags: %p", (void *) heap)); + + hdr = heap->finalize_list; + while (hdr) { + DUK_HEAPHDR_CLEAR_REACHABLE(hdr); +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(DUK_HEAPHDR_HAS_FINALIZABLE(hdr) || \ + (heap->currently_finalizing == hdr)); +#endif + /* DUK_HEAPHDR_FLAG_FINALIZED may be set. */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_TEMPROOT(hdr)); + hdr = DUK_HEAPHDR_GET_NEXT(heap, hdr); + } +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +/* + * Sweep stringtable. + */ + +DUK_LOCAL void duk__sweep_stringtable(duk_heap *heap, duk_size_t *out_count_keep) { + duk_hstring *h; + duk_hstring *prev; + duk_uint32_t i; +#if defined(DUK_USE_DEBUG) + duk_size_t count_free = 0; +#endif + duk_size_t count_keep = 0; + + DUK_DD(DUK_DDPRINT("duk__sweep_stringtable: %p", (void *) heap)); + +#if defined(DUK_USE_STRTAB_PTRCOMP) + if (heap->strtable16 == NULL) { +#else + if (heap->strtable == NULL) { +#endif + goto done; + } + + for (i = 0; i < heap->st_size; i++) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + h = DUK_USE_HEAPPTR_DEC16(heap->heap_udata, heap->strtable16[i]); +#else + h = heap->strtable[i]; +#endif + prev = NULL; + while (h != NULL) { + duk_hstring *next; + next = h->hdr.h_next; + + if (DUK_HEAPHDR_HAS_REACHABLE((duk_heaphdr *) h)) + { + DUK_HEAPHDR_CLEAR_REACHABLE((duk_heaphdr *) h); + count_keep++; + prev = h; + } else { +#if defined(DUK_USE_DEBUG) + count_free++; +#endif + + /* For pinned strings the refcount has been + * bumped. We could unbump it here before + * freeing, but that's actually not necessary + * except for assertions. + */ +#if 0 + if (DUK_HSTRING_HAS_PINNED_LITERAL(h)) { + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h) > 0U); + DUK_HSTRING_DECREF_NORZ(heap->heap_thread, h); + DUK_HSTRING_CLEAR_PINNED_LITERAL(h); + } +#endif +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Non-zero refcounts should not happen for unreachable strings, + * because we refcount finalize all unreachable objects which + * should have decreased unreachable string refcounts to zero + * (even for cycles). However, pinned strings have a +1 bump. + */ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h) == + DUK_HSTRING_HAS_PINNED_LITERAL(h) ? 1U : 0U); +#endif + + /* Deal with weak references first. */ + duk_heap_strcache_string_remove(heap, (duk_hstring *) h); + + /* Remove the string from the string table. */ + duk_heap_strtable_unlink_prev(heap, (duk_hstring *) h, (duk_hstring *) prev); + + /* Free inner references (these exist e.g. when external + * strings are enabled) and the struct itself. + */ + duk_free_hstring(heap, (duk_hstring *) h); + + /* Don't update 'prev'; it should be last string kept. */ + } + + h = next; + } + } + + done: +#if defined(DUK_USE_DEBUG) + DUK_D(DUK_DPRINT("mark-and-sweep sweep stringtable: %ld freed, %ld kept", + (long) count_free, (long) count_keep)); +#endif + *out_count_keep = count_keep; +} + +/* + * Sweep heap. + */ + +DUK_LOCAL void duk__sweep_heap(duk_heap *heap, duk_small_uint_t flags, duk_size_t *out_count_keep) { + duk_heaphdr *prev; /* last element that was left in the heap */ + duk_heaphdr *curr; + duk_heaphdr *next; +#if defined(DUK_USE_DEBUG) + duk_size_t count_free = 0; + duk_size_t count_finalize = 0; + duk_size_t count_rescue = 0; +#endif + duk_size_t count_keep = 0; + + DUK_DD(DUK_DDPRINT("duk__sweep_heap: %p", (void *) heap)); + + prev = NULL; + curr = heap->heap_allocated; + heap->heap_allocated = NULL; + while (curr) { + /* Strings and ROM objects are never placed on the heap allocated list. */ + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(curr) != DUK_HTYPE_STRING); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY(curr)); + + next = DUK_HEAPHDR_GET_NEXT(heap, curr); + + if (DUK_HEAPHDR_HAS_REACHABLE(curr)) { + /* + * Reachable object: + * - If FINALIZABLE -> actually unreachable (but marked + * artificially reachable), queue to finalize_list. + * - If !FINALIZABLE but FINALIZED -> rescued after + * finalizer execution. + * - Otherwise just a normal, reachable object. + * + * Objects which are kept are queued to heap_allocated + * tail (we're essentially filtering heap_allocated in + * practice). + */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) + if (DUK_UNLIKELY(DUK_HEAPHDR_HAS_FINALIZABLE(curr))) { + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZED(curr)); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(curr) == DUK_HTYPE_OBJECT); + DUK_DD(DUK_DDPRINT("sweep; reachable, finalizable --> move to finalize_list: %p", (void *) curr)); + +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_HEAPHDR_PREINC_REFCOUNT(curr); /* Bump refcount so that refzero never occurs when pending a finalizer call. */ +#endif + DUK_HEAP_INSERT_INTO_FINALIZE_LIST(heap, curr); +#if defined(DUK_USE_DEBUG) + count_finalize++; +#endif + } + else +#endif /* DUK_USE_FINALIZER_SUPPORT */ + { + if (DUK_UNLIKELY(DUK_HEAPHDR_HAS_FINALIZED(curr))) { + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZABLE(curr)); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(curr) == DUK_HTYPE_OBJECT); + + if (flags & DUK_MS_FLAG_POSTPONE_RESCUE) { + DUK_DD(DUK_DDPRINT("sweep; reachable, finalized, but postponing rescue decisions --> keep object (with FINALIZED set): %!iO", curr)); + count_keep++; + } else { + DUK_DD(DUK_DDPRINT("sweep; reachable, finalized --> rescued after finalization: %p", (void *) curr)); +#if defined(DUK_USE_FINALIZER_SUPPORT) + DUK_HEAPHDR_CLEAR_FINALIZED(curr); +#endif +#if defined(DUK_USE_DEBUG) + count_rescue++; +#endif + } + } else { + DUK_DD(DUK_DDPRINT("sweep; reachable --> keep: %!iO", curr)); + count_keep++; + } + + if (prev != NULL) { + DUK_ASSERT(heap->heap_allocated != NULL); + DUK_HEAPHDR_SET_NEXT(heap, prev, curr); + } else { + DUK_ASSERT(heap->heap_allocated == NULL); + heap->heap_allocated = curr; + } +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) + DUK_HEAPHDR_SET_PREV(heap, curr, prev); +#endif + DUK_HEAPHDR_ASSERT_LINKS(heap, prev); + DUK_HEAPHDR_ASSERT_LINKS(heap, curr); + prev = curr; + } + + /* + * Shrink check for value stacks here. We're inside + * ms_prevent_count protection which prevents recursive + * mark-and-sweep and refzero finalizers, so there are + * no side effects that would affect the heap lists. + */ + if (DUK_HEAPHDR_IS_OBJECT(curr) && DUK_HOBJECT_IS_THREAD((duk_hobject *) curr)) { + duk_hthread *thr_curr = (duk_hthread *) curr; + DUK_DD(DUK_DDPRINT("value stack shrink check for thread: %!O", curr)); + duk_valstack_shrink_check_nothrow(thr_curr, flags & DUK_MS_FLAG_EMERGENCY /*snug*/); + } + + DUK_HEAPHDR_CLEAR_REACHABLE(curr); + /* Keep FINALIZED if set, used if rescue decisions are postponed. */ + /* Keep FINALIZABLE for objects on finalize_list. */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_REACHABLE(curr)); + } else { + /* + * Unreachable object: + * - If FINALIZED, object was finalized but not + * rescued. This doesn't affect freeing. + * - Otherwise normal unreachable object. + * + * There's no guard preventing a FINALIZED object + * from being freed while finalizers execute: the + * artificial finalize_list reachability roots can't + * cause an incorrect free decision (but can cause + * an incorrect rescue decision). + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Non-zero refcounts should not happen because we refcount + * finalize all unreachable objects which should cancel out + * refcounts (even for cycles). + */ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(curr) == 0); +#endif + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZABLE(curr)); + +#if defined(DUK_USE_DEBUG) + if (DUK_HEAPHDR_HAS_FINALIZED(curr)) { + DUK_DD(DUK_DDPRINT("sweep; unreachable, finalized --> finalized object not rescued: %p", (void *) curr)); + } else { + DUK_DD(DUK_DDPRINT("sweep; not reachable --> free: %p", (void *) curr)); + } + +#endif + + /* Note: object cannot be a finalizable unreachable object, as + * they have been marked temporarily reachable for this round, + * and are handled above. + */ + +#if defined(DUK_USE_DEBUG) + count_free++; +#endif + + /* Weak refs should be handled here, but no weak refs for + * any non-string objects exist right now. + */ + + /* Free object and all auxiliary (non-heap) allocs. */ + duk_heap_free_heaphdr_raw(heap, curr); + } + + curr = next; + } + + if (prev != NULL) { + DUK_HEAPHDR_SET_NEXT(heap, prev, NULL); + } + DUK_HEAPHDR_ASSERT_LINKS(heap, prev); + +#if defined(DUK_USE_DEBUG) + DUK_D(DUK_DPRINT("mark-and-sweep sweep objects (non-string): %ld freed, %ld kept, %ld rescued, %ld queued for finalization", + (long) count_free, (long) count_keep, (long) count_rescue, (long) count_finalize)); +#endif + *out_count_keep = count_keep; +} + +/* + * Litcache helpers. + */ + +#if defined(DUK_USE_LITCACHE_SIZE) +DUK_LOCAL void duk__wipe_litcache(duk_heap *heap) { + duk_uint_t i; + duk_litcache_entry *e; + + e = heap->litcache; + for (i = 0; i < DUK_USE_LITCACHE_SIZE; i++) { + e->addr = NULL; + /* e->h does not need to be invalidated: when e->addr is + * NULL, e->h is considered garbage. + */ + e++; + } +} +#endif /* DUK_USE_LITCACHE_SIZE */ + +/* + * Object compaction. + * + * Compaction is assumed to never throw an error. + */ + +DUK_LOCAL int duk__protected_compact_object(duk_hthread *thr, void *udata) { + duk_hobject *obj; + /* XXX: for threads, compact stacks? */ + + DUK_UNREF(udata); + obj = duk_known_hobject(thr, -1); + duk_hobject_compact_props(thr, obj); + return 0; +} + +#if defined(DUK_USE_DEBUG) +DUK_LOCAL void duk__compact_object_list(duk_heap *heap, duk_hthread *thr, duk_heaphdr *start, duk_size_t *p_count_check, duk_size_t *p_count_compact, duk_size_t *p_count_bytes_saved) { +#else +DUK_LOCAL void duk__compact_object_list(duk_heap *heap, duk_hthread *thr, duk_heaphdr *start) { +#endif + duk_heaphdr *curr; +#if defined(DUK_USE_DEBUG) + duk_size_t old_size, new_size; +#endif + duk_hobject *obj; + + DUK_UNREF(heap); + + curr = start; + while (curr) { + DUK_DDD(DUK_DDDPRINT("mark-and-sweep compact: %p", (void *) curr)); + + if (DUK_HEAPHDR_GET_TYPE(curr) != DUK_HTYPE_OBJECT) { + goto next; + } + obj = (duk_hobject *) curr; + +#if defined(DUK_USE_DEBUG) + old_size = DUK_HOBJECT_P_COMPUTE_SIZE(DUK_HOBJECT_GET_ESIZE(obj), + DUK_HOBJECT_GET_ASIZE(obj), + DUK_HOBJECT_GET_HSIZE(obj)); +#endif + + DUK_DD(DUK_DDPRINT("compact object: %p", (void *) obj)); + duk_push_hobject(thr, obj); + /* XXX: disable error handlers for duration of compaction? */ + duk_safe_call(thr, duk__protected_compact_object, NULL, 1, 0); + +#if defined(DUK_USE_DEBUG) + new_size = DUK_HOBJECT_P_COMPUTE_SIZE(DUK_HOBJECT_GET_ESIZE(obj), + DUK_HOBJECT_GET_ASIZE(obj), + DUK_HOBJECT_GET_HSIZE(obj)); +#endif + +#if defined(DUK_USE_DEBUG) + (*p_count_compact)++; + (*p_count_bytes_saved) += (duk_size_t) (old_size - new_size); +#endif + + next: + curr = DUK_HEAPHDR_GET_NEXT(heap, curr); +#if defined(DUK_USE_DEBUG) + (*p_count_check)++; +#endif + } +} + +DUK_LOCAL void duk__compact_objects(duk_heap *heap) { + /* XXX: which lists should participate? to be finalized? */ +#if defined(DUK_USE_DEBUG) + duk_size_t count_check = 0; + duk_size_t count_compact = 0; + duk_size_t count_bytes_saved = 0; +#endif + + DUK_DD(DUK_DDPRINT("duk__compact_objects: %p", (void *) heap)); + + DUK_ASSERT(heap->heap_thread != NULL); + +#if defined(DUK_USE_DEBUG) + duk__compact_object_list(heap, heap->heap_thread, heap->heap_allocated, &count_check, &count_compact, &count_bytes_saved); +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__compact_object_list(heap, heap->heap_thread, heap->finalize_list, &count_check, &count_compact, &count_bytes_saved); +#endif +#else + duk__compact_object_list(heap, heap->heap_thread, heap->heap_allocated); +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__compact_object_list(heap, heap->heap_thread, heap->finalize_list); +#endif +#endif +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* Always handled to completion inline in DECREF. */ +#endif + +#if defined(DUK_USE_DEBUG) + DUK_D(DUK_DPRINT("mark-and-sweep compact objects: %ld checked, %ld compaction attempts, %ld bytes saved by compaction", + (long) count_check, (long) count_compact, (long) count_bytes_saved)); +#endif +} + +/* + * Assertion helpers. + */ + +#if defined(DUK_USE_ASSERTIONS) +typedef void (*duk__gc_heaphdr_assert)(duk_heap *heap, duk_heaphdr *h); +typedef void (*duk__gc_hstring_assert)(duk_heap *heap, duk_hstring *h); + +DUK_LOCAL void duk__assert_walk_list(duk_heap *heap, duk_heaphdr *start, duk__gc_heaphdr_assert func) { + duk_heaphdr *curr; + for (curr = start; curr != NULL; curr = DUK_HEAPHDR_GET_NEXT(heap, curr)) { + func(heap, curr); + } +} + +DUK_LOCAL void duk__assert_walk_strtable(duk_heap *heap, duk__gc_hstring_assert func) { + duk_uint32_t i; + + for (i = 0; i < heap->st_size; i++) { + duk_hstring *h; + +#if defined(DUK_USE_STRTAB_PTRCOMP) + h = DUK_USE_HEAPPTR_DEC16(heap->heap_udata, heap->strtable16[i]); +#else + h = heap->strtable[i]; +#endif + while (h != NULL) { + func(heap, h); + h = h->hdr.h_next; + } + } +} + +DUK_LOCAL void duk__assert_heaphdr_flags_cb(duk_heap *heap, duk_heaphdr *h) { + DUK_UNREF(heap); + DUK_ASSERT(!DUK_HEAPHDR_HAS_REACHABLE(h)); + DUK_ASSERT(!DUK_HEAPHDR_HAS_TEMPROOT(h)); + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZABLE(h)); + /* may have FINALIZED */ +} +DUK_LOCAL void duk__assert_heaphdr_flags(duk_heap *heap) { + duk__assert_walk_list(heap, heap->heap_allocated, duk__assert_heaphdr_flags_cb); +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* Always handled to completion inline in DECREF. */ +#endif + /* XXX: Assertions for finalize_list? */ +} + +DUK_LOCAL void duk__assert_validity_cb1(duk_heap *heap, duk_heaphdr *h) { + DUK_UNREF(heap); + DUK_ASSERT(DUK_HEAPHDR_IS_OBJECT(h) || DUK_HEAPHDR_IS_BUFFER(h)); + duk_heaphdr_assert_valid_subclassed(h); +} +DUK_LOCAL void duk__assert_validity_cb2(duk_heap *heap, duk_hstring *h) { + DUK_UNREF(heap); + DUK_ASSERT(DUK_HEAPHDR_IS_STRING((duk_heaphdr *) h)); + duk_heaphdr_assert_valid_subclassed((duk_heaphdr *) h); +} +DUK_LOCAL void duk__assert_validity(duk_heap *heap) { + duk__assert_walk_list(heap, heap->heap_allocated, duk__assert_validity_cb1); +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__assert_walk_list(heap, heap->finalize_list, duk__assert_validity_cb1); +#endif +#if defined(DUK_USE_REFERENCE_COUNTING) + duk__assert_walk_list(heap, heap->refzero_list, duk__assert_validity_cb1); +#endif + duk__assert_walk_strtable(heap, duk__assert_validity_cb2); +} + +#if defined(DUK_USE_REFERENCE_COUNTING) +DUK_LOCAL void duk__assert_valid_refcounts_cb(duk_heap *heap, duk_heaphdr *h) { + /* Cannot really assert much w.r.t. refcounts now. */ + + DUK_UNREF(heap); + if (DUK_HEAPHDR_GET_REFCOUNT(h) == 0 && + DUK_HEAPHDR_HAS_FINALIZED(h)) { + /* An object may be in heap_allocated list with a zero + * refcount if it has just been finalized and is waiting + * to be collected by the next cycle. + * (This doesn't currently happen however.) + */ + } else if (DUK_HEAPHDR_GET_REFCOUNT(h) == 0) { + /* An object may be in heap_allocated list with a zero + * refcount also if it is a temporary object created + * during debugger paused state. It will get collected + * by mark-and-sweep based on its reachability status + * (presumably not reachable because refcount is 0). + */ + } + DUK_ASSERT_DISABLE(DUK_HEAPHDR_GET_REFCOUNT(h) >= 0); /* Unsigned. */ +} +DUK_LOCAL void duk__assert_valid_refcounts(duk_heap *heap) { + duk__assert_walk_list(heap, heap->heap_allocated, duk__assert_valid_refcounts_cb); +} + +DUK_LOCAL void duk__clear_assert_refcounts_cb1(duk_heap *heap, duk_heaphdr *h) { + DUK_UNREF(heap); + h->h_assert_refcount = 0; +} +DUK_LOCAL void duk__clear_assert_refcounts_cb2(duk_heap *heap, duk_hstring *h) { + DUK_UNREF(heap); + ((duk_heaphdr *) h)->h_assert_refcount = 0; +} +DUK_LOCAL void duk__clear_assert_refcounts(duk_heap *heap) { + duk__assert_walk_list(heap, heap->heap_allocated, duk__clear_assert_refcounts_cb1); +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__assert_walk_list(heap, heap->finalize_list, duk__clear_assert_refcounts_cb1); +#endif +#if defined(DUK_USE_REFERENCE_COUNTING) + duk__assert_walk_list(heap, heap->refzero_list, duk__clear_assert_refcounts_cb1); +#endif + duk__assert_walk_strtable(heap, duk__clear_assert_refcounts_cb2); +} + +DUK_LOCAL void duk__check_refcount_heaphdr(duk_heaphdr *hdr) { + duk_bool_t count_ok; + duk_size_t expect_refc; + + /* The refcount check only makes sense for reachable objects on + * heap_allocated or string table, after the sweep phase. Prior to + * sweep phase refcounts will include references that are not visible + * via reachability roots. + * + * Because we're called after the sweep phase, all heap objects on + * heap_allocated are reachable. REACHABLE flags have already been + * cleared so we can't check them. + */ + + /* ROM objects have intentionally incorrect refcount (1), but we won't + * check them. + */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY(hdr)); + + expect_refc = hdr->h_assert_refcount; + if (DUK_HEAPHDR_IS_STRING(hdr) && DUK_HSTRING_HAS_PINNED_LITERAL((duk_hstring *) hdr)) { + expect_refc++; + } + count_ok = ((duk_size_t) DUK_HEAPHDR_GET_REFCOUNT(hdr) == expect_refc); + if (!count_ok) { + DUK_D(DUK_DPRINT("refcount mismatch for: %p: header=%ld counted=%ld --> %!iO", + (void *) hdr, (long) DUK_HEAPHDR_GET_REFCOUNT(hdr), + (long) hdr->h_assert_refcount, hdr)); + DUK_ASSERT(0); + } +} + +DUK_LOCAL void duk__check_assert_refcounts_cb1(duk_heap *heap, duk_heaphdr *h) { + DUK_UNREF(heap); + duk__check_refcount_heaphdr(h); +} +DUK_LOCAL void duk__check_assert_refcounts_cb2(duk_heap *heap, duk_hstring *h) { + DUK_UNREF(heap); + duk__check_refcount_heaphdr((duk_heaphdr *) h); +} +DUK_LOCAL void duk__check_assert_refcounts(duk_heap *heap) { + duk__assert_walk_list(heap, heap->heap_allocated, duk__check_assert_refcounts_cb1); +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__assert_walk_list(heap, heap->finalize_list, duk__check_assert_refcounts_cb1); +#endif + /* XXX: Assert anything for refzero_list? */ + duk__assert_walk_strtable(heap, duk__check_assert_refcounts_cb2); +} +#endif /* DUK_USE_REFERENCE_COUNTING */ + +#if defined(DUK_USE_LITCACHE_SIZE) +DUK_LOCAL void duk__assert_litcache_nulls(duk_heap *heap) { + duk_uint_t i; + duk_litcache_entry *e; + + e = heap->litcache; + for (i = 0; i < DUK_USE_LITCACHE_SIZE; i++) { + /* Entry addresses were NULLed before mark-and-sweep, check + * that they're still NULL afterwards to ensure no pointers + * were recorded through any side effects. + */ + DUK_ASSERT(e->addr == NULL); + } +} +#endif /* DUK_USE_LITCACHE_SIZE */ +#endif /* DUK_USE_ASSERTIONS */ + +/* + * Stats dump. + */ + +#if defined(DUK_USE_DEBUG) +DUK_LOCAL void duk__dump_stats(duk_heap *heap) { + DUK_D(DUK_DPRINT("stats executor: opcodes=%ld, interrupt=%ld, throw=%ld", + (long) heap->stats_exec_opcodes, (long) heap->stats_exec_interrupt, + (long) heap->stats_exec_throw)); + DUK_D(DUK_DPRINT("stats call: all=%ld, tailcall=%ld, ecmatoecma=%ld", + (long) heap->stats_call_all, (long) heap->stats_call_tailcall, + (long) heap->stats_call_ecmatoecma)); + DUK_D(DUK_DPRINT("stats safecall: all=%ld, nothrow=%ld, throw=%ld", + (long) heap->stats_safecall_all, (long) heap->stats_safecall_nothrow, + (long) heap->stats_safecall_throw)); + DUK_D(DUK_DPRINT("stats mark-and-sweep: try_count=%ld, skip_count=%ld, emergency_count=%ld", + (long) heap->stats_ms_try_count, (long) heap->stats_ms_skip_count, + (long) heap->stats_ms_emergency_count)); + DUK_D(DUK_DPRINT("stats stringtable: intern_hit=%ld, intern_miss=%ld, " + "resize_check=%ld, resize_grow=%ld, resize_shrink=%ld, " + "litcache_hit=%ld, litcache_miss=%ld, litcache_pin=%ld", + (long) heap->stats_strtab_intern_hit, (long) heap->stats_strtab_intern_miss, + (long) heap->stats_strtab_resize_check, (long) heap->stats_strtab_resize_grow, + (long) heap->stats_strtab_resize_shrink, (long) heap->stats_strtab_litcache_hit, + (long) heap->stats_strtab_litcache_miss, (long) heap->stats_strtab_litcache_pin)); + DUK_D(DUK_DPRINT("stats object: realloc_props=%ld, abandon_array=%ld", + (long) heap->stats_object_realloc_props, (long) heap->stats_object_abandon_array)); + DUK_D(DUK_DPRINT("stats getownpropdesc: count=%ld, hit=%ld, miss=%ld", + (long) heap->stats_getownpropdesc_count, (long) heap->stats_getownpropdesc_hit, + (long) heap->stats_getownpropdesc_miss)); + DUK_D(DUK_DPRINT("stats getpropdesc: count=%ld, hit=%ld, miss=%ld", + (long) heap->stats_getpropdesc_count, (long) heap->stats_getpropdesc_hit, + (long) heap->stats_getpropdesc_miss)); + DUK_D(DUK_DPRINT("stats getprop: all=%ld, arrayidx=%ld, bufobjidx=%ld, " + "bufferidx=%ld, bufferlen=%ld, stringidx=%ld, stringlen=%ld, " + "proxy=%ld, arguments=%ld", + (long) heap->stats_getprop_all, (long) heap->stats_getprop_arrayidx, + (long) heap->stats_getprop_bufobjidx, (long) heap->stats_getprop_bufferidx, + (long) heap->stats_getprop_bufferlen, (long) heap->stats_getprop_stringidx, + (long) heap->stats_getprop_stringlen, (long) heap->stats_getprop_proxy, + (long) heap->stats_getprop_arguments)); + DUK_D(DUK_DPRINT("stats putprop: all=%ld, arrayidx=%ld, bufobjidx=%ld, " + "bufferidx=%ld, proxy=%ld", + (long) heap->stats_putprop_all, (long) heap->stats_putprop_arrayidx, + (long) heap->stats_putprop_bufobjidx, (long) heap->stats_putprop_bufferidx, + (long) heap->stats_putprop_proxy)); + DUK_D(DUK_DPRINT("stats getvar: all=%ld", + (long) heap->stats_getvar_all)); + DUK_D(DUK_DPRINT("stats putvar: all=%ld", + (long) heap->stats_putvar_all)); + DUK_D(DUK_DPRINT("stats envrec: delayedcreate=%ld, create=%ld, newenv=%ld, oldenv=%ld, pushclosure=%ld", + (long) heap->stats_envrec_delayedcreate, + (long) heap->stats_envrec_create, + (long) heap->stats_envrec_newenv, + (long) heap->stats_envrec_oldenv, + (long) heap->stats_envrec_pushclosure)); +} +#endif /* DUK_USE_DEBUG */ + +/* + * Main mark-and-sweep function. + * + * 'flags' represents the features requested by the caller. The current + * heap->ms_base_flags is ORed automatically into the flags; the base flags + * mask typically prevents certain mark-and-sweep operation to avoid trouble. + */ + +DUK_INTERNAL void duk_heap_mark_and_sweep(duk_heap *heap, duk_small_uint_t flags) { + duk_size_t count_keep_obj; + duk_size_t count_keep_str; +#if defined(DUK_USE_VOLUNTARY_GC) + duk_size_t tmp; +#endif + + DUK_STATS_INC(heap, stats_ms_try_count); +#if defined(DUK_USE_DEBUG) + if (flags & DUK_MS_FLAG_EMERGENCY) { + DUK_STATS_INC(heap, stats_ms_emergency_count); + } +#endif + + /* If debugger is paused, garbage collection is disabled by default. + * This is achieved by bumping ms_prevent_count when becoming paused. + */ + DUK_ASSERT(!DUK_HEAP_HAS_DEBUGGER_PAUSED(heap) || heap->ms_prevent_count > 0); + + /* Prevention/recursion check as soon as possible because we may + * be called a number of times when voluntary mark-and-sweep is + * pending. + */ + if (heap->ms_prevent_count != 0) { + DUK_DD(DUK_DDPRINT("reject recursive mark-and-sweep")); + DUK_STATS_INC(heap, stats_ms_skip_count); + return; + } + DUK_ASSERT(heap->ms_running == 0); /* ms_prevent_count is bumped when ms_running is set */ + + /* Heap_thread is used during mark-and-sweep for refcount finalization + * (it's also used for finalizer execution once mark-and-sweep is + * complete). Heap allocation code ensures heap_thread is set and + * properly initialized before setting ms_prevent_count to 0. + */ + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(heap->heap_thread->valstack != NULL); + + DUK_D(DUK_DPRINT("garbage collect (mark-and-sweep) starting, requested flags: 0x%08lx, effective flags: 0x%08lx", + (unsigned long) flags, (unsigned long) (flags | heap->ms_base_flags))); + + flags |= heap->ms_base_flags; +#if defined(DUK_USE_FINALIZER_SUPPORT) + if (heap->finalize_list != NULL) { + flags |= DUK_MS_FLAG_POSTPONE_RESCUE; + } +#endif + + /* + * Assertions before + */ + +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(heap->ms_prevent_count == 0); + DUK_ASSERT(heap->ms_running == 0); + DUK_ASSERT(!DUK_HEAP_HAS_DEBUGGER_PAUSED(heap)); + DUK_ASSERT(!DUK_HEAP_HAS_MARKANDSWEEP_RECLIMIT_REACHED(heap)); + DUK_ASSERT(heap->ms_recursion_depth == 0); + duk__assert_heaphdr_flags(heap); + duk__assert_validity(heap); +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Note: heap->refzero_free_running may be true; a refcount + * finalizer may trigger a mark-and-sweep. + */ + duk__assert_valid_refcounts(heap); +#endif /* DUK_USE_REFERENCE_COUNTING */ +#endif /* DUK_USE_ASSERTIONS */ + + /* + * Begin + */ + + DUK_ASSERT(heap->ms_prevent_count == 0); + DUK_ASSERT(heap->ms_running == 0); + heap->ms_prevent_count = 1; + heap->ms_running = 1; + + /* + * Free activation/catcher freelists on every mark-and-sweep for now. + * This is an initial rough draft; ideally we'd keep count of the + * freelist size and free only excess entries. + */ + + DUK_D(DUK_DPRINT("freeing temporary freelists")); + duk_heap_free_freelists(heap); + + /* + * Mark roots, hoping that recursion limit is not normally hit. + * If recursion limit is hit, run additional reachability rounds + * starting from "temproots" until marking is complete. + * + * Marking happens in two phases: first we mark actual reachability + * roots (and run "temproots" to complete the process). Then we + * check which objects are unreachable and are finalizable; such + * objects are marked as FINALIZABLE and marked as reachability + * (and "temproots" is run again to complete the process). + * + * The heap finalize_list must also be marked as a reachability root. + * There may be objects on the list from a previous round if the + * previous run had finalizer skip flag. + */ + +#if defined(DUK_USE_ASSERTIONS) && defined(DUK_USE_REFERENCE_COUNTING) + duk__clear_assert_refcounts(heap); +#endif +#if defined(DUK_USE_LITCACHE_SIZE) + duk__wipe_litcache(heap); +#endif + duk__mark_roots_heap(heap); /* Mark main reachability roots. */ +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* Always handled to completion inline in DECREF. */ +#endif + duk__mark_temproots_by_heap_scan(heap); /* Temproots. */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__mark_finalizable(heap); /* Mark finalizable as reachability roots. */ + duk__mark_finalize_list(heap); /* Mark finalizer work list as reachability roots. */ +#endif + duk__mark_temproots_by_heap_scan(heap); /* Temproots. */ + + /* + * Sweep garbage and remove marking flags, and move objects with + * finalizers to the finalizer work list. + * + * Objects to be swept need to get their refcounts finalized before + * they are swept. In other words, their target object refcounts + * need to be decreased. This has to be done before freeing any + * objects to avoid decref'ing dangling pointers (which may happen + * even without bugs, e.g. with reference loops) + * + * Because strings don't point to other heap objects, similar + * finalization is not necessary for strings. + */ + + /* XXX: more emergency behavior, e.g. find smaller hash sizes etc */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + duk__finalize_refcounts(heap); +#endif + duk__sweep_heap(heap, flags, &count_keep_obj); + duk__sweep_stringtable(heap, &count_keep_str); +#if defined(DUK_USE_ASSERTIONS) && defined(DUK_USE_REFERENCE_COUNTING) + duk__check_assert_refcounts(heap); +#endif +#if defined(DUK_USE_REFERENCE_COUNTING) + DUK_ASSERT(heap->refzero_list == NULL); /* Always handled to completion inline in DECREF. */ +#endif +#if defined(DUK_USE_FINALIZER_SUPPORT) + duk__clear_finalize_list_flags(heap); +#endif + + /* + * Object compaction (emergency only). + * + * Object compaction is a separate step after sweeping, as there is + * more free memory for it to work with. Also, currently compaction + * may insert new objects into the heap allocated list and the string + * table which we don't want to do during a sweep (the reachability + * flags of such objects would be incorrect). The objects inserted + * are currently: + * + * - a temporary duk_hbuffer for a new properties allocation + * - if array part is abandoned, string keys are interned + * + * The object insertions go to the front of the list, so they do not + * cause an infinite loop (they are not compacted). + * + * At present compaction is not allowed when mark-and-sweep runs + * during error handling because it involves a duk_safe_call() + * interfering with error state. + */ + + if ((flags & DUK_MS_FLAG_EMERGENCY) && + !(flags & DUK_MS_FLAG_NO_OBJECT_COMPACTION)) { + if (heap->lj.type != DUK_LJ_TYPE_UNKNOWN) { + DUK_D(DUK_DPRINT("lj.type (%ld) not DUK_LJ_TYPE_UNKNOWN, skip object compaction", (long) heap->lj.type)); + } else { + DUK_D(DUK_DPRINT("object compaction")); + duk__compact_objects(heap); + } + } + + /* + * String table resize check. + * + * This is mainly useful in emergency GC: if the string table load + * factor is really low for some reason, we can shrink the string + * table to a smaller size and free some memory in the process. + * Only execute in emergency GC. String table has internal flags + * to protect against recursive resizing if this mark-and-sweep pass + * was triggered by a string table resize. + */ + + if (flags & DUK_MS_FLAG_EMERGENCY) { + DUK_D(DUK_DPRINT("stringtable resize check in emergency gc")); + duk_heap_strtable_force_resize(heap); + } + + /* + * Finish + */ + + DUK_ASSERT(heap->ms_prevent_count == 1); + DUK_ASSERT(heap->ms_running == 1); + heap->ms_prevent_count = 0; + heap->ms_running = 0; + + /* + * Assertions after + */ + +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(heap->ms_prevent_count == 0); + DUK_ASSERT(!DUK_HEAP_HAS_MARKANDSWEEP_RECLIMIT_REACHED(heap)); + DUK_ASSERT(heap->ms_recursion_depth == 0); + duk__assert_heaphdr_flags(heap); + duk__assert_validity(heap); +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Note: heap->refzero_free_running may be true; a refcount + * finalizer may trigger a mark-and-sweep. + */ + duk__assert_valid_refcounts(heap); +#endif /* DUK_USE_REFERENCE_COUNTING */ +#if defined(DUK_USE_LITCACHE_SIZE) + duk__assert_litcache_nulls(heap); +#endif /* DUK_USE_LITCACHE_SIZE */ +#endif /* DUK_USE_ASSERTIONS */ + + /* + * Reset trigger counter + */ + +#if defined(DUK_USE_VOLUNTARY_GC) + tmp = (count_keep_obj + count_keep_str) / 256; + heap->ms_trigger_counter = (duk_int_t) ( + (tmp * DUK_HEAP_MARK_AND_SWEEP_TRIGGER_MULT) + + DUK_HEAP_MARK_AND_SWEEP_TRIGGER_ADD); + DUK_D(DUK_DPRINT("garbage collect (mark-and-sweep) finished: %ld objects kept, %ld strings kept, trigger reset to %ld", + (long) count_keep_obj, (long) count_keep_str, (long) heap->ms_trigger_counter)); +#else + DUK_D(DUK_DPRINT("garbage collect (mark-and-sweep) finished: %ld objects kept, %ld strings kept, no voluntary trigger", + (long) count_keep_obj, (long) count_keep_str)); +#endif + + /* + * Stats dump + */ + +#if defined(DUK_USE_DEBUG) + duk__dump_stats(heap); +#endif + + /* + * Finalize objects in the finalization work list. Finalized + * objects are queued back to heap_allocated with FINALIZED set. + * + * Since finalizers may cause arbitrary side effects, they are + * prevented e.g. during string table and object property allocation + * resizing using heap->pf_prevent_count. In this case the objects + * remain in the finalization work list after mark-and-sweep exits + * and they may be finalized on the next pass or any DECREF checking + * for finalize_list. + * + * As of Duktape 2.1 finalization happens outside mark-and-sweep + * protection. Mark-and-sweep is allowed while the finalize_list + * is being processed, but no rescue decisions are done while the + * process is on-going. This avoids incorrect rescue decisions + * if an object is considered reachable (and thus rescued) because + * of a reference via finalize_list (which is considered a reachability + * root). When finalize_list is being processed, reachable objects + * with FINALIZED set will just keep their FINALIZED flag for later + * mark-and-sweep processing. + * + * This could also be handled (a bit better) by having a more refined + * notion of reachability for rescue/free decisions. + * + * XXX: avoid finalizer execution when doing emergency GC? + */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) + /* Attempt to process finalize_list, pf_prevent_count check + * is inside the target. + */ + duk_heap_process_finalize_list(heap); +#endif /* DUK_USE_FINALIZER_SUPPORT */ +} +#line 1 "duk_heap_memory.c" +/* + * Memory allocation handling. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Allocate memory with garbage collection. + */ + +/* Slow path: voluntary GC triggered, first alloc attempt failed, or zero size. */ +DUK_LOCAL DUK_NOINLINE_PERF DUK_COLD void *duk__heap_mem_alloc_slowpath(duk_heap *heap, duk_size_t size) { + void *res; + duk_small_int_t i; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->alloc_func != NULL); + DUK_ASSERT_DISABLE(size >= 0); + + if (size == 0) { + DUK_D(DUK_DPRINT("zero size alloc in slow path, return NULL")); + return NULL; + } + + DUK_D(DUK_DPRINT("first alloc attempt failed or voluntary GC limit reached, attempt to gc and retry")); + +#if 0 + /* + * If GC is already running there is no point in attempting a GC + * because it will be skipped. This could be checked for explicitly, + * but it isn't actually needed: the loop below will eventually + * fail resulting in a NULL. + */ + + if (heap->ms_prevent_count != 0) { + DUK_D(DUK_DPRINT("duk_heap_mem_alloc() failed, gc in progress (gc skipped), alloc size %ld", (long) size)); + return NULL; + } +#endif + + /* + * Retry with several GC attempts. Initial attempts are made without + * emergency mode; later attempts use emergency mode which minimizes + * memory allocations forcibly. + */ + + for (i = 0; i < DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_LIMIT; i++) { + duk_small_uint_t flags; + + flags = 0; + if (i >= DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_EMERGENCY_LIMIT - 1) { + flags |= DUK_MS_FLAG_EMERGENCY; + } + + duk_heap_mark_and_sweep(heap, flags); + + DUK_ASSERT(size > 0); + res = heap->alloc_func(heap->heap_udata, size); + if (res != NULL) { + DUK_D(DUK_DPRINT("duk_heap_mem_alloc() succeeded after gc (pass %ld), alloc size %ld", + (long) (i + 1), (long) size)); + return res; + } + } + + DUK_D(DUK_DPRINT("duk_heap_mem_alloc() failed even after gc, alloc size %ld", (long) size)); + return NULL; +} + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void *duk_heap_mem_alloc(duk_heap *heap, duk_size_t size) { + void *res; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->alloc_func != NULL); + DUK_ASSERT_DISABLE(size >= 0); + +#if defined(DUK_USE_VOLUNTARY_GC) + /* Voluntary periodic GC (if enabled). */ + if (DUK_UNLIKELY(--(heap)->ms_trigger_counter < 0)) { + goto slowpath; + } +#endif + +#if defined(DUK_USE_GC_TORTURE) + /* Simulate alloc failure on every alloc, except when mark-and-sweep + * is running. + */ + if (heap->ms_prevent_count == 0) { + DUK_DDD(DUK_DDDPRINT("gc torture enabled, pretend that first alloc attempt fails")); + res = NULL; + DUK_UNREF(res); + goto slowpath; + } +#endif + + /* Zero-size allocation should happen very rarely (if at all), so + * don't check zero size on NULL; handle it in the slow path + * instead. This reduces size of inlined code. + */ + res = heap->alloc_func(heap->heap_udata, size); + if (DUK_LIKELY(res != NULL)) { + return res; + } + + slowpath: + + if (size == 0) { + DUK_D(DUK_DPRINT("first alloc attempt returned NULL for zero size alloc, use slow path to deal with it")); + } else { + DUK_D(DUK_DPRINT("first alloc attempt failed, attempt to gc and retry")); + } + return duk__heap_mem_alloc_slowpath(heap, size); +} + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void *duk_heap_mem_alloc_zeroed(duk_heap *heap, duk_size_t size) { + void *res; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->alloc_func != NULL); + DUK_ASSERT_DISABLE(size >= 0); + + res = DUK_ALLOC(heap, size); + if (DUK_LIKELY(res != NULL)) { + duk_memzero(res, size); + } + return res; +} + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void *duk_heap_mem_alloc_checked(duk_hthread *thr, duk_size_t size) { + void *res; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(thr->heap->alloc_func != NULL); + + res = duk_heap_mem_alloc(thr->heap, size); + if (DUK_LIKELY(res != NULL)) { + return res; + } else if (size == 0) { + DUK_ASSERT(res == NULL); + return res; + } + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); +} + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void *duk_heap_mem_alloc_checked_zeroed(duk_hthread *thr, duk_size_t size) { + void *res; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(thr->heap->alloc_func != NULL); + + res = duk_heap_mem_alloc(thr->heap, size); + if (DUK_LIKELY(res != NULL)) { + duk_memzero(res, size); + return res; + } else if (size == 0) { + DUK_ASSERT(res == NULL); + return res; + } + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); +} + +/* + * Reallocate memory with garbage collection. + */ + +/* Slow path: voluntary GC triggered, first realloc attempt failed, or zero size. */ +DUK_LOCAL DUK_NOINLINE_PERF DUK_COLD void *duk__heap_mem_realloc_slowpath(duk_heap *heap, void *ptr, duk_size_t newsize) { + void *res; + duk_small_int_t i; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->realloc_func != NULL); + /* ptr may be NULL */ + DUK_ASSERT_DISABLE(newsize >= 0); + + /* Newsize was 0 and realloc() returned NULL, this has the semantics + * of free(oldptr), i.e. memory was successfully freed. + */ + if (newsize == 0) { + DUK_D(DUK_DPRINT("zero size realloc in slow path, return NULL")); + return NULL; + } + + DUK_D(DUK_DPRINT("first realloc attempt failed, attempt to gc and retry")); + +#if 0 + /* + * Avoid a GC if GC is already running. See duk_heap_mem_alloc(). + */ + + if (heap->ms_prevent_count != 0) { + DUK_D(DUK_DPRINT("duk_heap_mem_realloc() failed, gc in progress (gc skipped), alloc size %ld", (long) newsize)); + return NULL; + } +#endif + + /* + * Retry with several GC attempts. Initial attempts are made without + * emergency mode; later attempts use emergency mode which minimizes + * memory allocations forcibly. + */ + + for (i = 0; i < DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_LIMIT; i++) { + duk_small_uint_t flags; + + flags = 0; + if (i >= DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_EMERGENCY_LIMIT - 1) { + flags |= DUK_MS_FLAG_EMERGENCY; + } + + duk_heap_mark_and_sweep(heap, flags); + + DUK_ASSERT(newsize > 0); + res = heap->realloc_func(heap->heap_udata, ptr, newsize); + if (res || newsize == 0) { + DUK_D(DUK_DPRINT("duk_heap_mem_realloc() succeeded after gc (pass %ld), alloc size %ld", + (long) (i + 1), (long) newsize)); + return res; + } + } + + DUK_D(DUK_DPRINT("duk_heap_mem_realloc() failed even after gc, alloc size %ld", (long) newsize)); + return NULL; +} + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void *duk_heap_mem_realloc(duk_heap *heap, void *ptr, duk_size_t newsize) { + void *res; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->realloc_func != NULL); + /* ptr may be NULL */ + DUK_ASSERT_DISABLE(newsize >= 0); + +#if defined(DUK_USE_VOLUNTARY_GC) + /* Voluntary periodic GC (if enabled). */ + if (DUK_UNLIKELY(--(heap)->ms_trigger_counter < 0)) { + goto slowpath; + } +#endif + +#if defined(DUK_USE_GC_TORTURE) + /* Simulate alloc failure on every realloc, except when mark-and-sweep + * is running. + */ + if (heap->ms_prevent_count == 0) { + DUK_DDD(DUK_DDDPRINT("gc torture enabled, pretend that first realloc attempt fails")); + res = NULL; + DUK_UNREF(res); + goto slowpath; + } +#endif + + res = heap->realloc_func(heap->heap_udata, ptr, newsize); + if (DUK_LIKELY(res != NULL)) { + return res; + } + + slowpath: + + if (newsize == 0) { + DUK_D(DUK_DPRINT("first realloc attempt returned NULL for zero size realloc, use slow path to deal with it")); + } else { + DUK_D(DUK_DPRINT("first realloc attempt failed, attempt to gc and retry")); + } + return duk__heap_mem_realloc_slowpath(heap, ptr, newsize); +} + +/* + * Reallocate memory with garbage collection, using a callback to provide + * the current allocated pointer. This variant is used when a mark-and-sweep + * (e.g. finalizers) might change the original pointer. + */ + +/* Slow path: voluntary GC triggered, first realloc attempt failed, or zero size. */ +DUK_LOCAL DUK_NOINLINE_PERF DUK_COLD void *duk__heap_mem_realloc_indirect_slowpath(duk_heap *heap, duk_mem_getptr cb, void *ud, duk_size_t newsize) { + void *res; + duk_small_int_t i; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->realloc_func != NULL); + DUK_ASSERT_DISABLE(newsize >= 0); + + if (newsize == 0) { + DUK_D(DUK_DPRINT("zero size indirect realloc in slow path, return NULL")); + return NULL; + } + + DUK_D(DUK_DPRINT("first indirect realloc attempt failed, attempt to gc and retry")); + +#if 0 + /* + * Avoid a GC if GC is already running. See duk_heap_mem_alloc(). + */ + + if (heap->ms_prevent_count != 0) { + DUK_D(DUK_DPRINT("duk_heap_mem_realloc_indirect() failed, gc in progress (gc skipped), alloc size %ld", (long) newsize)); + return NULL; + } +#endif + + /* + * Retry with several GC attempts. Initial attempts are made without + * emergency mode; later attempts use emergency mode which minimizes + * memory allocations forcibly. + */ + + for (i = 0; i < DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_LIMIT; i++) { + duk_small_uint_t flags; + +#if defined(DUK_USE_DEBUG) + void *ptr_pre; + void *ptr_post; +#endif + +#if defined(DUK_USE_DEBUG) + ptr_pre = cb(heap, ud); +#endif + flags = 0; + if (i >= DUK_HEAP_ALLOC_FAIL_MARKANDSWEEP_EMERGENCY_LIMIT - 1) { + flags |= DUK_MS_FLAG_EMERGENCY; + } + + duk_heap_mark_and_sweep(heap, flags); +#if defined(DUK_USE_DEBUG) + ptr_post = cb(heap, ud); + if (ptr_pre != ptr_post) { + DUK_DD(DUK_DDPRINT("realloc base pointer changed by mark-and-sweep: %p -> %p", + (void *) ptr_pre, (void *) ptr_post)); + } +#endif + + /* Note: key issue here is to re-lookup the base pointer on every attempt. + * The pointer being reallocated may change after every mark-and-sweep. + */ + + DUK_ASSERT(newsize > 0); + res = heap->realloc_func(heap->heap_udata, cb(heap, ud), newsize); + if (res || newsize == 0) { + DUK_D(DUK_DPRINT("duk_heap_mem_realloc_indirect() succeeded after gc (pass %ld), alloc size %ld", + (long) (i + 1), (long) newsize)); + return res; + } + } + + DUK_D(DUK_DPRINT("duk_heap_mem_realloc_indirect() failed even after gc, alloc size %ld", (long) newsize)); + return NULL; +} + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void *duk_heap_mem_realloc_indirect(duk_heap *heap, duk_mem_getptr cb, void *ud, duk_size_t newsize) { + void *res; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->realloc_func != NULL); + DUK_ASSERT_DISABLE(newsize >= 0); + +#if defined(DUK_USE_VOLUNTARY_GC) + /* Voluntary periodic GC (if enabled). */ + if (DUK_UNLIKELY(--(heap)->ms_trigger_counter < 0)) { + goto slowpath; + } +#endif + +#if defined(DUK_USE_GC_TORTURE) + /* Simulate alloc failure on every realloc, except when mark-and-sweep + * is running. + */ + if (heap->ms_prevent_count == 0) { + DUK_DDD(DUK_DDDPRINT("gc torture enabled, pretend that first indirect realloc attempt fails")); + res = NULL; + DUK_UNREF(res); + goto slowpath; + } +#endif + + res = heap->realloc_func(heap->heap_udata, cb(heap, ud), newsize); + if (DUK_LIKELY(res != NULL)) { + return res; + } + + slowpath: + + if (newsize == 0) { + DUK_D(DUK_DPRINT("first indirect realloc attempt returned NULL for zero size realloc, use slow path to deal with it")); + } else { + DUK_D(DUK_DPRINT("first indirect realloc attempt failed, attempt to gc and retry")); + } + return duk__heap_mem_realloc_indirect_slowpath(heap, cb, ud, newsize); +} + +/* + * Free memory + */ + +DUK_INTERNAL DUK_INLINE_PERF DUK_HOT void duk_heap_mem_free(duk_heap *heap, void *ptr) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->free_func != NULL); + /* ptr may be NULL */ + + /* Must behave like a no-op with NULL and any pointer returned from + * malloc/realloc with zero size. + */ + heap->free_func(heap->heap_udata, ptr); + + /* Never perform a GC (even voluntary) in a memory free, otherwise + * all call sites doing frees would need to deal with the side effects. + * No need to update voluntary GC counter either. + */ +} +#line 1 "duk_heap_misc.c" +/* + * Support functions for duk_heap. + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL void duk_heap_insert_into_heap_allocated(duk_heap *heap, duk_heaphdr *hdr) { + duk_heaphdr *root; + + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(hdr) != DUK_HTYPE_STRING); + + root = heap->heap_allocated; +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) + if (root != NULL) { + DUK_ASSERT(DUK_HEAPHDR_GET_PREV(heap, root) == NULL); + DUK_HEAPHDR_SET_PREV(heap, root, hdr); + } + DUK_HEAPHDR_SET_PREV(heap, hdr, NULL); +#endif + DUK_HEAPHDR_SET_NEXT(heap, hdr, root); + DUK_HEAPHDR_ASSERT_LINKS(heap, hdr); + DUK_HEAPHDR_ASSERT_LINKS(heap, root); + heap->heap_allocated = hdr; +} + +#if defined(DUK_USE_REFERENCE_COUNTING) +DUK_INTERNAL void duk_heap_remove_from_heap_allocated(duk_heap *heap, duk_heaphdr *hdr) { + duk_heaphdr *prev; + duk_heaphdr *next; + + /* Strings are in string table. */ + DUK_ASSERT(hdr != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(hdr) != DUK_HTYPE_STRING); + + /* Target 'hdr' must be in heap_allocated (not e.g. finalize_list). + * If not, heap lists will become corrupted so assert early for it. + */ +#if defined(DUK_USE_ASSERTIONS) + { + duk_heaphdr *tmp; + for (tmp = heap->heap_allocated; tmp != NULL; tmp = DUK_HEAPHDR_GET_NEXT(heap, tmp)) { + if (tmp == hdr) { + break; + } + } + DUK_ASSERT(tmp == hdr); + } +#endif + + /* Read/write only once to minimize pointer compression calls. */ + prev = DUK_HEAPHDR_GET_PREV(heap, hdr); + next = DUK_HEAPHDR_GET_NEXT(heap, hdr); + + if (prev != NULL) { + DUK_ASSERT(heap->heap_allocated != hdr); + DUK_HEAPHDR_SET_NEXT(heap, prev, next); + } else { + DUK_ASSERT(heap->heap_allocated == hdr); + heap->heap_allocated = next; + } + if (next != NULL) { + DUK_HEAPHDR_SET_PREV(heap, next, prev); + } else { + ; + } +} +#endif /* DUK_USE_REFERENCE_COUNTING */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL void duk_heap_insert_into_finalize_list(duk_heap *heap, duk_heaphdr *hdr) { + duk_heaphdr *root; + + root = heap->finalize_list; +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) + DUK_HEAPHDR_SET_PREV(heap, hdr, NULL); + if (root != NULL) { + DUK_ASSERT(DUK_HEAPHDR_GET_PREV(heap, root) == NULL); + DUK_HEAPHDR_SET_PREV(heap, root, hdr); + } +#endif + DUK_HEAPHDR_SET_NEXT(heap, hdr, root); + DUK_HEAPHDR_ASSERT_LINKS(heap, hdr); + DUK_HEAPHDR_ASSERT_LINKS(heap, root); + heap->finalize_list = hdr; +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL void duk_heap_remove_from_finalize_list(duk_heap *heap, duk_heaphdr *hdr) { +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) + duk_heaphdr *next; + duk_heaphdr *prev; + + next = DUK_HEAPHDR_GET_NEXT(heap, hdr); + prev = DUK_HEAPHDR_GET_PREV(heap, hdr); + if (next != NULL) { + DUK_ASSERT(DUK_HEAPHDR_GET_PREV(heap, next) == hdr); + DUK_HEAPHDR_SET_PREV(heap, next, prev); + } + if (prev == NULL) { + DUK_ASSERT(hdr == heap->finalize_list); + heap->finalize_list = next; + } else { + DUK_ASSERT(hdr != heap->finalize_list); + DUK_HEAPHDR_SET_NEXT(heap, prev, next); + } +#else + duk_heaphdr *next; + duk_heaphdr *curr; + + /* Random removal is expensive: we need to locate the previous element + * because we don't have a 'prev' pointer. + */ + curr = heap->finalize_list; + if (curr == hdr) { + heap->finalize_list = DUK_HEAPHDR_GET_NEXT(heap, curr); + } else { + DUK_ASSERT(hdr != heap->finalize_list); + for (;;) { + DUK_ASSERT(curr != NULL); /* Caller responsibility. */ + + next = DUK_HEAPHDR_GET_NEXT(heap, curr); + if (next == hdr) { + next = DUK_HEAPHDR_GET_NEXT(heap, hdr); + DUK_HEAPHDR_SET_NEXT(heap, curr, next); + break; + } + } + } +#endif +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL duk_bool_t duk_heap_in_heap_allocated(duk_heap *heap, duk_heaphdr *ptr) { + duk_heaphdr *curr; + DUK_ASSERT(heap != NULL); + + for (curr = heap->heap_allocated; curr != NULL; curr = DUK_HEAPHDR_GET_NEXT(heap, curr)) { + if (curr == ptr) { + return 1; + } + } + return 0; +} +#endif /* DUK_USE_ASSERTIONS */ + +#if defined(DUK_USE_INTERRUPT_COUNTER) +DUK_INTERNAL void duk_heap_switch_thread(duk_heap *heap, duk_hthread *new_thr) { + duk_hthread *curr_thr; + + DUK_ASSERT(heap != NULL); + + if (new_thr != NULL) { + curr_thr = heap->curr_thread; + if (curr_thr == NULL) { + /* For initial entry use default value; zero forces an + * interrupt before executing the first insturction. + */ + DUK_DD(DUK_DDPRINT("switch thread, initial entry, init default interrupt counter")); + new_thr->interrupt_counter = 0; + new_thr->interrupt_init = 0; + } else { + /* Copy interrupt counter/init value state to new thread (if any). + * It's OK for new_thr to be the same as curr_thr. + */ +#if defined(DUK_USE_DEBUG) + if (new_thr != curr_thr) { + DUK_DD(DUK_DDPRINT("switch thread, not initial entry, copy interrupt counter")); + } +#endif + new_thr->interrupt_counter = curr_thr->interrupt_counter; + new_thr->interrupt_init = curr_thr->interrupt_init; + } + } else { + DUK_DD(DUK_DDPRINT("switch thread, new thread is NULL, no interrupt counter changes")); + } + + heap->curr_thread = new_thr; /* may be NULL */ +} +#endif /* DUK_USE_INTERRUPT_COUNTER */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL void duk_heap_assert_valid(duk_heap *heap) { + DUK_ASSERT(heap != NULL); +} +#endif +#line 1 "duk_heap_refcount.c" +/* + * Reference counting implementation. + * + * INCREF/DECREF, finalization and freeing of objects whose refcount reaches + * zero (refzero). These operations are very performance sensitive, so + * various small tricks are used in an attempt to maximize speed. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_REFERENCE_COUNTING) + +#if !defined(DUK_USE_DOUBLE_LINKED_HEAP) +#error internal error, reference counting requires a double linked heap +#endif + +/* + * Heap object refcount finalization. + * + * When an object is about to be freed, all other objects it refers to must + * be decref'd. Refcount finalization does NOT free the object or its inner + * allocations (mark-and-sweep shares these helpers), it just manipulates + * the refcounts. + * + * Note that any of the DECREFs may cause a refcount to drop to zero. If so, + * the object won't be refzero processed inline, but will just be queued to + * refzero_list and processed by an earlier caller working on refzero_list, + * eliminating C recursion from even long refzero cascades. If refzero + * finalization is triggered by mark-and-sweep, refzero conditions are ignored + * (objects are not even queued to refzero_list) because mark-and-sweep deals + * with them; refcounts are still updated so that they remain in sync with + * actual references. + */ + +DUK_LOCAL void duk__decref_tvals_norz(duk_hthread *thr, duk_tval *tv, duk_idx_t count) { + DUK_ASSERT(count == 0 || tv != NULL); + + while (count-- > 0) { + DUK_TVAL_DECREF_NORZ(thr, tv); + tv++; + } +} + +DUK_INTERNAL void duk_hobject_refcount_finalize_norz(duk_heap *heap, duk_hobject *h) { + duk_hthread *thr; + duk_uint_fast32_t i; + duk_uint_fast32_t n; + duk_propvalue *p_val; + duk_tval *p_tv; + duk_hstring **p_key; + duk_uint8_t *p_flag; + duk_hobject *h_proto; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(h); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) h) == DUK_HTYPE_OBJECT); + + thr = heap->heap_thread; + DUK_ASSERT(thr != NULL); + + p_key = DUK_HOBJECT_E_GET_KEY_BASE(heap, h); + p_val = DUK_HOBJECT_E_GET_VALUE_BASE(heap, h); + p_flag = DUK_HOBJECT_E_GET_FLAGS_BASE(heap, h); + n = DUK_HOBJECT_GET_ENEXT(h); + while (n-- > 0) { + duk_hstring *key; + + key = p_key[n]; + if (DUK_UNLIKELY(key == NULL)) { + continue; + } + DUK_HSTRING_DECREF_NORZ(thr, key); + if (DUK_UNLIKELY(p_flag[n] & DUK_PROPDESC_FLAG_ACCESSOR)) { + duk_hobject *h_getset; + h_getset = p_val[n].a.get; + DUK_ASSERT(h_getset == NULL || DUK_HEAPHDR_IS_OBJECT((duk_heaphdr *) h_getset)); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, h_getset); + h_getset = p_val[n].a.set; + DUK_ASSERT(h_getset == NULL || DUK_HEAPHDR_IS_OBJECT((duk_heaphdr *) h_getset)); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, h_getset); + } else { + duk_tval *tv_val; + tv_val = &p_val[n].v; + DUK_TVAL_DECREF_NORZ(thr, tv_val); + } + } + + p_tv = DUK_HOBJECT_A_GET_BASE(heap, h); + n = DUK_HOBJECT_GET_ASIZE(h); + while (n-- > 0) { + duk_tval *tv_val; + tv_val = p_tv + n; + DUK_TVAL_DECREF_NORZ(thr, tv_val); + } + + /* Hash part is a 'weak reference' and doesn't contribute to refcounts. */ + + h_proto = (duk_hobject *) DUK_HOBJECT_GET_PROTOTYPE(heap, h); + DUK_ASSERT(h_proto == NULL || DUK_HEAPHDR_IS_OBJECT((duk_heaphdr *) h_proto)); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, h_proto); + + /* XXX: Object subclass tests are quite awkward at present, ideally + * we should be able to switch-case here with a dense index (subtype + * number or something). For now, fast path plain objects and arrays + * and bit test the rest individually. + */ + + if (DUK_HOBJECT_HAS_FASTREFS(h)) { + /* Plain object or array, nothing more to do. While a + * duk_harray has additional fields, none of them need + * DECREF updates. + */ + DUK_ASSERT(DUK_HOBJECT_ALLOWS_FASTREFS(h)); + return; + } + DUK_ASSERT(DUK_HOBJECT_PROHIBITS_FASTREFS(h)); + + /* Slow path: special object, start bit checks from most likely. */ + + /* XXX: reorg, more common first */ + if (DUK_HOBJECT_IS_COMPFUNC(h)) { + duk_hcompfunc *f = (duk_hcompfunc *) h; + duk_tval *tv, *tv_end; + duk_hobject **funcs, **funcs_end; + + DUK_HCOMPFUNC_ASSERT_VALID(f); + + if (DUK_LIKELY(DUK_HCOMPFUNC_GET_DATA(heap, f) != NULL)) { + tv = DUK_HCOMPFUNC_GET_CONSTS_BASE(heap, f); + tv_end = DUK_HCOMPFUNC_GET_CONSTS_END(heap, f); + while (tv < tv_end) { + DUK_TVAL_DECREF_NORZ(thr, tv); + tv++; + } + + funcs = DUK_HCOMPFUNC_GET_FUNCS_BASE(heap, f); + funcs_end = DUK_HCOMPFUNC_GET_FUNCS_END(heap, f); + while (funcs < funcs_end) { + duk_hobject *h_func; + h_func = *funcs; + DUK_ASSERT(h_func != NULL); + DUK_ASSERT(DUK_HEAPHDR_IS_OBJECT((duk_heaphdr *) h_func)); + DUK_HCOMPFUNC_DECREF_NORZ(thr, (duk_hcompfunc *) h_func); + funcs++; + } + } else { + /* May happen in some out-of-memory corner cases. */ + DUK_D(DUK_DPRINT("duk_hcompfunc 'data' is NULL, skipping decref")); + } + + DUK_HEAPHDR_DECREF_ALLOWNULL(thr, (duk_heaphdr *) DUK_HCOMPFUNC_GET_LEXENV(heap, f)); + DUK_HEAPHDR_DECREF_ALLOWNULL(thr, (duk_heaphdr *) DUK_HCOMPFUNC_GET_VARENV(heap, f)); + DUK_HEAPHDR_DECREF_ALLOWNULL(thr, (duk_hbuffer *) DUK_HCOMPFUNC_GET_DATA(heap, f)); + } else if (DUK_HOBJECT_IS_DECENV(h)) { + duk_hdecenv *e = (duk_hdecenv *) h; + DUK_HDECENV_ASSERT_VALID(e); + DUK_HTHREAD_DECREF_NORZ_ALLOWNULL(thr, e->thread); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, e->varmap); + } else if (DUK_HOBJECT_IS_OBJENV(h)) { + duk_hobjenv *e = (duk_hobjenv *) h; + DUK_HOBJENV_ASSERT_VALID(e); + DUK_ASSERT(e->target != NULL); /* Required for object environments. */ + DUK_HOBJECT_DECREF_NORZ(thr, e->target); +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + } else if (DUK_HOBJECT_IS_BUFOBJ(h)) { + duk_hbufobj *b = (duk_hbufobj *) h; + DUK_HBUFOBJ_ASSERT_VALID(b); + DUK_HBUFFER_DECREF_NORZ_ALLOWNULL(thr, (duk_hbuffer *) b->buf); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, (duk_hobject *) b->buf_prop); +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + } else if (DUK_HOBJECT_IS_BOUNDFUNC(h)) { + duk_hboundfunc *f = (duk_hboundfunc *) (void *) h; + DUK_HBOUNDFUNC_ASSERT_VALID(f); + DUK_TVAL_DECREF_NORZ(thr, &f->target); + DUK_TVAL_DECREF_NORZ(thr, &f->this_binding); + duk__decref_tvals_norz(thr, f->args, f->nargs); +#if defined(DUK_USE_ES6_PROXY) + } else if (DUK_HOBJECT_IS_PROXY(h)) { + duk_hproxy *p = (duk_hproxy *) h; + DUK_HPROXY_ASSERT_VALID(p); + DUK_HOBJECT_DECREF_NORZ(thr, p->target); + DUK_HOBJECT_DECREF_NORZ(thr, p->handler); +#endif /* DUK_USE_ES6_PROXY */ + } else if (DUK_HOBJECT_IS_THREAD(h)) { + duk_hthread *t = (duk_hthread *) h; + duk_activation *act; + duk_tval *tv; + + DUK_HTHREAD_ASSERT_VALID(t); + + tv = t->valstack; + while (tv < t->valstack_top) { + DUK_TVAL_DECREF_NORZ(thr, tv); + tv++; + } + + for (act = t->callstack_curr; act != NULL; act = act->parent) { + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, (duk_hobject *) DUK_ACT_GET_FUNC(act)); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, (duk_hobject *) act->var_env); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, (duk_hobject *) act->lex_env); +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, (duk_hobject *) act->prev_caller); +#endif +#if 0 /* nothing now */ + for (cat = act->cat; cat != NULL; cat = cat->parent) { + } +#endif + } + + + for (i = 0; i < DUK_NUM_BUILTINS; i++) { + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, (duk_hobject *) t->builtins[i]); + } + + DUK_HTHREAD_DECREF_NORZ_ALLOWNULL(thr, (duk_hthread *) t->resumer); + } else { + /* We may come here if the object should have a FASTREFS flag + * but it's missing for some reason. Assert for never getting + * here; however, other than performance, this is harmless. + */ + DUK_D(DUK_DPRINT("missing FASTREFS flag for: %!iO", h)); + DUK_ASSERT(0); + } +} + +DUK_INTERNAL void duk_heaphdr_refcount_finalize_norz(duk_heap *heap, duk_heaphdr *hdr) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(hdr != NULL); + + if (DUK_HEAPHDR_IS_OBJECT(hdr)) { + duk_hobject_refcount_finalize_norz(heap, (duk_hobject *) hdr); + } + /* DUK_HTYPE_BUFFER: nothing to finalize */ + /* DUK_HTYPE_STRING: nothing to finalize */ +} + +/* + * Refzero processing for duk_hobject: queue a refzero'ed object to either + * finalize_list or refzero_list and process the relevent list(s) if + * necessary. + * + * Refzero_list is single linked, with only 'prev' pointers set and valid. + * All 'next' pointers are intentionally left as garbage. This doesn't + * matter because refzero_list is processed to completion before any other + * code (like mark-and-sweep) might walk the list. + * + * In more detail: + * + * - On first insert refzero_list is NULL and the new object becomes the + * first and only element on the list; duk__refcount_free_pending() is + * called and it starts processing the list from the initial element, + * i.e. the list tail. + * + * - As each object is refcount finalized, new objects may be queued to + * refzero_list head. Their 'next' pointers are left as garbage, but + * 'prev' points are set correctly, with the element at refzero_list + * having a NULL 'prev' pointer. The fact that refzero_list is non-NULL + * is used to reject (1) recursive duk__refcount_free_pending() and + * (2) finalize_list processing calls. + * + * - When we're done with the current object, read its 'prev' pointer and + * free the object. If 'prev' is NULL, we've reached head of list and are + * done: set refzero_list to NULL and process pending finalizers. Otherwise + * continue processing the list. + * + * A refzero cascade is free of side effects because it only involves + * queueing more objects and freeing memory; finalizer execution is blocked + * in the code path queueing objects to finalize_list. As a result the + * initial refzero call (which triggers duk__refcount_free_pending()) must + * check finalize_list so that finalizers are executed snappily. + * + * If finalize_list processing starts first, refzero may occur while we're + * processing finalizers. That's fine: that particular refzero cascade is + * handled to completion without side effects. Once the cascade is complete, + * we'll run pending finalizers but notice that we're already doing that and + * return. + * + * This could be expanded to allow incremental freeing: just bail out + * early and resume at a future alloc/decref/refzero. However, if that + * were done, the list structure would need to be kept consistent at all + * times, mark-and-sweep would need to handle refzero_list, etc. + */ + +DUK_LOCAL void duk__refcount_free_pending(duk_heap *heap) { + duk_heaphdr *curr; +#if defined(DUK_USE_DEBUG) + duk_int_t count = 0; +#endif + + DUK_ASSERT(heap != NULL); + + curr = heap->refzero_list; + DUK_ASSERT(curr != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_PREV(heap, curr) == NULL); /* We're called on initial insert only. */ + /* curr->next is GARBAGE. */ + + do { + duk_heaphdr *prev; + + DUK_DDD(DUK_DDDPRINT("refzero processing %p: %!O", (void *) curr, (duk_heaphdr *) curr)); + +#if defined(DUK_USE_DEBUG) + count++; +#endif + + DUK_ASSERT(curr != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(curr) == DUK_HTYPE_OBJECT); /* currently, always the case */ + /* FINALIZED may be set; don't care about flags here. */ + + /* Refcount finalize 'curr'. Refzero_list must be non-NULL + * here to prevent recursive entry to duk__refcount_free_pending(). + */ + DUK_ASSERT(heap->refzero_list != NULL); + duk_hobject_refcount_finalize_norz(heap, (duk_hobject *) curr); + + prev = DUK_HEAPHDR_GET_PREV(heap, curr); + DUK_ASSERT((prev == NULL && heap->refzero_list == curr) || \ + (prev != NULL && heap->refzero_list != curr)); + /* prev->next is intentionally not updated and is garbage. */ + + duk_free_hobject(heap, (duk_hobject *) curr); /* Invalidates 'curr'. */ + + curr = prev; + } while (curr != NULL); + + heap->refzero_list = NULL; + + DUK_DD(DUK_DDPRINT("refzero processed %ld objects", (long) count)); +} + +DUK_LOCAL DUK_INLINE void duk__refcount_refzero_hobject(duk_heap *heap, duk_hobject *obj, duk_bool_t skip_free_pending) { + duk_heaphdr *hdr; + duk_heaphdr *root; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) obj) == DUK_HTYPE_OBJECT); + + hdr = (duk_heaphdr *) obj; + + /* Refzero'd objects must be in heap_allocated. They can't be in + * finalize_list because all objects on finalize_list have an + * artificial +1 refcount bump. + */ +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(duk_heap_in_heap_allocated(heap, (duk_heaphdr *) obj)); +#endif + + DUK_HEAP_REMOVE_FROM_HEAP_ALLOCATED(heap, hdr); + +#if defined(DUK_USE_FINALIZER_SUPPORT) + /* This finalizer check MUST BE side effect free. It should also be + * as fast as possible because it's applied to every object freed. + */ + if (DUK_UNLIKELY(DUK_HOBJECT_HAS_FINALIZER_FAST(heap, (duk_hobject *) hdr) != 0U)) { + /* Special case: FINALIZED may be set if mark-and-sweep queued + * object for finalization, the finalizer was executed (and + * FINALIZED set), mark-and-sweep hasn't yet processed the + * object again, but its refcount drops to zero. Free without + * running the finalizer again. + */ + if (DUK_HEAPHDR_HAS_FINALIZED(hdr)) { + DUK_D(DUK_DPRINT("refzero'd object has finalizer and FINALIZED is set -> free")); + } else { + /* Set FINALIZABLE flag so that all objects on finalize_list + * will have it set and are thus detectable based on the + * flag alone. + */ + DUK_HEAPHDR_SET_FINALIZABLE(hdr); + DUK_ASSERT(!DUK_HEAPHDR_HAS_FINALIZED(hdr)); + +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Bump refcount on finalize_list insert so that a + * refzero can never occur when an object is waiting + * for its finalizer call. Refzero might otherwise + * now happen because we allow duk_push_heapptr() for + * objects pending finalization. + */ + DUK_HEAPHDR_PREINC_REFCOUNT(hdr); +#endif + DUK_HEAP_INSERT_INTO_FINALIZE_LIST(heap, hdr); + + /* Process finalizers unless skipping is explicitly + * requested (NORZ) or refzero_list is being processed + * (avoids side effects during a refzero cascade). + * If refzero_list is processed, the initial refzero + * call will run pending finalizers when refzero_list + * is done. + */ + if (!skip_free_pending && heap->refzero_list == NULL) { + duk_heap_process_finalize_list(heap); + } + return; + } + } +#endif /* DUK_USE_FINALIZER_SUPPORT */ + + /* No need to finalize, free object via refzero_list. */ + + root = heap->refzero_list; + + DUK_HEAPHDR_SET_PREV(heap, hdr, NULL); + /* 'next' is left as GARBAGE. */ + heap->refzero_list = hdr; + + if (root == NULL) { + /* Object is now queued. Refzero_list was NULL so + * no-one is currently processing it; do it here. + * With refzero processing just doing a cascade of + * free calls, we can process it directly even when + * NORZ macros are used: there are no side effects. + */ + duk__refcount_free_pending(heap); + DUK_ASSERT(heap->refzero_list == NULL); + + /* Process finalizers only after the entire cascade + * is finished. In most cases there's nothing to + * finalize, so fast path check to avoid a call. + */ +#if defined(DUK_USE_FINALIZER_SUPPORT) + if (!skip_free_pending && DUK_UNLIKELY(heap->finalize_list != NULL)) { + duk_heap_process_finalize_list(heap); + } +#endif + } else { + DUK_ASSERT(DUK_HEAPHDR_GET_PREV(heap, root) == NULL); + DUK_HEAPHDR_SET_PREV(heap, root, hdr); + + /* Object is now queued. Because refzero_list was + * non-NULL, it's already being processed by someone + * in the C call stack, so we're done. + */ + } +} + +#if defined(DUK_USE_FINALIZER_SUPPORT) +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_refzero_check_fast(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(thr->heap->refzero_list == NULL); /* Processed to completion inline. */ + + if (DUK_UNLIKELY(thr->heap->finalize_list != NULL)) { + duk_heap_process_finalize_list(thr->heap); + } +} + +DUK_INTERNAL void duk_refzero_check_slow(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(thr->heap->refzero_list == NULL); /* Processed to completion inline. */ + + if (DUK_UNLIKELY(thr->heap->finalize_list != NULL)) { + duk_heap_process_finalize_list(thr->heap); + } +} +#endif /* DUK_USE_FINALIZER_SUPPORT */ + +/* + * Refzero processing for duk_hstring. + */ + +DUK_LOCAL DUK_INLINE void duk__refcount_refzero_hstring(duk_heap *heap, duk_hstring *str) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(str != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) str) == DUK_HTYPE_STRING); + + duk_heap_strcache_string_remove(heap, str); + duk_heap_strtable_unlink(heap, str); + duk_free_hstring(heap, str); +} + +/* + * Refzero processing for duk_hbuffer. + */ + +DUK_LOCAL DUK_INLINE void duk__refcount_refzero_hbuffer(duk_heap *heap, duk_hbuffer *buf) { + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->heap_thread != NULL); + DUK_ASSERT(buf != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) buf) == DUK_HTYPE_BUFFER); + + DUK_HEAP_REMOVE_FROM_HEAP_ALLOCATED(heap, (duk_heaphdr *) buf); + duk_free_hbuffer(heap, buf); +} + +/* + * Incref and decref functions. + * + * Decref may trigger immediate refzero handling, which may free and finalize + * an arbitrary number of objects (a "DECREF cascade"). + * + * Refzero handling is skipped entirely if (1) mark-and-sweep is running or + * (2) execution is paused in the debugger. The objects are left in the heap, + * and will be freed by mark-and-sweep or eventual heap destruction. + * + * This is necessary during mark-and-sweep because refcounts are also updated + * during the sweep phase (otherwise objects referenced by a swept object + * would have incorrect refcounts) which then calls here. This could be + * avoided by using separate decref macros in mark-and-sweep; however, + * mark-and-sweep also calls finalizers which would use the ordinary decref + * macros anyway. + * + * We can't process refzeros (= free objects) when the debugger is running + * as the debugger might make an object unreachable but still continue + * inspecting it (or even cause it to be pushed back). So we must rely on + * mark-and-sweep to collect them. + * + * The DUK__RZ_SUPPRESS_CHECK() condition is also used in heap destruction + * when running finalizers for remaining objects: the flag prevents objects + * from being moved around in heap linked lists while that's being done. + * + * The suppress condition is important to performance. + */ + +#define DUK__RZ_SUPPRESS_ASSERT1() do { \ + DUK_ASSERT(thr != NULL); \ + DUK_ASSERT(thr->heap != NULL); \ + /* When mark-and-sweep runs, heap_thread must exist. */ \ + DUK_ASSERT(thr->heap->ms_running == 0 || thr->heap->heap_thread != NULL); \ + /* In normal operation finalizers are executed with ms_running == 0 \ + * so we should never see ms_running == 1 and thr != heap_thread. \ + * In heap destruction finalizers are executed with ms_running != 0 \ + * to e.g. prevent refzero; a special value ms_running == 2 is used \ + * in that case so it can be distinguished from the normal runtime \ + * case, and allows a stronger assertion here (GH-2030). \ + */ \ + DUK_ASSERT(!(thr->heap->ms_running == 1 && thr != thr->heap->heap_thread)); \ + /* We may be called when the heap is initializing and we process \ + * refzeros normally, but mark-and-sweep and finalizers are prevented \ + * if that's the case. \ + */ \ + DUK_ASSERT(thr->heap->heap_initializing == 0 || thr->heap->ms_prevent_count > 0); \ + DUK_ASSERT(thr->heap->heap_initializing == 0 || thr->heap->pf_prevent_count > 0); \ + } while (0) + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +#define DUK__RZ_SUPPRESS_ASSERT2() do { \ + /* When debugger is paused, ms_running is set. */ \ + DUK_ASSERT(!DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap) || thr->heap->ms_running != 0); \ + } while (0) +#define DUK__RZ_SUPPRESS_COND() (heap->ms_running != 0) +#else +#define DUK__RZ_SUPPRESS_ASSERT2() do { } while (0) +#define DUK__RZ_SUPPRESS_COND() (heap->ms_running != 0) +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +#define DUK__RZ_SUPPRESS_CHECK() do { \ + DUK__RZ_SUPPRESS_ASSERT1(); \ + DUK__RZ_SUPPRESS_ASSERT2(); \ + if (DUK_UNLIKELY(DUK__RZ_SUPPRESS_COND())) { \ + DUK_DDD(DUK_DDDPRINT("refzero handling suppressed (not even queued) when mark-and-sweep running, object: %p", (void *) h)); \ + return; \ + } \ + } while (0) + +#define DUK__RZ_STRING() do { \ + duk__refcount_refzero_hstring(heap, (duk_hstring *) h); \ + } while (0) +#define DUK__RZ_BUFFER() do { \ + duk__refcount_refzero_hbuffer(heap, (duk_hbuffer *) h); \ + } while (0) +#define DUK__RZ_OBJECT() do { \ + duk__refcount_refzero_hobject(heap, (duk_hobject *) h, skip_free_pending); \ + } while (0) + +/* XXX: test the effect of inlining here vs. NOINLINE in refzero helpers */ +#if defined(DUK_USE_FAST_REFCOUNT_DEFAULT) +#define DUK__RZ_INLINE DUK_ALWAYS_INLINE +#else +#define DUK__RZ_INLINE /*nop*/ +#endif + +DUK_LOCAL DUK__RZ_INLINE void duk__hstring_refzero_helper(duk_hthread *thr, duk_hstring *h) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h != NULL); + heap = thr->heap; + + DUK__RZ_SUPPRESS_CHECK(); + DUK__RZ_STRING(); +} + +DUK_LOCAL DUK__RZ_INLINE void duk__hbuffer_refzero_helper(duk_hthread *thr, duk_hbuffer *h) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h != NULL); + heap = thr->heap; + + DUK__RZ_SUPPRESS_CHECK(); + DUK__RZ_BUFFER(); +} + +DUK_LOCAL DUK__RZ_INLINE void duk__hobject_refzero_helper(duk_hthread *thr, duk_hobject *h, duk_bool_t skip_free_pending) { + duk_heap *heap; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h != NULL); + heap = thr->heap; + + DUK__RZ_SUPPRESS_CHECK(); + DUK__RZ_OBJECT(); +} + +DUK_LOCAL DUK__RZ_INLINE void duk__heaphdr_refzero_helper(duk_hthread *thr, duk_heaphdr *h, duk_bool_t skip_free_pending) { + duk_heap *heap; + duk_small_uint_t htype; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h != NULL); + heap = thr->heap; + + htype = (duk_small_uint_t) DUK_HEAPHDR_GET_TYPE(h); + DUK_DDD(DUK_DDDPRINT("ms_running=%ld, heap_thread=%p", (long) thr->heap->ms_running, thr->heap->heap_thread)); + DUK__RZ_SUPPRESS_CHECK(); + + switch (htype) { + case DUK_HTYPE_STRING: + /* Strings have no internal references but do have "weak" + * references in the string cache. Also note that strings + * are not on the heap_allocated list like other heap + * elements. + */ + + DUK__RZ_STRING(); + break; + + case DUK_HTYPE_OBJECT: + /* Objects have internal references. Must finalize through + * the "refzero" work list. + */ + + DUK__RZ_OBJECT(); + break; + + default: + /* Buffers have no internal references. However, a dynamic + * buffer has a separate allocation for the buffer. This is + * freed by duk_heap_free_heaphdr_raw(). + */ + + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(h) == DUK_HTYPE_BUFFER); + DUK__RZ_BUFFER(); + break; + } +} + +DUK_INTERNAL DUK_NOINLINE void duk_heaphdr_refzero(duk_hthread *thr, duk_heaphdr *h) { + duk__heaphdr_refzero_helper(thr, h, 0 /*skip_free_pending*/); +} + +DUK_INTERNAL DUK_NOINLINE void duk_heaphdr_refzero_norz(duk_hthread *thr, duk_heaphdr *h) { + duk__heaphdr_refzero_helper(thr, h, 1 /*skip_free_pending*/); +} + +DUK_INTERNAL DUK_NOINLINE void duk_hstring_refzero(duk_hthread *thr, duk_hstring *h) { + duk__hstring_refzero_helper(thr, h); +} + +DUK_INTERNAL DUK_NOINLINE void duk_hbuffer_refzero(duk_hthread *thr, duk_hbuffer *h) { + duk__hbuffer_refzero_helper(thr, h); +} + +DUK_INTERNAL DUK_NOINLINE void duk_hobject_refzero(duk_hthread *thr, duk_hobject *h) { + duk__hobject_refzero_helper(thr, h, 0 /*skip_free_pending*/); +} + +DUK_INTERNAL DUK_NOINLINE void duk_hobject_refzero_norz(duk_hthread *thr, duk_hobject *h) { + duk__hobject_refzero_helper(thr, h, 1 /*skip_free_pending*/); +} + +#if !defined(DUK_USE_FAST_REFCOUNT_DEFAULT) +DUK_INTERNAL void duk_tval_incref(duk_tval *tv) { + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv)) { + duk_heaphdr *h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(h)); + DUK_ASSERT_DISABLE(h->h_refcount >= 0); + DUK_HEAPHDR_PREINC_REFCOUNT(h); + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(h) != 0); /* No wrapping. */ + } +} + +DUK_INTERNAL void duk_tval_decref(duk_hthread *thr, duk_tval *tv) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv)) { + duk_heaphdr *h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(h)); + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(h) >= 1); +#if 0 + if (DUK_HEAPHDR_PREDEC_REFCOUNT(h) != 0) { + return; + } + duk_heaphdr_refzero(thr, h); +#else + duk_heaphdr_decref(thr, h); +#endif + } +} + +DUK_INTERNAL void duk_tval_decref_norz(duk_hthread *thr, duk_tval *tv) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv != NULL); + + if (DUK_TVAL_NEEDS_REFCOUNT_UPDATE(tv)) { + duk_heaphdr *h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(h)); + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT(h) >= 1); +#if 0 + if (DUK_HEAPHDR_PREDEC_REFCOUNT(h) != 0) { + return; + } + duk_heaphdr_refzero_norz(thr, h); +#else + duk_heaphdr_decref_norz(thr, h); +#endif + } +} +#endif /* !DUK_USE_FAST_REFCOUNT_DEFAULT */ + +#define DUK__DECREF_ASSERTS() do { \ + DUK_ASSERT(thr != NULL); \ + DUK_ASSERT(thr->heap != NULL); \ + DUK_ASSERT(h != NULL); \ + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID((duk_heaphdr *) h)); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h) >= 1); \ + } while (0) +#if defined(DUK_USE_ROM_OBJECTS) +#define DUK__INCREF_SHARED() do { \ + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)) { \ + return; \ + } \ + DUK_HEAPHDR_PREINC_REFCOUNT((duk_heaphdr *) h); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h) != 0); /* No wrapping. */ \ + } while (0) +#define DUK__DECREF_SHARED() do { \ + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)) { \ + return; \ + } \ + if (DUK_HEAPHDR_PREDEC_REFCOUNT((duk_heaphdr *) h) != 0) { \ + return; \ + } \ + } while (0) +#else +#define DUK__INCREF_SHARED() do { \ + DUK_HEAPHDR_PREINC_REFCOUNT((duk_heaphdr *) h); \ + DUK_ASSERT(DUK_HEAPHDR_GET_REFCOUNT((duk_heaphdr *) h) != 0); /* No wrapping. */ \ + } while (0) +#define DUK__DECREF_SHARED() do { \ + if (DUK_HEAPHDR_PREDEC_REFCOUNT((duk_heaphdr *) h) != 0) { \ + return; \ + } \ + } while (0) +#endif + +#if !defined(DUK_USE_FAST_REFCOUNT_DEFAULT) +/* This will in practice be inlined because it's just an INC instructions + * and a bit test + INC when ROM objects are enabled. + */ +DUK_INTERNAL void duk_heaphdr_incref(duk_heaphdr *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(h)); + DUK_ASSERT_DISABLE(DUK_HEAPHDR_GET_REFCOUNT(h) >= 0); + + DUK__INCREF_SHARED(); +} + +DUK_INTERNAL void duk_heaphdr_decref(duk_hthread *thr, duk_heaphdr *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_heaphdr_refzero(thr, h); + + /* Forced mark-and-sweep when GC torture enabled; this could happen + * on any DECREF (but not DECREF_NORZ). + */ + DUK_GC_TORTURE(thr->heap); +} +DUK_INTERNAL void duk_heaphdr_decref_norz(duk_hthread *thr, duk_heaphdr *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_heaphdr_refzero_norz(thr, h); +} +#endif /* !DUK_USE_FAST_REFCOUNT_DEFAULT */ + +#if 0 /* Not needed. */ +DUK_INTERNAL void duk_hstring_decref(duk_hthread *thr, duk_hstring *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_hstring_refzero(thr, h); +} +DUK_INTERNAL void duk_hstring_decref_norz(duk_hthread *thr, duk_hstring *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_hstring_refzero_norz(thr, h); +} +DUK_INTERNAL void duk_hbuffer_decref(duk_hthread *thr, duk_hbuffer *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_hbuffer_refzero(thr, h); +} +DUK_INTERNAL void duk_hbuffer_decref_norz(duk_hthread *thr, duk_hbuffer *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_hbuffer_refzero_norz(thr, h); +} +DUK_INTERNAL void duk_hobject_decref(duk_hthread *thr, duk_hobject *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_hobject_refzero(thr, h); +} +DUK_INTERNAL void duk_hobject_decref_norz(duk_hthread *thr, duk_hobject *h) { + DUK__DECREF_ASSERTS(); + DUK__DECREF_SHARED(); + duk_hobject_refzero_norz(thr, h); +} +#endif + +#else /* DUK_USE_REFERENCE_COUNTING */ + +/* no refcounting */ + +#endif /* DUK_USE_REFERENCE_COUNTING */ + +/* automatic undefs */ +#undef DUK__DECREF_ASSERTS +#undef DUK__DECREF_SHARED +#undef DUK__INCREF_SHARED +#undef DUK__RZ_BUFFER +#undef DUK__RZ_INLINE +#undef DUK__RZ_OBJECT +#undef DUK__RZ_STRING +#undef DUK__RZ_SUPPRESS_ASSERT1 +#undef DUK__RZ_SUPPRESS_ASSERT2 +#undef DUK__RZ_SUPPRESS_CHECK +#undef DUK__RZ_SUPPRESS_COND +#line 1 "duk_heap_stringcache.c" +/* + * String cache. + * + * Provides a cache to optimize indexed string lookups. The cache keeps + * track of (byte offset, char offset) states for a fixed number of strings. + * Otherwise we'd need to scan from either end of the string, as we store + * strings in (extended) UTF-8. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Delete references to given hstring from the heap string cache. + * + * String cache references are 'weak': they are not counted towards + * reference counts, nor serve as roots for mark-and-sweep. When an + * object is about to be freed, such references need to be removed. + */ + +DUK_INTERNAL void duk_heap_strcache_string_remove(duk_heap *heap, duk_hstring *h) { + duk_uint_t i; + for (i = 0; i < DUK_HEAP_STRCACHE_SIZE; i++) { + duk_strcache_entry *c = heap->strcache + i; + if (c->h == h) { + DUK_DD(DUK_DDPRINT("deleting weak strcache reference to hstring %p from heap %p", + (void *) h, (void *) heap)); + c->h = NULL; + + /* XXX: the string shouldn't appear twice, but we now loop to the + * end anyway; if fixed, add a looping assertion to ensure there + * is no duplicate. + */ + } + } +} + +/* + * String scanning helpers + * + * All bytes other than UTF-8 continuation bytes ([0x80,0xbf]) are + * considered to contribute a character. This must match how string + * character length is computed. + */ + +DUK_LOCAL const duk_uint8_t *duk__scan_forwards(const duk_uint8_t *p, const duk_uint8_t *q, duk_uint_fast32_t n) { + while (n > 0) { + for (;;) { + p++; + if (p >= q) { + return NULL; + } + if ((*p & 0xc0) != 0x80) { + break; + } + } + n--; + } + return p; +} + +DUK_LOCAL const duk_uint8_t *duk__scan_backwards(const duk_uint8_t *p, const duk_uint8_t *q, duk_uint_fast32_t n) { + while (n > 0) { + for (;;) { + p--; + if (p < q) { + return NULL; + } + if ((*p & 0xc0) != 0x80) { + break; + } + } + n--; + } + return p; +} + +/* + * Convert char offset to byte offset + * + * Avoid using the string cache if possible: for ASCII strings byte and + * char offsets are equal and for short strings direct scanning may be + * better than using the string cache (which may evict a more important + * entry). + * + * Typing now assumes 32-bit string byte/char offsets (duk_uint_fast32_t). + * Better typing might be to use duk_size_t. + * + * Caller should ensure 'char_offset' is within the string bounds [0,charlen] + * (endpoint is inclusive). If this is not the case, no memory unsafe + * behavior will happen but an error will be thrown. + */ + +DUK_INTERNAL duk_uint_fast32_t duk_heap_strcache_offset_char2byte(duk_hthread *thr, duk_hstring *h, duk_uint_fast32_t char_offset) { + duk_heap *heap; + duk_strcache_entry *sce; + duk_uint_fast32_t byte_offset; + duk_uint_t i; + duk_bool_t use_cache; + duk_uint_fast32_t dist_start, dist_end, dist_sce; + duk_uint_fast32_t char_length; + const duk_uint8_t *p_start; + const duk_uint8_t *p_end; + const duk_uint8_t *p_found; + + /* + * For ASCII strings, the answer is simple. + */ + + if (DUK_LIKELY(DUK_HSTRING_IS_ASCII(h))) { + return char_offset; + } + + char_length = (duk_uint_fast32_t) DUK_HSTRING_GET_CHARLEN(h); + DUK_ASSERT(char_offset <= char_length); + + if (DUK_LIKELY(DUK_HSTRING_IS_ASCII(h))) { + /* Must recheck because the 'is ascii' flag may be set + * lazily. Alternatively, we could just compare charlen + * to bytelen. + */ + return char_offset; + } + + /* + * For non-ASCII strings, we need to scan forwards or backwards + * from some starting point. The starting point may be the start + * or end of the string, or some cached midpoint in the string + * cache. + * + * For "short" strings we simply scan without checking or updating + * the cache. For longer strings we check and update the cache as + * necessary, inserting a new cache entry if none exists. + */ + + DUK_DDD(DUK_DDDPRINT("non-ascii string %p, char_offset=%ld, clen=%ld, blen=%ld", + (void *) h, (long) char_offset, + (long) DUK_HSTRING_GET_CHARLEN(h), + (long) DUK_HSTRING_GET_BYTELEN(h))); + + heap = thr->heap; + sce = NULL; + use_cache = (char_length > DUK_HEAP_STRINGCACHE_NOCACHE_LIMIT); + + if (use_cache) { +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + DUK_DDD(DUK_DDDPRINT("stringcache before char2byte (using cache):")); + for (i = 0; i < DUK_HEAP_STRCACHE_SIZE; i++) { + duk_strcache_entry *c = heap->strcache + i; + DUK_DDD(DUK_DDDPRINT(" [%ld] -> h=%p, cidx=%ld, bidx=%ld", + (long) i, (void *) c->h, (long) c->cidx, (long) c->bidx)); + } +#endif + + for (i = 0; i < DUK_HEAP_STRCACHE_SIZE; i++) { + duk_strcache_entry *c = heap->strcache + i; + + if (c->h == h) { + sce = c; + break; + } + } + } + + /* + * Scan from shortest distance: + * - start of string + * - end of string + * - cache entry (if exists) + */ + + DUK_ASSERT(DUK_HSTRING_GET_CHARLEN(h) >= char_offset); + dist_start = char_offset; + dist_end = char_length - char_offset; + dist_sce = 0; DUK_UNREF(dist_sce); /* initialize for debug prints, needed if sce==NULL */ + + p_start = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h); + p_end = (const duk_uint8_t *) (p_start + DUK_HSTRING_GET_BYTELEN(h)); + p_found = NULL; + + if (sce) { + if (char_offset >= sce->cidx) { + dist_sce = char_offset - sce->cidx; + if ((dist_sce <= dist_start) && (dist_sce <= dist_end)) { + DUK_DDD(DUK_DDDPRINT("non-ascii string, use_cache=%ld, sce=%p:%ld:%ld, " + "dist_start=%ld, dist_end=%ld, dist_sce=%ld => " + "scan forwards from sce", + (long) use_cache, (void *) (sce ? sce->h : NULL), + (sce ? (long) sce->cidx : (long) -1), + (sce ? (long) sce->bidx : (long) -1), + (long) dist_start, (long) dist_end, (long) dist_sce)); + + p_found = duk__scan_forwards(p_start + sce->bidx, + p_end, + dist_sce); + goto scan_done; + } + } else { + dist_sce = sce->cidx - char_offset; + if ((dist_sce <= dist_start) && (dist_sce <= dist_end)) { + DUK_DDD(DUK_DDDPRINT("non-ascii string, use_cache=%ld, sce=%p:%ld:%ld, " + "dist_start=%ld, dist_end=%ld, dist_sce=%ld => " + "scan backwards from sce", + (long) use_cache, (void *) (sce ? sce->h : NULL), + (sce ? (long) sce->cidx : (long) -1), + (sce ? (long) sce->bidx : (long) -1), + (long) dist_start, (long) dist_end, (long) dist_sce)); + + p_found = duk__scan_backwards(p_start + sce->bidx, + p_start, + dist_sce); + goto scan_done; + } + } + } + + /* no sce, or sce scan not best */ + + if (dist_start <= dist_end) { + DUK_DDD(DUK_DDDPRINT("non-ascii string, use_cache=%ld, sce=%p:%ld:%ld, " + "dist_start=%ld, dist_end=%ld, dist_sce=%ld => " + "scan forwards from string start", + (long) use_cache, (void *) (sce ? sce->h : NULL), + (sce ? (long) sce->cidx : (long) -1), + (sce ? (long) sce->bidx : (long) -1), + (long) dist_start, (long) dist_end, (long) dist_sce)); + + p_found = duk__scan_forwards(p_start, + p_end, + dist_start); + } else { + DUK_DDD(DUK_DDDPRINT("non-ascii string, use_cache=%ld, sce=%p:%ld:%ld, " + "dist_start=%ld, dist_end=%ld, dist_sce=%ld => " + "scan backwards from string end", + (long) use_cache, (void *) (sce ? sce->h : NULL), + (sce ? (long) sce->cidx : (long) -1), + (sce ? (long) sce->bidx : (long) -1), + (long) dist_start, (long) dist_end, (long) dist_sce)); + + p_found = duk__scan_backwards(p_end, + p_start, + dist_end); + } + + scan_done: + + if (DUK_UNLIKELY(p_found == NULL)) { + /* Scan error: this shouldn't normally happen; it could happen if + * string is not valid UTF-8 data, and clen/blen are not consistent + * with the scanning algorithm. + */ + goto scan_error; + } + + DUK_ASSERT(p_found >= p_start); + DUK_ASSERT(p_found <= p_end); /* may be equal */ + byte_offset = (duk_uint32_t) (p_found - p_start); + + DUK_DDD(DUK_DDDPRINT("-> string %p, cidx %ld -> bidx %ld", + (void *) h, (long) char_offset, (long) byte_offset)); + + /* + * Update cache entry (allocating if necessary), and move the + * cache entry to the first place (in an "LRU" policy). + */ + + if (use_cache) { + /* update entry, allocating if necessary */ + if (!sce) { + sce = heap->strcache + DUK_HEAP_STRCACHE_SIZE - 1; /* take last entry */ + sce->h = h; + } + DUK_ASSERT(sce != NULL); + sce->bidx = (duk_uint32_t) (p_found - p_start); + sce->cidx = (duk_uint32_t) char_offset; + + /* LRU: move our entry to first */ + if (sce > &heap->strcache[0]) { + /* + * A C + * B A + * C <- sce ==> B + * D D + */ + duk_strcache_entry tmp; + + tmp = *sce; + duk_memmove((void *) (&heap->strcache[1]), + (const void *) (&heap->strcache[0]), + (size_t) (((char *) sce) - ((char *) &heap->strcache[0]))); + heap->strcache[0] = tmp; + + /* 'sce' points to the wrong entry here, but is no longer used */ + } +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + DUK_DDD(DUK_DDDPRINT("stringcache after char2byte (using cache):")); + for (i = 0; i < DUK_HEAP_STRCACHE_SIZE; i++) { + duk_strcache_entry *c = heap->strcache + i; + DUK_DDD(DUK_DDDPRINT(" [%ld] -> h=%p, cidx=%ld, bidx=%ld", + (long) i, (void *) c->h, (long) c->cidx, (long) c->bidx)); + } +#endif + } + + return byte_offset; + + scan_error: + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); +} +#line 1 "duk_heap_stringtable.c" +/* + * Heap string table handling, string interning. + */ + +/* #include duk_internal.h -> already included */ + +/* Resize checks not needed if minsize == maxsize, typical for low memory + * targets. + */ +#define DUK__STRTAB_RESIZE_CHECK +#if (DUK_USE_STRTAB_MINSIZE == DUK_USE_STRTAB_MAXSIZE) +#undef DUK__STRTAB_RESIZE_CHECK +#endif + +#if defined(DUK_USE_STRTAB_PTRCOMP) +#define DUK__HEAPPTR_ENC16(heap,ptr) DUK_USE_HEAPPTR_ENC16((heap)->heap_udata, (ptr)) +#define DUK__HEAPPTR_DEC16(heap,val) DUK_USE_HEAPPTR_DEC16((heap)->heap_udata, (val)) +#define DUK__GET_STRTABLE(heap) ((heap)->strtable16) +#else +#define DUK__HEAPPTR_ENC16(heap,ptr) (ptr) +#define DUK__HEAPPTR_DEC16(heap,val) (val) +#define DUK__GET_STRTABLE(heap) ((heap)->strtable) +#endif + +#define DUK__STRTAB_U32_MAX_STRLEN 10 /* 4'294'967'295 */ + +/* + * Debug dump stringtable. + */ + +#if defined(DUK_USE_DEBUG) +DUK_INTERNAL void duk_heap_strtable_dump(duk_heap *heap) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *strtable; +#else + duk_hstring **strtable; +#endif + duk_uint32_t i; + duk_hstring *h; + duk_size_t count_total = 0; + duk_size_t count_chain; + duk_size_t count_chain_min = DUK_SIZE_MAX; + duk_size_t count_chain_max = 0; + duk_size_t count_len[8]; /* chain lengths from 0 to 7 */ + + if (heap == NULL) { + DUK_D(DUK_DPRINT("string table, heap=NULL")); + return; + } + + strtable = DUK__GET_STRTABLE(heap); + if (strtable == NULL) { + DUK_D(DUK_DPRINT("string table, strtab=NULL")); + return; + } + + duk_memzero((void *) count_len, sizeof(count_len)); + for (i = 0; i < heap->st_size; i++) { + h = DUK__HEAPPTR_DEC16(heap, strtable[i]); + count_chain = 0; + while (h != NULL) { + count_chain++; + h = h->hdr.h_next; + } + if (count_chain < sizeof(count_len) / sizeof(duk_size_t)) { + count_len[count_chain]++; + } + count_chain_max = (count_chain > count_chain_max ? count_chain : count_chain_max); + count_chain_min = (count_chain < count_chain_min ? count_chain : count_chain_min); + count_total += count_chain; + } + + DUK_D(DUK_DPRINT("string table, strtab=%p, count=%lu, chain min=%lu max=%lu avg=%lf: " + "counts: %lu %lu %lu %lu %lu %lu %lu %lu ...", + (void *) heap->strtable, (unsigned long) count_total, + (unsigned long) count_chain_min, (unsigned long) count_chain_max, + (double) count_total / (double) heap->st_size, + (unsigned long) count_len[0], (unsigned long) count_len[1], + (unsigned long) count_len[2], (unsigned long) count_len[3], + (unsigned long) count_len[4], (unsigned long) count_len[5], + (unsigned long) count_len[6], (unsigned long) count_len[7])); +} +#endif /* DUK_USE_DEBUG */ + +/* + * Assertion helper to ensure strtable is populated correctly. + */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_LOCAL void duk__strtable_assert_checks(duk_heap *heap) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *strtable; +#else + duk_hstring **strtable; +#endif + duk_uint32_t i; + duk_hstring *h; + duk_size_t count = 0; + + DUK_ASSERT(heap != NULL); + + strtable = DUK__GET_STRTABLE(heap); + if (strtable != NULL) { + DUK_ASSERT(heap->st_size != 0); + DUK_ASSERT(heap->st_mask == heap->st_size - 1); + + for (i = 0; i < heap->st_size; i++) { + h = DUK__HEAPPTR_DEC16(heap, strtable[i]); + while (h != NULL) { + DUK_ASSERT((DUK_HSTRING_GET_HASH(h) & heap->st_mask) == i); + count++; + h = h->hdr.h_next; + } + } + } else { + DUK_ASSERT(heap->st_size == 0); + DUK_ASSERT(heap->st_mask == 0); + } + +#if defined(DUK__STRTAB_RESIZE_CHECK) + DUK_ASSERT(count == (duk_size_t) heap->st_count); +#endif +} +#endif /* DUK_USE_ASSERTIONS */ + +/* + * Allocate and initialize a duk_hstring. + * + * Returns a NULL if allocation or initialization fails for some reason. + * + * The string won't be inserted into the string table and isn't tracked in + * any way (link pointers will be NULL). The caller must place the string + * into the string table without any risk of a longjmp, otherwise the string + * is leaked. + */ + +DUK_LOCAL duk_hstring *duk__strtable_alloc_hstring(duk_heap *heap, + const duk_uint8_t *str, + duk_uint32_t blen, + duk_uint32_t strhash, + const duk_uint8_t *extdata) { + duk_hstring *res; + const duk_uint8_t *data; +#if !defined(DUK_USE_HSTRING_ARRIDX) + duk_uarridx_t dummy; +#endif + + DUK_ASSERT(heap != NULL); + DUK_UNREF(extdata); + +#if defined(DUK_USE_STRLEN16) + /* If blen <= 0xffffUL, clen is also guaranteed to be <= 0xffffUL. */ + if (blen > 0xffffUL) { + DUK_D(DUK_DPRINT("16-bit string blen/clen active and blen over 16 bits, reject intern")); + goto alloc_error; + } +#endif + + /* XXX: Memzeroing the allocated structure is not really necessary + * because we could just initialize all fields explicitly (almost + * all fields are initialized explicitly anyway). + */ +#if defined(DUK_USE_HSTRING_EXTDATA) && defined(DUK_USE_EXTSTR_INTERN_CHECK) + if (extdata) { + res = (duk_hstring *) DUK_ALLOC(heap, sizeof(duk_hstring_external)); + if (DUK_UNLIKELY(res == NULL)) { + goto alloc_error; + } + duk_memzero(res, sizeof(duk_hstring_external)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + DUK_HEAPHDR_STRING_INIT_NULLS(&res->hdr); +#endif + DUK_HEAPHDR_SET_TYPE_AND_FLAGS(&res->hdr, DUK_HTYPE_STRING, DUK_HSTRING_FLAG_EXTDATA); + + DUK_ASSERT(extdata[blen] == 0); /* Application responsibility. */ + data = extdata; + ((duk_hstring_external *) res)->extdata = extdata; + } else +#endif /* DUK_USE_HSTRING_EXTDATA && DUK_USE_EXTSTR_INTERN_CHECK */ + { + duk_uint8_t *data_tmp; + + /* NUL terminate for convenient C access */ + DUK_ASSERT(sizeof(duk_hstring) + blen + 1 > blen); /* No wrap, limits ensure. */ + res = (duk_hstring *) DUK_ALLOC(heap, sizeof(duk_hstring) + blen + 1); + if (DUK_UNLIKELY(res == NULL)) { + goto alloc_error; + } + duk_memzero(res, sizeof(duk_hstring)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + DUK_HEAPHDR_STRING_INIT_NULLS(&res->hdr); +#endif + DUK_HEAPHDR_SET_TYPE_AND_FLAGS(&res->hdr, DUK_HTYPE_STRING, 0); + + data_tmp = (duk_uint8_t *) (res + 1); + duk_memcpy(data_tmp, str, blen); + data_tmp[blen] = (duk_uint8_t) 0; + data = (const duk_uint8_t *) data_tmp; + } + + DUK_HSTRING_SET_BYTELEN(res, blen); + DUK_HSTRING_SET_HASH(res, strhash); + + DUK_ASSERT(!DUK_HSTRING_HAS_ARRIDX(res)); +#if defined(DUK_USE_HSTRING_ARRIDX) + res->arridx = duk_js_to_arrayindex_string(data, blen); + if (res->arridx != DUK_HSTRING_NO_ARRAY_INDEX) { +#else + dummy = duk_js_to_arrayindex_string(data, blen); + if (dummy != DUK_HSTRING_NO_ARRAY_INDEX) { +#endif + /* Array index strings cannot be symbol strings, + * and they're always pure ASCII so blen == clen. + */ + DUK_HSTRING_SET_ARRIDX(res); + DUK_HSTRING_SET_ASCII(res); + DUK_ASSERT(duk_unicode_unvalidated_utf8_length(data, (duk_size_t) blen) == blen); + } else { + /* Because 'data' is NUL-terminated, we don't need a + * blen > 0 check here. For NUL (0x00) the symbol + * checks will be false. + */ + if (DUK_UNLIKELY(data[0] >= 0x80U)) { + if (data[0] <= 0x81) { + DUK_HSTRING_SET_SYMBOL(res); + } else if (data[0] == 0x82U || data[0] == 0xffU) { + DUK_HSTRING_SET_HIDDEN(res); + DUK_HSTRING_SET_SYMBOL(res); + } + } + + /* Using an explicit 'ASCII' flag has larger footprint (one call site + * only) but is quite useful for the case when there's no explicit + * 'clen' in duk_hstring. + * + * The flag is set lazily for RAM strings. + */ + DUK_ASSERT(!DUK_HSTRING_HAS_ASCII(res)); + +#if defined(DUK_USE_HSTRING_LAZY_CLEN) + /* Charlen initialized to 0, updated on-the-fly. */ +#else + duk_hstring_init_charlen(res); /* Also sets ASCII flag. */ +#endif + } + + DUK_DDD(DUK_DDDPRINT("interned string, hash=0x%08lx, blen=%ld, has_arridx=%ld, has_extdata=%ld", + (unsigned long) DUK_HSTRING_GET_HASH(res), + (long) DUK_HSTRING_GET_BYTELEN(res), + (long) (DUK_HSTRING_HAS_ARRIDX(res) ? 1 : 0), + (long) (DUK_HSTRING_HAS_EXTDATA(res) ? 1 : 0))); + + DUK_ASSERT(res != NULL); + return res; + + alloc_error: + return NULL; +} + +/* + * Grow strtable allocation in-place. + */ + +#if defined(DUK__STRTAB_RESIZE_CHECK) +DUK_LOCAL void duk__strtable_grow_inplace(duk_heap *heap) { + duk_uint32_t new_st_size; + duk_uint32_t old_st_size; + duk_uint32_t i; + duk_hstring *h; + duk_hstring *next; + duk_hstring *prev; +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *new_ptr; + duk_uint16_t *new_ptr_high; +#else + duk_hstring **new_ptr; + duk_hstring **new_ptr_high; +#endif + + DUK_DD(DUK_DDPRINT("grow in-place: %lu -> %lu", (unsigned long) heap->st_size, (unsigned long) heap->st_size * 2)); + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->st_resizing == 1); + DUK_ASSERT(heap->st_size >= 2); + DUK_ASSERT((heap->st_size & (heap->st_size - 1)) == 0); /* 2^N */ + DUK_ASSERT(DUK__GET_STRTABLE(heap) != NULL); + + DUK_STATS_INC(heap, stats_strtab_resize_grow); + + new_st_size = heap->st_size << 1U; + DUK_ASSERT(new_st_size > heap->st_size); /* No overflow. */ + + /* Reallocate the strtable first and then work in-place to rehash + * strings. We don't need an indirect allocation here: even if GC + * is triggered to satisfy the allocation, recursive strtable resize + * is prevented by flags. This is also why we don't need to use + * DUK_REALLOC_INDIRECT(). + */ + +#if defined(DUK_USE_STRTAB_PTRCOMP) + new_ptr = (duk_uint16_t *) DUK_REALLOC(heap, heap->strtable16, sizeof(duk_uint16_t) * new_st_size); +#else + new_ptr = (duk_hstring **) DUK_REALLOC(heap, heap->strtable, sizeof(duk_hstring *) * new_st_size); +#endif + if (DUK_UNLIKELY(new_ptr == NULL)) { + /* If realloc fails we can continue normally: the string table + * won't "fill up" although chains will gradually get longer. + * When string insertions continue, we'll quite soon try again + * with no special handling. + */ + DUK_D(DUK_DPRINT("string table grow failed, ignoring")); + return; + } +#if defined(DUK_USE_STRTAB_PTRCOMP) + heap->strtable16 = new_ptr; +#else + heap->strtable = new_ptr; +#endif + + /* Rehash a single bucket into two separate ones. When we grow + * by x2 the highest 'new' bit determines whether a string remains + * in its old position (bit is 0) or goes to a new one (bit is 1). + */ + + old_st_size = heap->st_size; + new_ptr_high = new_ptr + old_st_size; + for (i = 0; i < old_st_size; i++) { + duk_hstring *new_root; + duk_hstring *new_root_high; + + h = DUK__HEAPPTR_DEC16(heap, new_ptr[i]); + new_root = h; + new_root_high = NULL; + + prev = NULL; + while (h != NULL) { + duk_uint32_t mask; + + DUK_ASSERT((DUK_HSTRING_GET_HASH(h) & heap->st_mask) == i); + next = h->hdr.h_next; + + /* Example: if previous size was 256, previous mask is 0xFF + * and size is 0x100 which corresponds to the new bit that + * comes into play. + */ + DUK_ASSERT(heap->st_mask == old_st_size - 1); + mask = old_st_size; + if (DUK_HSTRING_GET_HASH(h) & mask) { + if (prev != NULL) { + prev->hdr.h_next = h->hdr.h_next; + } else { + DUK_ASSERT(h == new_root); + new_root = h->hdr.h_next; + } + + h->hdr.h_next = new_root_high; + new_root_high = h; + } else { + prev = h; + } + h = next; + } + + new_ptr[i] = DUK__HEAPPTR_ENC16(heap, new_root); + new_ptr_high[i] = DUK__HEAPPTR_ENC16(heap, new_root_high); + } + + heap->st_size = new_st_size; + heap->st_mask = new_st_size - 1; + +#if defined(DUK_USE_ASSERTIONS) + duk__strtable_assert_checks(heap); +#endif +} +#endif /* DUK__STRTAB_RESIZE_CHECK */ + +/* + * Shrink strtable allocation in-place. + */ + +#if defined(DUK__STRTAB_RESIZE_CHECK) +DUK_LOCAL void duk__strtable_shrink_inplace(duk_heap *heap) { + duk_uint32_t new_st_size; + duk_uint32_t i; + duk_hstring *h; + duk_hstring *other; + duk_hstring *root; +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *old_ptr; + duk_uint16_t *old_ptr_high; + duk_uint16_t *new_ptr; +#else + duk_hstring **old_ptr; + duk_hstring **old_ptr_high; + duk_hstring **new_ptr; +#endif + + DUK_DD(DUK_DDPRINT("shrink in-place: %lu -> %lu", (unsigned long) heap->st_size, (unsigned long) heap->st_size / 2)); + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(heap->st_resizing == 1); + DUK_ASSERT(heap->st_size >= 2); + DUK_ASSERT((heap->st_size & (heap->st_size - 1)) == 0); /* 2^N */ + DUK_ASSERT(DUK__GET_STRTABLE(heap) != NULL); + + DUK_STATS_INC(heap, stats_strtab_resize_shrink); + + new_st_size = heap->st_size >> 1U; + + /* Combine two buckets into a single one. When we shrink, one hash + * bit (highest) disappears. + */ + old_ptr = DUK__GET_STRTABLE(heap); + old_ptr_high = old_ptr + new_st_size; + for (i = 0; i < new_st_size; i++) { + h = DUK__HEAPPTR_DEC16(heap, old_ptr[i]); + other = DUK__HEAPPTR_DEC16(heap, old_ptr_high[i]); + + if (h == NULL) { + /* First chain is empty, so use second one as is. */ + root = other; + } else { + /* Find end of first chain, and link in the second. */ + root = h; + while (h->hdr.h_next != NULL) { + h = h->hdr.h_next; + } + h->hdr.h_next = other; + } + + old_ptr[i] = DUK__HEAPPTR_ENC16(heap, root); + } + + heap->st_size = new_st_size; + heap->st_mask = new_st_size - 1; + + /* The strtable is now consistent and we can realloc safely. Even + * if side effects cause string interning or removal the strtable + * updates are safe. Recursive resize has been prevented by caller. + * This is also why we don't need to use DUK_REALLOC_INDIRECT(). + * + * We assume a realloc() to a smaller size is guaranteed to succeed. + * It would be relatively straightforward to handle the error by + * essentially performing a "grow" step to recover. + */ + +#if defined(DUK_USE_STRTAB_PTRCOMP) + new_ptr = (duk_uint16_t *) DUK_REALLOC(heap, heap->strtable16, sizeof(duk_uint16_t) * new_st_size); + DUK_ASSERT(new_ptr != NULL); + heap->strtable16 = new_ptr; +#else + new_ptr = (duk_hstring **) DUK_REALLOC(heap, heap->strtable, sizeof(duk_hstring *) * new_st_size); + DUK_ASSERT(new_ptr != NULL); + heap->strtable = new_ptr; +#endif + +#if defined(DUK_USE_ASSERTIONS) + duk__strtable_assert_checks(heap); +#endif +} +#endif /* DUK__STRTAB_RESIZE_CHECK */ + +/* + * Grow/shrink check. + */ + +#if defined(DUK__STRTAB_RESIZE_CHECK) +DUK_LOCAL DUK_COLD DUK_NOINLINE void duk__strtable_resize_check(duk_heap *heap) { + duk_uint32_t load_factor; /* fixed point */ + + DUK_ASSERT(heap != NULL); +#if defined(DUK_USE_STRTAB_PTRCOMP) + DUK_ASSERT(heap->strtable16 != NULL); +#else + DUK_ASSERT(heap->strtable != NULL); +#endif + + DUK_STATS_INC(heap, stats_strtab_resize_check); + + /* Prevent recursive resizing. */ + if (DUK_UNLIKELY(heap->st_resizing != 0U)) { + DUK_D(DUK_DPRINT("prevent recursive strtable resize")); + return; + } + + heap->st_resizing = 1; + + DUK_ASSERT(heap->st_size >= 16U); + DUK_ASSERT((heap->st_size >> 4U) >= 1); + load_factor = heap->st_count / (heap->st_size >> 4U); + + DUK_DD(DUK_DDPRINT("resize check string table: size=%lu, count=%lu, load_factor=%lu (fixed point .4; float %lf)", + (unsigned long) heap->st_size, (unsigned long) heap->st_count, + (unsigned long) load_factor, + (double) heap->st_count / (double) heap->st_size)); + + if (load_factor >= DUK_USE_STRTAB_GROW_LIMIT) { + if (heap->st_size >= DUK_USE_STRTAB_MAXSIZE) { + DUK_DD(DUK_DDPRINT("want to grow strtable (based on load factor) but already maximum size")); + } else { + DUK_D(DUK_DPRINT("grow string table: %lu -> %lu", (unsigned long) heap->st_size, (unsigned long) heap->st_size * 2)); +#if defined(DUK_USE_DEBUG) + duk_heap_strtable_dump(heap); +#endif + duk__strtable_grow_inplace(heap); + } + } else if (load_factor <= DUK_USE_STRTAB_SHRINK_LIMIT) { + if (heap->st_size <= DUK_USE_STRTAB_MINSIZE) { + DUK_DD(DUK_DDPRINT("want to shrink strtable (based on load factor) but already minimum size")); + } else { + DUK_D(DUK_DPRINT("shrink string table: %lu -> %lu", (unsigned long) heap->st_size, (unsigned long) heap->st_size / 2)); +#if defined(DUK_USE_DEBUG) + duk_heap_strtable_dump(heap); +#endif + duk__strtable_shrink_inplace(heap); + } + } else { + DUK_DD(DUK_DDPRINT("no need for strtable resize")); + } + + heap->st_resizing = 0; +} +#endif /* DUK__STRTAB_RESIZE_CHECK */ + +/* + * Torture grow/shrink: unconditionally grow and shrink back. + */ + +#if defined(DUK_USE_STRTAB_TORTURE) && defined(DUK__STRTAB_RESIZE_CHECK) +DUK_LOCAL void duk__strtable_resize_torture(duk_heap *heap) { + duk_uint32_t old_st_size; + + DUK_ASSERT(heap != NULL); + + old_st_size = heap->st_size; + if (old_st_size >= DUK_USE_STRTAB_MAXSIZE) { + return; + } + + heap->st_resizing = 1; + duk__strtable_grow_inplace(heap); + if (heap->st_size > old_st_size) { + duk__strtable_shrink_inplace(heap); + } + heap->st_resizing = 0; +} +#endif /* DUK_USE_STRTAB_TORTURE && DUK__STRTAB_RESIZE_CHECK */ + +/* + * Raw intern; string already checked not to be present. + */ + +DUK_LOCAL duk_hstring *duk__strtable_do_intern(duk_heap *heap, const duk_uint8_t *str, duk_uint32_t blen, duk_uint32_t strhash) { + duk_hstring *res; + const duk_uint8_t *extdata; +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *slot; +#else + duk_hstring **slot; +#endif + + DUK_DDD(DUK_DDDPRINT("do_intern: heap=%p, str=%p, blen=%lu, strhash=%lx, st_size=%lu, st_count=%lu, load=%lf", + (void *) heap, (const void *) str, (unsigned long) blen, (unsigned long) strhash, + (unsigned long) heap->st_size, (unsigned long) heap->st_count, + (double) heap->st_count / (double) heap->st_size)); + + DUK_ASSERT(heap != NULL); + + /* Prevent any side effects on the string table and the caller provided + * str/blen arguments while interning is in progress. For example, if + * the caller provided str/blen from a dynamic buffer, a finalizer + * might resize or modify that dynamic buffer, invalidating the call + * arguments. + * + * While finalizers must be prevented, mark-and-sweep itself is fine. + * Recursive string table resize is prevented explicitly here. + */ + + heap->pf_prevent_count++; + DUK_ASSERT(heap->pf_prevent_count != 0); /* Wrap. */ + +#if defined(DUK_USE_STRTAB_TORTURE) && defined(DUK__STRTAB_RESIZE_CHECK) + duk__strtable_resize_torture(heap); +#endif + + /* String table grow/shrink check. Because of chaining (and no + * accumulation issues as with hash probe chains and DELETED + * markers) there's never a mandatory need to resize right now. + * Check for the resize only periodically, based on st_count + * bit pattern. Because string table removal doesn't do a shrink + * check, we do that also here. + * + * Do the resize and possible grow/shrink before the new duk_hstring + * has been allocated. Otherwise we may trigger a GC when the result + * duk_hstring is not yet strongly referenced. + */ + +#if defined(DUK__STRTAB_RESIZE_CHECK) + if (DUK_UNLIKELY((heap->st_count & DUK_USE_STRTAB_RESIZE_CHECK_MASK) == 0)) { + duk__strtable_resize_check(heap); + } +#endif + + /* External string check (low memory optimization). */ + +#if defined(DUK_USE_HSTRING_EXTDATA) && defined(DUK_USE_EXTSTR_INTERN_CHECK) + extdata = (const duk_uint8_t *) DUK_USE_EXTSTR_INTERN_CHECK(heap->heap_udata, (void *) DUK_LOSE_CONST(str), (duk_size_t) blen); +#else + extdata = (const duk_uint8_t *) NULL; +#endif + + /* Allocate and initialize string, not yet linked. This may cause a + * GC which may cause other strings to be interned and inserted into + * the string table before we insert our string. Finalizer execution + * is disabled intentionally to avoid a finalizer from e.g. resizing + * a buffer used as a data area for 'str'. + */ + + res = duk__strtable_alloc_hstring(heap, str, blen, strhash, extdata); + + /* Allow side effects again: GC must be avoided until duk_hstring + * result (if successful) has been INCREF'd. + */ + DUK_ASSERT(heap->pf_prevent_count > 0); + heap->pf_prevent_count--; + + /* Alloc error handling. */ + + if (DUK_UNLIKELY(res == NULL)) { +#if defined(DUK_USE_HSTRING_EXTDATA) && defined(DUK_USE_EXTSTR_INTERN_CHECK) + if (extdata != NULL) { + DUK_USE_EXTSTR_FREE(heap->heap_udata, (const void *) extdata); + } +#endif + return NULL; + } + + /* Insert into string table. */ + +#if defined(DUK_USE_STRTAB_PTRCOMP) + slot = heap->strtable16 + (strhash & heap->st_mask); +#else + slot = heap->strtable + (strhash & heap->st_mask); +#endif + DUK_ASSERT(res->hdr.h_next == NULL); /* This is the case now, but unnecessary zeroing/NULLing. */ + res->hdr.h_next = DUK__HEAPPTR_DEC16(heap, *slot); + *slot = DUK__HEAPPTR_ENC16(heap, res); + + /* Update string count only for successful inserts. */ + +#if defined(DUK__STRTAB_RESIZE_CHECK) + heap->st_count++; +#endif + + /* The duk_hstring is in the string table but is not yet strongly + * reachable. Calling code MUST NOT make any allocations or other + * side effects before the duk_hstring has been INCREF'd and made + * reachable. + */ + + return res; +} + +/* + * Intern a string from str/blen, returning either an existing duk_hstring + * or adding a new one into the string table. The input string does -not- + * need to be NUL terminated. + * + * The input 'str' argument may point to a Duktape managed data area such as + * the data area of a dynamic buffer. It's crucial to avoid any side effects + * that might affect the data area (e.g. resize the dynamic buffer, or write + * to the buffer) before the string is fully interned. + */ + +#if defined(DUK_USE_ROM_STRINGS) +DUK_LOCAL duk_hstring *duk__strtab_romstring_lookup(duk_heap *heap, const duk_uint8_t *str, duk_size_t blen, duk_uint32_t strhash) { + duk_size_t lookup_hash; + duk_hstring *curr; + + DUK_ASSERT(heap != NULL); + DUK_UNREF(heap); + + lookup_hash = (blen << 4); + if (blen > 0) { + lookup_hash += str[0]; + } + lookup_hash &= 0xff; + + curr = (duk_hstring *) DUK_LOSE_CONST(duk_rom_strings_lookup[lookup_hash]); + while (curr != NULL) { + /* Unsafe memcmp() because for zero blen, str may be NULL. */ + if (strhash == DUK_HSTRING_GET_HASH(curr) && + blen == DUK_HSTRING_GET_BYTELEN(curr) && + duk_memcmp_unsafe((const void *) str, (const void *) DUK_HSTRING_GET_DATA(curr), blen) == 0) { + DUK_DDD(DUK_DDDPRINT("intern check: rom string: %!O, computed hash 0x%08lx, rom hash 0x%08lx", + curr, (unsigned long) strhash, (unsigned long) DUK_HSTRING_GET_HASH(curr))); + return curr; + } + curr = curr->hdr.h_next; + } + + return NULL; +} +#endif /* DUK_USE_ROM_STRINGS */ + +DUK_INTERNAL duk_hstring *duk_heap_strtable_intern(duk_heap *heap, const duk_uint8_t *str, duk_uint32_t blen) { + duk_uint32_t strhash; + duk_hstring *h; + + DUK_DDD(DUK_DDDPRINT("intern check: heap=%p, str=%p, blen=%lu", (void *) heap, (const void *) str, (unsigned long) blen)); + + /* Preliminaries. */ + + /* XXX: maybe just require 'str != NULL' even for zero size? */ + DUK_ASSERT(heap != NULL); + DUK_ASSERT(blen == 0 || str != NULL); + DUK_ASSERT(blen <= DUK_HSTRING_MAX_BYTELEN); /* Caller is responsible for ensuring this. */ + strhash = duk_heap_hashstring(heap, str, (duk_size_t) blen); + + /* String table lookup. */ + + DUK_ASSERT(DUK__GET_STRTABLE(heap) != NULL); + DUK_ASSERT(heap->st_size > 0); + DUK_ASSERT(heap->st_size == heap->st_mask + 1); +#if defined(DUK_USE_STRTAB_PTRCOMP) + h = DUK__HEAPPTR_DEC16(heap, heap->strtable16[strhash & heap->st_mask]); +#else + h = heap->strtable[strhash & heap->st_mask]; +#endif + while (h != NULL) { + if (DUK_HSTRING_GET_HASH(h) == strhash && + DUK_HSTRING_GET_BYTELEN(h) == blen && + duk_memcmp_unsafe((const void *) str, (const void *) DUK_HSTRING_GET_DATA(h), (size_t) blen) == 0) { + /* Found existing entry. */ + DUK_STATS_INC(heap, stats_strtab_intern_hit); + return h; + } + h = h->hdr.h_next; + } + + /* ROM table lookup. Because this lookup is slower, do it only after + * RAM lookup. This works because no ROM string is ever interned into + * the RAM string table. + */ + +#if defined(DUK_USE_ROM_STRINGS) + h = duk__strtab_romstring_lookup(heap, str, blen, strhash); + if (h != NULL) { + DUK_STATS_INC(heap, stats_strtab_intern_hit); + return h; + } +#endif + + /* Not found in string table; insert. */ + + DUK_STATS_INC(heap, stats_strtab_intern_miss); + h = duk__strtable_do_intern(heap, str, blen, strhash); + return h; /* may be NULL */ +} + +/* + * Intern a string from u32. + */ + +/* XXX: Could arrange some special handling because we know that the result + * will have an arridx flag and an ASCII flag, won't need a clen check, etc. + */ + +DUK_INTERNAL duk_hstring *duk_heap_strtable_intern_u32(duk_heap *heap, duk_uint32_t val) { + duk_uint8_t buf[DUK__STRTAB_U32_MAX_STRLEN]; + duk_uint8_t *p; + + DUK_ASSERT(heap != NULL); + + /* This is smaller and faster than a %lu sprintf. */ + p = buf + sizeof(buf); + do { + p--; + *p = duk_lc_digits[val % 10]; + val = val / 10; + } while (val != 0); /* For val == 0, emit exactly one '0'. */ + DUK_ASSERT(p >= buf); + + return duk_heap_strtable_intern(heap, (const duk_uint8_t *) p, (duk_uint32_t) ((buf + sizeof(buf)) - p)); +} + +/* + * Checked convenience variants. + * + * XXX: Because the main use case is for the checked variants, make them the + * main functionality and provide a safe variant separately (it is only needed + * during heap init). The problem with that is that longjmp state and error + * creation must already be possible to throw. + */ + +DUK_INTERNAL duk_hstring *duk_heap_strtable_intern_checked(duk_hthread *thr, const duk_uint8_t *str, duk_uint32_t blen) { + duk_hstring *res; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(blen == 0 || str != NULL); + + res = duk_heap_strtable_intern(thr->heap, str, blen); + if (DUK_UNLIKELY(res == NULL)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); + } + return res; +} + +#if defined(DUK_USE_LITCACHE_SIZE) +DUK_LOCAL duk_uint_t duk__strtable_litcache_key(const duk_uint8_t *str, duk_uint32_t blen) { + duk_uintptr_t key; + + DUK_ASSERT(DUK_USE_LITCACHE_SIZE > 0); + DUK_ASSERT(DUK_IS_POWER_OF_TWO((duk_uint_t) DUK_USE_LITCACHE_SIZE)); + + key = (duk_uintptr_t) blen ^ (duk_uintptr_t) str; + key &= (duk_uintptr_t) (DUK_USE_LITCACHE_SIZE - 1); /* Assumes size is power of 2. */ + /* Due to masking, cast is in 32-bit range. */ + DUK_ASSERT(key <= DUK_UINT_MAX); + return (duk_uint_t) key; +} + +DUK_INTERNAL duk_hstring *duk_heap_strtable_intern_literal_checked(duk_hthread *thr, const duk_uint8_t *str, duk_uint32_t blen) { + duk_uint_t key; + duk_litcache_entry *ent; + duk_hstring *h; + + /* Fast path check: literal exists in literal cache. */ + key = duk__strtable_litcache_key(str, blen); + ent = thr->heap->litcache + key; + if (ent->addr == str) { + DUK_DD(DUK_DDPRINT("intern check for cached, pinned literal: str=%p, blen=%ld -> duk_hstring %!O", + (const void *) str, (long) blen, (duk_heaphdr *) ent->h)); + DUK_ASSERT(ent->h != NULL); + DUK_ASSERT(DUK_HSTRING_HAS_PINNED_LITERAL(ent->h)); + DUK_STATS_INC(thr->heap, stats_strtab_litcache_hit); + return ent->h; + } + + /* Intern and update (overwrite) cache entry. */ + h = duk_heap_strtable_intern_checked(thr, str, blen); + ent->addr = str; + ent->h = h; + DUK_STATS_INC(thr->heap, stats_strtab_litcache_miss); + + /* Pin the duk_hstring until the next mark-and-sweep. This means + * litcache entries don't need to be invalidated until the next + * mark-and-sweep as their target duk_hstring is not freed before + * the mark-and-sweep happens. The pin remains even if the literal + * cache entry is overwritten, and is still useful to avoid string + * table traffic. + */ + if (!DUK_HSTRING_HAS_PINNED_LITERAL(h)) { + DUK_DD(DUK_DDPRINT("pin duk_hstring because it is a literal: %!O", (duk_heaphdr *) h)); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)); + DUK_HSTRING_INCREF(thr, h); + DUK_HSTRING_SET_PINNED_LITERAL(h); + DUK_STATS_INC(thr->heap, stats_strtab_litcache_pin); + } + + return h; +} +#endif /* DUK_USE_LITCACHE_SIZE */ + +DUK_INTERNAL duk_hstring *duk_heap_strtable_intern_u32_checked(duk_hthread *thr, duk_uint32_t val) { + duk_hstring *res; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + + res = duk_heap_strtable_intern_u32(thr->heap, val); + if (DUK_UNLIKELY(res == NULL)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); + } + return res; +} + +/* + * Remove (unlink) a string from the string table. + * + * Just unlinks the duk_hstring, leaving link pointers as garbage. + * Caller must free the string itself. + */ + +#if defined(DUK_USE_REFERENCE_COUNTING) +/* Unlink without a 'prev' pointer. */ +DUK_INTERNAL void duk_heap_strtable_unlink(duk_heap *heap, duk_hstring *h) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *slot; +#else + duk_hstring **slot; +#endif + duk_hstring *other; + duk_hstring *prev; + + DUK_DDD(DUK_DDDPRINT("remove: heap=%p, h=%p, blen=%lu, strhash=%lx", + (void *) heap, (void *) h, + (unsigned long) (h != NULL ? DUK_HSTRING_GET_BYTELEN(h) : 0), + (unsigned long) (h != NULL ? DUK_HSTRING_GET_HASH(h) : 0))); + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(h != NULL); + +#if defined(DUK__STRTAB_RESIZE_CHECK) + DUK_ASSERT(heap->st_count > 0); + heap->st_count--; +#endif + +#if defined(DUK_USE_STRTAB_PTRCOMP) + slot = heap->strtable16 + (DUK_HSTRING_GET_HASH(h) & heap->st_mask); +#else + slot = heap->strtable + (DUK_HSTRING_GET_HASH(h) & heap->st_mask); +#endif + other = DUK__HEAPPTR_DEC16(heap, *slot); + DUK_ASSERT(other != NULL); /* At least argument string is in the chain. */ + + prev = NULL; + while (other != h) { + prev = other; + other = other->hdr.h_next; + DUK_ASSERT(other != NULL); /* We'll eventually find 'h'. */ + } + if (prev != NULL) { + /* Middle of list. */ + prev->hdr.h_next = h->hdr.h_next; + } else { + /* Head of list. */ + *slot = DUK__HEAPPTR_ENC16(heap, h->hdr.h_next); + } + + /* There's no resize check on a string free. The next string + * intern will do one. + */ +} +#endif /* DUK_USE_REFERENCE_COUNTING */ + +/* Unlink with a 'prev' pointer. */ +DUK_INTERNAL void duk_heap_strtable_unlink_prev(duk_heap *heap, duk_hstring *h, duk_hstring *prev) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *slot; +#else + duk_hstring **slot; +#endif + + DUK_DDD(DUK_DDDPRINT("remove: heap=%p, prev=%p, h=%p, blen=%lu, strhash=%lx", + (void *) heap, (void *) prev, (void *) h, + (unsigned long) (h != NULL ? DUK_HSTRING_GET_BYTELEN(h) : 0), + (unsigned long) (h != NULL ? DUK_HSTRING_GET_HASH(h) : 0))); + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(h != NULL); + DUK_ASSERT(prev == NULL || prev->hdr.h_next == h); + +#if defined(DUK__STRTAB_RESIZE_CHECK) + DUK_ASSERT(heap->st_count > 0); + heap->st_count--; +#endif + + if (prev != NULL) { + /* Middle of list. */ + prev->hdr.h_next = h->hdr.h_next; + } else { + /* Head of list. */ +#if defined(DUK_USE_STRTAB_PTRCOMP) + slot = heap->strtable16 + (DUK_HSTRING_GET_HASH(h) & heap->st_mask); +#else + slot = heap->strtable + (DUK_HSTRING_GET_HASH(h) & heap->st_mask); +#endif + DUK_ASSERT(DUK__HEAPPTR_DEC16(heap, *slot) == h); + *slot = DUK__HEAPPTR_ENC16(heap, h->hdr.h_next); + } +} + +/* + * Force string table resize check in mark-and-sweep. + */ + +DUK_INTERNAL void duk_heap_strtable_force_resize(duk_heap *heap) { + /* Does only one grow/shrink step if needed. The heap->st_resizing + * flag protects against recursive resizing. + */ + + DUK_ASSERT(heap != NULL); + DUK_UNREF(heap); + +#if defined(DUK__STRTAB_RESIZE_CHECK) +#if defined(DUK_USE_STRTAB_PTRCOMP) + if (heap->strtable16 != NULL) { +#else + if (heap->strtable != NULL) { +#endif + duk__strtable_resize_check(heap); + } +#endif +} + +/* + * Free strings in the string table and the string table itself. + */ + +DUK_INTERNAL void duk_heap_strtable_free(duk_heap *heap) { +#if defined(DUK_USE_STRTAB_PTRCOMP) + duk_uint16_t *strtable; + duk_uint16_t *st; +#else + duk_hstring **strtable; + duk_hstring **st; +#endif + duk_hstring *h; + + DUK_ASSERT(heap != NULL); + +#if defined(DUK_USE_ASSERTIONS) + duk__strtable_assert_checks(heap); +#endif + + /* Strtable can be NULL if heap init fails. However, in that case + * heap->st_size is 0, so strtable == strtable_end and we skip the + * loop without a special check. + */ + strtable = DUK__GET_STRTABLE(heap); + st = strtable + heap->st_size; + DUK_ASSERT(strtable != NULL || heap->st_size == 0); + + while (strtable != st) { + --st; + h = DUK__HEAPPTR_DEC16(heap, *st); + while (h) { + duk_hstring *h_next; + h_next = h->hdr.h_next; + + /* Strings may have inner refs (extdata) in some cases. */ + duk_free_hstring(heap, h); + + h = h_next; + } + } + + DUK_FREE(heap, strtable); +} + +/* automatic undefs */ +#undef DUK__GET_STRTABLE +#undef DUK__HEAPPTR_DEC16 +#undef DUK__HEAPPTR_ENC16 +#undef DUK__STRTAB_U32_MAX_STRLEN +#line 1 "duk_heaphdr_assert.c" +/* + * duk_heaphdr assertion helpers + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ASSERTIONS) + +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) +DUK_INTERNAL void duk_heaphdr_assert_links(duk_heap *heap, duk_heaphdr *h) { + DUK_UNREF(heap); + if (h != NULL) { + duk_heaphdr *h_prev, *h_next; + h_prev = DUK_HEAPHDR_GET_PREV(heap, h); + h_next = DUK_HEAPHDR_GET_NEXT(heap, h); + DUK_ASSERT(h_prev == NULL || (DUK_HEAPHDR_GET_NEXT(heap, h_prev) == h)); + DUK_ASSERT(h_next == NULL || (DUK_HEAPHDR_GET_PREV(heap, h_next) == h)); + } +} +#else +DUK_INTERNAL void duk_heaphdr_assert_links(duk_heap *heap, duk_heaphdr *h) { + DUK_UNREF(heap); + DUK_UNREF(h); +} +#endif + +DUK_INTERNAL void duk_heaphdr_assert_valid(duk_heaphdr *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HEAPHDR_HTYPE_VALID(h)); +} + +/* Assert validity of a heaphdr, including all subclasses. */ +DUK_INTERNAL void duk_heaphdr_assert_valid_subclassed(duk_heaphdr *h) { + switch (DUK_HEAPHDR_GET_TYPE(h)) { + case DUK_HTYPE_OBJECT: { + duk_hobject *h_obj = (duk_hobject *) h; + DUK_HOBJECT_ASSERT_VALID(h_obj); + if (DUK_HOBJECT_IS_COMPFUNC(h_obj)) { + DUK_HCOMPFUNC_ASSERT_VALID((duk_hcompfunc *) h_obj); + } else if (DUK_HOBJECT_IS_NATFUNC(h_obj)) { + DUK_HNATFUNC_ASSERT_VALID((duk_hnatfunc *) h_obj); + } else if (DUK_HOBJECT_IS_DECENV(h_obj)) { + DUK_HDECENV_ASSERT_VALID((duk_hdecenv *) h_obj); + } else if (DUK_HOBJECT_IS_OBJENV(h_obj)) { + DUK_HOBJENV_ASSERT_VALID((duk_hobjenv *) h_obj); + } else if (DUK_HOBJECT_IS_BUFOBJ(h_obj)) { +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + DUK_HBUFOBJ_ASSERT_VALID((duk_hbufobj *) h_obj); +#endif + } else if (DUK_HOBJECT_IS_BOUNDFUNC(h_obj)) { + DUK_HBOUNDFUNC_ASSERT_VALID((duk_hboundfunc *) h_obj); + } else if (DUK_HOBJECT_IS_PROXY(h_obj)) { + DUK_HPROXY_ASSERT_VALID((duk_hproxy *) h_obj); + } else if (DUK_HOBJECT_IS_THREAD(h_obj)) { + DUK_HTHREAD_ASSERT_VALID((duk_hthread *) h_obj); + } else { + /* Just a plain object. */ + ; + } + break; + } + case DUK_HTYPE_STRING: { + duk_hstring *h_str = (duk_hstring *) h; + DUK_HSTRING_ASSERT_VALID(h_str); + break; + } + case DUK_HTYPE_BUFFER: { + duk_hbuffer *h_buf = (duk_hbuffer *) h; + DUK_HBUFFER_ASSERT_VALID(h_buf); + break; + } + default: { + DUK_ASSERT(0); + } + } +} + +#endif /* DUK_USE_ASSERTIONS */ +#line 1 "duk_hobject_alloc.c" +/* + * Hobject allocation. + * + * Provides primitive allocation functions for all object types (plain object, + * compiled function, native function, thread). The object return is not yet + * in "heap allocated" list and has a refcount of zero, so caller must careful. + */ + +/* XXX: In most cases there's no need for plain allocation without pushing + * to the value stack. Maybe rework contract? + */ + +/* #include duk_internal.h -> already included */ + +/* + * Helpers. + */ + +DUK_LOCAL void duk__init_object_parts(duk_heap *heap, duk_uint_t hobject_flags, duk_hobject *obj) { + DUK_ASSERT(obj != NULL); + /* Zeroed by caller. */ + + obj->hdr.h_flags = hobject_flags | DUK_HTYPE_OBJECT; + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE(&obj->hdr) == DUK_HTYPE_OBJECT); /* Assume zero shift. */ + +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + DUK_HOBJECT_SET_PROTOTYPE(heap, obj, NULL); + DUK_HOBJECT_SET_PROPS(heap, obj, NULL); +#endif +#if defined(DUK_USE_HEAPPTR16) + /* Zero encoded pointer is required to match NULL. */ + DUK_HEAPHDR_SET_NEXT(heap, &obj->hdr, NULL); +#if defined(DUK_USE_DOUBLE_LINKED_HEAP) + DUK_HEAPHDR_SET_PREV(heap, &obj->hdr, NULL); +#endif +#endif + DUK_HEAPHDR_ASSERT_LINKS(heap, &obj->hdr); + DUK_HEAP_INSERT_INTO_HEAP_ALLOCATED(heap, &obj->hdr); + + /* obj->props is intentionally left as NULL, and duk_hobject_props.c must deal + * with this properly. This is intentional: empty objects consume a minimum + * amount of memory. Further, an initial allocation might fail and cause + * 'obj' to "leak" (require a mark-and-sweep) since it is not reachable yet. + */ +} + +DUK_LOCAL void *duk__hobject_alloc_init(duk_hthread *thr, duk_uint_t hobject_flags, duk_size_t size) { + void *res; + + res = (void *) DUK_ALLOC_CHECKED_ZEROED(thr, size); + DUK_ASSERT(res != NULL); + duk__init_object_parts(thr->heap, hobject_flags, (duk_hobject *) res); + return res; +} + +/* + * Allocate an duk_hobject. + * + * The allocated object has no allocation for properties; the caller may + * want to force a resize if a desired size is known. + * + * The allocated object has zero reference count and is not reachable. + * The caller MUST make the object reachable and increase its reference + * count before invoking any operation that might require memory allocation. + */ + +DUK_INTERNAL duk_hobject *duk_hobject_alloc_unchecked(duk_heap *heap, duk_uint_t hobject_flags) { + duk_hobject *res; + + DUK_ASSERT(heap != NULL); + + /* different memory layout, alloc size, and init */ + DUK_ASSERT((hobject_flags & DUK_HOBJECT_FLAG_COMPFUNC) == 0); + DUK_ASSERT((hobject_flags & DUK_HOBJECT_FLAG_NATFUNC) == 0); + DUK_ASSERT((hobject_flags & DUK_HOBJECT_FLAG_BOUNDFUNC) == 0); + + res = (duk_hobject *) DUK_ALLOC_ZEROED(heap, sizeof(duk_hobject)); + if (DUK_UNLIKELY(res == NULL)) { + return NULL; + } + DUK_ASSERT(!DUK_HOBJECT_IS_THREAD(res)); + + duk__init_object_parts(heap, hobject_flags, res); + + DUK_ASSERT(!DUK_HOBJECT_IS_THREAD(res)); + return res; +} + +DUK_INTERNAL duk_hobject *duk_hobject_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hobject *res; + + res = (duk_hobject *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hobject)); + return res; +} + +DUK_INTERNAL duk_hcompfunc *duk_hcompfunc_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hcompfunc *res; + + res = (duk_hcompfunc *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hcompfunc)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) +#if defined(DUK_USE_HEAPPTR16) + /* NULL pointer is required to encode to zero, so memset is enough. */ +#else + res->data = NULL; + res->funcs = NULL; + res->bytecode = NULL; +#endif + res->lex_env = NULL; + res->var_env = NULL; +#endif + + return res; +} + +DUK_INTERNAL duk_hnatfunc *duk_hnatfunc_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hnatfunc *res; + + res = (duk_hnatfunc *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hnatfunc)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->func = NULL; +#endif + + return res; +} + +DUK_INTERNAL duk_hboundfunc *duk_hboundfunc_alloc(duk_heap *heap, duk_uint_t hobject_flags) { + duk_hboundfunc *res; + + res = (duk_hboundfunc *) DUK_ALLOC(heap, sizeof(duk_hboundfunc)); + if (!res) { + return NULL; + } + duk_memzero(res, sizeof(duk_hboundfunc)); + + duk__init_object_parts(heap, hobject_flags, &res->obj); + + DUK_TVAL_SET_UNDEFINED(&res->target); + DUK_TVAL_SET_UNDEFINED(&res->this_binding); + +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->args = NULL; +#endif + + return res; +} + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL duk_hbufobj *duk_hbufobj_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hbufobj *res; + + res = (duk_hbufobj *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hbufobj)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->buf = NULL; + res->buf_prop = NULL; +#endif + + DUK_HBUFOBJ_ASSERT_VALID(res); + return res; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* Allocate a new thread. + * + * Leaves the built-ins array uninitialized. The caller must either + * initialize a new global context or share existing built-ins from + * another thread. + */ +DUK_INTERNAL duk_hthread *duk_hthread_alloc_unchecked(duk_heap *heap, duk_uint_t hobject_flags) { + duk_hthread *res; + + res = (duk_hthread *) DUK_ALLOC(heap, sizeof(duk_hthread)); + if (DUK_UNLIKELY(res == NULL)) { + return NULL; + } + duk_memzero(res, sizeof(duk_hthread)); + + duk__init_object_parts(heap, hobject_flags, &res->obj); + +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->ptr_curr_pc = NULL; + res->heap = NULL; + res->valstack = NULL; + res->valstack_end = NULL; + res->valstack_alloc_end = NULL; + res->valstack_bottom = NULL; + res->valstack_top = NULL; + res->callstack_curr = NULL; + res->resumer = NULL; + res->compile_ctx = NULL, +#if defined(DUK_USE_HEAPPTR16) + res->strs16 = NULL; +#else + res->strs = NULL; +#endif + { + duk_small_uint_t i; + for (i = 0; i < DUK_NUM_BUILTINS; i++) { + res->builtins[i] = NULL; + } + } +#endif + /* When nothing is running, API calls are in non-strict mode. */ + DUK_ASSERT(res->strict == 0); + + res->heap = heap; + + /* XXX: Any reason not to merge duk_hthread_alloc.c here? */ + return res; +} + +DUK_INTERNAL duk_hthread *duk_hthread_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hthread *res; + + res = duk_hthread_alloc_unchecked(thr->heap, hobject_flags); + if (res == NULL) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return NULL;); + } + return res; +} + +DUK_INTERNAL duk_harray *duk_harray_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_harray *res; + + res = (duk_harray *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_harray)); + + DUK_ASSERT(res->length == 0); + + return res; +} + +DUK_INTERNAL duk_hdecenv *duk_hdecenv_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hdecenv *res; + + res = (duk_hdecenv *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hdecenv)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->thread = NULL; + res->varmap = NULL; +#endif + + DUK_ASSERT(res->thread == NULL); + DUK_ASSERT(res->varmap == NULL); + DUK_ASSERT(res->regbase_byteoff == 0); + + return res; +} + +DUK_INTERNAL duk_hobjenv *duk_hobjenv_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hobjenv *res; + + res = (duk_hobjenv *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hobjenv)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + res->target = NULL; +#endif + + DUK_ASSERT(res->target == NULL); + + return res; +} + +DUK_INTERNAL duk_hproxy *duk_hproxy_alloc(duk_hthread *thr, duk_uint_t hobject_flags) { + duk_hproxy *res; + + res = (duk_hproxy *) duk__hobject_alloc_init(thr, hobject_flags, sizeof(duk_hproxy)); + + /* Leave ->target and ->handler uninitialized, as caller will always + * explicitly initialize them before any side effects are possible. + */ + + return res; +} +#line 1 "duk_hobject_assert.c" +/* + * duk_hobject and subclass assertion helpers + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ASSERTIONS) + +DUK_INTERNAL void duk_hobject_assert_valid(duk_hobject *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(!DUK_HOBJECT_IS_CALLABLE(h) || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_FUNCTION); + DUK_ASSERT(!DUK_HOBJECT_IS_BUFOBJ(h) || + (DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_ARRAYBUFFER || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_DATAVIEW || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_INT8ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_UINT8ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_UINT8CLAMPEDARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_INT16ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_UINT16ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_INT32ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_UINT32ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_FLOAT32ARRAY || + DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_FLOAT64ARRAY)); + /* Object is an Array <=> object has exotic array behavior */ + DUK_ASSERT((DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_ARRAY && DUK_HOBJECT_HAS_EXOTIC_ARRAY(h)) || + (DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_ARRAY && !DUK_HOBJECT_HAS_EXOTIC_ARRAY(h))); +} + +DUK_INTERNAL void duk_harray_assert_valid(duk_harray *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_ARRAY((duk_hobject *) h)); + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_ARRAY((duk_hobject *) h)); +} + +DUK_INTERNAL void duk_hboundfunc_assert_valid(duk_hboundfunc *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_BOUNDFUNC((duk_hobject *) h)); + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(&h->target) || + (DUK_TVAL_IS_OBJECT(&h->target) && + DUK_HOBJECT_IS_CALLABLE(DUK_TVAL_GET_OBJECT(&h->target)))); + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(&h->this_binding)); + DUK_ASSERT(h->nargs == 0 || h->args != NULL); +} + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_INTERNAL void duk_hbufobj_assert_valid(duk_hbufobj *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(h->shift <= 3); + DUK_ASSERT(h->elem_type <= DUK_HBUFOBJ_ELEM_MAX); + DUK_ASSERT((h->shift == 0 && h->elem_type == DUK_HBUFOBJ_ELEM_UINT8) || + (h->shift == 0 && h->elem_type == DUK_HBUFOBJ_ELEM_UINT8CLAMPED) || + (h->shift == 0 && h->elem_type == DUK_HBUFOBJ_ELEM_INT8) || + (h->shift == 1 && h->elem_type == DUK_HBUFOBJ_ELEM_UINT16) || + (h->shift == 1 && h->elem_type == DUK_HBUFOBJ_ELEM_INT16) || + (h->shift == 2 && h->elem_type == DUK_HBUFOBJ_ELEM_UINT32) || + (h->shift == 2 && h->elem_type == DUK_HBUFOBJ_ELEM_INT32) || + (h->shift == 2 && h->elem_type == DUK_HBUFOBJ_ELEM_FLOAT32) || + (h->shift == 3 && h->elem_type == DUK_HBUFOBJ_ELEM_FLOAT64)); + DUK_ASSERT(h->is_typedarray == 0 || h->is_typedarray == 1); + DUK_ASSERT(DUK_HOBJECT_IS_BUFOBJ((duk_hobject *) h)); + if (h->buf == NULL) { + DUK_ASSERT(h->offset == 0); + DUK_ASSERT(h->length == 0); + } else { + /* No assertions for offset or length; in particular, + * it's OK for length to be longer than underlying + * buffer. Just ensure they don't wrap when added. + */ + DUK_ASSERT(h->offset + h->length >= h->offset); + } +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +DUK_INTERNAL void duk_hcompfunc_assert_valid(duk_hcompfunc *h) { + DUK_ASSERT(h != NULL); +} + +DUK_INTERNAL void duk_hnatfunc_assert_valid(duk_hnatfunc *h) { + DUK_ASSERT(h != NULL); +} + +DUK_INTERNAL void duk_hdecenv_assert_valid(duk_hdecenv *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_DECENV((duk_hobject *) h)); + DUK_ASSERT(h->thread == NULL || h->varmap != NULL); +} + +DUK_INTERNAL void duk_hobjenv_assert_valid(duk_hobjenv *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_OBJENV((duk_hobject *) h)); + DUK_ASSERT(h->target != NULL); + DUK_ASSERT(h->has_this == 0 || h->has_this == 1); +} + +DUK_INTERNAL void duk_hproxy_assert_valid(duk_hproxy *h) { + DUK_ASSERT(h != NULL); + DUK_ASSERT(h->target != NULL); + DUK_ASSERT(h->handler != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ((duk_hobject *) h)); +} + +DUK_INTERNAL void duk_hthread_assert_valid(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(DUK_HEAPHDR_GET_TYPE((duk_heaphdr *) thr) == DUK_HTYPE_OBJECT); + DUK_ASSERT(DUK_HOBJECT_IS_THREAD((duk_hobject *) thr)); + DUK_ASSERT(thr->unused1 == 0); + DUK_ASSERT(thr->unused2 == 0); +} + +DUK_INTERNAL void duk_ctx_assert_valid(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + DUK_HTHREAD_ASSERT_VALID(thr); + DUK_ASSERT(thr->valstack != NULL); + DUK_ASSERT(thr->valstack_bottom != NULL); + DUK_ASSERT(thr->valstack_top != NULL); + DUK_ASSERT(thr->valstack_end != NULL); + DUK_ASSERT(thr->valstack_alloc_end != NULL); + DUK_ASSERT(thr->valstack_alloc_end >= thr->valstack); + DUK_ASSERT(thr->valstack_end >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + DUK_ASSERT(thr->valstack_alloc_end >= thr->valstack_end); +} + +#endif /* DUK_USE_ASSERTIONS */ +#line 1 "duk_hobject_enum.c" +/* + * Object enumeration support. + * + * Creates an internal enumeration state object to be used e.g. with for-in + * enumeration. The state object contains a snapshot of target object keys + * and internal control state for enumeration. Enumerator flags allow caller + * to e.g. request internal/non-enumerable properties, and to enumerate only + * "own" properties. + * + * Also creates the result value for e.g. Object.keys() based on the same + * internal structure. + * + * This snapshot-based enumeration approach is used to simplify enumeration: + * non-snapshot-based approaches are difficult to reconcile with mutating + * the enumeration target, running multiple long-lived enumerators at the + * same time, garbage collection details, etc. The downside is that the + * enumerator object is memory inefficient especially for iterating arrays. + */ + +/* #include duk_internal.h -> already included */ + +/* XXX: identify enumeration target with an object index (not top of stack) */ + +/* First enumerated key index in enumerator object, must match exactly the + * number of control properties inserted to the enumerator. + */ +#define DUK__ENUM_START_INDEX 2 + +/* Current implementation suffices for ES2015 for now because there's no symbol + * sorting, so commented out for now. + */ + +/* + * Helper to sort enumeration keys using a callback for pairwise duk_hstring + * comparisons. The keys are in the enumeration object entry part, starting + * from DUK__ENUM_START_INDEX, and the entry part is dense. Entry part values + * are all "true", e.g. "1" -> true, "3" -> true, "foo" -> true, "2" -> true, + * so it suffices to just switch keys without switching values. + * + * ES2015 [[OwnPropertyKeys]] enumeration order for ordinary objects: + * (1) array indices in ascending order, + * (2) non-array-index keys in insertion order, and + * (3) symbols in insertion order. + * http://www.ecma-international.org/ecma-262/6.0/#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys. + * + * This rule is applied to "own properties" at each inheritance level; + * non-duplicate parent keys always follow child keys. For example, + * an inherited array index will enumerate -after- a symbol in the + * child. + * + * Insertion sort is used because (1) it's simple and compact, (2) works + * in-place, (3) minimizes operations if data is already nearly sorted, + * (4) doesn't reorder elements considered equal. + * http://en.wikipedia.org/wiki/Insertion_sort + */ + +/* Sort key, must hold array indices, "not array index" marker, and one more + * higher value for symbols. + */ +#if !defined(DUK_USE_SYMBOL_BUILTIN) +typedef duk_uint32_t duk__sort_key_t; +#elif defined(DUK_USE_64BIT_OPS) +typedef duk_uint64_t duk__sort_key_t; +#else +typedef duk_double_t duk__sort_key_t; +#endif + +/* Get sort key for a duk_hstring. */ +DUK_LOCAL duk__sort_key_t duk__hstring_sort_key(duk_hstring *x) { + duk__sort_key_t val; + + /* For array indices [0,0xfffffffe] use the array index as is. + * For strings, use 0xffffffff, the marker 'arridx' already in + * duk_hstring. For symbols, any value above 0xffffffff works, + * as long as it is the same for all symbols; currently just add + * the masked flag field into the arridx temporary. + */ + DUK_ASSERT(x != NULL); + DUK_ASSERT(!DUK_HSTRING_HAS_SYMBOL(x) || DUK_HSTRING_GET_ARRIDX_FAST(x) == DUK_HSTRING_NO_ARRAY_INDEX); + + val = (duk__sort_key_t) DUK_HSTRING_GET_ARRIDX_FAST(x); + +#if defined(DUK_USE_SYMBOL_BUILTIN) + val = val + (duk__sort_key_t) (DUK_HEAPHDR_GET_FLAGS_RAW((duk_heaphdr *) x) & DUK_HSTRING_FLAG_SYMBOL); +#endif + + return (duk__sort_key_t) val; +} + +/* Insert element 'b' after element 'a'? */ +DUK_LOCAL duk_bool_t duk__sort_compare_es6(duk_hstring *a, duk_hstring *b, duk__sort_key_t val_b) { + duk__sort_key_t val_a; + + DUK_ASSERT(a != NULL); + DUK_ASSERT(b != NULL); + DUK_UNREF(b); /* Not actually needed now, val_b suffices. */ + + val_a = duk__hstring_sort_key(a); + + if (val_a > val_b) { + return 0; + } else { + return 1; + } +} + +DUK_LOCAL void duk__sort_enum_keys_es6(duk_hthread *thr, duk_hobject *h_obj, duk_int_fast32_t idx_start, duk_int_fast32_t idx_end) { + duk_hstring **keys; + duk_int_fast32_t idx; + + DUK_ASSERT(h_obj != NULL); + DUK_ASSERT(idx_start >= DUK__ENUM_START_INDEX); + DUK_ASSERT(idx_end >= idx_start); + DUK_UNREF(thr); + + if (idx_end <= idx_start + 1) { + return; /* Zero or one element(s). */ + } + + keys = DUK_HOBJECT_E_GET_KEY_BASE(thr->heap, h_obj); + + for (idx = idx_start + 1; idx < idx_end; idx++) { + duk_hstring *h_curr; + duk_int_fast32_t idx_insert; + duk__sort_key_t val_curr; + + h_curr = keys[idx]; + DUK_ASSERT(h_curr != NULL); + + /* Scan backwards for insertion place. This works very well + * when the elements are nearly in order which is the common + * (and optimized for) case. + */ + + val_curr = duk__hstring_sort_key(h_curr); /* Remains same during scanning. */ + for (idx_insert = idx - 1; idx_insert >= idx_start; idx_insert--) { + duk_hstring *h_insert; + h_insert = keys[idx_insert]; + DUK_ASSERT(h_insert != NULL); + + if (duk__sort_compare_es6(h_insert, h_curr, val_curr)) { + break; + } + } + /* If we're out of indices, idx_insert == idx_start - 1 and idx_insert++ + * brings us back to idx_start. + */ + idx_insert++; + DUK_ASSERT(idx_insert >= 0 && idx_insert <= idx); + + /* .-- p_insert .-- p_curr + * v v + * | ... | insert | ... | curr + */ + + /* This could also done when the keys are in order, i.e. + * idx_insert == idx. The result would be an unnecessary + * memmove() but we use an explicit check because the keys + * are very often in order already. + */ + if (idx != idx_insert) { + duk_memmove((void *) (keys + idx_insert + 1), + (const void *) (keys + idx_insert), + ((size_t) (idx - idx_insert) * sizeof(duk_hstring *))); + keys[idx_insert] = h_curr; + } + } +} + +/* + * Create an internal enumerator object E, which has its keys ordered + * to match desired enumeration ordering. Also initialize internal control + * properties for enumeration. + * + * Note: if an array was used to hold enumeration keys instead, an array + * scan would be needed to eliminate duplicates found in the prototype chain. + */ + +DUK_LOCAL void duk__add_enum_key(duk_hthread *thr, duk_hstring *k) { + /* 'k' may be unreachable on entry so must push without any + * potential for GC. + */ + duk_push_hstring(thr, k); + duk_push_true(thr); + duk_put_prop(thr, -3); +} + +DUK_LOCAL void duk__add_enum_key_stridx(duk_hthread *thr, duk_small_uint_t stridx) { + duk__add_enum_key(thr, DUK_HTHREAD_GET_STRING(thr, stridx)); +} + +DUK_INTERNAL void duk_hobject_enumerator_create(duk_hthread *thr, duk_small_uint_t enum_flags) { + duk_hobject *enum_target; + duk_hobject *curr; + duk_hobject *res; +#if defined(DUK_USE_ES6_PROXY) + duk_hobject *h_proxy_target; + duk_hobject *h_proxy_handler; + duk_hobject *h_trap_result; +#endif + duk_uint_fast32_t i, len; /* used for array, stack, and entry indices */ + duk_uint_fast32_t sort_start_index; + + DUK_ASSERT(thr != NULL); + + enum_target = duk_require_hobject(thr, -1); + DUK_ASSERT(enum_target != NULL); + + duk_push_bare_object(thr); + res = duk_known_hobject(thr, -1); + + /* [enum_target res] */ + + /* Target must be stored so that we can recheck whether or not + * keys still exist when we enumerate. This is not done if the + * enumeration result comes from a proxy trap as there is no + * real object to check against. + */ + duk_push_hobject(thr, enum_target); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_INT_TARGET); /* Target is bare, plain put OK. */ + + /* Initialize index so that we skip internal control keys. */ + duk_push_int(thr, DUK__ENUM_START_INDEX); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_INT_NEXT); /* Target is bare, plain put OK. */ + + /* + * Proxy object handling + */ + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_LIKELY((enum_flags & DUK_ENUM_NO_PROXY_BEHAVIOR) != 0)) { + goto skip_proxy; + } + if (DUK_LIKELY(!duk_hobject_proxy_check(enum_target, + &h_proxy_target, + &h_proxy_handler))) { + goto skip_proxy; + } + + /* XXX: share code with Object.keys() Proxy handling */ + + /* In ES2015 for-in invoked the "enumerate" trap; in ES2016 "enumerate" + * has been obsoleted and "ownKeys" is used instead. + */ + DUK_DDD(DUK_DDDPRINT("proxy enumeration")); + duk_push_hobject(thr, h_proxy_handler); + if (!duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_OWN_KEYS)) { + /* No need to replace the 'enum_target' value in stack, only the + * enum_target reference. This also ensures that the original + * enum target is reachable, which keeps the proxy and the proxy + * target reachable. We do need to replace the internal _Target. + */ + DUK_DDD(DUK_DDDPRINT("no ownKeys trap, enumerate proxy target instead")); + DUK_DDD(DUK_DDDPRINT("h_proxy_target=%!O", (duk_heaphdr *) h_proxy_target)); + enum_target = h_proxy_target; + + duk_push_hobject(thr, enum_target); /* -> [ ... enum_target res handler undefined target ] */ + duk_put_prop_stridx_short(thr, -4, DUK_STRIDX_INT_TARGET); /* Target is bare, plain put OK. */ + + duk_pop_2(thr); /* -> [ ... enum_target res ] */ + goto skip_proxy; + } + + /* [ ... enum_target res handler trap ] */ + duk_insert(thr, -2); + duk_push_hobject(thr, h_proxy_target); /* -> [ ... enum_target res trap handler target ] */ + duk_call_method(thr, 1 /*nargs*/); /* -> [ ... enum_target res trap_result ] */ + h_trap_result = duk_require_hobject(thr, -1); + DUK_UNREF(h_trap_result); + + duk_proxy_ownkeys_postprocess(thr, h_proxy_target, enum_flags); + /* -> [ ... enum_target res trap_result keys_array ] */ + + /* Copy cleaned up trap result keys into the enumerator object. */ + /* XXX: result is a dense array; could make use of that. */ + DUK_ASSERT(duk_is_array(thr, -1)); + len = (duk_uint_fast32_t) duk_get_length(thr, -1); + for (i = 0; i < len; i++) { + (void) duk_get_prop_index(thr, -1, (duk_uarridx_t) i); + DUK_ASSERT(duk_is_string(thr, -1)); /* postprocess cleaned up */ + /* [ ... enum_target res trap_result keys_array val ] */ + duk_push_true(thr); + /* [ ... enum_target res trap_result keys_array val true ] */ + duk_put_prop(thr, -5); + } + /* [ ... enum_target res trap_result keys_array ] */ + duk_pop_2(thr); + duk_remove_m2(thr); + + /* [ ... res ] */ + + /* The internal _Target property is kept pointing to the original + * enumeration target (the proxy object), so that the enumerator + * 'next' operation can read property values if so requested. The + * fact that the _Target is a proxy disables key existence check + * during enumeration. + */ + DUK_DDD(DUK_DDDPRINT("proxy enumeration, final res: %!O", (duk_heaphdr *) res)); + goto compact_and_return; + + skip_proxy: +#endif /* DUK_USE_ES6_PROXY */ + + curr = enum_target; + sort_start_index = DUK__ENUM_START_INDEX; + DUK_ASSERT(DUK_HOBJECT_GET_ENEXT(res) == DUK__ENUM_START_INDEX); + while (curr) { + duk_uint_fast32_t sort_end_index; +#if !defined(DUK_USE_PREFER_SIZE) + duk_bool_t need_sort = 0; +#endif + duk_bool_t cond; + + /* Enumeration proceeds by inheritance level. Virtual + * properties need to be handled specially, followed by + * array part, and finally entry part. + * + * If there are array index keys in the entry part or any + * other risk of the ES2015 [[OwnPropertyKeys]] order being + * violated, need_sort is set and an explicit ES2015 sort is + * done for the inheritance level. + */ + + /* XXX: inheriting from proxy */ + + /* + * Virtual properties. + * + * String and buffer indices are virtual and always enumerable, + * 'length' is virtual and non-enumerable. Array and arguments + * object props have special behavior but are concrete. + * + * String and buffer objects don't have an array part so as long + * as virtual array index keys are enumerated first, we don't + * need to set need_sort. + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + cond = DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(curr) || DUK_HOBJECT_IS_BUFOBJ(curr); +#else + cond = DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(curr); +#endif + cond = cond && !(enum_flags & DUK_ENUM_EXCLUDE_STRINGS); + if (cond) { + duk_bool_t have_length = 1; + + /* String and buffer enumeration behavior is identical now, + * so use shared handler. + */ + if (DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(curr)) { + duk_hstring *h_val; + h_val = duk_hobject_get_internal_value_string(thr->heap, curr); + DUK_ASSERT(h_val != NULL); /* string objects must not created without internal value */ + len = (duk_uint_fast32_t) DUK_HSTRING_GET_CHARLEN(h_val); + } +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + else { + duk_hbufobj *h_bufobj; + DUK_ASSERT(DUK_HOBJECT_IS_BUFOBJ(curr)); + h_bufobj = (duk_hbufobj *) curr; + + if (h_bufobj == NULL || !h_bufobj->is_typedarray) { + /* Zero length seems like a good behavior for neutered buffers. + * ArrayBuffer (non-view) and DataView don't have index properties + * or .length property. + */ + len = 0; + have_length = 0; + } else { + /* There's intentionally no check for + * current underlying buffer length. + */ + len = (duk_uint_fast32_t) (h_bufobj->length >> h_bufobj->shift); + } + } +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + + for (i = 0; i < len; i++) { + duk_hstring *k; + + /* This is a bit fragile: the string is not + * reachable until it is pushed by the helper. + */ + k = duk_heap_strtable_intern_u32_checked(thr, (duk_uint32_t) i); + DUK_ASSERT(k); + + duk__add_enum_key(thr, k); + + /* [enum_target res] */ + } + + /* 'length' and other virtual properties are not + * enumerable, but are included if non-enumerable + * properties are requested. + */ + + if (have_length && (enum_flags & DUK_ENUM_INCLUDE_NONENUMERABLE)) { + duk__add_enum_key_stridx(thr, DUK_STRIDX_LENGTH); + } + } + + /* + * Array part + */ + + cond = !(enum_flags & DUK_ENUM_EXCLUDE_STRINGS); + if (cond) { + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ASIZE(curr); i++) { + duk_hstring *k; + duk_tval *tv; + + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, curr, i); + if (DUK_TVAL_IS_UNUSED(tv)) { + continue; + } + k = duk_heap_strtable_intern_u32_checked(thr, (duk_uint32_t) i); /* Fragile reachability. */ + DUK_ASSERT(k); + + duk__add_enum_key(thr, k); + + /* [enum_target res] */ + } + + if (DUK_HOBJECT_HAS_EXOTIC_ARRAY(curr)) { + /* Array .length comes after numeric indices. */ + if (enum_flags & DUK_ENUM_INCLUDE_NONENUMERABLE) { + duk__add_enum_key_stridx(thr, DUK_STRIDX_LENGTH); + } + } + } + + /* + * Entries part + */ + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(curr); i++) { + duk_hstring *k; + + k = DUK_HOBJECT_E_GET_KEY(thr->heap, curr, i); + if (!k) { + continue; + } + if (!(enum_flags & DUK_ENUM_INCLUDE_NONENUMERABLE) && + !DUK_HOBJECT_E_SLOT_IS_ENUMERABLE(thr->heap, curr, i)) { + continue; + } + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(k))) { + if (!(enum_flags & DUK_ENUM_INCLUDE_HIDDEN) && + DUK_HSTRING_HAS_HIDDEN(k)) { + continue; + } + if (!(enum_flags & DUK_ENUM_INCLUDE_SYMBOLS)) { + continue; + } +#if !defined(DUK_USE_PREFER_SIZE) + need_sort = 1; +#endif + } else { + DUK_ASSERT(!DUK_HSTRING_HAS_HIDDEN(k)); /* would also have symbol flag */ + if (enum_flags & DUK_ENUM_EXCLUDE_STRINGS) { + continue; + } + } + if (DUK_HSTRING_HAS_ARRIDX(k)) { + /* This in currently only possible if the + * object has no array part: the array part + * is exhaustive when it is present. + */ +#if !defined(DUK_USE_PREFER_SIZE) + need_sort = 1; +#endif + } else { + if (enum_flags & DUK_ENUM_ARRAY_INDICES_ONLY) { + continue; + } + } + + DUK_ASSERT(DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, curr, i) || + !DUK_TVAL_IS_UNUSED(&DUK_HOBJECT_E_GET_VALUE_PTR(thr->heap, curr, i)->v)); + + duk__add_enum_key(thr, k); + + /* [enum_target res] */ + } + + /* Sort enumerated keys according to ES2015 requirements for + * the "inheritance level" just processed. This is far from + * optimal, ES2015 semantics could be achieved more efficiently + * by handling array index string keys (and symbol keys) + * specially above in effect doing the sort inline. + * + * Skip the sort if array index sorting is requested because + * we must consider all keys, also inherited, so an explicit + * sort is done for the whole result after we're done with the + * prototype chain. + * + * Also skip the sort if need_sort == 0, i.e. we know for + * certain that the enumerated order is already correct. + */ + sort_end_index = DUK_HOBJECT_GET_ENEXT(res); + + if (!(enum_flags & DUK_ENUM_SORT_ARRAY_INDICES)) { +#if defined(DUK_USE_PREFER_SIZE) + duk__sort_enum_keys_es6(thr, res, (duk_int_fast32_t) sort_start_index, (duk_int_fast32_t) sort_end_index); +#else + if (need_sort) { + DUK_DDD(DUK_DDDPRINT("need to sort")); + duk__sort_enum_keys_es6(thr, res, (duk_int_fast32_t) sort_start_index, (duk_int_fast32_t) sort_end_index); + } else { + DUK_DDD(DUK_DDDPRINT("no need to sort")); + } +#endif + } + + sort_start_index = sort_end_index; + + if (enum_flags & DUK_ENUM_OWN_PROPERTIES_ONLY) { + break; + } + + curr = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, curr); + } + + /* [enum_target res] */ + + duk_remove_m2(thr); + + /* [res] */ + + if (enum_flags & DUK_ENUM_SORT_ARRAY_INDICES) { + /* Some E5/E5.1 algorithms require that array indices are iterated + * in a strictly ascending order. This is the case for e.g. + * Array.prototype.forEach() and JSON.stringify() PropertyList + * handling. The caller can request an explicit sort in these + * cases. + */ + + /* Sort to ES2015 order which works for pure array incides but + * also for mixed keys. + */ + duk__sort_enum_keys_es6(thr, res, (duk_int_fast32_t) DUK__ENUM_START_INDEX, (duk_int_fast32_t) DUK_HOBJECT_GET_ENEXT(res)); + } + +#if defined(DUK_USE_ES6_PROXY) + compact_and_return: +#endif + /* compact; no need to seal because object is internal */ + duk_hobject_compact_props(thr, res); + + DUK_DDD(DUK_DDDPRINT("created enumerator object: %!iT", (duk_tval *) duk_get_tval(thr, -1))); +} + +/* + * Returns non-zero if a key and/or value was enumerated, and: + * + * [enum] -> [key] (get_value == 0) + * [enum] -> [key value] (get_value == 1) + * + * Returns zero without pushing anything on the stack otherwise. + */ +DUK_INTERNAL duk_bool_t duk_hobject_enumerator_next(duk_hthread *thr, duk_bool_t get_value) { + duk_hobject *e; + duk_hobject *enum_target; + duk_hstring *res = NULL; + duk_uint_fast32_t idx; + duk_bool_t check_existence; + + DUK_ASSERT(thr != NULL); + + /* [... enum] */ + + e = duk_require_hobject(thr, -1); + + /* XXX use get tval ptr, more efficient */ + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_INT_NEXT); + idx = (duk_uint_fast32_t) duk_require_uint(thr, -1); + duk_pop(thr); + DUK_DDD(DUK_DDDPRINT("enumeration: index is: %ld", (long) idx)); + + /* Enumeration keys are checked against the enumeration target (to see + * that they still exist). In the proxy enumeration case _Target will + * be the proxy, and checking key existence against the proxy is not + * required (or sensible, as the keys may be fully virtual). + */ + duk_xget_owndataprop_stridx_short(thr, -1, DUK_STRIDX_INT_TARGET); + enum_target = duk_require_hobject(thr, -1); + DUK_ASSERT(enum_target != NULL); +#if defined(DUK_USE_ES6_PROXY) + check_existence = (!DUK_HOBJECT_IS_PROXY(enum_target)); +#else + check_existence = 1; +#endif + duk_pop(thr); /* still reachable */ + + DUK_DDD(DUK_DDDPRINT("getting next enum value, enum_target=%!iO, enumerator=%!iT", + (duk_heaphdr *) enum_target, (duk_tval *) duk_get_tval(thr, -1))); + + /* no array part */ + for (;;) { + duk_hstring *k; + + if (idx >= DUK_HOBJECT_GET_ENEXT(e)) { + DUK_DDD(DUK_DDDPRINT("enumeration: ran out of elements")); + break; + } + + /* we know these because enum objects are internally created */ + k = DUK_HOBJECT_E_GET_KEY(thr->heap, e, idx); + DUK_ASSERT(k != NULL); + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, e, idx)); + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(&DUK_HOBJECT_E_GET_VALUE(thr->heap, e, idx).v)); + + idx++; + + /* recheck that the property still exists */ + if (check_existence && !duk_hobject_hasprop_raw(thr, enum_target, k)) { + DUK_DDD(DUK_DDDPRINT("property deleted during enumeration, skip")); + continue; + } + + DUK_DDD(DUK_DDDPRINT("enumeration: found element, key: %!O", (duk_heaphdr *) k)); + res = k; + break; + } + + DUK_DDD(DUK_DDDPRINT("enumeration: updating next index to %ld", (long) idx)); + + duk_push_u32(thr, (duk_uint32_t) idx); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_INT_NEXT); + + /* [... enum] */ + + if (res) { + duk_push_hstring(thr, res); + if (get_value) { + duk_push_hobject(thr, enum_target); + duk_dup_m2(thr); /* -> [... enum key enum_target key] */ + duk_get_prop(thr, -2); /* -> [... enum key enum_target val] */ + duk_remove_m2(thr); /* -> [... enum key val] */ + duk_remove(thr, -3); /* -> [... key val] */ + } else { + duk_remove_m2(thr); /* -> [... key] */ + } + return 1; + } else { + duk_pop(thr); /* -> [...] */ + return 0; + } +} + +/* + * Get enumerated keys in an ECMAScript array. Matches Object.keys() behavior + * described in E5 Section 15.2.3.14. + */ + +DUK_INTERNAL duk_ret_t duk_hobject_get_enumerated_keys(duk_hthread *thr, duk_small_uint_t enum_flags) { + duk_hobject *e; + duk_hstring **keys; + duk_tval *tv; + duk_uint_fast32_t count; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(duk_get_hobject(thr, -1) != NULL); + + /* Create a temporary enumerator to get the (non-duplicated) key list; + * the enumerator state is initialized without being needed, but that + * has little impact. + */ + + duk_hobject_enumerator_create(thr, enum_flags); + e = duk_known_hobject(thr, -1); + + /* [enum_target enum res] */ + + /* Create dense result array to exact size. */ + DUK_ASSERT(DUK_HOBJECT_GET_ENEXT(e) >= DUK__ENUM_START_INDEX); + count = (duk_uint32_t) (DUK_HOBJECT_GET_ENEXT(e) - DUK__ENUM_START_INDEX); + + /* XXX: uninit would be OK */ + tv = duk_push_harray_with_size_outptr(thr, (duk_uint32_t) count); + DUK_ASSERT(count == 0 || tv != NULL); + DUK_ASSERT(!duk_is_bare_object(thr, -1)); + + /* Fill result array, no side effects. */ + + keys = DUK_HOBJECT_E_GET_KEY_BASE(thr->heap, e); + keys += DUK__ENUM_START_INDEX; + + while (count-- > 0) { + duk_hstring *k; + + k = *keys++; + DUK_ASSERT(k != NULL); /* enumerator must have no keys deleted */ + + DUK_TVAL_SET_STRING(tv, k); + tv++; + DUK_HSTRING_INCREF(thr, k); + } + + /* [enum_target enum res] */ + duk_remove_m2(thr); + + /* [enum_target res] */ + + return 1; /* return 1 to allow callers to tail call */ +} + +/* automatic undefs */ +#undef DUK__ENUM_START_INDEX +#line 1 "duk_hobject_misc.c" +/* + * Misc support functions + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL duk_bool_t duk_hobject_prototype_chain_contains(duk_hthread *thr, duk_hobject *h, duk_hobject *p, duk_bool_t ignore_loop) { + duk_uint_t sanity; + + DUK_ASSERT(thr != NULL); + + /* False if the object is NULL or the prototype 'p' is NULL. + * In particular, false if both are NULL (don't compare equal). + */ + if (h == NULL || p == NULL) { + return 0; + } + + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + if (h == p) { + return 1; + } + + if (sanity-- == 0) { + if (ignore_loop) { + break; + } else { + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + } + } + h = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h); + } while (h); + + return 0; +} + +DUK_INTERNAL void duk_hobject_set_prototype_updref(duk_hthread *thr, duk_hobject *h, duk_hobject *p) { +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_hobject *tmp; + + DUK_ASSERT(h); + tmp = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, h, p); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, p); /* avoid problems if p == h->prototype */ + DUK_HOBJECT_DECREF_ALLOWNULL(thr, tmp); +#else + DUK_ASSERT(h); + DUK_UNREF(thr); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, h, p); +#endif +} +#line 1 "duk_hobject_pc2line.c" +/* + * Helpers for creating and querying pc2line debug data, which + * converts a bytecode program counter to a source line number. + * + * The run-time pc2line data is bit-packed, and documented in: + * + * doc/function-objects.rst + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_PC2LINE) + +/* Generate pc2line data for an instruction sequence, leaving a buffer on stack top. */ +DUK_INTERNAL void duk_hobject_pc2line_pack(duk_hthread *thr, duk_compiler_instr *instrs, duk_uint_fast32_t length) { + duk_hbuffer_dynamic *h_buf; + duk_bitencoder_ctx be_ctx_alloc; + duk_bitencoder_ctx *be_ctx = &be_ctx_alloc; + duk_uint32_t *hdr; + duk_size_t new_size; + duk_uint_fast32_t num_header_entries; + duk_uint_fast32_t curr_offset; + duk_int_fast32_t curr_line, next_line, diff_line; + duk_uint_fast32_t curr_pc; + duk_uint_fast32_t hdr_index; + + DUK_ASSERT(length <= DUK_COMPILER_MAX_BYTECODE_LENGTH); + + num_header_entries = (length + DUK_PC2LINE_SKIP - 1) / DUK_PC2LINE_SKIP; + curr_offset = (duk_uint_fast32_t) (sizeof(duk_uint32_t) + num_header_entries * sizeof(duk_uint32_t) * 2); + + duk_push_dynamic_buffer(thr, (duk_size_t) curr_offset); + h_buf = (duk_hbuffer_dynamic *) duk_known_hbuffer(thr, -1); + DUK_ASSERT(DUK_HBUFFER_HAS_DYNAMIC(h_buf) && !DUK_HBUFFER_HAS_EXTERNAL(h_buf)); + + hdr = (duk_uint32_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, h_buf); + DUK_ASSERT(hdr != NULL); + hdr[0] = (duk_uint32_t) length; /* valid pc range is [0, length[ */ + + curr_pc = 0U; + while (curr_pc < length) { + new_size = (duk_size_t) (curr_offset + DUK_PC2LINE_MAX_DIFF_LENGTH); + duk_hbuffer_resize(thr, h_buf, new_size); + + hdr = (duk_uint32_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, h_buf); + DUK_ASSERT(hdr != NULL); + DUK_ASSERT(curr_pc < length); + hdr_index = 1 + (curr_pc / DUK_PC2LINE_SKIP) * 2; + curr_line = (duk_int_fast32_t) instrs[curr_pc].line; + hdr[hdr_index + 0] = (duk_uint32_t) curr_line; + hdr[hdr_index + 1] = (duk_uint32_t) curr_offset; + +#if 0 + DUK_DDD(DUK_DDDPRINT("hdr[%ld]: pc=%ld line=%ld offset=%ld", + (long) (curr_pc / DUK_PC2LINE_SKIP), + (long) curr_pc, + (long) hdr[hdr_index + 0], + (long) hdr[hdr_index + 1])); +#endif + + duk_memzero(be_ctx, sizeof(*be_ctx)); + be_ctx->data = ((duk_uint8_t *) hdr) + curr_offset; + be_ctx->length = (duk_size_t) DUK_PC2LINE_MAX_DIFF_LENGTH; + + for (;;) { + curr_pc++; + if ( ((curr_pc % DUK_PC2LINE_SKIP) == 0) || /* end of diff run */ + (curr_pc >= length) ) { /* end of bytecode */ + break; + } + DUK_ASSERT(curr_pc < length); + next_line = (duk_int32_t) instrs[curr_pc].line; + diff_line = next_line - curr_line; + +#if 0 + DUK_DDD(DUK_DDDPRINT("curr_line=%ld, next_line=%ld -> diff_line=%ld", + (long) curr_line, (long) next_line, (long) diff_line)); +#endif + + if (diff_line == 0) { + /* 0 */ + duk_be_encode(be_ctx, 0, 1); + } else if (diff_line >= 1 && diff_line <= 4) { + /* 1 0 <2 bits> */ + duk_be_encode(be_ctx, (duk_uint32_t) ((0x02 << 2) + (diff_line - 1)), 4); + } else if (diff_line >= -0x80 && diff_line <= 0x7f) { + /* 1 1 0 <8 bits> */ + DUK_ASSERT(diff_line + 0x80 >= 0 && diff_line + 0x80 <= 0xff); + duk_be_encode(be_ctx, (duk_uint32_t) ((0x06 << 8) + (diff_line + 0x80)), 11); + } else { + /* 1 1 1 <32 bits> + * Encode in two parts to avoid bitencode 24-bit limitation + */ + duk_be_encode(be_ctx, (duk_uint32_t) ((0x07 << 16) + ((next_line >> 16) & 0xffff)), 19); + duk_be_encode(be_ctx, (duk_uint32_t) (next_line & 0xffff), 16); + } + + curr_line = next_line; + } + + duk_be_finish(be_ctx); + DUK_ASSERT(!be_ctx->truncated); + + /* be_ctx->offset == length of encoded bitstream */ + curr_offset += (duk_uint_fast32_t) be_ctx->offset; + } + + /* compact */ + new_size = (duk_size_t) curr_offset; + duk_hbuffer_resize(thr, h_buf, new_size); + + (void) duk_to_fixed_buffer(thr, -1, NULL); + + DUK_DDD(DUK_DDDPRINT("final pc2line data: pc_limit=%ld, length=%ld, %lf bits/opcode --> %!ixT", + (long) length, (long) new_size, (double) new_size * 8.0 / (double) length, + (duk_tval *) duk_get_tval(thr, -1))); +} + +/* PC is unsigned. If caller does PC arithmetic and gets a negative result, + * it will map to a large PC which is out of bounds and causes a zero to be + * returned. + */ +DUK_LOCAL duk_uint_fast32_t duk__hobject_pc2line_query_raw(duk_hthread *thr, duk_hbuffer_fixed *buf, duk_uint_fast32_t pc) { + duk_bitdecoder_ctx bd_ctx_alloc; + duk_bitdecoder_ctx *bd_ctx = &bd_ctx_alloc; + duk_uint32_t *hdr; + duk_uint_fast32_t start_offset; + duk_uint_fast32_t pc_limit; + duk_uint_fast32_t hdr_index; + duk_uint_fast32_t pc_base; + duk_uint_fast32_t n; + duk_uint_fast32_t curr_line; + + DUK_ASSERT(buf != NULL); + DUK_ASSERT(!DUK_HBUFFER_HAS_DYNAMIC((duk_hbuffer *) buf) && !DUK_HBUFFER_HAS_EXTERNAL((duk_hbuffer *) buf)); + DUK_UNREF(thr); + + /* + * Use the index in the header to find the right starting point + */ + + hdr_index = pc / DUK_PC2LINE_SKIP; + pc_base = hdr_index * DUK_PC2LINE_SKIP; + n = pc - pc_base; + + if (DUK_HBUFFER_FIXED_GET_SIZE(buf) <= sizeof(duk_uint32_t)) { + DUK_DD(DUK_DDPRINT("pc2line lookup failed: buffer is smaller than minimal header")); + goto pc2line_error; + } + + hdr = (duk_uint32_t *) (void *) DUK_HBUFFER_FIXED_GET_DATA_PTR(thr->heap, buf); + pc_limit = hdr[0]; + if (pc >= pc_limit) { + /* Note: pc is unsigned and cannot be negative */ + DUK_DD(DUK_DDPRINT("pc2line lookup failed: pc out of bounds (pc=%ld, limit=%ld)", + (long) pc, (long) pc_limit)); + goto pc2line_error; + } + + curr_line = hdr[1 + hdr_index * 2]; + start_offset = hdr[1 + hdr_index * 2 + 1]; + if ((duk_size_t) start_offset > DUK_HBUFFER_FIXED_GET_SIZE(buf)) { + DUK_DD(DUK_DDPRINT("pc2line lookup failed: start_offset out of bounds (start_offset=%ld, buffer_size=%ld)", + (long) start_offset, (long) DUK_HBUFFER_GET_SIZE((duk_hbuffer *) buf))); + goto pc2line_error; + } + + /* + * Iterate the bitstream (line diffs) until PC is reached + */ + + duk_memzero(bd_ctx, sizeof(*bd_ctx)); + bd_ctx->data = ((duk_uint8_t *) hdr) + start_offset; + bd_ctx->length = (duk_size_t) (DUK_HBUFFER_FIXED_GET_SIZE(buf) - start_offset); + +#if 0 + DUK_DDD(DUK_DDDPRINT("pc2line lookup: pc=%ld -> hdr_index=%ld, pc_base=%ld, n=%ld, start_offset=%ld", + (long) pc, (long) hdr_index, (long) pc_base, (long) n, (long) start_offset)); +#endif + + while (n > 0) { +#if 0 + DUK_DDD(DUK_DDDPRINT("lookup: n=%ld, curr_line=%ld", (long) n, (long) curr_line)); +#endif + + if (duk_bd_decode_flag(bd_ctx)) { + if (duk_bd_decode_flag(bd_ctx)) { + if (duk_bd_decode_flag(bd_ctx)) { + /* 1 1 1 <32 bits> */ + duk_uint_fast32_t t; + t = duk_bd_decode(bd_ctx, 16); /* workaround: max nbits = 24 now */ + t = (t << 16) + duk_bd_decode(bd_ctx, 16); + curr_line = t; + } else { + /* 1 1 0 <8 bits> */ + duk_uint_fast32_t t; + t = duk_bd_decode(bd_ctx, 8); + curr_line = curr_line + t - 0x80; + } + } else { + /* 1 0 <2 bits> */ + duk_uint_fast32_t t; + t = duk_bd_decode(bd_ctx, 2); + curr_line = curr_line + t + 1; + } + } else { + /* 0: no change */ + } + + n--; + } + + DUK_DDD(DUK_DDDPRINT("pc2line lookup result: pc %ld -> line %ld", (long) pc, (long) curr_line)); + return curr_line; + + pc2line_error: + DUK_D(DUK_DPRINT("pc2line conversion failed for pc=%ld", (long) pc)); + return 0; +} + +DUK_INTERNAL duk_uint_fast32_t duk_hobject_pc2line_query(duk_hthread *thr, duk_idx_t idx_func, duk_uint_fast32_t pc) { + duk_hbuffer_fixed *pc2line; + duk_uint_fast32_t line; + + /* XXX: now that pc2line is used by the debugger quite heavily in + * checked execution, this should be optimized to avoid value stack + * and perhaps also implement some form of pc2line caching (see + * future work in debugger.rst). + */ + + duk_xget_owndataprop_stridx_short(thr, idx_func, DUK_STRIDX_INT_PC2LINE); + pc2line = (duk_hbuffer_fixed *) (void *) duk_get_hbuffer(thr, -1); + if (pc2line != NULL) { + DUK_ASSERT(!DUK_HBUFFER_HAS_DYNAMIC((duk_hbuffer *) pc2line) && !DUK_HBUFFER_HAS_EXTERNAL((duk_hbuffer *) pc2line)); + line = duk__hobject_pc2line_query_raw(thr, pc2line, (duk_uint_fast32_t) pc); + } else { + line = 0; + } + duk_pop(thr); + + return line; +} + +#endif /* DUK_USE_PC2LINE */ +#line 1 "duk_hobject_props.c" +/* + * duk_hobject property access functionality. + * + * This is very central functionality for size, performance, and compliance. + * It is also rather intricate; see hobject-algorithms.rst for discussion on + * the algorithms and memory-management.rst for discussion on refcounts and + * side effect issues. + * + * Notes: + * + * - It might be tempting to assert "refcount nonzero" for objects + * being operated on, but that's not always correct: objects with + * a zero refcount may be operated on by the refcount implementation + * (finalization) for instance. Hence, no refcount assertions are made. + * + * - Many operations (memory allocation, identifier operations, etc) + * may cause arbitrary side effects (e.g. through GC and finalization). + * These side effects may invalidate duk_tval pointers which point to + * areas subject to reallocation (like value stack). Heap objects + * themselves have stable pointers. Holding heap object pointers or + * duk_tval copies is not problematic with respect to side effects; + * care must be taken when holding and using argument duk_tval pointers. + * + * - If a finalizer is executed, it may operate on the the same object + * we're currently dealing with. For instance, the finalizer might + * delete a certain property which has already been looked up and + * confirmed to exist. Ideally finalizers would be disabled if GC + * happens during property access. At the moment property table realloc + * disables finalizers, and all DECREFs may cause arbitrary changes so + * handle DECREF carefully. + * + * - The order of operations for a DECREF matters. When DECREF is executed, + * the entire object graph must be consistent; note that a refzero may + * lead to a mark-and-sweep through a refcount finalizer. Use NORZ macros + * and an explicit DUK_REFZERO_CHECK_xxx() if achieving correct order is hard. + */ + +/* + * XXX: array indices are mostly typed as duk_uint32_t here; duk_uarridx_t + * might be more appropriate. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Local defines + */ + +#define DUK__NO_ARRAY_INDEX DUK_HSTRING_NO_ARRAY_INDEX + +/* Marker values for hash part. */ +#define DUK__HASH_UNUSED DUK_HOBJECT_HASHIDX_UNUSED +#define DUK__HASH_DELETED DUK_HOBJECT_HASHIDX_DELETED + +/* Valstack space that suffices for all local calls, excluding any recursion + * into ECMAScript or Duktape/C calls (Proxy, getters, etc). + */ +#define DUK__VALSTACK_SPACE 10 + +/* Valstack space allocated especially for proxy lookup which does a + * recursive property lookup. + */ +#define DUK__VALSTACK_PROXY_LOOKUP 20 + +/* + * Local prototypes + */ + +DUK_LOCAL_DECL duk_bool_t duk__check_arguments_map_for_get(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *temp_desc); +DUK_LOCAL_DECL void duk__check_arguments_map_for_put(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *temp_desc, duk_bool_t throw_flag); +DUK_LOCAL_DECL void duk__check_arguments_map_for_delete(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *temp_desc); + +DUK_LOCAL_DECL duk_bool_t duk__handle_put_array_length_smaller(duk_hthread *thr, duk_hobject *obj, duk_uint32_t old_len, duk_uint32_t new_len, duk_bool_t force_flag, duk_uint32_t *out_result_len); +DUK_LOCAL_DECL duk_bool_t duk__handle_put_array_length(duk_hthread *thr, duk_hobject *obj); + +DUK_LOCAL_DECL duk_bool_t duk__get_propdesc(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *out_desc, duk_small_uint_t flags); +DUK_LOCAL_DECL duk_bool_t duk__get_own_propdesc_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_uint32_t arr_idx, duk_propdesc *out_desc, duk_small_uint_t flags); + +DUK_LOCAL_DECL void duk__abandon_array_part(duk_hthread *thr, duk_hobject *obj); +DUK_LOCAL_DECL void duk__grow_props_for_array_item(duk_hthread *thr, duk_hobject *obj, duk_uint32_t highest_arr_idx); + +/* + * Misc helpers + */ + +/* Convert a duk_tval number (caller checks) to a 32-bit index. Returns + * DUK__NO_ARRAY_INDEX if the number is not whole or not a valid array + * index. + */ +/* XXX: for fastints, could use a variant which assumes a double duk_tval + * (and doesn't need to check for fastint again). + */ +DUK_LOCAL duk_uint32_t duk__tval_number_to_arr_idx(duk_tval *tv) { + duk_double_t dbl; + duk_uint32_t idx; + + DUK_ASSERT(tv != NULL); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + + /* -0 is accepted here as index 0 because ToString(-0) == "0" which is + * in canonical form and thus an array index. + */ + dbl = DUK_TVAL_GET_NUMBER(tv); + idx = (duk_uint32_t) dbl; + if (duk_double_equals((duk_double_t) idx, dbl)) { + /* Is whole and within 32 bit range. If the value happens to be 0xFFFFFFFF, + * it's not a valid array index but will then match DUK__NO_ARRAY_INDEX. + */ + return idx; + } + return DUK__NO_ARRAY_INDEX; +} + +#if defined(DUK_USE_FASTINT) +/* Convert a duk_tval fastint (caller checks) to a 32-bit index. */ +DUK_LOCAL duk_uint32_t duk__tval_fastint_to_arr_idx(duk_tval *tv) { + duk_int64_t t; + + DUK_ASSERT(tv != NULL); + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv)); + + t = DUK_TVAL_GET_FASTINT(tv); + if (((duk_uint64_t) t & ~DUK_U64_CONSTANT(0xffffffff)) != 0) { + /* Catches >0x100000000 and negative values. */ + return DUK__NO_ARRAY_INDEX; + } + + /* If the value happens to be 0xFFFFFFFF, it's not a valid array index + * but will then match DUK__NO_ARRAY_INDEX. + */ + return (duk_uint32_t) t; +} +#endif /* DUK_USE_FASTINT */ + +/* Convert a duk_tval on the value stack (in a trusted index we don't validate) + * to a string or symbol using ES2015 ToPropertyKey(): + * http://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey. + * + * Also check if it's a valid array index and return that (or DUK__NO_ARRAY_INDEX + * if not). + */ +DUK_LOCAL duk_uint32_t duk__to_property_key(duk_hthread *thr, duk_idx_t idx, duk_hstring **out_h) { + duk_uint32_t arr_idx; + duk_hstring *h; + duk_tval *tv_dst; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(out_h != NULL); + DUK_ASSERT(duk_is_valid_index(thr, idx)); + DUK_ASSERT(idx < 0); + + /* XXX: The revised ES2015 ToPropertyKey() handling (ES5.1 was just + * ToString()) involves a ToPrimitive(), a symbol check, and finally + * a ToString(). Figure out the best way to have a good fast path + * but still be compliant and share code. + */ + + tv_dst = DUK_GET_TVAL_NEGIDX(thr, idx); /* intentionally unvalidated */ + if (DUK_TVAL_IS_STRING(tv_dst)) { + /* Most important path: strings and plain symbols are used as + * is. For symbols the array index check below is unnecessary + * (they're never valid array indices) but checking that the + * string is a symbol would make the plain string path slower + * unnecessarily. + */ + h = DUK_TVAL_GET_STRING(tv_dst); + } else { + h = duk_to_property_key_hstring(thr, idx); + } + DUK_ASSERT(h != NULL); + *out_h = h; + + arr_idx = DUK_HSTRING_GET_ARRIDX_FAST(h); + return arr_idx; +} + +DUK_LOCAL duk_uint32_t duk__push_tval_to_property_key(duk_hthread *thr, duk_tval *tv_key, duk_hstring **out_h) { + duk_push_tval(thr, tv_key); /* XXX: could use an unsafe push here */ + return duk__to_property_key(thr, -1, out_h); +} + +/* String is an own (virtual) property of a plain buffer. */ +DUK_LOCAL duk_bool_t duk__key_is_plain_buf_ownprop(duk_hthread *thr, duk_hbuffer *buf, duk_hstring *key, duk_uint32_t arr_idx) { + DUK_UNREF(thr); + + /* Virtual index properties. Checking explicitly for + * 'arr_idx != DUK__NO_ARRAY_INDEX' is not necessary + * because DUK__NO_ARRAY_INDEXi is always larger than + * maximum allowed buffer size. + */ + DUK_ASSERT(DUK__NO_ARRAY_INDEX >= DUK_HBUFFER_GET_SIZE(buf)); + if (arr_idx < DUK_HBUFFER_GET_SIZE(buf)) { + return 1; + } + + /* Other virtual properties. */ + return (key == DUK_HTHREAD_STRING_LENGTH(thr)); +} + +/* + * Helpers for managing property storage size + */ + +/* Get default hash part size for a certain entry part size. */ +#if defined(DUK_USE_HOBJECT_HASH_PART) +DUK_LOCAL duk_uint32_t duk__get_default_h_size(duk_uint32_t e_size) { + DUK_ASSERT(e_size <= DUK_HOBJECT_MAX_PROPERTIES); + + if (e_size >= DUK_USE_HOBJECT_HASH_PROP_LIMIT) { + duk_uint32_t res; + duk_uint32_t tmp; + + /* Hash size should be 2^N where N is chosen so that 2^N is + * larger than e_size. Extra shifting is used to ensure hash + * is relatively sparse. + */ + tmp = e_size; + res = 2; /* Result will be 2 ** (N + 1). */ + while (tmp >= 0x40) { + tmp >>= 6; + res <<= 6; + } + while (tmp != 0) { + tmp >>= 1; + res <<= 1; + } + DUK_ASSERT((DUK_HOBJECT_MAX_PROPERTIES << 2U) > DUK_HOBJECT_MAX_PROPERTIES); /* Won't wrap, even shifted by 2. */ + DUK_ASSERT(res > e_size); + return res; + } else { + return 0; + } +} +#endif /* USE_PROP_HASH_PART */ + +/* Get minimum entry part growth for a certain size. */ +DUK_LOCAL duk_uint32_t duk__get_min_grow_e(duk_uint32_t e_size) { + duk_uint32_t res; + + res = (e_size + DUK_USE_HOBJECT_ENTRY_MINGROW_ADD) / DUK_USE_HOBJECT_ENTRY_MINGROW_DIVISOR; + DUK_ASSERT(res >= 1); /* important for callers */ + return res; +} + +/* Get minimum array part growth for a certain size. */ +DUK_LOCAL duk_uint32_t duk__get_min_grow_a(duk_uint32_t a_size) { + duk_uint32_t res; + + res = (a_size + DUK_USE_HOBJECT_ARRAY_MINGROW_ADD) / DUK_USE_HOBJECT_ARRAY_MINGROW_DIVISOR; + DUK_ASSERT(res >= 1); /* important for callers */ + return res; +} + +/* Count actually used entry part entries (non-NULL keys). */ +DUK_LOCAL duk_uint32_t duk__count_used_e_keys(duk_hthread *thr, duk_hobject *obj) { + duk_uint_fast32_t i; + duk_uint_fast32_t n = 0; + duk_hstring **e; + + DUK_ASSERT(obj != NULL); + DUK_UNREF(thr); + + e = DUK_HOBJECT_E_GET_KEY_BASE(thr->heap, obj); + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + if (*e++) { + n++; + } + } + return (duk_uint32_t) n; +} + +/* Count actually used array part entries and array minimum size. + * NOTE: 'out_min_size' can be computed much faster by starting from the + * end and breaking out early when finding first used entry, but this is + * not needed now. + */ +DUK_LOCAL void duk__compute_a_stats(duk_hthread *thr, duk_hobject *obj, duk_uint32_t *out_used, duk_uint32_t *out_min_size) { + duk_uint_fast32_t i; + duk_uint_fast32_t used = 0; + duk_uint_fast32_t highest_idx = (duk_uint_fast32_t) -1; /* see below */ + duk_tval *a; + + DUK_ASSERT(obj != NULL); + DUK_ASSERT(out_used != NULL); + DUK_ASSERT(out_min_size != NULL); + DUK_UNREF(thr); + + a = DUK_HOBJECT_A_GET_BASE(thr->heap, obj); + for (i = 0; i < DUK_HOBJECT_GET_ASIZE(obj); i++) { + duk_tval *tv = a++; + if (!DUK_TVAL_IS_UNUSED(tv)) { + used++; + highest_idx = i; + } + } + + /* Initial value for highest_idx is -1 coerced to unsigned. This + * is a bit odd, but (highest_idx + 1) will then wrap to 0 below + * for out_min_size as intended. + */ + + *out_used = (duk_uint32_t) used; + *out_min_size = (duk_uint32_t) (highest_idx + 1); /* 0 if no used entries */ +} + +/* Check array density and indicate whether or not the array part should be abandoned. */ +DUK_LOCAL duk_bool_t duk__abandon_array_density_check(duk_uint32_t a_used, duk_uint32_t a_size) { + /* + * Array abandon check; abandon if: + * + * new_used / new_size < limit + * new_used < limit * new_size || limit is 3 bits fixed point + * new_used < limit' / 8 * new_size || *8 + * 8*new_used < limit' * new_size || :8 + * new_used < limit' * (new_size / 8) + * + * Here, new_used = a_used, new_size = a_size. + * + * Note: some callers use approximate values for a_used and/or a_size + * (e.g. dropping a '+1' term). This doesn't affect the usefulness + * of the check, but may confuse debugging. + */ + + return (a_used < DUK_USE_HOBJECT_ARRAY_ABANDON_LIMIT * (a_size >> 3)); +} + +/* Fast check for extending array: check whether or not a slow density check is required. */ +DUK_LOCAL duk_bool_t duk__abandon_array_slow_check_required(duk_uint32_t arr_idx, duk_uint32_t old_size) { + duk_uint32_t new_size_min; + + /* + * In a fast check we assume old_size equals old_used (i.e., existing + * array is fully dense). + * + * Slow check if: + * + * (new_size - old_size) / old_size > limit + * new_size - old_size > limit * old_size + * new_size > (1 + limit) * old_size || limit' is 3 bits fixed point + * new_size > (1 + (limit' / 8)) * old_size || * 8 + * 8 * new_size > (8 + limit') * old_size || : 8 + * new_size > (8 + limit') * (old_size / 8) + * new_size > limit'' * (old_size / 8) || limit'' = 9 -> max 25% increase + * arr_idx + 1 > limit'' * (old_size / 8) + * + * This check doesn't work well for small values, so old_size is rounded + * up for the check (and the '+ 1' of arr_idx can be ignored in practice): + * + * arr_idx > limit'' * ((old_size + 7) / 8) + */ + + new_size_min = arr_idx + 1; + return (new_size_min >= DUK_USE_HOBJECT_ARRAY_ABANDON_MINSIZE) && + (arr_idx > DUK_USE_HOBJECT_ARRAY_FAST_RESIZE_LIMIT * ((old_size + 7) >> 3)); +} + +DUK_LOCAL duk_bool_t duk__abandon_array_check(duk_hthread *thr, duk_uint32_t arr_idx, duk_hobject *obj) { + duk_uint32_t min_size; + duk_uint32_t old_used; + duk_uint32_t old_size; + + if (!duk__abandon_array_slow_check_required(arr_idx, DUK_HOBJECT_GET_ASIZE(obj))) { + DUK_DDD(DUK_DDDPRINT("=> fast resize is OK")); + return 0; + } + + duk__compute_a_stats(thr, obj, &old_used, &old_size); + + DUK_DDD(DUK_DDDPRINT("abandon check, array stats: old_used=%ld, old_size=%ld, arr_idx=%ld", + (long) old_used, (long) old_size, (long) arr_idx)); + + min_size = arr_idx + 1; +#if defined(DUK_USE_OBJSIZES16) + if (min_size > DUK_UINT16_MAX) { + goto do_abandon; + } +#endif + DUK_UNREF(min_size); + + /* Note: intentionally use approximations to shave a few instructions: + * a_used = old_used (accurate: old_used + 1) + * a_size = arr_idx (accurate: arr_idx + 1) + */ + if (duk__abandon_array_density_check(old_used, arr_idx)) { + DUK_DD(DUK_DDPRINT("write to new array entry beyond current length, " + "decided to abandon array part (would become too sparse)")); + + /* Abandoning requires a props allocation resize and + * 'rechecks' the valstack, invalidating any existing + * valstack value pointers. + */ + goto do_abandon; + } + + DUK_DDD(DUK_DDDPRINT("=> decided to keep array part")); + return 0; + + do_abandon: + duk__abandon_array_part(thr, obj); + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(obj)); + return 1; +} + +DUK_LOCAL duk_tval *duk__obtain_arridx_slot_slowpath(duk_hthread *thr, duk_uint32_t arr_idx, duk_hobject *obj) { + /* + * Array needs to grow, but we don't want it becoming too sparse. + * If it were to become sparse, abandon array part, moving all + * array entries into the entries part (for good). + * + * Since we don't keep track of actual density (used vs. size) of + * the array part, we need to estimate somehow. The check is made + * in two parts: + * + * - Check whether the resize need is small compared to the + * current size (relatively); if so, resize without further + * checking (essentially we assume that the original part is + * "dense" so that the result would be dense enough). + * + * - Otherwise, compute the resize using an actual density + * measurement based on counting the used array entries. + */ + + DUK_DDD(DUK_DDDPRINT("write to new array requires array resize, decide whether to do a " + "fast resize without abandon check (arr_idx=%ld, old_size=%ld)", + (long) arr_idx, (long) DUK_HOBJECT_GET_ASIZE(obj))); + + if (DUK_UNLIKELY(duk__abandon_array_check(thr, arr_idx, obj) != 0)) { + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(obj)); + return NULL; + } + + DUK_DD(DUK_DDPRINT("write to new array entry beyond current length, " + "decided to extend current allocation")); + + /* In principle it's possible to run out of memory extending the + * array but with the allocation going through if we were to abandon + * the array part and try again. In practice this should be rare + * because abandoned arrays have a higher per-entry footprint. + */ + + duk__grow_props_for_array_item(thr, obj, arr_idx); + + DUK_ASSERT(DUK_HOBJECT_HAS_ARRAY_PART(obj)); + DUK_ASSERT(arr_idx < DUK_HOBJECT_GET_ASIZE(obj)); + return DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, arr_idx); +} + +DUK_LOCAL DUK_INLINE duk_tval *duk__obtain_arridx_slot(duk_hthread *thr, duk_uint32_t arr_idx, duk_hobject *obj) { + if (DUK_LIKELY(arr_idx < DUK_HOBJECT_GET_ASIZE(obj))) { + return DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, arr_idx); + } else { + return duk__obtain_arridx_slot_slowpath(thr, arr_idx, obj); + } +} + +/* + * Proxy helpers + */ + +#if defined(DUK_USE_ES6_PROXY) +DUK_INTERNAL duk_bool_t duk_hobject_proxy_check(duk_hobject *obj, duk_hobject **out_target, duk_hobject **out_handler) { + duk_hproxy *h_proxy; + + DUK_ASSERT(obj != NULL); + DUK_ASSERT(out_target != NULL); + DUK_ASSERT(out_handler != NULL); + + /* Caller doesn't need to check exotic proxy behavior (but does so for + * some fast paths). + */ + if (DUK_LIKELY(!DUK_HOBJECT_IS_PROXY(obj))) { + return 0; + } + h_proxy = (duk_hproxy *) obj; + DUK_HPROXY_ASSERT_VALID(h_proxy); + + DUK_ASSERT(h_proxy->handler != NULL); + DUK_ASSERT(h_proxy->target != NULL); + *out_handler = h_proxy->handler; + *out_target = h_proxy->target; + + return 1; +} +#endif /* DUK_USE_ES6_PROXY */ + +/* Get Proxy target object. If the argument is not a Proxy, return it as is. + * If a Proxy is revoked, an error is thrown. + */ +#if defined(DUK_USE_ES6_PROXY) +DUK_INTERNAL duk_hobject *duk_hobject_resolve_proxy_target(duk_hobject *obj) { + DUK_ASSERT(obj != NULL); + + /* Resolve Proxy targets until Proxy chain ends. No explicit check for + * a Proxy loop: user code cannot create such a loop (it would only be + * possible by editing duk_hproxy references directly). + */ + + while (DUK_HOBJECT_IS_PROXY(obj)) { + duk_hproxy *h_proxy; + + h_proxy = (duk_hproxy *) obj; + DUK_HPROXY_ASSERT_VALID(h_proxy); + obj = h_proxy->target; + DUK_ASSERT(obj != NULL); + } + + DUK_ASSERT(obj != NULL); + return obj; +} +#endif /* DUK_USE_ES6_PROXY */ + +#if defined(DUK_USE_ES6_PROXY) +DUK_LOCAL duk_bool_t duk__proxy_check_prop(duk_hthread *thr, duk_hobject *obj, duk_small_uint_t stridx_trap, duk_tval *tv_key, duk_hobject **out_target) { + duk_hobject *h_handler; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(tv_key != NULL); + DUK_ASSERT(out_target != NULL); + + if (!duk_hobject_proxy_check(obj, out_target, &h_handler)) { + return 0; + } + DUK_ASSERT(*out_target != NULL); + DUK_ASSERT(h_handler != NULL); + + /* XXX: At the moment Duktape accesses internal keys like _Finalizer using a + * normal property set/get which would allow a proxy handler to interfere with + * such behavior and to get access to internal key strings. This is not a problem + * as such because internal key strings can be created in other ways too (e.g. + * through buffers). The best fix is to change Duktape internal lookups to + * skip proxy behavior. Until that, internal property accesses bypass the + * proxy and are applied to the target (as if the handler did not exist). + * This has some side effects, see test-bi-proxy-internal-keys.js. + */ + + if (DUK_TVAL_IS_STRING(tv_key)) { + duk_hstring *h_key = (duk_hstring *) DUK_TVAL_GET_STRING(tv_key); + DUK_ASSERT(h_key != NULL); + if (DUK_HSTRING_HAS_HIDDEN(h_key)) { + /* Symbol accesses must go through proxy lookup in ES2015. + * Hidden symbols behave like Duktape 1.x internal keys + * and currently won't. + */ + DUK_DDD(DUK_DDDPRINT("hidden key, skip proxy handler and apply to target")); + return 0; + } + } + + /* The handler is looked up with a normal property lookup; it may be an + * accessor or the handler object itself may be a proxy object. If the + * handler is a proxy, we need to extend the valstack as we make a + * recursive proxy check without a function call in between (in fact + * there is no limit to the potential recursion here). + * + * (For sanity, proxy creation rejects another proxy object as either + * the handler or the target at the moment so recursive proxy cases + * are not realized now.) + */ + + /* XXX: C recursion limit if proxies are allowed as handler/target values */ + + duk_require_stack(thr, DUK__VALSTACK_PROXY_LOOKUP); + duk_push_hobject(thr, h_handler); + if (duk_get_prop_stridx_short(thr, -1, stridx_trap)) { + /* -> [ ... handler trap ] */ + duk_insert(thr, -2); /* -> [ ... trap handler ] */ + + /* stack prepped for func call: [ ... trap handler ] */ + return 1; + } else { + duk_pop_2_unsafe(thr); + return 0; + } +} +#endif /* DUK_USE_ES6_PROXY */ + +/* + * Reallocate property allocation, moving properties to the new allocation. + * + * Includes key compaction, rehashing, and can also optionally abandon + * the array part, 'migrating' array entries into the beginning of the + * new entry part. + * + * There is no support for in-place reallocation or just compacting keys + * without resizing the property allocation. This is intentional to keep + * code size minimal, but would be useful future work. + * + * The implementation is relatively straightforward, except for the array + * abandonment process. Array abandonment requires that new string keys + * are interned, which may trigger GC. All keys interned so far must be + * reachable for GC at all times and correctly refcounted for; valstack is + * used for that now. + * + * Also, a GC triggered during this reallocation process must not interfere + * with the object being resized. This is currently controlled by preventing + * finalizers (as they may affect ANY object) and object compaction in + * mark-and-sweep. It would suffice to protect only this particular object + * from compaction, however. DECREF refzero cascades are side effect free + * and OK. + * + * Note: because we need to potentially resize the valstack (as part + * of abandoning the array part), any tval pointers to the valstack + * will become invalid after this call. + */ + +DUK_INTERNAL void duk_hobject_realloc_props(duk_hthread *thr, + duk_hobject *obj, + duk_uint32_t new_e_size, + duk_uint32_t new_a_size, + duk_uint32_t new_h_size, + duk_bool_t abandon_array) { + duk_small_uint_t prev_ms_base_flags; + duk_uint32_t new_alloc_size; + duk_uint32_t new_e_size_adjusted; + duk_uint8_t *new_p; + duk_hstring **new_e_k; + duk_propvalue *new_e_pv; + duk_uint8_t *new_e_f; + duk_tval *new_a; + duk_uint32_t *new_h; + duk_uint32_t new_e_next; + duk_uint_fast32_t i; + duk_size_t array_copy_size; +#if defined(DUK_USE_ASSERTIONS) + duk_bool_t prev_error_not_allowed; +#endif + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(!abandon_array || new_a_size == 0); /* if abandon_array, new_a_size must be 0 */ + DUK_ASSERT(DUK_HOBJECT_GET_PROPS(thr->heap, obj) != NULL || (DUK_HOBJECT_GET_ESIZE(obj) == 0 && DUK_HOBJECT_GET_ASIZE(obj) == 0)); + DUK_ASSERT(new_h_size == 0 || new_h_size >= new_e_size); /* required to guarantee success of rehashing, + * intentionally use unadjusted new_e_size + */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_STATS_INC(thr->heap, stats_object_realloc_props); + + /* + * Pre resize assertions. + */ + +#if defined(DUK_USE_ASSERTIONS) + /* XXX: pre-checks (such as no duplicate keys) */ +#endif + + /* + * For property layout 1, tweak e_size to ensure that the whole entry + * part (key + val + flags) is a suitable multiple for alignment + * (platform specific). + * + * Property layout 2 does not require this tweaking and is preferred + * on low RAM platforms requiring alignment. + */ + +#if defined(DUK_USE_HOBJECT_LAYOUT_2) || defined(DUK_USE_HOBJECT_LAYOUT_3) + DUK_DDD(DUK_DDDPRINT("using layout 2 or 3, no need to pad e_size: %ld", (long) new_e_size)); + new_e_size_adjusted = new_e_size; +#elif defined(DUK_USE_HOBJECT_LAYOUT_1) && (DUK_HOBJECT_ALIGN_TARGET == 1) + DUK_DDD(DUK_DDDPRINT("using layout 1, but no need to pad e_size: %ld", (long) new_e_size)); + new_e_size_adjusted = new_e_size; +#elif defined(DUK_USE_HOBJECT_LAYOUT_1) && ((DUK_HOBJECT_ALIGN_TARGET == 4) || (DUK_HOBJECT_ALIGN_TARGET == 8)) + new_e_size_adjusted = (new_e_size + (duk_uint32_t) DUK_HOBJECT_ALIGN_TARGET - 1U) & + (~((duk_uint32_t) DUK_HOBJECT_ALIGN_TARGET - 1U)); + DUK_DDD(DUK_DDDPRINT("using layout 1, and alignment target is %ld, adjusted e_size: %ld -> %ld", + (long) DUK_HOBJECT_ALIGN_TARGET, (long) new_e_size, (long) new_e_size_adjusted)); + DUK_ASSERT(new_e_size_adjusted >= new_e_size); +#else +#error invalid hobject layout defines +#endif + + /* + * Debug logging after adjustment. + */ + + DUK_DDD(DUK_DDDPRINT("attempt to resize hobject %p props (%ld -> %ld bytes), from {p=%p,e_size=%ld,e_next=%ld,a_size=%ld,h_size=%ld} to " + "{e_size=%ld,a_size=%ld,h_size=%ld}, abandon_array=%ld, unadjusted new_e_size=%ld", + (void *) obj, + (long) DUK_HOBJECT_P_COMPUTE_SIZE(DUK_HOBJECT_GET_ESIZE(obj), + DUK_HOBJECT_GET_ASIZE(obj), + DUK_HOBJECT_GET_HSIZE(obj)), + (long) DUK_HOBJECT_P_COMPUTE_SIZE(new_e_size_adjusted, new_a_size, new_h_size), + (void *) DUK_HOBJECT_GET_PROPS(thr->heap, obj), + (long) DUK_HOBJECT_GET_ESIZE(obj), + (long) DUK_HOBJECT_GET_ENEXT(obj), + (long) DUK_HOBJECT_GET_ASIZE(obj), + (long) DUK_HOBJECT_GET_HSIZE(obj), + (long) new_e_size_adjusted, + (long) new_a_size, + (long) new_h_size, + (long) abandon_array, + (long) new_e_size)); + + /* + * Property count check. This is the only point where we ensure that + * we don't get more (allocated) property space that we can handle. + * There aren't hard limits as such, but some algorithms may fail + * if we get too close to the 4G property limit. + * + * Since this works based on allocation size (not actually used size), + * the limit is a bit approximate but good enough in practice. + */ + + if (new_e_size_adjusted + new_a_size > DUK_HOBJECT_MAX_PROPERTIES) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return;); + } +#if defined(DUK_USE_OBJSIZES16) + if (new_e_size_adjusted > DUK_UINT16_MAX || new_a_size > DUK_UINT16_MAX) { + /* If caller gave us sizes larger than what we can store, + * fail memory safely with an internal error rather than + * truncating the sizes. + */ + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); + } +#endif + + /* + * Compute new alloc size and alloc new area. + * + * The new area is not tracked in the heap at all, so it's critical + * we get to free/keep it in a controlled manner. + */ + +#if defined(DUK_USE_ASSERTIONS) + /* Whole path must be error throw free, but we may be called from + * within error handling so can't assert for error_not_allowed == 0. + */ + prev_error_not_allowed = thr->heap->error_not_allowed; + thr->heap->error_not_allowed = 1; +#endif + prev_ms_base_flags = thr->heap->ms_base_flags; + thr->heap->ms_base_flags |= + DUK_MS_FLAG_NO_OBJECT_COMPACTION; /* Avoid attempt to compact the current object (all objects really). */ + thr->heap->pf_prevent_count++; /* Avoid finalizers. */ + DUK_ASSERT(thr->heap->pf_prevent_count != 0); /* Wrap. */ + + new_alloc_size = DUK_HOBJECT_P_COMPUTE_SIZE(new_e_size_adjusted, new_a_size, new_h_size); + DUK_DDD(DUK_DDDPRINT("new hobject allocation size is %ld", (long) new_alloc_size)); + if (new_alloc_size == 0) { + DUK_ASSERT(new_e_size_adjusted == 0); + DUK_ASSERT(new_a_size == 0); + DUK_ASSERT(new_h_size == 0); + new_p = NULL; + } else { + /* Alloc may trigger mark-and-sweep but no compaction, and + * cannot throw. + */ +#if 0 /* XXX: inject test */ + if (1) { + new_p = NULL; + goto alloc_failed; + } +#endif + new_p = (duk_uint8_t *) DUK_ALLOC(thr->heap, new_alloc_size); + if (new_p == NULL) { + /* NULL always indicates alloc failure because + * new_alloc_size > 0. + */ + goto alloc_failed; + } + } + + /* Set up pointers to the new property area: this is hidden behind a macro + * because it is memory layout specific. + */ + DUK_HOBJECT_P_SET_REALLOC_PTRS(new_p, new_e_k, new_e_pv, new_e_f, new_a, new_h, + new_e_size_adjusted, new_a_size, new_h_size); + DUK_UNREF(new_h); /* happens when hash part dropped */ + new_e_next = 0; + + /* if new_p == NULL, all of these pointers are NULL */ + DUK_ASSERT((new_p != NULL) || + (new_e_k == NULL && new_e_pv == NULL && new_e_f == NULL && + new_a == NULL && new_h == NULL)); + + DUK_DDD(DUK_DDDPRINT("new alloc size %ld, new_e_k=%p, new_e_pv=%p, new_e_f=%p, new_a=%p, new_h=%p", + (long) new_alloc_size, (void *) new_e_k, (void *) new_e_pv, (void *) new_e_f, + (void *) new_a, (void *) new_h)); + + /* + * Migrate array part to start of entries if requested. + * + * Note: from an enumeration perspective the order of entry keys matters. + * Array keys should appear wherever they appeared before the array abandon + * operation. (This no longer matters much because keys are ES2015 sorted.) + */ + + if (abandon_array) { + /* Assuming new_a_size == 0, and that entry part contains + * no conflicting keys, refcounts do not need to be adjusted for + * the values, as they remain exactly the same. + * + * The keys, however, need to be interned, incref'd, and be + * reachable for GC. Any intern attempt may trigger a GC and + * claim any non-reachable strings, so every key must be reachable + * at all times. Refcounts must be correct to satisfy refcount + * assertions. + * + * A longjmp must not occur here, as the new_p allocation would + * leak. Refcounts would come out correctly as the interned + * strings are valstack tracked. + */ + DUK_ASSERT(new_a_size == 0); + + DUK_STATS_INC(thr->heap, stats_object_abandon_array); + + for (i = 0; i < DUK_HOBJECT_GET_ASIZE(obj); i++) { + duk_tval *tv1; + duk_tval *tv2; + duk_hstring *key; + + DUK_ASSERT(DUK_HOBJECT_GET_PROPS(thr->heap, obj) != NULL); + + tv1 = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, i); + if (DUK_TVAL_IS_UNUSED(tv1)) { + continue; + } + + DUK_ASSERT(new_p != NULL && new_e_k != NULL && + new_e_pv != NULL && new_e_f != NULL); + + /* + * Intern key via the valstack to ensure reachability behaves + * properly. We must avoid longjmp's here so use non-checked + * primitives. + * + * Note: duk_check_stack() potentially reallocs the valstack, + * invalidating any duk_tval pointers to valstack. Callers + * must be careful. + */ + +#if 0 /* XXX: inject test */ + if (1) { + goto abandon_error; + } +#endif + /* Never shrinks; auto-adds DUK_VALSTACK_INTERNAL_EXTRA, which + * is generous. + */ + if (!duk_check_stack(thr, 1)) { + goto abandon_error; + } + DUK_ASSERT_VALSTACK_SPACE(thr, 1); + key = duk_heap_strtable_intern_u32(thr->heap, (duk_uint32_t) i); + if (key == NULL) { + goto abandon_error; + } + duk_push_hstring(thr, key); /* keep key reachable for GC etc; guaranteed not to fail */ + + /* Key is now reachable in the valstack, don't INCREF + * the new allocation yet (we'll steal the refcounts + * from the value stack once all keys are done). + */ + + new_e_k[new_e_next] = key; + tv2 = &new_e_pv[new_e_next].v; /* array entries are all plain values */ + DUK_TVAL_SET_TVAL(tv2, tv1); + new_e_f[new_e_next] = DUK_PROPDESC_FLAG_WRITABLE | + DUK_PROPDESC_FLAG_ENUMERABLE | + DUK_PROPDESC_FLAG_CONFIGURABLE; + new_e_next++; + + /* Note: new_e_next matches pushed temp key count, and nothing can + * fail above between the push and this point. + */ + } + + /* Steal refcounts from value stack. */ + DUK_DDD(DUK_DDDPRINT("abandon array: pop %ld key temps from valstack", (long) new_e_next)); + duk_pop_n_nodecref_unsafe(thr, (duk_idx_t) new_e_next); + } + + /* + * Copy keys and values in the entry part (compacting them at the same time). + */ + + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + duk_hstring *key; + + DUK_ASSERT(DUK_HOBJECT_GET_PROPS(thr->heap, obj) != NULL); + + key = DUK_HOBJECT_E_GET_KEY(thr->heap, obj, i); + if (key == NULL) { + continue; + } + + DUK_ASSERT(new_p != NULL && new_e_k != NULL && + new_e_pv != NULL && new_e_f != NULL); + + new_e_k[new_e_next] = key; + new_e_pv[new_e_next] = DUK_HOBJECT_E_GET_VALUE(thr->heap, obj, i); + new_e_f[new_e_next] = DUK_HOBJECT_E_GET_FLAGS(thr->heap, obj, i); + new_e_next++; + } + /* the entries [new_e_next, new_e_size_adjusted[ are left uninitialized on purpose (ok, not gc reachable) */ + + /* + * Copy array elements to new array part. If the new array part is + * larger, initialize the unused entries as UNUSED because they are + * GC reachable. + */ + +#if defined(DUK_USE_ASSERTIONS) + /* Caller must have decref'd values above new_a_size (if that is necessary). */ + if (!abandon_array) { + for (i = new_a_size; i < DUK_HOBJECT_GET_ASIZE(obj); i++) { + duk_tval *tv; + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, i); + DUK_ASSERT(DUK_TVAL_IS_UNUSED(tv)); + } + } +#endif + if (new_a_size > DUK_HOBJECT_GET_ASIZE(obj)) { + array_copy_size = sizeof(duk_tval) * DUK_HOBJECT_GET_ASIZE(obj); + } else { + array_copy_size = sizeof(duk_tval) * new_a_size; + } + + DUK_ASSERT(new_a != NULL || array_copy_size == 0U); + DUK_ASSERT(DUK_HOBJECT_GET_PROPS(thr->heap, obj) != NULL || array_copy_size == 0U); + DUK_ASSERT(DUK_HOBJECT_GET_ASIZE(obj) > 0 || array_copy_size == 0U); + duk_memcpy_unsafe((void *) new_a, + (const void *) DUK_HOBJECT_A_GET_BASE(thr->heap, obj), + array_copy_size); + + for (i = DUK_HOBJECT_GET_ASIZE(obj); i < new_a_size; i++) { + duk_tval *tv = &new_a[i]; + DUK_TVAL_SET_UNUSED(tv); + } + + /* + * Rebuild the hash part always from scratch (guaranteed to finish + * as long as caller gave consistent parameters). + * + * Any resize of hash part requires rehashing. In addition, by rehashing + * get rid of any elements marked deleted (DUK__HASH_DELETED) which is critical + * to ensuring the hash part never fills up. + */ + +#if defined(DUK_USE_HOBJECT_HASH_PART) + if (new_h_size == 0) { + DUK_DDD(DUK_DDDPRINT("no hash part, no rehash")); + } else { + duk_uint32_t mask; + + DUK_ASSERT(new_h != NULL); + + /* fill new_h with u32 0xff = UNUSED */ + DUK_ASSERT(new_h_size > 0); + duk_memset(new_h, 0xff, sizeof(duk_uint32_t) * new_h_size); + + DUK_ASSERT(new_e_next <= new_h_size); /* equality not actually possible */ + + mask = new_h_size - 1; + for (i = 0; i < new_e_next; i++) { + duk_hstring *key = new_e_k[i]; + duk_uint32_t j, step; + + DUK_ASSERT(key != NULL); + j = DUK_HSTRING_GET_HASH(key) & mask; + step = 1; /* Cache friendly but clustering prone. */ + + for (;;) { + DUK_ASSERT(new_h[j] != DUK__HASH_DELETED); /* should never happen */ + if (new_h[j] == DUK__HASH_UNUSED) { + DUK_DDD(DUK_DDDPRINT("rebuild hit %ld -> %ld", (long) j, (long) i)); + new_h[j] = (duk_uint32_t) i; + break; + } + DUK_DDD(DUK_DDDPRINT("rebuild miss %ld, step %ld", (long) j, (long) step)); + j = (j + step) & mask; + + /* Guaranteed to finish (hash is larger than #props). */ + } + } + } +#endif /* DUK_USE_HOBJECT_HASH_PART */ + + /* + * Nice debug log. + */ + + DUK_DD(DUK_DDPRINT("resized hobject %p props (%ld -> %ld bytes), from {p=%p,e_size=%ld,e_next=%ld,a_size=%ld,h_size=%ld} to " + "{p=%p,e_size=%ld,e_next=%ld,a_size=%ld,h_size=%ld}, abandon_array=%ld, unadjusted new_e_size=%ld", + (void *) obj, + (long) DUK_HOBJECT_P_COMPUTE_SIZE(DUK_HOBJECT_GET_ESIZE(obj), + DUK_HOBJECT_GET_ASIZE(obj), + DUK_HOBJECT_GET_HSIZE(obj)), + (long) new_alloc_size, + (void *) DUK_HOBJECT_GET_PROPS(thr->heap, obj), + (long) DUK_HOBJECT_GET_ESIZE(obj), + (long) DUK_HOBJECT_GET_ENEXT(obj), + (long) DUK_HOBJECT_GET_ASIZE(obj), + (long) DUK_HOBJECT_GET_HSIZE(obj), + (void *) new_p, + (long) new_e_size_adjusted, + (long) new_e_next, + (long) new_a_size, + (long) new_h_size, + (long) abandon_array, + (long) new_e_size)); + + /* + * All done, switch properties ('p') allocation to new one. + */ + + DUK_FREE_CHECKED(thr, DUK_HOBJECT_GET_PROPS(thr->heap, obj)); /* NULL obj->p is OK */ + DUK_HOBJECT_SET_PROPS(thr->heap, obj, new_p); + DUK_HOBJECT_SET_ESIZE(obj, new_e_size_adjusted); + DUK_HOBJECT_SET_ENEXT(obj, new_e_next); + DUK_HOBJECT_SET_ASIZE(obj, new_a_size); + DUK_HOBJECT_SET_HSIZE(obj, new_h_size); + + /* Clear array part flag only after switching. */ + if (abandon_array) { + DUK_HOBJECT_CLEAR_ARRAY_PART(obj); + } + + DUK_DDD(DUK_DDDPRINT("resize result: %!O", (duk_heaphdr *) obj)); + + DUK_ASSERT(thr->heap->pf_prevent_count > 0); + thr->heap->pf_prevent_count--; + thr->heap->ms_base_flags = prev_ms_base_flags; +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(thr->heap->error_not_allowed == 1); + thr->heap->error_not_allowed = prev_error_not_allowed; +#endif + + /* + * Post resize assertions. + */ + +#if defined(DUK_USE_ASSERTIONS) + /* XXX: post-checks (such as no duplicate keys) */ +#endif + return; + + /* + * Abandon array failed. We don't need to DECREF anything + * because the references in the new allocation are not + * INCREF'd until abandon is complete. The string interned + * keys are on the value stack and are handled normally by + * unwind. + */ + + abandon_error: + alloc_failed: + DUK_D(DUK_DPRINT("object property table resize failed")); + + DUK_FREE_CHECKED(thr, new_p); /* OK for NULL. */ + + thr->heap->pf_prevent_count--; + thr->heap->ms_base_flags = prev_ms_base_flags; +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(thr->heap->error_not_allowed == 1); + thr->heap->error_not_allowed = prev_error_not_allowed; +#endif + + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return;); +} + +/* + * Helpers to resize properties allocation on specific needs. + */ + +DUK_INTERNAL void duk_hobject_resize_entrypart(duk_hthread *thr, + duk_hobject *obj, + duk_uint32_t new_e_size) { + duk_uint32_t old_e_size; + duk_uint32_t new_a_size; + duk_uint32_t new_h_size; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + + old_e_size = DUK_HOBJECT_GET_ESIZE(obj); + if (old_e_size > new_e_size) { + new_e_size = old_e_size; + } +#if defined(DUK_USE_HOBJECT_HASH_PART) + new_h_size = duk__get_default_h_size(new_e_size); +#else + new_h_size = 0; +#endif + new_a_size = DUK_HOBJECT_GET_ASIZE(obj); + + duk_hobject_realloc_props(thr, obj, new_e_size, new_a_size, new_h_size, 0); +} + +/* Grow entry part allocation for one additional entry. */ +DUK_LOCAL void duk__grow_props_for_new_entry_item(duk_hthread *thr, duk_hobject *obj) { + duk_uint32_t old_e_used; /* actually used, non-NULL entries */ + duk_uint32_t new_e_size_minimum; + duk_uint32_t new_e_size; + duk_uint32_t new_a_size; + duk_uint32_t new_h_size; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + + /* Duktape 0.11.0 and prior tried to optimize the resize by not + * counting the number of actually used keys prior to the resize. + * This worked mostly well but also caused weird leak-like behavior + * as in: test-bug-object-prop-alloc-unbounded.js. So, now we count + * the keys explicitly to compute the new entry part size. + */ + + old_e_used = duk__count_used_e_keys(thr, obj); + new_e_size_minimum = old_e_used + 1; + new_e_size = old_e_used + duk__get_min_grow_e(old_e_used); +#if defined(DUK_USE_HOBJECT_HASH_PART) + new_h_size = duk__get_default_h_size(new_e_size); +#else + new_h_size = 0; +#endif + new_a_size = DUK_HOBJECT_GET_ASIZE(obj); + +#if defined(DUK_USE_OBJSIZES16) + if (new_e_size > DUK_UINT16_MAX) { + new_e_size = DUK_UINT16_MAX; + } + if (new_h_size > DUK_UINT16_MAX) { + new_h_size = DUK_UINT16_MAX; + } + if (new_a_size > DUK_UINT16_MAX) { + new_a_size = DUK_UINT16_MAX; + } +#endif + DUK_ASSERT(new_h_size == 0 || new_h_size >= new_e_size); + + if (!(new_e_size >= new_e_size_minimum)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return;); + } + + duk_hobject_realloc_props(thr, obj, new_e_size, new_a_size, new_h_size, 0); +} + +/* Grow array part for a new highest array index. */ +DUK_LOCAL void duk__grow_props_for_array_item(duk_hthread *thr, duk_hobject *obj, duk_uint32_t highest_arr_idx) { + duk_uint32_t new_e_size; + duk_uint32_t new_a_size; + duk_uint32_t new_a_size_minimum; + duk_uint32_t new_h_size; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(highest_arr_idx >= DUK_HOBJECT_GET_ASIZE(obj)); + + new_e_size = DUK_HOBJECT_GET_ESIZE(obj); + new_h_size = DUK_HOBJECT_GET_HSIZE(obj); + new_a_size_minimum = highest_arr_idx + 1; + new_a_size = highest_arr_idx + duk__get_min_grow_a(highest_arr_idx); + DUK_ASSERT(new_a_size >= highest_arr_idx + 1); /* duk__get_min_grow_a() is always >= 1 */ + +#if defined(DUK_USE_OBJSIZES16) + if (new_e_size > DUK_UINT16_MAX) { + new_e_size = DUK_UINT16_MAX; + } + if (new_h_size > DUK_UINT16_MAX) { + new_h_size = DUK_UINT16_MAX; + } + if (new_a_size > DUK_UINT16_MAX) { + new_a_size = DUK_UINT16_MAX; + } +#endif + + if (!(new_a_size >= new_a_size_minimum)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return;); + } + + duk_hobject_realloc_props(thr, obj, new_e_size, new_a_size, new_h_size, 0); +} + +/* Abandon array part, moving array entries into entries part. + * This requires a props resize, which is a heavy operation. + * We also compact the entries part while we're at it, although + * this is not strictly required. + */ +DUK_LOCAL void duk__abandon_array_part(duk_hthread *thr, duk_hobject *obj) { + duk_uint32_t new_e_size_minimum; + duk_uint32_t new_e_size; + duk_uint32_t new_a_size; + duk_uint32_t new_h_size; + duk_uint32_t e_used; /* actually used, non-NULL keys */ + duk_uint32_t a_used; + duk_uint32_t a_size; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + + e_used = duk__count_used_e_keys(thr, obj); + duk__compute_a_stats(thr, obj, &a_used, &a_size); + + /* + * Must guarantee all actually used array entries will fit into + * new entry part. Add one growth step to ensure we don't run out + * of space right away. + */ + + new_e_size_minimum = e_used + a_used; + new_e_size = new_e_size_minimum + duk__get_min_grow_e(new_e_size_minimum); + new_a_size = 0; +#if defined(DUK_USE_HOBJECT_HASH_PART) + new_h_size = duk__get_default_h_size(new_e_size); +#else + new_h_size = 0; +#endif + +#if defined(DUK_USE_OBJSIZES16) + if (new_e_size > DUK_UINT16_MAX) { + new_e_size = DUK_UINT16_MAX; + } + if (new_h_size > DUK_UINT16_MAX) { + new_h_size = DUK_UINT16_MAX; + } + if (new_a_size > DUK_UINT16_MAX) { + new_a_size = DUK_UINT16_MAX; + } +#endif + + if (!(new_e_size >= new_e_size_minimum)) { + DUK_ERROR_ALLOC_FAILED(thr); + DUK_WO_NORETURN(return;); + } + + DUK_DD(DUK_DDPRINT("abandon array part for hobject %p, " + "array stats before: e_used=%ld, a_used=%ld, a_size=%ld; " + "resize to e_size=%ld, a_size=%ld, h_size=%ld", + (void *) obj, (long) e_used, (long) a_used, (long) a_size, + (long) new_e_size, (long) new_a_size, (long) new_h_size)); + + duk_hobject_realloc_props(thr, obj, new_e_size, new_a_size, new_h_size, 1); +} + +/* + * Compact an object. Minimizes allocation size for objects which are + * not likely to be extended. This is useful for internal and non- + * extensible objects, but can also be called for non-extensible objects. + * May abandon the array part if it is computed to be too sparse. + * + * This call is relatively expensive, as it needs to scan both the + * entries and the array part. + * + * The call may fail due to allocation error. + */ + +DUK_INTERNAL void duk_hobject_compact_props(duk_hthread *thr, duk_hobject *obj) { + duk_uint32_t e_size; /* currently used -> new size */ + duk_uint32_t a_size; /* currently required */ + duk_uint32_t a_used; /* actually used */ + duk_uint32_t h_size; + duk_bool_t abandon_array; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + +#if defined(DUK_USE_ROM_OBJECTS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_DD(DUK_DDPRINT("ignore attempt to compact a rom object")); + return; + } +#endif + + e_size = duk__count_used_e_keys(thr, obj); + duk__compute_a_stats(thr, obj, &a_used, &a_size); + + DUK_DD(DUK_DDPRINT("compacting hobject, used e keys %ld, used a keys %ld, min a size %ld, " + "resized array density would be: %ld/%ld = %lf", + (long) e_size, (long) a_used, (long) a_size, + (long) a_used, (long) a_size, + (double) a_used / (double) a_size)); + + if (duk__abandon_array_density_check(a_used, a_size)) { + DUK_DD(DUK_DDPRINT("decided to abandon array during compaction, a_used=%ld, a_size=%ld", + (long) a_used, (long) a_size)); + abandon_array = 1; + e_size += a_used; + a_size = 0; + } else { + DUK_DD(DUK_DDPRINT("decided to keep array during compaction")); + abandon_array = 0; + } + +#if defined(DUK_USE_HOBJECT_HASH_PART) + if (e_size >= DUK_USE_HOBJECT_HASH_PROP_LIMIT) { + h_size = duk__get_default_h_size(e_size); + } else { + h_size = 0; + } +#else + h_size = 0; +#endif + + DUK_DD(DUK_DDPRINT("compacting hobject -> new e_size %ld, new a_size=%ld, new h_size=%ld, abandon_array=%ld", + (long) e_size, (long) a_size, (long) h_size, (long) abandon_array)); + + duk_hobject_realloc_props(thr, obj, e_size, a_size, h_size, abandon_array); +} + +/* + * Find an existing key from entry part either by linear scan or by + * using the hash index (if it exists). + * + * Sets entry index (and possibly the hash index) to output variables, + * which allows the caller to update the entry and hash entries in-place. + * If entry is not found, both values are set to -1. If entry is found + * but there is no hash part, h_idx is set to -1. + */ + +DUK_INTERNAL duk_bool_t duk_hobject_find_entry(duk_heap *heap, duk_hobject *obj, duk_hstring *key, duk_int_t *e_idx, duk_int_t *h_idx) { + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(e_idx != NULL); + DUK_ASSERT(h_idx != NULL); + DUK_UNREF(heap); + + if (DUK_LIKELY(DUK_HOBJECT_GET_HSIZE(obj) == 0)) + { + /* Linear scan: more likely because most objects are small. + * This is an important fast path. + * + * XXX: this might be worth inlining for property lookups. + */ + duk_uint_fast32_t i; + duk_uint_fast32_t n; + duk_hstring **h_keys_base; + DUK_DDD(DUK_DDDPRINT("duk_hobject_find_entry() using linear scan for lookup")); + + h_keys_base = DUK_HOBJECT_E_GET_KEY_BASE(heap, obj); + n = DUK_HOBJECT_GET_ENEXT(obj); + for (i = 0; i < n; i++) { + if (h_keys_base[i] == key) { + *e_idx = (duk_int_t) i; + *h_idx = -1; + return 1; + } + } + } +#if defined(DUK_USE_HOBJECT_HASH_PART) + else + { + /* hash lookup */ + duk_uint32_t n; + duk_uint32_t i, step; + duk_uint32_t *h_base; + duk_uint32_t mask; + + DUK_DDD(DUK_DDDPRINT("duk_hobject_find_entry() using hash part for lookup")); + + h_base = DUK_HOBJECT_H_GET_BASE(heap, obj); + n = DUK_HOBJECT_GET_HSIZE(obj); + mask = n - 1; + i = DUK_HSTRING_GET_HASH(key) & mask; + step = 1; /* Cache friendly but clustering prone. */ + + for (;;) { + duk_uint32_t t; + + DUK_ASSERT_DISABLE(i >= 0); /* unsigned */ + DUK_ASSERT(i < DUK_HOBJECT_GET_HSIZE(obj)); + t = h_base[i]; + DUK_ASSERT(t == DUK__HASH_UNUSED || t == DUK__HASH_DELETED || + (t < DUK_HOBJECT_GET_ESIZE(obj))); /* t >= 0 always true, unsigned */ + + if (t == DUK__HASH_UNUSED) { + break; + } else if (t == DUK__HASH_DELETED) { + DUK_DDD(DUK_DDDPRINT("lookup miss (deleted) i=%ld, t=%ld", + (long) i, (long) t)); + } else { + DUK_ASSERT(t < DUK_HOBJECT_GET_ESIZE(obj)); + if (DUK_HOBJECT_E_GET_KEY(heap, obj, t) == key) { + DUK_DDD(DUK_DDDPRINT("lookup hit i=%ld, t=%ld -> key %p", + (long) i, (long) t, (void *) key)); + *e_idx = (duk_int_t) t; + *h_idx = (duk_int_t) i; + return 1; + } + DUK_DDD(DUK_DDDPRINT("lookup miss i=%ld, t=%ld", + (long) i, (long) t)); + } + i = (i + step) & mask; + + /* Guaranteed to finish (hash is larger than #props). */ + } + } +#endif /* DUK_USE_HOBJECT_HASH_PART */ + + /* Not found, leave e_idx and h_idx unset. */ + return 0; +} + +/* For internal use: get non-accessor entry value */ +DUK_INTERNAL duk_tval *duk_hobject_find_entry_tval_ptr(duk_heap *heap, duk_hobject *obj, duk_hstring *key) { + duk_int_t e_idx; + duk_int_t h_idx; + + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_UNREF(heap); + + if (duk_hobject_find_entry(heap, obj, key, &e_idx, &h_idx)) { + DUK_ASSERT(e_idx >= 0); + if (!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, obj, e_idx)) { + return DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(heap, obj, e_idx); + } + } + return NULL; +} + +DUK_INTERNAL duk_tval *duk_hobject_find_entry_tval_ptr_stridx(duk_heap *heap, duk_hobject *obj, duk_small_uint_t stridx) { + return duk_hobject_find_entry_tval_ptr(heap, obj, DUK_HEAP_GET_STRING(heap, stridx)); +} + +/* For internal use: get non-accessor entry value and attributes */ +DUK_INTERNAL duk_tval *duk_hobject_find_entry_tval_ptr_and_attrs(duk_heap *heap, duk_hobject *obj, duk_hstring *key, duk_uint_t *out_attrs) { + duk_int_t e_idx; + duk_int_t h_idx; + + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(out_attrs != NULL); + DUK_UNREF(heap); + + if (duk_hobject_find_entry(heap, obj, key, &e_idx, &h_idx)) { + DUK_ASSERT(e_idx >= 0); + if (!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, obj, e_idx)) { + *out_attrs = DUK_HOBJECT_E_GET_FLAGS(heap, obj, e_idx); + return DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(heap, obj, e_idx); + } + } + /* If not found, out_attrs is left unset. */ + return NULL; +} + +/* For internal use: get array part value */ +DUK_INTERNAL duk_tval *duk_hobject_find_array_entry_tval_ptr(duk_heap *heap, duk_hobject *obj, duk_uarridx_t i) { + duk_tval *tv; + + DUK_ASSERT(obj != NULL); + DUK_UNREF(heap); + + if (!DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + return NULL; + } + if (i >= DUK_HOBJECT_GET_ASIZE(obj)) { + return NULL; + } + tv = DUK_HOBJECT_A_GET_VALUE_PTR(heap, obj, i); + return tv; +} + +/* + * Allocate and initialize a new entry, resizing the properties allocation + * if necessary. Returns entry index (e_idx) or throws an error if alloc fails. + * + * Sets the key of the entry (increasing the key's refcount), and updates + * the hash part if it exists. Caller must set value and flags, and update + * the entry value refcount. A decref for the previous value is not necessary. + */ + +DUK_LOCAL duk_int_t duk__hobject_alloc_entry_checked(duk_hthread *thr, duk_hobject *obj, duk_hstring *key) { + duk_uint32_t idx; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_ENEXT(obj) <= DUK_HOBJECT_GET_ESIZE(obj)); + +#if defined(DUK_USE_ASSERTIONS) + /* key must not already exist in entry part */ + { + duk_uint_fast32_t i; + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + DUK_ASSERT(DUK_HOBJECT_E_GET_KEY(thr->heap, obj, i) != key); + } + } +#endif + + if (DUK_HOBJECT_GET_ENEXT(obj) >= DUK_HOBJECT_GET_ESIZE(obj)) { + /* only need to guarantee 1 more slot, but allocation growth is in chunks */ + DUK_DDD(DUK_DDDPRINT("entry part full, allocate space for one more entry")); + duk__grow_props_for_new_entry_item(thr, obj); + } + DUK_ASSERT(DUK_HOBJECT_GET_ENEXT(obj) < DUK_HOBJECT_GET_ESIZE(obj)); + idx = DUK_HOBJECT_POSTINC_ENEXT(obj); + + /* previous value is assumed to be garbage, so don't touch it */ + DUK_HOBJECT_E_SET_KEY(thr->heap, obj, idx, key); + DUK_HSTRING_INCREF(thr, key); + +#if defined(DUK_USE_HOBJECT_HASH_PART) + if (DUK_UNLIKELY(DUK_HOBJECT_GET_HSIZE(obj) > 0)) { + duk_uint32_t n, mask; + duk_uint32_t i, step; + duk_uint32_t *h_base = DUK_HOBJECT_H_GET_BASE(thr->heap, obj); + + n = DUK_HOBJECT_GET_HSIZE(obj); + mask = n - 1; + i = DUK_HSTRING_GET_HASH(key) & mask; + step = 1; /* Cache friendly but clustering prone. */ + + for (;;) { + duk_uint32_t t = h_base[i]; + if (t == DUK__HASH_UNUSED || t == DUK__HASH_DELETED) { + DUK_DDD(DUK_DDDPRINT("duk__hobject_alloc_entry_checked() inserted key into hash part, %ld -> %ld", + (long) i, (long) idx)); + DUK_ASSERT_DISABLE(i >= 0); /* unsigned */ + DUK_ASSERT(i < DUK_HOBJECT_GET_HSIZE(obj)); + DUK_ASSERT_DISABLE(idx >= 0); + DUK_ASSERT(idx < DUK_HOBJECT_GET_ESIZE(obj)); + h_base[i] = idx; + break; + } + DUK_DDD(DUK_DDDPRINT("duk__hobject_alloc_entry_checked() miss %ld", (long) i)); + i = (i + step) & mask; + + /* Guaranteed to finish (hash is larger than #props). */ + } + } +#endif /* DUK_USE_HOBJECT_HASH_PART */ + + /* Note: we could return the hash index here too, but it's not + * needed right now. + */ + + DUK_ASSERT_DISABLE(idx >= 0); + DUK_ASSERT(idx < DUK_HOBJECT_GET_ESIZE(obj)); + DUK_ASSERT(idx < DUK_HOBJECT_GET_ENEXT(obj)); + return (duk_int_t) idx; +} + +/* + * Object internal value + * + * Returned value is guaranteed to be reachable / incref'd, caller does not need + * to incref OR decref. No proxies or accessors are invoked, no prototype walk. + */ + +DUK_INTERNAL duk_tval *duk_hobject_get_internal_value_tval_ptr(duk_heap *heap, duk_hobject *obj) { + return duk_hobject_find_entry_tval_ptr_stridx(heap, obj, DUK_STRIDX_INT_VALUE); +} + +DUK_LOCAL duk_heaphdr *duk_hobject_get_internal_value_heaphdr(duk_heap *heap, duk_hobject *obj) { + duk_tval *tv; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(obj != NULL); + + tv = duk_hobject_get_internal_value_tval_ptr(heap, obj); + if (tv != NULL) { + duk_heaphdr *h = DUK_TVAL_GET_HEAPHDR(tv); + DUK_ASSERT(h != NULL); + return h; + } + + return NULL; +} + +DUK_INTERNAL duk_hstring *duk_hobject_get_internal_value_string(duk_heap *heap, duk_hobject *obj) { + duk_hstring *h; + + h = (duk_hstring *) duk_hobject_get_internal_value_heaphdr(heap, obj); + if (h != NULL) { + DUK_ASSERT(DUK_HEAPHDR_IS_STRING((duk_heaphdr *) h)); + } + return h; +} + +DUK_LOCAL duk_hobject *duk__hobject_get_entry_object_stridx(duk_heap *heap, duk_hobject *obj, duk_small_uint_t stridx) { + duk_tval *tv; + duk_hobject *h; + + tv = duk_hobject_find_entry_tval_ptr_stridx(heap, obj, stridx); + if (tv != NULL && DUK_TVAL_IS_OBJECT(tv)) { + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + return h; + } + return NULL; +} + +DUK_INTERNAL duk_harray *duk_hobject_get_formals(duk_hthread *thr, duk_hobject *obj) { + duk_harray *h; + + h = (duk_harray *) duk__hobject_get_entry_object_stridx(thr->heap, obj, DUK_STRIDX_INT_FORMALS); + if (h != NULL) { + DUK_ASSERT(DUK_HOBJECT_IS_ARRAY((duk_hobject *) h)); + DUK_ASSERT(h->length <= DUK_HOBJECT_GET_ASIZE((duk_hobject *) h)); + } + return h; +} + +DUK_INTERNAL duk_hobject *duk_hobject_get_varmap(duk_hthread *thr, duk_hobject *obj) { + duk_hobject *h; + + h = duk__hobject_get_entry_object_stridx(thr->heap, obj, DUK_STRIDX_INT_VARMAP); + return h; +} + +/* + * Arguments handling helpers (argument map mainly). + * + * An arguments object has exotic behavior for some numeric indices. + * Accesses may translate to identifier operations which may have + * arbitrary side effects (potentially invalidating any duk_tval + * pointers). + */ + +/* Lookup 'key' from arguments internal 'map', perform a variable lookup + * if mapped, and leave the result on top of stack (and return non-zero). + * Used in E5 Section 10.6 algorithms [[Get]] and [[GetOwnProperty]]. + */ +DUK_LOCAL +duk_bool_t duk__lookup_arguments_map(duk_hthread *thr, + duk_hobject *obj, + duk_hstring *key, + duk_propdesc *temp_desc, + duk_hobject **out_map, + duk_hobject **out_varenv) { + duk_hobject *map; + duk_hobject *varenv; + duk_bool_t rc; + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_DDD(DUK_DDDPRINT("arguments map lookup: thr=%p, obj=%p, key=%p, temp_desc=%p " + "(obj -> %!O, key -> %!O)", + (void *) thr, (void *) obj, (void *) key, (void *) temp_desc, + (duk_heaphdr *) obj, (duk_heaphdr *) key)); + + if (!duk_hobject_get_own_propdesc(thr, obj, DUK_HTHREAD_STRING_INT_MAP(thr), temp_desc, DUK_GETDESC_FLAG_PUSH_VALUE)) { + DUK_DDD(DUK_DDDPRINT("-> no 'map'")); + return 0; + } + + map = duk_require_hobject(thr, -1); + DUK_ASSERT(map != NULL); + duk_pop_unsafe(thr); /* map is reachable through obj */ + + if (!duk_hobject_get_own_propdesc(thr, map, key, temp_desc, DUK_GETDESC_FLAG_PUSH_VALUE)) { + DUK_DDD(DUK_DDDPRINT("-> 'map' exists, but key not in map")); + return 0; + } + + /* [... varname] */ + DUK_DDD(DUK_DDDPRINT("-> 'map' exists, and contains key, key is mapped to argument/variable binding %!T", + (duk_tval *) duk_get_tval(thr, -1))); + DUK_ASSERT(duk_is_string(thr, -1)); /* guaranteed when building arguments */ + + /* get varenv for varname (callee's declarative lexical environment) */ + rc = duk_hobject_get_own_propdesc(thr, obj, DUK_HTHREAD_STRING_INT_VARENV(thr), temp_desc, DUK_GETDESC_FLAG_PUSH_VALUE); + DUK_UNREF(rc); + DUK_ASSERT(rc != 0); /* arguments MUST have an initialized lexical environment reference */ + varenv = duk_require_hobject(thr, -1); + DUK_ASSERT(varenv != NULL); + duk_pop_unsafe(thr); /* varenv remains reachable through 'obj' */ + + DUK_DDD(DUK_DDDPRINT("arguments varenv is: %!dO", (duk_heaphdr *) varenv)); + + /* success: leave varname in stack */ + *out_map = map; + *out_varenv = varenv; + return 1; /* [... varname] */ +} + +/* Lookup 'key' from arguments internal 'map', and leave replacement value + * on stack top if mapped (and return non-zero). + * Used in E5 Section 10.6 algorithm for [[GetOwnProperty]] (used by [[Get]]). + */ +DUK_LOCAL duk_bool_t duk__check_arguments_map_for_get(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *temp_desc) { + duk_hobject *map; + duk_hobject *varenv; + duk_hstring *varname; + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + if (!duk__lookup_arguments_map(thr, obj, key, temp_desc, &map, &varenv)) { + DUK_DDD(DUK_DDDPRINT("arguments: key not mapped, no exotic get behavior")); + return 0; + } + + /* [... varname] */ + + varname = duk_require_hstring(thr, -1); + DUK_ASSERT(varname != NULL); + duk_pop_unsafe(thr); /* varname is still reachable */ + + DUK_DDD(DUK_DDDPRINT("arguments object automatic getvar for a bound variable; " + "key=%!O, varname=%!O", + (duk_heaphdr *) key, + (duk_heaphdr *) varname)); + + (void) duk_js_getvar_envrec(thr, varenv, varname, 1 /*throw*/); + + /* [... value this_binding] */ + + duk_pop_unsafe(thr); + + /* leave result on stack top */ + return 1; +} + +/* Lookup 'key' from arguments internal 'map', perform a variable write if mapped. + * Used in E5 Section 10.6 algorithm for [[DefineOwnProperty]] (used by [[Put]]). + * Assumes stack top contains 'put' value (which is NOT popped). + */ +DUK_LOCAL void duk__check_arguments_map_for_put(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *temp_desc, duk_bool_t throw_flag) { + duk_hobject *map; + duk_hobject *varenv; + duk_hstring *varname; + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + if (!duk__lookup_arguments_map(thr, obj, key, temp_desc, &map, &varenv)) { + DUK_DDD(DUK_DDDPRINT("arguments: key not mapped, no exotic put behavior")); + return; + } + + /* [... put_value varname] */ + + varname = duk_require_hstring(thr, -1); + DUK_ASSERT(varname != NULL); + duk_pop_unsafe(thr); /* varname is still reachable */ + + DUK_DDD(DUK_DDDPRINT("arguments object automatic putvar for a bound variable; " + "key=%!O, varname=%!O, value=%!T", + (duk_heaphdr *) key, + (duk_heaphdr *) varname, + (duk_tval *) duk_require_tval(thr, -1))); + + /* [... put_value] */ + + /* + * Note: although arguments object variable mappings are only established + * for non-strict functions (and a call to a non-strict function created + * the arguments object in question), an inner strict function may be doing + * the actual property write. Hence the throw_flag applied here comes from + * the property write call. + */ + + duk_js_putvar_envrec(thr, varenv, varname, duk_require_tval(thr, -1), throw_flag); + + /* [... put_value] */ +} + +/* Lookup 'key' from arguments internal 'map', delete mapping if found. + * Used in E5 Section 10.6 algorithm for [[Delete]]. Note that the + * variable/argument itself (where the map points) is not deleted. + */ +DUK_LOCAL void duk__check_arguments_map_for_delete(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *temp_desc) { + duk_hobject *map; + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + if (!duk_hobject_get_own_propdesc(thr, obj, DUK_HTHREAD_STRING_INT_MAP(thr), temp_desc, DUK_GETDESC_FLAG_PUSH_VALUE)) { + DUK_DDD(DUK_DDDPRINT("arguments: key not mapped, no exotic delete behavior")); + return; + } + + map = duk_require_hobject(thr, -1); + DUK_ASSERT(map != NULL); + duk_pop_unsafe(thr); /* map is reachable through obj */ + + DUK_DDD(DUK_DDDPRINT("-> have 'map', delete key %!O from map (if exists)); ignore result", + (duk_heaphdr *) key)); + + /* Note: no recursion issue, we can trust 'map' to behave */ + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_BEHAVIOR(map)); + DUK_DDD(DUK_DDDPRINT("map before deletion: %!O", (duk_heaphdr *) map)); + (void) duk_hobject_delprop_raw(thr, map, key, 0); /* ignore result */ + DUK_DDD(DUK_DDDPRINT("map after deletion: %!O", (duk_heaphdr *) map)); +} + +/* + * ECMAScript compliant [[GetOwnProperty]](P), for internal use only. + * + * If property is found: + * - Fills descriptor fields to 'out_desc' + * - If DUK_GETDESC_FLAG_PUSH_VALUE is set, pushes a value related to the + * property onto the stack ('undefined' for accessor properties). + * - Returns non-zero + * + * If property is not found: + * - 'out_desc' is left in untouched state (possibly garbage) + * - Nothing is pushed onto the stack (not even with DUK_GETDESC_FLAG_PUSH_VALUE + * set) + * - Returns zero + * + * Notes: + * + * - Getting a property descriptor may cause an allocation (and hence + * GC) to take place, hence reachability and refcount of all related + * values matter. Reallocation of value stack, properties, etc may + * invalidate many duk_tval pointers (concretely, those which reside + * in memory areas subject to reallocation). However, heap object + * pointers are never affected (heap objects have stable pointers). + * + * - The value of a plain property is always reachable and has a non-zero + * reference count. + * + * - The value of a virtual property is not necessarily reachable from + * elsewhere and may have a refcount of zero. Hence we push it onto + * the valstack for the caller, which ensures it remains reachable + * while it is needed. + * + * - There are no virtual accessor properties. Hence, all getters and + * setters are always related to concretely stored properties, which + * ensures that the get/set functions in the resulting descriptor are + * reachable and have non-zero refcounts. Should there be virtual + * accessor properties later, this would need to change. + */ + +DUK_LOCAL duk_bool_t duk__get_own_propdesc_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_uint32_t arr_idx, duk_propdesc *out_desc, duk_small_uint_t flags) { + duk_tval *tv; + + DUK_DDD(DUK_DDDPRINT("duk_hobject_get_own_propdesc: thr=%p, obj=%p, key=%p, out_desc=%p, flags=%lx, " + "arr_idx=%ld (obj -> %!O, key -> %!O)", + (void *) thr, (void *) obj, (void *) key, (void *) out_desc, + (long) flags, (long) arr_idx, + (duk_heaphdr *) obj, (duk_heaphdr *) key)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(out_desc != NULL); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_STATS_INC(thr->heap, stats_getownpropdesc_count); + + /* Each code path returning 1 (= found) must fill in all the output + * descriptor fields. We don't do it beforehand because it'd be + * unnecessary work if the property isn't found and would happen + * multiple times for an inheritance chain. + */ + DUK_ASSERT_SET_GARBAGE(out_desc, sizeof(*out_desc)); +#if 0 + out_desc->flags = 0; + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = -1; +#endif + + /* + * Try entries part first because it's the common case. + * + * Array part lookups are usually handled by the array fast path, and + * are not usually inherited. Array and entry parts never contain the + * same keys so the entry part vs. array part order doesn't matter. + */ + + if (duk_hobject_find_entry(thr->heap, obj, key, &out_desc->e_idx, &out_desc->h_idx)) { + duk_int_t e_idx = out_desc->e_idx; + DUK_ASSERT(out_desc->e_idx >= 0); + out_desc->a_idx = -1; + out_desc->flags = DUK_HOBJECT_E_GET_FLAGS(thr->heap, obj, e_idx); + out_desc->get = NULL; + out_desc->set = NULL; + if (DUK_UNLIKELY(out_desc->flags & DUK_PROPDESC_FLAG_ACCESSOR)) { + DUK_DDD(DUK_DDDPRINT("-> found accessor property in entry part")); + out_desc->get = DUK_HOBJECT_E_GET_VALUE_GETTER(thr->heap, obj, e_idx); + out_desc->set = DUK_HOBJECT_E_GET_VALUE_SETTER(thr->heap, obj, e_idx); + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + /* a dummy undefined value is pushed to make valstack + * behavior uniform for caller + */ + duk_push_undefined(thr); + } + } else { + DUK_DDD(DUK_DDDPRINT("-> found plain property in entry part")); + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, e_idx); + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + duk_push_tval(thr, tv); + } + } + goto prop_found; + } + + /* + * Try array part. + */ + + if (DUK_HOBJECT_HAS_ARRAY_PART(obj) && arr_idx != DUK__NO_ARRAY_INDEX) { + if (arr_idx < DUK_HOBJECT_GET_ASIZE(obj)) { + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, arr_idx); + if (!DUK_TVAL_IS_UNUSED(tv)) { + DUK_DDD(DUK_DDDPRINT("-> found in array part")); + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + duk_push_tval(thr, tv); + } + /* implicit attributes */ + out_desc->flags = DUK_PROPDESC_FLAG_WRITABLE | + DUK_PROPDESC_FLAG_CONFIGURABLE | + DUK_PROPDESC_FLAG_ENUMERABLE; + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = (duk_int_t) arr_idx; /* XXX: limit 2G due to being signed */ + goto prop_found; + } + } + } + + DUK_DDD(DUK_DDDPRINT("-> not found as a concrete property")); + + /* + * Not found as a concrete property, check for virtual properties. + */ + + if (!DUK_HOBJECT_HAS_VIRTUAL_PROPERTIES(obj)) { + /* Quick skip. */ + goto prop_not_found; + } + + if (DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + duk_harray *a; + + DUK_DDD(DUK_DDDPRINT("array object exotic property get for key: %!O, arr_idx: %ld", + (duk_heaphdr *) key, (long) arr_idx)); + + a = (duk_harray *) obj; + DUK_HARRAY_ASSERT_VALID(a); + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + DUK_DDD(DUK_DDDPRINT("-> found, key is 'length', length exotic behavior")); + + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + duk_push_uint(thr, (duk_uint_t) a->length); + } + out_desc->flags = DUK_PROPDESC_FLAG_VIRTUAL; + if (DUK_HARRAY_LENGTH_WRITABLE(a)) { + out_desc->flags |= DUK_PROPDESC_FLAG_WRITABLE; + } + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = -1; + + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)); + goto prop_found_noexotic; /* cannot be arguments exotic */ + } + } else if (DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(obj)) { + DUK_DDD(DUK_DDDPRINT("string object exotic property get for key: %!O, arr_idx: %ld", + (duk_heaphdr *) key, (long) arr_idx)); + + /* XXX: charlen; avoid multiple lookups? */ + + if (arr_idx != DUK__NO_ARRAY_INDEX) { + duk_hstring *h_val; + + DUK_DDD(DUK_DDDPRINT("array index exists")); + + h_val = duk_hobject_get_internal_value_string(thr->heap, obj); + DUK_ASSERT(h_val); + if (arr_idx < DUK_HSTRING_GET_CHARLEN(h_val)) { + DUK_DDD(DUK_DDDPRINT("-> found, array index inside string")); + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + duk_push_hstring(thr, h_val); + duk_substring(thr, -1, arr_idx, arr_idx + 1); /* [str] -> [substr] */ + } + out_desc->flags = DUK_PROPDESC_FLAG_ENUMERABLE | /* E5 Section 15.5.5.2 */ + DUK_PROPDESC_FLAG_VIRTUAL; + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = -1; + + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)); + goto prop_found_noexotic; /* cannot be arguments exotic */ + } else { + /* index is above internal string length -> property is fully normal */ + DUK_DDD(DUK_DDDPRINT("array index outside string -> normal property")); + } + } else if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + duk_hstring *h_val; + + DUK_DDD(DUK_DDDPRINT("-> found, key is 'length', length exotic behavior")); + + h_val = duk_hobject_get_internal_value_string(thr->heap, obj); + DUK_ASSERT(h_val != NULL); + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + duk_push_uint(thr, (duk_uint_t) DUK_HSTRING_GET_CHARLEN(h_val)); + } + out_desc->flags = DUK_PROPDESC_FLAG_VIRTUAL; /* E5 Section 15.5.5.1 */ + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = -1; + + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)); + goto prop_found_noexotic; /* cannot be arguments exotic */ + } + } +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + else if (DUK_HOBJECT_IS_BUFOBJ(obj)) { + duk_hbufobj *h_bufobj; + duk_uint_t byte_off; + duk_small_uint_t elem_size; + + h_bufobj = (duk_hbufobj *) obj; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + DUK_DDD(DUK_DDDPRINT("bufobj property get for key: %!O, arr_idx: %ld", + (duk_heaphdr *) key, (long) arr_idx)); + + if (arr_idx != DUK__NO_ARRAY_INDEX && DUK_HBUFOBJ_HAS_VIRTUAL_INDICES(h_bufobj)) { + DUK_DDD(DUK_DDDPRINT("array index exists")); + + /* Careful with wrapping: arr_idx upshift may easily wrap, whereas + * length downshift won't. + */ + if (arr_idx < (h_bufobj->length >> h_bufobj->shift)) { + byte_off = arr_idx << h_bufobj->shift; /* no wrap assuming h_bufobj->length is valid */ + elem_size = (duk_small_uint_t) (1U << h_bufobj->shift); + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + duk_uint8_t *data; + + if (h_bufobj->buf != NULL && DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_bufobj, byte_off + elem_size)) { + data = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufobj->buf) + h_bufobj->offset + byte_off; + duk_hbufobj_push_validated_read(thr, h_bufobj, data, elem_size); + } else { + DUK_D(DUK_DPRINT("bufobj access out of underlying buffer, ignoring (read zero)")); + duk_push_uint(thr, 0); + } + } + out_desc->flags = DUK_PROPDESC_FLAG_WRITABLE | + DUK_PROPDESC_FLAG_VIRTUAL; + if (DUK_HOBJECT_GET_CLASS_NUMBER(obj) != DUK_HOBJECT_CLASS_ARRAYBUFFER) { + /* ArrayBuffer indices are non-standard and are + * non-enumerable to avoid their serialization. + */ + out_desc->flags |= DUK_PROPDESC_FLAG_ENUMERABLE; + } + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = -1; + + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)); + goto prop_found_noexotic; /* cannot be e.g. arguments exotic, since exotic 'traits' are mutually exclusive */ + } else { + /* index is above internal buffer length -> property is fully normal */ + DUK_DDD(DUK_DDDPRINT("array index outside buffer -> normal property")); + } + } else if (key == DUK_HTHREAD_STRING_LENGTH(thr) && DUK_HBUFOBJ_HAS_VIRTUAL_INDICES(h_bufobj)) { + DUK_DDD(DUK_DDDPRINT("-> found, key is 'length', length exotic behavior")); + + if (flags & DUK_GETDESC_FLAG_PUSH_VALUE) { + /* Length in elements: take into account shift, but + * intentionally don't check the underlying buffer here. + */ + duk_push_uint(thr, h_bufobj->length >> h_bufobj->shift); + } + out_desc->flags = DUK_PROPDESC_FLAG_VIRTUAL; + out_desc->get = NULL; + out_desc->set = NULL; + out_desc->e_idx = -1; + out_desc->h_idx = -1; + out_desc->a_idx = -1; + + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)); + goto prop_found_noexotic; /* cannot be arguments exotic */ + } + } +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + + /* Array properties have exotic behavior but they are concrete, + * so no special handling here. + * + * Arguments exotic behavior (E5 Section 10.6, [[GetOwnProperty]] + * is only relevant as a post-check implemented below; hence no + * check here. + */ + + /* + * Not found as concrete or virtual. + */ + + prop_not_found: + DUK_DDD(DUK_DDDPRINT("-> not found (virtual, entry part, or array part)")); + DUK_STATS_INC(thr->heap, stats_getownpropdesc_miss); + return 0; + + /* + * Found. + * + * Arguments object has exotic post-processing, see E5 Section 10.6, + * description of [[GetOwnProperty]] variant for arguments. + */ + + prop_found: + DUK_DDD(DUK_DDDPRINT("-> property found, checking for arguments exotic post-behavior")); + + /* Notes: + * - Only numbered indices are relevant, so arr_idx fast reject is good + * (this is valid unless there are more than 4**32-1 arguments). + * - Since variable lookup has no side effects, this can be skipped if + * DUK_GETDESC_FLAG_PUSH_VALUE is not set. + */ + + if (DUK_UNLIKELY(DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj) && + arr_idx != DUK__NO_ARRAY_INDEX && + (flags & DUK_GETDESC_FLAG_PUSH_VALUE))) { + duk_propdesc temp_desc; + + /* Magically bound variable cannot be an accessor. However, + * there may be an accessor property (or a plain property) in + * place with magic behavior removed. This happens e.g. when + * a magic property is redefined with defineProperty(). + * Cannot assert for "not accessor" here. + */ + + /* replaces top of stack with new value if necessary */ + DUK_ASSERT((flags & DUK_GETDESC_FLAG_PUSH_VALUE) != 0); + + /* This can perform a variable lookup but only into a declarative + * environment which has no side effects. + */ + if (duk__check_arguments_map_for_get(thr, obj, key, &temp_desc)) { + DUK_DDD(DUK_DDDPRINT("-> arguments exotic behavior overrides result: %!T -> %!T", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + /* [... old_result result] -> [... result] */ + duk_remove_m2(thr); + } + } + + prop_found_noexotic: + DUK_STATS_INC(thr->heap, stats_getownpropdesc_hit); + return 1; +} + +DUK_INTERNAL duk_bool_t duk_hobject_get_own_propdesc(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *out_desc, duk_small_uint_t flags) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(out_desc != NULL); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + return duk__get_own_propdesc_raw(thr, obj, key, DUK_HSTRING_GET_ARRIDX_SLOW(key), out_desc, flags); +} + +/* + * ECMAScript compliant [[GetProperty]](P), for internal use only. + * + * If property is found: + * - Fills descriptor fields to 'out_desc' + * - If DUK_GETDESC_FLAG_PUSH_VALUE is set, pushes a value related to the + * property onto the stack ('undefined' for accessor properties). + * - Returns non-zero + * + * If property is not found: + * - 'out_desc' is left in untouched state (possibly garbage) + * - Nothing is pushed onto the stack (not even with DUK_GETDESC_FLAG_PUSH_VALUE + * set) + * - Returns zero + * + * May cause arbitrary side effects and invalidate (most) duk_tval + * pointers. + */ + +DUK_LOCAL duk_bool_t duk__get_propdesc(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_propdesc *out_desc, duk_small_uint_t flags) { + duk_hobject *curr; + duk_uint32_t arr_idx; + duk_uint_t sanity; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(out_desc != NULL); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_STATS_INC(thr->heap, stats_getpropdesc_count); + + arr_idx = DUK_HSTRING_GET_ARRIDX_FAST(key); + + DUK_DDD(DUK_DDDPRINT("duk__get_propdesc: thr=%p, obj=%p, key=%p, out_desc=%p, flags=%lx, " + "arr_idx=%ld (obj -> %!O, key -> %!O)", + (void *) thr, (void *) obj, (void *) key, (void *) out_desc, + (long) flags, (long) arr_idx, + (duk_heaphdr *) obj, (duk_heaphdr *) key)); + + curr = obj; + DUK_ASSERT(curr != NULL); + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + if (duk__get_own_propdesc_raw(thr, curr, key, arr_idx, out_desc, flags)) { + /* stack contains value (if requested), 'out_desc' is set */ + DUK_STATS_INC(thr->heap, stats_getpropdesc_hit); + return 1; + } + + /* not found in 'curr', next in prototype chain; impose max depth */ + if (DUK_UNLIKELY(sanity-- == 0)) { + if (flags & DUK_GETDESC_FLAG_IGNORE_PROTOLOOP) { + /* treat like property not found */ + break; + } else { + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + } + } + curr = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, curr); + } while (curr != NULL); + + /* out_desc is left untouched (possibly garbage), caller must use return + * value to determine whether out_desc can be looked up + */ + + DUK_STATS_INC(thr->heap, stats_getpropdesc_miss); + return 0; +} + +/* + * Shallow fast path checks for accessing array elements with numeric + * indices. The goal is to try to avoid coercing an array index to an + * (interned) string for the most common lookups, in particular, for + * standard Array objects. + * + * Interning is avoided but only for a very narrow set of cases: + * - Object has array part, index is within array allocation, and + * value is not unused (= key exists) + * - Object has no interfering exotic behavior (e.g. arguments or + * string object exotic behaviors interfere, array exotic + * behavior does not). + * + * Current shortcoming: if key does not exist (even if it is within + * the array allocation range) a slow path lookup with interning is + * always required. This can probably be fixed so that there is a + * quick fast path for non-existent elements as well, at least for + * standard Array objects. + */ + +#if defined(DUK_USE_ARRAY_PROP_FASTPATH) +DUK_LOCAL duk_tval *duk__getprop_shallow_fastpath_array_tval(duk_hthread *thr, duk_hobject *obj, duk_tval *tv_key) { + duk_tval *tv; + duk_uint32_t idx; + + DUK_UNREF(thr); + + if (!(DUK_HOBJECT_HAS_ARRAY_PART(obj) && + !DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj) && + !DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(obj) && + !DUK_HOBJECT_IS_BUFOBJ(obj) && + !DUK_HOBJECT_IS_PROXY(obj))) { + /* Must have array part and no conflicting exotic behaviors. + * Doesn't need to have array special behavior, e.g. Arguments + * object has array part. + */ + return NULL; + } + + /* Arrays never have other exotic behaviors. */ + + DUK_DDD(DUK_DDDPRINT("fast path attempt (no exotic string/arguments/buffer " + "behavior, object has array part)")); + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + idx = duk__tval_fastint_to_arr_idx(tv_key); + } else +#endif + if (DUK_TVAL_IS_DOUBLE(tv_key)) { + idx = duk__tval_number_to_arr_idx(tv_key); + } else { + DUK_DDD(DUK_DDDPRINT("key is not a number")); + return NULL; + } + + /* If index is not valid, idx will be DUK__NO_ARRAY_INDEX which + * is 0xffffffffUL. We don't need to check for that explicitly + * because 0xffffffffUL will never be inside object 'a_size'. + */ + + if (idx >= DUK_HOBJECT_GET_ASIZE(obj)) { + DUK_DDD(DUK_DDDPRINT("key is not an array index or outside array part")); + return NULL; + } + DUK_ASSERT(idx != 0xffffffffUL); + DUK_ASSERT(idx != DUK__NO_ARRAY_INDEX); + + /* XXX: for array instances we could take a shortcut here and assume + * Array.prototype doesn't contain an array index property. + */ + + DUK_DDD(DUK_DDDPRINT("key is a valid array index and inside array part")); + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, idx); + if (!DUK_TVAL_IS_UNUSED(tv)) { + DUK_DDD(DUK_DDDPRINT("-> fast path successful")); + return tv; + } + + DUK_DDD(DUK_DDDPRINT("fast path attempt failed, fall back to slow path")); + return NULL; +} + +DUK_LOCAL duk_bool_t duk__putprop_shallow_fastpath_array_tval(duk_hthread *thr, duk_hobject *obj, duk_tval *tv_key, duk_tval *tv_val) { + duk_tval *tv; + duk_harray *a; + duk_uint32_t idx; + duk_uint32_t old_len, new_len; + + if (!(DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj) && + DUK_HOBJECT_HAS_ARRAY_PART(obj) && + DUK_HOBJECT_HAS_EXTENSIBLE(obj))) { + return 0; + } + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)); /* caller ensures */ + + a = (duk_harray *) obj; + DUK_HARRAY_ASSERT_VALID(a); + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + idx = duk__tval_fastint_to_arr_idx(tv_key); + } else +#endif + if (DUK_TVAL_IS_DOUBLE(tv_key)) { + idx = duk__tval_number_to_arr_idx(tv_key); + } else { + DUK_DDD(DUK_DDDPRINT("key is not a number")); + return 0; + } + + /* If index is not valid, idx will be DUK__NO_ARRAY_INDEX which + * is 0xffffffffUL. We don't need to check for that explicitly + * because 0xffffffffUL will never be inside object 'a_size'. + */ + + if (idx >= DUK_HOBJECT_GET_ASIZE(obj)) { /* for resizing of array part, use slow path */ + return 0; + } + DUK_ASSERT(idx != 0xffffffffUL); + DUK_ASSERT(idx != DUK__NO_ARRAY_INDEX); + + old_len = a->length; + + if (idx >= old_len) { + DUK_DDD(DUK_DDDPRINT("write new array entry requires length update " + "(arr_idx=%ld, old_len=%ld)", + (long) idx, (long) old_len)); + if (DUK_HARRAY_LENGTH_NONWRITABLE(a)) { + /* The correct behavior here is either a silent error + * or a TypeError, depending on strictness. Fall back + * to the slow path to handle the situation. + */ + return 0; + } + new_len = idx + 1; + + ((duk_harray *) obj)->length = new_len; + } + + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, idx); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv, tv_val); /* side effects */ + + DUK_DDD(DUK_DDDPRINT("array fast path success for index %ld", (long) idx)); + return 1; +} +#endif /* DUK_USE_ARRAY_PROP_FASTPATH */ + +/* + * Fast path for bufobj getprop/putprop + */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_LOCAL duk_bool_t duk__getprop_fastpath_bufobj_tval(duk_hthread *thr, duk_hobject *obj, duk_tval *tv_key) { + duk_uint32_t idx; + duk_hbufobj *h_bufobj; + duk_uint_t byte_off; + duk_small_uint_t elem_size; + duk_uint8_t *data; + + if (!DUK_HOBJECT_IS_BUFOBJ(obj)) { + return 0; + } + h_bufobj = (duk_hbufobj *) obj; + if (!DUK_HBUFOBJ_HAS_VIRTUAL_INDICES(h_bufobj)) { + return 0; + } + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + idx = duk__tval_fastint_to_arr_idx(tv_key); + } else +#endif + if (DUK_TVAL_IS_DOUBLE(tv_key)) { + idx = duk__tval_number_to_arr_idx(tv_key); + } else { + return 0; + } + + /* If index is not valid, idx will be DUK__NO_ARRAY_INDEX which + * is 0xffffffffUL. We don't need to check for that explicitly + * because 0xffffffffUL will never be inside bufobj length. + */ + + /* Careful with wrapping (left shifting idx would be unsafe). */ + if (idx >= (h_bufobj->length >> h_bufobj->shift)) { + return 0; + } + DUK_ASSERT(idx != DUK__NO_ARRAY_INDEX); + + byte_off = idx << h_bufobj->shift; /* no wrap assuming h_bufobj->length is valid */ + elem_size = (duk_small_uint_t) (1U << h_bufobj->shift); + + if (h_bufobj->buf != NULL && DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_bufobj, byte_off + elem_size)) { + data = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufobj->buf) + h_bufobj->offset + byte_off; + duk_hbufobj_push_validated_read(thr, h_bufobj, data, elem_size); + } else { + DUK_D(DUK_DPRINT("bufobj access out of underlying buffer, ignoring (read zero)")); + duk_push_uint(thr, 0); + } + + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) +DUK_LOCAL duk_bool_t duk__putprop_fastpath_bufobj_tval(duk_hthread *thr, duk_hobject *obj, duk_tval *tv_key, duk_tval *tv_val) { + duk_uint32_t idx; + duk_hbufobj *h_bufobj; + duk_uint_t byte_off; + duk_small_uint_t elem_size; + duk_uint8_t *data; + + if (!(DUK_HOBJECT_IS_BUFOBJ(obj) && + DUK_TVAL_IS_NUMBER(tv_val))) { + return 0; + } + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)); /* caller ensures; rom objects are never bufobjs now */ + + h_bufobj = (duk_hbufobj *) obj; + if (!DUK_HBUFOBJ_HAS_VIRTUAL_INDICES(h_bufobj)) { + return 0; + } + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + idx = duk__tval_fastint_to_arr_idx(tv_key); + } else +#endif + if (DUK_TVAL_IS_DOUBLE(tv_key)) { + idx = duk__tval_number_to_arr_idx(tv_key); + } else { + return 0; + } + + /* If index is not valid, idx will be DUK__NO_ARRAY_INDEX which + * is 0xffffffffUL. We don't need to check for that explicitly + * because 0xffffffffUL will never be inside bufobj length. + */ + + /* Careful with wrapping (left shifting idx would be unsafe). */ + if (idx >= (h_bufobj->length >> h_bufobj->shift)) { + return 0; + } + DUK_ASSERT(idx != DUK__NO_ARRAY_INDEX); + + byte_off = idx << h_bufobj->shift; /* no wrap assuming h_bufobj->length is valid */ + elem_size = (duk_small_uint_t) (1U << h_bufobj->shift); + + /* Value is required to be a number in the fast path so there + * are no side effects in write coercion. + */ + duk_push_tval(thr, tv_val); + DUK_ASSERT(duk_is_number(thr, -1)); + + if (h_bufobj->buf != NULL && DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_bufobj, byte_off + elem_size)) { + data = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufobj->buf) + h_bufobj->offset + byte_off; + duk_hbufobj_validated_write(thr, h_bufobj, data, elem_size); + } else { + DUK_D(DUK_DPRINT("bufobj access out of underlying buffer, ignoring (write skipped)")); + } + + duk_pop_unsafe(thr); + return 1; +} +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + +/* + * GETPROP: ECMAScript property read. + */ + +DUK_INTERNAL duk_bool_t duk_hobject_getprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key) { + duk_tval tv_obj_copy; + duk_tval tv_key_copy; + duk_hobject *curr = NULL; + duk_hstring *key = NULL; + duk_uint32_t arr_idx = DUK__NO_ARRAY_INDEX; + duk_propdesc desc; + duk_uint_t sanity; + + DUK_DDD(DUK_DDDPRINT("getprop: thr=%p, obj=%p, key=%p (obj -> %!T, key -> %!T)", + (void *) thr, (void *) tv_obj, (void *) tv_key, + (duk_tval *) tv_obj, (duk_tval *) tv_key)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(tv_obj != NULL); + DUK_ASSERT(tv_key != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_STATS_INC(thr->heap, stats_getprop_all); + + /* + * Make a copy of tv_obj, tv_key, and tv_val to avoid any issues of + * them being invalidated by a valstack resize. + * + * XXX: this is now an overkill for many fast paths. Rework this + * to be faster (although switching to a valstack discipline might + * be a better solution overall). + */ + + DUK_TVAL_SET_TVAL(&tv_obj_copy, tv_obj); + DUK_TVAL_SET_TVAL(&tv_key_copy, tv_key); + tv_obj = &tv_obj_copy; + tv_key = &tv_key_copy; + + /* + * Coercion and fast path processing + */ + + switch (DUK_TVAL_GET_TAG(tv_obj)) { + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: { + /* Note: unconditional throw */ + DUK_DDD(DUK_DDDPRINT("base object is undefined or null -> reject")); +#if defined(DUK_USE_PARANOID_ERRORS) + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_BASE); +#else + DUK_ERROR_FMT2(thr, DUK_ERR_TYPE_ERROR, "cannot read property %s of %s", + duk_push_string_tval_readable(thr, tv_key), duk_push_string_tval_readable(thr, tv_obj)); +#endif + DUK_WO_NORETURN(return 0;); + break; + } + + case DUK_TAG_BOOLEAN: { + DUK_DDD(DUK_DDDPRINT("base object is a boolean, start lookup from boolean prototype")); + curr = thr->builtins[DUK_BIDX_BOOLEAN_PROTOTYPE]; + break; + } + + case DUK_TAG_STRING: { + duk_hstring *h = DUK_TVAL_GET_STRING(tv_obj); + duk_int_t pop_count; + + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + /* Symbols (ES2015 or hidden) don't have virtual properties. */ + DUK_DDD(DUK_DDDPRINT("base object is a symbol, start lookup from symbol prototype")); + curr = thr->builtins[DUK_BIDX_SYMBOL_PROTOTYPE]; + break; + } + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + arr_idx = duk__tval_fastint_to_arr_idx(tv_key); + DUK_DDD(DUK_DDDPRINT("base object string, key is a fast-path fastint; arr_idx %ld", (long) arr_idx)); + pop_count = 0; + } else +#endif + if (DUK_TVAL_IS_NUMBER(tv_key)) { + arr_idx = duk__tval_number_to_arr_idx(tv_key); + DUK_DDD(DUK_DDDPRINT("base object string, key is a fast-path number; arr_idx %ld", (long) arr_idx)); + pop_count = 0; + } else { + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + DUK_DDD(DUK_DDDPRINT("base object string, key is a non-fast-path number; after " + "coercion key is %!T, arr_idx %ld", + (duk_tval *) duk_get_tval(thr, -1), (long) arr_idx)); + pop_count = 1; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && + arr_idx < DUK_HSTRING_GET_CHARLEN(h)) { + duk_pop_n_unsafe(thr, pop_count); + duk_push_hstring(thr, h); + duk_substring(thr, -1, arr_idx, arr_idx + 1); /* [str] -> [substr] */ + + DUK_STATS_INC(thr->heap, stats_getprop_stringidx); + DUK_DDD(DUK_DDDPRINT("-> %!T (base is string, key is an index inside string length " + "after coercion -> return char)", + (duk_tval *) duk_get_tval(thr, -1))); + return 1; + } + + if (pop_count == 0) { + /* This is a pretty awkward control flow, but we need to recheck the + * key coercion here. + */ + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + DUK_DDD(DUK_DDDPRINT("base object string, key is a non-fast-path number; after " + "coercion key is %!T, arr_idx %ld", + (duk_tval *) duk_get_tval(thr, -1), (long) arr_idx)); + } + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + duk_pop_unsafe(thr); /* [key] -> [] */ + duk_push_uint(thr, (duk_uint_t) DUK_HSTRING_GET_CHARLEN(h)); /* [] -> [res] */ + + DUK_STATS_INC(thr->heap, stats_getprop_stringlen); + DUK_DDD(DUK_DDDPRINT("-> %!T (base is string, key is 'length' after coercion -> " + "return string length)", + (duk_tval *) duk_get_tval(thr, -1))); + return 1; + } + + DUK_DDD(DUK_DDDPRINT("base object is a string, start lookup from string prototype")); + curr = thr->builtins[DUK_BIDX_STRING_PROTOTYPE]; + goto lookup; /* avoid double coercion */ + } + + case DUK_TAG_OBJECT: { +#if defined(DUK_USE_ARRAY_PROP_FASTPATH) + duk_tval *tmp; +#endif + + curr = DUK_TVAL_GET_OBJECT(tv_obj); + DUK_ASSERT(curr != NULL); + + /* XXX: array .length fast path (important in e.g. loops)? */ + +#if defined(DUK_USE_ARRAY_PROP_FASTPATH) + tmp = duk__getprop_shallow_fastpath_array_tval(thr, curr, tv_key); + if (tmp) { + duk_push_tval(thr, tmp); + + DUK_DDD(DUK_DDDPRINT("-> %!T (base is object, key is a number, array part " + "fast path)", + (duk_tval *) duk_get_tval(thr, -1))); + DUK_STATS_INC(thr->heap, stats_getprop_arrayidx); + return 1; + } +#endif + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + if (duk__getprop_fastpath_bufobj_tval(thr, curr, tv_key) != 0) { + /* Read value pushed on stack. */ + DUK_DDD(DUK_DDDPRINT("-> %!T (base is bufobj, key is a number, bufobj " + "fast path)", + (duk_tval *) duk_get_tval(thr, -1))); + DUK_STATS_INC(thr->heap, stats_getprop_bufobjidx); + return 1; + } +#endif + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_UNLIKELY(DUK_HOBJECT_IS_PROXY(curr))) { + duk_hobject *h_target; + + if (duk__proxy_check_prop(thr, curr, DUK_STRIDX_GET, tv_key, &h_target)) { + /* -> [ ... trap handler ] */ + DUK_DDD(DUK_DDDPRINT("-> proxy object 'get' for key %!T", (duk_tval *) tv_key)); + DUK_STATS_INC(thr->heap, stats_getprop_proxy); + duk_push_hobject(thr, h_target); /* target */ + duk_push_tval(thr, tv_key); /* P */ + duk_push_tval(thr, tv_obj); /* Receiver: Proxy object */ + duk_call_method(thr, 3 /*nargs*/); + + /* Target object must be checked for a conflicting + * non-configurable property. + */ + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + + if (duk__get_own_propdesc_raw(thr, h_target, key, arr_idx, &desc, DUK_GETDESC_FLAG_PUSH_VALUE)) { + duk_tval *tv_hook = duk_require_tval(thr, -3); /* value from hook */ + duk_tval *tv_targ = duk_require_tval(thr, -1); /* value from target */ + duk_bool_t datadesc_reject; + duk_bool_t accdesc_reject; + + DUK_DDD(DUK_DDDPRINT("proxy 'get': target has matching property %!O, check for " + "conflicting property; tv_hook=%!T, tv_targ=%!T, desc.flags=0x%08lx, " + "desc.get=%p, desc.set=%p", + (duk_heaphdr *) key, (duk_tval *) tv_hook, (duk_tval *) tv_targ, + (unsigned long) desc.flags, + (void *) desc.get, (void *) desc.set)); + + datadesc_reject = !(desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) && + !(desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && + !(desc.flags & DUK_PROPDESC_FLAG_WRITABLE) && + !duk_js_samevalue(tv_hook, tv_targ); + accdesc_reject = (desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) && + !(desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && + (desc.get == NULL) && + !DUK_TVAL_IS_UNDEFINED(tv_hook); + if (datadesc_reject || accdesc_reject) { + DUK_ERROR_TYPE(thr, DUK_STR_PROXY_REJECTED); + DUK_WO_NORETURN(return 0;); + } + + duk_pop_2_unsafe(thr); + } else { + duk_pop_unsafe(thr); + } + return 1; /* return value */ + } + + curr = h_target; /* resume lookup from target */ + DUK_TVAL_SET_OBJECT(tv_obj, curr); + } +#endif /* DUK_USE_ES6_PROXY */ + + if (DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(curr)) { + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + + DUK_STATS_INC(thr->heap, stats_getprop_arguments); + if (duk__check_arguments_map_for_get(thr, curr, key, &desc)) { + DUK_DDD(DUK_DDDPRINT("-> %!T (base is object with arguments exotic behavior, " + "key matches magically bound property -> skip standard " + "Get with replacement value)", + (duk_tval *) duk_get_tval(thr, -1))); + + /* no need for 'caller' post-check, because 'key' must be an array index */ + + duk_remove_m2(thr); /* [key result] -> [result] */ + return 1; + } + + goto lookup; /* avoid double coercion */ + } + break; + } + + /* Buffer has virtual properties similar to string, but indexed values + * are numbers, not 1-byte buffers/strings which would perform badly. + */ + case DUK_TAG_BUFFER: { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv_obj); + duk_int_t pop_count; + + /* + * Because buffer values are often looped over, a number fast path + * is important. + */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + arr_idx = duk__tval_fastint_to_arr_idx(tv_key); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a fast-path fastint; arr_idx %ld", (long) arr_idx)); + pop_count = 0; + } + else +#endif + if (DUK_TVAL_IS_NUMBER(tv_key)) { + arr_idx = duk__tval_number_to_arr_idx(tv_key); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a fast-path number; arr_idx %ld", (long) arr_idx)); + pop_count = 0; + } else { + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a non-fast-path number; after " + "coercion key is %!T, arr_idx %ld", + (duk_tval *) duk_get_tval(thr, -1), (long) arr_idx)); + pop_count = 1; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && + arr_idx < DUK_HBUFFER_GET_SIZE(h)) { + duk_pop_n_unsafe(thr, pop_count); + duk_push_uint(thr, ((duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h))[arr_idx]); + DUK_STATS_INC(thr->heap, stats_getprop_bufferidx); + DUK_DDD(DUK_DDDPRINT("-> %!T (base is buffer, key is an index inside buffer length " + "after coercion -> return byte as number)", + (duk_tval *) duk_get_tval(thr, -1))); + return 1; + } + + if (pop_count == 0) { + /* This is a pretty awkward control flow, but we need to recheck the + * key coercion here. + */ + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a non-fast-path number; after " + "coercion key is %!T, arr_idx %ld", + (duk_tval *) duk_get_tval(thr, -1), (long) arr_idx)); + } + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + duk_pop_unsafe(thr); /* [key] -> [] */ + duk_push_uint(thr, (duk_uint_t) DUK_HBUFFER_GET_SIZE(h)); /* [] -> [res] */ + DUK_STATS_INC(thr->heap, stats_getprop_bufferlen); + + DUK_DDD(DUK_DDDPRINT("-> %!T (base is buffer, key is 'length' " + "after coercion -> return buffer length)", + (duk_tval *) duk_get_tval(thr, -1))); + return 1; + } + + DUK_DDD(DUK_DDDPRINT("base object is a buffer, start lookup from Uint8Array prototype")); + curr = thr->builtins[DUK_BIDX_UINT8ARRAY_PROTOTYPE]; + goto lookup; /* avoid double coercion */ + } + + case DUK_TAG_POINTER: { + DUK_DDD(DUK_DDDPRINT("base object is a pointer, start lookup from pointer prototype")); + curr = thr->builtins[DUK_BIDX_POINTER_PROTOTYPE]; + break; + } + + case DUK_TAG_LIGHTFUNC: { + /* Lightfuncs inherit getter .name and .length from %NativeFunctionPrototype%. */ + DUK_DDD(DUK_DDDPRINT("base object is a lightfunc, start lookup from function prototype")); + curr = thr->builtins[DUK_BIDX_NATIVE_FUNCTION_PROTOTYPE]; + break; + } + +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + /* number */ + DUK_DDD(DUK_DDDPRINT("base object is a number, start lookup from number prototype")); + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv_obj)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_obj)); + curr = thr->builtins[DUK_BIDX_NUMBER_PROTOTYPE]; + break; + } + } + + /* key coercion (unless already coerced above) */ + DUK_ASSERT(key == NULL); + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + /* + * Property lookup + */ + + lookup: + /* [key] (coerced) */ + DUK_ASSERT(curr != NULL); + DUK_ASSERT(key != NULL); + + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + if (!duk__get_own_propdesc_raw(thr, curr, key, arr_idx, &desc, DUK_GETDESC_FLAG_PUSH_VALUE)) { + goto next_in_chain; + } + + if (desc.get != NULL) { + /* accessor with defined getter */ + DUK_ASSERT((desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) != 0); + + duk_pop_unsafe(thr); /* [key undefined] -> [key] */ + duk_push_hobject(thr, desc.get); + duk_push_tval(thr, tv_obj); /* note: original, uncoerced base */ +#if defined(DUK_USE_NONSTD_GETTER_KEY_ARGUMENT) + duk_dup_m3(thr); + duk_call_method(thr, 1); /* [key getter this key] -> [key retval] */ +#else + duk_call_method(thr, 0); /* [key getter this] -> [key retval] */ +#endif + } else { + /* [key value] or [key undefined] */ + + /* data property or accessor without getter */ + DUK_ASSERT(((desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) == 0) || + (desc.get == NULL)); + + /* if accessor without getter, return value is undefined */ + DUK_ASSERT(((desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) == 0) || + duk_is_undefined(thr, -1)); + + /* Note: for an accessor without getter, falling through to + * check for "caller" exotic behavior is unnecessary as + * "undefined" will never activate the behavior. But it does + * no harm, so we'll do it anyway. + */ + } + + goto found; /* [key result] */ + + next_in_chain: + /* XXX: option to pretend property doesn't exist if sanity limit is + * hit might be useful. + */ + if (DUK_UNLIKELY(sanity-- == 0)) { + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + } + curr = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, curr); + } while (curr != NULL); + + /* + * Not found + */ + + duk_to_undefined(thr, -1); /* [key] -> [undefined] (default value) */ + + DUK_DDD(DUK_DDDPRINT("-> %!T (not found)", (duk_tval *) duk_get_tval(thr, -1))); + return 0; + + /* + * Found; post-processing (Function and arguments objects) + */ + + found: + /* [key result] */ + +#if !defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + /* Special behavior for 'caller' property of (non-bound) function objects + * and non-strict Arguments objects: if 'caller' -value- (!) is a strict + * mode function, throw a TypeError (E5 Sections 15.3.5.4, 10.6). + * Quite interestingly, a non-strict function with no formal arguments + * will get an arguments object -without- special 'caller' behavior! + * + * The E5.1 spec is a bit ambiguous if this special behavior applies when + * a bound function is the base value (not the 'caller' value): Section + * 15.3.4.5 (describing bind()) states that [[Get]] for bound functions + * matches that of Section 15.3.5.4 ([[Get]] for Function instances). + * However, Section 13.3.5.4 has "NOTE: Function objects created using + * Function.prototype.bind use the default [[Get]] internal method." + * The current implementation assumes this means that bound functions + * should not have the special [[Get]] behavior. + * + * The E5.1 spec is also a bit unclear if the TypeError throwing is + * applied if the 'caller' value is a strict bound function. The + * current implementation will throw even for both strict non-bound + * and strict bound functions. + * + * See test-dev-strict-func-as-caller-prop-value.js for quite extensive + * tests. + * + * This exotic behavior is disabled when the non-standard 'caller' property + * is enabled, as it conflicts with the free use of 'caller'. + */ + if (key == DUK_HTHREAD_STRING_CALLER(thr) && + DUK_TVAL_IS_OBJECT(tv_obj)) { + duk_hobject *orig = DUK_TVAL_GET_OBJECT(tv_obj); + DUK_ASSERT(orig != NULL); + + if (DUK_HOBJECT_IS_NONBOUND_FUNCTION(orig) || + DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(orig)) { + duk_hobject *h; + + /* XXX: The TypeError is currently not applied to bound + * functions because the 'strict' flag is not copied by + * bind(). This may or may not be correct, the specification + * only refers to the value being a "strict mode Function + * object" which is ambiguous. + */ + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(orig)); + + h = duk_get_hobject(thr, -1); /* NULL if not an object */ + if (h && + DUK_HOBJECT_IS_FUNCTION(h) && + DUK_HOBJECT_HAS_STRICT(h)) { + /* XXX: sufficient to check 'strict', assert for 'is function' */ + DUK_ERROR_TYPE(thr, DUK_STR_STRICT_CALLER_READ); + DUK_WO_NORETURN(return 0;); + } + } + } +#endif /* !DUK_USE_NONSTD_FUNC_CALLER_PROPERTY */ + + duk_remove_m2(thr); /* [key result] -> [result] */ + + DUK_DDD(DUK_DDDPRINT("-> %!T (found)", (duk_tval *) duk_get_tval(thr, -1))); + return 1; +} + +/* + * HASPROP: ECMAScript property existence check ("in" operator). + * + * Interestingly, the 'in' operator does not do any coercion of + * the target object. + */ + +DUK_INTERNAL duk_bool_t duk_hobject_hasprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key) { + duk_tval tv_key_copy; + duk_hobject *obj; + duk_hstring *key; + duk_uint32_t arr_idx; + duk_bool_t rc; + duk_propdesc desc; + + DUK_DDD(DUK_DDDPRINT("hasprop: thr=%p, obj=%p, key=%p (obj -> %!T, key -> %!T)", + (void *) thr, (void *) tv_obj, (void *) tv_key, + (duk_tval *) tv_obj, (duk_tval *) tv_key)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(tv_obj != NULL); + DUK_ASSERT(tv_key != NULL); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_TVAL_SET_TVAL(&tv_key_copy, tv_key); + tv_key = &tv_key_copy; + + /* + * The 'in' operator requires an object as its right hand side, + * throwing a TypeError unconditionally if this is not the case. + * + * However, lightfuncs need to behave like fully fledged objects + * here to be maximally transparent, so we need to handle them + * here. Same goes for plain buffers which behave like ArrayBuffers. + */ + + /* XXX: Refactor key coercion so that it's only called once. It can't + * be trivially lifted here because the object must be type checked + * first. + */ + + if (DUK_TVAL_IS_OBJECT(tv_obj)) { + obj = DUK_TVAL_GET_OBJECT(tv_obj); + DUK_ASSERT(obj != NULL); + + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + } else if (DUK_TVAL_IS_BUFFER(tv_obj)) { + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + if (duk__key_is_plain_buf_ownprop(thr, DUK_TVAL_GET_BUFFER(tv_obj), key, arr_idx)) { + rc = 1; + goto pop_and_return; + } + obj = thr->builtins[DUK_BIDX_UINT8ARRAY_PROTOTYPE]; + } else if (DUK_TVAL_IS_LIGHTFUNC(tv_obj)) { + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + + /* If not found, resume existence check from %NativeFunctionPrototype%. + * We can just substitute the value in this case; nothing will + * need the original base value (as would be the case with e.g. + * setters/getters. + */ + obj = thr->builtins[DUK_BIDX_NATIVE_FUNCTION_PROTOTYPE]; + } else { + /* Note: unconditional throw */ + DUK_DDD(DUK_DDDPRINT("base object is not an object -> reject")); + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_BASE); + DUK_WO_NORETURN(return 0;); + } + + /* XXX: fast path for arrays? */ + + DUK_ASSERT(key != NULL); + DUK_ASSERT(obj != NULL); + DUK_UNREF(arr_idx); + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_UNLIKELY(DUK_HOBJECT_IS_PROXY(obj))) { + duk_hobject *h_target; + duk_bool_t tmp_bool; + + /* XXX: the key in 'key in obj' is string coerced before we're called + * (which is the required behavior in E5/E5.1/E6) so the key is a string + * here already. + */ + + if (duk__proxy_check_prop(thr, obj, DUK_STRIDX_HAS, tv_key, &h_target)) { + /* [ ... key trap handler ] */ + DUK_DDD(DUK_DDDPRINT("-> proxy object 'has' for key %!T", (duk_tval *) tv_key)); + duk_push_hobject(thr, h_target); /* target */ + duk_push_tval(thr, tv_key); /* P */ + duk_call_method(thr, 2 /*nargs*/); + tmp_bool = duk_to_boolean_top_pop(thr); + if (!tmp_bool) { + /* Target object must be checked for a conflicting + * non-configurable property. + */ + + if (duk__get_own_propdesc_raw(thr, h_target, key, arr_idx, &desc, 0 /*flags*/)) { /* don't push value */ + DUK_DDD(DUK_DDDPRINT("proxy 'has': target has matching property %!O, check for " + "conflicting property; desc.flags=0x%08lx, " + "desc.get=%p, desc.set=%p", + (duk_heaphdr *) key, (unsigned long) desc.flags, + (void *) desc.get, (void *) desc.set)); + /* XXX: Extensibility check for target uses IsExtensible(). If we + * implemented the isExtensible trap and didn't reject proxies as + * proxy targets, it should be respected here. + */ + if (!((desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && /* property is configurable and */ + DUK_HOBJECT_HAS_EXTENSIBLE(h_target))) { /* ... target is extensible */ + DUK_ERROR_TYPE(thr, DUK_STR_PROXY_REJECTED); + DUK_WO_NORETURN(return 0;); + } + } + } + + duk_pop_unsafe(thr); /* [ key ] -> [] */ + return tmp_bool; + } + + obj = h_target; /* resume check from proxy target */ + } +#endif /* DUK_USE_ES6_PROXY */ + + /* XXX: inline into a prototype walking loop? */ + + rc = duk__get_propdesc(thr, obj, key, &desc, 0 /*flags*/); /* don't push value */ + /* fall through */ + + pop_and_return: + duk_pop_unsafe(thr); /* [ key ] -> [] */ + return rc; +} + +/* + * HASPROP variant used internally. + * + * This primitive must never throw an error, callers rely on this. + * In particular, don't throw an error for prototype loops; instead, + * pretend like the property doesn't exist if a prototype sanity limit + * is reached. + * + * Does not implement proxy behavior: if applied to a proxy object, + * returns key existence on the proxy object itself. + */ + +DUK_INTERNAL duk_bool_t duk_hobject_hasprop_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key) { + duk_propdesc dummy; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + return duk__get_propdesc(thr, obj, key, &dummy, DUK_GETDESC_FLAG_IGNORE_PROTOLOOP); /* don't push value */ +} + +/* + * Helper: handle Array object 'length' write which automatically + * deletes properties, see E5 Section 15.4.5.1, step 3. This is + * quite tricky to get right. + * + * Used by duk_hobject_putprop(). + */ + +/* Coerce a new .length candidate to a number and check that it's a valid + * .length. + */ +DUK_LOCAL duk_uint32_t duk__to_new_array_length_checked(duk_hthread *thr, duk_tval *tv) { + duk_uint32_t res; + duk_double_t d; + +#if !defined(DUK_USE_PREFER_SIZE) +#if defined(DUK_USE_FASTINT) + /* When fastints are enabled, the most interesting case is assigning + * a fastint to .length (e.g. arr.length = 0). + */ + if (DUK_TVAL_IS_FASTINT(tv)) { + /* Very common case. */ + duk_int64_t fi; + fi = DUK_TVAL_GET_FASTINT(tv); + if (fi < 0 || fi > DUK_I64_CONSTANT(0xffffffff)) { + goto fail_range; + } + return (duk_uint32_t) fi; + } +#else /* DUK_USE_FASTINT */ + /* When fastints are not enabled, the most interesting case is any + * number. + */ + if (DUK_TVAL_IS_DOUBLE(tv)) { + d = DUK_TVAL_GET_NUMBER(tv); + } +#endif /* DUK_USE_FASTINT */ + else +#endif /* !DUK_USE_PREFER_SIZE */ + { + /* In all other cases, and when doing a size optimized build, + * fall back to the comprehensive handler. + */ + d = duk_js_tonumber(thr, tv); + } + + /* Refuse to update an Array's 'length' to a value outside the + * 32-bit range. Negative zero is accepted as zero. + */ + res = duk_double_to_uint32_t(d); + if (!duk_double_equals((duk_double_t) res, d)) { + goto fail_range; + } + + return res; + + fail_range: + DUK_ERROR_RANGE(thr, DUK_STR_INVALID_ARRAY_LENGTH); + DUK_WO_NORETURN(return 0;); +} + +/* Delete elements required by a smaller length, taking into account + * potentially non-configurable elements. Returns non-zero if all + * elements could be deleted, and zero if all or some elements could + * not be deleted. Also writes final "target length" to 'out_result_len'. + * This is the length value that should go into the 'length' property + * (must be set by the caller). Never throws an error. + */ +DUK_LOCAL +duk_bool_t duk__handle_put_array_length_smaller(duk_hthread *thr, + duk_hobject *obj, + duk_uint32_t old_len, + duk_uint32_t new_len, + duk_bool_t force_flag, + duk_uint32_t *out_result_len) { + duk_uint32_t target_len; + duk_uint_fast32_t i; + duk_uint32_t arr_idx; + duk_hstring *key; + duk_tval *tv; + duk_bool_t rc; + + DUK_DDD(DUK_DDDPRINT("new array length smaller than old (%ld -> %ld), " + "probably need to remove elements", + (long) old_len, (long) new_len)); + + /* + * New length is smaller than old length, need to delete properties above + * the new length. + * + * If array part exists, this is straightforward: array entries cannot + * be non-configurable so this is guaranteed to work. + * + * If array part does not exist, array-indexed values are scattered + * in the entry part, and some may not be configurable (preventing length + * from becoming lower than their index + 1). To handle the algorithm + * in E5 Section 15.4.5.1, step l correctly, we scan the entire property + * set twice. + */ + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(new_len < old_len); + DUK_ASSERT(out_result_len != NULL); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)); + DUK_ASSERT(DUK_HOBJECT_IS_ARRAY(obj)); + + if (DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + /* + * All defined array-indexed properties are in the array part + * (we assume the array part is comprehensive), and all array + * entries are writable, configurable, and enumerable. Thus, + * nothing can prevent array entries from being deleted. + */ + + DUK_DDD(DUK_DDDPRINT("have array part, easy case")); + + if (old_len < DUK_HOBJECT_GET_ASIZE(obj)) { + /* XXX: assertion that entries >= old_len are already unused */ + i = old_len; + } else { + i = DUK_HOBJECT_GET_ASIZE(obj); + } + DUK_ASSERT(i <= DUK_HOBJECT_GET_ASIZE(obj)); + + while (i > new_len) { + i--; + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, i); + DUK_TVAL_SET_UNUSED_UPDREF(thr, tv); /* side effects */ + } + + *out_result_len = new_len; + return 1; + } else { + /* + * Entries part is a bit more complex. + */ + + /* Stage 1: find highest preventing non-configurable entry (if any). + * When forcing, ignore non-configurability. + */ + + DUK_DDD(DUK_DDDPRINT("no array part, slow case")); + + DUK_DDD(DUK_DDDPRINT("array length write, no array part, stage 1: find target_len " + "(highest preventing non-configurable entry (if any))")); + + target_len = new_len; + if (force_flag) { + DUK_DDD(DUK_DDDPRINT("array length write, no array part; force flag -> skip stage 1")); + goto skip_stage1; + } + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + key = DUK_HOBJECT_E_GET_KEY(thr->heap, obj, i); + if (!key) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: null key", (long) i)); + continue; + } + if (!DUK_HSTRING_HAS_ARRIDX(key)) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: key not an array index", (long) i)); + continue; + } + + DUK_ASSERT(DUK_HSTRING_HAS_ARRIDX(key)); /* XXX: macro checks for array index flag, which is unnecessary here */ + arr_idx = DUK_HSTRING_GET_ARRIDX_SLOW(key); + DUK_ASSERT(arr_idx != DUK__NO_ARRAY_INDEX); + DUK_ASSERT(arr_idx < old_len); /* consistency requires this */ + + if (arr_idx < new_len) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: key is array index %ld, below new_len", + (long) i, (long) arr_idx)); + continue; + } + if (DUK_HOBJECT_E_SLOT_IS_CONFIGURABLE(thr->heap, obj, i)) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: key is a relevant array index %ld, but configurable", + (long) i, (long) arr_idx)); + continue; + } + + /* relevant array index is non-configurable, blocks write */ + if (arr_idx >= target_len) { + DUK_DDD(DUK_DDDPRINT("entry at index %ld has arr_idx %ld, is not configurable, " + "update target_len %ld -> %ld", + (long) i, (long) arr_idx, (long) target_len, + (long) (arr_idx + 1))); + target_len = arr_idx + 1; + } + } + skip_stage1: + + /* stage 2: delete configurable entries above target length */ + + DUK_DDD(DUK_DDDPRINT("old_len=%ld, new_len=%ld, target_len=%ld", + (long) old_len, (long) new_len, (long) target_len)); + + DUK_DDD(DUK_DDDPRINT("array length write, no array part, stage 2: remove " + "entries >= target_len")); + + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + key = DUK_HOBJECT_E_GET_KEY(thr->heap, obj, i); + if (!key) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: null key", (long) i)); + continue; + } + if (!DUK_HSTRING_HAS_ARRIDX(key)) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: key not an array index", (long) i)); + continue; + } + + DUK_ASSERT(DUK_HSTRING_HAS_ARRIDX(key)); /* XXX: macro checks for array index flag, which is unnecessary here */ + arr_idx = DUK_HSTRING_GET_ARRIDX_SLOW(key); + DUK_ASSERT(arr_idx != DUK__NO_ARRAY_INDEX); + DUK_ASSERT(arr_idx < old_len); /* consistency requires this */ + + if (arr_idx < target_len) { + DUK_DDD(DUK_DDDPRINT("skip entry index %ld: key is array index %ld, below target_len", + (long) i, (long) arr_idx)); + continue; + } + DUK_ASSERT(force_flag || DUK_HOBJECT_E_SLOT_IS_CONFIGURABLE(thr->heap, obj, i)); /* stage 1 guarantees */ + + DUK_DDD(DUK_DDDPRINT("delete entry index %ld: key is array index %ld", + (long) i, (long) arr_idx)); + + /* + * Slow delete, but we don't care as we're already in a very slow path. + * The delete always succeeds: key has no exotic behavior, property + * is configurable, and no resize occurs. + */ + rc = duk_hobject_delprop_raw(thr, obj, key, force_flag ? DUK_DELPROP_FLAG_FORCE : 0); + DUK_UNREF(rc); + DUK_ASSERT(rc != 0); + } + + /* stage 3: update length (done by caller), decide return code */ + + DUK_DDD(DUK_DDDPRINT("array length write, no array part, stage 3: update length (done by caller)")); + + *out_result_len = target_len; + + if (target_len == new_len) { + DUK_DDD(DUK_DDDPRINT("target_len matches new_len, return success")); + return 1; + } + DUK_DDD(DUK_DDDPRINT("target_len does not match new_len (some entry prevented " + "full length adjustment), return error")); + return 0; + } + + DUK_UNREACHABLE(); +} + +/* XXX: is valstack top best place for argument? */ +DUK_LOCAL duk_bool_t duk__handle_put_array_length(duk_hthread *thr, duk_hobject *obj) { + duk_harray *a; + duk_uint32_t old_len; + duk_uint32_t new_len; + duk_uint32_t result_len; + duk_bool_t rc; + + DUK_DDD(DUK_DDDPRINT("handling a put operation to array 'length' exotic property, " + "new val: %!T", + (duk_tval *) duk_get_tval(thr, -1))); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(obj != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)); + DUK_ASSERT(DUK_HOBJECT_IS_ARRAY(obj)); + a = (duk_harray *) obj; + DUK_HARRAY_ASSERT_VALID(a); + + DUK_ASSERT(duk_is_valid_index(thr, -1)); + + /* + * Get old and new length + */ + + old_len = a->length; + new_len = duk__to_new_array_length_checked(thr, DUK_GET_TVAL_NEGIDX(thr, -1)); + DUK_DDD(DUK_DDDPRINT("old_len=%ld, new_len=%ld", (long) old_len, (long) new_len)); + + /* + * Writability check + */ + + if (DUK_HARRAY_LENGTH_NONWRITABLE(a)) { + DUK_DDD(DUK_DDDPRINT("length is not writable, fail")); + return 0; + } + + /* + * New length not lower than old length => no changes needed + * (not even array allocation). + */ + + if (new_len >= old_len) { + DUK_DDD(DUK_DDDPRINT("new length is same or higher than old length, just update length, no deletions")); + a->length = new_len; + return 1; + } + + DUK_DDD(DUK_DDDPRINT("new length is lower than old length, probably must delete entries")); + + /* + * New length lower than old length => delete elements, then + * update length. + * + * Note: even though a bunch of elements have been deleted, the 'desc' is + * still valid as properties haven't been resized (and entries compacted). + */ + + rc = duk__handle_put_array_length_smaller(thr, obj, old_len, new_len, 0 /*force_flag*/, &result_len); + DUK_ASSERT(result_len >= new_len && result_len <= old_len); + + a->length = result_len; + + /* XXX: shrink array allocation or entries compaction here? */ + + return rc; +} + +/* + * PUTPROP: ECMAScript property write. + * + * Unlike ECMAScript primitive which returns nothing, returns 1 to indicate + * success and 0 to indicate failure (assuming throw is not set). + * + * This is an extremely tricky function. Some examples: + * + * * Currently a decref may trigger a GC, which may compact an object's + * property allocation. Consequently, any entry indices (e_idx) will + * be potentially invalidated by a decref. + * + * * Exotic behaviors (strings, arrays, arguments object) require, + * among other things: + * + * - Preprocessing before and postprocessing after an actual property + * write. For example, array index write requires pre-checking the + * array 'length' property for access control, and may require an + * array 'length' update after the actual write has succeeded (but + * not if it fails). + * + * - Deletion of multiple entries, as a result of array 'length' write. + * + * * Input values are taken as pointers which may point to the valstack. + * If valstack is resized because of the put (this may happen at least + * when the array part is abandoned), the pointers can be invalidated. + * (We currently make a copy of all of the input values to avoid issues.) + */ + +DUK_INTERNAL duk_bool_t duk_hobject_putprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key, duk_tval *tv_val, duk_bool_t throw_flag) { + duk_tval tv_obj_copy; + duk_tval tv_key_copy; + duk_tval tv_val_copy; + duk_hobject *orig = NULL; /* NULL if tv_obj is primitive */ + duk_hobject *curr; + duk_hstring *key = NULL; + duk_propdesc desc; + duk_tval *tv; + duk_uint32_t arr_idx; + duk_bool_t rc; + duk_int_t e_idx; + duk_uint_t sanity; + duk_uint32_t new_array_length = 0; /* 0 = no update */ + + DUK_DDD(DUK_DDDPRINT("putprop: thr=%p, obj=%p, key=%p, val=%p, throw=%ld " + "(obj -> %!T, key -> %!T, val -> %!T)", + (void *) thr, (void *) tv_obj, (void *) tv_key, (void *) tv_val, + (long) throw_flag, (duk_tval *) tv_obj, (duk_tval *) tv_key, (duk_tval *) tv_val)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(tv_obj != NULL); + DUK_ASSERT(tv_key != NULL); + DUK_ASSERT(tv_val != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + DUK_STATS_INC(thr->heap, stats_putprop_all); + + /* + * Make a copy of tv_obj, tv_key, and tv_val to avoid any issues of + * them being invalidated by a valstack resize. + * + * XXX: this is an overkill for some paths, so optimize this later + * (or maybe switch to a stack arguments model entirely). + */ + + DUK_TVAL_SET_TVAL(&tv_obj_copy, tv_obj); + DUK_TVAL_SET_TVAL(&tv_key_copy, tv_key); + DUK_TVAL_SET_TVAL(&tv_val_copy, tv_val); + tv_obj = &tv_obj_copy; + tv_key = &tv_key_copy; + tv_val = &tv_val_copy; + + /* + * Coercion and fast path processing. + */ + + switch (DUK_TVAL_GET_TAG(tv_obj)) { + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: { + /* Note: unconditional throw */ + DUK_DDD(DUK_DDDPRINT("base object is undefined or null -> reject (object=%!iT)", + (duk_tval *) tv_obj)); +#if defined(DUK_USE_PARANOID_ERRORS) + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_BASE); +#else + DUK_ERROR_FMT2(thr, DUK_ERR_TYPE_ERROR, "cannot write property %s of %s", + duk_push_string_tval_readable(thr, tv_key), duk_push_string_tval_readable(thr, tv_obj)); +#endif + DUK_WO_NORETURN(return 0;); + break; + } + + case DUK_TAG_BOOLEAN: { + DUK_DDD(DUK_DDDPRINT("base object is a boolean, start lookup from boolean prototype")); + curr = thr->builtins[DUK_BIDX_BOOLEAN_PROTOTYPE]; + break; + } + + case DUK_TAG_STRING: { + duk_hstring *h = DUK_TVAL_GET_STRING(tv_obj); + + /* + * Note: currently no fast path for array index writes. + * They won't be possible anyway as strings are immutable. + */ + + DUK_ASSERT(key == NULL); + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + /* Symbols (ES2015 or hidden) don't have virtual properties. */ + curr = thr->builtins[DUK_BIDX_SYMBOL_PROTOTYPE]; + goto lookup; + } + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + goto fail_not_writable; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && + arr_idx < DUK_HSTRING_GET_CHARLEN(h)) { + goto fail_not_writable; + } + + DUK_DDD(DUK_DDDPRINT("base object is a string, start lookup from string prototype")); + curr = thr->builtins[DUK_BIDX_STRING_PROTOTYPE]; + goto lookup; /* avoid double coercion */ + } + + case DUK_TAG_OBJECT: { + orig = DUK_TVAL_GET_OBJECT(tv_obj); + DUK_ASSERT(orig != NULL); + +#if defined(DUK_USE_ROM_OBJECTS) + /* With this check in place fast paths won't need read-only + * object checks. This is technically incorrect if there are + * setters that cause no writes to ROM objects, but current + * built-ins don't have such setters. + */ + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) orig)) { + DUK_DD(DUK_DDPRINT("attempt to putprop on read-only target object")); + goto fail_not_writable_no_pop; /* Must avoid duk_pop() in exit path */ + } +#endif + + /* The fast path for array property put is not fully compliant: + * If one places conflicting number-indexed properties into + * Array.prototype (for example, a non-writable Array.prototype[7]) + * the fast path will incorrectly ignore them. + * + * This fast path could be made compliant by falling through + * to the slow path if the previous value was UNUSED. This would + * also remove the need to check for extensibility. Right now a + * non-extensible array is slower than an extensible one as far + * as writes are concerned. + * + * The fast path behavior is documented in more detail here: + * tests/ecmascript/test-misc-array-fast-write.js + */ + + /* XXX: array .length? */ + +#if defined(DUK_USE_ARRAY_PROP_FASTPATH) + if (duk__putprop_shallow_fastpath_array_tval(thr, orig, tv_key, tv_val) != 0) { + DUK_DDD(DUK_DDDPRINT("array fast path success")); + DUK_STATS_INC(thr->heap, stats_putprop_arrayidx); + return 1; + } +#endif + +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + if (duk__putprop_fastpath_bufobj_tval(thr, orig, tv_key, tv_val) != 0) { + DUK_DDD(DUK_DDDPRINT("base is bufobj, key is a number, bufobj fast path")); + DUK_STATS_INC(thr->heap, stats_putprop_bufobjidx); + return 1; + } +#endif + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_UNLIKELY(DUK_HOBJECT_IS_PROXY(orig))) { + duk_hobject *h_target; + duk_bool_t tmp_bool; + + if (duk__proxy_check_prop(thr, orig, DUK_STRIDX_SET, tv_key, &h_target)) { + /* -> [ ... trap handler ] */ + DUK_DDD(DUK_DDDPRINT("-> proxy object 'set' for key %!T", (duk_tval *) tv_key)); + DUK_STATS_INC(thr->heap, stats_putprop_proxy); + duk_push_hobject(thr, h_target); /* target */ + duk_push_tval(thr, tv_key); /* P */ + duk_push_tval(thr, tv_val); /* V */ + duk_push_tval(thr, tv_obj); /* Receiver: Proxy object */ + duk_call_method(thr, 4 /*nargs*/); + tmp_bool = duk_to_boolean_top_pop(thr); + if (!tmp_bool) { + goto fail_proxy_rejected; + } + + /* Target object must be checked for a conflicting + * non-configurable property. + */ + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + + if (duk__get_own_propdesc_raw(thr, h_target, key, arr_idx, &desc, DUK_GETDESC_FLAG_PUSH_VALUE)) { + duk_tval *tv_targ = duk_require_tval(thr, -1); + duk_bool_t datadesc_reject; + duk_bool_t accdesc_reject; + + DUK_DDD(DUK_DDDPRINT("proxy 'set': target has matching property %!O, check for " + "conflicting property; tv_val=%!T, tv_targ=%!T, desc.flags=0x%08lx, " + "desc.get=%p, desc.set=%p", + (duk_heaphdr *) key, (duk_tval *) tv_val, (duk_tval *) tv_targ, + (unsigned long) desc.flags, + (void *) desc.get, (void *) desc.set)); + + datadesc_reject = !(desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) && + !(desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && + !(desc.flags & DUK_PROPDESC_FLAG_WRITABLE) && + !duk_js_samevalue(tv_val, tv_targ); + accdesc_reject = (desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) && + !(desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && + (desc.set == NULL); + if (datadesc_reject || accdesc_reject) { + DUK_ERROR_TYPE(thr, DUK_STR_PROXY_REJECTED); + DUK_WO_NORETURN(return 0;); + } + + duk_pop_2_unsafe(thr); + } else { + duk_pop_unsafe(thr); + } + return 1; /* success */ + } + + orig = h_target; /* resume write to target */ + DUK_TVAL_SET_OBJECT(tv_obj, orig); + } +#endif /* DUK_USE_ES6_PROXY */ + + curr = orig; + break; + } + + case DUK_TAG_BUFFER: { + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv_obj); + duk_int_t pop_count = 0; + + /* + * Because buffer values may be looped over and read/written + * from, an array index fast path is important. + */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_key)) { + arr_idx = duk__tval_fastint_to_arr_idx(tv_key); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a fast-path fastint; arr_idx %ld", (long) arr_idx)); + pop_count = 0; + } else +#endif + if (DUK_TVAL_IS_NUMBER(tv_key)) { + arr_idx = duk__tval_number_to_arr_idx(tv_key); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a fast-path number; arr_idx %ld", (long) arr_idx)); + pop_count = 0; + } else { + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a non-fast-path number; after " + "coercion key is %!T, arr_idx %ld", + (duk_tval *) duk_get_tval(thr, -1), (long) arr_idx)); + pop_count = 1; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && + arr_idx < DUK_HBUFFER_GET_SIZE(h)) { + duk_uint8_t *data; + DUK_DDD(DUK_DDDPRINT("writing to buffer data at index %ld", (long) arr_idx)); + data = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h); + + /* XXX: duk_to_int() ensures we'll get 8 lowest bits as + * as input is within duk_int_t range (capped outside it). + */ +#if defined(DUK_USE_FASTINT) + /* Buffer writes are often integers. */ + if (DUK_TVAL_IS_FASTINT(tv_val)) { + data[arr_idx] = (duk_uint8_t) DUK_TVAL_GET_FASTINT_U32(tv_val); + } + else +#endif + { + duk_push_tval(thr, tv_val); + data[arr_idx] = (duk_uint8_t) duk_to_uint32(thr, -1); + pop_count++; + } + + duk_pop_n_unsafe(thr, pop_count); + DUK_DDD(DUK_DDDPRINT("result: success (buffer data write)")); + DUK_STATS_INC(thr->heap, stats_putprop_bufferidx); + return 1; + } + + if (pop_count == 0) { + /* This is a pretty awkward control flow, but we need to recheck the + * key coercion here. + */ + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + DUK_DDD(DUK_DDDPRINT("base object buffer, key is a non-fast-path number; after " + "coercion key is %!T, arr_idx %ld", + (duk_tval *) duk_get_tval(thr, -1), (long) arr_idx)); + } + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + goto fail_not_writable; + } + + DUK_DDD(DUK_DDDPRINT("base object is a buffer, start lookup from Uint8Array prototype")); + curr = thr->builtins[DUK_BIDX_UINT8ARRAY_PROTOTYPE]; + goto lookup; /* avoid double coercion */ + } + + case DUK_TAG_POINTER: { + DUK_DDD(DUK_DDDPRINT("base object is a pointer, start lookup from pointer prototype")); + curr = thr->builtins[DUK_BIDX_POINTER_PROTOTYPE]; + break; + } + + case DUK_TAG_LIGHTFUNC: { + /* Lightfuncs have no own properties and are considered non-extensible. + * However, the write may be captured by an inherited setter which + * means we can't stop the lookup here. + */ + DUK_DDD(DUK_DDDPRINT("base object is a lightfunc, start lookup from function prototype")); + curr = thr->builtins[DUK_BIDX_NATIVE_FUNCTION_PROTOTYPE]; + break; + } + +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + /* number */ + DUK_DDD(DUK_DDDPRINT("base object is a number, start lookup from number prototype")); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_obj)); + curr = thr->builtins[DUK_BIDX_NUMBER_PROTOTYPE]; + break; + } + } + + DUK_ASSERT(key == NULL); + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + + lookup: + + /* + * Check whether the property already exists in the prototype chain. + * Note that the actual write goes into the original base object + * (except if an accessor property captures the write). + */ + + /* [key] */ + + DUK_ASSERT(curr != NULL); + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + if (!duk__get_own_propdesc_raw(thr, curr, key, arr_idx, &desc, 0 /*flags*/)) { /* don't push value */ + goto next_in_chain; + } + + if (desc.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + /* + * Found existing accessor property (own or inherited). + * Call setter with 'this' set to orig, and value as the only argument. + * Setter calls are OK even for ROM objects. + * + * Note: no exotic arguments object behavior, because [[Put]] never + * calls [[DefineOwnProperty]] (E5 Section 8.12.5, step 5.b). + */ + + duk_hobject *setter; + + DUK_DD(DUK_DDPRINT("put to an own or inherited accessor, calling setter")); + + setter = DUK_HOBJECT_E_GET_VALUE_SETTER(thr->heap, curr, desc.e_idx); + if (!setter) { + goto fail_no_setter; + } + duk_push_hobject(thr, setter); + duk_push_tval(thr, tv_obj); /* note: original, uncoerced base */ + duk_push_tval(thr, tv_val); /* [key setter this val] */ +#if defined(DUK_USE_NONSTD_SETTER_KEY_ARGUMENT) + duk_dup_m4(thr); + duk_call_method(thr, 2); /* [key setter this val key] -> [key retval] */ +#else + duk_call_method(thr, 1); /* [key setter this val] -> [key retval] */ +#endif + duk_pop_unsafe(thr); /* ignore retval -> [key] */ + goto success_no_arguments_exotic; + } + + if (orig == NULL) { + /* + * Found existing own or inherited plain property, but original + * base is a primitive value. + */ + DUK_DD(DUK_DDPRINT("attempt to create a new property in a primitive base object")); + goto fail_base_primitive; + } + + if (curr != orig) { + /* + * Found existing inherited plain property. + * Do an access control check, and if OK, write + * new property to 'orig'. + */ + if (!DUK_HOBJECT_HAS_EXTENSIBLE(orig)) { + DUK_DD(DUK_DDPRINT("found existing inherited plain property, but original object is not extensible")); + goto fail_not_extensible; + } + if (!(desc.flags & DUK_PROPDESC_FLAG_WRITABLE)) { + DUK_DD(DUK_DDPRINT("found existing inherited plain property, original object is extensible, but inherited property is not writable")); + goto fail_not_writable; + } + DUK_DD(DUK_DDPRINT("put to new property, object extensible, inherited property found and is writable")); + goto create_new; + } else { + /* + * Found existing own (non-inherited) plain property. + * Do an access control check and update in place. + */ + + if (!(desc.flags & DUK_PROPDESC_FLAG_WRITABLE)) { + DUK_DD(DUK_DDPRINT("found existing own (non-inherited) plain property, but property is not writable")); + goto fail_not_writable; + } + if (desc.flags & DUK_PROPDESC_FLAG_VIRTUAL) { + DUK_DD(DUK_DDPRINT("found existing own (non-inherited) virtual property, property is writable")); + + if (DUK_HOBJECT_IS_ARRAY(curr)) { + /* + * Write to 'length' of an array is a very complex case + * handled in a helper which updates both the array elements + * and writes the new 'length'. The write may result in an + * unconditional RangeError or a partial write (indicated + * by a return code). + * + * Note: the helper has an unnecessary writability check + * for 'length', we already know it is writable. + */ + DUK_ASSERT(key == DUK_HTHREAD_STRING_LENGTH(thr)); /* only virtual array property */ + + DUK_DDD(DUK_DDDPRINT("writing existing 'length' property to array exotic, invoke complex helper")); + + /* XXX: the helper currently assumes stack top contains new + * 'length' value and the whole calling convention is not very + * compatible with what we need. + */ + + duk_push_tval(thr, tv_val); /* [key val] */ + rc = duk__handle_put_array_length(thr, orig); + duk_pop_unsafe(thr); /* [key val] -> [key] */ + if (!rc) { + goto fail_array_length_partial; + } + + /* key is 'length', cannot match argument exotic behavior */ + goto success_no_arguments_exotic; + } +#if defined(DUK_USE_BUFFEROBJECT_SUPPORT) + else if (DUK_HOBJECT_IS_BUFOBJ(curr)) { + duk_hbufobj *h_bufobj; + duk_uint_t byte_off; + duk_small_uint_t elem_size; + + h_bufobj = (duk_hbufobj *) curr; + DUK_HBUFOBJ_ASSERT_VALID(h_bufobj); + + DUK_DD(DUK_DDPRINT("writable virtual property is in buffer object")); + + /* Careful with wrapping: arr_idx upshift may easily wrap, whereas + * length downshift won't. + */ + if (arr_idx < (h_bufobj->length >> h_bufobj->shift) && DUK_HBUFOBJ_HAS_VIRTUAL_INDICES(h_bufobj)) { + duk_uint8_t *data; + DUK_DDD(DUK_DDDPRINT("writing to buffer data at index %ld", (long) arr_idx)); + + DUK_ASSERT(arr_idx != DUK__NO_ARRAY_INDEX); /* index/length check guarantees */ + byte_off = arr_idx << h_bufobj->shift; /* no wrap assuming h_bufobj->length is valid */ + elem_size = (duk_small_uint_t) (1U << h_bufobj->shift); + + /* Coerce to number before validating pointers etc so that the + * number coercions in duk_hbufobj_validated_write() are + * guaranteed to be side effect free and not invalidate the + * pointer checks we do here. + */ + duk_push_tval(thr, tv_val); + (void) duk_to_number_m1(thr); + + if (h_bufobj->buf != NULL && DUK_HBUFOBJ_VALID_BYTEOFFSET_EXCL(h_bufobj, byte_off + elem_size)) { + data = (duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(thr->heap, h_bufobj->buf) + h_bufobj->offset + byte_off; + duk_hbufobj_validated_write(thr, h_bufobj, data, elem_size); + } else { + DUK_D(DUK_DPRINT("bufobj access out of underlying buffer, ignoring (write skipped)")); + } + duk_pop_unsafe(thr); + goto success_no_arguments_exotic; + } + } +#endif /* DUK_USE_BUFFEROBJECT_SUPPORT */ + + DUK_D(DUK_DPRINT("should not happen, key %!O", key)); + goto fail_internal; /* should not happen */ + } + DUK_DD(DUK_DDPRINT("put to existing own plain property, property is writable")); + goto update_old; + } + DUK_UNREACHABLE(); + + next_in_chain: + /* XXX: option to pretend property doesn't exist if sanity limit is + * hit might be useful. + */ + if (DUK_UNLIKELY(sanity-- == 0)) { + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + } + curr = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, curr); + } while (curr != NULL); + + /* + * Property not found in prototype chain. + */ + + DUK_DDD(DUK_DDDPRINT("property not found in prototype chain")); + + if (orig == NULL) { + DUK_DD(DUK_DDPRINT("attempt to create a new property in a primitive base object")); + goto fail_base_primitive; + } + + if (!DUK_HOBJECT_HAS_EXTENSIBLE(orig)) { + DUK_DD(DUK_DDPRINT("put to a new property (not found in prototype chain), but original object not extensible")); + goto fail_not_extensible; + } + + goto create_new; + + update_old: + + /* + * Update an existing property of the base object. + */ + + /* [key] */ + + DUK_DDD(DUK_DDDPRINT("update an existing property of the original object")); + + DUK_ASSERT(orig != NULL); +#if defined(DUK_USE_ROM_OBJECTS) + /* This should not happen because DUK_TAG_OBJECT case checks + * for this already, but check just in case. + */ + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) orig)) { + goto fail_not_writable; + } +#endif + + /* Although there are writable virtual properties (e.g. plain buffer + * and buffer object number indices), they are handled before we come + * here. + */ + DUK_ASSERT((desc.flags & DUK_PROPDESC_FLAG_VIRTUAL) == 0); + DUK_ASSERT(desc.a_idx >= 0 || desc.e_idx >= 0); + + /* Array own property .length is handled above. */ + DUK_ASSERT(!(DUK_HOBJECT_IS_ARRAY(orig) && key == DUK_HTHREAD_STRING_LENGTH(thr))); + + if (desc.e_idx >= 0) { + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, orig, desc.e_idx); + DUK_DDD(DUK_DDDPRINT("previous entry value: %!iT", (duk_tval *) tv)); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv, tv_val); /* side effects; e_idx may be invalidated */ + /* don't touch property attributes or hash part */ + DUK_DD(DUK_DDPRINT("put to an existing entry at index %ld -> new value %!iT", + (long) desc.e_idx, (duk_tval *) tv)); + } else { + /* Note: array entries are always writable, so the writability check + * above is pointless for them. The check could be avoided with some + * refactoring but is probably not worth it. + */ + + DUK_ASSERT(desc.a_idx >= 0); + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, orig, desc.a_idx); + DUK_DDD(DUK_DDDPRINT("previous array value: %!iT", (duk_tval *) tv)); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv, tv_val); /* side effects; a_idx may be invalidated */ + DUK_DD(DUK_DDPRINT("put to an existing array entry at index %ld -> new value %!iT", + (long) desc.a_idx, (duk_tval *) tv)); + } + + /* Regardless of whether property is found in entry or array part, + * it may have arguments exotic behavior (array indices may reside + * in entry part for abandoned / non-existent array parts). + */ + goto success_with_arguments_exotic; + + create_new: + + /* + * Create a new property in the original object. + * + * Exotic properties need to be reconsidered here from a write + * perspective (not just property attributes perspective). + * However, the property does not exist in the object already, + * so this limits the kind of exotic properties that apply. + */ + + /* [key] */ + + DUK_DDD(DUK_DDDPRINT("create new property to original object")); + + DUK_ASSERT(orig != NULL); + + /* Array own property .length is handled above. */ + DUK_ASSERT(!(DUK_HOBJECT_IS_ARRAY(orig) && key == DUK_HTHREAD_STRING_LENGTH(thr))); + +#if defined(DUK_USE_ROM_OBJECTS) + /* This should not happen because DUK_TAG_OBJECT case checks + * for this already, but check just in case. + */ + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) orig)) { + goto fail_not_writable; + } +#endif + + /* Not possible because array object 'length' is present + * from its creation and cannot be deleted, and is thus + * caught as an existing property above. + */ + DUK_ASSERT(!(DUK_HOBJECT_HAS_EXOTIC_ARRAY(orig) && + key == DUK_HTHREAD_STRING_LENGTH(thr))); + + if (DUK_HOBJECT_HAS_EXOTIC_ARRAY(orig) && + arr_idx != DUK__NO_ARRAY_INDEX) { + /* automatic length update */ + duk_uint32_t old_len; + duk_harray *a; + + a = (duk_harray *) orig; + DUK_HARRAY_ASSERT_VALID(a); + + old_len = a->length; + + if (arr_idx >= old_len) { + DUK_DDD(DUK_DDDPRINT("write new array entry requires length update " + "(arr_idx=%ld, old_len=%ld)", + (long) arr_idx, (long) old_len)); + + if (DUK_HARRAY_LENGTH_NONWRITABLE(a)) { + DUK_DD(DUK_DDPRINT("attempt to extend array, but array 'length' is not writable")); + goto fail_not_writable; + } + + /* Note: actual update happens once write has been completed + * without error below. The write should always succeed + * from a specification viewpoint, but we may e.g. run out + * of memory. It's safer in this order. + */ + + DUK_ASSERT(arr_idx != 0xffffffffUL); + new_array_length = arr_idx + 1; /* flag for later write */ + } else { + DUK_DDD(DUK_DDDPRINT("write new array entry does not require length update " + "(arr_idx=%ld, old_len=%ld)", + (long) arr_idx, (long) old_len)); + } + } + + /* write_to_array_part: */ + + /* + * Write to array part? + * + * Note: array abandonding requires a property resize which uses + * 'rechecks' valstack for temporaries and may cause any existing + * valstack pointers to be invalidated. To protect against this, + * tv_obj, tv_key, and tv_val are copies of the original inputs. + */ + + if (arr_idx != DUK__NO_ARRAY_INDEX && DUK_HOBJECT_HAS_ARRAY_PART(orig)) { + tv = duk__obtain_arridx_slot(thr, arr_idx, orig); + if (tv == NULL) { + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(orig)); + goto write_to_entry_part; + } + + /* prev value must be unused, no decref */ + DUK_ASSERT(DUK_TVAL_IS_UNUSED(tv)); + DUK_TVAL_SET_TVAL(tv, tv_val); + DUK_TVAL_INCREF(thr, tv); + DUK_DD(DUK_DDPRINT("put to new array entry: %ld -> %!T", + (long) arr_idx, (duk_tval *) tv)); + + /* Note: array part values are [[Writable]], [[Enumerable]], + * and [[Configurable]] which matches the required attributes + * here. + */ + goto entry_updated; + } + + write_to_entry_part: + + /* + * Write to entry part + */ + + /* entry allocation updates hash part and increases the key + * refcount; may need a props allocation resize but doesn't + * 'recheck' the valstack. + */ + e_idx = duk__hobject_alloc_entry_checked(thr, orig, key); + DUK_ASSERT(e_idx >= 0); + + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, orig, e_idx); + /* prev value can be garbage, no decref */ + DUK_TVAL_SET_TVAL(tv, tv_val); + DUK_TVAL_INCREF(thr, tv); + DUK_HOBJECT_E_SET_FLAGS(thr->heap, orig, e_idx, DUK_PROPDESC_FLAGS_WEC); + goto entry_updated; + + entry_updated: + + /* + * Possible pending array length update, which must only be done + * if the actual entry write succeeded. + */ + + if (new_array_length > 0) { + /* Note: zero works as a "no update" marker because the new length + * can never be zero after a new property is written. + */ + + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_ARRAY(orig)); + + DUK_DDD(DUK_DDDPRINT("write successful, pending array length update to: %ld", + (long) new_array_length)); + + ((duk_harray *) orig)->length = new_array_length; + } + + /* + * Arguments exotic behavior not possible for new properties: all + * magically bound properties are initially present in the arguments + * object, and if they are deleted, the binding is also removed from + * parameter map. + */ + + goto success_no_arguments_exotic; + + success_with_arguments_exotic: + + /* + * Arguments objects have exotic [[DefineOwnProperty]] which updates + * the internal 'map' of arguments for writes to currently mapped + * arguments. More conretely, writes to mapped arguments generate + * a write to a bound variable. + * + * The [[Put]] algorithm invokes [[DefineOwnProperty]] for existing + * data properties and new properties, but not for existing accessors. + * Hence, in E5 Section 10.6 ([[DefinedOwnProperty]] algorithm), we + * have a Desc with 'Value' (and possibly other properties too), and + * we end up in step 5.b.i. + */ + + if (arr_idx != DUK__NO_ARRAY_INDEX && + DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(orig)) { + /* Note: only numbered indices are relevant, so arr_idx fast reject + * is good (this is valid unless there are more than 4**32-1 arguments). + */ + + DUK_DDD(DUK_DDDPRINT("putprop successful, arguments exotic behavior needed")); + + /* Note: we can reuse 'desc' here */ + + /* XXX: top of stack must contain value, which helper doesn't touch, + * rework to use tv_val directly? + */ + + duk_push_tval(thr, tv_val); + (void) duk__check_arguments_map_for_put(thr, orig, key, &desc, throw_flag); + duk_pop_unsafe(thr); + } + /* fall thru */ + + success_no_arguments_exotic: + /* shared exit path now */ + DUK_DDD(DUK_DDDPRINT("result: success")); + duk_pop_unsafe(thr); /* remove key */ + return 1; + +#if defined(DUK_USE_ES6_PROXY) + fail_proxy_rejected: + DUK_DDD(DUK_DDDPRINT("result: error, proxy rejects")); + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_PROXY_REJECTED); + DUK_WO_NORETURN(return 0;); + } + /* Note: no key on stack */ + return 0; +#endif + + fail_base_primitive: + DUK_DDD(DUK_DDDPRINT("result: error, base primitive")); + if (throw_flag) { +#if defined(DUK_USE_PARANOID_ERRORS) + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_BASE); +#else + DUK_ERROR_FMT2(thr, DUK_ERR_TYPE_ERROR, "cannot write property %s of %s", + duk_push_string_tval_readable(thr, tv_key), duk_push_string_tval_readable(thr, tv_obj)); +#endif + DUK_WO_NORETURN(return 0;); + } + duk_pop_unsafe(thr); /* remove key */ + return 0; + + fail_not_extensible: + DUK_DDD(DUK_DDDPRINT("result: error, not extensible")); + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_EXTENSIBLE); + DUK_WO_NORETURN(return 0;); + } + duk_pop_unsafe(thr); /* remove key */ + return 0; + + fail_not_writable: + DUK_DDD(DUK_DDDPRINT("result: error, not writable")); + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_WRITABLE); + DUK_WO_NORETURN(return 0;); + } + duk_pop_unsafe(thr); /* remove key */ + return 0; + +#if defined(DUK_USE_ROM_OBJECTS) + fail_not_writable_no_pop: + DUK_DDD(DUK_DDDPRINT("result: error, not writable")); + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_WRITABLE); + DUK_WO_NORETURN(return 0;); + } + return 0; +#endif + + fail_array_length_partial: + DUK_DD(DUK_DDPRINT("result: error, array length write only partially successful")); + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); + DUK_WO_NORETURN(return 0;); + } + duk_pop_unsafe(thr); /* remove key */ + return 0; + + fail_no_setter: + DUK_DDD(DUK_DDDPRINT("result: error, accessor property without setter")); + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_SETTER_UNDEFINED); + DUK_WO_NORETURN(return 0;); + } + duk_pop_unsafe(thr); /* remove key */ + return 0; + + fail_internal: + DUK_DDD(DUK_DDDPRINT("result: error, internal")); + if (throw_flag) { + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); + } + duk_pop_unsafe(thr); /* remove key */ + return 0; +} + +/* + * ECMAScript compliant [[Delete]](P, Throw). + */ + +DUK_INTERNAL duk_bool_t duk_hobject_delprop_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_small_uint_t flags) { + duk_propdesc desc; + duk_tval *tv; + duk_uint32_t arr_idx; + duk_bool_t throw_flag; + duk_bool_t force_flag; + + throw_flag = (flags & DUK_DELPROP_FLAG_THROW); + force_flag = (flags & DUK_DELPROP_FLAG_FORCE); + + DUK_DDD(DUK_DDDPRINT("delprop_raw: thr=%p, obj=%p, key=%p, throw=%ld, force=%ld (obj -> %!O, key -> %!O)", + (void *) thr, (void *) obj, (void *) key, (long) throw_flag, (long) force_flag, + (duk_heaphdr *) obj, (duk_heaphdr *) key)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + arr_idx = DUK_HSTRING_GET_ARRIDX_FAST(key); + + /* 0 = don't push current value */ + if (!duk__get_own_propdesc_raw(thr, obj, key, arr_idx, &desc, 0 /*flags*/)) { /* don't push value */ + DUK_DDD(DUK_DDDPRINT("property not found, succeed always")); + goto success; + } + +#if defined(DUK_USE_ROM_OBJECTS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_DD(DUK_DDPRINT("attempt to delprop on read-only target object")); + goto fail_not_configurable; + } +#endif + + if ((desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) == 0 && !force_flag) { + goto fail_not_configurable; + } + if (desc.a_idx < 0 && desc.e_idx < 0) { + /* Currently there are no deletable virtual properties, but + * with force_flag we might attempt to delete one. + */ + DUK_DD(DUK_DDPRINT("delete failed: property found, force flag, but virtual (and implicitly non-configurable)")); + goto fail_virtual; + } + + if (desc.a_idx >= 0) { + DUK_ASSERT(desc.e_idx < 0); + + tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, desc.a_idx); + DUK_TVAL_SET_UNUSED_UPDREF(thr, tv); /* side effects */ + goto success; + } else { + DUK_ASSERT(desc.a_idx < 0); + + /* remove hash entry (no decref) */ +#if defined(DUK_USE_HOBJECT_HASH_PART) + if (desc.h_idx >= 0) { + duk_uint32_t *h_base = DUK_HOBJECT_H_GET_BASE(thr->heap, obj); + + DUK_DDD(DUK_DDDPRINT("removing hash entry at h_idx %ld", (long) desc.h_idx)); + DUK_ASSERT(DUK_HOBJECT_GET_HSIZE(obj) > 0); + DUK_ASSERT((duk_uint32_t) desc.h_idx < DUK_HOBJECT_GET_HSIZE(obj)); + h_base[desc.h_idx] = DUK__HASH_DELETED; + } else { + DUK_ASSERT(DUK_HOBJECT_GET_HSIZE(obj) == 0); + } +#else + DUK_ASSERT(DUK_HOBJECT_GET_HSIZE(obj) == 0); +#endif + + /* Remove value. This requires multiple writes so avoid side + * effects via no-refzero macros so that e_idx is not + * invalidated. + */ + DUK_DDD(DUK_DDDPRINT("before removing value, e_idx %ld, key %p, key at slot %p", + (long) desc.e_idx, (void *) key, (void *) DUK_HOBJECT_E_GET_KEY(thr->heap, obj, desc.e_idx))); + DUK_DDD(DUK_DDDPRINT("removing value at e_idx %ld", (long) desc.e_idx)); + if (DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, desc.e_idx)) { + duk_hobject *tmp; + + tmp = DUK_HOBJECT_E_GET_VALUE_GETTER(thr->heap, obj, desc.e_idx); + DUK_HOBJECT_E_SET_VALUE_GETTER(thr->heap, obj, desc.e_idx, NULL); + DUK_UNREF(tmp); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, tmp); + + tmp = DUK_HOBJECT_E_GET_VALUE_SETTER(thr->heap, obj, desc.e_idx); + DUK_HOBJECT_E_SET_VALUE_SETTER(thr->heap, obj, desc.e_idx, NULL); + DUK_UNREF(tmp); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, tmp); + } else { + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, desc.e_idx); + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, tv); + } +#if 0 + /* Not strictly necessary because if key == NULL, flag MUST be ignored. */ + DUK_HOBJECT_E_SET_FLAGS(thr->heap, obj, desc.e_idx, 0); +#endif + + /* Remove key. */ + DUK_DDD(DUK_DDDPRINT("before removing key, e_idx %ld, key %p, key at slot %p", + (long) desc.e_idx, (void *) key, (void *) DUK_HOBJECT_E_GET_KEY(thr->heap, obj, desc.e_idx))); + DUK_DDD(DUK_DDDPRINT("removing key at e_idx %ld", (long) desc.e_idx)); + DUK_ASSERT(key == DUK_HOBJECT_E_GET_KEY(thr->heap, obj, desc.e_idx)); + DUK_HOBJECT_E_SET_KEY(thr->heap, obj, desc.e_idx, NULL); + DUK_HSTRING_DECREF_NORZ(thr, key); + + /* Trigger refzero side effects only when we're done as a + * finalizer might operate on the object and affect the + * e_idx we're supposed to use. + */ + DUK_REFZERO_CHECK_SLOW(thr); + goto success; + } + + DUK_UNREACHABLE(); + + success: + /* + * Argument exotic [[Delete]] behavior (E5 Section 10.6) is + * a post-check, keeping arguments internal 'map' in sync with + * any successful deletes (note that property does not need to + * exist for delete to 'succeed'). + * + * Delete key from 'map'. Since 'map' only contains array index + * keys, we can use arr_idx for a fast skip. + */ + + DUK_DDD(DUK_DDDPRINT("delete successful, check for arguments exotic behavior")); + + if (arr_idx != DUK__NO_ARRAY_INDEX && DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)) { + /* Note: only numbered indices are relevant, so arr_idx fast reject + * is good (this is valid unless there are more than 4**32-1 arguments). + */ + + DUK_DDD(DUK_DDDPRINT("delete successful, arguments exotic behavior needed")); + + /* Note: we can reuse 'desc' here */ + (void) duk__check_arguments_map_for_delete(thr, obj, key, &desc); + } + + DUK_DDD(DUK_DDDPRINT("delete successful")); + return 1; + + fail_virtual: /* just use the same "not configurable" error message */ + fail_not_configurable: + DUK_DDD(DUK_DDDPRINT("delete failed: property found, not configurable")); + + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); + DUK_WO_NORETURN(return 0;); + } + return 0; +} + +/* + * DELPROP: ECMAScript property deletion. + */ + +DUK_INTERNAL duk_bool_t duk_hobject_delprop(duk_hthread *thr, duk_tval *tv_obj, duk_tval *tv_key, duk_bool_t throw_flag) { + duk_hstring *key = NULL; +#if defined(DUK_USE_ES6_PROXY) + duk_propdesc desc; +#endif + duk_int_t entry_top; + duk_uint32_t arr_idx = DUK__NO_ARRAY_INDEX; + duk_bool_t rc; + + DUK_DDD(DUK_DDDPRINT("delprop: thr=%p, obj=%p, key=%p (obj -> %!T, key -> %!T)", + (void *) thr, (void *) tv_obj, (void *) tv_key, + (duk_tval *) tv_obj, (duk_tval *) tv_key)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(tv_obj != NULL); + DUK_ASSERT(tv_key != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + /* Storing the entry top is cheaper here to ensure stack is correct at exit, + * as there are several paths out. + */ + entry_top = duk_get_top(thr); + + if (DUK_TVAL_IS_UNDEFINED(tv_obj) || + DUK_TVAL_IS_NULL(tv_obj)) { + DUK_DDD(DUK_DDDPRINT("base object is undefined or null -> reject")); + goto fail_invalid_base_uncond; + } + + duk_push_tval(thr, tv_obj); + duk_push_tval(thr, tv_key); + + tv_obj = DUK_GET_TVAL_NEGIDX(thr, -2); + if (DUK_TVAL_IS_OBJECT(tv_obj)) { + duk_hobject *obj = DUK_TVAL_GET_OBJECT(tv_obj); + DUK_ASSERT(obj != NULL); + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_UNLIKELY(DUK_HOBJECT_IS_PROXY(obj))) { + duk_hobject *h_target; + duk_bool_t tmp_bool; + + /* Note: proxy handling must happen before key is string coerced. */ + + if (duk__proxy_check_prop(thr, obj, DUK_STRIDX_DELETE_PROPERTY, tv_key, &h_target)) { + /* -> [ ... obj key trap handler ] */ + DUK_DDD(DUK_DDDPRINT("-> proxy object 'deleteProperty' for key %!T", (duk_tval *) tv_key)); + duk_push_hobject(thr, h_target); /* target */ + duk_dup_m4(thr); /* P */ + duk_call_method(thr, 2 /*nargs*/); + tmp_bool = duk_to_boolean_top_pop(thr); + if (!tmp_bool) { + goto fail_proxy_rejected; /* retval indicates delete failed */ + } + + /* Target object must be checked for a conflicting + * non-configurable property. + */ + tv_key = DUK_GET_TVAL_NEGIDX(thr, -1); + arr_idx = duk__push_tval_to_property_key(thr, tv_key, &key); + DUK_ASSERT(key != NULL); + + if (duk__get_own_propdesc_raw(thr, h_target, key, arr_idx, &desc, 0 /*flags*/)) { /* don't push value */ + duk_small_int_t desc_reject; + + DUK_DDD(DUK_DDDPRINT("proxy 'deleteProperty': target has matching property %!O, check for " + "conflicting property; desc.flags=0x%08lx, " + "desc.get=%p, desc.set=%p", + (duk_heaphdr *) key, (unsigned long) desc.flags, + (void *) desc.get, (void *) desc.set)); + + desc_reject = !(desc.flags & DUK_PROPDESC_FLAG_CONFIGURABLE); + if (desc_reject) { + /* unconditional */ + DUK_ERROR_TYPE(thr, DUK_STR_PROXY_REJECTED); + DUK_WO_NORETURN(return 0;); + } + } + rc = 1; /* success */ + goto done_rc; + } + + obj = h_target; /* resume delete to target */ + } +#endif /* DUK_USE_ES6_PROXY */ + + arr_idx = duk__to_property_key(thr, -1, &key); + DUK_ASSERT(key != NULL); + + rc = duk_hobject_delprop_raw(thr, obj, key, throw_flag ? DUK_DELPROP_FLAG_THROW : 0); + goto done_rc; + } else if (DUK_TVAL_IS_STRING(tv_obj)) { + /* String has .length and array index virtual properties + * which can't be deleted. No need for a symbol check; + * no offending virtual symbols exist. + */ + /* XXX: unnecessary string coercion for array indices, + * intentional to keep small. + */ + duk_hstring *h = DUK_TVAL_GET_STRING(tv_obj); + DUK_ASSERT(h != NULL); + + arr_idx = duk__to_property_key(thr, -1, &key); + DUK_ASSERT(key != NULL); + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + goto fail_not_configurable; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && + arr_idx < DUK_HSTRING_GET_CHARLEN(h)) { + goto fail_not_configurable; + } + } else if (DUK_TVAL_IS_BUFFER(tv_obj)) { + /* XXX: unnecessary string coercion for array indices, + * intentional to keep small; some overlap with string + * handling. + */ + duk_hbuffer *h = DUK_TVAL_GET_BUFFER(tv_obj); + DUK_ASSERT(h != NULL); + + arr_idx = duk__to_property_key(thr, -1, &key); + DUK_ASSERT(key != NULL); + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + goto fail_not_configurable; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && + arr_idx < DUK_HBUFFER_GET_SIZE(h)) { + goto fail_not_configurable; + } + } else if (DUK_TVAL_IS_LIGHTFUNC(tv_obj)) { + /* Lightfunc has no virtual properties since Duktape 2.2 + * so success. Still must coerce key for side effects. + */ + + arr_idx = duk__to_property_key(thr, -1, &key); + DUK_ASSERT(key != NULL); + DUK_UNREF(key); + } + + /* non-object base, no offending virtual property */ + rc = 1; + goto done_rc; + + done_rc: + duk_set_top_unsafe(thr, entry_top); + return rc; + + fail_invalid_base_uncond: + /* Note: unconditional throw */ + DUK_ASSERT(duk_get_top(thr) == entry_top); +#if defined(DUK_USE_PARANOID_ERRORS) + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_BASE); +#else + DUK_ERROR_FMT2(thr, DUK_ERR_TYPE_ERROR, "cannot delete property %s of %s", + duk_push_string_tval_readable(thr, tv_key), duk_push_string_tval_readable(thr, tv_obj)); +#endif + DUK_WO_NORETURN(return 0;); + +#if defined(DUK_USE_ES6_PROXY) + fail_proxy_rejected: + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_PROXY_REJECTED); + DUK_WO_NORETURN(return 0;); + } + duk_set_top_unsafe(thr, entry_top); + return 0; +#endif + + fail_not_configurable: + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); + DUK_WO_NORETURN(return 0;); + } + duk_set_top_unsafe(thr, entry_top); + return 0; +} + +/* + * Internal helper to define a property with specific flags, ignoring + * normal semantics such as extensibility, write protection etc. + * Overwrites any existing value and attributes unless caller requests + * that value only be updated if it doesn't already exists. + * + * Does not support: + * - virtual properties (error if write attempted) + * - getter/setter properties (error if write attempted) + * - non-default (!= WEC) attributes for array entries (error if attempted) + * - array abandoning: if array part exists, it is always extended + * - array 'length' updating + * + * Stack: [... in_val] -> [] + * + * Used for e.g. built-in initialization and environment record + * operations. + */ + +DUK_INTERNAL void duk_hobject_define_property_internal(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_small_uint_t flags) { + duk_propdesc desc; + duk_uint32_t arr_idx; + duk_int_t e_idx; + duk_tval *tv1 = NULL; + duk_tval *tv2 = NULL; + duk_small_uint_t propflags = flags & DUK_PROPDESC_FLAGS_MASK; /* mask out flags not actually stored */ + + DUK_DDD(DUK_DDDPRINT("define new property (internal): thr=%p, obj=%!O, key=%!O, flags=0x%02lx, val=%!T", + (void *) thr, (duk_heaphdr *) obj, (duk_heaphdr *) key, + (unsigned long) flags, (duk_tval *) duk_get_tval(thr, -1))); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)); + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + DUK_ASSERT(duk_is_valid_index(thr, -1)); /* contains value */ + + arr_idx = DUK_HSTRING_GET_ARRIDX_SLOW(key); + + if (duk__get_own_propdesc_raw(thr, obj, key, arr_idx, &desc, 0 /*flags*/)) { /* don't push value */ + if (desc.e_idx >= 0) { + if (flags & DUK_PROPDESC_FLAG_NO_OVERWRITE) { + DUK_DDD(DUK_DDDPRINT("property already exists in the entry part -> skip as requested")); + goto pop_exit; + } + DUK_DDD(DUK_DDDPRINT("property already exists in the entry part -> update value and attributes")); + if (DUK_UNLIKELY(DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, desc.e_idx))) { + DUK_D(DUK_DPRINT("existing property is an accessor, not supported")); + goto error_internal; + } + + DUK_HOBJECT_E_SET_FLAGS(thr->heap, obj, desc.e_idx, propflags); + tv1 = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, desc.e_idx); + } else if (desc.a_idx >= 0) { + if (flags & DUK_PROPDESC_FLAG_NO_OVERWRITE) { + DUK_DDD(DUK_DDDPRINT("property already exists in the array part -> skip as requested")); + goto pop_exit; + } + DUK_DDD(DUK_DDDPRINT("property already exists in the array part -> update value (assert attributes)")); + if (propflags != DUK_PROPDESC_FLAGS_WEC) { + DUK_D(DUK_DPRINT("existing property in array part, but propflags not WEC (0x%02lx)", + (unsigned long) propflags)); + goto error_internal; + } + + tv1 = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, desc.a_idx); + } else { + if (flags & DUK_PROPDESC_FLAG_NO_OVERWRITE) { + DUK_DDD(DUK_DDDPRINT("property already exists but is virtual -> skip as requested")); + goto pop_exit; + } + if (key == DUK_HTHREAD_STRING_LENGTH(thr) && DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + duk_uint32_t new_len; +#if defined(DUK_USE_DEBUG) + duk_uint32_t prev_len; + prev_len = ((duk_harray *) obj)->length; +#endif + new_len = duk__to_new_array_length_checked(thr, DUK_GET_TVAL_NEGIDX(thr, -1)); + ((duk_harray *) obj)->length = new_len; + DUK_DD(DUK_DDPRINT("internal define property for array .length: %ld -> %ld", + (long) prev_len, (long) ((duk_harray *) obj)->length)); + goto pop_exit; + } + DUK_DD(DUK_DDPRINT("property already exists but is virtual -> failure")); + goto error_virtual; + } + + goto write_value; + } + + if (DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + if (arr_idx != DUK__NO_ARRAY_INDEX) { + DUK_DDD(DUK_DDDPRINT("property does not exist, object has array part -> possibly extend array part and write value (assert attributes)")); + DUK_ASSERT(propflags == DUK_PROPDESC_FLAGS_WEC); + + tv1 = duk__obtain_arridx_slot(thr, arr_idx, obj); + if (tv1 == NULL) { + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(obj)); + goto write_to_entry_part; + } + + tv1 = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, arr_idx); + goto write_value; + } + } + + write_to_entry_part: + DUK_DDD(DUK_DDDPRINT("property does not exist, object belongs in entry part -> allocate new entry and write value and attributes")); + e_idx = duk__hobject_alloc_entry_checked(thr, obj, key); /* increases key refcount */ + DUK_ASSERT(e_idx >= 0); + DUK_HOBJECT_E_SET_FLAGS(thr->heap, obj, e_idx, propflags); + tv1 = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, e_idx); + /* new entry: previous value is garbage; set to undefined to share write_value */ + DUK_TVAL_SET_UNDEFINED(tv1); + goto write_value; + + write_value: + /* tv1 points to value storage */ + + tv2 = duk_require_tval(thr, -1); /* late lookup, avoid side effects */ + DUK_DDD(DUK_DDDPRINT("writing/updating value: %!T -> %!T", + (duk_tval *) tv1, (duk_tval *) tv2)); + + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv2); /* side effects */ + goto pop_exit; + + pop_exit: + duk_pop_unsafe(thr); /* remove in_val */ + return; + + error_virtual: /* share error message */ + error_internal: + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); +} + +/* + * Fast path for defining array indexed values without interning the key. + * This is used by e.g. code for Array prototype and traceback creation so + * must avoid interning. + */ + +DUK_INTERNAL void duk_hobject_define_property_internal_arridx(duk_hthread *thr, duk_hobject *obj, duk_uarridx_t arr_idx, duk_small_uint_t flags) { + duk_hstring *key; + duk_tval *tv1, *tv2; + + DUK_DDD(DUK_DDDPRINT("define new property (internal) arr_idx fast path: thr=%p, obj=%!O, " + "arr_idx=%ld, flags=0x%02lx, val=%!T", + (void *) thr, obj, (long) arr_idx, (unsigned long) flags, + (duk_tval *) duk_get_tval(thr, -1))); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)); + + if (DUK_HOBJECT_HAS_ARRAY_PART(obj) && + arr_idx != DUK__NO_ARRAY_INDEX && + flags == DUK_PROPDESC_FLAGS_WEC) { + DUK_ASSERT((flags & DUK_PROPDESC_FLAG_NO_OVERWRITE) == 0); /* covered by comparison */ + + DUK_DDD(DUK_DDDPRINT("define property to array part (property may or may not exist yet)")); + + tv1 = duk__obtain_arridx_slot(thr, arr_idx, obj); + if (tv1 == NULL) { + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(obj)); + goto write_slow; + } + tv2 = duk_require_tval(thr, -1); + + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv2); /* side effects */ + + duk_pop_unsafe(thr); /* [ ...val ] -> [ ... ] */ + return; + } + + write_slow: + DUK_DDD(DUK_DDDPRINT("define property fast path didn't work, use slow path")); + + key = duk_push_uint_to_hstring(thr, (duk_uint_t) arr_idx); + DUK_ASSERT(key != NULL); + duk_insert(thr, -2); /* [ ... val key ] -> [ ... key val ] */ + + duk_hobject_define_property_internal(thr, obj, key, flags); + + duk_pop_unsafe(thr); /* [ ... key ] -> [ ... ] */ +} + +/* + * Internal helpers for managing object 'length' + */ + +DUK_INTERNAL duk_size_t duk_hobject_get_length(duk_hthread *thr, duk_hobject *obj) { + duk_double_t val; + + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(obj != NULL); + + /* Fast path for Arrays. */ + if (DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + return ((duk_harray *) obj)->length; + } + + /* Slow path, .length can be e.g. accessor, obj can be a Proxy, etc. */ + duk_push_hobject(thr, obj); + duk_push_hstring_stridx(thr, DUK_STRIDX_LENGTH); + (void) duk_hobject_getprop(thr, + DUK_GET_TVAL_NEGIDX(thr, -2), + DUK_GET_TVAL_NEGIDX(thr, -1)); + val = duk_to_number_m1(thr); + duk_pop_3_unsafe(thr); + + /* This isn't part of ECMAScript semantics; return a value within + * duk_size_t range, or 0 otherwise. + */ + if (val >= 0.0 && val <= (duk_double_t) DUK_SIZE_MAX) { + return (duk_size_t) val; + } + return 0; +} + +/* + * Fast finalizer check for an object. Walks the prototype chain, checking + * for finalizer presence using DUK_HOBJECT_FLAG_HAVE_FINALIZER which is kept + * in sync with the actual property when setting/removing the finalizer. + */ + +#if defined(DUK_USE_HEAPPTR16) +DUK_INTERNAL duk_bool_t duk_hobject_has_finalizer_fast_raw(duk_heap *heap, duk_hobject *obj) { +#else +DUK_INTERNAL duk_bool_t duk_hobject_has_finalizer_fast_raw(duk_hobject *obj) { +#endif + duk_uint_t sanity; + + DUK_ASSERT(obj != NULL); + + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + if (DUK_UNLIKELY(DUK_HOBJECT_HAS_HAVE_FINALIZER(obj))) { + return 1; + } + if (DUK_UNLIKELY(sanity-- == 0)) { + DUK_D(DUK_DPRINT("prototype loop when checking for finalizer existence; returning false")); + return 0; + } +#if defined(DUK_USE_HEAPPTR16) + DUK_ASSERT(heap != NULL); + obj = DUK_HOBJECT_GET_PROTOTYPE(heap, obj); +#else + obj = DUK_HOBJECT_GET_PROTOTYPE(NULL, obj); /* 'heap' arg ignored */ +#endif + } while (obj != NULL); + + return 0; +} + +/* + * Object.getOwnPropertyDescriptor() (E5 Sections 15.2.3.3, 8.10.4) + * + * [ ... key ] -> [ ... desc/undefined ] + */ + +DUK_INTERNAL void duk_hobject_object_get_own_property_descriptor(duk_hthread *thr, duk_idx_t obj_idx) { + duk_hobject *obj; + duk_hstring *key; + duk_propdesc pd; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + + obj = duk_require_hobject_promote_mask(thr, obj_idx, DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + key = duk_to_property_key_hstring(thr, -1); + DUK_ASSERT(key != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + if (!duk_hobject_get_own_propdesc(thr, obj, key, &pd, DUK_GETDESC_FLAG_PUSH_VALUE)) { + duk_push_undefined(thr); + duk_remove_m2(thr); + return; + } + + duk_push_object(thr); + + /* [ ... key value desc ] */ + + if (DUK_PROPDESC_IS_ACCESSOR(&pd)) { + /* If a setter/getter is missing (undefined), the descriptor must + * still have the property present with the value 'undefined'. + */ + if (pd.get) { + duk_push_hobject(thr, pd.get); + } else { + duk_push_undefined(thr); + } + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_GET); + if (pd.set) { + duk_push_hobject(thr, pd.set); + } else { + duk_push_undefined(thr); + } + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_SET); + } else { + duk_dup_m2(thr); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_VALUE); + duk_push_boolean(thr, DUK_PROPDESC_IS_WRITABLE(&pd)); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_WRITABLE); + } + duk_push_boolean(thr, DUK_PROPDESC_IS_ENUMERABLE(&pd)); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_ENUMERABLE); + duk_push_boolean(thr, DUK_PROPDESC_IS_CONFIGURABLE(&pd)); + duk_put_prop_stridx_short(thr, -2, DUK_STRIDX_CONFIGURABLE); + + /* [ ... key value desc ] */ + + duk_replace(thr, -3); + duk_pop_unsafe(thr); /* -> [ ... desc ] */ +} + +/* + * NormalizePropertyDescriptor() related helper. + * + * Internal helper which validates and normalizes a property descriptor + * represented as an ECMAScript object (e.g. argument to defineProperty()). + * The output of this conversion is a set of defprop_flags and possibly + * some values pushed on the value stack to (1) ensure borrowed pointers + * remain valid, and (2) avoid unnecessary pops for footprint reasons. + * Caller must manage stack top carefully because the number of values + * pushed depends on the input property descriptor. + * + * The original descriptor object must not be altered in the process. + */ + +/* XXX: very basic optimization -> duk_get_prop_stridx_top */ + +DUK_INTERNAL +void duk_hobject_prepare_property_descriptor(duk_hthread *thr, + duk_idx_t idx_in, + duk_uint_t *out_defprop_flags, + duk_idx_t *out_idx_value, + duk_hobject **out_getter, + duk_hobject **out_setter) { + duk_idx_t idx_value = -1; + duk_hobject *getter = NULL; + duk_hobject *setter = NULL; + duk_bool_t is_data_desc = 0; + duk_bool_t is_acc_desc = 0; + duk_uint_t defprop_flags = 0; + + DUK_ASSERT(out_defprop_flags != NULL); + DUK_ASSERT(out_idx_value != NULL); + DUK_ASSERT(out_getter != NULL); + DUK_ASSERT(out_setter != NULL); + DUK_ASSERT(idx_in <= 0x7fffL); /* short variants would be OK, but not used to avoid shifts */ + + /* Must be an object, otherwise TypeError (E5.1 Section 8.10.5, step 1). */ + idx_in = duk_require_normalize_index(thr, idx_in); + (void) duk_require_hobject(thr, idx_in); + + /* The coercion order must match the ToPropertyDescriptor() algorithm + * so that side effects in coercion happen in the correct order. + * (This order also happens to be compatible with duk_def_prop(), + * although it doesn't matter in practice.) + */ + + if (duk_get_prop_stridx(thr, idx_in, DUK_STRIDX_VALUE)) { + is_data_desc = 1; + defprop_flags |= DUK_DEFPROP_HAVE_VALUE; + idx_value = duk_get_top_index(thr); + } + + if (duk_get_prop_stridx(thr, idx_in, DUK_STRIDX_WRITABLE)) { + is_data_desc = 1; + if (duk_to_boolean_top_pop(thr)) { + defprop_flags |= DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_WRITABLE; + } else { + defprop_flags |= DUK_DEFPROP_HAVE_WRITABLE; + } + } + + if (duk_get_prop_stridx(thr, idx_in, DUK_STRIDX_GET)) { + duk_tval *tv = duk_require_tval(thr, -1); + duk_hobject *h_get; + + if (DUK_TVAL_IS_UNDEFINED(tv)) { + /* undefined is accepted */ + DUK_ASSERT(getter == NULL); + } else { + /* NOTE: lightfuncs are coerced to full functions because + * lightfuncs don't fit into a property value slot. This + * has some side effects, see test-dev-lightfunc-accessor.js. + */ + h_get = duk_get_hobject_promote_lfunc(thr, -1); + if (h_get == NULL || !DUK_HOBJECT_IS_CALLABLE(h_get)) { + goto type_error; + } + getter = h_get; + } + is_acc_desc = 1; + defprop_flags |= DUK_DEFPROP_HAVE_GETTER; + } + + if (duk_get_prop_stridx(thr, idx_in, DUK_STRIDX_SET)) { + duk_tval *tv = duk_require_tval(thr, -1); + duk_hobject *h_set; + + if (DUK_TVAL_IS_UNDEFINED(tv)) { + /* undefined is accepted */ + DUK_ASSERT(setter == NULL); + } else { + /* NOTE: lightfuncs are coerced to full functions because + * lightfuncs don't fit into a property value slot. This + * has some side effects, see test-dev-lightfunc-accessor.js. + */ + h_set = duk_get_hobject_promote_lfunc(thr, -1); + if (h_set == NULL || !DUK_HOBJECT_IS_CALLABLE(h_set)) { + goto type_error; + } + setter = h_set; + } + is_acc_desc = 1; + defprop_flags |= DUK_DEFPROP_HAVE_SETTER; + } + + if (duk_get_prop_stridx(thr, idx_in, DUK_STRIDX_ENUMERABLE)) { + if (duk_to_boolean_top_pop(thr)) { + defprop_flags |= DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_ENUMERABLE; + } else { + defprop_flags |= DUK_DEFPROP_HAVE_ENUMERABLE; + } + } + + if (duk_get_prop_stridx(thr, idx_in, DUK_STRIDX_CONFIGURABLE)) { + if (duk_to_boolean_top_pop(thr)) { + defprop_flags |= DUK_DEFPROP_HAVE_CONFIGURABLE | DUK_DEFPROP_CONFIGURABLE; + } else { + defprop_flags |= DUK_DEFPROP_HAVE_CONFIGURABLE; + } + } + + if (is_data_desc && is_acc_desc) { + goto type_error; + } + + *out_defprop_flags = defprop_flags; + *out_idx_value = idx_value; + *out_getter = getter; + *out_setter = setter; + + /* [ ... [multiple values] ] */ + return; + + type_error: + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_DESCRIPTOR); + DUK_WO_NORETURN(return;); +} + +/* + * Object.defineProperty() related helper (E5 Section 15.2.3.6). + * Also handles ES2015 Reflect.defineProperty(). + * + * Inlines all [[DefineOwnProperty]] exotic behaviors. + * + * Note: ECMAScript compliant [[DefineOwnProperty]](P, Desc, Throw) is not + * implemented directly, but Object.defineProperty() serves its purpose. + * We don't need the [[DefineOwnProperty]] internally and we don't have a + * property descriptor with 'missing values' so it's easier to avoid it + * entirely. + * + * Note: this is only called for actual objects, not primitive values. + * This must support virtual properties for full objects (e.g. Strings) + * but not for plain values (e.g. strings). Lightfuncs, even though + * primitive in a sense, are treated like objects and accepted as target + * values. + */ + +/* XXX: this is a major target for size optimization */ +DUK_INTERNAL +duk_bool_t duk_hobject_define_property_helper(duk_hthread *thr, + duk_uint_t defprop_flags, + duk_hobject *obj, + duk_hstring *key, + duk_idx_t idx_value, + duk_hobject *get, + duk_hobject *set, + duk_bool_t throw_flag) { + duk_uint32_t arr_idx; + duk_tval tv; + duk_bool_t has_enumerable; + duk_bool_t has_configurable; + duk_bool_t has_writable; + duk_bool_t has_value; + duk_bool_t has_get; + duk_bool_t has_set; + duk_bool_t is_enumerable; + duk_bool_t is_configurable; + duk_bool_t is_writable; + duk_bool_t force_flag; + duk_small_uint_t new_flags; + duk_propdesc curr; + duk_uint32_t arridx_new_array_length; /* != 0 => post-update for array 'length' (used when key is an array index) */ + duk_uint32_t arrlen_old_len; + duk_uint32_t arrlen_new_len; + duk_bool_t pending_write_protect; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + DUK_ASSERT(key != NULL); + /* idx_value may be < 0 (no value), set and get may be NULL */ + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + + /* All the flags fit in 16 bits, so will fit into duk_bool_t. */ + + has_writable = (defprop_flags & DUK_DEFPROP_HAVE_WRITABLE); + has_enumerable = (defprop_flags & DUK_DEFPROP_HAVE_ENUMERABLE); + has_configurable = (defprop_flags & DUK_DEFPROP_HAVE_CONFIGURABLE); + has_value = (defprop_flags & DUK_DEFPROP_HAVE_VALUE); + has_get = (defprop_flags & DUK_DEFPROP_HAVE_GETTER); + has_set = (defprop_flags & DUK_DEFPROP_HAVE_SETTER); + is_writable = (defprop_flags & DUK_DEFPROP_WRITABLE); + is_enumerable = (defprop_flags & DUK_DEFPROP_ENUMERABLE); + is_configurable = (defprop_flags & DUK_DEFPROP_CONFIGURABLE); + force_flag = (defprop_flags & DUK_DEFPROP_FORCE); + + arr_idx = DUK_HSTRING_GET_ARRIDX_SLOW(key); + + arridx_new_array_length = 0; + pending_write_protect = 0; + arrlen_old_len = 0; + arrlen_new_len = 0; + + DUK_DDD(DUK_DDDPRINT("has_enumerable=%ld is_enumerable=%ld " + "has_configurable=%ld is_configurable=%ld " + "has_writable=%ld is_writable=%ld " + "has_value=%ld value=%!T " + "has_get=%ld get=%p=%!O " + "has_set=%ld set=%p=%!O " + "arr_idx=%ld throw_flag=!%ld", + (long) has_enumerable, (long) is_enumerable, + (long) has_configurable, (long) is_configurable, + (long) has_writable, (long) is_writable, + (long) has_value, (duk_tval *) (idx_value >= 0 ? duk_get_tval(thr, idx_value) : NULL), + (long) has_get, (void *) get, (duk_heaphdr *) get, + (long) has_set, (void *) set, (duk_heaphdr *) set, + (long) arr_idx, (long) throw_flag)); + + /* + * Array exotic behaviors can be implemented at this point. The local variables + * are essentially a 'value copy' of the input descriptor (Desc), which is modified + * by the Array [[DefineOwnProperty]] (E5 Section 15.4.5.1). + */ + + if (!DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + goto skip_array_exotic; + } + + if (key == DUK_HTHREAD_STRING_LENGTH(thr)) { + duk_harray *a; + + /* E5 Section 15.4.5.1, step 3, steps a - i are implemented here, j - n at the end */ + if (!has_value) { + DUK_DDD(DUK_DDDPRINT("exotic array behavior for 'length', but no value in descriptor -> normal behavior")); + goto skip_array_exotic; + } + + DUK_DDD(DUK_DDDPRINT("exotic array behavior for 'length', value present in descriptor -> exotic behavior")); + + /* + * Get old and new length + */ + + a = (duk_harray *) obj; + DUK_HARRAY_ASSERT_VALID(a); + arrlen_old_len = a->length; + + DUK_ASSERT(idx_value >= 0); + arrlen_new_len = duk__to_new_array_length_checked(thr, DUK_GET_TVAL_POSIDX(thr, idx_value)); + duk_push_u32(thr, arrlen_new_len); + duk_replace(thr, idx_value); /* step 3.e: replace 'Desc.[[Value]]' */ + + DUK_DDD(DUK_DDDPRINT("old_len=%ld, new_len=%ld", (long) arrlen_old_len, (long) arrlen_new_len)); + + if (arrlen_new_len >= arrlen_old_len) { + /* standard behavior, step 3.f.i */ + DUK_DDD(DUK_DDDPRINT("new length is same or higher as previous => standard behavior")); + goto skip_array_exotic; + } + DUK_DDD(DUK_DDDPRINT("new length is smaller than previous => exotic post behavior")); + + /* XXX: consolidated algorithm step 15.f -> redundant? */ + if (DUK_HARRAY_LENGTH_NONWRITABLE(a) && !force_flag) { + /* Array .length is always non-configurable; if it's also + * non-writable, don't allow it to be written. + */ + goto fail_not_configurable; + } + + /* steps 3.h and 3.i */ + if (has_writable && !is_writable) { + DUK_DDD(DUK_DDDPRINT("desc writable is false, force it back to true, and flag pending write protect")); + is_writable = 1; + pending_write_protect = 1; + } + + /* remaining actual steps are carried out if standard DefineOwnProperty succeeds */ + } else if (arr_idx != DUK__NO_ARRAY_INDEX) { + /* XXX: any chance of unifying this with the 'length' key handling? */ + + /* E5 Section 15.4.5.1, step 4 */ + duk_uint32_t old_len; + duk_harray *a; + + a = (duk_harray *) obj; + DUK_HARRAY_ASSERT_VALID(a); + + old_len = a->length; + + if (arr_idx >= old_len) { + DUK_DDD(DUK_DDDPRINT("defineProperty requires array length update " + "(arr_idx=%ld, old_len=%ld)", + (long) arr_idx, (long) old_len)); + + if (DUK_HARRAY_LENGTH_NONWRITABLE(a) && !force_flag) { + /* Array .length is always non-configurable, so + * if it's also non-writable, don't allow a value + * write. With force flag allow writing. + */ + goto fail_not_configurable; + } + + /* actual update happens once write has been completed without + * error below. + */ + DUK_ASSERT(arr_idx != 0xffffffffUL); + arridx_new_array_length = arr_idx + 1; + } else { + DUK_DDD(DUK_DDDPRINT("defineProperty does not require length update " + "(arr_idx=%ld, old_len=%ld) -> standard behavior", + (long) arr_idx, (long) old_len)); + } + } + skip_array_exotic: + + /* XXX: There is currently no support for writing buffer object + * indexed elements here. Attempt to do so will succeed and + * write a concrete property into the buffer object. This should + * be fixed at some point but because buffers are a custom feature + * anyway, this is relatively unimportant. + */ + + /* + * Actual Object.defineProperty() default algorithm. + */ + + /* + * First check whether property exists; if not, simple case. This covers + * steps 1-4. + */ + + if (!duk__get_own_propdesc_raw(thr, obj, key, arr_idx, &curr, DUK_GETDESC_FLAG_PUSH_VALUE)) { + DUK_DDD(DUK_DDDPRINT("property does not exist")); + + if (!DUK_HOBJECT_HAS_EXTENSIBLE(obj) && !force_flag) { + goto fail_not_extensible; + } + +#if defined(DUK_USE_ROM_OBJECTS) + /* ROM objects are never extensible but force flag may + * allow us to come here anyway. + */ + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj) || !DUK_HOBJECT_HAS_EXTENSIBLE(obj)); + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_D(DUK_DPRINT("attempt to define property on a read-only target object")); + goto fail_not_configurable; + } +#endif + + /* XXX: share final setting code for value and flags? difficult because + * refcount code is different. Share entry allocation? But can't allocate + * until array index checked. + */ + + /* steps 4.a and 4.b are tricky */ + if (has_set || has_get) { + duk_int_t e_idx; + + DUK_DDD(DUK_DDDPRINT("create new accessor property")); + + DUK_ASSERT(has_set || set == NULL); + DUK_ASSERT(has_get || get == NULL); + DUK_ASSERT(!has_value); + DUK_ASSERT(!has_writable); + + new_flags = DUK_PROPDESC_FLAG_ACCESSOR; /* defaults, E5 Section 8.6.1, Table 7 */ + if (has_enumerable && is_enumerable) { + new_flags |= DUK_PROPDESC_FLAG_ENUMERABLE; + } + if (has_configurable && is_configurable) { + new_flags |= DUK_PROPDESC_FLAG_CONFIGURABLE; + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + DUK_DDD(DUK_DDDPRINT("accessor cannot go to array part, abandon array")); + duk__abandon_array_part(thr, obj); + } + + /* write to entry part */ + e_idx = duk__hobject_alloc_entry_checked(thr, obj, key); + DUK_ASSERT(e_idx >= 0); + + DUK_HOBJECT_E_SET_VALUE_GETTER(thr->heap, obj, e_idx, get); + DUK_HOBJECT_E_SET_VALUE_SETTER(thr->heap, obj, e_idx, set); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, get); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, set); + + DUK_HOBJECT_E_SET_FLAGS(thr->heap, obj, e_idx, new_flags); + goto success_exotics; + } else { + duk_int_t e_idx; + duk_tval *tv2; + + DUK_DDD(DUK_DDDPRINT("create new data property")); + + DUK_ASSERT(!has_set); + DUK_ASSERT(!has_get); + + new_flags = 0; /* defaults, E5 Section 8.6.1, Table 7 */ + if (has_writable && is_writable) { + new_flags |= DUK_PROPDESC_FLAG_WRITABLE; + } + if (has_enumerable && is_enumerable) { + new_flags |= DUK_PROPDESC_FLAG_ENUMERABLE; + } + if (has_configurable && is_configurable) { + new_flags |= DUK_PROPDESC_FLAG_CONFIGURABLE; + } + if (has_value) { + duk_tval *tv_tmp = duk_require_tval(thr, idx_value); + DUK_TVAL_SET_TVAL(&tv, tv_tmp); + } else { + DUK_TVAL_SET_UNDEFINED(&tv); /* default value */ + } + + if (arr_idx != DUK__NO_ARRAY_INDEX && DUK_HOBJECT_HAS_ARRAY_PART(obj)) { + if (new_flags == DUK_PROPDESC_FLAGS_WEC) { + DUK_DDD(DUK_DDDPRINT("new data property attributes match array defaults, attempt to write to array part")); + tv2 = duk__obtain_arridx_slot(thr, arr_idx, obj); + if (tv2 == NULL) { + DUK_DDD(DUK_DDDPRINT("failed writing to array part, abandoned array")); + } else { + DUK_DDD(DUK_DDDPRINT("success in writing to array part")); + DUK_ASSERT(DUK_HOBJECT_HAS_ARRAY_PART(obj)); + DUK_ASSERT(DUK_TVAL_IS_UNUSED(tv2)); + DUK_TVAL_SET_TVAL(tv2, &tv); + DUK_TVAL_INCREF(thr, tv2); + goto success_exotics; + } + } else { + DUK_DDD(DUK_DDDPRINT("new data property cannot go to array part, abandon array")); + duk__abandon_array_part(thr, obj); + } + /* fall through */ + } + + /* write to entry part */ + e_idx = duk__hobject_alloc_entry_checked(thr, obj, key); + DUK_ASSERT(e_idx >= 0); + tv2 = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, e_idx); + DUK_TVAL_SET_TVAL(tv2, &tv); + DUK_TVAL_INCREF(thr, tv2); + + DUK_HOBJECT_E_SET_FLAGS(thr->heap, obj, e_idx, new_flags); + goto success_exotics; + } + DUK_UNREACHABLE(); + } + + /* we currently assume virtual properties are not configurable (as none of them are) */ + DUK_ASSERT((curr.e_idx >= 0 || curr.a_idx >= 0) || !(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE)); + + /* [obj key desc value get set curr_value] */ + + /* + * Property already exists. Steps 5-6 detect whether any changes need + * to be made. + */ + + if (has_enumerable) { + if (is_enumerable) { + if (!(curr.flags & DUK_PROPDESC_FLAG_ENUMERABLE)) { + goto need_check; + } + } else { + if (curr.flags & DUK_PROPDESC_FLAG_ENUMERABLE) { + goto need_check; + } + } + } + if (has_configurable) { + if (is_configurable) { + if (!(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE)) { + goto need_check; + } + } else { + if (curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) { + goto need_check; + } + } + } + if (has_value) { + duk_tval *tmp1; + duk_tval *tmp2; + + /* attempt to change from accessor to data property */ + if (curr.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + goto need_check; + } + + tmp1 = duk_require_tval(thr, -1); /* curr value */ + tmp2 = duk_require_tval(thr, idx_value); /* new value */ + if (!duk_js_samevalue(tmp1, tmp2)) { + goto need_check; + } + } + if (has_writable) { + /* attempt to change from accessor to data property */ + if (curr.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + goto need_check; + } + + if (is_writable) { + if (!(curr.flags & DUK_PROPDESC_FLAG_WRITABLE)) { + goto need_check; + } + } else { + if (curr.flags & DUK_PROPDESC_FLAG_WRITABLE) { + goto need_check; + } + } + } + if (has_set) { + if (curr.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + if (set != curr.set) { + goto need_check; + } + } else { + goto need_check; + } + } + if (has_get) { + if (curr.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + if (get != curr.get) { + goto need_check; + } + } else { + goto need_check; + } + } + + /* property exists, either 'desc' is empty, or all values + * match (SameValue) + */ + goto success_no_exotics; + + need_check: + + /* + * Some change(s) need to be made. Steps 7-11. + */ + + /* shared checks for all descriptor types */ + if (!(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && !force_flag) { + if (has_configurable && is_configurable) { + goto fail_not_configurable; + } + if (has_enumerable) { + if (curr.flags & DUK_PROPDESC_FLAG_ENUMERABLE) { + if (!is_enumerable) { + goto fail_not_configurable; + } + } else { + if (is_enumerable) { + goto fail_not_configurable; + } + } + } + } + + /* Virtual properties don't have backing so they can't mostly be + * edited. Some virtual properties are, however, writable: for + * example, virtual index properties of buffer objects and Array + * instance .length. These are not configurable so the checks + * above mostly cover attempts to change them, except when the + * duk_def_prop() call is used with DUK_DEFPROP_FORCE; even in + * that case we can't forcibly change the property attributes + * because they don't have concrete backing. + */ + + /* XXX: for ROM objects too it'd be best if value modify was + * allowed if the value matches SameValue. + */ + /* Reject attempt to change a read-only object. */ +#if defined(DUK_USE_ROM_OBJECTS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_DD(DUK_DDPRINT("attempt to define property on read-only target object")); + goto fail_not_configurable; + } +#endif + + /* descriptor type specific checks */ + if (has_set || has_get) { + /* IsAccessorDescriptor(desc) == true */ + DUK_ASSERT(!has_writable); + DUK_ASSERT(!has_value); + + if (curr.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + /* curr and desc are accessors */ + if (!(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && !force_flag) { + if (has_set && set != curr.set) { + goto fail_not_configurable; + } + if (has_get && get != curr.get) { + goto fail_not_configurable; + } + } + } else { + duk_bool_t rc; + duk_tval *tv1; + + /* curr is data, desc is accessor */ + if (!(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && !force_flag) { + goto fail_not_configurable; + } + + DUK_DDD(DUK_DDDPRINT("convert property to accessor property")); + if (curr.a_idx >= 0) { + DUK_DDD(DUK_DDDPRINT("property to convert is stored in an array entry, abandon array and re-lookup")); + duk__abandon_array_part(thr, obj); + duk_pop_unsafe(thr); /* remove old value */ + rc = duk__get_own_propdesc_raw(thr, obj, key, arr_idx, &curr, DUK_GETDESC_FLAG_PUSH_VALUE); + DUK_UNREF(rc); + DUK_ASSERT(rc != 0); + DUK_ASSERT(curr.e_idx >= 0 && curr.a_idx < 0); + } + if (curr.e_idx < 0) { + DUK_ASSERT(curr.a_idx < 0 && curr.e_idx < 0); + goto fail_virtual; /* safeguard for virtual property */ + } + + DUK_ASSERT(curr.e_idx >= 0); + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, curr.e_idx)); + + tv1 = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, curr.e_idx); + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, tv1); /* XXX: just decref */ + + DUK_HOBJECT_E_SET_VALUE_GETTER(thr->heap, obj, curr.e_idx, NULL); + DUK_HOBJECT_E_SET_VALUE_SETTER(thr->heap, obj, curr.e_idx, NULL); + DUK_HOBJECT_E_SLOT_CLEAR_WRITABLE(thr->heap, obj, curr.e_idx); + DUK_HOBJECT_E_SLOT_SET_ACCESSOR(thr->heap, obj, curr.e_idx); + + DUK_DDD(DUK_DDDPRINT("flags after data->accessor conversion: 0x%02lx", + (unsigned long) DUK_HOBJECT_E_GET_FLAGS(thr->heap, obj, curr.e_idx))); + /* Update curr.flags; faster than a re-lookup. */ + curr.flags &= ~DUK_PROPDESC_FLAG_WRITABLE; + curr.flags |= DUK_PROPDESC_FLAG_ACCESSOR; + } + } else if (has_value || has_writable) { + /* IsDataDescriptor(desc) == true */ + DUK_ASSERT(!has_set); + DUK_ASSERT(!has_get); + + if (curr.flags & DUK_PROPDESC_FLAG_ACCESSOR) { + duk_hobject *tmp; + + /* curr is accessor, desc is data */ + if (!(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && !force_flag) { + goto fail_not_configurable; + } + + /* curr is accessor -> cannot be in array part. */ + DUK_ASSERT(curr.a_idx < 0); + if (curr.e_idx < 0) { + goto fail_virtual; /* safeguard; no virtual accessors now */ + } + + DUK_DDD(DUK_DDDPRINT("convert property to data property")); + + DUK_ASSERT(DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, curr.e_idx)); + tmp = DUK_HOBJECT_E_GET_VALUE_GETTER(thr->heap, obj, curr.e_idx); + DUK_UNREF(tmp); + DUK_HOBJECT_E_SET_VALUE_GETTER(thr->heap, obj, curr.e_idx, NULL); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, tmp); + tmp = DUK_HOBJECT_E_GET_VALUE_SETTER(thr->heap, obj, curr.e_idx); + DUK_UNREF(tmp); + DUK_HOBJECT_E_SET_VALUE_SETTER(thr->heap, obj, curr.e_idx, NULL); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, tmp); + + DUK_TVAL_SET_UNDEFINED(DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, curr.e_idx)); + DUK_HOBJECT_E_SLOT_CLEAR_WRITABLE(thr->heap, obj, curr.e_idx); + DUK_HOBJECT_E_SLOT_CLEAR_ACCESSOR(thr->heap, obj, curr.e_idx); + + DUK_DDD(DUK_DDDPRINT("flags after accessor->data conversion: 0x%02lx", + (unsigned long) DUK_HOBJECT_E_GET_FLAGS(thr->heap, obj, curr.e_idx))); + + /* Update curr.flags; faster than a re-lookup. */ + curr.flags &= ~(DUK_PROPDESC_FLAG_WRITABLE | DUK_PROPDESC_FLAG_ACCESSOR); + } else { + /* curr and desc are data */ + if (!(curr.flags & DUK_PROPDESC_FLAG_CONFIGURABLE) && !force_flag) { + if (!(curr.flags & DUK_PROPDESC_FLAG_WRITABLE) && has_writable && is_writable) { + goto fail_not_configurable; + } + /* Note: changing from writable to non-writable is OK */ + if (!(curr.flags & DUK_PROPDESC_FLAG_WRITABLE) && has_value) { + duk_tval *tmp1 = duk_require_tval(thr, -1); /* curr value */ + duk_tval *tmp2 = duk_require_tval(thr, idx_value); /* new value */ + if (!duk_js_samevalue(tmp1, tmp2)) { + goto fail_not_configurable; + } + } + } + } + } else { + /* IsGenericDescriptor(desc) == true; this means in practice that 'desc' + * only has [[Enumerable]] or [[Configurable]] flag updates, which are + * allowed at this point. + */ + + DUK_ASSERT(!has_value && !has_writable && !has_get && !has_set); + } + + /* + * Start doing property attributes updates. Steps 12-13. + * + * Start by computing new attribute flags without writing yet. + * Property type conversion is done above if necessary. + */ + + new_flags = curr.flags; + + if (has_enumerable) { + if (is_enumerable) { + new_flags |= DUK_PROPDESC_FLAG_ENUMERABLE; + } else { + new_flags &= ~DUK_PROPDESC_FLAG_ENUMERABLE; + } + } + if (has_configurable) { + if (is_configurable) { + new_flags |= DUK_PROPDESC_FLAG_CONFIGURABLE; + } else { + new_flags &= ~DUK_PROPDESC_FLAG_CONFIGURABLE; + } + } + if (has_writable) { + if (is_writable) { + new_flags |= DUK_PROPDESC_FLAG_WRITABLE; + } else { + new_flags &= ~DUK_PROPDESC_FLAG_WRITABLE; + } + } + + /* XXX: write protect after flag? -> any chance of handling it here? */ + + DUK_DDD(DUK_DDDPRINT("new flags that we want to write: 0x%02lx", + (unsigned long) new_flags)); + + /* + * Check whether we need to abandon an array part (if it exists) + */ + + if (curr.a_idx >= 0) { + duk_bool_t rc; + + DUK_ASSERT(curr.e_idx < 0); + + if (new_flags == DUK_PROPDESC_FLAGS_WEC) { + duk_tval *tv1, *tv2; + + DUK_DDD(DUK_DDDPRINT("array index, new property attributes match array defaults, update in-place")); + + DUK_ASSERT(curr.flags == DUK_PROPDESC_FLAGS_WEC); /* must have been, since in array part */ + DUK_ASSERT(!has_set); + DUK_ASSERT(!has_get); + DUK_ASSERT(idx_value >= 0); /* must be: if attributes match and we get here the value must differ (otherwise no change) */ + + tv2 = duk_require_tval(thr, idx_value); + tv1 = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, curr.a_idx); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv2); /* side effects; may invalidate a_idx */ + goto success_exotics; + } + + DUK_DDD(DUK_DDDPRINT("array index, new property attributes do not match array defaults, abandon array and re-lookup")); + duk__abandon_array_part(thr, obj); + duk_pop_unsafe(thr); /* remove old value */ + rc = duk__get_own_propdesc_raw(thr, obj, key, arr_idx, &curr, DUK_GETDESC_FLAG_PUSH_VALUE); + DUK_UNREF(rc); + DUK_ASSERT(rc != 0); + DUK_ASSERT(curr.e_idx >= 0 && curr.a_idx < 0); + } + + DUK_DDD(DUK_DDDPRINT("updating existing property in entry part")); + + /* Array case is handled comprehensively above: either in entry + * part or a virtual property. + */ + DUK_ASSERT(curr.a_idx < 0); + + DUK_DDD(DUK_DDDPRINT("update existing property attributes")); + if (curr.e_idx >= 0) { + DUK_HOBJECT_E_SET_FLAGS(thr->heap, obj, curr.e_idx, new_flags); + } else { + /* For Array .length the only allowed transition is for .length + * to become non-writable. + */ + if (key == DUK_HTHREAD_STRING_LENGTH(thr) && DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + duk_harray *a; + a = (duk_harray *) obj; + DUK_DD(DUK_DDPRINT("Object.defineProperty() attribute update for duk_harray .length -> %02lx", (unsigned long) new_flags)); + DUK_HARRAY_ASSERT_VALID(a); + if ((new_flags & DUK_PROPDESC_FLAGS_EC) != (curr.flags & DUK_PROPDESC_FLAGS_EC)) { + DUK_D(DUK_DPRINT("Object.defineProperty() attempt to change virtual array .length enumerable or configurable attribute, fail")); + goto fail_virtual; + } + if (new_flags & DUK_PROPDESC_FLAG_WRITABLE) { + DUK_HARRAY_SET_LENGTH_WRITABLE(a); + } else { + DUK_HARRAY_SET_LENGTH_NONWRITABLE(a); + } + } + } + + if (has_set) { + duk_hobject *tmp; + + /* Virtual properties are non-configurable but with a 'force' + * flag we might come here so check explicitly for virtual. + */ + if (curr.e_idx < 0) { + goto fail_virtual; + } + + DUK_DDD(DUK_DDDPRINT("update existing property setter")); + DUK_ASSERT(DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, curr.e_idx)); + + tmp = DUK_HOBJECT_E_GET_VALUE_SETTER(thr->heap, obj, curr.e_idx); + DUK_UNREF(tmp); + DUK_HOBJECT_E_SET_VALUE_SETTER(thr->heap, obj, curr.e_idx, set); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, set); + DUK_HOBJECT_DECREF_ALLOWNULL(thr, tmp); /* side effects; may invalidate e_idx */ + } + if (has_get) { + duk_hobject *tmp; + + if (curr.e_idx < 0) { + goto fail_virtual; + } + + DUK_DDD(DUK_DDDPRINT("update existing property getter")); + DUK_ASSERT(DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, curr.e_idx)); + + tmp = DUK_HOBJECT_E_GET_VALUE_GETTER(thr->heap, obj, curr.e_idx); + DUK_UNREF(tmp); + DUK_HOBJECT_E_SET_VALUE_GETTER(thr->heap, obj, curr.e_idx, get); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, get); + DUK_HOBJECT_DECREF_ALLOWNULL(thr, tmp); /* side effects; may invalidate e_idx */ + } + if (has_value) { + duk_tval *tv1, *tv2; + + DUK_DDD(DUK_DDDPRINT("update existing property value")); + + if (curr.e_idx >= 0) { + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, obj, curr.e_idx)); + tv2 = duk_require_tval(thr, idx_value); + tv1 = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, obj, curr.e_idx); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv2); /* side effects; may invalidate e_idx */ + } else { + DUK_ASSERT(curr.a_idx < 0); /* array part case handled comprehensively previously */ + + DUK_DD(DUK_DDPRINT("Object.defineProperty(), value update for virtual property")); + /* XXX: Uint8Array and other typed array virtual writes not currently + * handled. + */ + if (key == DUK_HTHREAD_STRING_LENGTH(thr) && DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + duk_harray *a; + a = (duk_harray *) obj; + DUK_DD(DUK_DDPRINT("Object.defineProperty() value update for duk_harray .length -> %ld", (long) arrlen_new_len)); + DUK_HARRAY_ASSERT_VALID(a); + a->length = arrlen_new_len; + } else { + goto fail_virtual; /* should not happen */ + } + } + } + + /* + * Standard algorithm succeeded without errors, check for exotic post-behaviors. + * + * Arguments exotic behavior in E5 Section 10.6 occurs after the standard + * [[DefineOwnProperty]] has completed successfully. + * + * Array exotic behavior in E5 Section 15.4.5.1 is implemented partly + * prior to the default [[DefineOwnProperty]], but: + * - for an array index key (e.g. "10") the final 'length' update occurs here + * - for 'length' key the element deletion and 'length' update occurs here + */ + + success_exotics: + + /* curr.a_idx or curr.e_idx may have been invalidated by side effects + * above. + */ + + /* [obj key desc value get set curr_value] */ + + if (DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)) { + duk_harray *a; + + a = (duk_harray *) obj; + DUK_HARRAY_ASSERT_VALID(a); + + if (arridx_new_array_length > 0) { + /* + * Note: zero works as a "no update" marker because the new length + * can never be zero after a new property is written. + */ + + /* E5 Section 15.4.5.1, steps 4.e.i - 4.e.ii */ + + DUK_DDD(DUK_DDDPRINT("defineProperty successful, pending array length update to: %ld", + (long) arridx_new_array_length)); + + a->length = arridx_new_array_length; + } + + if (key == DUK_HTHREAD_STRING_LENGTH(thr) && arrlen_new_len < arrlen_old_len) { + /* + * E5 Section 15.4.5.1, steps 3.k - 3.n. The order at the end combines + * the error case 3.l.iii and the success case 3.m-3.n. + */ + + /* XXX: investigate whether write protect can be handled above, if we + * just update length here while ignoring its protected status + */ + + duk_uint32_t result_len; + duk_bool_t rc; + + DUK_DDD(DUK_DDDPRINT("defineProperty successful, key is 'length', exotic array behavior, " + "doing array element deletion and length update")); + + rc = duk__handle_put_array_length_smaller(thr, obj, arrlen_old_len, arrlen_new_len, force_flag, &result_len); + + /* update length (curr points to length, and we assume it's still valid) */ + DUK_ASSERT(result_len >= arrlen_new_len && result_len <= arrlen_old_len); + + a->length = result_len; + + if (pending_write_protect) { + DUK_DDD(DUK_DDDPRINT("setting array length non-writable (pending writability update)")); + DUK_HARRAY_SET_LENGTH_NONWRITABLE(a); + } + + /* XXX: shrink array allocation or entries compaction here? */ + if (!rc) { + DUK_DD(DUK_DDPRINT("array length write only partially successful")); + goto fail_not_configurable; + } + } + } else if (arr_idx != DUK__NO_ARRAY_INDEX && DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(obj)) { + duk_hobject *map; + duk_hobject *varenv; + + DUK_ASSERT(arridx_new_array_length == 0); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARRAY(obj)); /* traits are separate; in particular, arguments not an array */ + + map = NULL; + varenv = NULL; + if (!duk__lookup_arguments_map(thr, obj, key, &curr, &map, &varenv)) { + goto success_no_exotics; + } + DUK_ASSERT(map != NULL); + DUK_ASSERT(varenv != NULL); + + /* [obj key desc value get set curr_value varname] */ + + if (has_set || has_get) { + /* = IsAccessorDescriptor(Desc) */ + DUK_DDD(DUK_DDDPRINT("defineProperty successful, key mapped to arguments 'map' " + "changed to an accessor, delete arguments binding")); + + (void) duk_hobject_delprop_raw(thr, map, key, 0); /* ignore result */ + } else { + /* Note: this order matters (final value before deleting map entry must be done) */ + DUK_DDD(DUK_DDDPRINT("defineProperty successful, key mapped to arguments 'map', " + "check for value update / binding deletion")); + + if (has_value) { + duk_hstring *varname; + + DUK_DDD(DUK_DDDPRINT("defineProperty successful, key mapped to arguments 'map', " + "update bound value (variable/argument)")); + + varname = duk_require_hstring(thr, -1); + DUK_ASSERT(varname != NULL); + + DUK_DDD(DUK_DDDPRINT("arguments object automatic putvar for a bound variable; " + "key=%!O, varname=%!O, value=%!T", + (duk_heaphdr *) key, + (duk_heaphdr *) varname, + (duk_tval *) duk_require_tval(thr, idx_value))); + + /* strict flag for putvar comes from our caller (currently: fixed) */ + duk_js_putvar_envrec(thr, varenv, varname, duk_require_tval(thr, idx_value), 1 /*throw_flag*/); + } + if (has_writable && !is_writable) { + DUK_DDD(DUK_DDDPRINT("defineProperty successful, key mapped to arguments 'map', " + "changed to non-writable, delete arguments binding")); + + (void) duk_hobject_delprop_raw(thr, map, key, 0); /* ignore result */ + } + } + + /* 'varname' is in stack in this else branch, leaving an unbalanced stack below, + * but this doesn't matter now. + */ + } + + success_no_exotics: + /* Some code paths use NORZ macros for simplicity, ensure refzero + * handling is completed. + */ + DUK_REFZERO_CHECK_SLOW(thr); + return 1; + + fail_not_extensible: + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_EXTENSIBLE); + DUK_WO_NORETURN(return 0;); + } + return 0; + + fail_virtual: /* just use the same "not configurable" error message" */ + fail_not_configurable: + if (throw_flag) { + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); + DUK_WO_NORETURN(return 0;); + } + return 0; +} + +/* + * Object.prototype.hasOwnProperty() and Object.prototype.propertyIsEnumerable(). + */ + +DUK_INTERNAL duk_bool_t duk_hobject_object_ownprop_helper(duk_hthread *thr, duk_small_uint_t required_desc_flags) { + duk_hstring *h_v; + duk_hobject *h_obj; + duk_propdesc desc; + duk_bool_t ret; + + /* coercion order matters */ + h_v = duk_to_hstring_acceptsymbol(thr, 0); + DUK_ASSERT(h_v != NULL); + + h_obj = duk_push_this_coercible_to_object(thr); + DUK_ASSERT(h_obj != NULL); + + ret = duk_hobject_get_own_propdesc(thr, h_obj, h_v, &desc, 0 /*flags*/); /* don't push value */ + + duk_push_boolean(thr, ret && ((desc.flags & required_desc_flags) == required_desc_flags)); + return 1; +} + +/* + * Object.seal() and Object.freeze() (E5 Sections 15.2.3.8 and 15.2.3.9) + * + * Since the algorithms are similar, a helper provides both functions. + * Freezing is essentially sealing + making plain properties non-writable. + * + * Note: virtual (non-concrete) properties which are non-configurable but + * writable would pose some problems, but such properties do not currently + * exist (all virtual properties are non-configurable and non-writable). + * If they did exist, the non-configurability does NOT prevent them from + * becoming non-writable. However, this change should be recorded somehow + * so that it would turn up (e.g. when getting the property descriptor), + * requiring some additional flags in the object. + */ + +DUK_INTERNAL void duk_hobject_object_seal_freeze_helper(duk_hthread *thr, duk_hobject *obj, duk_bool_t is_freeze) { + duk_uint_fast32_t i; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(obj != NULL); + + DUK_ASSERT_VALSTACK_SPACE(thr, DUK__VALSTACK_SPACE); + +#if defined(DUK_USE_ROM_OBJECTS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) obj)) { + DUK_DD(DUK_DDPRINT("attempt to seal/freeze a readonly object, reject")); + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONFIGURABLE); + DUK_WO_NORETURN(return;); + } +#endif + + /* + * Abandon array part because all properties must become non-configurable. + * Note that this is now done regardless of whether this is always the case + * (skips check, but performance problem if caller would do this many times + * for the same object; not likely). + */ + + duk__abandon_array_part(thr, obj); + DUK_ASSERT(DUK_HOBJECT_GET_ASIZE(obj) == 0); + + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + duk_uint8_t *fp; + + /* since duk__abandon_array_part() causes a resize, there should be no gaps in keys */ + DUK_ASSERT(DUK_HOBJECT_E_GET_KEY(thr->heap, obj, i) != NULL); + + /* avoid multiple computations of flags address; bypasses macros */ + fp = DUK_HOBJECT_E_GET_FLAGS_PTR(thr->heap, obj, i); + if (is_freeze && !((*fp) & DUK_PROPDESC_FLAG_ACCESSOR)) { + *fp &= ~(DUK_PROPDESC_FLAG_WRITABLE | DUK_PROPDESC_FLAG_CONFIGURABLE); + } else { + *fp &= ~DUK_PROPDESC_FLAG_CONFIGURABLE; + } + } + + DUK_HOBJECT_CLEAR_EXTENSIBLE(obj); + + /* no need to compact since we already did that in duk__abandon_array_part() + * (regardless of whether an array part existed or not. + */ + + return; +} + +/* + * Object.isSealed() and Object.isFrozen() (E5 Sections 15.2.3.11, 15.2.3.13) + * + * Since the algorithms are similar, a helper provides both functions. + * Freezing is essentially sealing + making plain properties non-writable. + * + * Note: all virtual (non-concrete) properties are currently non-configurable + * and non-writable (and there are no accessor virtual properties), so they don't + * need to be considered here now. + */ + +DUK_INTERNAL duk_bool_t duk_hobject_object_is_sealed_frozen_helper(duk_hthread *thr, duk_hobject *obj, duk_bool_t is_frozen) { + duk_uint_fast32_t i; + + DUK_ASSERT(obj != NULL); + DUK_UNREF(thr); + + /* Note: no allocation pressure, no need to check refcounts etc */ + + /* must not be extensible */ + if (DUK_HOBJECT_HAS_EXTENSIBLE(obj)) { + return 0; + } + + /* all virtual properties are non-configurable and non-writable */ + + /* entry part must not contain any configurable properties, or + * writable properties (if is_frozen). + */ + for (i = 0; i < DUK_HOBJECT_GET_ENEXT(obj); i++) { + duk_small_uint_t flags; + + if (!DUK_HOBJECT_E_GET_KEY(thr->heap, obj, i)) { + continue; + } + + /* avoid multiple computations of flags address; bypasses macros */ + flags = (duk_small_uint_t) DUK_HOBJECT_E_GET_FLAGS(thr->heap, obj, i); + + if (flags & DUK_PROPDESC_FLAG_CONFIGURABLE) { + return 0; + } + if (is_frozen && + !(flags & DUK_PROPDESC_FLAG_ACCESSOR) && + (flags & DUK_PROPDESC_FLAG_WRITABLE)) { + return 0; + } + } + + /* array part must not contain any non-unused properties, as they would + * be configurable and writable. + */ + for (i = 0; i < DUK_HOBJECT_GET_ASIZE(obj); i++) { + duk_tval *tv = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, obj, i); + if (!DUK_TVAL_IS_UNUSED(tv)) { + return 0; + } + } + + return 1; +} + +/* + * Object.preventExtensions() and Object.isExtensible() (E5 Sections 15.2.3.10, 15.2.3.13) + * + * Not needed, implemented by macros DUK_HOBJECT_{HAS,CLEAR,SET}_EXTENSIBLE + * and the Object built-in bindings. + */ + +/* automatic undefs */ +#undef DUK__HASH_DELETED +#undef DUK__HASH_UNUSED +#undef DUK__NO_ARRAY_INDEX +#undef DUK__VALSTACK_PROXY_LOOKUP +#undef DUK__VALSTACK_SPACE +#line 1 "duk_hstring_assert.c" +/* + * duk_hstring assertion helpers. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ASSERTIONS) + +DUK_INTERNAL void duk_hstring_assert_valid(duk_hstring *h) { + DUK_ASSERT(h != NULL); +} + +#endif /* DUK_USE_ASSERTIONS */ +#line 1 "duk_hstring_misc.c" +/* + * Misc support functions + */ + +/* #include duk_internal.h -> already included */ + +/* + * duk_hstring charCodeAt, with and without surrogate awareness + */ + +DUK_INTERNAL duk_ucodepoint_t duk_hstring_char_code_at_raw(duk_hthread *thr, duk_hstring *h, duk_uint_t pos, duk_bool_t surrogate_aware) { + duk_uint32_t boff; + const duk_uint8_t *p, *p_start, *p_end; + duk_ucodepoint_t cp1; + duk_ucodepoint_t cp2; + + /* Caller must check character offset to be inside the string. */ + DUK_ASSERT(thr != NULL); + DUK_ASSERT(h != NULL); + DUK_ASSERT_DISABLE(pos >= 0); /* unsigned */ + DUK_ASSERT(pos < (duk_uint_t) DUK_HSTRING_GET_CHARLEN(h)); + + boff = (duk_uint32_t) duk_heap_strcache_offset_char2byte(thr, h, (duk_uint32_t) pos); + DUK_DDD(DUK_DDDPRINT("charCodeAt: pos=%ld -> boff=%ld, str=%!O", + (long) pos, (long) boff, (duk_heaphdr *) h)); + DUK_ASSERT_DISABLE(boff >= 0); + DUK_ASSERT(boff < DUK_HSTRING_GET_BYTELEN(h)); + + p_start = DUK_HSTRING_GET_DATA(h); + p_end = p_start + DUK_HSTRING_GET_BYTELEN(h); + p = p_start + boff; + DUK_DDD(DUK_DDDPRINT("p_start=%p, p_end=%p, p=%p", + (const void *) p_start, (const void *) p_end, + (const void *) p)); + + /* For invalid UTF-8 (never happens for standard ECMAScript strings) + * return U+FFFD replacement character. + */ + if (duk_unicode_decode_xutf8(thr, &p, p_start, p_end, &cp1)) { + if (surrogate_aware && cp1 >= 0xd800UL && cp1 <= 0xdbffUL) { + /* The decode helper is memory safe even if 'cp1' was + * decoded at the end of the string and 'p' is no longer + * within string memory range. + */ + cp2 = 0; /* If call fails, this is left untouched and won't match cp2 check. */ + (void) duk_unicode_decode_xutf8(thr, &p, p_start, p_end, &cp2); + if (cp2 >= 0xdc00UL && cp2 <= 0xdfffUL) { + cp1 = (duk_ucodepoint_t) (((cp1 - 0xd800UL) << 10) + (cp2 - 0xdc00UL) + 0x10000UL); + } + } + } else { + cp1 = DUK_UNICODE_CP_REPLACEMENT_CHARACTER; + } + + return cp1; +} + +/* + * duk_hstring charlen, when lazy charlen disabled + */ + +#if !defined(DUK_USE_HSTRING_LAZY_CLEN) +#if !defined(DUK_USE_HSTRING_CLEN) +#error non-lazy duk_hstring charlen but DUK_USE_HSTRING_CLEN not set +#endif +DUK_INTERNAL void duk_hstring_init_charlen(duk_hstring *h) { + duk_uint32_t clen; + + DUK_ASSERT(h != NULL); + DUK_ASSERT(!DUK_HSTRING_HAS_ASCII(h)); + DUK_ASSERT(!DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)); + + clen = duk_unicode_unvalidated_utf8_length(DUK_HSTRING_GET_DATA(h), DUK_HSTRING_GET_BYTELEN(h)); +#if defined(DUK_USE_STRLEN16) + DUK_ASSERT(clen <= 0xffffUL); /* Bytelength checked during interning. */ + h->clen16 = (duk_uint16_t) clen; +#else + h->clen = (duk_uint32_t) clen; +#endif + if (DUK_LIKELY(clen == DUK_HSTRING_GET_BYTELEN(h))) { + DUK_HSTRING_SET_ASCII(h); + } +} + +DUK_INTERNAL DUK_HOT duk_size_t duk_hstring_get_charlen(duk_hstring *h) { +#if defined(DUK_USE_STRLEN16) + return h->clen16; +#else + return h->clen; +#endif +} +#endif /* !DUK_USE_HSTRING_LAZY_CLEN */ + +/* + * duk_hstring charlen, when lazy charlen enabled + */ + +#if defined(DUK_USE_HSTRING_LAZY_CLEN) +#if defined(DUK_USE_HSTRING_CLEN) +DUK_LOCAL DUK_COLD duk_size_t duk__hstring_get_charlen_slowpath(duk_hstring *h) { + duk_size_t res; + + DUK_ASSERT(h->clen == 0); /* Checked by caller. */ + +#if defined(DUK_USE_ROM_STRINGS) + /* ROM strings have precomputed clen, but if the computed clen is zero + * we can still come here and can't write anything. + */ + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)) { + return 0; + } +#endif + + res = duk_unicode_unvalidated_utf8_length(DUK_HSTRING_GET_DATA(h), DUK_HSTRING_GET_BYTELEN(h)); +#if defined(DUK_USE_STRLEN16) + DUK_ASSERT(res <= 0xffffUL); /* Bytelength checked during interning. */ + h->clen16 = (duk_uint16_t) res; +#else + h->clen = (duk_uint32_t) res; +#endif + if (DUK_LIKELY(res == DUK_HSTRING_GET_BYTELEN(h))) { + DUK_HSTRING_SET_ASCII(h); + } + return res; +} +#else /* DUK_USE_HSTRING_CLEN */ +DUK_LOCAL duk_size_t duk__hstring_get_charlen_slowpath(duk_hstring *h) { + if (DUK_LIKELY(DUK_HSTRING_HAS_ASCII(h))) { + /* Most practical strings will go here. */ + return DUK_HSTRING_GET_BYTELEN(h); + } else { + /* ASCII flag is lazy, so set it here. */ + duk_size_t res; + + /* XXX: here we could use the strcache to speed up the + * computation (matters for 'i < str.length' loops). + */ + + res = duk_unicode_unvalidated_utf8_length(DUK_HSTRING_GET_DATA(h), DUK_HSTRING_GET_BYTELEN(h)); + +#if defined(DUK_USE_ROM_STRINGS) + if (DUK_HEAPHDR_HAS_READONLY((duk_heaphdr *) h)) { + /* For ROM strings, can't write anything; ASCII flag + * is preset so we don't need to update it. + */ + return res; + } +#endif + if (DUK_LIKELY(res == DUK_HSTRING_GET_BYTELEN(h))) { + DUK_HSTRING_SET_ASCII(h); + } + return res; + } +} +#endif /* DUK_USE_HSTRING_CLEN */ + +#if defined(DUK_USE_HSTRING_CLEN) +DUK_INTERNAL DUK_HOT duk_size_t duk_hstring_get_charlen(duk_hstring *h) { +#if defined(DUK_USE_STRLEN16) + if (DUK_LIKELY(h->clen16 != 0)) { + return h->clen16; + } +#else + if (DUK_LIKELY(h->clen != 0)) { + return h->clen; + } +#endif + return duk__hstring_get_charlen_slowpath(h); +} +#else /* DUK_USE_HSTRING_CLEN */ +DUK_INTERNAL DUK_HOT duk_size_t duk_hstring_get_charlen(duk_hstring *h) { + /* Always use slow path. */ + return duk__hstring_get_charlen_slowpath(h); +} +#endif /* DUK_USE_HSTRING_CLEN */ +#endif /* DUK_USE_HSTRING_LAZY_CLEN */ + +/* + * Compare duk_hstring to an ASCII cstring. + */ + +DUK_INTERNAL duk_bool_t duk_hstring_equals_ascii_cstring(duk_hstring *h, const char *cstr) { + duk_size_t len; + + DUK_ASSERT(h != NULL); + DUK_ASSERT(cstr != NULL); + + len = DUK_STRLEN(cstr); + if (len != DUK_HSTRING_GET_BYTELEN(h)) { + return 0; + } + if (duk_memcmp((const void *) cstr, (const void *) DUK_HSTRING_GET_DATA(h), len) == 0) { + return 1; + } + return 0; +} +#line 1 "duk_hthread_alloc.c" +/* + * duk_hthread allocation and freeing. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Allocate initial stacks for a thread. Note that 'thr' must be reachable + * as a garbage collection may be triggered by the allocation attempts. + * Returns zero (without leaking memory) if init fails. + */ + +DUK_INTERNAL duk_bool_t duk_hthread_init_stacks(duk_heap *heap, duk_hthread *thr) { + duk_size_t alloc_size; + duk_size_t i; + + DUK_ASSERT(heap != NULL); + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->valstack == NULL); + DUK_ASSERT(thr->valstack_end == NULL); + DUK_ASSERT(thr->valstack_alloc_end == NULL); + DUK_ASSERT(thr->valstack_bottom == NULL); + DUK_ASSERT(thr->valstack_top == NULL); + DUK_ASSERT(thr->callstack_curr == NULL); + + /* valstack */ + DUK_ASSERT(DUK_VALSTACK_API_ENTRY_MINIMUM <= DUK_VALSTACK_INITIAL_SIZE); + alloc_size = sizeof(duk_tval) * DUK_VALSTACK_INITIAL_SIZE; + thr->valstack = (duk_tval *) DUK_ALLOC(heap, alloc_size); + if (!thr->valstack) { + goto fail; + } + duk_memzero(thr->valstack, alloc_size); + thr->valstack_end = thr->valstack + DUK_VALSTACK_API_ENTRY_MINIMUM; + thr->valstack_alloc_end = thr->valstack + DUK_VALSTACK_INITIAL_SIZE; + thr->valstack_bottom = thr->valstack; + thr->valstack_top = thr->valstack; + + for (i = 0; i < DUK_VALSTACK_INITIAL_SIZE; i++) { + DUK_TVAL_SET_UNDEFINED(&thr->valstack[i]); + } + + return 1; + + fail: + DUK_FREE(heap, thr->valstack); + DUK_ASSERT(thr->callstack_curr == NULL); + + thr->valstack = NULL; + return 0; +} + +/* For indirect allocs. */ + +DUK_INTERNAL void *duk_hthread_get_valstack_ptr(duk_heap *heap, void *ud) { + duk_hthread *thr = (duk_hthread *) ud; + DUK_UNREF(heap); + return (void *) thr->valstack; +} +#line 1 "duk_hthread_builtins.c" +/* + * Initialize built-in objects. Current thread must have a valstack + * and initialization errors may longjmp, so a setjmp() catch point + * must exist. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Encoding constants, must match genbuiltins.py + */ + +#define DUK__PROP_FLAGS_BITS 3 +#define DUK__LENGTH_PROP_BITS 3 +#define DUK__NARGS_BITS 3 +#define DUK__PROP_TYPE_BITS 3 + +#define DUK__NARGS_VARARGS_MARKER 0x07 + +#define DUK__PROP_TYPE_DOUBLE 0 +#define DUK__PROP_TYPE_STRING 1 +#define DUK__PROP_TYPE_STRIDX 2 +#define DUK__PROP_TYPE_BUILTIN 3 +#define DUK__PROP_TYPE_UNDEFINED 4 +#define DUK__PROP_TYPE_BOOLEAN_TRUE 5 +#define DUK__PROP_TYPE_BOOLEAN_FALSE 6 +#define DUK__PROP_TYPE_ACCESSOR 7 + +/* + * Create built-in objects by parsing an init bitstream generated + * by genbuiltins.py. + */ + +#if defined(DUK_USE_ROM_OBJECTS) +#if defined(DUK_USE_ROM_GLOBAL_CLONE) || defined(DUK_USE_ROM_GLOBAL_INHERIT) +DUK_LOCAL void duk__duplicate_ram_global_object(duk_hthread *thr) { + duk_hobject *h_global; +#if defined(DUK_USE_ROM_GLOBAL_CLONE) + duk_hobject *h_oldglobal; + duk_uint8_t *props; + duk_size_t alloc_size; +#endif + duk_hobject *h_objenv; + + /* XXX: refactor into internal helper, duk_clone_hobject() */ + +#if defined(DUK_USE_ROM_GLOBAL_INHERIT) + /* Inherit from ROM-based global object: less RAM usage, less transparent. */ + h_global = duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_GLOBAL), + DUK_BIDX_GLOBAL); + DUK_ASSERT(h_global != NULL); +#elif defined(DUK_USE_ROM_GLOBAL_CLONE) + /* Clone the properties of the ROM-based global object to create a + * fully RAM-based global object. Uses more memory than the inherit + * model but more compliant. + */ + h_global = duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_GLOBAL), + DUK_BIDX_OBJECT_PROTOTYPE); + DUK_ASSERT(h_global != NULL); + h_oldglobal = thr->builtins[DUK_BIDX_GLOBAL]; + DUK_ASSERT(h_oldglobal != NULL); + + /* Copy the property table verbatim; this handles attributes etc. + * For ROM objects it's not necessary (or possible) to update + * refcounts so leave them as is. + */ + alloc_size = DUK_HOBJECT_P_ALLOC_SIZE(h_oldglobal); + DUK_ASSERT(alloc_size > 0); + props = DUK_ALLOC_CHECKED(thr, alloc_size); + DUK_ASSERT(props != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROPS(thr->heap, h_oldglobal) != NULL); + duk_memcpy((void *) props, (const void *) DUK_HOBJECT_GET_PROPS(thr->heap, h_oldglobal), alloc_size); + + /* XXX: keep property attributes or tweak them here? + * Properties will now be non-configurable even when they're + * normally configurable for the global object. + */ + + DUK_ASSERT(DUK_HOBJECT_GET_PROPS(thr->heap, h_global) == NULL); + DUK_HOBJECT_SET_PROPS(thr->heap, h_global, props); + DUK_HOBJECT_SET_ESIZE(h_global, DUK_HOBJECT_GET_ESIZE(h_oldglobal)); + DUK_HOBJECT_SET_ENEXT(h_global, DUK_HOBJECT_GET_ENEXT(h_oldglobal)); + DUK_HOBJECT_SET_ASIZE(h_global, DUK_HOBJECT_GET_ASIZE(h_oldglobal)); + DUK_HOBJECT_SET_HSIZE(h_global, DUK_HOBJECT_GET_HSIZE(h_oldglobal)); +#else +#error internal error in config defines +#endif + + duk_hobject_compact_props(thr, h_global); + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL] != NULL); + DUK_ASSERT(!DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE((duk_heaphdr *) thr->builtins[DUK_BIDX_GLOBAL])); /* no need to decref: ROM object */ + thr->builtins[DUK_BIDX_GLOBAL] = h_global; + DUK_HOBJECT_INCREF(thr, h_global); + DUK_D(DUK_DPRINT("duplicated global object: %!O", h_global)); + + /* Create a fresh object environment for the global scope. This is + * needed so that the global scope points to the newly created RAM-based + * global object. + */ + h_objenv = (duk_hobject *) duk_hobjenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJENV)); + DUK_ASSERT(h_objenv != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_objenv) == NULL); + duk_push_hobject(thr, h_objenv); + + DUK_ASSERT(h_global != NULL); + ((duk_hobjenv *) h_objenv)->target = h_global; + DUK_HOBJECT_INCREF(thr, h_global); + DUK_ASSERT(((duk_hobjenv *) h_objenv)->has_this == 0); + + DUK_ASSERT(thr->builtins[DUK_BIDX_GLOBAL_ENV] != NULL); + DUK_ASSERT(!DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE((duk_heaphdr *) thr->builtins[DUK_BIDX_GLOBAL_ENV])); /* no need to decref: ROM object */ + thr->builtins[DUK_BIDX_GLOBAL_ENV] = h_objenv; + DUK_HOBJECT_INCREF(thr, h_objenv); + DUK_D(DUK_DPRINT("duplicated global env: %!O", h_objenv)); + + DUK_HOBJENV_ASSERT_VALID((duk_hobjenv *) h_objenv); + + duk_pop_2(thr); /* Pop global object and global env. */ +} +#endif /* DUK_USE_ROM_GLOBAL_CLONE || DUK_USE_ROM_GLOBAL_INHERIT */ + +DUK_INTERNAL void duk_hthread_create_builtin_objects(duk_hthread *thr) { + /* Setup builtins from ROM objects. All heaps/threads will share + * the same readonly objects. + */ + duk_small_uint_t i; + + for (i = 0; i < DUK_NUM_BUILTINS; i++) { + duk_hobject *h; + h = (duk_hobject *) DUK_LOSE_CONST(duk_rom_builtins_bidx[i]); + DUK_ASSERT(h != NULL); + thr->builtins[i] = h; + } + +#if defined(DUK_USE_ROM_GLOBAL_CLONE) || defined(DUK_USE_ROM_GLOBAL_INHERIT) + /* By default the global object is read-only which is often much + * more of an issue than having read-only built-in objects (like + * RegExp, Date, etc). Use a RAM-based copy of the global object + * and the global environment object for convenience. + */ + duk__duplicate_ram_global_object(thr); +#endif +} +#else /* DUK_USE_ROM_OBJECTS */ +DUK_LOCAL void duk__push_stridx(duk_hthread *thr, duk_bitdecoder_ctx *bd) { + duk_small_uint_t n; + + n = (duk_small_uint_t) duk_bd_decode_varuint(bd); + DUK_ASSERT_DISABLE(n >= 0); /* unsigned */ + DUK_ASSERT(n < DUK_HEAP_NUM_STRINGS); + duk_push_hstring_stridx(thr, n); +} +DUK_LOCAL void duk__push_string(duk_hthread *thr, duk_bitdecoder_ctx *bd) { + /* XXX: built-ins data could provide a maximum length that is + * actually needed; bitpacked max length is now 256 bytes. + */ + duk_uint8_t tmp[DUK_BD_BITPACKED_STRING_MAXLEN]; + duk_small_uint_t len; + + len = duk_bd_decode_bitpacked_string(bd, tmp); + duk_push_lstring(thr, (const char *) tmp, (duk_size_t) len); +} +DUK_LOCAL void duk__push_stridx_or_string(duk_hthread *thr, duk_bitdecoder_ctx *bd) { + duk_small_uint_t n; + + n = (duk_small_uint_t) duk_bd_decode_varuint(bd); + if (n == 0) { + duk__push_string(thr, bd); + } else { + n--; + DUK_ASSERT(n < DUK_HEAP_NUM_STRINGS); + duk_push_hstring_stridx(thr, n); + } +} +DUK_LOCAL void duk__push_double(duk_hthread *thr, duk_bitdecoder_ctx *bd) { + duk_double_union du; + duk_small_uint_t i; + + for (i = 0; i < 8; i++) { + /* Encoding endianness must match target memory layout, + * build scripts and genbuiltins.py must ensure this. + */ + du.uc[i] = (duk_uint8_t) duk_bd_decode(bd, 8); + } + + duk_push_number(thr, du.d); /* push operation normalizes NaNs */ +} + +DUK_INTERNAL void duk_hthread_create_builtin_objects(duk_hthread *thr) { + duk_bitdecoder_ctx bd_ctx; + duk_bitdecoder_ctx *bd = &bd_ctx; /* convenience */ + duk_hobject *h; + duk_small_uint_t i, j; + + DUK_D(DUK_DPRINT("INITBUILTINS BEGIN: DUK_NUM_BUILTINS=%d, DUK_NUM_BUILTINS_ALL=%d", (int) DUK_NUM_BUILTINS, (int) DUK_NUM_ALL_BUILTINS)); + + duk_memzero(&bd_ctx, sizeof(bd_ctx)); + bd->data = (const duk_uint8_t *) duk_builtins_data; + bd->length = (duk_size_t) DUK_BUILTINS_DATA_LENGTH; + + /* + * First create all built-in bare objects on the empty valstack. + * + * Built-ins in the index range [0,DUK_NUM_BUILTINS-1] have value + * stack indices matching their eventual thr->builtins[] index. + * + * Built-ins in the index range [DUK_NUM_BUILTINS,DUK_NUM_ALL_BUILTINS] + * will exist on the value stack during init but won't be placed + * into thr->builtins[]. These are objects referenced in some way + * from thr->builtins[] roots but which don't need to be indexed by + * Duktape through thr->builtins[] (e.g. user custom objects). + * + * Internal prototypes will be incorrect (NULL) at this stage. + */ + + duk_require_stack(thr, DUK_NUM_ALL_BUILTINS); + + DUK_DD(DUK_DDPRINT("create empty built-ins")); + DUK_ASSERT_TOP(thr, 0); + for (i = 0; i < DUK_NUM_ALL_BUILTINS; i++) { + duk_small_uint_t class_num; + duk_small_int_t len = -1; /* must be signed */ + + class_num = (duk_small_uint_t) duk_bd_decode_varuint(bd); + len = (duk_small_int_t) duk_bd_decode_flagged_signed(bd, DUK__LENGTH_PROP_BITS, (duk_int32_t) -1 /*def_value*/); + + if (class_num == DUK_HOBJECT_CLASS_FUNCTION) { + duk_small_uint_t natidx; + duk_small_int_t c_nargs; /* must hold DUK_VARARGS */ + duk_c_function c_func; + duk_int16_t magic; + + DUK_DDD(DUK_DDDPRINT("len=%ld", (long) len)); + DUK_ASSERT(len >= 0); + + natidx = (duk_small_uint_t) duk_bd_decode_varuint(bd); + DUK_ASSERT(natidx != 0); + c_func = duk_bi_native_functions[natidx]; + DUK_ASSERT(c_func != NULL); + + c_nargs = (duk_small_int_t) duk_bd_decode_flagged_signed(bd, DUK__NARGS_BITS, len /*def_value*/); + if (c_nargs == DUK__NARGS_VARARGS_MARKER) { + c_nargs = DUK_VARARGS; + } + + /* XXX: set magic directly here? (it could share the c_nargs arg) */ + (void) duk_push_c_function_builtin(thr, c_func, c_nargs); + h = duk_known_hobject(thr, -1); + + /* Currently all built-in native functions are strict. + * duk_push_c_function() now sets strict flag, so + * assert for it. + */ + DUK_ASSERT(DUK_HOBJECT_HAS_STRICT(h)); + + /* XXX: function properties */ + + duk__push_stridx_or_string(thr, bd); +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + duk_xdef_prop_stridx_short(thr, + -2, + DUK_STRIDX_NAME, + DUK_PROPDESC_FLAGS_C); +#else + duk_pop(thr); /* Not very ideal but good enough for now. */ +#endif + + /* Almost all global level Function objects are constructable + * but not all: Function.prototype is a non-constructable, + * callable Function. + */ + if (duk_bd_decode_flag(bd)) { + DUK_ASSERT(DUK_HOBJECT_HAS_CONSTRUCTABLE(h)); + } else { + DUK_HOBJECT_CLEAR_CONSTRUCTABLE(h); + } + + /* Cast converts magic to 16-bit signed value */ + magic = (duk_int16_t) duk_bd_decode_varuint(bd); + ((duk_hnatfunc *) h)->magic = magic; + } else if (class_num == DUK_HOBJECT_CLASS_ARRAY) { + duk_push_array(thr); + } else if (class_num == DUK_HOBJECT_CLASS_OBJENV) { + duk_hobjenv *env; + duk_hobject *global; + + DUK_ASSERT(i == DUK_BIDX_GLOBAL_ENV); + DUK_ASSERT(DUK_BIDX_GLOBAL_ENV > DUK_BIDX_GLOBAL); + + env = duk_hobjenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJENV)); + DUK_ASSERT(env->target == NULL); + duk_push_hobject(thr, (duk_hobject *) env); + + global = duk_known_hobject(thr, DUK_BIDX_GLOBAL); + DUK_ASSERT(global != NULL); + env->target = global; + DUK_HOBJECT_INCREF(thr, global); + DUK_ASSERT(env->has_this == 0); + + DUK_HOBJENV_ASSERT_VALID(env); + } else { + DUK_ASSERT(class_num != DUK_HOBJECT_CLASS_DECENV); + + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_EXTENSIBLE, + -1); /* no prototype or class yet */ + + } + + h = duk_known_hobject(thr, -1); + DUK_HOBJECT_SET_CLASS_NUMBER(h, class_num); + + if (i < DUK_NUM_BUILTINS) { + thr->builtins[i] = h; + DUK_HOBJECT_INCREF(thr, &h->hdr); + } + + if (len >= 0) { + /* In ES2015+ built-in function object .length property + * has property attributes C (configurable only): + * http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-standard-built-in-objects + * + * Array.prototype remains an Array instance in ES2015+ + * and its length has attributes W (writable only). + * Because .length is now virtual for duk_harray, it is + * not encoded explicitly in init data. + */ + + DUK_ASSERT(class_num != DUK_HOBJECT_CLASS_ARRAY); /* .length is virtual */ + duk_push_int(thr, len); + duk_xdef_prop_stridx_short(thr, + -2, + DUK_STRIDX_LENGTH, + DUK_PROPDESC_FLAGS_C); + } + + /* enable exotic behaviors last */ + + if (class_num == DUK_HOBJECT_CLASS_ARRAY) { + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_ARRAY(h)); /* set by duk_push_array() */ + } + if (class_num == DUK_HOBJECT_CLASS_STRING) { + DUK_HOBJECT_SET_EXOTIC_STRINGOBJ(h); + } + + /* some assertions */ + + DUK_ASSERT(DUK_HOBJECT_HAS_EXTENSIBLE(h)); + /* DUK_HOBJECT_FLAG_CONSTRUCTABLE varies */ + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(h)); + DUK_ASSERT(!DUK_HOBJECT_HAS_COMPFUNC(h)); + /* DUK_HOBJECT_FLAG_NATFUNC varies */ + DUK_ASSERT(!DUK_HOBJECT_IS_THREAD(h)); + DUK_ASSERT(!DUK_HOBJECT_IS_PROXY(h)); + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(h) || class_num == DUK_HOBJECT_CLASS_ARRAY); + /* DUK_HOBJECT_FLAG_STRICT varies */ + DUK_ASSERT(!DUK_HOBJECT_HAS_NATFUNC(h) || /* all native functions have NEWENV */ + DUK_HOBJECT_HAS_NEWENV(h)); + DUK_ASSERT(!DUK_HOBJECT_HAS_NAMEBINDING(h)); + DUK_ASSERT(!DUK_HOBJECT_HAS_CREATEARGS(h)); + /* DUK_HOBJECT_FLAG_EXOTIC_ARRAY varies */ + /* DUK_HOBJECT_FLAG_EXOTIC_STRINGOBJ varies */ + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(h)); + + DUK_DDD(DUK_DDDPRINT("created built-in %ld, class=%ld, length=%ld", (long) i, (long) class_num, (long) len)); + } + + /* + * Then decode the builtins init data (see genbuiltins.py) to + * init objects. Internal prototypes are set at this stage, + * with thr->builtins[] populated. + */ + + DUK_DD(DUK_DDPRINT("initialize built-in object properties")); + for (i = 0; i < DUK_NUM_ALL_BUILTINS; i++) { + duk_small_uint_t t; + duk_small_uint_t num; + + DUK_DDD(DUK_DDDPRINT("initializing built-in object at index %ld", (long) i)); + h = duk_known_hobject(thr, (duk_idx_t) i); + + t = (duk_small_uint_t) duk_bd_decode_varuint(bd); + if (t > 0) { + t--; + DUK_DDD(DUK_DDDPRINT("set internal prototype: built-in %ld", (long) t)); + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h, duk_known_hobject(thr, (duk_idx_t) t)); + } else if (DUK_HOBJECT_IS_NATFUNC(h)) { + /* Standard native built-ins cannot inherit from + * %NativeFunctionPrototype%, they are required to + * inherit from Function.prototype directly. + */ + DUK_ASSERT(thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE] != NULL); + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h, thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); + } + + t = (duk_small_uint_t) duk_bd_decode_varuint(bd); + if (t > 0) { + /* 'prototype' property for all built-in objects (which have it) has attributes: + * [[Writable]] = false, + * [[Enumerable]] = false, + * [[Configurable]] = false + */ + t--; + DUK_DDD(DUK_DDDPRINT("set external prototype: built-in %ld", (long) t)); + duk_dup(thr, (duk_idx_t) t); + duk_xdef_prop_stridx(thr, (duk_idx_t) i, DUK_STRIDX_PROTOTYPE, DUK_PROPDESC_FLAGS_NONE); + } + + t = (duk_small_uint_t) duk_bd_decode_varuint(bd); + if (t > 0) { + /* 'constructor' property for all built-in objects (which have it) has attributes: + * [[Writable]] = true, + * [[Enumerable]] = false, + * [[Configurable]] = true + */ + t--; + DUK_DDD(DUK_DDDPRINT("set external constructor: built-in %ld", (long) t)); + duk_dup(thr, (duk_idx_t) t); + duk_xdef_prop_stridx(thr, (duk_idx_t) i, DUK_STRIDX_CONSTRUCTOR, DUK_PROPDESC_FLAGS_WC); + } + + /* normal valued properties */ + num = (duk_small_uint_t) duk_bd_decode_varuint(bd); + DUK_DDD(DUK_DDDPRINT("built-in object %ld, %ld normal valued properties", (long) i, (long) num)); + for (j = 0; j < num; j++) { + duk_small_uint_t defprop_flags; + + duk__push_stridx_or_string(thr, bd); + + /* + * Property attribute defaults are defined in E5 Section 15 (first + * few pages); there is a default for all properties and a special + * default for 'length' properties. Variation from the defaults is + * signaled using a single flag bit in the bitstream. + */ + + defprop_flags = (duk_small_uint_t) duk_bd_decode_flagged(bd, + DUK__PROP_FLAGS_BITS, + (duk_uint32_t) DUK_PROPDESC_FLAGS_WC); + defprop_flags |= DUK_DEFPROP_FORCE | + DUK_DEFPROP_HAVE_VALUE | + DUK_DEFPROP_HAVE_WRITABLE | + DUK_DEFPROP_HAVE_ENUMERABLE | + DUK_DEFPROP_HAVE_CONFIGURABLE; /* Defaults for data properties. */ + + /* The writable, enumerable, configurable flags in prop_flags + * match both duk_def_prop() and internal property flags. + */ + DUK_ASSERT(DUK_PROPDESC_FLAG_WRITABLE == DUK_DEFPROP_WRITABLE); + DUK_ASSERT(DUK_PROPDESC_FLAG_ENUMERABLE == DUK_DEFPROP_ENUMERABLE); + DUK_ASSERT(DUK_PROPDESC_FLAG_CONFIGURABLE == DUK_DEFPROP_CONFIGURABLE); + + t = (duk_small_uint_t) duk_bd_decode(bd, DUK__PROP_TYPE_BITS); + + DUK_DDD(DUK_DDDPRINT("built-in %ld, normal-valued property %ld, key %!T, flags 0x%02lx, type %ld", + (long) i, (long) j, duk_get_tval(thr, -1), (unsigned long) defprop_flags, (long) t)); + + switch (t) { + case DUK__PROP_TYPE_DOUBLE: { + duk__push_double(thr, bd); + break; + } + case DUK__PROP_TYPE_STRING: { + duk__push_string(thr, bd); + break; + } + case DUK__PROP_TYPE_STRIDX: { + duk__push_stridx(thr, bd); + break; + } + case DUK__PROP_TYPE_BUILTIN: { + duk_small_uint_t bidx; + + bidx = (duk_small_uint_t) duk_bd_decode_varuint(bd); + duk_dup(thr, (duk_idx_t) bidx); + break; + } + case DUK__PROP_TYPE_UNDEFINED: { + duk_push_undefined(thr); + break; + } + case DUK__PROP_TYPE_BOOLEAN_TRUE: { + duk_push_true(thr); + break; + } + case DUK__PROP_TYPE_BOOLEAN_FALSE: { + duk_push_false(thr); + break; + } + case DUK__PROP_TYPE_ACCESSOR: { + duk_small_uint_t natidx_getter = (duk_small_uint_t) duk_bd_decode_varuint(bd); + duk_small_uint_t natidx_setter = (duk_small_uint_t) duk_bd_decode_varuint(bd); + duk_small_uint_t accessor_magic = (duk_small_uint_t) duk_bd_decode_varuint(bd); + duk_c_function c_func_getter; + duk_c_function c_func_setter; + + DUK_DDD(DUK_DDDPRINT("built-in accessor property: objidx=%ld, key=%!T, getteridx=%ld, setteridx=%ld, flags=0x%04lx", + (long) i, duk_get_tval(thr, -1), (long) natidx_getter, (long) natidx_setter, (unsigned long) defprop_flags)); + + c_func_getter = duk_bi_native_functions[natidx_getter]; + if (c_func_getter != NULL) { + duk_push_c_function_builtin_noconstruct(thr, c_func_getter, 0); /* always 0 args */ + duk_set_magic(thr, -1, (duk_int_t) accessor_magic); + defprop_flags |= DUK_DEFPROP_HAVE_GETTER; + } + c_func_setter = duk_bi_native_functions[natidx_setter]; + if (c_func_setter != NULL) { + duk_push_c_function_builtin_noconstruct(thr, c_func_setter, 1); /* always 1 arg */ + duk_set_magic(thr, -1, (duk_int_t) accessor_magic); + defprop_flags |= DUK_DEFPROP_HAVE_SETTER; + } + + /* Writable flag doesn't make sense for an accessor. */ + DUK_ASSERT((defprop_flags & DUK_PROPDESC_FLAG_WRITABLE) == 0); /* genbuiltins.py ensures */ + + defprop_flags &= ~(DUK_DEFPROP_HAVE_VALUE | DUK_DEFPROP_HAVE_WRITABLE); + defprop_flags |= DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_HAVE_CONFIGURABLE; + break; + } + default: { + /* exhaustive */ + DUK_UNREACHABLE(); + } + } + + duk_def_prop(thr, (duk_idx_t) i, defprop_flags); + DUK_ASSERT_TOP(thr, DUK_NUM_ALL_BUILTINS); + } + + /* native function properties */ + num = (duk_small_uint_t) duk_bd_decode_varuint(bd); + DUK_DDD(DUK_DDDPRINT("built-in object %ld, %ld function valued properties", (long) i, (long) num)); + for (j = 0; j < num; j++) { + duk_hstring *h_key; + duk_small_uint_t natidx; + duk_int_t c_nargs; /* must hold DUK_VARARGS */ + duk_small_uint_t c_length; + duk_int16_t magic; + duk_c_function c_func; + duk_hnatfunc *h_func; +#if defined(DUK_USE_LIGHTFUNC_BUILTINS) + duk_small_int_t lightfunc_eligible; +#endif + duk_small_uint_t defprop_flags; + + duk__push_stridx_or_string(thr, bd); + h_key = duk_known_hstring(thr, -1); + DUK_UNREF(h_key); + natidx = (duk_small_uint_t) duk_bd_decode_varuint(bd); + + c_length = (duk_small_uint_t) duk_bd_decode(bd, DUK__LENGTH_PROP_BITS); + c_nargs = (duk_int_t) duk_bd_decode_flagged(bd, DUK__NARGS_BITS, (duk_uint32_t) c_length /*def_value*/); + if (c_nargs == DUK__NARGS_VARARGS_MARKER) { + c_nargs = DUK_VARARGS; + } + + c_func = duk_bi_native_functions[natidx]; + + DUK_DDD(DUK_DDDPRINT("built-in %ld, function-valued property %ld, key %!O, natidx %ld, length %ld, nargs %ld", + (long) i, (long) j, (duk_heaphdr *) h_key, (long) natidx, (long) c_length, + (c_nargs == DUK_VARARGS ? (long) -1 : (long) c_nargs))); + + /* Cast converts magic to 16-bit signed value */ + magic = (duk_int16_t) duk_bd_decode_varuint(bd); + +#if defined(DUK_USE_LIGHTFUNC_BUILTINS) + lightfunc_eligible = + ((c_nargs >= DUK_LFUNC_NARGS_MIN && c_nargs <= DUK_LFUNC_NARGS_MAX) || (c_nargs == DUK_VARARGS)) && + (c_length <= DUK_LFUNC_LENGTH_MAX) && + (magic >= DUK_LFUNC_MAGIC_MIN && magic <= DUK_LFUNC_MAGIC_MAX); + + /* These functions have trouble working as lightfuncs. + * Some of them have specific asserts and some may have + * additional properties (e.g. 'require.id' may be written). + */ + if (c_func == duk_bi_global_object_eval) { + lightfunc_eligible = 0; + } +#if defined(DUK_USE_COROUTINE_SUPPORT) + if (c_func == duk_bi_thread_yield || + c_func == duk_bi_thread_resume) { + lightfunc_eligible = 0; + } +#endif + if (c_func == duk_bi_function_prototype_call || + c_func == duk_bi_function_prototype_apply || + c_func == duk_bi_reflect_apply || + c_func == duk_bi_reflect_construct) { + lightfunc_eligible = 0; + } + + if (lightfunc_eligible) { + duk_tval tv_lfunc; + duk_small_uint_t lf_nargs = (duk_small_uint_t) (c_nargs == DUK_VARARGS ? DUK_LFUNC_NARGS_VARARGS : c_nargs); + duk_small_uint_t lf_flags = DUK_LFUNC_FLAGS_PACK(magic, c_length, lf_nargs); + DUK_TVAL_SET_LIGHTFUNC(&tv_lfunc, c_func, lf_flags); + duk_push_tval(thr, &tv_lfunc); + DUK_D(DUK_DPRINT("built-in function eligible as light function: i=%d, j=%d c_length=%ld, c_nargs=%ld, magic=%ld -> %!iT", (int) i, (int) j, (long) c_length, (long) c_nargs, (long) magic, duk_get_tval(thr, -1))); + goto lightfunc_skip; + } + + DUK_D(DUK_DPRINT("built-in function NOT ELIGIBLE as light function: i=%d, j=%d c_length=%ld, c_nargs=%ld, magic=%ld", (int) i, (int) j, (long) c_length, (long) c_nargs, (long) magic)); +#endif /* DUK_USE_LIGHTFUNC_BUILTINS */ + + /* [ (builtin objects) name ] */ + + duk_push_c_function_builtin_noconstruct(thr, c_func, c_nargs); + h_func = duk_known_hnatfunc(thr, -1); + DUK_UNREF(h_func); + + /* XXX: add into init data? */ + + /* Special call handling, not described in init data. */ + if (c_func == duk_bi_global_object_eval || + c_func == duk_bi_function_prototype_call || + c_func == duk_bi_function_prototype_apply || + c_func == duk_bi_reflect_apply || + c_func == duk_bi_reflect_construct) { + DUK_HOBJECT_SET_SPECIAL_CALL((duk_hobject *) h_func); + } + + /* Currently all built-in native functions are strict. + * This doesn't matter for many functions, but e.g. + * String.prototype.charAt (and other string functions) + * rely on being strict so that their 'this' binding is + * not automatically coerced. + */ + DUK_HOBJECT_SET_STRICT((duk_hobject *) h_func); + + /* No built-in functions are constructable except the top + * level ones (Number, etc). + */ + DUK_ASSERT(!DUK_HOBJECT_HAS_CONSTRUCTABLE((duk_hobject *) h_func)); + + /* XXX: any way to avoid decoding magic bit; there are quite + * many function properties and relatively few with magic values. + */ + h_func->magic = magic; + + /* [ (builtin objects) name func ] */ + + duk_push_uint(thr, c_length); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_C); + + duk_dup_m2(thr); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_C); + + /* XXX: other properties of function instances; 'arguments', 'caller'. */ + + DUK_DD(DUK_DDPRINT("built-in object %ld, function property %ld -> %!T", + (long) i, (long) j, (duk_tval *) duk_get_tval(thr, -1))); + + /* [ (builtin objects) name func ] */ + + /* + * The default property attributes are correct for all + * function valued properties of built-in objects now. + */ + +#if defined(DUK_USE_LIGHTFUNC_BUILTINS) + lightfunc_skip: +#endif + + defprop_flags = (duk_small_uint_t) duk_bd_decode_flagged(bd, + DUK__PROP_FLAGS_BITS, + (duk_uint32_t) DUK_PROPDESC_FLAGS_WC); + defprop_flags |= DUK_DEFPROP_FORCE | + DUK_DEFPROP_HAVE_VALUE | + DUK_DEFPROP_HAVE_WRITABLE | + DUK_DEFPROP_HAVE_ENUMERABLE | + DUK_DEFPROP_HAVE_CONFIGURABLE; + DUK_ASSERT(DUK_PROPDESC_FLAG_WRITABLE == DUK_DEFPROP_WRITABLE); + DUK_ASSERT(DUK_PROPDESC_FLAG_ENUMERABLE == DUK_DEFPROP_ENUMERABLE); + DUK_ASSERT(DUK_PROPDESC_FLAG_CONFIGURABLE == DUK_DEFPROP_CONFIGURABLE); + + duk_def_prop(thr, (duk_idx_t) i, defprop_flags); + + /* [ (builtin objects) ] */ + } + } + + /* + * Special post-tweaks, for cases not covered by the init data format. + * + * - Set Date.prototype.toGMTString to Date.prototype.toUTCString. + * toGMTString is required to have the same Function object as + * toUTCString in E5 Section B.2.6. Note that while Smjs respects + * this, V8 does not (the Function objects are distinct). + * + * - Make DoubleError non-extensible. + * + * - Add info about most important effective compile options to Duktape. + * + * - Possibly remove some properties (values or methods) which are not + * desirable with current feature options but are not currently + * conditional in init data. + */ + +#if defined(DUK_USE_DATE_BUILTIN) + duk_get_prop_stridx_short(thr, DUK_BIDX_DATE_PROTOTYPE, DUK_STRIDX_TO_UTC_STRING); + duk_xdef_prop_stridx_short(thr, DUK_BIDX_DATE_PROTOTYPE, DUK_STRIDX_TO_GMT_STRING, DUK_PROPDESC_FLAGS_WC); +#endif + + h = duk_known_hobject(thr, DUK_BIDX_DOUBLE_ERROR); + DUK_HOBJECT_CLEAR_EXTENSIBLE(h); + +#if !defined(DUK_USE_ES6_OBJECT_PROTO_PROPERTY) + DUK_DD(DUK_DDPRINT("delete Object.prototype.__proto__ built-in which is not enabled in features")); + (void) duk_hobject_delprop_raw(thr, thr->builtins[DUK_BIDX_OBJECT_PROTOTYPE], DUK_HTHREAD_STRING___PROTO__(thr), DUK_DELPROP_FLAG_THROW); +#endif + +#if !defined(DUK_USE_ES6_OBJECT_SETPROTOTYPEOF) + DUK_DD(DUK_DDPRINT("delete Object.setPrototypeOf built-in which is not enabled in features")); + (void) duk_hobject_delprop_raw(thr, thr->builtins[DUK_BIDX_OBJECT_CONSTRUCTOR], DUK_HTHREAD_STRING_SET_PROTOTYPE_OF(thr), DUK_DELPROP_FLAG_THROW); +#endif + + /* XXX: relocate */ + duk_push_string(thr, + /* Endianness indicator */ +#if defined(DUK_USE_INTEGER_LE) + "l" +#elif defined(DUK_USE_INTEGER_BE) + "b" +#elif defined(DUK_USE_INTEGER_ME) /* integer mixed endian not really used now */ + "m" +#else + "?" +#endif +#if defined(DUK_USE_DOUBLE_LE) + "l" +#elif defined(DUK_USE_DOUBLE_BE) + "b" +#elif defined(DUK_USE_DOUBLE_ME) + "m" +#else + "?" +#endif + " " + /* Packed or unpacked tval */ +#if defined(DUK_USE_PACKED_TVAL) + "p" +#else + "u" +#endif +#if defined(DUK_USE_FASTINT) + "f" +#endif + " " + /* Low memory/performance options */ +#if defined(DUK_USE_STRTAB_PTRCOMP) + "s" +#endif +#if !defined(DUK_USE_HEAPPTR16) && !defined(DUK_DATAPTR16) && !defined(DUK_FUNCPTR16) + "n" +#endif +#if defined(DUK_USE_HEAPPTR16) + "h" +#endif +#if defined(DUK_USE_DATAPTR16) + "d" +#endif +#if defined(DUK_USE_FUNCPTR16) + "f" +#endif +#if defined(DUK_USE_REFCOUNT16) + "R" +#endif +#if defined(DUK_USE_STRHASH16) + "H" +#endif +#if defined(DUK_USE_STRLEN16) + "S" +#endif +#if defined(DUK_USE_BUFLEN16) + "B" +#endif +#if defined(DUK_USE_OBJSIZES16) + "O" +#endif +#if defined(DUK_USE_LIGHTFUNC_BUILTINS) + "L" +#endif +#if defined(DUK_USE_ROM_STRINGS) || defined(DUK_USE_ROM_OBJECTS) + /* XXX: This won't be shown in practice now + * because this code is not run when builtins + * are in ROM. + */ + "Z" +#endif +#if defined(DUK_USE_LITCACHE_SIZE) + "l" +#endif + " " + /* Object property allocation layout */ +#if defined(DUK_USE_HOBJECT_LAYOUT_1) + "p1" +#elif defined(DUK_USE_HOBJECT_LAYOUT_2) + "p2" +#elif defined(DUK_USE_HOBJECT_LAYOUT_3) + "p3" +#else + "p?" +#endif + " " + /* Alignment guarantee */ +#if (DUK_USE_ALIGN_BY == 4) + "a4" +#elif (DUK_USE_ALIGN_BY == 8) + "a8" +#elif (DUK_USE_ALIGN_BY == 1) + "a1" +#else +#error invalid DUK_USE_ALIGN_BY +#endif + " " + /* Architecture, OS, and compiler strings */ + DUK_USE_ARCH_STRING + " " + DUK_USE_OS_STRING + " " + DUK_USE_COMPILER_STRING); + duk_xdef_prop_stridx_short(thr, DUK_BIDX_DUKTAPE, DUK_STRIDX_ENV, DUK_PROPDESC_FLAGS_WC); + + /* + * Since built-ins are not often extended, compact them. + */ + + DUK_DD(DUK_DDPRINT("compact built-ins")); + for (i = 0; i < DUK_NUM_ALL_BUILTINS; i++) { + duk_hobject_compact_props(thr, duk_known_hobject(thr, (duk_idx_t) i)); + } + + DUK_D(DUK_DPRINT("INITBUILTINS END")); + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 1) + for (i = 0; i < DUK_NUM_ALL_BUILTINS; i++) { + DUK_DD(DUK_DDPRINT("built-in object %ld after initialization and compacting: %!@iO", + (long) i, (duk_heaphdr *) duk_require_hobject(thr, (duk_idx_t) i))); + } +#endif + + /* + * Pop built-ins from stack: they are now INCREF'd and + * reachable from the builtins[] array or indirectly + * through builtins[]. + */ + + duk_set_top(thr, 0); + DUK_ASSERT_TOP(thr, 0); +} +#endif /* DUK_USE_ROM_OBJECTS */ + +DUK_INTERNAL void duk_hthread_copy_builtin_objects(duk_hthread *thr_from, duk_hthread *thr_to) { + duk_small_uint_t i; + + for (i = 0; i < DUK_NUM_BUILTINS; i++) { + thr_to->builtins[i] = thr_from->builtins[i]; + DUK_HOBJECT_INCREF_ALLOWNULL(thr_to, thr_to->builtins[i]); /* side effect free */ + } +} + +/* automatic undefs */ +#undef DUK__LENGTH_PROP_BITS +#undef DUK__NARGS_BITS +#undef DUK__NARGS_VARARGS_MARKER +#undef DUK__PROP_FLAGS_BITS +#undef DUK__PROP_TYPE_ACCESSOR +#undef DUK__PROP_TYPE_BITS +#undef DUK__PROP_TYPE_BOOLEAN_FALSE +#undef DUK__PROP_TYPE_BOOLEAN_TRUE +#undef DUK__PROP_TYPE_BUILTIN +#undef DUK__PROP_TYPE_DOUBLE +#undef DUK__PROP_TYPE_STRIDX +#undef DUK__PROP_TYPE_STRING +#undef DUK__PROP_TYPE_UNDEFINED +#line 1 "duk_hthread_misc.c" +/* + * Thread support. + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL void duk_hthread_terminate(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + + while (thr->callstack_curr != NULL) { + duk_hthread_activation_unwind_norz(thr); + } + + thr->valstack_bottom = thr->valstack; + duk_set_top(thr, 0); /* unwinds valstack, updating refcounts */ + + thr->state = DUK_HTHREAD_STATE_TERMINATED; + + /* Here we could remove references to built-ins, but it may not be + * worth the effort because built-ins are quite likely to be shared + * with another (unterminated) thread, and terminated threads are also + * usually garbage collected quite quickly. + * + * We could also shrink the value stack here, but that also may not + * be worth the effort for the same reason. + */ + + DUK_REFZERO_CHECK_SLOW(thr); +} + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_INTERNAL duk_uint_fast32_t duk_hthread_get_act_curr_pc(duk_hthread *thr, duk_activation *act) { + duk_instr_t *bcode; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + DUK_UNREF(thr); + + /* XXX: store 'bcode' pointer to activation for faster lookup? */ + if (act->func && DUK_HOBJECT_IS_COMPFUNC(act->func)) { + bcode = DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, (duk_hcompfunc *) (act->func)); + return (duk_uint_fast32_t) (act->curr_pc - bcode); + } + return 0; +} +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +DUK_INTERNAL duk_uint_fast32_t duk_hthread_get_act_prev_pc(duk_hthread *thr, duk_activation *act) { + duk_instr_t *bcode; + duk_uint_fast32_t ret; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + DUK_UNREF(thr); + + if (act->func && DUK_HOBJECT_IS_COMPFUNC(act->func)) { + bcode = DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, (duk_hcompfunc *) (act->func)); + ret = (duk_uint_fast32_t) (act->curr_pc - bcode); + if (ret > 0) { + ret--; + } + return ret; + } + return 0; +} + +/* Write bytecode executor's curr_pc back to topmost activation (if any). */ +DUK_INTERNAL void duk_hthread_sync_currpc(duk_hthread *thr) { + duk_activation *act; + + DUK_ASSERT(thr != NULL); + + if (thr->ptr_curr_pc != NULL) { + /* ptr_curr_pc != NULL only when bytecode executor is active. */ + DUK_ASSERT(thr->callstack_top > 0); + DUK_ASSERT(thr->callstack_curr != NULL); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + act->curr_pc = *thr->ptr_curr_pc; + } +} + +DUK_INTERNAL void duk_hthread_sync_and_null_currpc(duk_hthread *thr) { + duk_activation *act; + + DUK_ASSERT(thr != NULL); + + if (thr->ptr_curr_pc != NULL) { + /* ptr_curr_pc != NULL only when bytecode executor is active. */ + DUK_ASSERT(thr->callstack_top > 0); + DUK_ASSERT(thr->callstack_curr != NULL); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + act->curr_pc = *thr->ptr_curr_pc; + thr->ptr_curr_pc = NULL; + } +} +#line 1 "duk_hthread_stacks.c" +/* + * Thread stack (mainly call stack) primitives: allocation of activations, + * unwinding catchers and activations, etc. + * + * Value stack handling is a part of the API implementation. + */ + +/* #include duk_internal.h -> already included */ + +/* Unwind the topmost catcher of the current activation (caller must check that + * both exist) without side effects. + */ +DUK_INTERNAL void duk_hthread_catcher_unwind_norz(duk_hthread *thr, duk_activation *act) { + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + DUK_ASSERT(act->cat != NULL); /* caller must check */ + cat = act->cat; + DUK_ASSERT(cat != NULL); + + DUK_DDD(DUK_DDDPRINT("unwinding catch stack entry %p (lexenv check is done)", (void *) cat)); + + if (DUK_CAT_HAS_LEXENV_ACTIVE(cat)) { + duk_hobject *env; + + env = act->lex_env; /* current lex_env of the activation (created for catcher) */ + DUK_ASSERT(env != NULL); /* must be, since env was created when catcher was created */ + act->lex_env = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, env); /* prototype is lex_env before catcher created */ + DUK_HOBJECT_INCREF(thr, act->lex_env); + DUK_HOBJECT_DECREF_NORZ(thr, env); + + /* There is no need to decref anything else than 'env': if 'env' + * becomes unreachable, refzero will handle decref'ing its prototype. + */ + } + + act->cat = cat->parent; + duk_hthread_catcher_free(thr, cat); +} + +/* Same as above, but caller is certain no catcher-related lexenv may exist. */ +DUK_INTERNAL void duk_hthread_catcher_unwind_nolexenv_norz(duk_hthread *thr, duk_activation *act) { + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + DUK_ASSERT(act->cat != NULL); /* caller must check */ + cat = act->cat; + DUK_ASSERT(cat != NULL); + + DUK_DDD(DUK_DDDPRINT("unwinding catch stack entry %p (lexenv check is not done)", (void *) cat)); + + DUK_ASSERT(!DUK_CAT_HAS_LEXENV_ACTIVE(cat)); + + act->cat = cat->parent; + duk_hthread_catcher_free(thr, cat); +} + +DUK_LOCAL +#if defined(DUK_USE_CACHE_CATCHER) +DUK_NOINLINE +#endif +duk_catcher *duk__hthread_catcher_alloc_slow(duk_hthread *thr) { + duk_catcher *cat; + + cat = (duk_catcher *) DUK_ALLOC_CHECKED(thr, sizeof(duk_catcher)); + DUK_ASSERT(cat != NULL); + return cat; +} + +#if defined(DUK_USE_CACHE_CATCHER) +DUK_INTERNAL DUK_INLINE duk_catcher *duk_hthread_catcher_alloc(duk_hthread *thr) { + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + + cat = thr->heap->catcher_free; + if (DUK_LIKELY(cat != NULL)) { + thr->heap->catcher_free = cat->parent; + return cat; + } + + return duk__hthread_catcher_alloc_slow(thr); +} +#else /* DUK_USE_CACHE_CATCHER */ +DUK_INTERNAL duk_catcher *duk_hthread_catcher_alloc(duk_hthread *thr) { + return duk__hthread_catcher_alloc_slow(thr); +} +#endif /* DUK_USE_CACHE_CATCHER */ + +DUK_INTERNAL void duk_hthread_catcher_free(duk_hthread *thr, duk_catcher *cat) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(cat != NULL); + +#if defined(DUK_USE_CACHE_CATCHER) + /* Unconditional caching for now; freed in mark-and-sweep. */ + cat->parent = thr->heap->catcher_free; + thr->heap->catcher_free = cat; +#else + DUK_FREE_CHECKED(thr, (void *) cat); +#endif +} + +DUK_LOCAL +#if defined(DUK_USE_CACHE_ACTIVATION) +DUK_NOINLINE +#endif +duk_activation *duk__hthread_activation_alloc_slow(duk_hthread *thr) { + duk_activation *act; + + act = (duk_activation *) DUK_ALLOC_CHECKED(thr, sizeof(duk_activation)); + DUK_ASSERT(act != NULL); + return act; +} + +#if defined(DUK_USE_CACHE_ACTIVATION) +DUK_INTERNAL DUK_INLINE duk_activation *duk_hthread_activation_alloc(duk_hthread *thr) { + duk_activation *act; + + DUK_ASSERT(thr != NULL); + + act = thr->heap->activation_free; + if (DUK_LIKELY(act != NULL)) { + thr->heap->activation_free = act->parent; + return act; + } + + return duk__hthread_activation_alloc_slow(thr); +} +#else /* DUK_USE_CACHE_ACTIVATION */ +DUK_INTERNAL duk_activation *duk_hthread_activation_alloc(duk_hthread *thr) { + return duk__hthread_activation_alloc_slow(thr); +} +#endif /* DUK_USE_CACHE_ACTIVATION */ + + +DUK_INTERNAL void duk_hthread_activation_free(duk_hthread *thr, duk_activation *act) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + +#if defined(DUK_USE_CACHE_ACTIVATION) + /* Unconditional caching for now; freed in mark-and-sweep. */ + act->parent = thr->heap->activation_free; + thr->heap->activation_free = act; +#else + DUK_FREE_CHECKED(thr, (void *) act); +#endif +} + +/* Internal helper: process the unwind for the topmost activation of a thread, + * but leave the duk_activation in place for possible tailcall reuse. + */ +DUK_LOCAL void duk__activation_unwind_nofree_norz(duk_hthread *thr) { +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_heap *heap; +#endif + duk_activation *act; + duk_hobject *func; + duk_hobject *tmp; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->callstack_curr != NULL); /* caller must check */ + DUK_ASSERT(thr->callstack_top > 0); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + /* With lightfuncs, act 'func' may be NULL. */ + + /* With duk_activation records allocated separately, 'act' is a stable + * pointer and not affected by side effects. + */ + +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + /* + * Restore 'caller' property for non-strict callee functions. + */ + + func = DUK_ACT_GET_FUNC(act); + if (func != NULL && !DUK_HOBJECT_HAS_STRICT(func)) { + duk_tval *tv_caller; + duk_tval tv_tmp; + duk_hobject *h_tmp; + + tv_caller = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, func, DUK_STRIDX_CALLER); + + /* The act->prev_caller should only be set if the entry for 'caller' + * exists (as it is only set in that case, and the property is not + * configurable), but handle all the cases anyway. + */ + + if (tv_caller) { + DUK_TVAL_SET_TVAL(&tv_tmp, tv_caller); + if (act->prev_caller) { + /* Just transfer the refcount from act->prev_caller to tv_caller, + * so no need for a refcount update. This is the expected case. + */ + DUK_TVAL_SET_OBJECT(tv_caller, act->prev_caller); + act->prev_caller = NULL; + } else { + DUK_TVAL_SET_NULL(tv_caller); /* no incref needed */ + DUK_ASSERT(act->prev_caller == NULL); + } + DUK_TVAL_DECREF_NORZ(thr, &tv_tmp); + } else { + h_tmp = act->prev_caller; + if (h_tmp) { + act->prev_caller = NULL; + DUK_HOBJECT_DECREF_NORZ(thr, h_tmp); + } + } + DUK_ASSERT(act->prev_caller == NULL); + } +#endif + + /* + * Unwind debugger state. If we unwind while stepping + * (for any step type), pause execution. This is the + * only place explicitly handling a step out. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + heap = thr->heap; + if (heap->dbg_pause_act == thr->callstack_curr) { + if (heap->dbg_pause_flags & DUK_PAUSE_FLAG_FUNC_EXIT) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by function exit")); + duk_debug_set_paused(heap); + } else { + DUK_D(DUK_DPRINT("unwound past dbg_pause_act, set to NULL")); + heap->dbg_pause_act = NULL; /* avoid stale pointers */ + } + DUK_ASSERT(heap->dbg_pause_act == NULL); + } +#endif + + /* + * Unwind catchers. + * + * Since there are no references in the catcher structure, + * unwinding is quite simple. The only thing we need to + * look out for is popping a possible lexical environment + * established for an active catch clause. + */ + + while (act->cat != NULL) { + duk_hthread_catcher_unwind_norz(thr, act); + } + + /* + * Close environment record(s) if they exist. + * + * Only variable environments are closed. If lex_env != var_env, it + * cannot currently contain any register bound declarations. + * + * Only environments created for a NEWENV function are closed. If an + * environment is created for e.g. an eval call, it must not be closed. + */ + + func = DUK_ACT_GET_FUNC(act); + if (func != NULL && !DUK_HOBJECT_HAS_NEWENV(func)) { + DUK_DDD(DUK_DDDPRINT("skip closing environments, envs not owned by this activation")); + goto skip_env_close; + } + /* func is NULL for lightfunc */ + + /* Catch sites are required to clean up their environments + * in FINALLY part before propagating, so this should + * always hold here. + */ + DUK_ASSERT(act->lex_env == act->var_env); + + /* XXX: Closing the environment record copies values from registers + * into the scope object. It's side effect free as such, but may + * currently run out of memory which causes an error throw. This is + * an actual sandboxing problem for error unwinds, and needs to be + * fixed e.g. by preallocating the scope property slots. + */ + if (act->var_env != NULL) { + DUK_DDD(DUK_DDDPRINT("closing var_env record %p -> %!O", + (void *) act->var_env, (duk_heaphdr *) act->var_env)); + duk_js_close_environment_record(thr, act->var_env); + } + + skip_env_close: + + /* + * Update preventcount + */ + + if (act->flags & DUK_ACT_FLAG_PREVENT_YIELD) { + DUK_ASSERT(thr->callstack_preventcount >= 1); + thr->callstack_preventcount--; + } + + /* + * Reference count updates, using NORZ macros so we don't + * need to handle side effects. + * + * duk_activation pointers like act->var_env are intentionally + * left as garbage and not NULLed. Without side effects they + * can't be used when the values are dangling/garbage. + */ + + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, act->var_env); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, act->lex_env); + tmp = DUK_ACT_GET_FUNC(act); + DUK_HOBJECT_DECREF_NORZ_ALLOWNULL(thr, tmp); + DUK_UNREF(tmp); +} + +/* Unwind topmost duk_activation of a thread, caller must ensure that an + * activation exists. The call is side effect free, except that scope + * closure may currently throw an out-of-memory error. + */ +DUK_INTERNAL void duk_hthread_activation_unwind_norz(duk_hthread *thr) { + duk_activation *act; + + duk__activation_unwind_nofree_norz(thr); + + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_top > 0); + act = thr->callstack_curr; + thr->callstack_curr = act->parent; + thr->callstack_top--; + + /* Ideally we'd restore value stack reserve here to caller's value. + * This doesn't work for current unwind call sites however, because + * the current (unwound) value stack top may be above the reserve. + * Thus value stack reserve is restored by the call sites. + */ + + /* XXX: inline for performance builds? */ + duk_hthread_activation_free(thr, act); + + /* We could clear the book-keeping variables like retval_byteoff for + * the topmost activation, but don't do so now as it's not necessary. + */ +} + +DUK_INTERNAL void duk_hthread_activation_unwind_reuse_norz(duk_hthread *thr) { + duk__activation_unwind_nofree_norz(thr); +} + +/* Get duk_activation for given callstack level or NULL if level is invalid + * or deeper than the call stack. Level -1 refers to current activation, -2 + * to its caller, etc. Starting from Duktape 2.2 finding the activation is + * a linked list scan which gets more expensive the deeper the lookup is. + */ +DUK_INTERNAL duk_activation *duk_hthread_get_activation_for_level(duk_hthread *thr, duk_int_t level) { + duk_activation *act; + + if (level >= 0) { + return NULL; + } + act = thr->callstack_curr; + for (;;) { + if (act == NULL) { + return act; + } + if (level == -1) { + return act; + } + level++; + act = act->parent; + } + /* never here */ +} + +#if defined(DUK_USE_FINALIZER_TORTURE) +DUK_INTERNAL void duk_hthread_valstack_torture_realloc(duk_hthread *thr) { + duk_size_t alloc_size; + duk_tval *new_ptr; + duk_ptrdiff_t alloc_end_off; + duk_ptrdiff_t end_off; + duk_ptrdiff_t bottom_off; + duk_ptrdiff_t top_off; + + if (thr->valstack == NULL) { + DUK_D(DUK_DPRINT("skip valstack torture realloc, valstack is NULL")); + return; + } + + alloc_end_off = (duk_ptrdiff_t) ((duk_uint8_t *) thr->valstack_alloc_end - (duk_uint8_t *) thr->valstack); + end_off = (duk_ptrdiff_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack); + bottom_off = (duk_ptrdiff_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack); + top_off = (duk_ptrdiff_t) ((duk_uint8_t *) thr->valstack_top - (duk_uint8_t *) thr->valstack); + alloc_size = (duk_size_t) alloc_end_off; + if (alloc_size == 0) { + DUK_D(DUK_DPRINT("skip valstack torture realloc, alloc_size is zero")); + return; + } + + /* Use DUK_ALLOC_RAW() to avoid side effects. */ + new_ptr = (duk_tval *) DUK_ALLOC_RAW(thr->heap, alloc_size); + if (new_ptr != NULL) { + duk_memcpy((void *) new_ptr, (const void *) thr->valstack, alloc_size); + duk_memset((void *) thr->valstack, 0x55, alloc_size); + DUK_FREE_CHECKED(thr, (void *) thr->valstack); + thr->valstack = new_ptr; + thr->valstack_alloc_end = (duk_tval *) ((duk_uint8_t *) new_ptr + alloc_end_off); + thr->valstack_end = (duk_tval *) ((duk_uint8_t *) new_ptr + end_off); + thr->valstack_bottom = (duk_tval *) ((duk_uint8_t *) new_ptr + bottom_off); + thr->valstack_top = (duk_tval *) ((duk_uint8_t *) new_ptr + top_off); + } else { + DUK_D(DUK_DPRINT("failed to realloc valstack for torture, ignore")); + } +} +#endif /* DUK_USE_FINALIZER_TORTURE */ +#line 1 "duk_js_arith.c" +/* + * Shared helpers for arithmetic operations + */ + +/* #include duk_internal.h -> already included */ + +/* ECMAScript modulus ('%') does not match IEEE 754 "remainder" operation + * (implemented by remainder() in C99) but does seem to match ANSI C fmod(). + * Compare E5 Section 11.5.3 and "man fmod". + */ +DUK_INTERNAL double duk_js_arith_mod(double d1, double d2) { +#if defined(DUK_USE_POW_WORKAROUNDS) + /* Specific fixes to common fmod() implementation issues: + * - test-bug-mingw-math-issues.js + */ + if (DUK_ISINF(d2)) { + if (DUK_ISINF(d1)) { + return DUK_DOUBLE_NAN; + } else { + return d1; + } + } else if (duk_double_equals(d1, 0.0)) { + /* d1 +/-0 is returned as is (preserving sign) except when + * d2 is zero or NaN. + */ + if (duk_double_equals(d2, 0.0) || DUK_ISNAN(d2)) { + return DUK_DOUBLE_NAN; + } else { + return d1; + } + } +#else + /* Some ISO C assumptions. */ + DUK_ASSERT(duk_double_equals(DUK_FMOD(1.0, DUK_DOUBLE_INFINITY), 1.0)); + DUK_ASSERT(duk_double_equals(DUK_FMOD(-1.0, DUK_DOUBLE_INFINITY), -1.0)); + DUK_ASSERT(duk_double_equals(DUK_FMOD(1.0, -DUK_DOUBLE_INFINITY), 1.0)); + DUK_ASSERT(duk_double_equals(DUK_FMOD(-1.0, -DUK_DOUBLE_INFINITY), -1.0)); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(DUK_DOUBLE_INFINITY, DUK_DOUBLE_INFINITY))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(DUK_DOUBLE_INFINITY, -DUK_DOUBLE_INFINITY))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(-DUK_DOUBLE_INFINITY, DUK_DOUBLE_INFINITY))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(-DUK_DOUBLE_INFINITY, -DUK_DOUBLE_INFINITY))); + DUK_ASSERT(duk_double_equals(DUK_FMOD(0.0, 1.0), 0.0) && DUK_SIGNBIT(DUK_FMOD(0.0, 1.0)) == 0); + DUK_ASSERT(duk_double_equals(DUK_FMOD(-0.0, 1.0), 0.0) && DUK_SIGNBIT(DUK_FMOD(-0.0, 1.0)) != 0); + DUK_ASSERT(duk_double_equals(DUK_FMOD(0.0, DUK_DOUBLE_INFINITY), 0.0) && DUK_SIGNBIT(DUK_FMOD(0.0, DUK_DOUBLE_INFINITY)) == 0); + DUK_ASSERT(duk_double_equals(DUK_FMOD(-0.0, DUK_DOUBLE_INFINITY), 0.0) && DUK_SIGNBIT(DUK_FMOD(-0.0, DUK_DOUBLE_INFINITY)) != 0); + DUK_ASSERT(duk_double_equals(DUK_FMOD(0.0, -DUK_DOUBLE_INFINITY), 0.0) && DUK_SIGNBIT(DUK_FMOD(0.0, DUK_DOUBLE_INFINITY)) == 0); + DUK_ASSERT(duk_double_equals(DUK_FMOD(-0.0, -DUK_DOUBLE_INFINITY), 0.0) && DUK_SIGNBIT(DUK_FMOD(-0.0, -DUK_DOUBLE_INFINITY)) != 0); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(0.0, 0.0))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(-0.0, 0.0))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(0.0, -0.0))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(-0.0, -0.0))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(0.0, DUK_DOUBLE_NAN))); + DUK_ASSERT(DUK_ISNAN(DUK_FMOD(-0.0, DUK_DOUBLE_NAN))); +#endif + + return (duk_double_t) DUK_FMOD((double) d1, (double) d2); +} + +/* Shared helper for Math.pow() and exponentiation operator. */ +DUK_INTERNAL double duk_js_arith_pow(double x, double y) { + /* The ANSI C pow() semantics differ from ECMAScript. + * + * E.g. when x==1 and y is +/- infinite, the ECMAScript required + * result is NaN, while at least Linux pow() returns 1. + */ + + duk_small_int_t cx, cy, sx; + + DUK_UNREF(cx); + DUK_UNREF(sx); + cy = (duk_small_int_t) DUK_FPCLASSIFY(y); + + if (cy == DUK_FP_NAN) { + goto ret_nan; + } + if (duk_double_equals(DUK_FABS(x), 1.0) && cy == DUK_FP_INFINITE) { + goto ret_nan; + } + +#if defined(DUK_USE_POW_WORKAROUNDS) + /* Specific fixes to common pow() implementation issues: + * - test-bug-netbsd-math-pow.js: NetBSD 6.0 on x86 (at least) + * - test-bug-mingw-math-issues.js + */ + cx = (duk_small_int_t) DUK_FPCLASSIFY(x); + if (cx == DUK_FP_ZERO && y < 0.0) { + sx = (duk_small_int_t) DUK_SIGNBIT(x); + if (sx == 0) { + /* Math.pow(+0,y) should be Infinity when y<0. NetBSD pow() + * returns -Infinity instead when y is <0 and finite. The + * if-clause also catches y == -Infinity (which works even + * without the fix). + */ + return DUK_DOUBLE_INFINITY; + } else { + /* Math.pow(-0,y) where y<0 should be: + * - -Infinity if y<0 and an odd integer + * - Infinity if y<0 but not an odd integer + * NetBSD pow() returns -Infinity for all finite y<0. The + * if-clause also catches y == -Infinity (which works even + * without the fix). + */ + + /* fmod() return value has same sign as input (negative) so + * the result here will be in the range ]-2,0], -1 indicates + * odd. If x is -Infinity, NaN is returned and the odd check + * always concludes "not odd" which results in desired outcome. + */ + double tmp = DUK_FMOD(y, 2); + if (tmp == -1.0) { + return -DUK_DOUBLE_INFINITY; + } else { + /* Not odd, or y == -Infinity */ + return DUK_DOUBLE_INFINITY; + } + } + } else if (cx == DUK_FP_NAN) { + if (duk_double_equals(y, 0.0)) { + /* NaN ** +/- 0 should always be 1, but is NaN on + * at least some Cygwin/MinGW versions. + */ + return 1.0; + } + } +#else + /* Some ISO C assumptions. */ + DUK_ASSERT(duk_double_equals(DUK_POW(DUK_DOUBLE_NAN, 0.0), 1.0)); + DUK_ASSERT(DUK_ISINF(DUK_POW(0.0, -1.0)) && DUK_SIGNBIT(DUK_POW(0.0, -1.0)) == 0); + DUK_ASSERT(DUK_ISINF(DUK_POW(-0.0, -2.0)) && DUK_SIGNBIT(DUK_POW(-0.0, -2.0)) == 0); + DUK_ASSERT(DUK_ISINF(DUK_POW(-0.0, -3.0)) && DUK_SIGNBIT(DUK_POW(-0.0, -3.0)) != 0); +#endif + + return DUK_POW(x, y); + + ret_nan: + return DUK_DOUBLE_NAN; +} +#line 1 "duk_js_call.c" +/* + * Call handling. + * + * duk_handle_call_unprotected(): + * + * - Unprotected call to ECMAScript or Duktape/C function, from native + * code or bytecode executor. + * + * - Also handles Ecma-to-Ecma calls which reuses a currently running + * executor instance to avoid native recursion. Call setup is done + * normally, but just before calling the bytecode executor a special + * return code is used to indicate that a calling executor is reused. + * + * - Also handles tailcalls, i.e. reuse of current duk_activation. + * + * - Also handles setup for initial Duktape.Thread.resume(). + * + * duk_handle_safe_call(): + * + * - Protected C call within current activation. + * + * setjmp() and local variables have a nasty interaction, see execution.rst; + * non-volatile locals modified after setjmp() call are not guaranteed to + * keep their value and can cause compiler or compiler version specific + * difficult to replicate issues. + * + * See 'execution.rst'. + */ + +/* #include duk_internal.h -> already included */ + +/* XXX: heap->error_not_allowed for success path too? */ + +/* + * Limit check helpers. + */ + +/* Check native stack space if DUK_USE_NATIVE_STACK_CHECK() defined. */ +DUK_INTERNAL void duk_native_stack_check(duk_hthread *thr) { +#if defined(DUK_USE_NATIVE_STACK_CHECK) + if (DUK_USE_NATIVE_STACK_CHECK() != 0) { + DUK_ERROR_RANGE(thr, DUK_STR_NATIVE_STACK_LIMIT); + } +#else + DUK_UNREF(thr); +#endif +} + +/* Allow headroom for calls during error augmentation (see GH-191). + * We allow space for 10 additional recursions, with one extra + * for, e.g. a print() call at the deepest level, and an extra + * +1 for protected call wrapping. + */ +#define DUK__AUGMENT_CALL_RELAX_COUNT (10 + 2) + +/* Stack space required by call handling entry. */ +#define DUK__CALL_HANDLING_REQUIRE_STACK 8 + +DUK_LOCAL DUK_NOINLINE void duk__call_c_recursion_limit_check_slowpath(duk_hthread *thr) { + /* When augmenting an error, the effective limit is a bit higher. + * Check for it only if the fast path check fails. + */ +#if defined(DUK_USE_AUGMENT_ERROR_THROW) || defined(DUK_USE_AUGMENT_ERROR_CREATE) + if (thr->heap->augmenting_error) { + if (thr->heap->call_recursion_depth < thr->heap->call_recursion_limit + DUK__AUGMENT_CALL_RELAX_COUNT) { + DUK_D(DUK_DPRINT("C recursion limit reached but augmenting error and within relaxed limit")); + return; + } + } +#endif + + DUK_D(DUK_DPRINT("call prevented because C recursion limit reached")); + DUK_ERROR_RANGE(thr, DUK_STR_NATIVE_STACK_LIMIT); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL DUK_ALWAYS_INLINE void duk__call_c_recursion_limit_check(duk_hthread *thr) { + DUK_ASSERT(thr->heap->call_recursion_depth >= 0); + DUK_ASSERT(thr->heap->call_recursion_depth <= thr->heap->call_recursion_limit); + + duk_native_stack_check(thr); + + /* This check is forcibly inlined because it's very cheap and almost + * always passes. The slow path is forcibly noinline. + */ + if (DUK_LIKELY(thr->heap->call_recursion_depth < thr->heap->call_recursion_limit)) { + return; + } + + duk__call_c_recursion_limit_check_slowpath(thr); +} + +DUK_LOCAL DUK_NOINLINE void duk__call_callstack_limit_check_slowpath(duk_hthread *thr) { + /* When augmenting an error, the effective limit is a bit higher. + * Check for it only if the fast path check fails. + */ +#if defined(DUK_USE_AUGMENT_ERROR_THROW) || defined(DUK_USE_AUGMENT_ERROR_CREATE) + if (thr->heap->augmenting_error) { + if (thr->callstack_top < DUK_USE_CALLSTACK_LIMIT + DUK__AUGMENT_CALL_RELAX_COUNT) { + DUK_D(DUK_DPRINT("call stack limit reached but augmenting error and within relaxed limit")); + return; + } + } +#endif + + /* XXX: error message is a bit misleading: we reached a recursion + * limit which is also essentially the same as a C callstack limit + * (except perhaps with some relaxed threading assumptions). + */ + DUK_D(DUK_DPRINT("call prevented because call stack limit reached")); + DUK_ERROR_RANGE(thr, DUK_STR_CALLSTACK_LIMIT); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL DUK_ALWAYS_INLINE void duk__call_callstack_limit_check(duk_hthread *thr) { + /* This check is forcibly inlined because it's very cheap and almost + * always passes. The slow path is forcibly noinline. + */ + if (DUK_LIKELY(thr->callstack_top < DUK_USE_CALLSTACK_LIMIT)) { + return; + } + + duk__call_callstack_limit_check_slowpath(thr); +} + +/* + * Interrupt counter fixup (for development only). + */ + +#if defined(DUK_USE_INTERRUPT_COUNTER) && defined(DUK_USE_DEBUG) +DUK_LOCAL void duk__interrupt_fixup(duk_hthread *thr, duk_hthread *entry_curr_thread) { + /* Currently the bytecode executor and executor interrupt + * instruction counts are off because we don't execute the + * interrupt handler when we're about to exit from the initial + * user call into Duktape. + * + * If we were to execute the interrupt handler here, the counts + * would match. You can enable this block manually to check + * that this is the case. + */ + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + +#if defined(DUK_USE_INTERRUPT_DEBUG_FIXUP) + if (entry_curr_thread == NULL) { + thr->interrupt_init = thr->interrupt_init - thr->interrupt_counter; + thr->heap->inst_count_interrupt += thr->interrupt_init; + DUK_DD(DUK_DDPRINT("debug test: updated interrupt count on exit to " + "user code, instruction counts: executor=%ld, interrupt=%ld", + (long) thr->heap->inst_count_exec, (long) thr->heap->inst_count_interrupt)); + DUK_ASSERT(thr->heap->inst_count_exec == thr->heap->inst_count_interrupt); + } +#else + DUK_UNREF(thr); + DUK_UNREF(entry_curr_thread); +#endif +} +#endif + +/* + * Arguments object creation. + * + * Creating arguments objects involves many small details, see E5 Section + * 10.6 for the specific requirements. Much of the arguments object exotic + * behavior is implemented in duk_hobject_props.c, and is enabled by the + * object flag DUK_HOBJECT_FLAG_EXOTIC_ARGUMENTS. + */ + +DUK_LOCAL void duk__create_arguments_object(duk_hthread *thr, + duk_hobject *func, + duk_hobject *varenv, + duk_idx_t idx_args) { + duk_hobject *arg; /* 'arguments' */ + duk_hobject *formals; /* formals for 'func' (may be NULL if func is a C function) */ + duk_idx_t i_arg; + duk_idx_t i_map; + duk_idx_t i_mappednames; + duk_idx_t i_formals; + duk_idx_t i_argbase; + duk_idx_t n_formals; + duk_idx_t idx; + duk_idx_t num_stack_args; + duk_bool_t need_map; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(func != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_NONBOUND_FUNCTION(func)); + DUK_ASSERT(varenv != NULL); + + /* [ ... func this arg1(@idx_args) ... argN envobj ] + * [ arg1(@idx_args) ... argN envobj ] (for tailcalls) + */ + + need_map = 0; + + i_argbase = idx_args; + num_stack_args = duk_get_top(thr) - i_argbase - 1; + DUK_ASSERT(i_argbase >= 0); + DUK_ASSERT(num_stack_args >= 0); + + formals = (duk_hobject *) duk_hobject_get_formals(thr, (duk_hobject *) func); + if (formals) { + n_formals = (duk_idx_t) ((duk_harray *) formals)->length; + duk_push_hobject(thr, formals); + } else { + /* This shouldn't happen without tampering of internal + * properties: if a function accesses 'arguments', _Formals + * is kept. Check for the case anyway in case internal + * properties have been modified manually. + */ + DUK_D(DUK_DPRINT("_Formals is undefined when creating arguments, use n_formals == 0")); + n_formals = 0; + duk_push_undefined(thr); + } + i_formals = duk_require_top_index(thr); + + DUK_ASSERT(n_formals >= 0); + DUK_ASSERT(formals != NULL || n_formals == 0); + + DUK_DDD(DUK_DDDPRINT("func=%!O, formals=%!O, n_formals=%ld", + (duk_heaphdr *) func, (duk_heaphdr *) formals, + (long) n_formals)); + + /* [ ... formals ] */ + + /* + * Create required objects: + * - 'arguments' object: array-like, but not an array + * - 'map' object: internal object, tied to 'arguments' (bare) + * - 'mappedNames' object: temporary value used during construction (bare) + */ + + arg = duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_FLAG_ARRAY_PART | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_ARGUMENTS), + DUK_BIDX_OBJECT_PROTOTYPE); + DUK_ASSERT(arg != NULL); + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT), + -1); /* no prototype */ + (void) duk_push_object_helper(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_FLAG_FASTREFS | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT), + -1); /* no prototype */ + i_arg = duk_get_top(thr) - 3; + i_map = i_arg + 1; + i_mappednames = i_arg + 2; + DUK_ASSERT(!duk_is_bare_object(thr, -3)); /* arguments */ + DUK_ASSERT(duk_is_bare_object(thr, -2)); /* map */ + DUK_ASSERT(duk_is_bare_object(thr, -1)); /* mappedNames */ + + /* [ ... formals arguments map mappedNames ] */ + + DUK_DDD(DUK_DDDPRINT("created arguments related objects: " + "arguments at index %ld -> %!O " + "map at index %ld -> %!O " + "mappednames at index %ld -> %!O", + (long) i_arg, (duk_heaphdr *) duk_get_hobject(thr, i_arg), + (long) i_map, (duk_heaphdr *) duk_get_hobject(thr, i_map), + (long) i_mappednames, (duk_heaphdr *) duk_get_hobject(thr, i_mappednames))); + + /* + * Init arguments properties, map, etc. + */ + + duk_push_int(thr, num_stack_args); + duk_xdef_prop_stridx(thr, i_arg, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_WC); + + /* + * Init argument related properties. + */ + + /* step 11 */ + idx = num_stack_args - 1; + while (idx >= 0) { + DUK_DDD(DUK_DDDPRINT("arg idx %ld, argbase=%ld, argidx=%ld", + (long) idx, (long) i_argbase, (long) (i_argbase + idx))); + + DUK_DDD(DUK_DDDPRINT("define arguments[%ld]=arg", (long) idx)); + duk_dup(thr, i_argbase + idx); + duk_xdef_prop_index_wec(thr, i_arg, (duk_uarridx_t) idx); + DUK_DDD(DUK_DDDPRINT("defined arguments[%ld]=arg", (long) idx)); + + /* step 11.c is relevant only if non-strict (checked in 11.c.ii) */ + if (!DUK_HOBJECT_HAS_STRICT(func) && idx < n_formals) { + DUK_ASSERT(formals != NULL); + + DUK_DDD(DUK_DDDPRINT("strict function, index within formals (%ld < %ld)", + (long) idx, (long) n_formals)); + + duk_get_prop_index(thr, i_formals, (duk_uarridx_t) idx); + DUK_ASSERT(duk_is_string(thr, -1)); + + duk_dup_top(thr); /* [ ... name name ] */ + + if (!duk_has_prop(thr, i_mappednames)) { + /* steps 11.c.ii.1 - 11.c.ii.4, but our internal book-keeping + * differs from the reference model + */ + + /* [ ... name ] */ + + need_map = 1; + + DUK_DDD(DUK_DDDPRINT("set mappednames[%s]=%ld", + (const char *) duk_get_string(thr, -1), + (long) idx)); + duk_dup_top(thr); /* name */ + (void) duk_push_uint_to_hstring(thr, (duk_uint_t) idx); /* index */ + duk_xdef_prop_wec(thr, i_mappednames); /* out of spec, must be configurable */ + + DUK_DDD(DUK_DDDPRINT("set map[%ld]=%s", + (long) idx, + duk_get_string(thr, -1))); + duk_dup_top(thr); /* name */ + duk_xdef_prop_index_wec(thr, i_map, (duk_uarridx_t) idx); /* out of spec, must be configurable */ + } else { + /* duk_has_prop() popped the second 'name' */ + } + + /* [ ... name ] */ + duk_pop(thr); /* pop 'name' */ + } + + idx--; + } + + DUK_DDD(DUK_DDDPRINT("actual arguments processed")); + + /* step 12 */ + if (need_map) { + DUK_DDD(DUK_DDDPRINT("adding 'map' and 'varenv' to arguments object")); + + /* should never happen for a strict callee */ + DUK_ASSERT(!DUK_HOBJECT_HAS_STRICT(func)); + + duk_dup(thr, i_map); + duk_xdef_prop_stridx(thr, i_arg, DUK_STRIDX_INT_MAP, DUK_PROPDESC_FLAGS_NONE); /* out of spec, don't care */ + + /* The variable environment for magic variable bindings needs to be + * given by the caller and recorded in the arguments object. + * + * See E5 Section 10.6, the creation of setters/getters. + * + * The variable environment also provides access to the callee, so + * an explicit (internal) callee property is not needed. + */ + + duk_push_hobject(thr, varenv); + duk_xdef_prop_stridx(thr, i_arg, DUK_STRIDX_INT_VARENV, DUK_PROPDESC_FLAGS_NONE); /* out of spec, don't care */ + } + + /* steps 13-14 */ + if (DUK_HOBJECT_HAS_STRICT(func)) { + /* Callee/caller are throwers and are not deletable etc. They + * could be implemented as virtual properties, but currently + * there is no support for virtual properties which are accessors + * (only plain virtual properties). This would not be difficult + * to change in duk_hobject_props, but we can make the throwers + * normal, concrete properties just as easily. + * + * Note that the specification requires that the *same* thrower + * built-in object is used here! See E5 Section 10.6 main + * algoritm, step 14, and Section 13.2.3 which describes the + * thrower. See test case test-arguments-throwers.js. + */ + + DUK_DDD(DUK_DDDPRINT("strict function, setting caller/callee to throwers")); + + /* In ES2017 .caller is no longer set at all. */ + duk_xdef_prop_stridx_thrower(thr, i_arg, DUK_STRIDX_CALLEE); + } else { + DUK_DDD(DUK_DDDPRINT("non-strict function, setting callee to actual value")); + duk_push_hobject(thr, func); + duk_xdef_prop_stridx(thr, i_arg, DUK_STRIDX_CALLEE, DUK_PROPDESC_FLAGS_WC); + } + + /* set exotic behavior only after we're done */ + if (need_map) { + /* Exotic behaviors are only enabled for arguments objects + * which have a parameter map (see E5 Section 10.6 main + * algorithm, step 12). + * + * In particular, a non-strict arguments object with no + * mapped formals does *NOT* get exotic behavior, even + * for e.g. "caller" property. This seems counterintuitive + * but seems to be the case. + */ + + /* cannot be strict (never mapped variables) */ + DUK_ASSERT(!DUK_HOBJECT_HAS_STRICT(func)); + + DUK_DDD(DUK_DDDPRINT("enabling exotic behavior for arguments object")); + DUK_HOBJECT_SET_EXOTIC_ARGUMENTS(arg); + } else { + DUK_DDD(DUK_DDDPRINT("not enabling exotic behavior for arguments object")); + } + + DUK_DDD(DUK_DDDPRINT("final arguments related objects: " + "arguments at index %ld -> %!O " + "map at index %ld -> %!O " + "mappednames at index %ld -> %!O", + (long) i_arg, (duk_heaphdr *) duk_get_hobject(thr, i_arg), + (long) i_map, (duk_heaphdr *) duk_get_hobject(thr, i_map), + (long) i_mappednames, (duk_heaphdr *) duk_get_hobject(thr, i_mappednames))); + + /* [ args(n) envobj formals arguments map mappednames ] */ + + duk_pop_2(thr); + duk_remove_m2(thr); + + /* [ args(n) envobj arguments ] */ +} + +/* Helper for creating the arguments object and adding it to the env record + * on top of the value stack. + */ +DUK_LOCAL void duk__handle_createargs_for_call(duk_hthread *thr, + duk_hobject *func, + duk_hobject *env, + duk_idx_t idx_args) { + DUK_DDD(DUK_DDDPRINT("creating arguments object for function call")); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(func != NULL); + DUK_ASSERT(env != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_CREATEARGS(func)); + + /* [ ... arg1 ... argN envobj ] */ + + duk__create_arguments_object(thr, + func, + env, + idx_args); + + /* [ ... arg1 ... argN envobj argobj ] */ + + duk_xdef_prop_stridx_short(thr, + -2, + DUK_STRIDX_LC_ARGUMENTS, + DUK_HOBJECT_HAS_STRICT(func) ? DUK_PROPDESC_FLAGS_E : /* strict: non-deletable, non-writable */ + DUK_PROPDESC_FLAGS_WE); /* non-strict: non-deletable, writable */ + /* [ ... arg1 ... argN envobj ] */ +} + +/* + * Helpers for constructor call handling. + * + * There are two [[Construct]] operations in the specification: + * + * - E5 Section 13.2.2: for Function objects + * - E5 Section 15.3.4.5.2: for "bound" Function objects + * + * The chain of bound functions is resolved in Section 15.3.4.5.2, + * with arguments "piling up" until the [[Construct]] internal + * method is called on the final, actual Function object. Note + * that the "prototype" property is looked up *only* from the + * final object, *before* calling the constructor. + * + * Since Duktape 2.2 bound functions are represented with the + * duk_hboundfunc internal type, and bound function chains are + * collapsed when a bound function is created. As a result, the + * direct target of a duk_hboundfunc is always non-bound and the + * this/argument lists have been resolved. + * + * When constructing new Array instances, an unnecessary object is + * created and discarded now: the standard [[Construct]] creates an + * object, and calls the Array constructor. The Array constructor + * returns an Array instance, which is used as the result value for + * the "new" operation; the object created before the Array constructor + * call is discarded. + * + * This would be easy to fix, e.g. by knowing that the Array constructor + * will always create a replacement object and skip creating the fallback + * object in that case. + */ + +/* Update default instance prototype for constructor call. */ +DUK_LOCAL void duk__update_default_instance_proto(duk_hthread *thr, duk_idx_t idx_func) { + duk_hobject *proto; + duk_hobject *fallback; + + DUK_ASSERT(duk_is_constructable(thr, idx_func)); + + duk_get_prop_stridx_short(thr, idx_func, DUK_STRIDX_PROTOTYPE); + proto = duk_get_hobject(thr, -1); + if (proto == NULL) { + DUK_DDD(DUK_DDDPRINT("constructor has no 'prototype' property, or value not an object " + "-> leave standard Object prototype as fallback prototype")); + } else { + DUK_DDD(DUK_DDDPRINT("constructor has 'prototype' property with object value " + "-> set fallback prototype to that value: %!iO", (duk_heaphdr *) proto)); + /* Original fallback (default instance) is untouched when + * resolving bound functions etc. + */ + fallback = duk_known_hobject(thr, idx_func + 1); + DUK_ASSERT(fallback != NULL); + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, fallback, proto); + } + duk_pop(thr); +} + +/* Postprocess: return value special handling, error augmentation. */ +DUK_INTERNAL void duk_call_construct_postprocess(duk_hthread *thr, duk_small_uint_t proxy_invariant) { + /* Use either fallback (default instance) or retval depending + * on retval type. Needs to be called before unwind because + * the default instance is read from the current (immutable) + * 'this' binding. + * + * For Proxy 'construct' calls the return value must be an + * Object (we accept object-like values like buffers and + * lightfuncs too). If not, TypeError. + */ + if (duk_check_type_mask(thr, -1, DUK_TYPE_MASK_OBJECT | + DUK_TYPE_MASK_BUFFER | + DUK_TYPE_MASK_LIGHTFUNC)) { + DUK_DDD(DUK_DDDPRINT("replacement value")); + } else { + if (DUK_UNLIKELY(proxy_invariant != 0U)) { + /* Proxy 'construct' return value invariant violated. */ + DUK_ERROR_TYPE_INVALID_TRAP_RESULT(thr); + DUK_WO_NORETURN(return;); + } + /* XXX: direct value stack access */ + duk_pop(thr); + duk_push_this(thr); + } + +#if defined(DUK_USE_AUGMENT_ERROR_CREATE) + /* Augment created errors upon creation, not when they are thrown or + * rethrown. __FILE__ and __LINE__ are not desirable here; the call + * stack reflects the caller which is correct. Skip topmost, unwound + * activation when creating a traceback. If thr->ptr_curr_pc was != + * NULL we'd need to sync the current PC so that the traceback comes + * out right; however it is always synced here so just assert for it. + */ + DUK_ASSERT(thr->ptr_curr_pc == NULL); + duk_err_augment_error_create(thr, thr, NULL, 0, DUK_AUGMENT_FLAG_NOBLAME_FILELINE | + DUK_AUGMENT_FLAG_SKIP_ONE); +#endif +} + +/* + * Helper for handling a bound function when a call is being made. + * + * Assumes that bound function chains have been "collapsed" so that either + * the target is non-bound or there is one bound function that points to a + * nonbound target. + * + * Prepends the bound arguments to the value stack (at idx_func + 2). + * The 'this' binding is also updated if necessary (at idx_func + 1). + * Note that for constructor calls the 'this' binding is never updated by + * [[BoundThis]]. + */ + +DUK_LOCAL void duk__handle_bound_chain_for_call(duk_hthread *thr, + duk_idx_t idx_func, + duk_bool_t is_constructor_call) { + duk_tval *tv_func; + duk_hobject *func; + duk_idx_t len; + + DUK_ASSERT(thr != NULL); + + /* On entry, item at idx_func is a bound, non-lightweight function, + * but we don't rely on that below. + */ + + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + + tv_func = duk_require_tval(thr, idx_func); + DUK_ASSERT(tv_func != NULL); + + if (DUK_TVAL_IS_OBJECT(tv_func)) { + func = DUK_TVAL_GET_OBJECT(tv_func); + + /* XXX: separate helper function, out of fast path? */ + if (DUK_HOBJECT_HAS_BOUNDFUNC(func)) { + duk_hboundfunc *h_bound; + duk_tval *tv_args; + duk_tval *tv_gap; + + h_bound = (duk_hboundfunc *) (void *) func; + tv_args = h_bound->args; + len = h_bound->nargs; + DUK_ASSERT(len == 0 || tv_args != NULL); + + DUK_DDD(DUK_DDDPRINT("bound function encountered, ptr=%p: %!T", + (void *) DUK_TVAL_GET_OBJECT(tv_func), tv_func)); + + /* [ ... func this arg1 ... argN ] */ + + if (is_constructor_call) { + /* See: tests/ecmascript/test-spec-bound-constructor.js */ + DUK_DDD(DUK_DDDPRINT("constructor call: don't update this binding")); + } else { + /* XXX: duk_replace_tval */ + duk_push_tval(thr, &h_bound->this_binding); + duk_replace(thr, idx_func + 1); /* idx_this = idx_func + 1 */ + } + + /* [ ... func this arg1 ... argN ] */ + + duk_require_stack(thr, len); + + tv_gap = duk_reserve_gap(thr, idx_func + 2, len); + duk_copy_tvals_incref(thr, tv_gap, tv_args, (duk_size_t) len); + + /* [ ... func this arg1 ... argN ] */ + + duk_push_tval(thr, &h_bound->target); + duk_replace(thr, idx_func); /* replace in stack */ + + DUK_DDD(DUK_DDDPRINT("bound function handled, idx_func=%ld, curr func=%!T", + (long) idx_func, duk_get_tval(thr, idx_func))); + } + } else if (DUK_TVAL_IS_LIGHTFUNC(tv_func)) { + /* Lightweight function: never bound, so terminate. */ + ; + } else { + /* Shouldn't happen, so ugly error is enough. */ + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); + } + + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + + DUK_DDD(DUK_DDDPRINT("final non-bound function is: %!T", duk_get_tval(thr, idx_func))); + +#if defined(DUK_USE_ASSERTIONS) + tv_func = duk_require_tval(thr, idx_func); + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(tv_func) || DUK_TVAL_IS_OBJECT(tv_func)); + if (DUK_TVAL_IS_OBJECT(tv_func)) { + func = DUK_TVAL_GET_OBJECT(tv_func); + DUK_ASSERT(func != NULL); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(func)); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(func) || + DUK_HOBJECT_HAS_NATFUNC(func) || + DUK_HOBJECT_IS_PROXY(func)); + } +#endif +} + +/* + * Helper for inline handling of .call(), .apply(), and .construct(). + */ + +DUK_LOCAL duk_bool_t duk__handle_specialfuncs_for_call(duk_hthread *thr, duk_idx_t idx_func, duk_hobject *func, duk_small_uint_t *call_flags, duk_bool_t first) { +#if defined(DUK_USE_ASSERTIONS) + duk_c_function natfunc; +#endif + duk_tval *tv_args; + + DUK_ASSERT(func != NULL); + DUK_ASSERT((*call_flags & DUK_CALL_FLAG_CONSTRUCT) == 0); /* Caller. */ + +#if defined(DUK_USE_ASSERTIONS) + natfunc = ((duk_hnatfunc *) func)->func; + DUK_ASSERT(natfunc != NULL); +#endif + + /* On every round of function resolution at least target function and + * 'this' binding are set. We can assume that here, and must guarantee + * it on exit. Value stack reserve is extended for bound function and + * .apply() unpacking so we don't need to extend it here when we need a + * few slots. + */ + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + + /* Handle native 'eval' specially. A direct eval check is only made + * for the first resolution attempt; e.g. a bound eval call is -not- + * a direct eval call. + */ + if (DUK_UNLIKELY(((duk_hnatfunc *) func)->magic == 15)) { + /* For now no special handling except for direct eval + * detection. + */ + DUK_ASSERT(((duk_hnatfunc *) func)->func == duk_bi_global_object_eval); + if (first && (*call_flags & DUK_CALL_FLAG_CALLED_AS_EVAL)) { + *call_flags = (*call_flags & ~DUK_CALL_FLAG_CALLED_AS_EVAL) | DUK_CALL_FLAG_DIRECT_EVAL; + } + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + return 1; /* stop resolving */ + } + + /* Handle special functions based on the DUK_HOBJECT_FLAG_SPECIAL_CALL + * flag; their magic value is used for switch-case. + * + * NOTE: duk_unpack_array_like() reserves value stack space + * for the result values (unlike most other value stack calls). + */ + switch (((duk_hnatfunc *) func)->magic) { + case 0: { /* 0=Function.prototype.call() */ + /* Value stack: + * idx_func + 0: Function.prototype.call() [removed] + * idx_func + 1: this binding for .call (target function) + * idx_func + 2: 1st argument to .call, desired 'this' binding + * idx_func + 3: 2nd argument to .call, desired 1st argument for ultimate target + * ... + * + * Remove idx_func + 0 to get: + * idx_func + 0: target function + * idx_func + 1: this binding + * idx_func + 2: call arguments + * ... + */ + DUK_ASSERT(natfunc == duk_bi_function_prototype_call); + duk_remove_unsafe(thr, idx_func); + tv_args = thr->valstack_bottom + idx_func + 2; + if (thr->valstack_top < tv_args) { + DUK_ASSERT(tv_args <= thr->valstack_end); + thr->valstack_top = tv_args; /* at least target function and 'this' binding present */ + } + break; + } + case 1: { /* 1=Function.prototype.apply() */ + /* Value stack: + * idx_func + 0: Function.prototype.apply() [removed] + * idx_func + 1: this binding for .apply (target function) + * idx_func + 2: 1st argument to .apply, desired 'this' binding + * idx_func + 3: 2nd argument to .apply, argArray + * [anything after this MUST be ignored] + * + * Remove idx_func + 0 and unpack the argArray to get: + * idx_func + 0: target function + * idx_func + 1: this binding + * idx_func + 2: call arguments + * ... + */ + DUK_ASSERT(natfunc == duk_bi_function_prototype_apply); + duk_remove_unsafe(thr, idx_func); + goto apply_shared; + } +#if defined(DUK_USE_REFLECT_BUILTIN) + case 2: { /* 2=Reflect.apply() */ + /* Value stack: + * idx_func + 0: Reflect.apply() [removed] + * idx_func + 1: this binding for .apply (ignored, usually Reflect) [removed] + * idx_func + 2: 1st argument to .apply, target function + * idx_func + 3: 2nd argument to .apply, desired 'this' binding + * idx_func + 4: 3rd argument to .apply, argArray + * [anything after this MUST be ignored] + * + * Remove idx_func + 0 and idx_func + 1, and unpack the argArray to get: + * idx_func + 0: target function + * idx_func + 1: this binding + * idx_func + 2: call arguments + * ... + */ + DUK_ASSERT(natfunc == duk_bi_reflect_apply); + duk_remove_n_unsafe(thr, idx_func, 2); + goto apply_shared; + } + case 3: { /* 3=Reflect.construct() */ + /* Value stack: + * idx_func + 0: Reflect.construct() [removed] + * idx_func + 1: this binding for .construct (ignored, usually Reflect) [removed] + * idx_func + 2: 1st argument to .construct, target function + * idx_func + 3: 2nd argument to .construct, argArray + * idx_func + 4: 3rd argument to .construct, newTarget + * [anything after this MUST be ignored] + * + * Remove idx_func + 0 and idx_func + 1, unpack the argArray, + * and insert default instance (prototype not yet updated), to get: + * idx_func + 0: target function + * idx_func + 1: this binding (default instance) + * idx_func + 2: constructor call arguments + * ... + * + * Call flags must be updated to reflect the fact that we're + * now dealing with a constructor call, and e.g. the 'this' + * binding cannot be overwritten if the target is bound. + * + * newTarget is checked but not yet passed onwards. + */ + + duk_idx_t top; + + DUK_ASSERT(natfunc == duk_bi_reflect_construct); + *call_flags |= DUK_CALL_FLAG_CONSTRUCT; + duk_remove_n_unsafe(thr, idx_func, 2); + top = duk_get_top(thr); + if (!duk_is_constructable(thr, idx_func)) { + /* Target constructability must be checked before + * unpacking argArray (which may cause side effects). + * Just return; caller will throw the error. + */ + duk_set_top_unsafe(thr, idx_func + 2); /* satisfy asserts */ + break; + } + duk_push_object(thr); + duk_insert(thr, idx_func + 1); /* default instance */ + + /* [ ... func default_instance argArray newTarget? ] */ + + top = duk_get_top(thr); + if (top < idx_func + 3) { + /* argArray is a mandatory argument for Reflect.construct(). */ + DUK_ERROR_TYPE_INVALID_ARGS(thr); + DUK_WO_NORETURN(return 0;); + } + if (top > idx_func + 3) { + if (!duk_strict_equals(thr, idx_func, idx_func + 3)) { + /* XXX: [[Construct]] newTarget currently unsupported */ + DUK_ERROR_UNSUPPORTED(thr); + DUK_WO_NORETURN(return 0;); + } + duk_set_top_unsafe(thr, idx_func + 3); /* remove any args beyond argArray */ + } + DUK_ASSERT(duk_get_top(thr) == idx_func + 3); + DUK_ASSERT(duk_is_valid_index(thr, idx_func + 2)); + (void) duk_unpack_array_like(thr, idx_func + 2); /* XXX: should also remove target to be symmetric with duk_pack()? */ + duk_remove(thr, idx_func + 2); + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + break; + } +#endif /* DUK_USE_REFLECT_BUILTIN */ + default: { + DUK_ASSERT(0); + DUK_UNREACHABLE(); + } + } + + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + return 0; /* keep resolving */ + + apply_shared: + tv_args = thr->valstack_bottom + idx_func + 2; + if (thr->valstack_top <= tv_args) { + DUK_ASSERT(tv_args <= thr->valstack_end); + thr->valstack_top = tv_args; /* at least target func and 'this' binding present */ + /* No need to check for argArray. */ + } else { + DUK_ASSERT(duk_get_top(thr) >= idx_func + 3); /* idx_func + 2 covered above */ + if (thr->valstack_top > tv_args + 1) { + duk_set_top_unsafe(thr, idx_func + 3); /* remove any args beyond argArray */ + } + DUK_ASSERT(duk_is_valid_index(thr, idx_func + 2)); + if (!duk_is_callable(thr, idx_func)) { + /* Avoid unpack side effects if the target isn't callable. + * Calling code will throw the actual error. + */ + } else { + (void) duk_unpack_array_like(thr, idx_func + 2); + duk_remove(thr, idx_func + 2); + } + } + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + return 0; /* keep resolving */ +} + +/* + * Helper for Proxy handling. + */ + +#if defined(DUK_USE_ES6_PROXY) +DUK_LOCAL void duk__handle_proxy_for_call(duk_hthread *thr, duk_idx_t idx_func, duk_hproxy *h_proxy, duk_small_uint_t *call_flags) { + duk_bool_t rc; + + /* Value stack: + * idx_func + 0: Proxy object + * idx_func + 1: this binding for call + * idx_func + 2: 1st argument for call + * idx_func + 3: 2nd argument for call + * ... + * + * If Proxy doesn't have a trap for the call ('apply' or 'construct'), + * replace Proxy object with target object. + * + * If we're dealing with a normal call and the Proxy has an 'apply' + * trap, manipulate value stack to: + * + * idx_func + 0: trap + * idx_func + 1: Proxy's handler + * idx_func + 2: Proxy's target + * idx_func + 3: this binding for call (from idx_func + 1) + * idx_func + 4: call arguments packed to an array + * + * If we're dealing with a constructor call and the Proxy has a + * 'construct' trap, manipulate value stack to: + * + * idx_func + 0: trap + * idx_func + 1: Proxy's handler + * idx_func + 2: Proxy's target + * idx_func + 3: call arguments packed to an array + * idx_func + 4: newTarget == Proxy object here + * + * As we don't yet have proper newTarget support, the newTarget at + * idx_func + 3 is just the original constructor being called, i.e. + * the Proxy object (not the target). Note that the default instance + * (original 'this' binding) is dropped and ignored. + */ + + duk_push_hobject(thr, h_proxy->handler); + rc = duk_get_prop_stridx_short(thr, -1, (*call_flags & DUK_CALL_FLAG_CONSTRUCT) ? DUK_STRIDX_CONSTRUCT : DUK_STRIDX_APPLY); + if (rc == 0) { + /* Not found, continue to target. If this is a construct + * call, update default instance prototype using the Proxy, + * not the target. + */ + if (*call_flags & DUK_CALL_FLAG_CONSTRUCT) { + if (!(*call_flags & DUK_CALL_FLAG_DEFAULT_INSTANCE_UPDATED)) { + *call_flags |= DUK_CALL_FLAG_DEFAULT_INSTANCE_UPDATED; + duk__update_default_instance_proto(thr, idx_func); + } + } + duk_pop_2(thr); + duk_push_hobject(thr, h_proxy->target); + duk_replace(thr, idx_func); + return; + } + + /* Here we must be careful not to replace idx_func while + * h_proxy is still needed, otherwise h_proxy may become + * dangling. This could be improved e.g. using a + * duk_pack_slice() with a freeform slice. + */ + + /* Here: + * idx_func + 0: Proxy object + * idx_func + 1: this binding for call + * idx_func + 2: 1st argument for call + * idx_func + 3: 2nd argument for call + * ... + * idx_func + N: handler + * idx_func + N + 1: trap + */ + + duk_insert(thr, idx_func + 1); + duk_insert(thr, idx_func + 2); + duk_push_hobject(thr, h_proxy->target); + duk_insert(thr, idx_func + 3); + duk_pack(thr, duk_get_top(thr) - (idx_func + 5)); + DUK_ASSERT(!duk_is_bare_object(thr, -1)); + + /* Here: + * idx_func + 0: Proxy object + * idx_func + 1: trap + * idx_func + 2: Proxy's handler + * idx_func + 3: Proxy's target + * idx_func + 4: this binding for call + * idx_func + 5: arguments array + */ + DUK_ASSERT(duk_get_top(thr) == idx_func + 6); + + if (*call_flags & DUK_CALL_FLAG_CONSTRUCT) { + *call_flags |= DUK_CALL_FLAG_CONSTRUCT_PROXY; /* Enable 'construct' trap return invariant check. */ + *call_flags &= ~(DUK_CALL_FLAG_CONSTRUCT); /* Resume as non-constructor call to the trap. */ + + /* 'apply' args: target, thisArg, argArray + * 'construct' args: target, argArray, newTarget + */ + duk_remove(thr, idx_func + 4); + duk_push_hobject(thr, (duk_hobject *) h_proxy); + } + + /* Finalize value stack layout by removing Proxy reference. */ + duk_remove(thr, idx_func); + h_proxy = NULL; /* invalidated */ + DUK_ASSERT(duk_get_top(thr) == idx_func + 5); +} +#endif /* DUK_USE_ES6_PROXY */ + +/* + * Helper for setting up var_env and lex_env of an activation, + * assuming it does NOT have the DUK_HOBJECT_FLAG_NEWENV flag. + */ + +DUK_LOCAL void duk__handle_oldenv_for_call(duk_hthread *thr, + duk_hobject *func, + duk_activation *act) { + duk_hcompfunc *f; + duk_hobject *h_lex; + duk_hobject *h_var; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(func != NULL); + DUK_ASSERT(act != NULL); + DUK_ASSERT(!DUK_HOBJECT_HAS_NEWENV(func)); + DUK_ASSERT(!DUK_HOBJECT_HAS_CREATEARGS(func)); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(func)); + DUK_UNREF(thr); + + f = (duk_hcompfunc *) func; + h_lex = DUK_HCOMPFUNC_GET_LEXENV(thr->heap, f); + h_var = DUK_HCOMPFUNC_GET_VARENV(thr->heap, f); + DUK_ASSERT(h_lex != NULL); /* Always true for closures (not for templates) */ + DUK_ASSERT(h_var != NULL); + act->lex_env = h_lex; + act->var_env = h_var; + DUK_HOBJECT_INCREF(thr, h_lex); + DUK_HOBJECT_INCREF(thr, h_var); +} + +/* + * Helper for updating callee 'caller' property. + */ + +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) +DUK_LOCAL void duk__update_func_caller_prop(duk_hthread *thr, duk_hobject *func) { + duk_tval *tv_caller; + duk_hobject *h_tmp; + duk_activation *act_callee; + duk_activation *act_caller; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(func != NULL); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(func)); /* bound chain resolved */ + DUK_ASSERT(thr->callstack_top >= 1); + + if (DUK_HOBJECT_HAS_STRICT(func)) { + /* Strict functions don't get their 'caller' updated. */ + return; + } + + DUK_ASSERT(thr->callstack_top > 0); + act_callee = thr->callstack_curr; + DUK_ASSERT(act_callee != NULL); + act_caller = (thr->callstack_top >= 2 ? act_callee->parent : NULL); + + /* XXX: check .caller writability? */ + + /* Backup 'caller' property and update its value. */ + tv_caller = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, func, DUK_STRIDX_CALLER); + if (tv_caller) { + /* If caller is global/eval code, 'caller' should be set to + * 'null'. + * + * XXX: there is no exotic flag to infer this correctly now. + * The NEWENV flag is used now which works as intended for + * everything (global code, non-strict eval code, and functions) + * except strict eval code. Bound functions are never an issue + * because 'func' has been resolved to a non-bound function. + */ + + if (act_caller != NULL) { + /* act_caller->func may be NULL in some finalization cases, + * just treat like we don't know the caller. + */ + if (act_caller->func && !DUK_HOBJECT_HAS_NEWENV(act_caller->func)) { + /* Setting to NULL causes 'caller' to be set to + * 'null' as desired. + */ + act_caller = NULL; + } + } + + if (DUK_TVAL_IS_OBJECT(tv_caller)) { + h_tmp = DUK_TVAL_GET_OBJECT(tv_caller); + DUK_ASSERT(h_tmp != NULL); + act_callee->prev_caller = h_tmp; + + /* Previous value doesn't need refcount changes because its ownership + * is transferred to prev_caller. + */ + + if (act_caller != NULL) { + DUK_ASSERT(act_caller->func != NULL); + DUK_TVAL_SET_OBJECT(tv_caller, act_caller->func); + DUK_TVAL_INCREF(thr, tv_caller); + } else { + DUK_TVAL_SET_NULL(tv_caller); /* no incref */ + } + } else { + /* 'caller' must only take on 'null' or function value */ + DUK_ASSERT(!DUK_TVAL_IS_HEAP_ALLOCATED(tv_caller)); + DUK_ASSERT(act_callee->prev_caller == NULL); + if (act_caller != NULL && act_caller->func) { + /* Tolerate act_caller->func == NULL which happens in + * some finalization cases; treat like unknown caller. + */ + DUK_TVAL_SET_OBJECT(tv_caller, act_caller->func); + DUK_TVAL_INCREF(thr, tv_caller); + } else { + DUK_TVAL_SET_NULL(tv_caller); /* no incref */ + } + } + } +} +#endif /* DUK_USE_NONSTD_FUNC_CALLER_PROPERTY */ + +/* + * Shared helpers for resolving the final, non-bound target function of the + * call and the effective 'this' binding. Resolves bound functions and + * applies .call(), .apply(), and .construct() inline. + * + * Proxy traps are also handled inline so that if the target is a Proxy with + * a 'call' or 'construct' trap, the trap handler is called with a modified + * argument list. + * + * Once the bound function / .call() / .apply() / .construct() sequence has + * been resolved, the value at idx_func + 1 may need coercion described in + * E5 Section 10.4.3. + * + * A call that begins as a non-constructor call may be converted into a + * constructor call during the resolution process if Reflect.construct() + * is invoked. This is handled by updating the caller's call_flags. + * + * For global and eval code (E5 Sections 10.4.1 and 10.4.2), we assume + * that the caller has provided the correct 'this' binding explicitly + * when calling, i.e.: + * + * - global code: this=global object + * - direct eval: this=copy from eval() caller's this binding + * - other eval: this=global object + * + * The 'this' coercion may cause a recursive function call with arbitrary + * side effects, because ToObject() may be called. + */ + +DUK_LOCAL DUK_INLINE void duk__coerce_nonstrict_this_binding(duk_hthread *thr, duk_idx_t idx_this) { + duk_tval *tv_this; + duk_hobject *obj_global; + + tv_this = thr->valstack_bottom + idx_this; + switch (DUK_TVAL_GET_TAG(tv_this)) { + case DUK_TAG_OBJECT: + DUK_DDD(DUK_DDDPRINT("this binding: non-strict, object -> use directly")); + break; + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: + DUK_DDD(DUK_DDDPRINT("this binding: non-strict, undefined/null -> use global object")); + obj_global = thr->builtins[DUK_BIDX_GLOBAL]; + /* XXX: avoid this check somehow */ + if (DUK_LIKELY(obj_global != NULL)) { + DUK_ASSERT(!DUK_TVAL_IS_HEAP_ALLOCATED(tv_this)); /* no need to decref previous value */ + DUK_TVAL_SET_OBJECT(tv_this, obj_global); + DUK_HOBJECT_INCREF(thr, obj_global); + } else { + /* This may only happen if built-ins are being "torn down". + * This behavior is out of specification scope. + */ + DUK_D(DUK_DPRINT("this binding: wanted to use global object, but it is NULL -> using undefined instead")); + DUK_ASSERT(!DUK_TVAL_IS_HEAP_ALLOCATED(tv_this)); /* no need to decref previous value */ + DUK_TVAL_SET_UNDEFINED(tv_this); /* nothing to incref */ + } + break; + default: + /* Plain buffers and lightfuncs are object coerced. Lightfuncs + * very rarely come here however, because the call target would + * need to be a non-strict non-lightfunc (lightfuncs are considered + * strict) with an explicit lightfunc 'this' binding. + */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv_this)); + DUK_DDD(DUK_DDDPRINT("this binding: non-strict, not object/undefined/null -> use ToObject(value)")); + duk_to_object(thr, idx_this); /* may have side effects */ + break; + } +} + +DUK_LOCAL DUK_ALWAYS_INLINE duk_bool_t duk__resolve_target_fastpath_check(duk_hthread *thr, duk_idx_t idx_func, duk_hobject **out_func, duk_small_uint_t call_flags) { +#if defined(DUK_USE_PREFER_SIZE) + DUK_UNREF(thr); + DUK_UNREF(idx_func); + DUK_UNREF(out_func); + DUK_UNREF(call_flags); +#else /* DUK_USE_PREFER_SIZE */ + duk_tval *tv_func; + duk_hobject *func; + + if (DUK_UNLIKELY(call_flags & DUK_CALL_FLAG_CONSTRUCT)) { + return 0; + } + + tv_func = DUK_GET_TVAL_POSIDX(thr, idx_func); + DUK_ASSERT(tv_func != NULL); + + if (DUK_LIKELY(DUK_TVAL_IS_OBJECT(tv_func))) { + func = DUK_TVAL_GET_OBJECT(tv_func); + if (DUK_HOBJECT_IS_CALLABLE(func) && + !DUK_HOBJECT_HAS_BOUNDFUNC(func) && + !DUK_HOBJECT_HAS_SPECIAL_CALL(func)) { + *out_func = func; + + if (DUK_HOBJECT_HAS_STRICT(func)) { + /* Strict function: no 'this' coercion. */ + return 1; + } + + duk__coerce_nonstrict_this_binding(thr, idx_func + 1); + return 1; + } + } else if (DUK_TVAL_IS_LIGHTFUNC(tv_func)) { + *out_func = NULL; + + /* Lightfuncs are considered strict, so 'this' binding is + * used as is. They're never bound, always constructable, + * and never special functions. + */ + return 1; + } +#endif /* DUK_USE_PREFER_SIZE */ + return 0; /* let slow path deal with it */ +} + +DUK_LOCAL duk_hobject *duk__resolve_target_func_and_this_binding(duk_hthread *thr, + duk_idx_t idx_func, + duk_small_uint_t *call_flags) { + duk_tval *tv_func; + duk_hobject *func; + duk_bool_t first; + + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + + for (first = 1;; first = 0) { + DUK_ASSERT(duk_get_top(thr) >= idx_func + 2); + + tv_func = DUK_GET_TVAL_POSIDX(thr, idx_func); + DUK_ASSERT(tv_func != NULL); + + DUK_DD(DUK_DDPRINT("target func: %!iT", tv_func)); + + if (DUK_TVAL_IS_OBJECT(tv_func)) { + func = DUK_TVAL_GET_OBJECT(tv_func); + + if (*call_flags & DUK_CALL_FLAG_CONSTRUCT) { + if (DUK_UNLIKELY(!DUK_HOBJECT_HAS_CONSTRUCTABLE(func))) { + goto not_constructable; + } + } else { + if (DUK_UNLIKELY(!DUK_HOBJECT_IS_CALLABLE(func))) { + goto not_callable; + } + } + + if (DUK_LIKELY(!DUK_HOBJECT_HAS_BOUNDFUNC(func) && + !DUK_HOBJECT_HAS_SPECIAL_CALL(func) && + !DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(func))) { + /* Common case, so test for using a single bitfield test. + * Break out to handle this coercion etc. + */ + break; + } + + /* XXX: could set specialcall for boundfuncs too, simplify check above */ + + if (DUK_HOBJECT_HAS_BOUNDFUNC(func)) { + DUK_ASSERT(!DUK_HOBJECT_HAS_SPECIAL_CALL(func)); + DUK_ASSERT(!DUK_HOBJECT_IS_NATFUNC(func)); + + /* Callable/constructable flags are the same + * for the bound function and its target, so + * we don't need to check them here, we can + * check them from the target only. + */ + duk__handle_bound_chain_for_call(thr, idx_func, *call_flags & DUK_CALL_FLAG_CONSTRUCT); + + DUK_ASSERT(DUK_TVAL_IS_OBJECT(duk_require_tval(thr, idx_func)) || + DUK_TVAL_IS_LIGHTFUNC(duk_require_tval(thr, idx_func))); + } else { + DUK_ASSERT(DUK_HOBJECT_HAS_SPECIAL_CALL(func)); + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(func)) { + /* If no trap, resume processing from Proxy trap. + * If trap exists, helper converts call into a trap + * call; this may change a constructor call into a + * normal (non-constructor) trap call. We must + * continue processing even when a trap is found as + * the trap may be bound. + */ + duk__handle_proxy_for_call(thr, idx_func, (duk_hproxy *) func, call_flags); + } + else +#endif + { + DUK_ASSERT(DUK_HOBJECT_IS_NATFUNC(func)); + DUK_ASSERT(DUK_HOBJECT_HAS_CALLABLE(func)); + DUK_ASSERT(!DUK_HOBJECT_HAS_CONSTRUCTABLE(func)); + /* Constructable check already done above. */ + + if (duk__handle_specialfuncs_for_call(thr, idx_func, func, call_flags, first) != 0) { + /* Encountered native eval call, normal call + * context. Break out, handle this coercion etc. + */ + break; + } + } + } + /* Retry loop. */ + } else if (DUK_TVAL_IS_LIGHTFUNC(tv_func)) { + /* Lightfuncs are: + * - Always strict, so no 'this' coercion. + * - Always callable. + * - Always constructable. + * - Never specialfuncs. + */ + func = NULL; + goto finished; + } else { + goto not_callable; + } + } + + DUK_ASSERT(func != NULL); + + if (!DUK_HOBJECT_HAS_STRICT(func)) { + /* Non-strict target needs 'this' coercion. + * This has potential side effects invalidating + * 'tv_func'. + */ + duk__coerce_nonstrict_this_binding(thr, idx_func + 1); + } + if (*call_flags & DUK_CALL_FLAG_CONSTRUCT) { + if (!(*call_flags & DUK_CALL_FLAG_DEFAULT_INSTANCE_UPDATED)) { + *call_flags |= DUK_CALL_FLAG_DEFAULT_INSTANCE_UPDATED; + duk__update_default_instance_proto(thr, idx_func); + } + } + + finished: + +#if defined(DUK_USE_ASSERTIONS) + { + duk_tval *tv_tmp; + + tv_tmp = duk_get_tval(thr, idx_func); + DUK_ASSERT(tv_tmp != NULL); + + DUK_ASSERT((DUK_TVAL_IS_OBJECT(tv_tmp) && DUK_HOBJECT_IS_CALLABLE(DUK_TVAL_GET_OBJECT(tv_tmp))) || + DUK_TVAL_IS_LIGHTFUNC(tv_tmp)); + DUK_ASSERT(func == NULL || !DUK_HOBJECT_HAS_BOUNDFUNC(func)); + DUK_ASSERT(func == NULL || (DUK_HOBJECT_IS_COMPFUNC(func) || + DUK_HOBJECT_IS_NATFUNC(func))); + DUK_ASSERT(func == NULL || (DUK_HOBJECT_HAS_CONSTRUCTABLE(func) || + (*call_flags & DUK_CALL_FLAG_CONSTRUCT) == 0)); + } +#endif + + return func; + + not_callable: + DUK_ASSERT(tv_func != NULL); + +#if defined(DUK_USE_VERBOSE_ERRORS) + /* GETPROPC delayed error handling: when target is not callable, + * GETPROPC replaces idx_func+0 with a non-callable wrapper object + * with a hidden Symbol to signify it's to be handled here. If + * found, unwrap the original Error and throw it as is here. The + * hidden Symbol is only checked as an own property, not inherited + * (which would be dangerous). + */ + if (DUK_TVAL_IS_OBJECT(tv_func)) { + duk_tval *tv_wrap = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, DUK_TVAL_GET_OBJECT(tv_func), DUK_STRIDX_INT_TARGET); + if (tv_wrap != NULL) { + DUK_DD(DUK_DDPRINT("delayed error from GETPROPC: %!T", tv_wrap)); + duk_push_tval(thr, tv_wrap); + (void) duk_throw(thr); + DUK_WO_NORETURN(return NULL;); + } + } +#endif + +#if defined(DUK_USE_VERBOSE_ERRORS) +#if defined(DUK_USE_PARANOID_ERRORS) + DUK_ERROR_FMT1(thr, DUK_ERR_TYPE_ERROR, "%s not callable", duk_get_type_name(thr, idx_func)); +#else + DUK_ERROR_FMT1(thr, DUK_ERR_TYPE_ERROR, "%s not callable", duk_push_string_tval_readable(thr, tv_func)); +#endif +#else + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CALLABLE); +#endif + DUK_WO_NORETURN(return NULL;); + + not_constructable: + /* For now GETPROPC delayed error not needed for constructor calls. */ +#if defined(DUK_USE_VERBOSE_ERRORS) +#if defined(DUK_USE_PARANOID_ERRORS) + DUK_ERROR_FMT1(thr, DUK_ERR_TYPE_ERROR, "%s not constructable", duk_get_type_name(thr, idx_func)); +#else + DUK_ERROR_FMT1(thr, DUK_ERR_TYPE_ERROR, "%s not constructable", duk_push_string_tval_readable(thr, tv_func)); +#endif +#else + DUK_ERROR_TYPE(thr, DUK_STR_NOT_CONSTRUCTABLE); +#endif + DUK_WO_NORETURN(return NULL;); +} + +/* + * Manipulate value stack so that exactly 'num_stack_rets' return + * values are at 'idx_retbase' in every case, assuming there are + * 'rc' return values on top of stack. + * + * This is a bit tricky, because the called C function operates in + * the same activation record and may have e.g. popped the stack + * empty (below idx_retbase). + */ + +DUK_LOCAL void duk__safe_call_adjust_valstack(duk_hthread *thr, duk_idx_t idx_retbase, duk_idx_t num_stack_rets, duk_idx_t num_actual_rets) { + duk_idx_t idx_rcbase; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(idx_retbase >= 0); + DUK_ASSERT(num_stack_rets >= 0); + DUK_ASSERT(num_actual_rets >= 0); + + idx_rcbase = duk_get_top(thr) - num_actual_rets; /* base of known return values */ + if (DUK_UNLIKELY(idx_rcbase < 0)) { + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_CFUNC_RC); + DUK_WO_NORETURN(return;); + } + + DUK_DDD(DUK_DDDPRINT("adjust valstack after func call: " + "num_stack_rets=%ld, num_actual_rets=%ld, stack_top=%ld, idx_retbase=%ld, idx_rcbase=%ld", + (long) num_stack_rets, (long) num_actual_rets, (long) duk_get_top(thr), + (long) idx_retbase, (long) idx_rcbase)); + + DUK_ASSERT(idx_rcbase >= 0); /* caller must check */ + + /* Space for num_stack_rets was reserved before the safe call. + * Because value stack reserve cannot shrink except in call returns, + * the reserve is still in place. Adjust valstack, carefully + * ensuring we don't overstep the reserve. + */ + + /* Match idx_rcbase with idx_retbase so that the return values + * start at the correct index. + */ + if (idx_rcbase > idx_retbase) { + duk_idx_t count = idx_rcbase - idx_retbase; + + DUK_DDD(DUK_DDDPRINT("elements at/after idx_retbase have enough to cover func retvals " + "(idx_retbase=%ld, idx_rcbase=%ld)", (long) idx_retbase, (long) idx_rcbase)); + + /* Remove values between irc_rcbase (start of intended return + * values) and idx_retbase to lower return values to idx_retbase. + */ + DUK_ASSERT(count > 0); + duk_remove_n(thr, idx_retbase, count); /* may be NORZ */ + } else { + duk_idx_t count = idx_retbase - idx_rcbase; + + DUK_DDD(DUK_DDDPRINT("not enough elements at/after idx_retbase to cover func retvals " + "(idx_retbase=%ld, idx_rcbase=%ld)", (long) idx_retbase, (long) idx_rcbase)); + + /* Insert 'undefined' at idx_rcbase (start of intended return + * values) to lift return values to idx_retbase. + */ + DUK_ASSERT(count >= 0); + DUK_ASSERT(thr->valstack_end - thr->valstack_top >= count); /* reserve cannot shrink */ + duk_insert_undefined_n(thr, idx_rcbase, count); + } + + /* Chop extra retvals away / extend with undefined. */ + duk_set_top_unsafe(thr, idx_retbase + num_stack_rets); +} + +/* + * Activation setup for tailcalls and non-tailcalls. + */ + +#if defined(DUK_USE_TAILCALL) +DUK_LOCAL duk_small_uint_t duk__call_setup_act_attempt_tailcall(duk_hthread *thr, + duk_small_uint_t call_flags, + duk_idx_t idx_func, + duk_hobject *func, + duk_size_t entry_valstack_bottom_byteoff, + duk_size_t entry_valstack_end_byteoff, + duk_idx_t *out_nargs, + duk_idx_t *out_nregs, + duk_size_t *out_vs_min_bytes, + duk_activation **out_act) { + duk_activation *act; + duk_tval *tv1, *tv2; + duk_idx_t idx_args; + duk_small_uint_t flags1, flags2; +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_activation *prev_pause_act; +#endif + + DUK_UNREF(entry_valstack_end_byteoff); + + /* Tailcall cannot be flagged to resume calls, and a + * previous frame must exist. + */ + DUK_ASSERT(thr->callstack_top >= 1); + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + *out_act = act; + + if (func == NULL || !DUK_HOBJECT_IS_COMPFUNC(func)) { + DUK_DDD(DUK_DDDPRINT("tail call prevented by target not being ecma function")); + return 0; + } + if (act->flags & DUK_ACT_FLAG_PREVENT_YIELD) { + DUK_DDD(DUK_DDDPRINT("tail call prevented by current activation having DUK_ACT_FLAG_PREVENT_YIELD")); + return 0; + } + /* Tailcall is only allowed if current and candidate + * function have identical return value handling. There + * are three possible return value handling cases: + * 1. Normal function call, no special return value handling. + * 2. Constructor call, return value replacement object check. + * 3. Proxy 'construct' trap call, return value invariant check. + */ + flags1 = (duk_small_uint_t) ((act->flags & DUK_ACT_FLAG_CONSTRUCT) ? 1 : 0) +#if defined(DUK_USE_ES6_PROXY) + | (duk_small_uint_t) ((act->flags & DUK_ACT_FLAG_CONSTRUCT_PROXY) ? 2 : 0) +#endif + ; + flags2 = (duk_small_uint_t) ((call_flags & DUK_CALL_FLAG_CONSTRUCT) ? 1 : 0) +#if defined(DUK_USE_ES6_PROXY) + | (duk_small_uint_t) ((call_flags & DUK_CALL_FLAG_CONSTRUCT_PROXY) ? 2 : 0); +#endif + ; + if (flags1 != flags2) { + DUK_DDD(DUK_DDDPRINT("tail call prevented by incompatible return value handling")); + return 0; + } + DUK_ASSERT(((act->flags & DUK_ACT_FLAG_CONSTRUCT) && (call_flags & DUK_CALL_FLAG_CONSTRUCT)) || + (!(act->flags & DUK_ACT_FLAG_CONSTRUCT) && !(call_flags & DUK_CALL_FLAG_CONSTRUCT))); + DUK_ASSERT(((act->flags & DUK_ACT_FLAG_CONSTRUCT_PROXY) && (call_flags & DUK_CALL_FLAG_CONSTRUCT_PROXY)) || + (!(act->flags & DUK_ACT_FLAG_CONSTRUCT_PROXY) && !(call_flags & DUK_CALL_FLAG_CONSTRUCT_PROXY))); + if (DUK_HOBJECT_HAS_NOTAIL(func)) { + /* See: test-bug-tailcall-preventyield-assert.c. */ + DUK_DDD(DUK_DDDPRINT("tail call prevented by function having a notail flag")); + return 0; + } + + /* + * Tailcall handling + * + * Although the callstack entry is reused, we need to explicitly unwind + * the current activation (or simulate an unwind). In particular, the + * current activation must be closed, otherwise something like + * test-bug-reduce-judofyr.js results. Also catchers need to be unwound + * because there may be non-error-catching label entries in valid tail calls. + * + * Special attention is needed for debugger and pause behavior when + * reusing an activation. + * - Disable StepOut processing for the activation unwind because + * we reuse the activation, see: + * https://github.com/svaarala/duktape/issues/1684. + * - Disable line change pause flag permanently if act == dbg_pause_act + * (if set) because it would no longer be relevant, see: + * https://github.com/svaarala/duktape/issues/1726, + * https://github.com/svaarala/duktape/issues/1786. + * - Check for function entry (e.g. StepInto) pause flag here, because + * the executor pause check won't trigger due to shared activation, see: + * https://github.com/svaarala/duktape/issues/1726. + */ + + DUK_DDD(DUK_DDDPRINT("is tail call, reusing activation at callstack top, at index %ld", + (long) (thr->callstack_top - 1))); + + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(func)); + DUK_ASSERT(!DUK_HOBJECT_HAS_NATFUNC(func)); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(func)); + DUK_ASSERT((act->flags & DUK_ACT_FLAG_PREVENT_YIELD) == 0); + DUK_ASSERT(call_flags & DUK_CALL_FLAG_ALLOW_ECMATOECMA); + + /* Unwind the topmost callstack entry before reusing it. This + * also unwinds the catchers related to the topmost entry. + */ + DUK_ASSERT(thr->callstack_top > 0); + DUK_ASSERT(thr->callstack_curr != NULL); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (act == thr->heap->dbg_pause_act) { + thr->heap->dbg_pause_flags &= ~DUK_PAUSE_FLAG_LINE_CHANGE; + } + + prev_pause_act = thr->heap->dbg_pause_act; + thr->heap->dbg_pause_act = NULL; + if (thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_FUNC_ENTRY) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by function entry (tailcall)")); + duk_debug_set_paused(thr->heap); + } +#endif + duk_hthread_activation_unwind_reuse_norz(thr); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + thr->heap->dbg_pause_act = prev_pause_act; +#endif + DUK_ASSERT(act == thr->callstack_curr); + + /* XXX: We could restore the caller's value stack reserve + * here, as if we did an actual unwind-and-call. Without + * the restoration, value stack reserve may remain higher + * than would otherwise be possible until we return to a + * non-tailcall. + */ + + /* Then reuse the unwound activation. */ + act->cat = NULL; + act->var_env = NULL; + act->lex_env = NULL; + DUK_ASSERT(func != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(func)); + act->func = func; /* don't want an intermediate exposed state with func == NULL */ +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + act->prev_caller = NULL; +#endif + /* don't want an intermediate exposed state with invalid pc */ + act->curr_pc = DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, (duk_hcompfunc *) func); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + act->prev_line = 0; +#endif + DUK_TVAL_SET_OBJECT(&act->tv_func, func); /* borrowed, no refcount */ + DUK_HOBJECT_INCREF(thr, func); + + act->flags = DUK_ACT_FLAG_TAILCALLED; + if (DUK_HOBJECT_HAS_STRICT(func)) { + act->flags |= DUK_ACT_FLAG_STRICT; + } + if (call_flags & DUK_CALL_FLAG_CONSTRUCT) { + act->flags |= DUK_ACT_FLAG_CONSTRUCT; + } +#if defined(DUK_USE_ES6_PROXY) + if (call_flags & DUK_CALL_FLAG_CONSTRUCT_PROXY) { + act->flags |= DUK_ACT_FLAG_CONSTRUCT_PROXY; + } +#endif + + DUK_ASSERT(DUK_ACT_GET_FUNC(act) == func); /* already updated */ + DUK_ASSERT(act->var_env == NULL); + DUK_ASSERT(act->lex_env == NULL); + act->bottom_byteoff = entry_valstack_bottom_byteoff; /* tail call -> reuse current "frame" */ +#if 0 + /* Topmost activation retval_byteoff is considered garbage, no need to init. */ + act->retval_byteoff = 0; +#endif + /* Filled in when final reserve is known, dummy value doesn't matter + * even in error unwind because reserve_byteoff is only used when + * returning to -this- activation. + */ + act->reserve_byteoff = 0; + + /* + * Manipulate valstack so that args are on the current bottom and the + * previous caller's 'this' binding (which is the value preceding the + * current bottom) is replaced with the new 'this' binding: + * + * [ ... this_old | (crud) func this_new arg1 ... argN ] + * --> [ ... this_new | arg1 ... argN ] + * + * For tail calling to work properly, the valstack bottom must not grow + * here; otherwise crud would accumulate on the valstack. + */ + + tv1 = thr->valstack_bottom - 1; + tv2 = thr->valstack_bottom + idx_func + 1; + DUK_ASSERT(tv1 >= thr->valstack && tv1 < thr->valstack_top); /* tv1 is -below- valstack_bottom */ + DUK_ASSERT(tv2 >= thr->valstack_bottom && tv2 < thr->valstack_top); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv2); /* side effects */ + + idx_args = idx_func + 2; + duk_remove_n(thr, 0, idx_args); /* may be NORZ */ + + idx_func = 0; DUK_UNREF(idx_func); /* really 'not applicable' anymore, should not be referenced after this */ + idx_args = 0; + + *out_nargs = ((duk_hcompfunc *) func)->nargs; + *out_nregs = ((duk_hcompfunc *) func)->nregs; + DUK_ASSERT(*out_nregs >= 0); + DUK_ASSERT(*out_nregs >= *out_nargs); + *out_vs_min_bytes = entry_valstack_bottom_byteoff + sizeof(duk_tval) * ((duk_size_t) *out_nregs + DUK_VALSTACK_INTERNAL_EXTRA); + + +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) +#if defined(DUK_USE_TAILCALL) +#error incorrect options: tail calls enabled with function caller property +#endif + /* XXX: This doesn't actually work properly for tail calls, so + * tail calls are disabled when DUK_USE_NONSTD_FUNC_CALLER_PROPERTY + * is in use. + */ + duk__update_func_caller_prop(thr, func); +#endif + + /* [ ... this_new | arg1 ... argN ] */ + + return 1; +} +#endif /* DUK_USE_TAILCALL */ + +DUK_LOCAL void duk__call_setup_act_not_tailcall(duk_hthread *thr, + duk_small_uint_t call_flags, + duk_idx_t idx_func, + duk_hobject *func, + duk_size_t entry_valstack_bottom_byteoff, + duk_size_t entry_valstack_end_byteoff, + duk_idx_t *out_nargs, + duk_idx_t *out_nregs, + duk_size_t *out_vs_min_bytes, + duk_activation **out_act) { + duk_activation *act; + duk_activation *new_act; + + DUK_UNREF(entry_valstack_end_byteoff); + + DUK_DDD(DUK_DDDPRINT("not a tail call, pushing a new activation to callstack, to index %ld", + (long) (thr->callstack_top))); + + duk__call_callstack_limit_check(thr); + new_act = duk_hthread_activation_alloc(thr); + DUK_ASSERT(new_act != NULL); + + act = thr->callstack_curr; + if (act != NULL) { + /* + * Update return value stack index of current activation (if any). + * + * Although it might seem this is not necessary (bytecode executor + * does this for ECMAScript-to-ECMAScript calls; other calls are + * handled here), this turns out to be necessary for handling yield + * and resume. For them, an ECMAScript-to-native call happens, and + * the ECMAScript call's retval_byteoff must be set for things to work. + */ + + act->retval_byteoff = entry_valstack_bottom_byteoff + (duk_size_t) idx_func * sizeof(duk_tval); + } + + new_act->parent = act; + thr->callstack_curr = new_act; + thr->callstack_top++; + act = new_act; + *out_act = act; + + DUK_ASSERT(thr->valstack_top > thr->valstack_bottom); /* at least effective 'this' */ + DUK_ASSERT(func == NULL || !DUK_HOBJECT_HAS_BOUNDFUNC(func)); + + act->cat = NULL; + + act->flags = 0; + if (call_flags & DUK_CALL_FLAG_CONSTRUCT) { + act->flags |= DUK_ACT_FLAG_CONSTRUCT; + } +#if defined(DUK_USE_ES6_PROXY) + if (call_flags & DUK_CALL_FLAG_CONSTRUCT_PROXY) { + act->flags |= DUK_ACT_FLAG_CONSTRUCT_PROXY; + } +#endif + if (call_flags & DUK_CALL_FLAG_DIRECT_EVAL) { + act->flags |= DUK_ACT_FLAG_DIRECT_EVAL; + } + + /* start of arguments: idx_func + 2. */ + act->func = func; /* NULL for lightfunc */ + if (DUK_LIKELY(func != NULL)) { + DUK_TVAL_SET_OBJECT(&act->tv_func, func); /* borrowed, no refcount */ + if (DUK_HOBJECT_HAS_STRICT(func)) { + act->flags |= DUK_ACT_FLAG_STRICT; + } + if (DUK_HOBJECT_IS_COMPFUNC(func)) { + *out_nargs = ((duk_hcompfunc *) func)->nargs; + *out_nregs = ((duk_hcompfunc *) func)->nregs; + DUK_ASSERT(*out_nregs >= 0); + DUK_ASSERT(*out_nregs >= *out_nargs); + *out_vs_min_bytes = entry_valstack_bottom_byteoff + + sizeof(duk_tval) * ((duk_size_t) idx_func + 2U + (duk_size_t) *out_nregs + DUK_VALSTACK_INTERNAL_EXTRA); + } else { + /* True because of call target lookup checks. */ + DUK_ASSERT(DUK_HOBJECT_IS_NATFUNC(func)); + + *out_nargs = ((duk_hnatfunc *) func)->nargs; + *out_nregs = *out_nargs; + if (*out_nargs >= 0) { + *out_vs_min_bytes = entry_valstack_bottom_byteoff + + sizeof(duk_tval) * ((duk_size_t) idx_func + 2U + (duk_size_t) *out_nregs + DUK_VALSTACK_API_ENTRY_MINIMUM + DUK_VALSTACK_INTERNAL_EXTRA); + } else { + /* Vararg function. */ + duk_size_t valstack_top_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_top - ((duk_uint8_t *) thr->valstack)); + *out_vs_min_bytes = valstack_top_byteoff + + sizeof(duk_tval) * (DUK_VALSTACK_API_ENTRY_MINIMUM + DUK_VALSTACK_INTERNAL_EXTRA); + } + } + } else { + duk_small_uint_t lf_flags; + duk_tval *tv_func; + + act->flags |= DUK_ACT_FLAG_STRICT; + + tv_func = DUK_GET_TVAL_POSIDX(thr, idx_func); + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(tv_func)); + DUK_TVAL_SET_TVAL(&act->tv_func, tv_func); /* borrowed, no refcount */ + + lf_flags = DUK_TVAL_GET_LIGHTFUNC_FLAGS(tv_func); + *out_nargs = DUK_LFUNC_FLAGS_GET_NARGS(lf_flags); + if (*out_nargs != DUK_LFUNC_NARGS_VARARGS) { + *out_vs_min_bytes = entry_valstack_bottom_byteoff + + sizeof(duk_tval) * ((duk_size_t) idx_func + 2U + (duk_size_t) *out_nargs + DUK_VALSTACK_API_ENTRY_MINIMUM + DUK_VALSTACK_INTERNAL_EXTRA); + } else { + duk_size_t valstack_top_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_top - ((duk_uint8_t *) thr->valstack)); + *out_vs_min_bytes = valstack_top_byteoff + + sizeof(duk_tval) * (DUK_VALSTACK_API_ENTRY_MINIMUM + DUK_VALSTACK_INTERNAL_EXTRA); + *out_nargs = -1; /* vararg */ + } + *out_nregs = *out_nargs; + } + + act->var_env = NULL; + act->lex_env = NULL; +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + act->prev_caller = NULL; +#endif + act->curr_pc = NULL; +#if defined(DUK_USE_DEBUGGER_SUPPORT) + act->prev_line = 0; +#endif + act->bottom_byteoff = entry_valstack_bottom_byteoff + sizeof(duk_tval) * ((duk_size_t) idx_func + 2U); +#if 0 + act->retval_byteoff = 0; /* topmost activation retval_byteoff is considered garbage, no need to init */ +#endif + /* Filled in when final reserve is known, dummy value doesn't matter + * even in error unwind because reserve_byteoff is only used when + * returning to -this- activation. + */ + act->reserve_byteoff = 0; /* filled in by caller */ + + /* XXX: Is this INCREF necessary? 'func' is always a borrowed + * reference reachable through the value stack? If changed, stack + * unwind code also needs to be fixed to match. + */ + DUK_HOBJECT_INCREF_ALLOWNULL(thr, func); /* act->func */ + +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + if (func) { + duk__update_func_caller_prop(thr, func); + } +#endif +} + +/* + * Environment setup. + */ + +DUK_LOCAL void duk__call_env_setup(duk_hthread *thr, duk_hobject *func, duk_activation *act, duk_idx_t idx_args) { + duk_hobject *env; + + DUK_ASSERT(func == NULL || !DUK_HOBJECT_HAS_BOUNDFUNC(func)); /* bound function has already been resolved */ + + if (DUK_LIKELY(func != NULL)) { + if (DUK_LIKELY(DUK_HOBJECT_HAS_NEWENV(func))) { + DUK_STATS_INC(thr->heap, stats_envrec_newenv); + if (DUK_LIKELY(!DUK_HOBJECT_HAS_CREATEARGS(func))) { + /* Use a new environment but there's no 'arguments' object; + * delayed environment initialization. This is the most + * common case. + */ + DUK_ASSERT(act->lex_env == NULL); + DUK_ASSERT(act->var_env == NULL); + } else { + /* Use a new environment and there's an 'arguments' object. + * We need to initialize it right now. + */ + + /* third arg: absolute index (to entire valstack) of bottom_byteoff of new activation */ + env = duk_create_activation_environment_record(thr, func, act->bottom_byteoff); + DUK_ASSERT(env != NULL); + + /* [ ... func this arg1 ... argN envobj ] */ + + DUK_ASSERT(DUK_HOBJECT_HAS_CREATEARGS(func)); + duk__handle_createargs_for_call(thr, func, env, idx_args); + + /* [ ... func this arg1 ... argN envobj ] */ + + act->lex_env = env; + act->var_env = env; + DUK_HOBJECT_INCREF(thr, env); + DUK_HOBJECT_INCREF(thr, env); /* XXX: incref by count (2) directly */ + duk_pop(thr); + } + } else { + /* Use existing env (e.g. for non-strict eval); cannot have + * an own 'arguments' object (but can refer to an existing one). + */ + + DUK_ASSERT(!DUK_HOBJECT_HAS_CREATEARGS(func)); + + DUK_STATS_INC(thr->heap, stats_envrec_oldenv); + duk__handle_oldenv_for_call(thr, func, act); + + DUK_ASSERT(act->lex_env != NULL); + DUK_ASSERT(act->var_env != NULL); + } + } else { + /* Lightfuncs are always native functions and have "newenv". */ + DUK_ASSERT(act->lex_env == NULL); + DUK_ASSERT(act->var_env == NULL); + DUK_STATS_INC(thr->heap, stats_envrec_newenv); + } +} + +/* + * Misc shared helpers. + */ + +/* Check thread state, update current thread. */ +DUK_LOCAL void duk__call_thread_state_update(duk_hthread *thr) { + DUK_ASSERT(thr != NULL); + + if (DUK_LIKELY(thr == thr->heap->curr_thread)) { + if (DUK_UNLIKELY(thr->state != DUK_HTHREAD_STATE_RUNNING)) { + /* Should actually never happen, but check anyway. */ + goto thread_state_error; + } + } else { + DUK_ASSERT(thr->heap->curr_thread == NULL || + thr->heap->curr_thread->state == DUK_HTHREAD_STATE_RUNNING); + if (DUK_UNLIKELY(thr->state != DUK_HTHREAD_STATE_INACTIVE)) { + goto thread_state_error; + } + DUK_HEAP_SWITCH_THREAD(thr->heap, thr); + thr->state = DUK_HTHREAD_STATE_RUNNING; + + /* Multiple threads may be simultaneously in the RUNNING + * state, but not in the same "resume chain". + */ + } + DUK_ASSERT(thr->heap->curr_thread == thr); + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_RUNNING); + return; + + thread_state_error: + DUK_ERROR_FMT1(thr, DUK_ERR_TYPE_ERROR, "invalid thread state (%ld)", (long) thr->state); + DUK_WO_NORETURN(return;); +} + +/* + * Main unprotected call handler, handles: + * + * - All combinations of native/ECMAScript caller and native/ECMAScript + * target. + * + * - Optimized ECMAScript-to-ECMAScript call where call handling only + * sets up a new duk_activation but reuses an existing bytecode executor + * (the caller) without native recursion. + * + * - Tailcalls, where an activation is reused without increasing call + * stack (duk_activation) depth. + * + * - Setup for an initial Duktape.Thread.resume(). + * + * The call handler doesn't provide any protection guarantees, protected calls + * must be implemented e.g. by wrapping the call in a duk_safe_call(). + * Call setup may fail at any stage, even when the new activation is in + * place; the only guarantee is that the state is consistent for unwinding. + */ + +DUK_LOCAL duk_int_t duk__handle_call_raw(duk_hthread *thr, + duk_idx_t idx_func, + duk_small_uint_t call_flags) { +#if defined(DUK_USE_ASSERTIONS) + duk_activation *entry_act; + duk_size_t entry_callstack_top; +#endif + duk_size_t entry_valstack_bottom_byteoff; + duk_size_t entry_valstack_end_byteoff; + duk_int_t entry_call_recursion_depth; + duk_hthread *entry_curr_thread; + duk_uint_fast8_t entry_thread_state; + duk_instr_t **entry_ptr_curr_pc; + duk_idx_t idx_args; + duk_idx_t nargs; /* # argument registers target function wants (< 0 => "as is") */ + duk_idx_t nregs; /* # total registers target function wants on entry (< 0 => "as is") */ + duk_size_t vs_min_bytes; /* minimum value stack size (bytes) for handling call */ + duk_hobject *func; /* 'func' on stack (borrowed reference) */ + duk_activation *act; + duk_ret_t rc; + duk_small_uint_t use_tailcall; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + /* Asserts for heap->curr_thread omitted: it may be NULL, 'thr', or + * any other thread (e.g. when heap thread is used to run finalizers). + */ + DUK_CTX_ASSERT_VALID(thr); + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + DUK_ASSERT(idx_func >= 0); + + DUK_STATS_INC(thr->heap, stats_call_all); + + /* If a tail call: + * - an ECMAScript activation must be on top of the callstack + * - there cannot be any catch stack entries that would catch + * a return + */ +#if defined(DUK_USE_ASSERTIONS) + if (call_flags & DUK_CALL_FLAG_TAILCALL) { + duk_activation *tmp_act; + duk_catcher *tmp_cat; + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr))); + + /* No entry in the catch stack which would actually catch a + * throw can refer to the callstack entry being reused. + * There *can* be catch stack entries referring to the current + * callstack entry as long as they don't catch (e.g. label sites). + */ + + tmp_act = thr->callstack_curr; + for (tmp_cat = tmp_act->cat; tmp_cat != NULL; tmp_cat = tmp_cat->parent) { + DUK_ASSERT(DUK_CAT_GET_TYPE(tmp_cat) == DUK_CAT_TYPE_LABEL); /* a non-catching entry */ + } + } +#endif /* DUK_USE_ASSERTIONS */ + + /* + * Store entry state. + */ + +#if defined(DUK_USE_ASSERTIONS) + entry_act = thr->callstack_curr; + entry_callstack_top = thr->callstack_top; +#endif + entry_valstack_bottom_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack); + entry_valstack_end_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack); + entry_call_recursion_depth = thr->heap->call_recursion_depth; + entry_curr_thread = thr->heap->curr_thread; /* may be NULL if first call */ + entry_thread_state = thr->state; + entry_ptr_curr_pc = thr->ptr_curr_pc; /* may be NULL */ + + /* If thr->ptr_curr_pc is set, sync curr_pc to act->pc. Then NULL + * thr->ptr_curr_pc so that it's not accidentally used with an incorrect + * activation when side effects occur. + */ + duk_hthread_sync_and_null_currpc(thr); + DUK_ASSERT(thr->ptr_curr_pc == NULL); + + DUK_DD(DUK_DDPRINT("duk__handle_call_raw: thr=%p, idx_func=%ld, " + "call_flags=0x%08lx (constructor=%ld), " + "valstack_top=%ld, idx_func=%ld, idx_args=%ld, rec_depth=%ld/%ld, " + "entry_valstack_bottom_byteoff=%ld, entry_valstack_end_byteoff=%ld, " + "entry_call_recursion_depth=%ld, " + "entry_curr_thread=%p, entry_thread_state=%ld", + (void *) thr, + (long) idx_func, + (unsigned long) call_flags, + (long) ((call_flags & DUK_CALL_FLAG_CONSTRUCT) != 0 ? 1 : 0), + (long) duk_get_top(thr), + (long) idx_func, + (long) (idx_func + 2), + (long) thr->heap->call_recursion_depth, + (long) thr->heap->call_recursion_limit, + (long) entry_valstack_bottom_byteoff, + (long) entry_valstack_end_byteoff, + (long) entry_call_recursion_depth, + (void *) entry_curr_thread, + (long) entry_thread_state)); + + /* + * Thread state check and book-keeping. + */ + + duk__call_thread_state_update(thr); + + /* + * Increase call recursion depth as early as possible so that if we + * enter a recursive call for any reason there's a backstop to native + * recursion. This can happen e.g. for almost any property read + * because it may cause a getter call or a Proxy trap (GC and finalizers + * are not an issue because they are not recursive). If we end up + * doing an Ecma-to-Ecma call, revert the increase. (See GH-2032.) + * + * For similar reasons, ensure there is a known value stack spare + * even before we actually prepare the value stack for the target + * function. If this isn't done, early recursion may consume the + * value stack space. + * + * XXX: Should bump yield preventcount early, for the same reason. + */ + + duk__call_c_recursion_limit_check(thr); + thr->heap->call_recursion_depth++; + duk_require_stack(thr, DUK__CALL_HANDLING_REQUIRE_STACK); + + /* + * Resolve final target function; handle bound functions and special + * functions like .call() and .apply(). Also figure out the effective + * 'this' binding, which replaces the current value at idx_func + 1. + */ + + if (DUK_LIKELY(duk__resolve_target_fastpath_check(thr, idx_func, &func, call_flags) != 0U)) { + DUK_DDD(DUK_DDDPRINT("fast path target resolve")); + } else { + DUK_DDD(DUK_DDDPRINT("slow path target resolve")); + func = duk__resolve_target_func_and_this_binding(thr, idx_func, &call_flags); + } + DUK_ASSERT(duk_get_top(thr) - idx_func >= 2); /* at least func and this present */ + + DUK_ASSERT(func == NULL || !DUK_HOBJECT_HAS_BOUNDFUNC(func)); + DUK_ASSERT(func == NULL || (DUK_HOBJECT_IS_COMPFUNC(func) || + DUK_HOBJECT_IS_NATFUNC(func))); + + /* [ ... func this arg1 ... argN ] */ + + /* + * Setup a preliminary activation and figure out nargs/nregs and + * value stack minimum size. + * + * Don't touch valstack_bottom or valstack_top yet so that Duktape API + * calls work normally. + * + * Because 'act' is not zeroed, all fields must be filled in. + */ + + /* Should not be necessary, but initialize to silence warnings. */ + act = NULL; + nargs = 0; + nregs = 0; + vs_min_bytes = 0; + +#if defined(DUK_USE_TAILCALL) + use_tailcall = (call_flags & DUK_CALL_FLAG_TAILCALL); + if (use_tailcall) { + use_tailcall = duk__call_setup_act_attempt_tailcall(thr, + call_flags, + idx_func, + func, + entry_valstack_bottom_byteoff, + entry_valstack_end_byteoff, + &nargs, + &nregs, + &vs_min_bytes, + &act); + } +#else + DUK_ASSERT((call_flags & DUK_CALL_FLAG_TAILCALL) == 0); /* compiler ensures this */ + use_tailcall = 0; +#endif + + if (use_tailcall) { + idx_args = 0; + DUK_STATS_INC(thr->heap, stats_call_tailcall); + } else { + duk__call_setup_act_not_tailcall(thr, + call_flags, + idx_func, + func, + entry_valstack_bottom_byteoff, + entry_valstack_end_byteoff, + &nargs, + &nregs, + &vs_min_bytes, + &act); + idx_args = idx_func + 2; + } + /* After this point idx_func is no longer valid for tailcalls. */ + + DUK_ASSERT(act != NULL); + + /* [ ... func this arg1 ... argN ] */ + + /* + * Environment record creation and 'arguments' object creation. + * Named function expression name binding is handled by the + * compiler; the compiled function's parent env will contain + * the (immutable) binding already. + * + * This handling is now identical for C and ECMAScript functions. + * C functions always have the 'NEWENV' flag set, so their + * environment record initialization is delayed (which is good). + * + * Delayed creation (on demand) is handled in duk_js_var.c. + */ + + duk__call_env_setup(thr, func, act, idx_args); + + /* [ ... func this arg1 ... argN ] */ + + /* + * Setup value stack: clamp to 'nargs', fill up to 'nregs', + * ensure value stack size matches target requirements, and + * switch value stack bottom. Valstack top is kept. + * + * Value stack can only grow here. + */ + + duk_valstack_grow_check_throw(thr, vs_min_bytes); + act->reserve_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack); + + if (use_tailcall) { + DUK_ASSERT(nregs >= 0); + DUK_ASSERT(nregs >= nargs); + duk_set_top_and_wipe(thr, nregs, nargs); + } else { + if (nregs >= 0) { + DUK_ASSERT(nregs >= nargs); + duk_set_top_and_wipe(thr, idx_func + 2 + nregs, idx_func + 2 + nargs); + } else { + ; + } + thr->valstack_bottom = thr->valstack_bottom + idx_func + 2; + } + DUK_ASSERT(thr->valstack_bottom >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + + /* + * Make the actual call. For Ecma-to-Ecma calls detect that + * setup is complete, then return with a status code that allows + * the caller to reuse the running executor. + */ + + if (func != NULL && DUK_HOBJECT_IS_COMPFUNC(func)) { + /* + * ECMAScript call. + */ + + DUK_ASSERT(func != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(func)); + act->curr_pc = DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, (duk_hcompfunc *) func); + + if (call_flags & DUK_CALL_FLAG_ALLOW_ECMATOECMA) { + DUK_DD(DUK_DDPRINT("avoid native call, use existing executor")); + DUK_STATS_INC(thr->heap, stats_call_ecmatoecma); + DUK_ASSERT((act->flags & DUK_ACT_FLAG_PREVENT_YIELD) == 0); + DUK_REFZERO_CHECK_FAST(thr); + DUK_ASSERT(thr->ptr_curr_pc == NULL); + thr->heap->call_recursion_depth--; /* No recursion increase for this case. */ + return 1; /* 1=reuse executor */ + } + DUK_ASSERT(use_tailcall == 0); + + /* duk_hthread_activation_unwind_norz() will decrease this on unwind */ + DUK_ASSERT((act->flags & DUK_ACT_FLAG_PREVENT_YIELD) == 0); + act->flags |= DUK_ACT_FLAG_PREVENT_YIELD; + thr->callstack_preventcount++; + + /* [ ... func this | arg1 ... argN ] ('this' must precede new bottom) */ + + /* + * Bytecode executor call. + * + * Execute bytecode, handling any recursive function calls and + * thread resumptions. Returns when execution would return from + * the entry level activation. When the executor returns, a + * single return value is left on the stack top. + * + * The only possible longjmp() is an error (DUK_LJ_TYPE_THROW), + * other types are handled internally by the executor. + */ + + /* thr->ptr_curr_pc is set by bytecode executor early on entry */ + DUK_ASSERT(thr->ptr_curr_pc == NULL); + DUK_DDD(DUK_DDDPRINT("entering bytecode execution")); + duk_js_execute_bytecode(thr); + DUK_DDD(DUK_DDDPRINT("returned from bytecode execution")); + } else { + /* + * Native call. + */ + + DUK_ASSERT(func == NULL || ((duk_hnatfunc *) func)->func != NULL); + DUK_ASSERT(use_tailcall == 0); + + /* [ ... func this | arg1 ... argN ] ('this' must precede new bottom) */ + + /* duk_hthread_activation_unwind_norz() will decrease this on unwind */ + DUK_ASSERT((act->flags & DUK_ACT_FLAG_PREVENT_YIELD) == 0); + act->flags |= DUK_ACT_FLAG_PREVENT_YIELD; + thr->callstack_preventcount++; + + /* For native calls must be NULL so we don't sync back */ + DUK_ASSERT(thr->ptr_curr_pc == NULL); + + /* XXX: native funcptr could come out of call setup. */ + if (func) { + rc = ((duk_hnatfunc *) func)->func(thr); + } else { + duk_tval *tv_func; + duk_c_function funcptr; + + tv_func = &act->tv_func; + DUK_ASSERT(DUK_TVAL_IS_LIGHTFUNC(tv_func)); + funcptr = DUK_TVAL_GET_LIGHTFUNC_FUNCPTR(tv_func); + rc = funcptr(thr); + } + + /* Automatic error throwing, retval check. */ + + if (rc == 0) { + DUK_ASSERT(thr->valstack < thr->valstack_end); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); + thr->valstack_top++; + } else if (rc == 1) { + ; + } else if (rc < 0) { + duk_error_throw_from_negative_rc(thr, rc); + DUK_WO_NORETURN(return 0;); + } else { + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_CFUNC_RC); + DUK_WO_NORETURN(return 0;); + } + } + DUK_ASSERT(thr->ptr_curr_pc == NULL); + DUK_ASSERT(use_tailcall == 0); + + /* + * Constructor call post processing. + */ + +#if defined(DUK_USE_ES6_PROXY) + if (call_flags & (DUK_CALL_FLAG_CONSTRUCT | DUK_CALL_FLAG_CONSTRUCT_PROXY)) { + duk_call_construct_postprocess(thr, call_flags & DUK_CALL_FLAG_CONSTRUCT_PROXY); + } +#else + if (call_flags & DUK_CALL_FLAG_CONSTRUCT) { + duk_call_construct_postprocess(thr, 0); + } +#endif + + /* + * Unwind, restore valstack bottom and other book-keeping. + */ + + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_curr->parent == entry_act); + DUK_ASSERT(thr->callstack_top == entry_callstack_top + 1); + duk_hthread_activation_unwind_norz(thr); + DUK_ASSERT(thr->callstack_curr == entry_act); + DUK_ASSERT(thr->callstack_top == entry_callstack_top); + + thr->valstack_bottom = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + entry_valstack_bottom_byteoff); + /* keep current valstack_top */ + DUK_ASSERT(thr->valstack_bottom >= thr->valstack); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + DUK_ASSERT(thr->valstack_top - thr->valstack_bottom >= idx_func + 1); + + /* Return value handling. */ + + /* [ ... func this (crud) retval ] */ + + { + duk_tval *tv_ret; + duk_tval *tv_funret; + + tv_ret = thr->valstack_bottom + idx_func; + tv_funret = thr->valstack_top - 1; +#if defined(DUK_USE_FASTINT) + /* Explicit check for fastint downgrade. */ + DUK_TVAL_CHKFAST_INPLACE_FAST(tv_funret); +#endif + DUK_TVAL_SET_TVAL_UPDREF(thr, tv_ret, tv_funret); /* side effects */ + } + + duk_set_top_unsafe(thr, idx_func + 1); + + /* [ ... retval ] */ + + /* Restore caller's value stack reserve (cannot fail). */ + DUK_ASSERT((duk_uint8_t *) thr->valstack + entry_valstack_end_byteoff >= (duk_uint8_t *) thr->valstack_top); + DUK_ASSERT((duk_uint8_t *) thr->valstack + entry_valstack_end_byteoff <= (duk_uint8_t *) thr->valstack_alloc_end); + thr->valstack_end = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + entry_valstack_end_byteoff); + + /* XXX: Trial value stack shrink would be OK here, but we'd need + * to prevent side effects of the potential realloc. + */ + + /* Restore entry thread executor curr_pc stack frame pointer. */ + thr->ptr_curr_pc = entry_ptr_curr_pc; + + DUK_HEAP_SWITCH_THREAD(thr->heap, entry_curr_thread); /* may be NULL */ + thr->state = (duk_uint8_t) entry_thread_state; + + /* Disabled assert: triggered with some torture tests. */ +#if 0 + DUK_ASSERT((thr->state == DUK_HTHREAD_STATE_INACTIVE && thr->heap->curr_thread == NULL) || /* first call */ + (thr->state == DUK_HTHREAD_STATE_INACTIVE && thr->heap->curr_thread != NULL) || /* other call */ + (thr->state == DUK_HTHREAD_STATE_RUNNING && thr->heap->curr_thread == thr)); /* current thread */ +#endif + + thr->heap->call_recursion_depth = entry_call_recursion_depth; + + /* If the debugger is active we need to force an interrupt so that + * debugger breakpoints are rechecked. This is important for function + * calls caused by side effects (e.g. when doing a DUK_OP_GETPROP), see + * GH-303. Only needed for success path, error path always causes a + * breakpoint recheck in the executor. It would be enough to set this + * only when returning to an ECMAScript activation, but setting the flag + * on every return should have no ill effect. + */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (duk_debug_is_attached(thr->heap)) { + DUK_DD(DUK_DDPRINT("returning with debugger enabled, force interrupt")); + DUK_ASSERT(thr->interrupt_counter <= thr->interrupt_init); + thr->interrupt_init -= thr->interrupt_counter; + thr->interrupt_counter = 0; + thr->heap->dbg_force_restart = 1; + } +#endif + +#if defined(DUK_USE_INTERRUPT_COUNTER) && defined(DUK_USE_DEBUG) + duk__interrupt_fixup(thr, entry_curr_thread); +#endif + + /* Restored by success path. */ + DUK_ASSERT(thr->heap->call_recursion_depth == entry_call_recursion_depth); + DUK_ASSERT(thr->ptr_curr_pc == entry_ptr_curr_pc); + DUK_ASSERT_LJSTATE_UNSET(thr->heap); + + DUK_REFZERO_CHECK_FAST(thr); + + return 0; /* 0=call handled inline */ +} + +DUK_INTERNAL duk_int_t duk_handle_call_unprotected_nargs(duk_hthread *thr, + duk_idx_t nargs, + duk_small_uint_t call_flags) { + duk_idx_t idx_func; + DUK_ASSERT(duk_get_top(thr) >= nargs + 2); + idx_func = duk_get_top(thr) - (nargs + 2); + DUK_ASSERT(idx_func >= 0); + return duk_handle_call_unprotected(thr, idx_func, call_flags); +} + +DUK_INTERNAL duk_int_t duk_handle_call_unprotected(duk_hthread *thr, + duk_idx_t idx_func, + duk_small_uint_t call_flags) { + DUK_ASSERT(duk_is_valid_index(thr, idx_func)); + DUK_ASSERT(idx_func >= 0); + return duk__handle_call_raw(thr, idx_func, call_flags); +} + +/* + * duk_handle_safe_call(): make a "C protected call" within the + * current activation. + * + * The allowed thread states for making a call are the same as for + * duk_handle_call_protected(). + * + * Even though this call is protected, errors are thrown for insane arguments + * and may result in a fatal error unless there's another protected call which + * catches such errors. + * + * The error handling path should be error free, even for out-of-memory + * errors, to ensure safe sandboxing. (As of Duktape 2.2.0 this is not + * yet the case for environment closing which may run out of memory, see + * XXX notes below.) + */ + +DUK_LOCAL void duk__handle_safe_call_inner(duk_hthread *thr, + duk_safe_call_function func, + void *udata, +#if defined(DUK_USE_ASSERTIONS) + duk_size_t entry_valstack_bottom_byteoff, + duk_size_t entry_callstack_top, +#endif + duk_hthread *entry_curr_thread, + duk_uint_fast8_t entry_thread_state, + duk_idx_t idx_retbase, + duk_idx_t num_stack_rets) { + duk_ret_t rc; + + DUK_ASSERT(thr != NULL); + DUK_CTX_ASSERT_VALID(thr); + + /* + * Thread state check and book-keeping. + */ + + duk__call_thread_state_update(thr); + + /* + * Recursion limit check. + */ + + duk__call_c_recursion_limit_check(thr); + thr->heap->call_recursion_depth++; + + /* + * Make the C call. + */ + + rc = func(thr, udata); + + DUK_DDD(DUK_DDDPRINT("safe_call, func rc=%ld", (long) rc)); + + /* + * Valstack manipulation for results. + */ + + /* we're running inside the caller's activation, so no change in call/catch stack or valstack bottom */ + DUK_ASSERT(thr->callstack_top == entry_callstack_top); + DUK_ASSERT(thr->valstack_bottom >= thr->valstack); + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack) == entry_valstack_bottom_byteoff); + DUK_ASSERT(thr->valstack_top >= thr->valstack_bottom); + DUK_ASSERT(thr->valstack_end >= thr->valstack_top); + + if (DUK_UNLIKELY(rc < 0)) { + duk_error_throw_from_negative_rc(thr, rc); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(rc >= 0); + + duk__safe_call_adjust_valstack(thr, idx_retbase, num_stack_rets, rc); /* throws for insane rc */ + + DUK_HEAP_SWITCH_THREAD(thr->heap, entry_curr_thread); /* may be NULL */ + thr->state = (duk_uint8_t) entry_thread_state; +} + +DUK_LOCAL void duk__handle_safe_call_error(duk_hthread *thr, + duk_activation *entry_act, +#if defined(DUK_USE_ASSERTIONS) + duk_size_t entry_callstack_top, +#endif + duk_hthread *entry_curr_thread, + duk_uint_fast8_t entry_thread_state, + duk_idx_t idx_retbase, + duk_idx_t num_stack_rets, + duk_size_t entry_valstack_bottom_byteoff, + duk_jmpbuf *old_jmpbuf_ptr) { + DUK_ASSERT(thr != NULL); + DUK_CTX_ASSERT_VALID(thr); + + /* + * Error during call. The error value is at heap->lj.value1. + * + * The very first thing we do is restore the previous setjmp catcher. + * This means that any error in error handling will propagate outwards + * instead of causing a setjmp() re-entry above. + */ + + DUK_DDD(DUK_DDDPRINT("error caught during protected duk_handle_safe_call()")); + + /* Other longjmp types are handled by executor before propagating + * the error here. + */ + DUK_ASSERT(thr->heap->lj.type == DUK_LJ_TYPE_THROW); + DUK_ASSERT_LJSTATE_SET(thr->heap); + + /* Either pointer may be NULL (at entry), so don't assert. */ + thr->heap->lj.jmpbuf_ptr = old_jmpbuf_ptr; + + /* XXX: callstack unwind may now throw an error when closing + * scopes; this is a sandboxing issue, described in: + * https://github.com/svaarala/duktape/issues/476 + */ + /* XXX: "unwind to" primitive? */ + + DUK_ASSERT(thr->callstack_top >= entry_callstack_top); + while (thr->callstack_curr != entry_act) { + DUK_ASSERT(thr->callstack_curr != NULL); + duk_hthread_activation_unwind_norz(thr); + } + DUK_ASSERT(thr->callstack_top == entry_callstack_top); + + /* Switch active thread before any side effects to avoid a + * dangling curr_thread pointer. + */ + DUK_HEAP_SWITCH_THREAD(thr->heap, entry_curr_thread); /* may be NULL */ + thr->state = (duk_uint8_t) entry_thread_state; + + DUK_ASSERT(thr->heap->curr_thread == entry_curr_thread); + DUK_ASSERT(thr->state == entry_thread_state); + + /* Restore valstack bottom. */ + thr->valstack_bottom = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + entry_valstack_bottom_byteoff); + + /* [ ... | (crud) ] */ + + /* XXX: ensure space in valstack (now relies on internal reserve)? */ + duk_push_tval(thr, &thr->heap->lj.value1); + + /* [ ... | (crud) errobj ] */ + + DUK_ASSERT(duk_get_top(thr) >= 1); /* at least errobj must be on stack */ + + duk__safe_call_adjust_valstack(thr, idx_retbase, num_stack_rets, 1); /* 1 = num actual 'return values' */ + + /* [ ... | ] or [ ... | errobj (M * undefined)] where M = num_stack_rets - 1 */ + + /* Reset longjmp state. */ + thr->heap->lj.type = DUK_LJ_TYPE_UNKNOWN; + thr->heap->lj.iserror = 0; + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, &thr->heap->lj.value1); + DUK_TVAL_SET_UNDEFINED_UPDREF_NORZ(thr, &thr->heap->lj.value2); + + /* Error handling complete, remove side effect protections. Caller + * will process pending finalizers. + */ +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(thr->heap->error_not_allowed == 1); + thr->heap->error_not_allowed = 0; +#endif + DUK_ASSERT(thr->heap->pf_prevent_count > 0); + thr->heap->pf_prevent_count--; + DUK_DD(DUK_DDPRINT("safe call error handled, pf_prevent_count updated to %ld", (long) thr->heap->pf_prevent_count)); + + /* thr->ptr_curr_pc is restored by + * duk__handle_safe_call_shared_unwind() which is also used for + * success path. + */ +} + +DUK_LOCAL void duk__handle_safe_call_shared_unwind(duk_hthread *thr, + duk_idx_t idx_retbase, + duk_idx_t num_stack_rets, +#if defined(DUK_USE_ASSERTIONS) + duk_size_t entry_callstack_top, +#endif + duk_int_t entry_call_recursion_depth, + duk_hthread *entry_curr_thread, + duk_instr_t **entry_ptr_curr_pc) { + DUK_ASSERT(thr != NULL); + DUK_CTX_ASSERT_VALID(thr); + DUK_UNREF(idx_retbase); + DUK_UNREF(num_stack_rets); + DUK_UNREF(entry_curr_thread); + + DUK_ASSERT(thr->callstack_top == entry_callstack_top); + + /* Restore entry thread executor curr_pc stack frame pointer. + * XXX: would be enough to do in error path only, should nest + * cleanly in success path. + */ + thr->ptr_curr_pc = entry_ptr_curr_pc; + + thr->heap->call_recursion_depth = entry_call_recursion_depth; + + /* stack discipline consistency check */ + DUK_ASSERT(duk_get_top(thr) == idx_retbase + num_stack_rets); + + /* A debugger forced interrupt check is not needed here, as + * problematic safe calls are not caused by side effects. + */ + +#if defined(DUK_USE_INTERRUPT_COUNTER) && defined(DUK_USE_DEBUG) + duk__interrupt_fixup(thr, entry_curr_thread); +#endif +} + +DUK_INTERNAL duk_int_t duk_handle_safe_call(duk_hthread *thr, + duk_safe_call_function func, + void *udata, + duk_idx_t num_stack_args, + duk_idx_t num_stack_rets) { + duk_activation *entry_act; + duk_size_t entry_valstack_bottom_byteoff; +#if defined(DUK_USE_ASSERTIONS) + duk_size_t entry_valstack_end_byteoff; + duk_size_t entry_callstack_top; + duk_size_t entry_callstack_preventcount; +#endif + duk_int_t entry_call_recursion_depth; + duk_hthread *entry_curr_thread; + duk_uint_fast8_t entry_thread_state; + duk_instr_t **entry_ptr_curr_pc; + duk_jmpbuf *old_jmpbuf_ptr = NULL; + duk_jmpbuf our_jmpbuf; + duk_idx_t idx_retbase; + duk_int_t retval; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(duk_get_top(thr) >= num_stack_args); /* Caller ensures. */ + + DUK_STATS_INC(thr->heap, stats_safecall_all); + + /* Value stack reserve handling: safe call assumes caller has reserved + * space for nrets (assuming optimal unwind processing). Value stack + * reserve is not stored/restored as for normal calls because a safe + * call conceptually happens in the same activation. + */ + + /* Careful with indices like '-x'; if 'x' is zero, it refers to bottom */ + entry_act = thr->callstack_curr; + entry_valstack_bottom_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack); +#if defined(DUK_USE_ASSERTIONS) + entry_valstack_end_byteoff = (duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack); + entry_callstack_top = thr->callstack_top; + entry_callstack_preventcount = thr->callstack_preventcount; +#endif + entry_call_recursion_depth = thr->heap->call_recursion_depth; + entry_curr_thread = thr->heap->curr_thread; /* may be NULL if first call */ + entry_thread_state = thr->state; + entry_ptr_curr_pc = thr->ptr_curr_pc; /* may be NULL */ + idx_retbase = duk_get_top(thr) - num_stack_args; /* not a valid stack index if num_stack_args == 0 */ + DUK_ASSERT(idx_retbase >= 0); + + DUK_ASSERT((duk_idx_t) (thr->valstack_top - thr->valstack_bottom) >= num_stack_args); /* Caller ensures. */ + DUK_ASSERT((duk_idx_t) (thr->valstack_end - (thr->valstack_bottom + idx_retbase)) >= num_stack_rets); /* Caller ensures. */ + + /* Cannot portably debug print a function pointer, hence 'func' not printed! */ + DUK_DD(DUK_DDPRINT("duk_handle_safe_call: thr=%p, num_stack_args=%ld, num_stack_rets=%ld, " + "valstack_top=%ld, idx_retbase=%ld, rec_depth=%ld/%ld, " + "entry_act=%p, entry_valstack_bottom_byteoff=%ld, entry_call_recursion_depth=%ld, " + "entry_curr_thread=%p, entry_thread_state=%ld", + (void *) thr, + (long) num_stack_args, + (long) num_stack_rets, + (long) duk_get_top(thr), + (long) idx_retbase, + (long) thr->heap->call_recursion_depth, + (long) thr->heap->call_recursion_limit, + (void *) entry_act, + (long) entry_valstack_bottom_byteoff, + (long) entry_call_recursion_depth, + (void *) entry_curr_thread, + (long) entry_thread_state)); + + /* Setjmp catchpoint setup. */ + old_jmpbuf_ptr = thr->heap->lj.jmpbuf_ptr; + thr->heap->lj.jmpbuf_ptr = &our_jmpbuf; + + /* Prevent yields for the duration of the safe call. This only + * matters if the executor makes safe calls to functions that + * yield, this doesn't currently happen. + */ + thr->callstack_preventcount++; + +#if defined(DUK_USE_CPP_EXCEPTIONS) + try { +#else + DUK_ASSERT(thr->heap->lj.jmpbuf_ptr == &our_jmpbuf); + if (DUK_SETJMP(our_jmpbuf.jb) == 0) { + /* Success path. */ +#endif + DUK_DDD(DUK_DDDPRINT("safe_call setjmp catchpoint setup complete")); + + duk__handle_safe_call_inner(thr, + func, + udata, +#if defined(DUK_USE_ASSERTIONS) + entry_valstack_bottom_byteoff, + entry_callstack_top, +#endif + entry_curr_thread, + entry_thread_state, + idx_retbase, + num_stack_rets); + + DUK_STATS_INC(thr->heap, stats_safecall_nothrow); + + /* Either pointer may be NULL (at entry), so don't assert */ + thr->heap->lj.jmpbuf_ptr = old_jmpbuf_ptr; + + /* If calls happen inside the safe call, these are restored by + * whatever calls are made. Reserve cannot decrease. + */ + DUK_ASSERT(thr->callstack_curr == entry_act); + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack) >= entry_valstack_end_byteoff); + + retval = DUK_EXEC_SUCCESS; +#if defined(DUK_USE_CPP_EXCEPTIONS) + } catch (duk_internal_exception &exc) { + DUK_UNREF(exc); +#else + } else { + /* Error path. */ +#endif + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack) >= entry_valstack_end_byteoff); + + DUK_STATS_INC(thr->heap, stats_safecall_throw); + + duk__handle_safe_call_error(thr, + entry_act, +#if defined(DUK_USE_ASSERTIONS) + entry_callstack_top, +#endif + entry_curr_thread, + entry_thread_state, + idx_retbase, + num_stack_rets, + entry_valstack_bottom_byteoff, + old_jmpbuf_ptr); + + retval = DUK_EXEC_ERROR; + } +#if defined(DUK_USE_CPP_EXCEPTIONS) + catch (duk_fatal_exception &exc) { + DUK_D(DUK_DPRINT("rethrow duk_fatal_exception")); + DUK_UNREF(exc); + throw; + } catch (std::exception &exc) { + const char *what = exc.what(); + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack) >= entry_valstack_end_byteoff); + DUK_STATS_INC(thr->heap, stats_safecall_throw); + if (!what) { + what = "unknown"; + } + DUK_D(DUK_DPRINT("unexpected c++ std::exception (perhaps thrown by user code)")); + try { + DUK_ERROR_FMT1(thr, DUK_ERR_TYPE_ERROR, "caught invalid c++ std::exception '%s' (perhaps thrown by user code)", what); + DUK_WO_NORETURN(return 0;); + } catch (duk_internal_exception exc) { + DUK_D(DUK_DPRINT("caught api error thrown from unexpected c++ std::exception")); + DUK_UNREF(exc); + duk__handle_safe_call_error(thr, + entry_act, +#if defined(DUK_USE_ASSERTIONS) + entry_callstack_top, +#endif + entry_curr_thread, + entry_thread_state, + idx_retbase, + num_stack_rets, + entry_valstack_bottom_byteoff, + old_jmpbuf_ptr); + retval = DUK_EXEC_ERROR; + } + } catch (...) { + DUK_D(DUK_DPRINT("unexpected c++ exception (perhaps thrown by user code)")); + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack) >= entry_valstack_end_byteoff); + DUK_STATS_INC(thr->heap, stats_safecall_throw); + try { + DUK_ERROR_TYPE(thr, "caught invalid c++ exception (perhaps thrown by user code)"); + DUK_WO_NORETURN(return 0;); + } catch (duk_internal_exception exc) { + DUK_D(DUK_DPRINT("caught api error thrown from unexpected c++ exception")); + DUK_UNREF(exc); + duk__handle_safe_call_error(thr, + entry_act, +#if defined(DUK_USE_ASSERTIONS) + entry_callstack_top, +#endif + entry_curr_thread, + entry_thread_state, + idx_retbase, + num_stack_rets, + entry_valstack_bottom_byteoff, + old_jmpbuf_ptr); + retval = DUK_EXEC_ERROR; + } + } +#endif + + DUK_ASSERT(thr->heap->lj.jmpbuf_ptr == old_jmpbuf_ptr); /* success/error path both do this */ + + DUK_ASSERT_LJSTATE_UNSET(thr->heap); + + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack) >= entry_valstack_end_byteoff); + duk__handle_safe_call_shared_unwind(thr, + idx_retbase, + num_stack_rets, +#if defined(DUK_USE_ASSERTIONS) + entry_callstack_top, +#endif + entry_call_recursion_depth, + entry_curr_thread, + entry_ptr_curr_pc); + + /* Restore preventcount. */ + thr->callstack_preventcount--; + DUK_ASSERT(thr->callstack_preventcount == entry_callstack_preventcount); + + /* Final asserts. */ + DUK_ASSERT(thr->callstack_curr == entry_act); + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_bottom - (duk_uint8_t *) thr->valstack) == entry_valstack_bottom_byteoff); + DUK_ASSERT((duk_size_t) ((duk_uint8_t *) thr->valstack_end - (duk_uint8_t *) thr->valstack) >= entry_valstack_end_byteoff); + DUK_ASSERT(thr->callstack_top == entry_callstack_top); + DUK_ASSERT(thr->heap->call_recursion_depth == entry_call_recursion_depth); + DUK_ASSERT(thr->heap->curr_thread == entry_curr_thread); + DUK_ASSERT(thr->state == entry_thread_state); + DUK_ASSERT(thr->ptr_curr_pc == entry_ptr_curr_pc); + DUK_ASSERT(duk_get_top(thr) == idx_retbase + num_stack_rets); + DUK_ASSERT_LJSTATE_UNSET(thr->heap); + + /* Pending side effects. */ + DUK_REFZERO_CHECK_FAST(thr); + + return retval; +} + +/* + * Property-based call (foo.noSuch()) error setup: replace target function + * on stack top with a hidden Symbol tagged non-callable wrapper object + * holding the error. The error gets thrown in call handling at the + * proper spot to follow ECMAScript semantics. + */ + +#if defined(DUK_USE_VERBOSE_ERRORS) +DUK_INTERNAL DUK_NOINLINE DUK_COLD void duk_call_setup_propcall_error(duk_hthread *thr, duk_tval *tv_base, duk_tval *tv_key) { + const char *str_targ, *str_key, *str_base; + duk_idx_t entry_top; + + entry_top = duk_get_top(thr); + + /* [ target ] */ + + /* Must stabilize pointers first. tv_targ is already on stack top. */ + duk_push_tval(thr, tv_base); + duk_push_tval(thr, tv_key); + + DUK_GC_TORTURE(thr->heap); + + duk_push_bare_object(thr); + + /* [ target base key {} ] */ + + /* We only push a wrapped error, replacing the call target (at + * idx_func) with the error to ensure side effects come out + * correctly: + * - Property read + * - Call argument evaluation + * - Callability check and error thrown + * + * A hidden Symbol on the wrapper object pushed above is used by + * call handling to figure out the error is to be thrown as is. + * It is CRITICAL that the hidden Symbol can never occur on a + * user visible object that may get thrown. + */ + +#if defined(DUK_USE_PARANOID_ERRORS) + str_targ = duk_get_type_name(thr, -4); + str_key = duk_get_type_name(thr, -2); + str_base = duk_get_type_name(thr, -3); + duk_push_error_object(thr, + DUK_ERR_TYPE_ERROR | DUK_ERRCODE_FLAG_NOBLAME_FILELINE, + "%s not callable (property %s of %s)", str_targ, str_key, str_base); + duk_xdef_prop_stridx(thr, -2, DUK_STRIDX_INT_TARGET, DUK_PROPDESC_FLAGS_NONE); /* Marker property, reuse _Target. */ + /* [ target base key { _Target: error } ] */ + duk_replace(thr, entry_top - 1); +#else + str_targ = duk_push_string_readable(thr, -4); + str_key = duk_push_string_readable(thr, -3); + str_base = duk_push_string_readable(thr, -5); + duk_push_error_object(thr, + DUK_ERR_TYPE_ERROR | DUK_ERRCODE_FLAG_NOBLAME_FILELINE, + "%s not callable (property %s of %s)", str_targ, str_key, str_base); + /* [ target base key {} str_targ str_key str_base error ] */ + duk_xdef_prop_stridx(thr, -5, DUK_STRIDX_INT_TARGET, DUK_PROPDESC_FLAGS_NONE); /* Marker property, reuse _Target. */ + /* [ target base key { _Target: error } str_targ str_key str_base ] */ + duk_swap(thr, -4, entry_top - 1); + /* [ { _Target: error } base key target str_targ str_key str_base ] */ +#endif + + /* [ { _Target: error } */ + duk_set_top(thr, entry_top); + + /* [ { _Target: error } */ + DUK_ASSERT(!duk_is_callable(thr, -1)); /* Critical so that call handling will throw the error. */ +} +#endif /* DUK_USE_VERBOSE_ERRORS */ + +/* automatic undefs */ +#undef DUK__AUGMENT_CALL_RELAX_COUNT +#undef DUK__CALL_HANDLING_REQUIRE_STACK +#line 1 "duk_js_compiler.c" +/* + * ECMAScript compiler. + * + * Parses an input string and generates a function template result. + * Compilation may happen in multiple contexts (global code, eval + * code, function code). + * + * The parser uses a traditional top-down recursive parsing for the + * statement level, and an operator precedence based top-down approach + * for the expression level. The attempt is to minimize the C stack + * depth. Bytecode is generated directly without an intermediate + * representation (tree), at the cost of needing two (and sometimes + * three) passes over each function. + * + * The top-down recursive parser functions are named "duk__parse_XXX". + * + * Recursion limits are in key functions to prevent arbitrary C recursion: + * function body parsing, statement parsing, and expression parsing. + * + * See doc/compiler.rst for discussion on the design. + * + * A few typing notes: + * + * - duk_regconst_t: signed, highest bit set (< 0) means constant, + * some call sites use -1 for "none" (equivalent to constant 0x7fffffff) + * - PC values: duk_int_t, negative values used as markers + */ + +/* #include duk_internal.h -> already included */ + +/* If highest bit of a register number is set, it refers to a constant instead. + * When interpreted as a signed value, this means const values are always + * negative (when interpreted as two's complement). For example DUK__ISREG_TEMP() + * uses this approach to avoid an explicit DUK__ISREG() check (the condition is + * logically "'x' is a register AND 'x' >= temp_first"). + */ +#define DUK__CONST_MARKER DUK_REGCONST_CONST_MARKER +#define DUK__REMOVECONST(x) ((x) & ~DUK__CONST_MARKER) +#define DUK__ISREG(x) ((x) >= 0) +#define DUK__ISCONST(x) ((x) < 0) +#define DUK__ISREG_TEMP(comp_ctx,x) ((duk_int32_t) (x) >= (duk_int32_t) ((comp_ctx)->curr_func.temp_first)) /* Check for x >= temp_first && x >= 0 by comparing as signed. */ +#define DUK__ISREG_NOTTEMP(comp_ctx,x) ((duk_uint32_t) (x) < (duk_uint32_t) ((comp_ctx)->curr_func.temp_first)) /* Check for x >= 0 && x < temp_first by interpreting as unsigned. */ +#define DUK__GETTEMP(comp_ctx) ((comp_ctx)->curr_func.temp_next) +#define DUK__SETTEMP(comp_ctx,x) ((comp_ctx)->curr_func.temp_next = (x)) /* dangerous: must only lower (temp_max not updated) */ +#define DUK__SETTEMP_CHECKMAX(comp_ctx,x) duk__settemp_checkmax((comp_ctx),(x)) +#define DUK__ALLOCTEMP(comp_ctx) duk__alloctemp((comp_ctx)) +#define DUK__ALLOCTEMPS(comp_ctx,count) duk__alloctemps((comp_ctx),(count)) + +/* Init value set size for array and object literals. */ +#define DUK__MAX_ARRAY_INIT_VALUES 20 +#define DUK__MAX_OBJECT_INIT_PAIRS 10 + +/* XXX: hack, remove when const lookup is not O(n) */ +#define DUK__GETCONST_MAX_CONSTS_CHECK 256 + +/* These limits are based on bytecode limits. Max temps is limited + * by duk_hcompfunc nargs/nregs fields being 16 bits. + */ +#define DUK__MAX_CONSTS DUK_BC_BC_MAX +#define DUK__MAX_FUNCS DUK_BC_BC_MAX +#define DUK__MAX_TEMPS 0xffffL + +/* Initial bytecode size allocation. */ +#if defined(DUK_USE_PREFER_SIZE) +#define DUK__BC_INITIAL_INSTS 16 +#else +#define DUK__BC_INITIAL_INSTS 256 +#endif + +#define DUK__RECURSION_INCREASE(comp_ctx,thr) do { \ + DUK_DDD(DUK_DDDPRINT("RECURSION INCREASE: %s:%ld", (const char *) DUK_FILE_MACRO, (long) DUK_LINE_MACRO)); \ + duk__comp_recursion_increase((comp_ctx)); \ + } while (0) + +#define DUK__RECURSION_DECREASE(comp_ctx,thr) do { \ + DUK_DDD(DUK_DDDPRINT("RECURSION DECREASE: %s:%ld", (const char *) DUK_FILE_MACRO, (long) DUK_LINE_MACRO)); \ + duk__comp_recursion_decrease((comp_ctx)); \ + } while (0) + +/* Value stack slot limits: these are quite approximate right now, and + * because they overlap in control flow, some could be eliminated. + */ +#define DUK__COMPILE_ENTRY_SLOTS 8 +#define DUK__FUNCTION_INIT_REQUIRE_SLOTS 16 +#define DUK__FUNCTION_BODY_REQUIRE_SLOTS 16 +#define DUK__PARSE_STATEMENTS_SLOTS 16 +#define DUK__PARSE_EXPR_SLOTS 16 + +/* Temporary structure used to pass a stack allocated region through + * duk_safe_call(). + */ +typedef struct { + duk_small_uint_t flags; + duk_compiler_ctx comp_ctx_alloc; + duk_lexer_point lex_pt_alloc; +} duk__compiler_stkstate; + +/* + * Prototypes + */ + +/* lexing */ +DUK_LOCAL_DECL void duk__advance_helper(duk_compiler_ctx *comp_ctx, duk_small_int_t expect); +DUK_LOCAL_DECL void duk__advance_expect(duk_compiler_ctx *comp_ctx, duk_small_int_t expect); +DUK_LOCAL_DECL void duk__advance(duk_compiler_ctx *ctx); + +/* function helpers */ +DUK_LOCAL_DECL void duk__init_func_valstack_slots(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL void duk__reset_func_for_pass2(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL void duk__init_varmap_and_prologue_for_pass2(duk_compiler_ctx *comp_ctx, duk_regconst_t *out_stmt_value_reg); +DUK_LOCAL_DECL void duk__convert_to_func_template(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL duk_int_t duk__cleanup_varmap(duk_compiler_ctx *comp_ctx); + +/* code emission */ +DUK_LOCAL_DECL duk_int_t duk__get_current_pc(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL duk_compiler_instr *duk__get_instr_ptr(duk_compiler_ctx *comp_ctx, duk_int_t pc); +DUK_LOCAL_DECL void duk__emit(duk_compiler_ctx *comp_ctx, duk_instr_t ins); +DUK_LOCAL_DECL void duk__emit_op_only(duk_compiler_ctx *comp_ctx, duk_small_uint_t op); +DUK_LOCAL_DECL void duk__emit_a_b_c(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a, duk_regconst_t b, duk_regconst_t c); +DUK_LOCAL_DECL void duk__emit_a_b(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a, duk_regconst_t b); +DUK_LOCAL_DECL void duk__emit_b_c(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t b, duk_regconst_t c); +#if 0 /* unused */ +DUK_LOCAL_DECL void duk__emit_a(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a); +DUK_LOCAL_DECL void duk__emit_b(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t b); +#endif +DUK_LOCAL_DECL void duk__emit_a_bc(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a, duk_regconst_t bc); +DUK_LOCAL_DECL void duk__emit_bc(duk_compiler_ctx *comp_ctx, duk_small_uint_t op, duk_regconst_t bc); +DUK_LOCAL_DECL void duk__emit_abc(duk_compiler_ctx *comp_ctx, duk_small_uint_t op, duk_regconst_t abc); +DUK_LOCAL_DECL void duk__emit_load_int32(duk_compiler_ctx *comp_ctx, duk_regconst_t reg, duk_int32_t val); +DUK_LOCAL_DECL void duk__emit_load_int32_noshuffle(duk_compiler_ctx *comp_ctx, duk_regconst_t reg, duk_int32_t val); +DUK_LOCAL_DECL void duk__emit_jump(duk_compiler_ctx *comp_ctx, duk_int_t target_pc); +DUK_LOCAL_DECL duk_int_t duk__emit_jump_empty(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL void duk__insert_jump_entry(duk_compiler_ctx *comp_ctx, duk_int_t jump_pc); +DUK_LOCAL_DECL void duk__patch_jump(duk_compiler_ctx *comp_ctx, duk_int_t jump_pc, duk_int_t target_pc); +DUK_LOCAL_DECL void duk__patch_jump_here(duk_compiler_ctx *comp_ctx, duk_int_t jump_pc); +DUK_LOCAL_DECL void duk__patch_trycatch(duk_compiler_ctx *comp_ctx, duk_int_t ldconst_pc, duk_int_t trycatch_pc, duk_regconst_t reg_catch, duk_regconst_t const_varname, duk_small_uint_t flags); +DUK_LOCAL_DECL void duk__emit_if_false_skip(duk_compiler_ctx *comp_ctx, duk_regconst_t regconst); +DUK_LOCAL_DECL void duk__emit_if_true_skip(duk_compiler_ctx *comp_ctx, duk_regconst_t regconst); +DUK_LOCAL_DECL void duk__emit_invalid(duk_compiler_ctx *comp_ctx); + +/* ivalue/ispec helpers */ +DUK_LOCAL_DECL void duk__ivalue_regconst(duk_ivalue *x, duk_regconst_t regconst); +DUK_LOCAL_DECL void duk__ivalue_plain_fromstack(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +DUK_LOCAL_DECL void duk__ivalue_var_fromstack(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +DUK_LOCAL_DECL void duk__ivalue_var_hstring(duk_compiler_ctx *comp_ctx, duk_ivalue *x, duk_hstring *h); +DUK_LOCAL_DECL void duk__copy_ispec(duk_compiler_ctx *comp_ctx, duk_ispec *src, duk_ispec *dst); +DUK_LOCAL_DECL void duk__copy_ivalue(duk_compiler_ctx *comp_ctx, duk_ivalue *src, duk_ivalue *dst); +DUK_LOCAL_DECL duk_regconst_t duk__alloctemps(duk_compiler_ctx *comp_ctx, duk_small_int_t num); +DUK_LOCAL_DECL duk_regconst_t duk__alloctemp(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL void duk__settemp_checkmax(duk_compiler_ctx *comp_ctx, duk_regconst_t temp_next); +DUK_LOCAL_DECL duk_regconst_t duk__getconst(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL +duk_regconst_t duk__ispec_toregconst_raw(duk_compiler_ctx *comp_ctx, + duk_ispec *x, + duk_regconst_t forced_reg, + duk_small_uint_t flags); +DUK_LOCAL_DECL void duk__ispec_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ispec *x, duk_regconst_t forced_reg); +DUK_LOCAL_DECL void duk__ivalue_toplain_raw(duk_compiler_ctx *comp_ctx, duk_ivalue *x, duk_regconst_t forced_reg); +DUK_LOCAL_DECL void duk__ivalue_toplain(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +DUK_LOCAL_DECL void duk__ivalue_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +DUK_LOCAL_DECL +duk_regconst_t duk__ivalue_toregconst_raw(duk_compiler_ctx *comp_ctx, + duk_ivalue *x, + duk_regconst_t forced_reg, + duk_small_uint_t flags); +DUK_LOCAL_DECL duk_regconst_t duk__ivalue_toreg(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +#if 0 /* unused */ +DUK_LOCAL_DECL duk_regconst_t duk__ivalue_totemp(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +#endif +DUK_LOCAL_DECL void duk__ivalue_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ivalue *x, duk_int_t forced_reg); +DUK_LOCAL_DECL duk_regconst_t duk__ivalue_toregconst(duk_compiler_ctx *comp_ctx, duk_ivalue *x); +DUK_LOCAL_DECL duk_regconst_t duk__ivalue_totempconst(duk_compiler_ctx *comp_ctx, duk_ivalue *x); + +/* identifier handling */ +DUK_LOCAL_DECL duk_regconst_t duk__lookup_active_register_binding(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL duk_bool_t duk__lookup_lhs(duk_compiler_ctx *ctx, duk_regconst_t *out_reg_varbind, duk_regconst_t *out_rc_varname); + +/* label handling */ +DUK_LOCAL_DECL void duk__add_label(duk_compiler_ctx *comp_ctx, duk_hstring *h_label, duk_int_t pc_label, duk_int_t label_id); +DUK_LOCAL_DECL void duk__update_label_flags(duk_compiler_ctx *comp_ctx, duk_int_t label_id, duk_small_uint_t flags); +DUK_LOCAL_DECL void duk__lookup_active_label(duk_compiler_ctx *comp_ctx, duk_hstring *h_label, duk_bool_t is_break, duk_int_t *out_label_id, duk_int_t *out_label_catch_depth, duk_int_t *out_label_pc, duk_bool_t *out_is_closest); +DUK_LOCAL_DECL void duk__reset_labels_to_length(duk_compiler_ctx *comp_ctx, duk_size_t len); + +/* top-down expression parser */ +DUK_LOCAL_DECL void duk__expr_nud(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__expr_led(duk_compiler_ctx *comp_ctx, duk_ivalue *left, duk_ivalue *res); +DUK_LOCAL_DECL duk_small_uint_t duk__expr_lbp(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL duk_bool_t duk__expr_is_empty(duk_compiler_ctx *comp_ctx); + +/* exprtop is the top level variant which resets nud/led counts */ +DUK_LOCAL_DECL void duk__expr(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +DUK_LOCAL_DECL void duk__exprtop(duk_compiler_ctx *ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); + +/* convenience helpers */ +#if 0 /* unused */ +DUK_LOCAL_DECL duk_regconst_t duk__expr_toreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#endif +#if 0 /* unused */ +DUK_LOCAL_DECL duk_regconst_t duk__expr_totemp(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#endif +DUK_LOCAL_DECL void duk__expr_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags, duk_regconst_t forced_reg); +DUK_LOCAL_DECL duk_regconst_t duk__expr_toregconst(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#if 0 /* unused */ +DUK_LOCAL_DECL duk_regconst_t duk__expr_totempconst(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#endif +DUK_LOCAL_DECL void duk__expr_toplain(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +DUK_LOCAL_DECL void duk__expr_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +DUK_LOCAL_DECL duk_regconst_t duk__exprtop_toreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#if 0 /* unused */ +DUK_LOCAL_DECL duk_regconst_t duk__exprtop_totemp(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#endif +DUK_LOCAL_DECL void duk__exprtop_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags, duk_regconst_t forced_reg); +DUK_LOCAL_DECL duk_regconst_t duk__exprtop_toregconst(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#if 0 /* unused */ +DUK_LOCAL_DECL void duk__exprtop_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags); +#endif + +/* expression parsing helpers */ +DUK_LOCAL_DECL duk_int_t duk__parse_arguments(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__nud_array_literal(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__nud_object_literal(duk_compiler_ctx *comp_ctx, duk_ivalue *res); + +/* statement parsing */ +DUK_LOCAL_DECL void duk__parse_var_decl(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t expr_flags, duk_regconst_t *out_reg_varbind, duk_regconst_t *out_rc_varname); +DUK_LOCAL_DECL void duk__parse_var_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t expr_flags); +DUK_LOCAL_DECL void duk__parse_for_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site); +DUK_LOCAL_DECL void duk__parse_switch_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site); +DUK_LOCAL_DECL void duk__parse_if_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__parse_do_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site); +DUK_LOCAL_DECL void duk__parse_while_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site); +DUK_LOCAL_DECL void duk__parse_break_or_continue_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__parse_return_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__parse_throw_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__parse_try_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__parse_with_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res); +DUK_LOCAL_DECL void duk__parse_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_bool_t allow_source_elem); +DUK_LOCAL_DECL duk_int_t duk__stmt_label_site(duk_compiler_ctx *comp_ctx, duk_int_t label_id); +DUK_LOCAL_DECL void duk__parse_stmts(duk_compiler_ctx *comp_ctx, duk_bool_t allow_source_elem, duk_bool_t expect_eof, duk_bool_t regexp_after); + +DUK_LOCAL_DECL void duk__parse_func_body(duk_compiler_ctx *comp_ctx, duk_bool_t expect_eof, duk_bool_t implicit_return_value, duk_bool_t regexp_after, duk_small_int_t expect_token); +DUK_LOCAL_DECL void duk__parse_func_formals(duk_compiler_ctx *comp_ctx); +DUK_LOCAL_DECL void duk__parse_func_like_raw(duk_compiler_ctx *comp_ctx, duk_small_uint_t flags); +DUK_LOCAL_DECL duk_int_t duk__parse_func_like_fnum(duk_compiler_ctx *comp_ctx, duk_small_uint_t flags); + +#define DUK__FUNC_FLAG_DECL (1 << 0) /* Parsing a function declaration. */ +#define DUK__FUNC_FLAG_GETSET (1 << 1) /* Parsing an object literal getter/setter. */ +#define DUK__FUNC_FLAG_METDEF (1 << 2) /* Parsing an object literal method definition shorthand. */ +#define DUK__FUNC_FLAG_PUSHNAME_PASS1 (1 << 3) /* Push function name when creating template (first pass only). */ +#define DUK__FUNC_FLAG_USE_PREVTOKEN (1 << 4) /* Use prev_token to start function parsing (workaround for object literal). */ + +/* + * Parser control values for tokens. The token table is ordered by the + * DUK_TOK_XXX defines. + * + * The binding powers are for lbp() use (i.e. for use in led() context). + * Binding powers are positive for typing convenience, and bits at the + * top should be reserved for flags. Binding power step must be higher + * than 1 so that binding power "lbp - 1" can be used for right associative + * operators. Currently a step of 2 is used (which frees one more bit for + * flags). + */ + +/* XXX: actually single step levels would work just fine, clean up */ + +/* binding power "levels" (see doc/compiler.rst) */ +#define DUK__BP_INVALID 0 /* always terminates led() */ +#define DUK__BP_EOF 2 +#define DUK__BP_CLOSING 4 /* token closes expression, e.g. ')', ']' */ +#define DUK__BP_FOR_EXPR DUK__BP_CLOSING /* bp to use when parsing a top level Expression */ +#define DUK__BP_COMMA 6 +#define DUK__BP_ASSIGNMENT 8 +#define DUK__BP_CONDITIONAL 10 +#define DUK__BP_LOR 12 +#define DUK__BP_LAND 14 +#define DUK__BP_BOR 16 +#define DUK__BP_BXOR 18 +#define DUK__BP_BAND 20 +#define DUK__BP_EQUALITY 22 +#define DUK__BP_RELATIONAL 24 +#define DUK__BP_SHIFT 26 +#define DUK__BP_ADDITIVE 28 +#define DUK__BP_MULTIPLICATIVE 30 +#define DUK__BP_EXPONENTIATION 32 +#define DUK__BP_POSTFIX 34 +#define DUK__BP_CALL 36 +#define DUK__BP_MEMBER 38 + +#define DUK__TOKEN_LBP_BP_MASK 0x1f +#define DUK__TOKEN_LBP_FLAG_NO_REGEXP (1 << 5) /* regexp literal must not follow this token */ +#define DUK__TOKEN_LBP_FLAG_TERMINATES (1 << 6) /* terminates expression; e.g. post-increment/-decrement */ +#define DUK__TOKEN_LBP_FLAG_UNUSED (1 << 7) /* unused */ + +#define DUK__TOKEN_LBP_GET_BP(x) ((duk_small_uint_t) (((x) & DUK__TOKEN_LBP_BP_MASK) * 2)) + +#define DUK__MK_LBP(bp) ((bp) >> 1) /* bp is assumed to be even */ +#define DUK__MK_LBP_FLAGS(bp,flags) (((bp) >> 1) | (flags)) + +DUK_LOCAL const duk_uint8_t duk__token_lbp[] = { + DUK__MK_LBP(DUK__BP_EOF), /* DUK_TOK_EOF */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_IDENTIFIER */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_BREAK */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_CASE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_CATCH */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_CONTINUE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_DEBUGGER */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_DEFAULT */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_DELETE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_DO */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_ELSE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_FINALLY */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_FOR */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_FUNCTION */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_IF */ + DUK__MK_LBP(DUK__BP_RELATIONAL), /* DUK_TOK_IN */ + DUK__MK_LBP(DUK__BP_RELATIONAL), /* DUK_TOK_INSTANCEOF */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_NEW */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_RETURN */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_SWITCH */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_THIS */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_THROW */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_TRY */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_TYPEOF */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_VAR */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_CONST */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_VOID */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_WHILE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_WITH */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_CLASS */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_ENUM */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_EXPORT */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_EXTENDS */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_IMPORT */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_SUPER */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_NULL */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_TRUE */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_FALSE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_GET */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_SET */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_IMPLEMENTS */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_INTERFACE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_LET */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_PACKAGE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_PRIVATE */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_PROTECTED */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_PUBLIC */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_STATIC */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_YIELD */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_LCURLY */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_RCURLY */ + DUK__MK_LBP(DUK__BP_MEMBER), /* DUK_TOK_LBRACKET */ + DUK__MK_LBP_FLAGS(DUK__BP_CLOSING, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_RBRACKET */ + DUK__MK_LBP(DUK__BP_CALL), /* DUK_TOK_LPAREN */ + DUK__MK_LBP_FLAGS(DUK__BP_CLOSING, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_RPAREN */ + DUK__MK_LBP(DUK__BP_MEMBER), /* DUK_TOK_PERIOD */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_SEMICOLON */ + DUK__MK_LBP(DUK__BP_COMMA), /* DUK_TOK_COMMA */ + DUK__MK_LBP(DUK__BP_RELATIONAL), /* DUK_TOK_LT */ + DUK__MK_LBP(DUK__BP_RELATIONAL), /* DUK_TOK_GT */ + DUK__MK_LBP(DUK__BP_RELATIONAL), /* DUK_TOK_LE */ + DUK__MK_LBP(DUK__BP_RELATIONAL), /* DUK_TOK_GE */ + DUK__MK_LBP(DUK__BP_EQUALITY), /* DUK_TOK_EQ */ + DUK__MK_LBP(DUK__BP_EQUALITY), /* DUK_TOK_NEQ */ + DUK__MK_LBP(DUK__BP_EQUALITY), /* DUK_TOK_SEQ */ + DUK__MK_LBP(DUK__BP_EQUALITY), /* DUK_TOK_SNEQ */ + DUK__MK_LBP(DUK__BP_ADDITIVE), /* DUK_TOK_ADD */ + DUK__MK_LBP(DUK__BP_ADDITIVE), /* DUK_TOK_SUB */ + DUK__MK_LBP(DUK__BP_MULTIPLICATIVE), /* DUK_TOK_MUL */ + DUK__MK_LBP(DUK__BP_MULTIPLICATIVE), /* DUK_TOK_DIV */ + DUK__MK_LBP(DUK__BP_MULTIPLICATIVE), /* DUK_TOK_MOD */ + DUK__MK_LBP(DUK__BP_EXPONENTIATION), /* DUK_TOK_EXP */ + DUK__MK_LBP_FLAGS(DUK__BP_POSTFIX, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_INCREMENT */ + DUK__MK_LBP_FLAGS(DUK__BP_POSTFIX, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_DECREMENT */ + DUK__MK_LBP(DUK__BP_SHIFT), /* DUK_TOK_ALSHIFT */ + DUK__MK_LBP(DUK__BP_SHIFT), /* DUK_TOK_ARSHIFT */ + DUK__MK_LBP(DUK__BP_SHIFT), /* DUK_TOK_RSHIFT */ + DUK__MK_LBP(DUK__BP_BAND), /* DUK_TOK_BAND */ + DUK__MK_LBP(DUK__BP_BOR), /* DUK_TOK_BOR */ + DUK__MK_LBP(DUK__BP_BXOR), /* DUK_TOK_BXOR */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_LNOT */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_BNOT */ + DUK__MK_LBP(DUK__BP_LAND), /* DUK_TOK_LAND */ + DUK__MK_LBP(DUK__BP_LOR), /* DUK_TOK_LOR */ + DUK__MK_LBP(DUK__BP_CONDITIONAL), /* DUK_TOK_QUESTION */ + DUK__MK_LBP(DUK__BP_INVALID), /* DUK_TOK_COLON */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_EQUALSIGN */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_ADD_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_SUB_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_MUL_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_DIV_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_MOD_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_EXP_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_ALSHIFT_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_ARSHIFT_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_RSHIFT_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_BAND_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_BOR_EQ */ + DUK__MK_LBP(DUK__BP_ASSIGNMENT), /* DUK_TOK_BXOR_EQ */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_NUMBER */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_STRING */ + DUK__MK_LBP_FLAGS(DUK__BP_INVALID, DUK__TOKEN_LBP_FLAG_NO_REGEXP), /* DUK_TOK_REGEXP */ +}; + +/* + * Misc helpers + */ + +DUK_LOCAL void duk__comp_recursion_increase(duk_compiler_ctx *comp_ctx) { + DUK_ASSERT(comp_ctx != NULL); + DUK_ASSERT(comp_ctx->recursion_depth >= 0); + if (comp_ctx->recursion_depth >= comp_ctx->recursion_limit) { + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_COMPILER_RECURSION_LIMIT); + DUK_WO_NORETURN(return;); + } + comp_ctx->recursion_depth++; +} + +DUK_LOCAL void duk__comp_recursion_decrease(duk_compiler_ctx *comp_ctx) { + DUK_ASSERT(comp_ctx != NULL); + DUK_ASSERT(comp_ctx->recursion_depth > 0); + comp_ctx->recursion_depth--; +} + +DUK_LOCAL duk_bool_t duk__hstring_is_eval_or_arguments(duk_compiler_ctx *comp_ctx, duk_hstring *h) { + DUK_UNREF(comp_ctx); + DUK_ASSERT(h != NULL); + return DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS(h); +} + +DUK_LOCAL duk_bool_t duk__hstring_is_eval_or_arguments_in_strict_mode(duk_compiler_ctx *comp_ctx, duk_hstring *h) { + DUK_ASSERT(h != NULL); + return (comp_ctx->curr_func.is_strict && + DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS(h)); +} + +/* + * Parser duk__advance() token eating functions + */ + +/* XXX: valstack handling is awkward. Add a valstack helper which + * avoids dup():ing; valstack_copy(src, dst)? + */ + +DUK_LOCAL void duk__advance_helper(duk_compiler_ctx *comp_ctx, duk_small_int_t expect) { + duk_hthread *thr = comp_ctx->thr; + duk_bool_t regexp; + + DUK_ASSERT_DISABLE(comp_ctx->curr_token.t >= 0); /* unsigned */ + DUK_ASSERT(comp_ctx->curr_token.t <= DUK_TOK_MAXVAL); /* MAXVAL is inclusive */ + + /* + * Use current token to decide whether a RegExp can follow. + * + * We can use either 't' or 't_nores'; the latter would not + * recognize keywords. Some keywords can be followed by a + * RegExp (e.g. "return"), so using 't' is better. This is + * not trivial, see doc/compiler.rst. + */ + + regexp = 1; + if (duk__token_lbp[comp_ctx->curr_token.t] & DUK__TOKEN_LBP_FLAG_NO_REGEXP) { + regexp = 0; + } + if (comp_ctx->curr_func.reject_regexp_in_adv) { + comp_ctx->curr_func.reject_regexp_in_adv = 0; + regexp = 0; + } + if (comp_ctx->curr_func.allow_regexp_in_adv) { + comp_ctx->curr_func.allow_regexp_in_adv = 0; + regexp = 1; + } + + if (expect >= 0 && comp_ctx->curr_token.t != (duk_small_uint_t) expect) { + DUK_D(DUK_DPRINT("parse error: expect=%ld, got=%ld", + (long) expect, (long) comp_ctx->curr_token.t)); + DUK_ERROR_SYNTAX(thr, DUK_STR_PARSE_ERROR); + DUK_WO_NORETURN(return;); + } + + /* make current token the previous; need to fiddle with valstack "backing store" */ + duk_memcpy(&comp_ctx->prev_token, &comp_ctx->curr_token, sizeof(duk_token)); + duk_copy(thr, comp_ctx->tok11_idx, comp_ctx->tok21_idx); + duk_copy(thr, comp_ctx->tok12_idx, comp_ctx->tok22_idx); + + /* parse new token */ + duk_lexer_parse_js_input_element(&comp_ctx->lex, + &comp_ctx->curr_token, + comp_ctx->curr_func.is_strict, + regexp); + + DUK_DDD(DUK_DDDPRINT("advance: curr: tok=%ld/%ld,%ld,term=%ld,%!T,%!T " + "prev: tok=%ld/%ld,%ld,term=%ld,%!T,%!T", + (long) comp_ctx->curr_token.t, + (long) comp_ctx->curr_token.t_nores, + (long) comp_ctx->curr_token.start_line, + (long) comp_ctx->curr_token.lineterm, + (duk_tval *) duk_get_tval(thr, comp_ctx->tok11_idx), + (duk_tval *) duk_get_tval(thr, comp_ctx->tok12_idx), + (long) comp_ctx->prev_token.t, + (long) comp_ctx->prev_token.t_nores, + (long) comp_ctx->prev_token.start_line, + (long) comp_ctx->prev_token.lineterm, + (duk_tval *) duk_get_tval(thr, comp_ctx->tok21_idx), + (duk_tval *) duk_get_tval(thr, comp_ctx->tok22_idx))); +} + +/* advance, expecting current token to be a specific token; parse next token in regexp context */ +DUK_LOCAL void duk__advance_expect(duk_compiler_ctx *comp_ctx, duk_small_int_t expect) { + duk__advance_helper(comp_ctx, expect); +} + +/* advance, whatever the current token is; parse next token in regexp context */ +DUK_LOCAL void duk__advance(duk_compiler_ctx *comp_ctx) { + duk__advance_helper(comp_ctx, -1); +} + +/* + * Helpers for duk_compiler_func. + */ + +/* init function state: inits valstack allocations */ +DUK_LOCAL void duk__init_func_valstack_slots(duk_compiler_ctx *comp_ctx) { + duk_compiler_func *func = &comp_ctx->curr_func; + duk_hthread *thr = comp_ctx->thr; + duk_idx_t entry_top; + + entry_top = duk_get_top(thr); + + duk_memzero(func, sizeof(*func)); /* intentional overlap with earlier memzero */ +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + func->h_name = NULL; + func->h_consts = NULL; + func->h_funcs = NULL; + func->h_decls = NULL; + func->h_labelnames = NULL; + func->h_labelinfos = NULL; + func->h_argnames = NULL; + func->h_varmap = NULL; +#endif + + duk_require_stack(thr, DUK__FUNCTION_INIT_REQUIRE_SLOTS); + + DUK_BW_INIT_PUSHBUF(thr, &func->bw_code, DUK__BC_INITIAL_INSTS * sizeof(duk_compiler_instr)); + /* code_idx = entry_top + 0 */ + + duk_push_bare_array(thr); + func->consts_idx = entry_top + 1; + func->h_consts = DUK_GET_HOBJECT_POSIDX(thr, entry_top + 1); + DUK_ASSERT(func->h_consts != NULL); + + duk_push_bare_array(thr); + func->funcs_idx = entry_top + 2; + func->h_funcs = DUK_GET_HOBJECT_POSIDX(thr, entry_top + 2); + DUK_ASSERT(func->h_funcs != NULL); + DUK_ASSERT(func->fnum_next == 0); + + duk_push_bare_array(thr); + func->decls_idx = entry_top + 3; + func->h_decls = DUK_GET_HOBJECT_POSIDX(thr, entry_top + 3); + DUK_ASSERT(func->h_decls != NULL); + + duk_push_bare_array(thr); + func->labelnames_idx = entry_top + 4; + func->h_labelnames = DUK_GET_HOBJECT_POSIDX(thr, entry_top + 4); + DUK_ASSERT(func->h_labelnames != NULL); + + duk_push_dynamic_buffer(thr, 0); + func->labelinfos_idx = entry_top + 5; + func->h_labelinfos = (duk_hbuffer_dynamic *) duk_known_hbuffer(thr, entry_top + 5); + DUK_ASSERT(func->h_labelinfos != NULL); + DUK_ASSERT(DUK_HBUFFER_HAS_DYNAMIC(func->h_labelinfos) && !DUK_HBUFFER_HAS_EXTERNAL(func->h_labelinfos)); + + duk_push_bare_array(thr); + func->argnames_idx = entry_top + 6; + func->h_argnames = DUK_GET_HOBJECT_POSIDX(thr, entry_top + 6); + DUK_ASSERT(func->h_argnames != NULL); + + duk_push_bare_object(thr); + func->varmap_idx = entry_top + 7; + func->h_varmap = DUK_GET_HOBJECT_POSIDX(thr, entry_top + 7); + DUK_ASSERT(func->h_varmap != NULL); +} + +/* reset function state (prepare for pass 2) */ +DUK_LOCAL void duk__reset_func_for_pass2(duk_compiler_ctx *comp_ctx) { + duk_compiler_func *func = &comp_ctx->curr_func; + duk_hthread *thr = comp_ctx->thr; + + /* reset bytecode buffer but keep current size; pass 2 will + * require same amount or more. + */ + DUK_BW_RESET_SIZE(thr, &func->bw_code); + + duk_set_length(thr, func->consts_idx, 0); + /* keep func->h_funcs; inner functions are not reparsed to avoid O(depth^2) parsing */ + func->fnum_next = 0; + /* duk_set_length(thr, func->funcs_idx, 0); */ + duk_set_length(thr, func->labelnames_idx, 0); + duk_hbuffer_reset(thr, func->h_labelinfos); + /* keep func->h_argnames; it is fixed for all passes */ + + /* truncated in case pass 3 needed */ + duk_push_bare_object(thr); + duk_replace(thr, func->varmap_idx); + func->h_varmap = DUK_GET_HOBJECT_POSIDX(thr, func->varmap_idx); + DUK_ASSERT(func->h_varmap != NULL); +} + +/* cleanup varmap from any null entries, compact it, etc; returns number + * of final entries after cleanup. + */ +DUK_LOCAL duk_int_t duk__cleanup_varmap(duk_compiler_ctx *comp_ctx) { + duk_hthread *thr = comp_ctx->thr; + duk_hobject *h_varmap; + duk_hstring *h_key; + duk_tval *tv; + duk_uint32_t i, e_next; + duk_int_t ret; + + /* [ ... varmap ] */ + + h_varmap = DUK_GET_HOBJECT_NEGIDX(thr, -1); + DUK_ASSERT(h_varmap != NULL); + + ret = 0; + e_next = DUK_HOBJECT_GET_ENEXT(h_varmap); + for (i = 0; i < e_next; i++) { + h_key = DUK_HOBJECT_E_GET_KEY(thr->heap, h_varmap, i); + if (!h_key) { + continue; + } + + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, h_varmap, i)); + + /* The entries can either be register numbers or 'null' values. + * Thus, no need to DECREF them and get side effects. DECREF'ing + * the keys (strings) can cause memory to be freed but no side + * effects as strings don't have finalizers. This is why we can + * rely on the object properties not changing from underneath us. + */ + + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, h_varmap, i); + if (!DUK_TVAL_IS_NUMBER(tv)) { + DUK_ASSERT(!DUK_TVAL_IS_HEAP_ALLOCATED(tv)); + DUK_HOBJECT_E_SET_KEY(thr->heap, h_varmap, i, NULL); + DUK_HSTRING_DECREF(thr, h_key); + /* when key is NULL, value is garbage so no need to set */ + } else { + ret++; + } + } + + duk_compact_m1(thr); + + return ret; +} + +/* Convert duk_compiler_func into a function template, leaving the result + * on top of stack. + */ +/* XXX: awkward and bloated asm -- use faster internal accesses */ +DUK_LOCAL void duk__convert_to_func_template(duk_compiler_ctx *comp_ctx) { + duk_compiler_func *func = &comp_ctx->curr_func; + duk_hthread *thr = comp_ctx->thr; + duk_hcompfunc *h_res; + duk_hbuffer_fixed *h_data; + duk_size_t consts_count; + duk_size_t funcs_count; + duk_size_t code_count; + duk_size_t code_size; + duk_size_t data_size; + duk_size_t i; + duk_tval *p_const; + duk_hobject **p_func; + duk_instr_t *p_instr; + duk_compiler_instr *q_instr; + duk_tval *tv; + duk_bool_t keep_varmap; + duk_bool_t keep_formals; +#if !defined(DUK_USE_DEBUGGER_SUPPORT) + duk_size_t formals_length; +#endif + + DUK_DDD(DUK_DDDPRINT("converting duk_compiler_func to function/template")); + + /* + * Push result object and init its flags + */ + + /* Valstack should suffice here, required on function valstack init */ + + h_res = duk_push_hcompfunc(thr); + DUK_ASSERT(h_res != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) h_res) == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, (duk_hobject *) h_res, NULL); /* Function templates are "bare objects". */ + + if (func->is_function) { + DUK_DDD(DUK_DDDPRINT("function -> set NEWENV")); + DUK_HOBJECT_SET_NEWENV((duk_hobject *) h_res); + + if (!func->is_arguments_shadowed) { + /* arguments object would be accessible; note that shadowing + * bindings are arguments or function declarations, neither + * of which are deletable, so this is safe. + */ + + if (func->id_access_arguments || func->may_direct_eval) { + DUK_DDD(DUK_DDDPRINT("function may access 'arguments' object directly or " + "indirectly -> set CREATEARGS")); + DUK_HOBJECT_SET_CREATEARGS((duk_hobject *) h_res); + } + } + } else if (func->is_eval && func->is_strict) { + DUK_DDD(DUK_DDDPRINT("strict eval code -> set NEWENV")); + DUK_HOBJECT_SET_NEWENV((duk_hobject *) h_res); + } else { + /* non-strict eval: env is caller's env or global env (direct vs. indirect call) + * global code: env is is global env + */ + DUK_DDD(DUK_DDDPRINT("non-strict eval code or global code -> no NEWENV")); + DUK_ASSERT(!DUK_HOBJECT_HAS_NEWENV((duk_hobject *) h_res)); + } + +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + if (func->is_function && func->is_namebinding && func->h_name != NULL) { + /* Object literal set/get functions have a name (property + * name) but must not have a lexical name binding, see + * test-bug-getset-func-name.js. + */ + DUK_DDD(DUK_DDDPRINT("function expression with a name -> set NAMEBINDING")); + DUK_HOBJECT_SET_NAMEBINDING((duk_hobject *) h_res); + } +#endif + + if (func->is_strict) { + DUK_DDD(DUK_DDDPRINT("function is strict -> set STRICT")); + DUK_HOBJECT_SET_STRICT((duk_hobject *) h_res); + } + + if (func->is_notail) { + DUK_DDD(DUK_DDDPRINT("function is notail -> set NOTAIL")); + DUK_HOBJECT_SET_NOTAIL((duk_hobject *) h_res); + } + + if (func->is_constructable) { + DUK_DDD(DUK_DDDPRINT("function is constructable -> set CONSTRUCTABLE")); + DUK_HOBJECT_SET_CONSTRUCTABLE((duk_hobject *) h_res); + } + + /* + * Build function fixed size 'data' buffer, which contains bytecode, + * constants, and inner function references. + * + * During the building phase 'data' is reachable but incomplete. + * Only incref's occur during building (no refzero or GC happens), + * so the building process is atomic. + */ + + consts_count = duk_hobject_get_length(thr, func->h_consts); + funcs_count = duk_hobject_get_length(thr, func->h_funcs) / 3; + code_count = DUK_BW_GET_SIZE(thr, &func->bw_code) / sizeof(duk_compiler_instr); + code_size = code_count * sizeof(duk_instr_t); + + data_size = consts_count * sizeof(duk_tval) + + funcs_count * sizeof(duk_hobject *) + + code_size; + + DUK_DDD(DUK_DDDPRINT("consts_count=%ld, funcs_count=%ld, code_size=%ld -> " + "data_size=%ld*%ld + %ld*%ld + %ld = %ld", + (long) consts_count, (long) funcs_count, (long) code_size, + (long) consts_count, (long) sizeof(duk_tval), + (long) funcs_count, (long) sizeof(duk_hobject *), + (long) code_size, (long) data_size)); + + duk_push_fixed_buffer_nozero(thr, data_size); + h_data = (duk_hbuffer_fixed *) (void *) duk_known_hbuffer(thr, -1); + + DUK_HCOMPFUNC_SET_DATA(thr->heap, h_res, (duk_hbuffer *) h_data); + DUK_HEAPHDR_INCREF(thr, h_data); + + p_const = (duk_tval *) (void *) DUK_HBUFFER_FIXED_GET_DATA_PTR(thr->heap, h_data); + for (i = 0; i < consts_count; i++) { + DUK_ASSERT(i <= DUK_UARRIDX_MAX); /* const limits */ + tv = duk_hobject_find_array_entry_tval_ptr(thr->heap, func->h_consts, (duk_uarridx_t) i); + DUK_ASSERT(tv != NULL); + DUK_TVAL_SET_TVAL(p_const, tv); + p_const++; + DUK_TVAL_INCREF(thr, tv); /* may be a string constant */ + + DUK_DDD(DUK_DDDPRINT("constant: %!T", (duk_tval *) tv)); + } + + p_func = (duk_hobject **) p_const; + DUK_HCOMPFUNC_SET_FUNCS(thr->heap, h_res, p_func); + for (i = 0; i < funcs_count; i++) { + duk_hobject *h; + DUK_ASSERT(i * 3 <= DUK_UARRIDX_MAX); /* func limits */ + tv = duk_hobject_find_array_entry_tval_ptr(thr->heap, func->h_funcs, (duk_uarridx_t) (i * 3)); + DUK_ASSERT(tv != NULL); + DUK_ASSERT(DUK_TVAL_IS_OBJECT(tv)); + h = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(h)); + *p_func++ = h; + DUK_HOBJECT_INCREF(thr, h); + + DUK_DDD(DUK_DDDPRINT("inner function: %p -> %!iO", + (void *) h, (duk_heaphdr *) h)); + } + + p_instr = (duk_instr_t *) p_func; + DUK_HCOMPFUNC_SET_BYTECODE(thr->heap, h_res, p_instr); + + /* copy bytecode instructions one at a time */ + q_instr = (duk_compiler_instr *) (void *) DUK_BW_GET_BASEPTR(thr, &func->bw_code); + for (i = 0; i < code_count; i++) { + p_instr[i] = q_instr[i].ins; + } + /* Note: 'q_instr' is still used below */ + + DUK_ASSERT((duk_uint8_t *) (p_instr + code_count) == DUK_HBUFFER_FIXED_GET_DATA_PTR(thr->heap, h_data) + data_size); + + duk_pop(thr); /* 'data' (and everything in it) is reachable through h_res now */ + + /* + * Init non-property result fields + * + * 'nregs' controls how large a register frame is allocated. + * + * 'nargs' controls how many formal arguments are written to registers: + * r0, ... r(nargs-1). The remaining registers are initialized to + * undefined. + */ + + DUK_ASSERT(func->temp_max >= 0); + h_res->nregs = (duk_uint16_t) func->temp_max; + h_res->nargs = (duk_uint16_t) duk_hobject_get_length(thr, func->h_argnames); + DUK_ASSERT(h_res->nregs >= h_res->nargs); /* pass2 allocation handles this */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + h_res->start_line = (duk_uint32_t) func->min_line; + h_res->end_line = (duk_uint32_t) func->max_line; +#endif + + /* + * Init object properties + * + * Properties should be added in decreasing order of access frequency. + * (Not very critical for function templates.) + */ + + DUK_DDD(DUK_DDDPRINT("init function properties")); + + /* [ ... res ] */ + + /* _Varmap: omitted if function is guaranteed not to do a slow path + * identifier access that might be caught by locally declared variables. + * The varmap can also be omitted if it turns out empty of actual + * register mappings after a cleanup. When debugging is enabled, we + * always need the varmap to be able to lookup variables at any point. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + DUK_DD(DUK_DDPRINT("keeping _Varmap because debugger support is enabled")); + keep_varmap = 1; +#else + if (func->id_access_slow_own || /* directly uses slow accesses that may match own variables */ + func->id_access_arguments || /* accesses 'arguments' directly */ + func->may_direct_eval || /* may indirectly slow access through a direct eval */ + funcs_count > 0) { /* has inner functions which may slow access (XXX: this can be optimized by looking at the inner functions) */ + DUK_DD(DUK_DDPRINT("keeping _Varmap because of direct eval, slow path access that may match local variables, or presence of inner functions")); + keep_varmap = 1; + } else { + DUK_DD(DUK_DDPRINT("dropping _Varmap")); + keep_varmap = 0; + } +#endif + + if (keep_varmap) { + duk_int_t num_used; + duk_dup(thr, func->varmap_idx); + num_used = duk__cleanup_varmap(comp_ctx); + DUK_DDD(DUK_DDDPRINT("cleaned up varmap: %!T (num_used=%ld)", + (duk_tval *) duk_get_tval(thr, -1), (long) num_used)); + + if (num_used > 0) { + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_VARMAP, DUK_PROPDESC_FLAGS_NONE); + } else { + DUK_DD(DUK_DDPRINT("varmap is empty after cleanup -> no need to add")); + duk_pop(thr); + } + } + + /* _Formals: omitted if function is guaranteed not to need a (non-strict) + * arguments object, and _Formals.length matches nargs exactly. + * + * Non-arrow functions can't see an outer function's 'argument' binding + * (because they have their own), but arrow functions can. When arrow + * functions are added, this condition would need to be added: + * inner_arrow_funcs_count > 0 inner arrow functions may access 'arguments' + */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + DUK_DD(DUK_DDPRINT("keeping _Formals because debugger support is enabled")); + keep_formals = 1; +#else + formals_length = duk_get_length(thr, func->argnames_idx); + if (formals_length != (duk_size_t) h_res->nargs) { + /* Nargs not enough for closure .length: keep _Formals regardless + * of its length. Shouldn't happen in practice at the moment. + */ + DUK_DD(DUK_DDPRINT("keeping _Formals because _Formals.length != nargs")); + keep_formals = 1; + } else if ((func->id_access_arguments || func->may_direct_eval) && + (formals_length > 0)) { + /* Direct eval (may access 'arguments') or accesses 'arguments' + * explicitly: keep _Formals unless it is zero length. + */ + DUK_DD(DUK_DDPRINT("keeping _Formals because of direct eval or explicit access to 'arguments', and _Formals.length != 0")); + keep_formals = 1; + } else { + DUK_DD(DUK_DDPRINT("omitting _Formals, nargs matches _Formals.length, so no properties added")); + keep_formals = 0; + } +#endif + + if (keep_formals) { + duk_dup(thr, func->argnames_idx); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_FORMALS, DUK_PROPDESC_FLAGS_NONE); + } + + /* name */ +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + if (func->h_name) { + duk_push_hstring(thr, func->h_name); + DUK_DD(DUK_DDPRINT("setting function template .name to %!T", duk_get_tval(thr, -1))); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_NONE); + } +#endif /* DUK_USE_FUNC_NAME_PROPERTY */ + + /* _Source */ +#if defined(DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY) + if (0) { + /* XXX: Currently function source code is not stored, as it is not + * required by the standard. Source code should not be stored by + * default (user should enable it explicitly), and the source should + * probably be compressed with a trivial text compressor; average + * compression of 20-30% is quite easy to achieve even with a trivial + * compressor (RLE + backwards lookup). + * + * Debugging needs source code to be useful: sometimes input code is + * not found in files as it may be generated and then eval()'d, given + * by dynamic C code, etc. + * + * Other issues: + * + * - Need tokenizer indices for start and end to substring + * - Always normalize function declaration part? + * - If we keep _Formals, only need to store body + */ + + /* + * For global or eval code this is straightforward. For functions + * created with the Function constructor we only get the source for + * the body and must manufacture the "function ..." part. + * + * For instance, for constructed functions (v8): + * + * > a = new Function("foo", "bar", "print(foo)"); + * [Function] + * > a.toString() + * 'function anonymous(foo,bar) {\nprint(foo)\n}' + * + * Similarly for e.g. getters (v8): + * + * > x = { get a(foo,bar) { print(foo); } } + * { a: [Getter] } + * > Object.getOwnPropertyDescriptor(x, 'a').get.toString() + * 'function a(foo,bar) { print(foo); }' + */ + +#if 0 + duk_push_literal(thr, "XXX"); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_SOURCE, DUK_PROPDESC_FLAGS_NONE); +#endif + } +#endif /* DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY */ + + /* _Pc2line */ +#if defined(DUK_USE_PC2LINE) + if (1) { + /* + * Size-optimized pc->line mapping. + */ + + DUK_ASSERT(code_count <= DUK_COMPILER_MAX_BYTECODE_LENGTH); + duk_hobject_pc2line_pack(thr, q_instr, (duk_uint_fast32_t) code_count); /* -> pushes fixed buffer */ + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_PC2LINE, DUK_PROPDESC_FLAGS_NONE); + + /* XXX: if assertions enabled, walk through all valid PCs + * and check line mapping. + */ + } +#endif /* DUK_USE_PC2LINE */ + + /* fileName */ +#if defined(DUK_USE_FUNC_FILENAME_PROPERTY) + if (comp_ctx->h_filename) { + /* + * Source filename (or equivalent), for identifying thrown errors. + */ + + duk_push_hstring(thr, comp_ctx->h_filename); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_FILE_NAME, DUK_PROPDESC_FLAGS_NONE); + } +#endif + + DUK_DD(DUK_DDPRINT("converted function: %!ixT", + (duk_tval *) duk_get_tval(thr, -1))); + + /* + * Compact the function template. + */ + + duk_compact_m1(thr); + + /* + * Debug dumping + */ + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + { + duk_hcompfunc *h; + duk_instr_t *p, *p_start, *p_end; + + h = (duk_hcompfunc *) duk_get_hobject(thr, -1); + p_start = (duk_instr_t *) DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, h); + p_end = (duk_instr_t *) DUK_HCOMPFUNC_GET_CODE_END(thr->heap, h); + + p = p_start; + while (p < p_end) { + DUK_DDD(DUK_DDDPRINT("BC %04ld: %!I ; 0x%08lx op=%ld (%!X) a=%ld b=%ld c=%ld", + (long) (p - p_start), + (duk_instr_t) (*p), + (unsigned long) (*p), + (long) DUK_DEC_OP(*p), + (long) DUK_DEC_OP(*p), + (long) DUK_DEC_A(*p), + (long) DUK_DEC_B(*p), + (long) DUK_DEC_C(*p))); + p++; + } + } +#endif +} + +/* + * Code emission helpers + * + * Some emission helpers understand the range of target and source reg/const + * values and automatically emit shuffling code if necessary. This is the + * case when the slot in question (A, B, C) is used in the standard way and + * for opcodes the emission helpers explicitly understand (like DUK_OP_MPUTOBJ). + * + * The standard way is that: + * - slot A is a target register + * - slot B is a source register/constant + * - slot C is a source register/constant + * + * If a slot is used in a non-standard way the caller must indicate this + * somehow. If a slot is used as a target instead of a source (or vice + * versa), this can be indicated with a flag to trigger proper shuffling + * (e.g. DUK__EMIT_FLAG_B_IS_TARGET). If the value in the slot is not + * register/const related at all, the caller must ensure that the raw value + * fits into the corresponding slot so as to not trigger shuffling. The + * caller must set a "no shuffle" flag to ensure compilation fails if + * shuffling were to be triggered because of an internal error. + * + * For slots B and C the raw slot size is 9 bits but one bit is reserved for + * the reg/const indicator. To use the full 9-bit range for a raw value, + * shuffling must be disabled with the DUK__EMIT_FLAG_NO_SHUFFLE_{B,C} flag. + * Shuffling is only done for A, B, and C slots, not the larger BC or ABC slots. + * + * There is call handling specific understanding in the A-B-C emitter to + * convert call setup and call instructions into indirect ones if necessary. + */ + +/* Code emission flags, passed in the 'opcode' field. Opcode + flags + * fit into 16 bits for now, so use duk_small_uint_t. + */ +#define DUK__EMIT_FLAG_NO_SHUFFLE_A (1 << 8) +#define DUK__EMIT_FLAG_NO_SHUFFLE_B (1 << 9) +#define DUK__EMIT_FLAG_NO_SHUFFLE_C (1 << 10) +#define DUK__EMIT_FLAG_A_IS_SOURCE (1 << 11) /* slot A is a source (default: target) */ +#define DUK__EMIT_FLAG_B_IS_TARGET (1 << 12) /* slot B is a target (default: source) */ +#define DUK__EMIT_FLAG_C_IS_TARGET (1 << 13) /* slot C is a target (default: source) */ +#define DUK__EMIT_FLAG_BC_REGCONST (1 << 14) /* slots B and C are reg/const */ +#define DUK__EMIT_FLAG_RESERVE_JUMPSLOT (1 << 15) /* reserve a jumpslot after instr before target spilling, used for NEXTENUM */ + +/* XXX: macro smaller than call? */ +DUK_LOCAL duk_int_t duk__get_current_pc(duk_compiler_ctx *comp_ctx) { + duk_compiler_func *func; + func = &comp_ctx->curr_func; + return (duk_int_t) (DUK_BW_GET_SIZE(comp_ctx->thr, &func->bw_code) / sizeof(duk_compiler_instr)); +} + +DUK_LOCAL duk_compiler_instr *duk__get_instr_ptr(duk_compiler_ctx *comp_ctx, duk_int_t pc) { + DUK_ASSERT(pc >= 0); + DUK_ASSERT((duk_size_t) pc < (duk_size_t) (DUK_BW_GET_SIZE(comp_ctx->thr, &comp_ctx->curr_func.bw_code) / sizeof(duk_compiler_instr))); + return ((duk_compiler_instr *) (void *) DUK_BW_GET_BASEPTR(comp_ctx->thr, &comp_ctx->curr_func.bw_code)) + pc; +} + +/* emit instruction; could return PC but that's not needed in the majority + * of cases. + */ +DUK_LOCAL void duk__emit(duk_compiler_ctx *comp_ctx, duk_instr_t ins) { +#if defined(DUK_USE_PC2LINE) + duk_int_t line; +#endif + duk_compiler_instr *instr; + + DUK_DDD(DUK_DDDPRINT("duk__emit: 0x%08lx curr_token.start_line=%ld prev_token.start_line=%ld pc=%ld --> %!I", + (unsigned long) ins, + (long) comp_ctx->curr_token.start_line, + (long) comp_ctx->prev_token.start_line, + (long) duk__get_current_pc(comp_ctx), + (duk_instr_t) ins)); + + instr = (duk_compiler_instr *) (void *) DUK_BW_ENSURE_GETPTR(comp_ctx->thr, &comp_ctx->curr_func.bw_code, sizeof(duk_compiler_instr)); + DUK_BW_ADD_PTR(comp_ctx->thr, &comp_ctx->curr_func.bw_code, sizeof(duk_compiler_instr)); + +#if defined(DUK_USE_PC2LINE) + /* The line number tracking is a bit inconsistent right now, which + * affects debugger accuracy. Mostly call sites emit opcodes when + * they have parsed a token (say a terminating semicolon) and called + * duk__advance(). In this case the line number of the previous + * token is the most accurate one (except in prologue where + * prev_token.start_line is 0). This is probably not 100% correct + * right now. + */ + /* approximation, close enough */ + line = comp_ctx->prev_token.start_line; + if (line == 0) { + line = comp_ctx->curr_token.start_line; + } +#endif + + instr->ins = ins; +#if defined(DUK_USE_PC2LINE) + instr->line = (duk_uint32_t) line; +#endif +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (line < comp_ctx->curr_func.min_line) { + comp_ctx->curr_func.min_line = line; + } + if (line > comp_ctx->curr_func.max_line) { + comp_ctx->curr_func.max_line = line; + } +#endif + + /* Limit checks for bytecode byte size and line number. */ + if (DUK_UNLIKELY(DUK_BW_GET_SIZE(comp_ctx->thr, &comp_ctx->curr_func.bw_code) > DUK_USE_ESBC_MAX_BYTES)) { + goto fail_bc_limit; + } +#if defined(DUK_USE_PC2LINE) && defined(DUK_USE_ESBC_LIMITS) +#if defined(DUK_USE_BUFLEN16) + /* Buffer length is bounded to 0xffff automatically, avoid compile warning. */ + if (DUK_UNLIKELY(line > DUK_USE_ESBC_MAX_LINENUMBER)) { + goto fail_bc_limit; + } +#else + if (DUK_UNLIKELY(line > DUK_USE_ESBC_MAX_LINENUMBER)) { + goto fail_bc_limit; + } +#endif +#endif + + return; + + fail_bc_limit: + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_BYTECODE_LIMIT); + DUK_WO_NORETURN(return;); +} + +/* Update function min/max line from current token. Needed to improve + * function line range information for debugging, so that e.g. opening + * curly brace is covered by line range even when no opcodes are emitted + * for the line containing the brace. + */ +DUK_LOCAL void duk__update_lineinfo_currtoken(duk_compiler_ctx *comp_ctx) { +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_int_t line; + + line = comp_ctx->curr_token.start_line; + if (line == 0) { + return; + } + if (line < comp_ctx->curr_func.min_line) { + comp_ctx->curr_func.min_line = line; + } + if (line > comp_ctx->curr_func.max_line) { + comp_ctx->curr_func.max_line = line; + } +#else + DUK_UNREF(comp_ctx); +#endif +} + +DUK_LOCAL void duk__emit_op_only(duk_compiler_ctx *comp_ctx, duk_small_uint_t op) { + duk__emit(comp_ctx, DUK_ENC_OP_ABC(op, 0)); +} + +/* Important main primitive. */ +DUK_LOCAL void duk__emit_a_b_c(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a, duk_regconst_t b, duk_regconst_t c) { + duk_instr_t ins = 0; + duk_int_t a_out = -1; + duk_int_t b_out = -1; + duk_int_t c_out = -1; + duk_int_t tmp; + duk_small_uint_t op = op_flags & 0xffU; + + DUK_DDD(DUK_DDDPRINT("emit: op_flags=%04lx, a=%ld, b=%ld, c=%ld", + (unsigned long) op_flags, (long) a, (long) b, (long) c)); + + /* We could rely on max temp/const checks: if they don't exceed BC + * limit, nothing here can either (just asserts would be enough). + * Currently we check for the limits, which provides additional + * protection against creating invalid bytecode due to compiler + * bugs. + */ + + DUK_ASSERT_DISABLE((op_flags & 0xff) >= DUK_BC_OP_MIN); /* unsigned */ + DUK_ASSERT((op_flags & 0xff) <= DUK_BC_OP_MAX); + DUK_ASSERT(DUK__ISREG(a)); + DUK_ASSERT(b != -1); /* Not 'none'. */ + DUK_ASSERT(c != -1); /* Not 'none'. */ + + /* Input shuffling happens before the actual operation, while output + * shuffling happens afterwards. Output shuffling decisions are still + * made at the same time to reduce branch clutter; output shuffle decisions + * are recorded into X_out variables. + */ + + /* Slot A: currently no support for reg/const. */ + +#if defined(DUK_USE_SHUFFLE_TORTURE) + if (a <= DUK_BC_A_MAX && (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_A)) { +#else + if (a <= DUK_BC_A_MAX) { +#endif + ; + } else if (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_A) { + DUK_D(DUK_DPRINT("out of regs: 'a' (reg) needs shuffling but shuffle prohibited, a: %ld", (long) a)); + goto error_outofregs; + } else if (a <= DUK_BC_BC_MAX) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle1; + if (op_flags & DUK__EMIT_FLAG_A_IS_SOURCE) { + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_LDREG, tmp, a)); + } else { + /* Output shuffle needed after main operation */ + a_out = a; + + /* The DUK_OP_CSVAR output shuffle assumes shuffle registers are + * consecutive. + */ + DUK_ASSERT((comp_ctx->curr_func.shuffle1 == 0 && comp_ctx->curr_func.shuffle2 == 0) || + (comp_ctx->curr_func.shuffle2 == comp_ctx->curr_func.shuffle1 + 1)); + if (op == DUK_OP_CSVAR) { + /* For CSVAR the limit is one smaller because output shuffle + * must be able to express 'a + 1' in BC. + */ + if (a + 1 > DUK_BC_BC_MAX) { + goto error_outofregs; + } + } + } + a = tmp; + } else { + DUK_D(DUK_DPRINT("out of regs: 'a' (reg) needs shuffling but does not fit into BC, a: %ld", (long) a)); + goto error_outofregs; + } + + /* Slot B: reg/const support, mapped to bit 0 of opcode. */ + + if ((b & DUK__CONST_MARKER) != 0) { + DUK_ASSERT((op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_B) == 0); + DUK_ASSERT((op_flags & DUK__EMIT_FLAG_B_IS_TARGET) == 0); + b = b & ~DUK__CONST_MARKER; +#if defined(DUK_USE_SHUFFLE_TORTURE) + if (0) { +#else + if (b <= 0xff) { +#endif + if (op_flags & DUK__EMIT_FLAG_BC_REGCONST) { + /* Opcode follows B/C reg/const convention. */ + DUK_ASSERT((op & 0x01) == 0); + ins |= DUK_ENC_OP_A_B_C(0x01, 0, 0, 0); /* const flag for B */ + } else { + DUK_D(DUK_DPRINT("B is const, opcode is not B/C reg/const: %x", op_flags)); + } + } else if (b <= DUK_BC_BC_MAX) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle2; + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_LDCONST, tmp, b)); + b = tmp; + } else { + DUK_D(DUK_DPRINT("out of regs: 'b' (const) needs shuffling but does not fit into BC, b: %ld", (long) b)); + goto error_outofregs; + } + } else { +#if defined(DUK_USE_SHUFFLE_TORTURE) + if (b <= 0xff && (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_B)) { +#else + if (b <= 0xff) { +#endif + ; + } else if (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_B) { + if (b > DUK_BC_B_MAX) { + /* Note: 0xff != DUK_BC_B_MAX */ + DUK_D(DUK_DPRINT("out of regs: 'b' (reg) needs shuffling but shuffle prohibited, b: %ld", (long) b)); + goto error_outofregs; + } + } else if (b <= DUK_BC_BC_MAX) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle2; + if (op_flags & DUK__EMIT_FLAG_B_IS_TARGET) { + /* Output shuffle needed after main operation */ + b_out = b; + } + if (!(op_flags & DUK__EMIT_FLAG_B_IS_TARGET)) { + if (op == DUK_OP_MPUTOBJ || op == DUK_OP_MPUTARR) { + /* Special handling for MPUTOBJ/MPUTARR shuffling. + * For each, slot B identifies the first register of a range + * of registers, so normal shuffling won't work. Instead, + * an indirect version of the opcode is used. + */ + DUK_ASSERT((op_flags & DUK__EMIT_FLAG_B_IS_TARGET) == 0); + duk__emit_load_int32_noshuffle(comp_ctx, tmp, b); + DUK_ASSERT(DUK_OP_MPUTOBJI == DUK_OP_MPUTOBJ + 1); + DUK_ASSERT(DUK_OP_MPUTARRI == DUK_OP_MPUTARR + 1); + op_flags++; /* indirect opcode follows direct */ + } else { + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_LDREG, tmp, b)); + } + } + b = tmp; + } else { + DUK_D(DUK_DPRINT("out of regs: 'b' (reg) needs shuffling but does not fit into BC, b: %ld", (long) b)); + goto error_outofregs; + } + } + + /* Slot C: reg/const support, mapped to bit 1 of opcode. */ + + if ((c & DUK__CONST_MARKER) != 0) { + DUK_ASSERT((op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_C) == 0); + DUK_ASSERT((op_flags & DUK__EMIT_FLAG_C_IS_TARGET) == 0); + c = c & ~DUK__CONST_MARKER; +#if defined(DUK_USE_SHUFFLE_TORTURE) + if (0) { +#else + if (c <= 0xff) { +#endif + if (op_flags & DUK__EMIT_FLAG_BC_REGCONST) { + /* Opcode follows B/C reg/const convention. */ + DUK_ASSERT((op & 0x02) == 0); + ins |= DUK_ENC_OP_A_B_C(0x02, 0, 0, 0); /* const flag for C */ + } else { + DUK_D(DUK_DPRINT("C is const, opcode is not B/C reg/const: %x", op_flags)); + } + } else if (c <= DUK_BC_BC_MAX) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle3; + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_LDCONST, tmp, c)); + c = tmp; + } else { + DUK_D(DUK_DPRINT("out of regs: 'c' (const) needs shuffling but does not fit into BC, c: %ld", (long) c)); + goto error_outofregs; + } + } else { +#if defined(DUK_USE_SHUFFLE_TORTURE) + if (c <= 0xff && (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_C)) { +#else + if (c <= 0xff) { +#endif + ; + } else if (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_C) { + if (c > DUK_BC_C_MAX) { + /* Note: 0xff != DUK_BC_C_MAX */ + DUK_D(DUK_DPRINT("out of regs: 'c' (reg) needs shuffling but shuffle prohibited, c: %ld", (long) c)); + goto error_outofregs; + } + } else if (c <= DUK_BC_BC_MAX) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle3; + if (op_flags & DUK__EMIT_FLAG_C_IS_TARGET) { + /* Output shuffle needed after main operation */ + c_out = c; + } else { + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_LDREG, tmp, c)); + } + c = tmp; + } else { + DUK_D(DUK_DPRINT("out of regs: 'c' (reg) needs shuffling but does not fit into BC, c: %ld", (long) c)); + goto error_outofregs; + } + } + + /* Main operation */ + + DUK_ASSERT(a >= DUK_BC_A_MIN); + DUK_ASSERT(a <= DUK_BC_A_MAX); + DUK_ASSERT(b >= DUK_BC_B_MIN); + DUK_ASSERT(b <= DUK_BC_B_MAX); + DUK_ASSERT(c >= DUK_BC_C_MIN); + DUK_ASSERT(c <= DUK_BC_C_MAX); + + ins |= DUK_ENC_OP_A_B_C(op_flags & 0xff, a, b, c); + duk__emit(comp_ctx, ins); + + /* NEXTENUM needs a jump slot right after the main instruction. + * When the JUMP is taken, output spilling is not needed so this + * workaround is possible. The jump slot PC is exceptionally + * plumbed through comp_ctx to minimize call sites. + */ + if (op_flags & DUK__EMIT_FLAG_RESERVE_JUMPSLOT) { + comp_ctx->emit_jumpslot_pc = duk__get_current_pc(comp_ctx); + duk__emit_abc(comp_ctx, DUK_OP_JUMP, 0); + } + + /* Output shuffling: only one output register is realistically possible. + * + * (Zero would normally be an OK marker value: if the target register + * was zero, it would never be shuffled. But with DUK_USE_SHUFFLE_TORTURE + * this is no longer true, so use -1 as a marker instead.) + */ + + if (a_out >= 0) { + DUK_ASSERT(b_out < 0); + DUK_ASSERT(c_out < 0); + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_STREG, a, a_out)); + + if (op == DUK_OP_CSVAR) { + /* Special handling for CSVAR shuffling. The variable lookup + * results in a pair in successive + * registers so use two shuffle registers and two output + * loads. (In practice this is dead code because temp/const + * limit is reached first.) + */ + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_STREG, a + 1, a_out + 1)); + } + } else if (b_out >= 0) { + DUK_ASSERT(a_out < 0); + DUK_ASSERT(c_out < 0); + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_STREG, b, b_out)); + } else if (c_out >= 0) { + DUK_ASSERT(b_out < 0); + DUK_ASSERT(c_out < 0); + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_STREG, c, c_out)); + } + + return; + + error_outofregs: + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_REG_LIMIT); + DUK_WO_NORETURN(return;); +} + +/* For many of the helpers below it'd be technically correct to add + * "no shuffle" flags for parameters passed in as zero. For example, + * duk__emit_a_b() should call duk__emit_a_b_c() with C set to 0, and + * DUK__EMIT_FLAG_NO_SHUFFLE_C added to op_flags. However, since the + * C value is 0, it'll never get shuffled so adding the flag is just + * unnecessary additional code. This is unfortunately not true for + * "shuffle torture" mode which needs special handling. + */ + +DUK_LOCAL void duk__emit_a_b(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a, duk_regconst_t b) { +#if defined(DUK_USE_SHUFFLE_TORTURE) + op_flags |= DUK__EMIT_FLAG_NO_SHUFFLE_C; +#endif + duk__emit_a_b_c(comp_ctx, op_flags, a, b, 0); +} + +DUK_LOCAL void duk__emit_b_c(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t b, duk_regconst_t c) { +#if defined(DUK_USE_SHUFFLE_TORTURE) + op_flags |= DUK__EMIT_FLAG_NO_SHUFFLE_A; +#endif + duk__emit_a_b_c(comp_ctx, op_flags, 0, b, c); +} + +#if 0 /* unused */ +DUK_LOCAL void duk__emit_a(duk_compiler_ctx *comp_ctx, int op_flags, int a) { +#if defined(DUK_USE_SHUFFLE_TORTURE) + op_flags |= DUK__EMIT_FLAG_NO_SHUFFLE_B | DUK__EMIT_FLAG_NO_SHUFFLE_C; +#endif + duk__emit_a_b_c(comp_ctx, op_flags, a, 0, 0); +} +#endif + +#if 0 /* unused */ +DUK_LOCAL void duk__emit_b(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t b) { +#if defined(DUK_USE_SHUFFLE_TORTURE) + op_flags |= DUK__EMIT_FLAG_NO_SHUFFLE_A | DUK__EMIT_FLAG_NO_SHUFFLE_C; +#endif + duk__emit_a_b_c(comp_ctx, op_flags, 0, b, 0); +} +#endif + +DUK_LOCAL void duk__emit_a_bc(duk_compiler_ctx *comp_ctx, duk_small_uint_t op_flags, duk_regconst_t a, duk_regconst_t bc) { + duk_instr_t ins; + duk_int_t tmp; + + /* allow caller to give a const number with the DUK__CONST_MARKER */ + DUK_ASSERT(bc != -1); /* Not 'none'. */ + bc = bc & (~DUK__CONST_MARKER); + + DUK_ASSERT_DISABLE((op_flags & 0xff) >= DUK_BC_OP_MIN); /* unsigned */ + DUK_ASSERT((op_flags & 0xff) <= DUK_BC_OP_MAX); + DUK_ASSERT(bc >= DUK_BC_BC_MIN); + DUK_ASSERT(bc <= DUK_BC_BC_MAX); + DUK_ASSERT((bc & DUK__CONST_MARKER) == 0); + + if (bc <= DUK_BC_BC_MAX) { + ; + } else { + /* No BC shuffling now. */ + goto error_outofregs; + } + +#if defined(DUK_USE_SHUFFLE_TORTURE) + if (a <= DUK_BC_A_MAX && (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_A)) { +#else + if (a <= DUK_BC_A_MAX) { +#endif + ins = DUK_ENC_OP_A_BC(op_flags & 0xff, a, bc); + duk__emit(comp_ctx, ins); + } else if (op_flags & DUK__EMIT_FLAG_NO_SHUFFLE_A) { + goto error_outofregs; + } else if ((op_flags & 0xf0U) == DUK_OP_CALL0) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle1; + duk__emit_load_int32_noshuffle(comp_ctx, tmp, a); + op_flags |= DUK_BC_CALL_FLAG_INDIRECT; + ins = DUK_ENC_OP_A_BC(op_flags & 0xff, tmp, bc); + duk__emit(comp_ctx, ins); + } else if (a <= DUK_BC_BC_MAX) { + comp_ctx->curr_func.needs_shuffle = 1; + tmp = comp_ctx->curr_func.shuffle1; + ins = DUK_ENC_OP_A_BC(op_flags & 0xff, tmp, bc); + if (op_flags & DUK__EMIT_FLAG_A_IS_SOURCE) { + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_LDREG, tmp, a)); + duk__emit(comp_ctx, ins); + } else { + duk__emit(comp_ctx, ins); + duk__emit(comp_ctx, DUK_ENC_OP_A_BC(DUK_OP_STREG, tmp, a)); + } + } else { + goto error_outofregs; + } + return; + + error_outofregs: + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_REG_LIMIT); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__emit_bc(duk_compiler_ctx *comp_ctx, duk_small_uint_t op, duk_regconst_t bc) { +#if defined(DUK_USE_SHUFFLE_TORTURE) + op |= DUK__EMIT_FLAG_NO_SHUFFLE_A; +#endif + duk__emit_a_bc(comp_ctx, op, 0, bc); +} + +DUK_LOCAL void duk__emit_abc(duk_compiler_ctx *comp_ctx, duk_small_uint_t op, duk_regconst_t abc) { + duk_instr_t ins; + + DUK_ASSERT_DISABLE(op >= DUK_BC_OP_MIN); /* unsigned */ + DUK_ASSERT(op <= DUK_BC_OP_MAX); + DUK_ASSERT_DISABLE(abc >= DUK_BC_ABC_MIN); /* unsigned */ + DUK_ASSERT(abc <= DUK_BC_ABC_MAX); + DUK_ASSERT((abc & DUK__CONST_MARKER) == 0); + DUK_ASSERT(abc != -1); /* Not 'none'. */ + + if (abc <= DUK_BC_ABC_MAX) { + ; + } else { + goto error_outofregs; + } + ins = DUK_ENC_OP_ABC(op, abc); + DUK_DDD(DUK_DDDPRINT("duk__emit_abc: 0x%08lx line=%ld pc=%ld op=%ld (%!X) abc=%ld (%!I)", + (unsigned long) ins, (long) comp_ctx->curr_token.start_line, + (long) duk__get_current_pc(comp_ctx), (long) op, (long) op, + (long) abc, (duk_instr_t) ins)); + duk__emit(comp_ctx, ins); + return; + + error_outofregs: + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_REG_LIMIT); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__emit_load_int32_raw(duk_compiler_ctx *comp_ctx, duk_regconst_t reg, duk_int32_t val, duk_small_uint_t op_flags) { + /* XXX: Shuffling support could be implemented here so that LDINT+LDINTX + * would only shuffle once (instead of twice). The current code works + * though, and has a smaller compiler footprint. + */ + + if ((val >= (duk_int32_t) DUK_BC_BC_MIN - (duk_int32_t) DUK_BC_LDINT_BIAS) && + (val <= (duk_int32_t) DUK_BC_BC_MAX - (duk_int32_t) DUK_BC_LDINT_BIAS)) { + DUK_DDD(DUK_DDDPRINT("emit LDINT to reg %ld for %ld", (long) reg, (long) val)); + duk__emit_a_bc(comp_ctx, DUK_OP_LDINT | op_flags, reg, (duk_regconst_t) (val + (duk_int32_t) DUK_BC_LDINT_BIAS)); + } else { + duk_int32_t hi = val >> DUK_BC_LDINTX_SHIFT; + duk_int32_t lo = val & ((((duk_int32_t) 1) << DUK_BC_LDINTX_SHIFT) - 1); + DUK_ASSERT(lo >= 0); + DUK_DDD(DUK_DDDPRINT("emit LDINT+LDINTX to reg %ld for %ld -> hi %ld, lo %ld", + (long) reg, (long) val, (long) hi, (long) lo)); + duk__emit_a_bc(comp_ctx, DUK_OP_LDINT | op_flags, reg, (duk_regconst_t) (hi + (duk_int32_t) DUK_BC_LDINT_BIAS)); + duk__emit_a_bc(comp_ctx, DUK_OP_LDINTX | op_flags, reg, (duk_regconst_t) lo); + } +} + +DUK_LOCAL void duk__emit_load_int32(duk_compiler_ctx *comp_ctx, duk_regconst_t reg, duk_int32_t val) { + duk__emit_load_int32_raw(comp_ctx, reg, val, 0 /*op_flags*/); +} + +#if defined(DUK_USE_SHUFFLE_TORTURE) +/* Used by duk__emit*() calls so that we don't shuffle the loadints that + * are needed to handle indirect opcodes. + */ +DUK_LOCAL void duk__emit_load_int32_noshuffle(duk_compiler_ctx *comp_ctx, duk_regconst_t reg, duk_int32_t val) { + duk__emit_load_int32_raw(comp_ctx, reg, val, DUK__EMIT_FLAG_NO_SHUFFLE_A /*op_flags*/); +} +#else +DUK_LOCAL void duk__emit_load_int32_noshuffle(duk_compiler_ctx *comp_ctx, duk_regconst_t reg, duk_int32_t val) { + /* When torture not enabled, can just use the same helper because + * 'reg' won't get spilled. + */ + DUK_ASSERT(reg <= DUK_BC_A_MAX); + duk__emit_load_int32(comp_ctx, reg, val); +} +#endif + +DUK_LOCAL void duk__emit_jump(duk_compiler_ctx *comp_ctx, duk_int_t target_pc) { + duk_int_t curr_pc; + duk_int_t offset; + + curr_pc = (duk_int_t) (DUK_BW_GET_SIZE(comp_ctx->thr, &comp_ctx->curr_func.bw_code) / sizeof(duk_compiler_instr)); + offset = (duk_int_t) target_pc - (duk_int_t) curr_pc - 1; + DUK_ASSERT(offset + DUK_BC_JUMP_BIAS >= DUK_BC_ABC_MIN); + DUK_ASSERT(offset + DUK_BC_JUMP_BIAS <= DUK_BC_ABC_MAX); + duk__emit_abc(comp_ctx, DUK_OP_JUMP, (duk_regconst_t) (offset + DUK_BC_JUMP_BIAS)); +} + +DUK_LOCAL duk_int_t duk__emit_jump_empty(duk_compiler_ctx *comp_ctx) { + duk_int_t ret; + + ret = duk__get_current_pc(comp_ctx); /* useful for patching jumps later */ + duk__emit_op_only(comp_ctx, DUK_OP_JUMP); + return ret; +} + +/* Insert an empty jump in the middle of code emitted earlier. This is + * currently needed for compiling for-in. + */ +DUK_LOCAL void duk__insert_jump_entry(duk_compiler_ctx *comp_ctx, duk_int_t jump_pc) { +#if defined(DUK_USE_PC2LINE) + duk_int_t line; +#endif + duk_compiler_instr *instr; + duk_size_t offset; + + DUK_ASSERT(jump_pc >= 0); + offset = (duk_size_t) jump_pc * sizeof(duk_compiler_instr); + instr = (duk_compiler_instr *) (void *) + DUK_BW_INSERT_ENSURE_AREA(comp_ctx->thr, + &comp_ctx->curr_func.bw_code, + offset, + sizeof(duk_compiler_instr)); + +#if defined(DUK_USE_PC2LINE) + line = comp_ctx->curr_token.start_line; /* approximation, close enough */ +#endif + instr->ins = DUK_ENC_OP_ABC(DUK_OP_JUMP, 0); +#if defined(DUK_USE_PC2LINE) + instr->line = (duk_uint32_t) line; +#endif + + DUK_BW_ADD_PTR(comp_ctx->thr, &comp_ctx->curr_func.bw_code, sizeof(duk_compiler_instr)); + if (DUK_UNLIKELY(DUK_BW_GET_SIZE(comp_ctx->thr, &comp_ctx->curr_func.bw_code) > DUK_USE_ESBC_MAX_BYTES)) { + goto fail_bc_limit; + } + return; + + fail_bc_limit: + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_BYTECODE_LIMIT); + DUK_WO_NORETURN(return;); +} + +/* Does not assume that jump_pc contains a DUK_OP_JUMP previously; this is intentional + * to allow e.g. an INVALID opcode be overwritten with a JUMP (label management uses this). + */ +DUK_LOCAL void duk__patch_jump(duk_compiler_ctx *comp_ctx, duk_int_t jump_pc, duk_int_t target_pc) { + duk_compiler_instr *instr; + duk_int_t offset; + + /* allow negative PCs, behave as a no-op */ + if (jump_pc < 0) { + DUK_DDD(DUK_DDDPRINT("duk__patch_jump(): nop call, jump_pc=%ld (<0), target_pc=%ld", + (long) jump_pc, (long) target_pc)); + return; + } + DUK_ASSERT(jump_pc >= 0); + + /* XXX: range assert */ + instr = duk__get_instr_ptr(comp_ctx, jump_pc); + DUK_ASSERT(instr != NULL); + + /* XXX: range assert */ + offset = target_pc - jump_pc - 1; + + instr->ins = DUK_ENC_OP_ABC(DUK_OP_JUMP, offset + DUK_BC_JUMP_BIAS); + DUK_DDD(DUK_DDDPRINT("duk__patch_jump(): jump_pc=%ld, target_pc=%ld, offset=%ld", + (long) jump_pc, (long) target_pc, (long) offset)); +} + +DUK_LOCAL void duk__patch_jump_here(duk_compiler_ctx *comp_ctx, duk_int_t jump_pc) { + duk__patch_jump(comp_ctx, jump_pc, duk__get_current_pc(comp_ctx)); +} + +DUK_LOCAL void duk__patch_trycatch(duk_compiler_ctx *comp_ctx, duk_int_t ldconst_pc, duk_int_t trycatch_pc, duk_regconst_t reg_catch, duk_regconst_t const_varname, duk_small_uint_t flags) { + duk_compiler_instr *instr; + + DUK_ASSERT(DUK__ISREG(reg_catch)); + + instr = duk__get_instr_ptr(comp_ctx, ldconst_pc); + DUK_ASSERT(DUK_DEC_OP(instr->ins) == DUK_OP_LDCONST); + DUK_ASSERT(instr != NULL); + if (const_varname & DUK__CONST_MARKER) { + /* Have a catch variable. */ + const_varname = const_varname & (~DUK__CONST_MARKER); + if (reg_catch > DUK_BC_BC_MAX || const_varname > DUK_BC_BC_MAX) { + /* Catch attempts to use out-of-range reg/const. Without this + * check Duktape 0.12.0 could generate invalid code which caused + * an assert failure on execution. This error is triggered e.g. + * for functions with a lot of constants and a try-catch statement. + * Shuffling or opcode semantics change is needed to fix the issue. + * See: test-bug-trycatch-many-constants.js. + */ + DUK_D(DUK_DPRINT("failed to patch trycatch: flags=%ld, reg_catch=%ld, const_varname=%ld (0x%08lx)", + (long) flags, (long) reg_catch, (long) const_varname, (long) const_varname)); + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_REG_LIMIT); + DUK_WO_NORETURN(return;); + } + instr->ins |= DUK_ENC_OP_A_BC(0, 0, const_varname); + } else { + /* No catch variable, e.g. a try-finally; replace LDCONST with + * NOP to avoid a bogus LDCONST. + */ + instr->ins = DUK_ENC_OP(DUK_OP_NOP); + } + + instr = duk__get_instr_ptr(comp_ctx, trycatch_pc); + DUK_ASSERT(instr != NULL); + DUK_ASSERT_DISABLE(flags >= DUK_BC_A_MIN); + DUK_ASSERT(flags <= DUK_BC_A_MAX); + instr->ins = DUK_ENC_OP_A_BC(DUK_OP_TRYCATCH, flags, reg_catch); +} + +DUK_LOCAL void duk__emit_if_false_skip(duk_compiler_ctx *comp_ctx, duk_regconst_t regconst) { + duk_small_uint_t op; + + op = DUK__ISREG(regconst) ? DUK_OP_IFFALSE_R : DUK_OP_IFFALSE_C; + duk__emit_bc(comp_ctx, op, regconst); /* helper will remove const flag */ +} + +DUK_LOCAL void duk__emit_if_true_skip(duk_compiler_ctx *comp_ctx, duk_regconst_t regconst) { + duk_small_uint_t op; + + op = DUK__ISREG(regconst) ? DUK_OP_IFTRUE_R : DUK_OP_IFTRUE_C; + duk__emit_bc(comp_ctx, op, regconst); /* helper will remove const flag */ +} + +DUK_LOCAL void duk__emit_invalid(duk_compiler_ctx *comp_ctx) { + duk__emit_op_only(comp_ctx, DUK_OP_INVALID); +} + +/* + * Peephole optimizer for finished bytecode. + * + * Does not remove opcodes; currently only straightens out unconditional + * jump chains which are generated by several control structures. + */ + +DUK_LOCAL void duk__peephole_optimize_bytecode(duk_compiler_ctx *comp_ctx) { + duk_compiler_instr *bc; + duk_small_uint_t iter; + duk_int_t i, n; + duk_int_t count_opt; + + bc = (duk_compiler_instr *) (void *) DUK_BW_GET_BASEPTR(comp_ctx->thr, &comp_ctx->curr_func.bw_code); +#if defined(DUK_USE_BUFLEN16) + /* No need to assert, buffer size maximum is 0xffff. */ +#else + DUK_ASSERT((duk_size_t) DUK_BW_GET_SIZE(comp_ctx->thr, &comp_ctx->curr_func.bw_code) / sizeof(duk_compiler_instr) <= (duk_size_t) DUK_INT_MAX); /* bytecode limits */ +#endif + n = (duk_int_t) (DUK_BW_GET_SIZE(comp_ctx->thr, &comp_ctx->curr_func.bw_code) / sizeof(duk_compiler_instr)); + + for (iter = 0; iter < DUK_COMPILER_PEEPHOLE_MAXITER; iter++) { + count_opt = 0; + + for (i = 0; i < n; i++) { + duk_instr_t ins; + duk_int_t target_pc1; + duk_int_t target_pc2; + + ins = bc[i].ins; + if (DUK_DEC_OP(ins) != DUK_OP_JUMP) { + continue; + } + + target_pc1 = i + 1 + (duk_int_t) DUK_DEC_ABC(ins) - (duk_int_t) DUK_BC_JUMP_BIAS; + DUK_DDD(DUK_DDDPRINT("consider jump at pc %ld; target_pc=%ld", (long) i, (long) target_pc1)); + DUK_ASSERT(target_pc1 >= 0); + DUK_ASSERT(target_pc1 < n); + + /* Note: if target_pc1 == i, we'll optimize a jump to itself. + * This does not need to be checked for explicitly; the case + * is rare and max iter breaks us out. + */ + + ins = bc[target_pc1].ins; + if (DUK_DEC_OP(ins) != DUK_OP_JUMP) { + continue; + } + + target_pc2 = target_pc1 + 1 + (duk_int_t) DUK_DEC_ABC(ins) - (duk_int_t) DUK_BC_JUMP_BIAS; + + DUK_DDD(DUK_DDDPRINT("optimizing jump at pc %ld; old target is %ld -> new target is %ld", + (long) i, (long) target_pc1, (long) target_pc2)); + + bc[i].ins = DUK_ENC_OP_ABC(DUK_OP_JUMP, target_pc2 - (i + 1) + DUK_BC_JUMP_BIAS); + + count_opt++; + } + + DUK_DD(DUK_DDPRINT("optimized %ld jumps on peephole round %ld", (long) count_opt, (long) (iter + 1))); + + if (count_opt == 0) { + break; + } + } +} + +/* + * Intermediate value helpers + */ + +/* Flags for intermediate value coercions. A flag for using a forced reg + * is not needed, the forced_reg argument suffices and generates better + * code (it is checked as it is used). + */ +/* XXX: DUK__IVAL_FLAG_REQUIRE_SHORT is passed but not currently implemented + * by ispec/ivalue operations. + */ +#define DUK__IVAL_FLAG_ALLOW_CONST (1 << 0) /* allow a constant to be returned */ +#define DUK__IVAL_FLAG_REQUIRE_TEMP (1 << 1) /* require a (mutable) temporary as a result (or a const if allowed) */ +#define DUK__IVAL_FLAG_REQUIRE_SHORT (1 << 2) /* require a short (8-bit) reg/const which fits into bytecode B/C slot */ + +/* XXX: some code might benefit from DUK__SETTEMP_IFTEMP(thr,x) */ + +#if 0 /* enable manually for dumping */ +#define DUK__DUMP_ISPEC(compctx,ispec) do { duk__dump_ispec((compctx), (ispec)); } while (0) +#define DUK__DUMP_IVALUE(compctx,ivalue) do { duk__dump_ivalue((compctx), (ivalue)); } while (0) + +DUK_LOCAL void duk__dump_ispec(duk_compiler_ctx *comp_ctx, duk_ispec *x) { + DUK_D(DUK_DPRINT("ispec dump: t=%ld regconst=0x%08lx, valstack_idx=%ld, value=%!T", + (long) x->t, (unsigned long) x->regconst, (long) x->valstack_idx, + duk_get_tval(comp_ctx->thr, x->valstack_idx))); +} +DUK_LOCAL void duk__dump_ivalue(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + DUK_D(DUK_DPRINT("ivalue dump: t=%ld op=%ld " + "x1={t=%ld regconst=0x%08lx valstack_idx=%ld value=%!T} " + "x2={t=%ld regconst=0x%08lx valstack_idx=%ld value=%!T}", + (long) x->t, (long) x->op, + (long) x->x1.t, (unsigned long) x->x1.regconst, (long) x->x1.valstack_idx, + duk_get_tval(comp_ctx->thr, x->x1.valstack_idx), + (long) x->x2.t, (unsigned long) x->x2.regconst, (long) x->x2.valstack_idx, + duk_get_tval(comp_ctx->thr, x->x2.valstack_idx))); +} +#else +#define DUK__DUMP_ISPEC(comp_ctx,x) do {} while (0) +#define DUK__DUMP_IVALUE(comp_ctx,x) do {} while (0) +#endif + +DUK_LOCAL void duk__ivalue_regconst(duk_ivalue *x, duk_regconst_t regconst) { + x->t = DUK_IVAL_PLAIN; + x->x1.t = DUK_ISPEC_REGCONST; + x->x1.regconst = regconst; +} + +DUK_LOCAL void duk__ivalue_plain_fromstack(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + x->t = DUK_IVAL_PLAIN; + x->x1.t = DUK_ISPEC_VALUE; + duk_replace(comp_ctx->thr, x->x1.valstack_idx); +} + +DUK_LOCAL void duk__ivalue_var_fromstack(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + x->t = DUK_IVAL_VAR; + x->x1.t = DUK_ISPEC_VALUE; + duk_replace(comp_ctx->thr, x->x1.valstack_idx); +} + +DUK_LOCAL_DECL void duk__ivalue_var_hstring(duk_compiler_ctx *comp_ctx, duk_ivalue *x, duk_hstring *h) { + DUK_ASSERT(h != NULL); + duk_push_hstring(comp_ctx->thr, h); + duk__ivalue_var_fromstack(comp_ctx, x); +} + +DUK_LOCAL void duk__copy_ispec(duk_compiler_ctx *comp_ctx, duk_ispec *src, duk_ispec *dst) { + dst->t = src->t; + dst->regconst = src->regconst; + duk_copy(comp_ctx->thr, src->valstack_idx, dst->valstack_idx); +} + +DUK_LOCAL void duk__copy_ivalue(duk_compiler_ctx *comp_ctx, duk_ivalue *src, duk_ivalue *dst) { + dst->t = src->t; + dst->op = src->op; + dst->x1.t = src->x1.t; + dst->x1.regconst = src->x1.regconst; + dst->x2.t = src->x2.t; + dst->x2.regconst = src->x2.regconst; + duk_copy(comp_ctx->thr, src->x1.valstack_idx, dst->x1.valstack_idx); + duk_copy(comp_ctx->thr, src->x2.valstack_idx, dst->x2.valstack_idx); +} + +DUK_LOCAL duk_regconst_t duk__alloctemps(duk_compiler_ctx *comp_ctx, duk_small_int_t num) { + duk_regconst_t res; + + res = comp_ctx->curr_func.temp_next; + comp_ctx->curr_func.temp_next += num; + + if (comp_ctx->curr_func.temp_next > DUK__MAX_TEMPS) { /* == DUK__MAX_TEMPS is OK */ + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_TEMP_LIMIT); + DUK_WO_NORETURN(return 0;); + } + + /* maintain highest 'used' temporary, needed to figure out nregs of function */ + if (comp_ctx->curr_func.temp_next > comp_ctx->curr_func.temp_max) { + comp_ctx->curr_func.temp_max = comp_ctx->curr_func.temp_next; + } + + return res; +} + +DUK_LOCAL duk_regconst_t duk__alloctemp(duk_compiler_ctx *comp_ctx) { + return duk__alloctemps(comp_ctx, 1); +} + +DUK_LOCAL void duk__settemp_checkmax(duk_compiler_ctx *comp_ctx, duk_regconst_t temp_next) { + comp_ctx->curr_func.temp_next = temp_next; + if (temp_next > comp_ctx->curr_func.temp_max) { + comp_ctx->curr_func.temp_max = temp_next; + } +} + +/* get const for value at valstack top */ +DUK_LOCAL duk_regconst_t duk__getconst(duk_compiler_ctx *comp_ctx) { + duk_hthread *thr = comp_ctx->thr; + duk_compiler_func *f = &comp_ctx->curr_func; + duk_tval *tv1; + duk_int_t i, n, n_check; + + n = (duk_int_t) duk_get_length(thr, f->consts_idx); + + tv1 = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(tv1 != NULL); + +#if defined(DUK_USE_FASTINT) + /* Explicit check for fastint downgrade. */ + DUK_TVAL_CHKFAST_INPLACE_SLOW(tv1); +#endif + + /* Sanity workaround for handling functions with a large number of + * constants at least somewhat reasonably. Otherwise checking whether + * we already have the constant would grow very slow (as it is O(N^2)). + */ + n_check = (n > DUK__GETCONST_MAX_CONSTS_CHECK ? DUK__GETCONST_MAX_CONSTS_CHECK : n); + for (i = 0; i < n_check; i++) { + duk_tval *tv2 = DUK_HOBJECT_A_GET_VALUE_PTR(thr->heap, f->h_consts, i); + + /* Strict equality is NOT enough, because we cannot use the same + * constant for e.g. +0 and -0. + */ + if (duk_js_samevalue(tv1, tv2)) { + DUK_DDD(DUK_DDDPRINT("reused existing constant for %!T -> const index %ld", + (duk_tval *) tv1, (long) i)); + duk_pop(thr); + return (duk_regconst_t) i | (duk_regconst_t) DUK__CONST_MARKER; + } + } + + if (n > DUK__MAX_CONSTS) { + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_CONST_LIMIT); + DUK_WO_NORETURN(return 0;); + } + + DUK_DDD(DUK_DDDPRINT("allocating new constant for %!T -> const index %ld", + (duk_tval *) tv1, (long) n)); + (void) duk_put_prop_index(thr, f->consts_idx, (duk_uarridx_t) n); /* invalidates tv1, tv2 */ + return (duk_regconst_t) n | (duk_regconst_t) DUK__CONST_MARKER; +} + +DUK_LOCAL duk_bool_t duk__const_needs_refcount(duk_compiler_ctx *comp_ctx, duk_regconst_t rc) { +#if defined(DUK_USE_REFERENCE_COUNTING) + duk_compiler_func *f = &comp_ctx->curr_func; + duk_bool_t ret; + + DUK_ASSERT((rc & DUK__CONST_MARKER) == 0); /* caller removes const marker */ + (void) duk_get_prop_index(comp_ctx->thr, f->consts_idx, (duk_uarridx_t) rc); + ret = !duk_is_number(comp_ctx->thr, -1); /* now only number/string, so conservative check */ + duk_pop(comp_ctx->thr); + return ret; +#else + DUK_UNREF(comp_ctx); + DUK_UNREF(rc); + DUK_ASSERT((rc & DUK__CONST_MARKER) == 0); /* caller removes const marker */ + return 0; +#endif +} + +/* Get the value represented by an duk_ispec to a register or constant. + * The caller can control the result by indicating whether or not: + * + * (1) a constant is allowed (sometimes the caller needs the result to + * be in a register) + * + * (2) a temporary register is required (usually when caller requires + * the register to be safely mutable; normally either a bound + * register or a temporary register are both OK) + * + * (3) a forced register target needs to be used + * + * Bytecode may be emitted to generate the necessary value. The return + * value is either a register or a constant. + */ + +DUK_LOCAL +duk_regconst_t duk__ispec_toregconst_raw(duk_compiler_ctx *comp_ctx, + duk_ispec *x, + duk_regconst_t forced_reg, + duk_small_uint_t flags) { + duk_hthread *thr = comp_ctx->thr; + + DUK_DDD(DUK_DDDPRINT("duk__ispec_toregconst_raw(): x={%ld:%ld:%!T}, " + "forced_reg=%ld, flags 0x%08lx: allow_const=%ld require_temp=%ld require_short=%ld", + (long) x->t, + (long) x->regconst, + (duk_tval *) duk_get_tval(thr, x->valstack_idx), + (long) forced_reg, + (unsigned long) flags, + (long) ((flags & DUK__IVAL_FLAG_ALLOW_CONST) ? 1 : 0), + (long) ((flags & DUK__IVAL_FLAG_REQUIRE_TEMP) ? 1 : 0), + (long) ((flags & DUK__IVAL_FLAG_REQUIRE_SHORT) ? 1 : 0))); + + switch (x->t) { + case DUK_ISPEC_VALUE: { + duk_tval *tv; + + tv = DUK_GET_TVAL_POSIDX(thr, x->valstack_idx); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: { + /* Note: although there is no 'undefined' literal, undefined + * values can occur during compilation as a result of e.g. + * the 'void' operator. + */ + duk_regconst_t dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_bc(comp_ctx, DUK_OP_LDUNDEF, dest); + return dest; + } + case DUK_TAG_NULL: { + duk_regconst_t dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_bc(comp_ctx, DUK_OP_LDNULL, dest); + return dest; + } + case DUK_TAG_BOOLEAN: { + duk_regconst_t dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_bc(comp_ctx, + (DUK_TVAL_GET_BOOLEAN(tv) ? DUK_OP_LDTRUE : DUK_OP_LDFALSE), + dest); + return dest; + } + case DUK_TAG_POINTER: { + DUK_UNREACHABLE(); + break; + } + case DUK_TAG_STRING: { + duk_hstring *h; + duk_regconst_t dest; + duk_regconst_t constidx; + + h = DUK_TVAL_GET_STRING(tv); + DUK_UNREF(h); + DUK_ASSERT(h != NULL); + +#if 0 /* XXX: to be implemented? */ + /* Use special opcodes to load short strings */ + if (DUK_HSTRING_GET_BYTELEN(h) <= 2) { + /* Encode into a single opcode (18 bits can encode 1-2 bytes + length indicator) */ + } else if (DUK_HSTRING_GET_BYTELEN(h) <= 6) { + /* Encode into a double constant (53 bits can encode 6*8 = 48 bits + 3-bit length */ + } +#endif + duk_dup(thr, x->valstack_idx); + constidx = duk__getconst(comp_ctx); + + if (flags & DUK__IVAL_FLAG_ALLOW_CONST) { + return constidx; + } + + dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_a_bc(comp_ctx, DUK_OP_LDCONST, dest, constidx); + return dest; + } + case DUK_TAG_OBJECT: { + DUK_UNREACHABLE(); + break; + } + case DUK_TAG_BUFFER: { + DUK_UNREACHABLE(); + break; + } + case DUK_TAG_LIGHTFUNC: { + DUK_UNREACHABLE(); + break; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + /* number */ + duk_regconst_t dest; + duk_regconst_t constidx; + duk_double_t dval; + duk_int32_t ival; + + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + dval = DUK_TVAL_GET_NUMBER(tv); + + if (!(flags & DUK__IVAL_FLAG_ALLOW_CONST)) { + /* A number can be loaded either through a constant, using + * LDINT, or using LDINT+LDINTX. LDINT is always a size win, + * LDINT+LDINTX is not if the constant is used multiple times. + * Currently always prefer LDINT+LDINTX over a double constant. + */ + + if (duk_is_whole_get_int32_nonegzero(dval, &ival)) { + dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_load_int32(comp_ctx, dest, ival); + return dest; + } + } + + duk_dup(thr, x->valstack_idx); + constidx = duk__getconst(comp_ctx); + + if (flags & DUK__IVAL_FLAG_ALLOW_CONST) { + return constidx; + } else { + dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_a_bc(comp_ctx, DUK_OP_LDCONST, dest, constidx); + return dest; + } + } + } /* end switch */ + goto fail_internal; /* never here */ + } + case DUK_ISPEC_REGCONST: { + if (forced_reg >= 0) { + if (DUK__ISCONST(x->regconst)) { + duk__emit_a_bc(comp_ctx, DUK_OP_LDCONST, forced_reg, x->regconst); + } else if (x->regconst != forced_reg) { + duk__emit_a_bc(comp_ctx, DUK_OP_LDREG, forced_reg, x->regconst); + } else { + ; /* already in correct reg */ + } + return forced_reg; + } + + DUK_ASSERT(forced_reg < 0); + if (DUK__ISCONST(x->regconst)) { + if (!(flags & DUK__IVAL_FLAG_ALLOW_CONST)) { + duk_regconst_t dest = DUK__ALLOCTEMP(comp_ctx); + duk__emit_a_bc(comp_ctx, DUK_OP_LDCONST, dest, x->regconst); + return dest; + } + return x->regconst; + } + + DUK_ASSERT(forced_reg < 0 && !DUK__ISCONST(x->regconst)); + if ((flags & DUK__IVAL_FLAG_REQUIRE_TEMP) && !DUK__ISREG_TEMP(comp_ctx, x->regconst)) { + duk_regconst_t dest = DUK__ALLOCTEMP(comp_ctx); + duk__emit_a_bc(comp_ctx, DUK_OP_LDREG, dest, x->regconst); + return dest; + } + return x->regconst; + } + default: { + break; /* never here */ + } + } + + fail_internal: + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); +} + +DUK_LOCAL void duk__ispec_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ispec *x, duk_regconst_t forced_reg) { + DUK_ASSERT(forced_reg >= 0); + (void) duk__ispec_toregconst_raw(comp_ctx, x, forced_reg, 0 /*flags*/); +} + +/* Coerce an duk_ivalue to a 'plain' value by generating the necessary + * arithmetic operations, property access, or variable access bytecode. + * The duk_ivalue argument ('x') is converted into a plain value as a + * side effect. + */ +DUK_LOCAL void duk__ivalue_toplain_raw(duk_compiler_ctx *comp_ctx, duk_ivalue *x, duk_regconst_t forced_reg) { + duk_hthread *thr = comp_ctx->thr; + + DUK_DDD(DUK_DDDPRINT("duk__ivalue_toplain_raw(): x={t=%ld,op=%ld,x1={%ld:%ld:%!T},x2={%ld:%ld:%!T}}, " + "forced_reg=%ld", + (long) x->t, (long) x->op, + (long) x->x1.t, (long) x->x1.regconst, + (duk_tval *) duk_get_tval(thr, x->x1.valstack_idx), + (long) x->x2.t, (long) x->x2.regconst, + (duk_tval *) duk_get_tval(thr, x->x2.valstack_idx), + (long) forced_reg)); + + switch (x->t) { + case DUK_IVAL_PLAIN: { + return; + } + /* XXX: support unary arithmetic ivalues (useful?) */ + case DUK_IVAL_ARITH: { + duk_regconst_t arg1; + duk_regconst_t arg2; + duk_regconst_t dest; + duk_tval *tv1; + duk_tval *tv2; + + DUK_DDD(DUK_DDDPRINT("arith to plain conversion")); + + /* inline arithmetic check for constant values */ + /* XXX: use the exactly same arithmetic function here as in executor */ + if (x->x1.t == DUK_ISPEC_VALUE && x->x2.t == DUK_ISPEC_VALUE && x->t == DUK_IVAL_ARITH) { + tv1 = DUK_GET_TVAL_POSIDX(thr, x->x1.valstack_idx); + tv2 = DUK_GET_TVAL_POSIDX(thr, x->x2.valstack_idx); + DUK_ASSERT(tv1 != NULL); + DUK_ASSERT(tv2 != NULL); + + DUK_DDD(DUK_DDDPRINT("arith: tv1=%!T, tv2=%!T", + (duk_tval *) tv1, + (duk_tval *) tv2)); + + if (DUK_TVAL_IS_NUMBER(tv1) && DUK_TVAL_IS_NUMBER(tv2)) { + duk_double_t d1 = DUK_TVAL_GET_NUMBER(tv1); + duk_double_t d2 = DUK_TVAL_GET_NUMBER(tv2); + duk_double_t d3; + duk_bool_t accept_fold = 1; + + DUK_DDD(DUK_DDDPRINT("arith inline check: d1=%lf, d2=%lf, op=%ld", + (double) d1, (double) d2, (long) x->op)); + switch (x->op) { + case DUK_OP_ADD: { + d3 = d1 + d2; + break; + } + case DUK_OP_SUB: { + d3 = d1 - d2; + break; + } + case DUK_OP_MUL: { + d3 = d1 * d2; + break; + } + case DUK_OP_DIV: { + /* Division-by-zero is undefined + * behavior, so rely on a helper. + */ + d3 = duk_double_div(d1, d2); + break; + } + case DUK_OP_EXP: { + d3 = (duk_double_t) duk_js_arith_pow((double) d1, (double) d2); + break; + } + default: { + d3 = 0.0; /* Won't be used, but silence MSVC /W4 warning. */ + accept_fold = 0; + break; + } + } + + if (accept_fold) { + duk_double_union du; + du.d = d3; + DUK_DBLUNION_NORMALIZE_NAN_CHECK(&du); + d3 = du.d; + + x->t = DUK_IVAL_PLAIN; + DUK_ASSERT(x->x1.t == DUK_ISPEC_VALUE); + DUK_TVAL_SET_NUMBER(tv1, d3); /* old value is number: no refcount */ + return; + } + } else if (x->op == DUK_OP_ADD && DUK_TVAL_IS_STRING(tv1) && DUK_TVAL_IS_STRING(tv2)) { + /* Inline string concatenation. No need to check for + * symbols, as all inputs are valid ECMAScript strings. + */ + duk_dup(thr, x->x1.valstack_idx); + duk_dup(thr, x->x2.valstack_idx); + duk_concat(thr, 2); + duk_replace(thr, x->x1.valstack_idx); + x->t = DUK_IVAL_PLAIN; + DUK_ASSERT(x->x1.t == DUK_ISPEC_VALUE); + return; + } + } + + arg1 = duk__ispec_toregconst_raw(comp_ctx, &x->x1, -1, DUK__IVAL_FLAG_ALLOW_CONST | DUK__IVAL_FLAG_REQUIRE_SHORT /*flags*/); + arg2 = duk__ispec_toregconst_raw(comp_ctx, &x->x2, -1, DUK__IVAL_FLAG_ALLOW_CONST | DUK__IVAL_FLAG_REQUIRE_SHORT /*flags*/); + + /* If forced reg, use it as destination. Otherwise try to + * use either coerced ispec if it is a temporary. + */ + if (forced_reg >= 0) { + dest = forced_reg; + } else if (DUK__ISREG_TEMP(comp_ctx, arg1)) { + dest = arg1; + } else if (DUK__ISREG_TEMP(comp_ctx, arg2)) { + dest = arg2; + } else { + dest = DUK__ALLOCTEMP(comp_ctx); + } + + DUK_ASSERT(DUK__ISREG(dest)); + duk__emit_a_b_c(comp_ctx, x->op | DUK__EMIT_FLAG_BC_REGCONST, dest, arg1, arg2); + + duk__ivalue_regconst(x, dest); + return; + } + case DUK_IVAL_PROP: { + /* XXX: very similar to DUK_IVAL_ARITH - merge? */ + duk_regconst_t arg1; + duk_regconst_t arg2; + duk_regconst_t dest; + + /* Need a short reg/const, does not have to be a mutable temp. */ + arg1 = duk__ispec_toregconst_raw(comp_ctx, &x->x1, -1, DUK__IVAL_FLAG_ALLOW_CONST | DUK__IVAL_FLAG_REQUIRE_SHORT /*flags*/); + arg2 = duk__ispec_toregconst_raw(comp_ctx, &x->x2, -1, DUK__IVAL_FLAG_ALLOW_CONST | DUK__IVAL_FLAG_REQUIRE_SHORT /*flags*/); + + /* Pick a destination register. If either base value or key + * happens to be a temp value, reuse it as the destination. + * + * XXX: The temp must be a "mutable" one, i.e. such that no + * other expression is using it anymore. Here this should be + * the case because the value of a property access expression + * is neither the base nor the key, but the lookup result. + */ + + if (forced_reg >= 0) { + dest = forced_reg; + } else if (DUK__ISREG_TEMP(comp_ctx, arg1)) { + dest = arg1; + } else if (DUK__ISREG_TEMP(comp_ctx, arg2)) { + dest = arg2; + } else { + dest = DUK__ALLOCTEMP(comp_ctx); + } + + duk__emit_a_b_c(comp_ctx, + DUK_OP_GETPROP | DUK__EMIT_FLAG_BC_REGCONST, + dest, + arg1, + arg2); + + duk__ivalue_regconst(x, dest); + return; + } + case DUK_IVAL_VAR: { + /* x1 must be a string */ + duk_regconst_t dest; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + DUK_ASSERT(x->x1.t == DUK_ISPEC_VALUE); + + duk_dup(thr, x->x1.valstack_idx); + if (duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + duk__ivalue_regconst(x, reg_varbind); + } else { + dest = (forced_reg >= 0 ? forced_reg : DUK__ALLOCTEMP(comp_ctx)); + duk__emit_a_bc(comp_ctx, DUK_OP_GETVAR, dest, rc_varname); + duk__ivalue_regconst(x, dest); + } + return; + } + case DUK_IVAL_NONE: + default: { + DUK_D(DUK_DPRINT("invalid ivalue type: %ld", (long) x->t)); + break; + } + } + + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); +} + +/* evaluate to plain value, no forced register (temp/bound reg both ok) */ +DUK_LOCAL void duk__ivalue_toplain(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + duk__ivalue_toplain_raw(comp_ctx, x, -1 /*forced_reg*/); +} + +/* evaluate to final form (e.g. coerce GETPROP to code), throw away temp */ +DUK_LOCAL void duk__ivalue_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + duk_regconst_t temp; + + /* If duk__ivalue_toplain_raw() allocates a temp, forget it and + * restore next temp state. + */ + temp = DUK__GETTEMP(comp_ctx); + duk__ivalue_toplain_raw(comp_ctx, x, -1 /*forced_reg*/); + DUK__SETTEMP(comp_ctx, temp); +} + +/* Coerce an duk_ivalue to a register or constant; result register may + * be a temp or a bound register. + * + * The duk_ivalue argument ('x') is converted into a regconst as a + * side effect. + */ +DUK_LOCAL +duk_regconst_t duk__ivalue_toregconst_raw(duk_compiler_ctx *comp_ctx, + duk_ivalue *x, + duk_regconst_t forced_reg, + duk_small_uint_t flags) { + duk_hthread *thr = comp_ctx->thr; + duk_regconst_t reg; + DUK_UNREF(thr); + + DUK_DDD(DUK_DDDPRINT("duk__ivalue_toregconst_raw(): x={t=%ld,op=%ld,x1={%ld:%ld:%!T},x2={%ld:%ld:%!T}}, " + "forced_reg=%ld, flags 0x%08lx: allow_const=%ld require_temp=%ld require_short=%ld", + (long) x->t, (long) x->op, + (long) x->x1.t, (long) x->x1.regconst, + (duk_tval *) duk_get_tval(thr, x->x1.valstack_idx), + (long) x->x2.t, (long) x->x2.regconst, + (duk_tval *) duk_get_tval(thr, x->x2.valstack_idx), + (long) forced_reg, + (unsigned long) flags, + (long) ((flags & DUK__IVAL_FLAG_ALLOW_CONST) ? 1 : 0), + (long) ((flags & DUK__IVAL_FLAG_REQUIRE_TEMP) ? 1 : 0), + (long) ((flags & DUK__IVAL_FLAG_REQUIRE_SHORT) ? 1 : 0))); + + /* first coerce to a plain value */ + duk__ivalue_toplain_raw(comp_ctx, x, forced_reg); + DUK_ASSERT(x->t == DUK_IVAL_PLAIN); + + /* then to a register */ + reg = duk__ispec_toregconst_raw(comp_ctx, &x->x1, forced_reg, flags); + duk__ivalue_regconst(x, reg); + + return reg; +} + +DUK_LOCAL duk_regconst_t duk__ivalue_toreg(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + return duk__ivalue_toregconst_raw(comp_ctx, x, -1, 0 /*flags*/); +} + +#if 0 /* unused */ +DUK_LOCAL duk_regconst_t duk__ivalue_totemp(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + return duk__ivalue_toregconst_raw(comp_ctx, x, -1, DUK__IVAL_FLAG_REQUIRE_TEMP /*flags*/); +} +#endif + +DUK_LOCAL void duk__ivalue_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ivalue *x, duk_int_t forced_reg) { + DUK_ASSERT(forced_reg >= 0); + (void) duk__ivalue_toregconst_raw(comp_ctx, x, forced_reg, 0 /*flags*/); +} + +DUK_LOCAL duk_regconst_t duk__ivalue_toregconst(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + return duk__ivalue_toregconst_raw(comp_ctx, x, -1, DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); +} + +DUK_LOCAL duk_regconst_t duk__ivalue_totempconst(duk_compiler_ctx *comp_ctx, duk_ivalue *x) { + return duk__ivalue_toregconst_raw(comp_ctx, x, -1, DUK__IVAL_FLAG_ALLOW_CONST | DUK__IVAL_FLAG_REQUIRE_TEMP /*flags*/); +} + +/* The issues below can be solved with better flags */ + +/* XXX: many operations actually want toforcedtemp() -- brand new temp? */ +/* XXX: need a toplain_ignore() which will only coerce a value to a temp + * register if it might have a side effect. Side-effect free values do not + * need to be coerced. + */ + +/* + * Identifier handling + */ + +DUK_LOCAL duk_regconst_t duk__lookup_active_register_binding(duk_compiler_ctx *comp_ctx) { + duk_hthread *thr = comp_ctx->thr; + duk_hstring *h_varname; + duk_regconst_t ret; + + DUK_DDD(DUK_DDDPRINT("resolving identifier reference to '%!T'", + (duk_tval *) duk_get_tval(thr, -1))); + + /* + * Special name handling + */ + + h_varname = duk_known_hstring(thr, -1); + + if (h_varname == DUK_HTHREAD_STRING_LC_ARGUMENTS(thr)) { + DUK_DDD(DUK_DDDPRINT("flagging function as accessing 'arguments'")); + comp_ctx->curr_func.id_access_arguments = 1; + } + + /* + * Inside one or more 'with' statements fall back to slow path always. + * (See e.g. test-stmt-with.js.) + */ + + if (comp_ctx->curr_func.with_depth > 0) { + DUK_DDD(DUK_DDDPRINT("identifier lookup inside a 'with' -> fall back to slow path")); + goto slow_path_own; + } + + /* + * Any catch bindings ("catch (e)") also affect identifier binding. + * + * Currently, the varmap is modified for the duration of the catch + * clause to ensure any identifier accesses with the catch variable + * name will use slow path. + */ + + duk_get_prop(thr, comp_ctx->curr_func.varmap_idx); + if (duk_is_number(thr, -1)) { + ret = duk_to_int(thr, -1); + duk_pop(thr); + } else { + duk_pop(thr); + if (comp_ctx->curr_func.catch_depth > 0 || comp_ctx->curr_func.with_depth > 0) { + DUK_DDD(DUK_DDDPRINT("slow path access from inside a try-catch or with needs _Varmap")); + goto slow_path_own; + } else { + /* In this case we're doing a variable lookup that doesn't + * match our own variables, so _Varmap won't be needed at + * run time. + */ + DUK_DDD(DUK_DDDPRINT("slow path access outside of try-catch and with, no need for _Varmap")); + goto slow_path_notown; + } + } + + DUK_DDD(DUK_DDDPRINT("identifier lookup -> reg %ld", (long) ret)); + return ret; + + slow_path_notown: + DUK_DDD(DUK_DDDPRINT("identifier lookup -> slow path, not own variable")); + + comp_ctx->curr_func.id_access_slow = 1; + return (duk_regconst_t) -1; + + slow_path_own: + DUK_DDD(DUK_DDDPRINT("identifier lookup -> slow path, may be own variable")); + + comp_ctx->curr_func.id_access_slow = 1; + comp_ctx->curr_func.id_access_slow_own = 1; + return (duk_regconst_t) -1; +} + +/* Lookup an identifier name in the current varmap, indicating whether the + * identifier is register-bound and if not, allocating a constant for the + * identifier name. Returns 1 if register-bound, 0 otherwise. Caller can + * also check (out_reg_varbind >= 0) to check whether or not identifier is + * register bound. The caller must NOT use out_rc_varname at all unless + * return code is 0 or out_reg_varbind is < 0; this is becuase out_rc_varname + * is unsigned and doesn't have a "unused" / none value. + */ +DUK_LOCAL duk_bool_t duk__lookup_lhs(duk_compiler_ctx *comp_ctx, duk_regconst_t *out_reg_varbind, duk_regconst_t *out_rc_varname) { + duk_hthread *thr = comp_ctx->thr; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + /* [ ... varname ] */ + + duk_dup_top(thr); + reg_varbind = duk__lookup_active_register_binding(comp_ctx); + + if (reg_varbind >= 0) { + *out_reg_varbind = reg_varbind; + *out_rc_varname = 0; /* duk_regconst_t is unsigned, so use 0 as dummy value (ignored by caller) */ + duk_pop(thr); + return 1; + } else { + rc_varname = duk__getconst(comp_ctx); + *out_reg_varbind = -1; + *out_rc_varname = rc_varname; + return 0; + } +} + +/* + * Label handling + * + * Labels are initially added with flags prohibiting both break and continue. + * When the statement type is finally uncovered (after potentially multiple + * labels), all the labels are updated to allow/prohibit break and continue. + */ + +DUK_LOCAL void duk__add_label(duk_compiler_ctx *comp_ctx, duk_hstring *h_label, duk_int_t pc_label, duk_int_t label_id) { + duk_hthread *thr = comp_ctx->thr; + duk_size_t n; + duk_size_t new_size; + duk_uint8_t *p; + duk_labelinfo *li_start, *li; + + /* Duplicate (shadowing) labels are not allowed, except for the empty + * labels (which are used as default labels for switch and iteration + * statements). + * + * We could also allow shadowing of non-empty pending labels without any + * other issues than breaking the required label shadowing requirements + * of the E5 specification, see Section 12.12. + */ + + p = (duk_uint8_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, comp_ctx->curr_func.h_labelinfos); + li_start = (duk_labelinfo *) (void *) p; + li = (duk_labelinfo *) (void *) (p + DUK_HBUFFER_GET_SIZE(comp_ctx->curr_func.h_labelinfos)); + n = (duk_size_t) (li - li_start); + + while (li > li_start) { + li--; + + if (li->h_label == h_label && h_label != DUK_HTHREAD_STRING_EMPTY_STRING(thr)) { + DUK_ERROR_SYNTAX(thr, DUK_STR_DUPLICATE_LABEL); + DUK_WO_NORETURN(return;); + } + } + + duk_push_hstring(thr, h_label); + DUK_ASSERT(n <= DUK_UARRIDX_MAX); /* label limits */ + (void) duk_put_prop_index(thr, comp_ctx->curr_func.labelnames_idx, (duk_uarridx_t) n); + + new_size = (n + 1) * sizeof(duk_labelinfo); + duk_hbuffer_resize(thr, comp_ctx->curr_func.h_labelinfos, new_size); + /* XXX: slack handling, slow now */ + + /* relookup after possible realloc */ + p = (duk_uint8_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, comp_ctx->curr_func.h_labelinfos); + li_start = (duk_labelinfo *) (void *) p; + DUK_UNREF(li_start); /* silence scan-build warning */ + li = (duk_labelinfo *) (void *) (p + DUK_HBUFFER_GET_SIZE(comp_ctx->curr_func.h_labelinfos)); + li--; + + /* Labels can be used for iteration statements but also for other statements, + * in particular a label can be used for a block statement. All cases of a + * named label accept a 'break' so that flag is set here. Iteration statements + * also allow 'continue', so that flag is updated when we figure out the + * statement type. + */ + + li->flags = DUK_LABEL_FLAG_ALLOW_BREAK; + li->label_id = label_id; + li->h_label = h_label; + li->catch_depth = comp_ctx->curr_func.catch_depth; /* catch depth from current func */ + li->pc_label = pc_label; + + DUK_DDD(DUK_DDDPRINT("registered label: flags=0x%08lx, id=%ld, name=%!O, catch_depth=%ld, pc_label=%ld", + (unsigned long) li->flags, (long) li->label_id, (duk_heaphdr *) li->h_label, + (long) li->catch_depth, (long) li->pc_label)); +} + +/* Update all labels with matching label_id. */ +DUK_LOCAL void duk__update_label_flags(duk_compiler_ctx *comp_ctx, duk_int_t label_id, duk_small_uint_t flags) { + duk_uint8_t *p; + duk_labelinfo *li_start, *li; + + p = (duk_uint8_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(comp_ctx->thr->heap, comp_ctx->curr_func.h_labelinfos); + li_start = (duk_labelinfo *) (void *) p; + li = (duk_labelinfo *) (void *) (p + DUK_HBUFFER_GET_SIZE(comp_ctx->curr_func.h_labelinfos)); + + /* Match labels starting from latest; once label_id no longer matches, we can + * safely exit without checking the rest of the labels (only the topmost labels + * are ever updated). + */ + while (li > li_start) { + li--; + + if (li->label_id != label_id) { + break; + } + + DUK_DDD(DUK_DDDPRINT("updating (overwriting) label flags for li=%p, label_id=%ld, flags=%ld", + (void *) li, (long) label_id, (long) flags)); + + li->flags = flags; + } +} + +/* Lookup active label information. Break/continue distinction is necessary to handle switch + * statement related labels correctly: a switch will only catch a 'break', not a 'continue'. + * + * An explicit label cannot appear multiple times in the active set, but empty labels (unlabelled + * iteration and switch statements) can. A break will match the closest unlabelled or labelled + * statement. A continue will match the closest unlabelled or labelled iteration statement. It is + * a syntax error if a continue matches a labelled switch statement; because an explicit label cannot + * be duplicated, the continue cannot match any valid label outside the switch. + * + * A side effect of these rules is that a LABEL statement related to a switch should never actually + * catch a continue abrupt completion at run-time. Hence an INVALID opcode can be placed in the + * continue slot of the switch's LABEL statement. + */ + +/* XXX: awkward, especially the bunch of separate output values -> output struct? */ +DUK_LOCAL void duk__lookup_active_label(duk_compiler_ctx *comp_ctx, duk_hstring *h_label, duk_bool_t is_break, duk_int_t *out_label_id, duk_int_t *out_label_catch_depth, duk_int_t *out_label_pc, duk_bool_t *out_is_closest) { + duk_hthread *thr = comp_ctx->thr; + duk_uint8_t *p; + duk_labelinfo *li_start, *li_end, *li; + duk_bool_t match = 0; + + DUK_DDD(DUK_DDDPRINT("looking up active label: label='%!O', is_break=%ld", + (duk_heaphdr *) h_label, (long) is_break)); + + DUK_UNREF(thr); + + p = (duk_uint8_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, comp_ctx->curr_func.h_labelinfos); + li_start = (duk_labelinfo *) (void *) p; + li_end = (duk_labelinfo *) (void *) (p + DUK_HBUFFER_GET_SIZE(comp_ctx->curr_func.h_labelinfos)); + li = li_end; + + /* Match labels starting from latest label because there can be duplicate empty + * labels in the label set. + */ + while (li > li_start) { + li--; + + if (li->h_label != h_label) { + DUK_DDD(DUK_DDDPRINT("labelinfo[%ld] ->'%!O' != %!O", + (long) (li - li_start), + (duk_heaphdr *) li->h_label, + (duk_heaphdr *) h_label)); + continue; + } + + DUK_DDD(DUK_DDDPRINT("labelinfo[%ld] -> '%!O' label name matches (still need to check type)", + (long) (li - li_start), (duk_heaphdr *) h_label)); + + /* currently all labels accept a break, so no explicit check for it now */ + DUK_ASSERT(li->flags & DUK_LABEL_FLAG_ALLOW_BREAK); + + if (is_break) { + /* break matches always */ + match = 1; + break; + } else if (li->flags & DUK_LABEL_FLAG_ALLOW_CONTINUE) { + /* iteration statements allow continue */ + match = 1; + break; + } else { + /* continue matched this label -- we can only continue if this is the empty + * label, for which duplication is allowed, and thus there is hope of + * finding a match deeper in the label stack. + */ + if (h_label != DUK_HTHREAD_STRING_EMPTY_STRING(thr)) { + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_LABEL); + DUK_WO_NORETURN(return;); + } else { + DUK_DDD(DUK_DDDPRINT("continue matched an empty label which does not " + "allow a continue -> continue lookup deeper in label stack")); + } + } + } + /* XXX: match flag is awkward, rework */ + if (!match) { + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_LABEL); + DUK_WO_NORETURN(return;); + } + + DUK_DDD(DUK_DDDPRINT("label match: %!O -> label_id %ld, catch_depth=%ld, pc_label=%ld", + (duk_heaphdr *) h_label, (long) li->label_id, + (long) li->catch_depth, (long) li->pc_label)); + + *out_label_id = li->label_id; + *out_label_catch_depth = li->catch_depth; + *out_label_pc = li->pc_label; + *out_is_closest = (li == li_end - 1); +} + +DUK_LOCAL void duk__reset_labels_to_length(duk_compiler_ctx *comp_ctx, duk_size_t len) { + duk_hthread *thr = comp_ctx->thr; + + duk_set_length(thr, comp_ctx->curr_func.labelnames_idx, len); + duk_hbuffer_resize(thr, comp_ctx->curr_func.h_labelinfos, sizeof(duk_labelinfo) * len); +} + +/* + * Expression parsing: duk__expr_nud(), duk__expr_led(), duk__expr_lbp(), and helpers. + * + * - duk__expr_nud(): ("null denotation"): process prev_token as a "start" of an expression (e.g. literal) + * - duk__expr_led(): ("left denotation"): process prev_token in the "middle" of an expression (e.g. operator) + * - duk__expr_lbp(): ("left-binding power"): return left-binding power of curr_token + */ + +/* object literal key tracking flags */ +#define DUK__OBJ_LIT_KEY_PLAIN (1 << 0) /* key encountered as a plain property */ +#define DUK__OBJ_LIT_KEY_GET (1 << 1) /* key encountered as a getter */ +#define DUK__OBJ_LIT_KEY_SET (1 << 2) /* key encountered as a setter */ + +DUK_LOCAL void duk__nud_array_literal(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk_regconst_t reg_obj; /* result reg */ + duk_regconst_t reg_temp; /* temp reg */ + duk_regconst_t temp_start; /* temp reg value for start of loop */ + duk_small_uint_t max_init_values; /* max # of values initialized in one MPUTARR set */ + duk_small_uint_t num_values; /* number of values in current MPUTARR set */ + duk_uarridx_t curr_idx; /* current (next) array index */ + duk_uarridx_t start_idx; /* start array index of current MPUTARR set */ + duk_uarridx_t init_idx; /* last array index explicitly initialized, +1 */ + duk_bool_t require_comma; /* next loop requires a comma */ +#if !defined(DUK_USE_PREFER_SIZE) + duk_int_t pc_newarr; + duk_compiler_instr *instr; +#endif + + /* DUK_TOK_LBRACKET already eaten, current token is right after that */ + DUK_ASSERT(comp_ctx->prev_token.t == DUK_TOK_LBRACKET); + + max_init_values = DUK__MAX_ARRAY_INIT_VALUES; /* XXX: depend on available temps? */ + + reg_obj = DUK__ALLOCTEMP(comp_ctx); +#if !defined(DUK_USE_PREFER_SIZE) + pc_newarr = duk__get_current_pc(comp_ctx); +#endif + duk__emit_bc(comp_ctx, DUK_OP_NEWARR, reg_obj); /* XXX: patch initial size hint afterwards? */ + temp_start = DUK__GETTEMP(comp_ctx); + + /* + * Emit initializers in sets of maximum max_init_values. + * Corner cases such as single value initializers do not have + * special handling now. + * + * Elided elements must not be emitted as 'undefined' values, + * because such values would be enumerable (which is incorrect). + * Also note that trailing elisions must be reflected in the + * length of the final array but cause no elements to be actually + * inserted. + */ + + curr_idx = 0; + init_idx = 0; /* tracks maximum initialized index + 1 */ + start_idx = 0; + require_comma = 0; + + for (;;) { + num_values = 0; + DUK__SETTEMP(comp_ctx, temp_start); + + if (comp_ctx->curr_token.t == DUK_TOK_RBRACKET) { + break; + } + + for (;;) { + if (comp_ctx->curr_token.t == DUK_TOK_RBRACKET) { + /* the outer loop will recheck and exit */ + break; + } + + /* comma check */ + if (require_comma) { + if (comp_ctx->curr_token.t == DUK_TOK_COMMA) { + /* comma after a value, expected */ + duk__advance(comp_ctx); + require_comma = 0; + continue; + } else { + goto syntax_error; + } + } else { + if (comp_ctx->curr_token.t == DUK_TOK_COMMA) { + /* elision - flush */ + curr_idx++; + duk__advance(comp_ctx); + /* if num_values > 0, MPUTARR emitted by outer loop after break */ + break; + } + } + /* else an array initializer element */ + + /* initial index */ + if (num_values == 0) { + start_idx = curr_idx; + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__emit_load_int32(comp_ctx, reg_temp, (duk_int32_t) start_idx); + } + + reg_temp = DUK__ALLOCTEMP(comp_ctx); /* alloc temp just in case, to update max temp */ + DUK__SETTEMP(comp_ctx, reg_temp); + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_COMMA /*rbp_flags*/, reg_temp /*forced_reg*/); + DUK__SETTEMP(comp_ctx, reg_temp + 1); + + num_values++; + curr_idx++; + require_comma = 1; + + if (num_values >= max_init_values) { + /* MPUTARR emitted by outer loop */ + break; + } + } + + if (num_values > 0) { + /* - A is a source register (it's not a write target, but used + * to identify the target object) but can be shuffled. + * - B cannot be shuffled normally because it identifies a range + * of registers, the emitter has special handling for this + * (the "no shuffle" flag must not be set). + * - C is a non-register number and cannot be shuffled, but + * never needs to be. + */ + duk__emit_a_b_c(comp_ctx, + DUK_OP_MPUTARR | + DUK__EMIT_FLAG_NO_SHUFFLE_C | + DUK__EMIT_FLAG_A_IS_SOURCE, + reg_obj, + temp_start, + (duk_regconst_t) (num_values + 1)); + init_idx = start_idx + num_values; + + /* num_values and temp_start reset at top of outer loop */ + } + } + + /* Update initil size for NEWARR, doesn't need to be exact and is + * capped at A field limit. + */ +#if !defined(DUK_USE_PREFER_SIZE) + instr = duk__get_instr_ptr(comp_ctx, pc_newarr); + instr->ins |= DUK_ENC_OP_A(0, curr_idx > DUK_BC_A_MAX ? DUK_BC_A_MAX : curr_idx); +#endif + + DUK_ASSERT(comp_ctx->curr_token.t == DUK_TOK_RBRACKET); + duk__advance(comp_ctx); + + DUK_DDD(DUK_DDDPRINT("array literal done, curridx=%ld, initidx=%ld", + (long) curr_idx, (long) init_idx)); + + /* trailing elisions? */ + if (curr_idx > init_idx) { + /* yes, must set array length explicitly */ + DUK_DDD(DUK_DDDPRINT("array literal has trailing elisions which affect its length")); + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__emit_load_int32(comp_ctx, reg_temp, (duk_int_t) curr_idx); + duk__emit_a_bc(comp_ctx, + DUK_OP_SETALEN | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_obj, + reg_temp); + } + + DUK__SETTEMP(comp_ctx, temp_start); + + duk__ivalue_regconst(res, reg_obj); + return; + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_ARRAY_LITERAL); + DUK_WO_NORETURN(return;); +} + +typedef struct { + duk_regconst_t reg_obj; + duk_regconst_t temp_start; + duk_small_uint_t num_pairs; + duk_small_uint_t num_total_pairs; +} duk__objlit_state; + +DUK_LOCAL void duk__objlit_flush_keys(duk_compiler_ctx *comp_ctx, duk__objlit_state *st) { + if (st->num_pairs > 0) { + /* - A is a source register (it's not a write target, but used + * to identify the target object) but can be shuffled. + * - B cannot be shuffled normally because it identifies a range + * of registers, the emitter has special handling for this + * (the "no shuffle" flag must not be set). + * - C is a non-register number and cannot be shuffled, but + * never needs to be. + */ + DUK_ASSERT(st->num_pairs > 0); + duk__emit_a_b_c(comp_ctx, + DUK_OP_MPUTOBJ | + DUK__EMIT_FLAG_NO_SHUFFLE_C | + DUK__EMIT_FLAG_A_IS_SOURCE, + st->reg_obj, + st->temp_start, + (duk_regconst_t) (st->num_pairs * 2)); + st->num_total_pairs += st->num_pairs; + st->num_pairs = 0; + } + DUK__SETTEMP(comp_ctx, st->temp_start); +} + +DUK_LOCAL duk_bool_t duk__objlit_load_key(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_token *tok, duk_regconst_t reg_temp) { + if (tok->t_nores == DUK_TOK_IDENTIFIER || tok->t_nores == DUK_TOK_STRING) { + /* same handling for identifiers and strings */ + DUK_ASSERT(tok->str1 != NULL); + duk_push_hstring(comp_ctx->thr, tok->str1); + } else if (tok->t == DUK_TOK_NUMBER) { + /* numbers can be loaded as numbers and coerced on the fly */ + duk_push_number(comp_ctx->thr, tok->num); + } else { + return 1; /* error */ + } + + duk__ivalue_plain_fromstack(comp_ctx, res); + DUK__SETTEMP(comp_ctx, reg_temp + 1); + duk__ivalue_toforcedreg(comp_ctx, res, reg_temp); + DUK__SETTEMP(comp_ctx, reg_temp + 1); + return 0; +} + +DUK_LOCAL void duk__nud_object_literal(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk__objlit_state st; + duk_regconst_t reg_temp; /* temp reg */ + duk_small_uint_t max_init_pairs; /* max # of key-value pairs initialized in one MPUTOBJ set */ + duk_bool_t first; /* first value: comma must not precede the value */ + duk_bool_t is_set, is_get; /* temps */ +#if !defined(DUK_USE_PREFER_SIZE) + duk_int_t pc_newobj; + duk_compiler_instr *instr; +#endif + + DUK_ASSERT(comp_ctx->prev_token.t == DUK_TOK_LCURLY); + + max_init_pairs = DUK__MAX_OBJECT_INIT_PAIRS; /* XXX: depend on available temps? */ + + st.reg_obj = DUK__ALLOCTEMP(comp_ctx); /* target object */ + st.temp_start = DUK__GETTEMP(comp_ctx); /* start of MPUTOBJ argument list */ + st.num_pairs = 0; /* number of key/value pairs emitted for current MPUTOBJ set */ + st.num_total_pairs = 0; /* number of key/value pairs emitted overall */ + +#if !defined(DUK_USE_PREFER_SIZE) + pc_newobj = duk__get_current_pc(comp_ctx); +#endif + duk__emit_bc(comp_ctx, DUK_OP_NEWOBJ, st.reg_obj); + + /* + * Emit initializers in sets of maximum max_init_pairs keys. + * Setter/getter is handled separately and terminates the + * current set of initializer values. Corner cases such as + * single value initializers do not have special handling now. + */ + + first = 1; + for (;;) { + /* + * ES5 and ES2015+ provide a lot of different PropertyDefinition + * formats, see http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer. + * + * PropertyName can be IdentifierName (includes reserved words), a string + * literal, or a number literal. Note that IdentifierName allows 'get' and + * 'set' too, so we need to look ahead to the next token to distinguish: + * + * { get : 1 } + * + * and + * + * { get foo() { return 1 } } + * { get get() { return 1 } } // 'get' as getter propertyname + * + * Finally, a trailing comma is allowed. + * + * Key name is coerced to string at compile time (and ends up as a + * a string constant) even for numeric keys (e.g. "{1:'foo'}"). + * These could be emitted using e.g. LDINT, but that seems hardly + * worth the effort and would increase code size. + */ + + DUK_DDD(DUK_DDDPRINT("object literal loop, curr_token->t = %ld", + (long) comp_ctx->curr_token.t)); + + if (comp_ctx->curr_token.t == DUK_TOK_RCURLY) { + break; + } + + if (first) { + first = 0; + } else { + if (comp_ctx->curr_token.t != DUK_TOK_COMMA) { + goto syntax_error; + } + duk__advance(comp_ctx); + if (comp_ctx->curr_token.t == DUK_TOK_RCURLY) { + /* trailing comma followed by rcurly */ + break; + } + } + + /* Advance to get one step of lookup. */ + duk__advance(comp_ctx); + + /* Flush current MPUTOBJ if enough many pairs gathered. */ + if (st.num_pairs >= max_init_pairs) { + duk__objlit_flush_keys(comp_ctx, &st); + DUK_ASSERT(st.num_pairs == 0); + } + + /* Reset temp register state and reserve reg_temp and + * reg_temp + 1 for handling the current property. + */ + DUK__SETTEMP(comp_ctx, st.temp_start + 2 * (duk_regconst_t) st.num_pairs); + reg_temp = DUK__ALLOCTEMPS(comp_ctx, 2); + + /* NOTE: "get" and "set" are not officially ReservedWords and the lexer + * currently treats them always like ordinary identifiers (DUK_TOK_GET + * and DUK_TOK_SET are unused). They need to be detected based on the + * identifier string content. + */ + + is_get = (comp_ctx->prev_token.t == DUK_TOK_IDENTIFIER && + comp_ctx->prev_token.str1 == DUK_HTHREAD_STRING_GET(thr)); + is_set = (comp_ctx->prev_token.t == DUK_TOK_IDENTIFIER && + comp_ctx->prev_token.str1 == DUK_HTHREAD_STRING_SET(thr)); + if ((is_get || is_set) && comp_ctx->curr_token.t != DUK_TOK_COLON) { + /* getter/setter */ + duk_int_t fnum; + + duk__objlit_flush_keys(comp_ctx, &st); + DUK_ASSERT(DUK__GETTEMP(comp_ctx) == st.temp_start); /* 2 regs are guaranteed to be allocated w.r.t. temp_max */ + reg_temp = DUK__ALLOCTEMPS(comp_ctx, 2); + + if (duk__objlit_load_key(comp_ctx, res, &comp_ctx->curr_token, reg_temp) != 0) { + goto syntax_error; + } + + /* curr_token = get/set name */ + fnum = duk__parse_func_like_fnum(comp_ctx, DUK__FUNC_FLAG_GETSET); + + duk__emit_a_bc(comp_ctx, + DUK_OP_CLOSURE, + st.temp_start + 1, + (duk_regconst_t) fnum); + + /* Slot C is used in a non-standard fashion (range of regs), + * emitter code has special handling for it (must not set the + * "no shuffle" flag). + */ + duk__emit_a_bc(comp_ctx, + (is_get ? DUK_OP_INITGET : DUK_OP_INITSET) | DUK__EMIT_FLAG_A_IS_SOURCE, + st.reg_obj, + st.temp_start); /* temp_start+0 = key, temp_start+1 = closure */ + + DUK_ASSERT(st.num_pairs == 0); /* temp state is reset on next loop */ +#if defined(DUK_USE_ES6) + } else if (comp_ctx->prev_token.t == DUK_TOK_IDENTIFIER && + (comp_ctx->curr_token.t == DUK_TOK_COMMA || comp_ctx->curr_token.t == DUK_TOK_RCURLY)) { + duk_bool_t load_rc; + + load_rc = duk__objlit_load_key(comp_ctx, res, &comp_ctx->prev_token, reg_temp); + DUK_UNREF(load_rc); + DUK_ASSERT(load_rc == 0); /* always succeeds because token is identifier */ + + duk__ivalue_var_hstring(comp_ctx, res, comp_ctx->prev_token.str1); + DUK_ASSERT(DUK__GETTEMP(comp_ctx) == reg_temp + 1); + duk__ivalue_toforcedreg(comp_ctx, res, reg_temp + 1); + + st.num_pairs++; + } else if ((comp_ctx->prev_token.t == DUK_TOK_IDENTIFIER || + comp_ctx->prev_token.t == DUK_TOK_STRING || + comp_ctx->prev_token.t == DUK_TOK_NUMBER) && + comp_ctx->curr_token.t == DUK_TOK_LPAREN) { + duk_int_t fnum; + + /* Parsing-wise there's a small hickup here: the token parsing + * state is one step too advanced for the function parse helper + * compared to other cases. The current solution is an extra + * flag to indicate whether function parsing should use the + * current or the previous token to starting parsing from. + */ + + if (duk__objlit_load_key(comp_ctx, res, &comp_ctx->prev_token, reg_temp) != 0) { + goto syntax_error; + } + + fnum = duk__parse_func_like_fnum(comp_ctx, DUK__FUNC_FLAG_USE_PREVTOKEN | DUK__FUNC_FLAG_METDEF); + + duk__emit_a_bc(comp_ctx, + DUK_OP_CLOSURE, + reg_temp + 1, + (duk_regconst_t) fnum); + + st.num_pairs++; +#endif /* DUK_USE_ES6 */ + } else { +#if defined(DUK_USE_ES6) + if (comp_ctx->prev_token.t == DUK_TOK_LBRACKET) { + /* ES2015 computed property name. Executor ToPropertyKey() + * coerces the key at runtime. + */ + DUK__SETTEMP(comp_ctx, reg_temp); + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_FOR_EXPR, reg_temp); + duk__advance_expect(comp_ctx, DUK_TOK_RBRACKET); + + /* XXX: If next token is '(' we're dealing with + * the method shorthand with a computed name, + * e.g. { [Symbol.for('foo')](a,b) {} }. This + * form is not yet supported and causes a + * SyntaxError on the DUK_TOK_COLON check below. + */ + } + else +#endif /* DUK_USE_ES6 */ + { + if (duk__objlit_load_key(comp_ctx, res, &comp_ctx->prev_token, reg_temp) != 0) { + goto syntax_error; + } + } + + duk__advance_expect(comp_ctx, DUK_TOK_COLON); + + DUK__SETTEMP(comp_ctx, reg_temp + 1); + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_COMMA /*rbp_flags*/, reg_temp + 1 /*forced_reg*/); + + st.num_pairs++; + } + } /* property loop */ + + /* Flush remaining properties. */ + duk__objlit_flush_keys(comp_ctx, &st); + DUK_ASSERT(st.num_pairs == 0); + DUK_ASSERT(DUK__GETTEMP(comp_ctx) == st.temp_start); + + /* Update initial size for NEWOBJ. The init size doesn't need to be + * exact as the purpose is just to avoid object resizes in common + * cases. The size is capped to field A limit, and will be too high + * if the object literal contains duplicate keys (this is harmless but + * increases memory traffic if the object is compacted later on). + */ +#if !defined(DUK_USE_PREFER_SIZE) + instr = duk__get_instr_ptr(comp_ctx, pc_newobj); + instr->ins |= DUK_ENC_OP_A(0, st.num_total_pairs > DUK_BC_A_MAX ? DUK_BC_A_MAX : st.num_total_pairs); +#endif + + DUK_ASSERT(comp_ctx->curr_token.t == DUK_TOK_RCURLY); + duk__advance(comp_ctx); /* No RegExp after object literal. */ + + duk__ivalue_regconst(res, st.reg_obj); + return; + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_OBJECT_LITERAL); + DUK_WO_NORETURN(return;); +} + +/* Parse argument list. Arguments are written to temps starting from + * "next temp". Returns number of arguments parsed. Expects left paren + * to be already eaten, and eats the right paren before returning. + */ +DUK_LOCAL duk_int_t duk__parse_arguments(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_int_t nargs = 0; + duk_regconst_t reg_temp; + + /* Note: expect that caller has already eaten the left paren */ + + DUK_DDD(DUK_DDDPRINT("start parsing arguments, prev_token.t=%ld, curr_token.t=%ld", + (long) comp_ctx->prev_token.t, (long) comp_ctx->curr_token.t)); + + for (;;) { + if (comp_ctx->curr_token.t == DUK_TOK_RPAREN) { + break; + } + if (nargs > 0) { + duk__advance_expect(comp_ctx, DUK_TOK_COMMA); + } + + /* We want the argument expression value to go to "next temp" + * without additional moves. That should almost always be the + * case, but we double check after expression parsing. + * + * This is not the cleanest possible approach. + */ + + reg_temp = DUK__ALLOCTEMP(comp_ctx); /* bump up "allocated" reg count, just in case */ + DUK__SETTEMP(comp_ctx, reg_temp); + + /* binding power must be high enough to NOT allow comma expressions directly */ + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_COMMA /*rbp_flags*/, reg_temp); /* always allow 'in', coerce to 'tr' just in case */ + + DUK__SETTEMP(comp_ctx, reg_temp + 1); + nargs++; + + DUK_DDD(DUK_DDDPRINT("argument #%ld written into reg %ld", (long) nargs, (long) reg_temp)); + } + + /* eat the right paren */ + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* RegExp mode does not matter. */ + + DUK_DDD(DUK_DDDPRINT("end parsing arguments")); + + return nargs; +} + +DUK_LOCAL duk_bool_t duk__expr_is_empty(duk_compiler_ctx *comp_ctx) { + /* empty expressions can be detected conveniently with nud/led counts */ + return (comp_ctx->curr_func.nud_count == 0) && + (comp_ctx->curr_func.led_count == 0); +} + +DUK_LOCAL void duk__expr_nud(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk_token *tk; + duk_regconst_t temp_at_entry; + duk_small_uint_t tok; + duk_uint32_t args; /* temp variable to pass constants and flags to shared code */ + + /* + * ctx->prev_token token to process with duk__expr_nud() + * ctx->curr_token updated by caller + * + * Note: the token in the switch below has already been eaten. + */ + + temp_at_entry = DUK__GETTEMP(comp_ctx); + + comp_ctx->curr_func.nud_count++; + + tk = &comp_ctx->prev_token; + tok = tk->t; + res->t = DUK_IVAL_NONE; + + DUK_DDD(DUK_DDDPRINT("duk__expr_nud(), prev_token.t=%ld, allow_in=%ld, paren_level=%ld", + (long) tk->t, (long) comp_ctx->curr_func.allow_in, (long) comp_ctx->curr_func.paren_level)); + + switch (tok) { + + /* PRIMARY EXPRESSIONS */ + + case DUK_TOK_THIS: { + duk_regconst_t reg_temp; + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__emit_bc(comp_ctx, + DUK_OP_LDTHIS, + reg_temp); + duk__ivalue_regconst(res, reg_temp); + return; + } + case DUK_TOK_IDENTIFIER: { + duk__ivalue_var_hstring(comp_ctx, res, tk->str1); + return; + } + case DUK_TOK_NULL: { + duk_push_null(thr); + goto plain_value; + } + case DUK_TOK_TRUE: { + duk_push_true(thr); + goto plain_value; + } + case DUK_TOK_FALSE: { + duk_push_false(thr); + goto plain_value; + } + case DUK_TOK_NUMBER: { + duk_push_number(thr, tk->num); + goto plain_value; + } + case DUK_TOK_STRING: { + DUK_ASSERT(tk->str1 != NULL); + duk_push_hstring(thr, tk->str1); + goto plain_value; + } + case DUK_TOK_REGEXP: { +#if defined(DUK_USE_REGEXP_SUPPORT) + duk_regconst_t reg_temp; + duk_regconst_t rc_re_bytecode; /* const */ + duk_regconst_t rc_re_source; /* const */ + + DUK_ASSERT(tk->str1 != NULL); + DUK_ASSERT(tk->str2 != NULL); + + DUK_DDD(DUK_DDDPRINT("emitting regexp op, str1=%!O, str2=%!O", + (duk_heaphdr *) tk->str1, + (duk_heaphdr *) tk->str2)); + + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk_push_hstring(thr, tk->str1); + duk_push_hstring(thr, tk->str2); + + /* [ ... pattern flags ] */ + + duk_regexp_compile(thr); + + /* [ ... escaped_source bytecode ] */ + + rc_re_bytecode = duk__getconst(comp_ctx); + rc_re_source = duk__getconst(comp_ctx); + + duk__emit_a_b_c(comp_ctx, + DUK_OP_REGEXP | DUK__EMIT_FLAG_BC_REGCONST, + reg_temp /*a*/, + rc_re_bytecode /*b*/, + rc_re_source /*c*/); + + duk__ivalue_regconst(res, reg_temp); + return; +#else /* DUK_USE_REGEXP_SUPPORT */ + goto syntax_error; +#endif /* DUK_USE_REGEXP_SUPPORT */ + } + case DUK_TOK_LBRACKET: { + DUK_DDD(DUK_DDDPRINT("parsing array literal")); + duk__nud_array_literal(comp_ctx, res); + return; + } + case DUK_TOK_LCURLY: { + DUK_DDD(DUK_DDDPRINT("parsing object literal")); + duk__nud_object_literal(comp_ctx, res); + return; + } + case DUK_TOK_LPAREN: { + duk_bool_t prev_allow_in; + + comp_ctx->curr_func.paren_level++; + prev_allow_in = comp_ctx->curr_func.allow_in; + comp_ctx->curr_func.allow_in = 1; /* reset 'allow_in' for parenthesized expression */ + + duk__expr(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); /* Expression, terminates at a ')' */ + + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* No RegExp after parenthesized expression. */ + comp_ctx->curr_func.allow_in = prev_allow_in; + comp_ctx->curr_func.paren_level--; + return; + } + + /* MEMBER/NEW/CALL EXPRESSIONS */ + + case DUK_TOK_NEW: { + /* + * Parsing an expression starting with 'new' is tricky because + * there are multiple possible productions deriving from + * LeftHandSideExpression which begin with 'new'. + * + * We currently resort to one-token lookahead to distinguish the + * cases. Hopefully this is correct. The binding power must be + * such that parsing ends at an LPAREN (CallExpression) but not at + * a PERIOD or LBRACKET (MemberExpression). + * + * See doc/compiler.rst for discussion on the parsing approach, + * and testcases/test-dev-new.js for a bunch of documented tests. + */ + + duk_regconst_t reg_target; + duk_int_t nargs; + + DUK_DDD(DUK_DDDPRINT("begin parsing new expression")); + + reg_target = DUK__ALLOCTEMPS(comp_ctx, 2); + +#if defined(DUK_USE_ES6) + if (comp_ctx->curr_token.t == DUK_TOK_PERIOD) { + /* new.target */ + DUK_DDD(DUK_DDDPRINT("new.target")); + duk__advance(comp_ctx); + if (comp_ctx->curr_token.t_nores != DUK_TOK_IDENTIFIER || + !duk_hstring_equals_ascii_cstring(comp_ctx->curr_token.str1, "target")) { + goto syntax_error_newtarget; + } + if (comp_ctx->curr_func.is_global) { + goto syntax_error_newtarget; + } + duk__advance(comp_ctx); + duk__emit_bc(comp_ctx, + DUK_OP_NEWTARGET, + reg_target); + duk__ivalue_regconst(res, reg_target); + return; + } +#endif /* DUK_USE_ES6 */ + + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_CALL /*rbp_flags*/, reg_target /*forced_reg*/); + duk__emit_bc(comp_ctx, DUK_OP_NEWOBJ, reg_target + 1); /* default instance */ + DUK__SETTEMP(comp_ctx, reg_target + 2); + + /* XXX: 'new obj.noSuch()' doesn't use GETPROPC now which + * makes the error message worse than for obj.noSuch(). + */ + + if (comp_ctx->curr_token.t == DUK_TOK_LPAREN) { + /* 'new' MemberExpression Arguments */ + DUK_DDD(DUK_DDDPRINT("new expression has argument list")); + duk__advance(comp_ctx); + nargs = duk__parse_arguments(comp_ctx, res); /* parse args starting from "next temp", reg_target + 1 */ + /* right paren eaten */ + } else { + /* 'new' MemberExpression */ + DUK_DDD(DUK_DDDPRINT("new expression has no argument list")); + nargs = 0; + } + + duk__emit_a_bc(comp_ctx, + DUK_OP_CALL0 | DUK_BC_CALL_FLAG_CONSTRUCT, + nargs /*num_args*/, + reg_target /*target*/); + + DUK_DDD(DUK_DDDPRINT("end parsing new expression")); + + duk__ivalue_regconst(res, reg_target); + return; + } + + /* FUNCTION EXPRESSIONS */ + + case DUK_TOK_FUNCTION: { + /* Function expression. Note that any statement beginning with 'function' + * is handled by the statement parser as a function declaration, or a + * non-standard function expression/statement (or a SyntaxError). We only + * handle actual function expressions (occurring inside an expression) here. + * + * O(depth^2) parse count for inner functions is handled by recording a + * lexer offset on the first compilation pass, so that the function can + * be efficiently skipped on the second pass. This is encapsulated into + * duk__parse_func_like_fnum(). + */ + + duk_regconst_t reg_temp; + duk_int_t fnum; + + reg_temp = DUK__ALLOCTEMP(comp_ctx); + + /* curr_token follows 'function' */ + fnum = duk__parse_func_like_fnum(comp_ctx, 0 /*flags*/); + DUK_DDD(DUK_DDDPRINT("parsed inner function -> fnum %ld", (long) fnum)); + + duk__emit_a_bc(comp_ctx, + DUK_OP_CLOSURE, + reg_temp /*a*/, + (duk_regconst_t) fnum /*bc*/); + + duk__ivalue_regconst(res, reg_temp); + return; + } + + /* UNARY EXPRESSIONS */ + + case DUK_TOK_DELETE: { + /* Delete semantics are a bit tricky. The description in E5 specification + * is kind of confusing, because it distinguishes between resolvability of + * a reference (which is only known at runtime) seemingly at compile time + * (= SyntaxError throwing). + */ + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + if (res->t == DUK_IVAL_VAR) { + /* not allowed in strict mode, regardless of whether resolves; + * in non-strict mode DELVAR handles both non-resolving and + * resolving cases (the specification description is a bit confusing). + */ + + duk_regconst_t reg_temp; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + if (comp_ctx->curr_func.is_strict) { + DUK_ERROR_SYNTAX(thr, DUK_STR_CANNOT_DELETE_IDENTIFIER); + DUK_WO_NORETURN(return;); + } + + DUK__SETTEMP(comp_ctx, temp_at_entry); + reg_temp = DUK__ALLOCTEMP(comp_ctx); + + duk_dup(thr, res->x1.valstack_idx); + if (duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + /* register bound variables are non-configurable -> always false */ + duk__emit_bc(comp_ctx, + DUK_OP_LDFALSE, + reg_temp); + } else { + duk_dup(thr, res->x1.valstack_idx); + rc_varname = duk__getconst(comp_ctx); + duk__emit_a_bc(comp_ctx, + DUK_OP_DELVAR, + reg_temp, + rc_varname); + } + duk__ivalue_regconst(res, reg_temp); + } else if (res->t == DUK_IVAL_PROP) { + duk_regconst_t reg_temp; + duk_regconst_t reg_obj; + duk_regconst_t rc_key; + + DUK__SETTEMP(comp_ctx, temp_at_entry); + reg_temp = DUK__ALLOCTEMP(comp_ctx); + reg_obj = duk__ispec_toregconst_raw(comp_ctx, &res->x1, -1 /*forced_reg*/, 0 /*flags*/); /* don't allow const */ + rc_key = duk__ispec_toregconst_raw(comp_ctx, &res->x2, -1 /*forced_reg*/, DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); + duk__emit_a_b_c(comp_ctx, + DUK_OP_DELPROP | DUK__EMIT_FLAG_BC_REGCONST, + reg_temp, + reg_obj, + rc_key); + + duk__ivalue_regconst(res, reg_temp); + } else { + /* non-Reference deletion is always 'true', even in strict mode */ + duk_push_true(thr); + goto plain_value; + } + return; + } + case DUK_TOK_VOID: { + duk__expr_toplain_ignore(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + duk_push_undefined(thr); + goto plain_value; + } + case DUK_TOK_TYPEOF: { + /* 'typeof' must handle unresolvable references without throwing + * a ReferenceError (E5 Section 11.4.3). Register mapped values + * will never be unresolvable so special handling is only required + * when an identifier is a "slow path" one. + */ + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + + if (res->t == DUK_IVAL_VAR) { + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + duk_regconst_t reg_temp; + + duk_dup(thr, res->x1.valstack_idx); + if (!duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + DUK_DDD(DUK_DDDPRINT("typeof for an identifier name which could not be resolved " + "at compile time, need to use special run-time handling")); + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__emit_a_bc(comp_ctx, + DUK_OP_TYPEOFID, + reg_temp, + rc_varname); + duk__ivalue_regconst(res, reg_temp); + return; + } + } + + args = DUK_OP_TYPEOF; + goto unary; + } + case DUK_TOK_INCREMENT: { + args = (DUK_OP_PREINCP << 8) + DUK_OP_PREINCR; + goto preincdec; + } + case DUK_TOK_DECREMENT: { + args = (DUK_OP_PREDECP << 8) + DUK_OP_PREDECR; + goto preincdec; + } + case DUK_TOK_ADD: { + /* unary plus */ + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + if (res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_VALUE && + duk_is_number(thr, res->x1.valstack_idx)) { + /* unary plus of a number is identity */ + return; + } + args = DUK_OP_UNP; + goto unary; + } + case DUK_TOK_SUB: { + /* unary minus */ + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + if (res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_VALUE && + duk_is_number(thr, res->x1.valstack_idx)) { + /* this optimization is important to handle negative literals + * (which are not directly provided by the lexical grammar) + */ + duk_tval *tv_num; + duk_double_union du; + + tv_num = DUK_GET_TVAL_POSIDX(thr, res->x1.valstack_idx); + DUK_ASSERT(tv_num != NULL); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_num)); + du.d = DUK_TVAL_GET_NUMBER(tv_num); + du.d = -du.d; + DUK_DBLUNION_NORMALIZE_NAN_CHECK(&du); + DUK_TVAL_SET_NUMBER(tv_num, du.d); + return; + } + args = DUK_OP_UNM; + goto unary; + } + case DUK_TOK_BNOT: { + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + args = DUK_OP_BNOT; + goto unary; + } + case DUK_TOK_LNOT: { + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + if (res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_VALUE) { + /* Very minimal inlining to handle common idioms '!0' and '!1', + * and also boolean arguments like '!false' and '!true'. + */ + duk_tval *tv_val; + + tv_val = DUK_GET_TVAL_POSIDX(thr, res->x1.valstack_idx); + DUK_ASSERT(tv_val != NULL); + if (DUK_TVAL_IS_NUMBER(tv_val)) { + duk_double_t d; + d = DUK_TVAL_GET_NUMBER(tv_val); + if (duk_double_equals(d, 0.0)) { + /* Matches both +0 and -0 on purpose. */ + DUK_DDD(DUK_DDDPRINT("inlined lnot: !0 -> true")); + DUK_TVAL_SET_BOOLEAN_TRUE(tv_val); + return; + } else if (duk_double_equals(d, 1.0)) { + DUK_DDD(DUK_DDDPRINT("inlined lnot: !1 -> false")); + DUK_TVAL_SET_BOOLEAN_FALSE(tv_val); + return; + } + } else if (DUK_TVAL_IS_BOOLEAN(tv_val)) { + duk_small_uint_t v; + v = DUK_TVAL_GET_BOOLEAN(tv_val); + DUK_DDD(DUK_DDDPRINT("inlined lnot boolean: %ld", (long) v)); + DUK_ASSERT(v == 0 || v == 1); + DUK_TVAL_SET_BOOLEAN(tv_val, v ^ 0x01); + return; + } + } + args = DUK_OP_LNOT; + goto unary; + } + + } /* end switch */ + + DUK_ERROR_SYNTAX(thr, DUK_STR_PARSE_ERROR); + DUK_WO_NORETURN(return;); + + unary: + { + /* Unary opcodes use just the 'BC' register source because it + * matches current shuffle limits, and maps cleanly to 16 high + * bits of the opcode. + */ + + duk_regconst_t reg_src, reg_res; + + reg_src = duk__ivalue_toregconst_raw(comp_ctx, res, -1 /*forced_reg*/, 0 /*flags*/); + if (DUK__ISREG_TEMP(comp_ctx, reg_src)) { + reg_res = reg_src; + } else { + reg_res = DUK__ALLOCTEMP(comp_ctx); + } + duk__emit_a_bc(comp_ctx, + args, + reg_res, + reg_src); + duk__ivalue_regconst(res, reg_res); + return; + } + + preincdec: + { + /* preincrement and predecrement */ + duk_regconst_t reg_res; + duk_small_uint_t args_op1 = args & 0xff; /* DUK_OP_PREINCR/DUK_OP_PREDECR */ + duk_small_uint_t args_op2 = args >> 8; /* DUK_OP_PREINCP_RR/DUK_OP_PREDECP_RR */ + + /* Specific assumptions for opcode numbering. */ + DUK_ASSERT(DUK_OP_PREINCR + 4 == DUK_OP_PREINCV); + DUK_ASSERT(DUK_OP_PREDECR + 4 == DUK_OP_PREDECV); + + reg_res = DUK__ALLOCTEMP(comp_ctx); + + duk__expr(comp_ctx, res, DUK__BP_MULTIPLICATIVE /*rbp_flags*/); /* UnaryExpression */ + if (res->t == DUK_IVAL_VAR) { + duk_hstring *h_varname; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + h_varname = duk_known_hstring(thr, res->x1.valstack_idx); + + if (duk__hstring_is_eval_or_arguments_in_strict_mode(comp_ctx, h_varname)) { + goto syntax_error; + } + + duk_dup(thr, res->x1.valstack_idx); + if (duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + duk__emit_a_bc(comp_ctx, + args_op1, /* e.g. DUK_OP_PREINCR */ + reg_res, + reg_varbind); + } else { + duk__emit_a_bc(comp_ctx, + args_op1 + 4, /* e.g. DUK_OP_PREINCV */ + reg_res, + rc_varname); + } + + DUK_DDD(DUK_DDDPRINT("preincdec to '%!O' -> reg_varbind=%ld, rc_varname=%ld", + (duk_heaphdr *) h_varname, (long) reg_varbind, (long) rc_varname)); + } else if (res->t == DUK_IVAL_PROP) { + duk_regconst_t reg_obj; /* allocate to reg only (not const) */ + duk_regconst_t rc_key; + reg_obj = duk__ispec_toregconst_raw(comp_ctx, &res->x1, -1 /*forced_reg*/, 0 /*flags*/); /* don't allow const */ + rc_key = duk__ispec_toregconst_raw(comp_ctx, &res->x2, -1 /*forced_reg*/, DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); + duk__emit_a_b_c(comp_ctx, + args_op2 | DUK__EMIT_FLAG_BC_REGCONST, /* e.g. DUK_OP_PREINCP */ + reg_res, + reg_obj, + rc_key); + } else { + /* Technically return value is not needed because INVLHS will + * unconditially throw a ReferenceError. Coercion is necessary + * for proper semantics (consider ToNumber() called for an object). + * Use DUK_OP_UNP with a dummy register to get ToNumber(). + */ + + duk__ivalue_toforcedreg(comp_ctx, res, reg_res); + duk__emit_bc(comp_ctx, + DUK_OP_UNP, + reg_res); /* for side effects, result ignored */ + duk__emit_op_only(comp_ctx, + DUK_OP_INVLHS); + } + DUK__SETTEMP(comp_ctx, reg_res + 1); + duk__ivalue_regconst(res, reg_res); + return; + } + + plain_value: + { + /* Stack top contains plain value */ + duk__ivalue_plain_fromstack(comp_ctx, res); + return; + } + +#if defined(DUK_USE_ES6) + syntax_error_newtarget: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_NEWTARGET); + DUK_WO_NORETURN(return;); +#endif + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_EXPRESSION); + DUK_WO_NORETURN(return;); +} + +/* XXX: add flag to indicate whether caller cares about return value; this + * affects e.g. handling of assignment expressions. This change needs API + * changes elsewhere too. + */ +DUK_LOCAL void duk__expr_led(duk_compiler_ctx *comp_ctx, duk_ivalue *left, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk_token *tk; + duk_small_uint_t tok; + duk_uint32_t args; /* temp variable to pass constants and flags to shared code */ + + /* + * ctx->prev_token token to process with duk__expr_led() + * ctx->curr_token updated by caller + */ + + comp_ctx->curr_func.led_count++; + + /* The token in the switch has already been eaten here */ + tk = &comp_ctx->prev_token; + tok = tk->t; + + DUK_DDD(DUK_DDDPRINT("duk__expr_led(), prev_token.t=%ld, allow_in=%ld, paren_level=%ld", + (long) tk->t, (long) comp_ctx->curr_func.allow_in, (long) comp_ctx->curr_func.paren_level)); + + /* XXX: default priority for infix operators is duk__expr_lbp(tok) -> get it here? */ + + switch (tok) { + + /* PRIMARY EXPRESSIONS */ + + case DUK_TOK_PERIOD: { + /* Property access expressions are critical for correct LHS ordering, + * see comments in duk__expr()! + * + * A conservative approach would be to use duk__ivalue_totempconst() + * for 'left'. However, allowing a reg-bound variable seems safe here + * and is nice because "foo.bar" is a common expression. If the ivalue + * is used in an expression a GETPROP will occur before any changes to + * the base value can occur. If the ivalue is used as an assignment + * LHS, the assignment code will ensure the base value is safe from + * RHS mutation. + */ + + /* XXX: This now coerces an identifier into a GETVAR to a temp, which + * causes an extra LDREG in call setup. It's sufficient to coerce to a + * unary ivalue? + */ + duk__ivalue_toplain(comp_ctx, left); + + /* NB: must accept reserved words as property name */ + if (comp_ctx->curr_token.t_nores != DUK_TOK_IDENTIFIER) { + DUK_ERROR_SYNTAX(thr, DUK_STR_EXPECTED_IDENTIFIER); + DUK_WO_NORETURN(return;); + } + + res->t = DUK_IVAL_PROP; + duk__copy_ispec(comp_ctx, &left->x1, &res->x1); /* left.x1 -> res.x1 */ + DUK_ASSERT(comp_ctx->curr_token.str1 != NULL); + duk_push_hstring(thr, comp_ctx->curr_token.str1); + duk_replace(thr, res->x2.valstack_idx); + res->x2.t = DUK_ISPEC_VALUE; + + /* special RegExp literal handling after IdentifierName */ + comp_ctx->curr_func.reject_regexp_in_adv = 1; + + duk__advance(comp_ctx); + return; + } + case DUK_TOK_LBRACKET: { + /* Property access expressions are critical for correct LHS ordering, + * see comments in duk__expr()! + */ + + /* XXX: optimize temp reg use */ + /* XXX: similar coercion issue as in DUK_TOK_PERIOD */ + /* XXX: coerce to regs? it might be better for enumeration use, where the + * same PROP ivalue is used multiple times. Or perhaps coerce PROP further + * there? + */ + /* XXX: for simple cases like x['y'] an unnecessary LDREG is + * emitted for the base value; could avoid it if we knew that + * the key expression is safe (e.g. just a single literal). + */ + + /* The 'left' value must not be a register bound variable + * because it may be mutated during the rest of the expression + * and E5.1 Section 11.2.1 specifies the order of evaluation + * so that the base value is evaluated first. + * See: test-bug-nested-prop-mutate.js. + */ + duk__ivalue_totempconst(comp_ctx, left); + duk__expr_toplain(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); /* Expression, ']' terminates */ + duk__advance_expect(comp_ctx, DUK_TOK_RBRACKET); + + res->t = DUK_IVAL_PROP; + duk__copy_ispec(comp_ctx, &res->x1, &res->x2); /* res.x1 -> res.x2 */ + duk__copy_ispec(comp_ctx, &left->x1, &res->x1); /* left.x1 -> res.x1 */ + return; + } + case DUK_TOK_LPAREN: { + /* function call */ + duk_regconst_t reg_cs = DUK__ALLOCTEMPS(comp_ctx, 2); + duk_int_t nargs; + duk_small_uint_t call_op = DUK_OP_CALL0; + + /* XXX: attempt to get the call result to "next temp" whenever + * possible to avoid unnecessary register shuffles. + */ + + /* + * Setup call: target and 'this' binding. Three cases: + * + * 1. Identifier base (e.g. "foo()") + * 2. Property base (e.g. "foo.bar()") + * 3. Register base (e.g. "foo()()"; i.e. when a return value is a function) + */ + + if (left->t == DUK_IVAL_VAR) { + duk_hstring *h_varname; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + DUK_DDD(DUK_DDDPRINT("function call with identifier base")); + + h_varname = duk_known_hstring(thr, left->x1.valstack_idx); + if (h_varname == DUK_HTHREAD_STRING_EVAL(thr)) { + /* Potential direct eval call detected, flag the CALL + * so that a run-time "direct eval" check is made and + * special behavior may be triggered. Note that this + * does not prevent 'eval' from being register bound. + */ + DUK_DDD(DUK_DDDPRINT("function call with identifier 'eval' " + "-> using EVALCALL, marking function " + "as may_direct_eval")); + call_op |= DUK_BC_CALL_FLAG_CALLED_AS_EVAL; + comp_ctx->curr_func.may_direct_eval = 1; + } + + duk_dup(thr, left->x1.valstack_idx); + if (duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + duk__emit_a_bc(comp_ctx, + DUK_OP_CSREG | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_varbind, + reg_cs + 0); + } else { + /* XXX: expand target register or constant field to + * reduce shuffling. + */ + DUK_ASSERT(DUK__ISCONST(rc_varname)); + duk__emit_a_b(comp_ctx, + DUK_OP_CSVAR | DUK__EMIT_FLAG_BC_REGCONST, + reg_cs + 0, + rc_varname); + } + } else if (left->t == DUK_IVAL_PROP) { + /* Call through a property lookup, E5 Section 11.2.3, step 6.a.i, + * E5 Section 10.4.3. There used to be a separate CSPROP opcode + * but a typical call setup took 3 opcodes (e.g. LDREG, LDCONST, + * CSPROP) and the same can be achieved with ordinary loads. + */ +#if defined(DUK_USE_VERBOSE_ERRORS) + duk_regconst_t reg_key; +#endif + + DUK_DDD(DUK_DDDPRINT("function call with property base")); + + /* XXX: For Math.sin() this generates: LDCONST + LDREG + + * GETPROPC + call. The LDREG is unnecessary because LDCONST + * could be loaded directly into reg_cs + 1. This doesn't + * happen now because a variable cannot be in left->x1 of a + * DUK_IVAL_PROP. We could notice that left->x1 is a temp + * and reuse, but it would still be in the wrong position + * (reg_cs + 0 rather than reg_cs + 1). + */ + duk__ispec_toforcedreg(comp_ctx, &left->x1, reg_cs + 1); /* base */ +#if defined(DUK_USE_VERBOSE_ERRORS) + reg_key = duk__ispec_toregconst_raw(comp_ctx, &left->x2, -1, DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); + duk__emit_a_b_c(comp_ctx, + DUK_OP_GETPROPC | DUK__EMIT_FLAG_BC_REGCONST, + reg_cs + 0, + reg_cs + 1, + reg_key); +#else + duk__ivalue_toforcedreg(comp_ctx, left, reg_cs + 0); /* base[key] */ +#endif + } else { + DUK_DDD(DUK_DDDPRINT("function call with register base")); + + duk__ivalue_toforcedreg(comp_ctx, left, reg_cs + 0); +#if 0 + duk__emit_a_bc(comp_ctx, + DUK_OP_CSREG | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_cs + 0, + reg_cs + 0); /* in-place setup */ +#endif + /* Because of in-place setup, REGCS is equivalent to + * just this LDUNDEF. + */ + duk__emit_bc(comp_ctx, DUK_OP_LDUNDEF, reg_cs + 1); + } + + DUK__SETTEMP(comp_ctx, reg_cs + 2); + nargs = duk__parse_arguments(comp_ctx, res); /* parse args starting from "next temp" */ + + /* Tailcalls are handled by back-patching the already emitted opcode + * later in return statement parser. + */ + + duk__emit_a_bc(comp_ctx, + call_op, + (duk_regconst_t) nargs /*numargs*/, + reg_cs /*basereg*/); + DUK__SETTEMP(comp_ctx, reg_cs + 1); /* result in csreg */ + + duk__ivalue_regconst(res, reg_cs); + return; + } + + /* POSTFIX EXPRESSION */ + + case DUK_TOK_INCREMENT: { + args = (DUK_OP_POSTINCP_RR << 16) + (DUK_OP_POSTINCR << 8) + 0; + goto postincdec; + } + case DUK_TOK_DECREMENT: { + args = (DUK_OP_POSTDECP_RR << 16) + (DUK_OP_POSTDECR << 8) + 0; + goto postincdec; + } + + /* EXPONENTIATION EXPRESSION */ + +#if defined(DUK_USE_ES7_EXP_OPERATOR) + case DUK_TOK_EXP: { + args = (DUK_OP_EXP << 8) + DUK__BP_EXPONENTIATION - 1; /* UnaryExpression */ + goto binary; + } +#endif + + /* MULTIPLICATIVE EXPRESSION */ + + case DUK_TOK_MUL: { + args = (DUK_OP_MUL << 8) + DUK__BP_MULTIPLICATIVE; /* ExponentiationExpression */ + goto binary; + } + case DUK_TOK_DIV: { + args = (DUK_OP_DIV << 8) + DUK__BP_MULTIPLICATIVE; /* ExponentiationExpression */ + goto binary; + } + case DUK_TOK_MOD: { + args = (DUK_OP_MOD << 8) + DUK__BP_MULTIPLICATIVE; /* ExponentiationExpression */ + goto binary; + } + + /* ADDITIVE EXPRESSION */ + + case DUK_TOK_ADD: { + args = (DUK_OP_ADD << 8) + DUK__BP_ADDITIVE; /* MultiplicativeExpression */ + goto binary; + } + case DUK_TOK_SUB: { + args = (DUK_OP_SUB << 8) + DUK__BP_ADDITIVE; /* MultiplicativeExpression */ + goto binary; + } + + /* SHIFT EXPRESSION */ + + case DUK_TOK_ALSHIFT: { + /* << */ + args = (DUK_OP_BASL << 8) + DUK__BP_SHIFT; + goto binary; + } + case DUK_TOK_ARSHIFT: { + /* >> */ + args = (DUK_OP_BASR << 8) + DUK__BP_SHIFT; + goto binary; + } + case DUK_TOK_RSHIFT: { + /* >>> */ + args = (DUK_OP_BLSR << 8) + DUK__BP_SHIFT; + goto binary; + } + + /* RELATIONAL EXPRESSION */ + + case DUK_TOK_LT: { + /* < */ + args = (DUK_OP_LT << 8) + DUK__BP_RELATIONAL; + goto binary; + } + case DUK_TOK_GT: { + args = (DUK_OP_GT << 8) + DUK__BP_RELATIONAL; + goto binary; + } + case DUK_TOK_LE: { + args = (DUK_OP_LE << 8) + DUK__BP_RELATIONAL; + goto binary; + } + case DUK_TOK_GE: { + args = (DUK_OP_GE << 8) + DUK__BP_RELATIONAL; + goto binary; + } + case DUK_TOK_INSTANCEOF: { + args = (DUK_OP_INSTOF << 8) + DUK__BP_RELATIONAL; + goto binary; + } + case DUK_TOK_IN: { + args = (DUK_OP_IN << 8) + DUK__BP_RELATIONAL; + goto binary; + } + + /* EQUALITY EXPRESSION */ + + case DUK_TOK_EQ: { + args = (DUK_OP_EQ << 8) + DUK__BP_EQUALITY; + goto binary; + } + case DUK_TOK_NEQ: { + args = (DUK_OP_NEQ << 8) + DUK__BP_EQUALITY; + goto binary; + } + case DUK_TOK_SEQ: { + args = (DUK_OP_SEQ << 8) + DUK__BP_EQUALITY; + goto binary; + } + case DUK_TOK_SNEQ: { + args = (DUK_OP_SNEQ << 8) + DUK__BP_EQUALITY; + goto binary; + } + + /* BITWISE EXPRESSIONS */ + + case DUK_TOK_BAND: { + args = (DUK_OP_BAND << 8) + DUK__BP_BAND; + goto binary; + } + case DUK_TOK_BXOR: { + args = (DUK_OP_BXOR << 8) + DUK__BP_BXOR; + goto binary; + } + case DUK_TOK_BOR: { + args = (DUK_OP_BOR << 8) + DUK__BP_BOR; + goto binary; + } + + /* LOGICAL EXPRESSIONS */ + + case DUK_TOK_LAND: { + /* syntactically left-associative but parsed as right-associative */ + args = (1 << 8) + DUK__BP_LAND - 1; + goto binary_logical; + } + case DUK_TOK_LOR: { + /* syntactically left-associative but parsed as right-associative */ + args = (0 << 8) + DUK__BP_LOR - 1; + goto binary_logical; + } + + /* CONDITIONAL EXPRESSION */ + + case DUK_TOK_QUESTION: { + /* XXX: common reg allocation need is to reuse a sub-expression's temp reg, + * but only if it really is a temp. Nothing fancy here now. + */ + duk_regconst_t reg_temp; + duk_int_t pc_jump1; + duk_int_t pc_jump2; + + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__ivalue_toforcedreg(comp_ctx, left, reg_temp); + duk__emit_if_true_skip(comp_ctx, reg_temp); + pc_jump1 = duk__emit_jump_empty(comp_ctx); /* jump to false */ + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_COMMA /*rbp_flags*/, reg_temp /*forced_reg*/); /* AssignmentExpression */ + duk__advance_expect(comp_ctx, DUK_TOK_COLON); + pc_jump2 = duk__emit_jump_empty(comp_ctx); /* jump to end */ + duk__patch_jump_here(comp_ctx, pc_jump1); + duk__expr_toforcedreg(comp_ctx, res, DUK__BP_COMMA /*rbp_flags*/, reg_temp /*forced_reg*/); /* AssignmentExpression */ + duk__patch_jump_here(comp_ctx, pc_jump2); + + DUK__SETTEMP(comp_ctx, reg_temp + 1); + duk__ivalue_regconst(res, reg_temp); + return; + } + + /* ASSIGNMENT EXPRESSION */ + + case DUK_TOK_EQUALSIGN: { + /* + * Assignments are right associative, allows e.g. + * a = 5; + * a += b = 9; // same as a += (b = 9) + * -> expression value 14, a = 14, b = 9 + * + * Right associativiness is reflected in the BP for recursion, + * "-1" ensures assignment operations are allowed. + * + * XXX: just use DUK__BP_COMMA (i.e. no need for 2-step bp levels)? + */ + args = (DUK_OP_NONE << 8) + DUK__BP_ASSIGNMENT - 1; /* DUK_OP_NONE marks a 'plain' assignment */ + goto assign; + } + case DUK_TOK_ADD_EQ: { + /* right associative */ + args = (DUK_OP_ADD << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_SUB_EQ: { + /* right associative */ + args = (DUK_OP_SUB << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_MUL_EQ: { + /* right associative */ + args = (DUK_OP_MUL << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_DIV_EQ: { + /* right associative */ + args = (DUK_OP_DIV << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_MOD_EQ: { + /* right associative */ + args = (DUK_OP_MOD << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } +#if defined(DUK_USE_ES7_EXP_OPERATOR) + case DUK_TOK_EXP_EQ: { + /* right associative */ + args = (DUK_OP_EXP << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } +#endif + case DUK_TOK_ALSHIFT_EQ: { + /* right associative */ + args = (DUK_OP_BASL << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_ARSHIFT_EQ: { + /* right associative */ + args = (DUK_OP_BASR << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_RSHIFT_EQ: { + /* right associative */ + args = (DUK_OP_BLSR << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_BAND_EQ: { + /* right associative */ + args = (DUK_OP_BAND << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_BOR_EQ: { + /* right associative */ + args = (DUK_OP_BOR << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + case DUK_TOK_BXOR_EQ: { + /* right associative */ + args = (DUK_OP_BXOR << 8) + DUK__BP_ASSIGNMENT - 1; + goto assign; + } + + /* COMMA */ + + case DUK_TOK_COMMA: { + /* right associative */ + + duk__ivalue_toplain_ignore(comp_ctx, left); /* need side effects, not value */ + duk__expr_toplain(comp_ctx, res, DUK__BP_COMMA - 1 /*rbp_flags*/); + + /* return 'res' (of right part) as our result */ + return; + } + + default: { + break; + } + } + + DUK_D(DUK_DPRINT("parse error: unexpected token: %ld", (long) tok)); + DUK_ERROR_SYNTAX(thr, DUK_STR_PARSE_ERROR); + DUK_WO_NORETURN(return;); + +#if 0 + /* XXX: shared handling for 'duk__expr_lhs'? */ + if (comp_ctx->curr_func.paren_level == 0 && XXX) { + comp_ctx->curr_func.duk__expr_lhs = 0; + } +#endif + + binary: + /* + * Shared handling of binary operations + * + * args = (opcode << 8) + rbp + */ + { + duk__ivalue_toplain(comp_ctx, left); + duk__expr_toplain(comp_ctx, res, args & 0xff /*rbp_flags*/); + + /* combine left->x1 and res->x1 (right->x1, really) -> (left->x1 OP res->x1) */ + DUK_ASSERT(left->t == DUK_IVAL_PLAIN); + DUK_ASSERT(res->t == DUK_IVAL_PLAIN); + + res->t = DUK_IVAL_ARITH; + res->op = (args >> 8) & 0xff; + + res->x2.t = res->x1.t; + res->x2.regconst = res->x1.regconst; + duk_copy(thr, res->x1.valstack_idx, res->x2.valstack_idx); + + res->x1.t = left->x1.t; + res->x1.regconst = left->x1.regconst; + duk_copy(thr, left->x1.valstack_idx, res->x1.valstack_idx); + + DUK_DDD(DUK_DDDPRINT("binary op, res: t=%ld, x1.t=%ld, x1.regconst=0x%08lx, x2.t=%ld, x2.regconst=0x%08lx", + (long) res->t, (long) res->x1.t, (unsigned long) res->x1.regconst, (long) res->x2.t, (unsigned long) res->x2.regconst)); + return; + } + + binary_logical: + /* + * Shared handling for logical AND and logical OR. + * + * args = (truthval << 8) + rbp + * + * Truthval determines when to skip right-hand-side. + * For logical AND truthval=1, for logical OR truthval=0. + * + * See doc/compiler.rst for discussion on compiling logical + * AND and OR expressions. The approach here is very simplistic, + * generating extra jumps and multiple evaluations of truth values, + * but generates code on-the-fly with only local back-patching. + * + * Both logical AND and OR are syntactically left-associated. + * However, logical ANDs are compiled as right associative + * expressions, i.e. "A && B && C" as "A && (B && C)", to allow + * skip jumps to skip over the entire tail. Similarly for logical OR. + */ + + { + duk_regconst_t reg_temp; + duk_int_t pc_jump; + duk_small_uint_t args_truthval = args >> 8; + duk_small_uint_t args_rbp = args & 0xff; + + /* XXX: unoptimal use of temps, resetting */ + + reg_temp = DUK__ALLOCTEMP(comp_ctx); + + duk__ivalue_toforcedreg(comp_ctx, left, reg_temp); + DUK_ASSERT(DUK__ISREG(reg_temp)); + duk__emit_bc(comp_ctx, + (args_truthval ? DUK_OP_IFTRUE_R : DUK_OP_IFFALSE_R), + reg_temp); /* skip jump conditionally */ + pc_jump = duk__emit_jump_empty(comp_ctx); + duk__expr_toforcedreg(comp_ctx, res, args_rbp /*rbp_flags*/, reg_temp /*forced_reg*/); + duk__patch_jump_here(comp_ctx, pc_jump); + + duk__ivalue_regconst(res, reg_temp); + return; + } + + assign: + /* + * Shared assignment expression handling + * + * args = (opcode << 8) + rbp + * + * If 'opcode' is DUK_OP_NONE, plain assignment without arithmetic. + * Syntactically valid left-hand-side forms which are not accepted as + * left-hand-side values (e.g. as in "f() = 1") must NOT cause a + * SyntaxError, but rather a run-time ReferenceError. + * + * When evaluating X = Y, the LHS (X) is conceptually evaluated + * to a temporary first. The RHS is then evaluated. Finally, the + * is applied to the initial value of RHS (not the value after + * RHS evaluation), and written to X. Doing so concretely generates + * inefficient code so we'd like to avoid the temporary when possible. + * See: https://github.com/svaarala/duktape/pull/992. + * + * The expression value (final LHS value, written to RHS) is + * conceptually copied into a fresh temporary so that it won't + * change even if the LHS/RHS values change in outer expressions. + * For example, it'd be generally incorrect for the expression value + * to be the RHS register binding, unless there's a guarantee that it + * won't change during further expression evaluation. Using the + * temporary concretely produces inefficient bytecode, so we try to + * avoid the extra temporary for some known-to-be-safe cases. + * Currently the only safe case we detect is a "top level assignment", + * for example "x = y + z;", where the assignment expression value is + * ignored. + * See: test-dev-assign-expr.js and test-bug-assign-mutate-gh381.js. + */ + + { + duk_small_uint_t args_op = args >> 8; + duk_small_uint_t args_rbp = args & 0xff; + duk_bool_t toplevel_assign; + + /* XXX: here we need to know if 'left' is left-hand-side compatible. + * That information is no longer available from current expr parsing + * state; it would need to be carried into the 'left' ivalue or by + * some other means. + */ + + /* A top-level assignment is e.g. "x = y;". For these it's safe + * to use the RHS as-is as the expression value, even if the RHS + * is a reg-bound identifier. The RHS ('res') is right associative + * so it has consumed all other assignment level operations; the + * only relevant lower binding power construct is comma operator + * which will ignore the expression value provided here. Usually + * the top level assignment expression value is ignored, but it + * is relevant for e.g. eval code. + */ + toplevel_assign = (comp_ctx->curr_func.nud_count == 1 && /* one token before */ + comp_ctx->curr_func.led_count == 1); /* one operator (= assign) */ + DUK_DDD(DUK_DDDPRINT("assignment: nud_count=%ld, led_count=%ld, toplevel_assign=%ld", + (long) comp_ctx->curr_func.nud_count, + (long) comp_ctx->curr_func.led_count, + (long) toplevel_assign)); + + if (left->t == DUK_IVAL_VAR) { + duk_hstring *h_varname; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + DUK_ASSERT(left->x1.t == DUK_ISPEC_VALUE); /* LHS is already side effect free */ + + h_varname = duk_known_hstring(thr, left->x1.valstack_idx); + if (duk__hstring_is_eval_or_arguments_in_strict_mode(comp_ctx, h_varname)) { + /* E5 Section 11.13.1 (and others for other assignments), step 4. */ + goto syntax_error_lvalue; + } + duk_dup(thr, left->x1.valstack_idx); + (void) duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname); + + if (args_op == DUK_OP_NONE) { + duk__expr(comp_ctx, res, args_rbp /*rbp_flags*/); + if (toplevel_assign) { + /* Any 'res' will do. */ + DUK_DDD(DUK_DDDPRINT("plain assignment, toplevel assign, use as is")); + } else { + /* 'res' must be a plain ivalue, and not register-bound variable. */ + DUK_DDD(DUK_DDDPRINT("plain assignment, not toplevel assign, ensure not a reg-bound identifier")); + if (res->t != DUK_IVAL_PLAIN || (res->x1.t == DUK_ISPEC_REGCONST && + DUK__ISREG_NOTTEMP(comp_ctx, res->x1.regconst))) { + duk__ivalue_totempconst(comp_ctx, res); + } + } + } else { + /* For X = Y we need to evaluate the pre-op + * value of X before evaluating the RHS: the RHS + * can change X, but when we do we must use + * the pre-op value. + */ + duk_regconst_t reg_temp; + + reg_temp = DUK__ALLOCTEMP(comp_ctx); + + if (reg_varbind >= 0) { + duk_regconst_t reg_res; + duk_regconst_t reg_src; + duk_int_t pc_temp_load; + duk_int_t pc_before_rhs; + duk_int_t pc_after_rhs; + + if (toplevel_assign) { + /* 'reg_varbind' is the operation result and can also + * become the expression value for top level assignments + * such as: "var x; x += y;". + */ + DUK_DD(DUK_DDPRINT("= expression is top level, write directly to reg_varbind")); + reg_res = reg_varbind; + } else { + /* Not safe to use 'reg_varbind' as assignment expression + * value, so go through a temp. + */ + DUK_DD(DUK_DDPRINT("= expression is not top level, write to reg_temp")); + reg_res = reg_temp; /* reg_res should be smallest possible */ + reg_temp = DUK__ALLOCTEMP(comp_ctx); + } + + /* Try to optimize X = Y for reg-bound + * variables. Detect side-effect free RHS + * narrowly by seeing whether it emits code. + * If not, rewind the code emitter and overwrite + * the unnecessary temp reg load. + */ + + pc_temp_load = duk__get_current_pc(comp_ctx); + duk__emit_a_bc(comp_ctx, + DUK_OP_LDREG, + reg_temp, + reg_varbind); + + pc_before_rhs = duk__get_current_pc(comp_ctx); + duk__expr_toregconst(comp_ctx, res, args_rbp /*rbp_flags*/); + DUK_ASSERT(res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_REGCONST); + pc_after_rhs = duk__get_current_pc(comp_ctx); + + DUK_DD(DUK_DDPRINT("pc_temp_load=%ld, pc_before_rhs=%ld, pc_after_rhs=%ld", + (long) pc_temp_load, (long) pc_before_rhs, + (long) pc_after_rhs)); + + if (pc_after_rhs == pc_before_rhs) { + /* Note: if the reg_temp load generated shuffling + * instructions, we may need to rewind more than + * one instruction, so use explicit PC computation. + */ + DUK_DD(DUK_DDPRINT("rhs is side effect free, rewind and avoid unnecessary temp for reg-based =")); + DUK_BW_ADD_PTR(comp_ctx->thr, &comp_ctx->curr_func.bw_code, (pc_temp_load - pc_before_rhs) * (duk_int_t) sizeof(duk_compiler_instr)); + reg_src = reg_varbind; + } else { + DUK_DD(DUK_DDPRINT("rhs evaluation emitted code, not sure if rhs is side effect free; use temp reg for LHS")); + reg_src = reg_temp; + } + + duk__emit_a_b_c(comp_ctx, + args_op | DUK__EMIT_FLAG_BC_REGCONST, + reg_res, + reg_src, + res->x1.regconst); + + res->x1.regconst = reg_res; + + /* Ensure compact use of temps. */ + if (DUK__ISREG_TEMP(comp_ctx, reg_res)) { + DUK__SETTEMP(comp_ctx, reg_res + 1); + } + } else { + /* When LHS is not register bound, always go through a + * temporary. No optimization for top level assignment. + */ + + duk__emit_a_bc(comp_ctx, + DUK_OP_GETVAR, + reg_temp, + rc_varname); + + duk__expr_toregconst(comp_ctx, res, args_rbp /*rbp_flags*/); + DUK_ASSERT(res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_REGCONST); + + duk__emit_a_b_c(comp_ctx, + args_op | DUK__EMIT_FLAG_BC_REGCONST, + reg_temp, + reg_temp, + res->x1.regconst); + res->x1.regconst = reg_temp; + } + + DUK_ASSERT(res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_REGCONST); + } + + /* At this point 'res' holds the potential expression value. + * It can be basically any ivalue here, including a reg-bound + * identifier (if code above deems it safe) or a unary/binary + * operation. Operations must be resolved to a side effect free + * plain value, and the side effects must happen exactly once. + */ + + if (reg_varbind >= 0) { + if (res->t != DUK_IVAL_PLAIN) { + /* Resolve 'res' directly into the LHS binding, and use + * that as the expression value if safe. If not safe, + * resolve to a temp/const and copy to LHS. + */ + if (toplevel_assign) { + duk__ivalue_toforcedreg(comp_ctx, res, (duk_int_t) reg_varbind); + } else { + duk__ivalue_totempconst(comp_ctx, res); + duk__copy_ivalue(comp_ctx, res, left); /* use 'left' as a temp */ + duk__ivalue_toforcedreg(comp_ctx, left, (duk_int_t) reg_varbind); + } + } else { + /* Use 'res' as the expression value (it's side effect + * free and may be a plain value, a register, or a + * constant) and write it to the LHS binding too. + */ + duk__copy_ivalue(comp_ctx, res, left); /* use 'left' as a temp */ + duk__ivalue_toforcedreg(comp_ctx, left, (duk_int_t) reg_varbind); + } + } else { + /* Only a reg fits into 'A' so coerce 'res' into a register + * for PUTVAR. + * + * XXX: here the current A/B/C split is suboptimal: we could + * just use 9 bits for reg_res (and support constants) and 17 + * instead of 18 bits for the varname const index. + */ + + duk__ivalue_toreg(comp_ctx, res); + duk__emit_a_bc(comp_ctx, + DUK_OP_PUTVAR | DUK__EMIT_FLAG_A_IS_SOURCE, + res->x1.regconst, + rc_varname); + } + + /* 'res' contains expression value */ + } else if (left->t == DUK_IVAL_PROP) { + /* E5 Section 11.13.1 (and others) step 4 never matches for prop writes -> no check */ + duk_regconst_t reg_obj; + duk_regconst_t rc_key; + duk_regconst_t rc_res; + duk_regconst_t reg_temp; + + /* Property access expressions ('a[b]') are critical to correct + * LHS evaluation ordering, see test-dev-assign-eval-order*.js. + * We must make sure that the LHS target slot (base object and + * key) don't change during RHS evaluation. The only concrete + * problem is a register reference to a variable-bound register + * (i.e., non-temp). Require temp regs for both key and base. + * + * Don't allow a constant for the object (even for a number + * etc), as it goes into the 'A' field of the opcode. + */ + + reg_obj = duk__ispec_toregconst_raw(comp_ctx, + &left->x1, + -1 /*forced_reg*/, + DUK__IVAL_FLAG_REQUIRE_TEMP /*flags*/); + + rc_key = duk__ispec_toregconst_raw(comp_ctx, + &left->x2, + -1 /*forced_reg*/, + DUK__IVAL_FLAG_REQUIRE_TEMP | DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); + + /* Evaluate RHS only when LHS is safe. */ + + if (args_op == DUK_OP_NONE) { + duk__expr_toregconst(comp_ctx, res, args_rbp /*rbp_flags*/); + DUK_ASSERT(res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_REGCONST); + rc_res = res->x1.regconst; + } else { + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__emit_a_b_c(comp_ctx, + DUK_OP_GETPROP | DUK__EMIT_FLAG_BC_REGCONST, + reg_temp, + reg_obj, + rc_key); + + duk__expr_toregconst(comp_ctx, res, args_rbp /*rbp_flags*/); + DUK_ASSERT(res->t == DUK_IVAL_PLAIN && res->x1.t == DUK_ISPEC_REGCONST); + + duk__emit_a_b_c(comp_ctx, + args_op | DUK__EMIT_FLAG_BC_REGCONST, + reg_temp, + reg_temp, + res->x1.regconst); + rc_res = reg_temp; + } + + duk__emit_a_b_c(comp_ctx, + DUK_OP_PUTPROP | DUK__EMIT_FLAG_A_IS_SOURCE | DUK__EMIT_FLAG_BC_REGCONST, + reg_obj, + rc_key, + rc_res); + + duk__ivalue_regconst(res, rc_res); + } else { + /* No support for lvalues returned from new or function call expressions. + * However, these must NOT cause compile-time SyntaxErrors, but run-time + * ReferenceErrors. Both left and right sides of the assignment must be + * evaluated before throwing a ReferenceError. For instance: + * + * f() = g(); + * + * must result in f() being evaluated, then g() being evaluated, and + * finally, a ReferenceError being thrown. See E5 Section 11.13.1. + */ + + duk_regconst_t rc_res; + + /* First evaluate LHS fully to ensure all side effects are out. */ + duk__ivalue_toplain_ignore(comp_ctx, left); + + /* Then evaluate RHS fully (its value becomes the expression value too). + * Technically we'd need the side effect safety check here too, but because + * we always throw using INVLHS the result doesn't matter. + */ + rc_res = duk__expr_toregconst(comp_ctx, res, args_rbp /*rbp_flags*/); + + duk__emit_op_only(comp_ctx, DUK_OP_INVLHS); + + duk__ivalue_regconst(res, rc_res); + } + + return; + } + + postincdec: + { + /* + * Post-increment/decrement will return the original value as its + * result value. However, even that value will be coerced using + * ToNumber() which is quite awkward. Specific bytecode opcodes + * are used to handle these semantics. + * + * Note that post increment/decrement has a "no LineTerminator here" + * restriction. This is handled by duk__expr_lbp(), which forcibly terminates + * the previous expression if a LineTerminator occurs before '++'/'--'. + */ + + duk_regconst_t reg_res; + duk_small_uint_t args_op1 = (args >> 8) & 0xff; /* DUK_OP_POSTINCR/DUK_OP_POSTDECR */ + duk_small_uint_t args_op2 = args >> 16; /* DUK_OP_POSTINCP_RR/DUK_OP_POSTDECP_RR */ + + /* Specific assumptions for opcode numbering. */ + DUK_ASSERT(DUK_OP_POSTINCR + 4 == DUK_OP_POSTINCV); + DUK_ASSERT(DUK_OP_POSTDECR + 4 == DUK_OP_POSTDECV); + + reg_res = DUK__ALLOCTEMP(comp_ctx); + + if (left->t == DUK_IVAL_VAR) { + duk_hstring *h_varname; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + h_varname = duk_known_hstring(thr, left->x1.valstack_idx); + + if (duk__hstring_is_eval_or_arguments_in_strict_mode(comp_ctx, h_varname)) { + goto syntax_error; + } + + duk_dup(thr, left->x1.valstack_idx); + if (duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + duk__emit_a_bc(comp_ctx, + args_op1, /* e.g. DUK_OP_POSTINCR */ + reg_res, + reg_varbind); + } else { + duk__emit_a_bc(comp_ctx, + args_op1 + 4, /* e.g. DUK_OP_POSTINCV */ + reg_res, + rc_varname); + } + + DUK_DDD(DUK_DDDPRINT("postincdec to '%!O' -> reg_varbind=%ld, rc_varname=%ld", + (duk_heaphdr *) h_varname, (long) reg_varbind, (long) rc_varname)); + } else if (left->t == DUK_IVAL_PROP) { + duk_regconst_t reg_obj; /* allocate to reg only (not const) */ + duk_regconst_t rc_key; + + reg_obj = duk__ispec_toregconst_raw(comp_ctx, &left->x1, -1 /*forced_reg*/, 0 /*flags*/); /* don't allow const */ + rc_key = duk__ispec_toregconst_raw(comp_ctx, &left->x2, -1 /*forced_reg*/, DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); + duk__emit_a_b_c(comp_ctx, + args_op2 | DUK__EMIT_FLAG_BC_REGCONST, /* e.g. DUK_OP_POSTINCP */ + reg_res, + reg_obj, + rc_key); + } else { + /* Technically return value is not needed because INVLHS will + * unconditially throw a ReferenceError. Coercion is necessary + * for proper semantics (consider ToNumber() called for an object). + * Use DUK_OP_UNP with a dummy register to get ToNumber(). + */ + duk__ivalue_toforcedreg(comp_ctx, left, reg_res); + duk__emit_bc(comp_ctx, + DUK_OP_UNP, + reg_res); /* for side effects, result ignored */ + duk__emit_op_only(comp_ctx, + DUK_OP_INVLHS); + } + + DUK__SETTEMP(comp_ctx, reg_res + 1); + duk__ivalue_regconst(res, reg_res); + return; + } + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_EXPRESSION); + DUK_WO_NORETURN(return;); + + syntax_error_lvalue: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_LVALUE); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL duk_small_uint_t duk__expr_lbp(duk_compiler_ctx *comp_ctx) { + duk_small_uint_t tok = comp_ctx->curr_token.t; + + DUK_ASSERT_DISABLE(tok >= DUK_TOK_MINVAL); /* unsigned */ + DUK_ASSERT(tok <= DUK_TOK_MAXVAL); + DUK_ASSERT(sizeof(duk__token_lbp) == DUK_TOK_MAXVAL + 1); + + /* XXX: integrate support for this into led() instead? + * Similar issue as post-increment/post-decrement. + */ + + /* prevent duk__expr_led() by using a binding power less than anything valid */ + if (tok == DUK_TOK_IN && !comp_ctx->curr_func.allow_in) { + return 0; + } + + if ((tok == DUK_TOK_DECREMENT || tok == DUK_TOK_INCREMENT) && + (comp_ctx->curr_token.lineterm)) { + /* '++' or '--' in a post-increment/decrement position, + * and a LineTerminator occurs between the operator and + * the preceding expression. Force the previous expr + * to terminate, in effect treating e.g. "a,b\n++" as + * "a,b;++" (= SyntaxError). + */ + return 0; + } + + return DUK__TOKEN_LBP_GET_BP(duk__token_lbp[tok]); /* format is bit packed */ +} + +/* + * Expression parsing. + * + * Upon entry to 'expr' and its variants, 'curr_tok' is assumed to be the + * first token of the expression. Upon exit, 'curr_tok' will be the first + * token not part of the expression (e.g. semicolon terminating an expression + * statement). + */ + +#define DUK__EXPR_RBP_MASK 0xff +#define DUK__EXPR_FLAG_REJECT_IN (1 << 8) /* reject 'in' token (used for for-in) */ +#define DUK__EXPR_FLAG_ALLOW_EMPTY (1 << 9) /* allow empty expression */ +#define DUK__EXPR_FLAG_REQUIRE_INIT (1 << 10) /* require initializer for var/const */ + +/* main expression parser function */ +DUK_LOCAL void duk__expr(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk_hthread *thr = comp_ctx->thr; + duk_ivalue tmp_alloc; /* 'res' is used for "left", and 'tmp' for "right" */ + duk_ivalue *tmp = &tmp_alloc; + duk_small_uint_t rbp; + + DUK__RECURSION_INCREASE(comp_ctx, thr); + + duk_require_stack(thr, DUK__PARSE_EXPR_SLOTS); + + /* filter out flags from exprtop rbp_flags here to save space */ + rbp = rbp_flags & DUK__EXPR_RBP_MASK; + + DUK_DDD(DUK_DDDPRINT("duk__expr(), rbp_flags=%ld, rbp=%ld, allow_in=%ld, paren_level=%ld", + (long) rbp_flags, (long) rbp, (long) comp_ctx->curr_func.allow_in, + (long) comp_ctx->curr_func.paren_level)); + + duk_memzero(&tmp_alloc, sizeof(tmp_alloc)); + tmp->x1.valstack_idx = duk_get_top(thr); + tmp->x2.valstack_idx = tmp->x1.valstack_idx + 1; + duk_push_undefined(thr); + duk_push_undefined(thr); + + /* XXX: where to release temp regs in intermediate expressions? + * e.g. 1+2+3 -> don't inflate temp register count when parsing this. + * that particular expression temp regs can be forced here. + */ + + /* XXX: increase ctx->expr_tokens here for every consumed token + * (this would be a nice statistic)? + */ + + if (comp_ctx->curr_token.t == DUK_TOK_SEMICOLON || comp_ctx->curr_token.t == DUK_TOK_RPAREN) { + /* XXX: possibly incorrect handling of empty expression */ + DUK_DDD(DUK_DDDPRINT("empty expression")); + if (!(rbp_flags & DUK__EXPR_FLAG_ALLOW_EMPTY)) { + DUK_ERROR_SYNTAX(thr, DUK_STR_EMPTY_EXPR_NOT_ALLOWED); + DUK_WO_NORETURN(return;); + } + duk_push_undefined(thr); + duk__ivalue_plain_fromstack(comp_ctx, res); + goto cleanup; + } + + duk__advance(comp_ctx); + duk__expr_nud(comp_ctx, res); /* reuse 'res' as 'left' */ + while (rbp < duk__expr_lbp(comp_ctx)) { + duk__advance(comp_ctx); + duk__expr_led(comp_ctx, res, tmp); + duk__copy_ivalue(comp_ctx, tmp, res); /* tmp -> res */ + } + + cleanup: + /* final result is already in 'res' */ + + duk_pop_2(thr); + + DUK__RECURSION_DECREASE(comp_ctx, thr); +} + +DUK_LOCAL void duk__exprtop(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk_hthread *thr = comp_ctx->thr; + + /* Note: these variables must reside in 'curr_func' instead of the global + * context: when parsing function expressions, expression parsing is nested. + */ + comp_ctx->curr_func.nud_count = 0; + comp_ctx->curr_func.led_count = 0; + comp_ctx->curr_func.paren_level = 0; + comp_ctx->curr_func.expr_lhs = 1; + comp_ctx->curr_func.allow_in = (rbp_flags & DUK__EXPR_FLAG_REJECT_IN ? 0 : 1); + + duk__expr(comp_ctx, res, rbp_flags); + + if (!(rbp_flags & DUK__EXPR_FLAG_ALLOW_EMPTY) && duk__expr_is_empty(comp_ctx)) { + DUK_ERROR_SYNTAX(thr, DUK_STR_EMPTY_EXPR_NOT_ALLOWED); + DUK_WO_NORETURN(return;); + } +} + +/* A bunch of helpers (for size optimization) that combine duk__expr()/duk__exprtop() + * and result conversions. + * + * Each helper needs at least 2-3 calls to make it worth while to wrap. + */ + +#if 0 /* unused */ +DUK_LOCAL duk_regconst_t duk__expr_toreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__expr(comp_ctx, res, rbp_flags); + return duk__ivalue_toreg(comp_ctx, res); +} +#endif + +#if 0 /* unused */ +DUK_LOCAL duk_regconst_t duk__expr_totemp(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__expr(comp_ctx, res, rbp_flags); + return duk__ivalue_totemp(comp_ctx, res); +} +#endif + +DUK_LOCAL void duk__expr_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags, duk_regconst_t forced_reg) { + DUK_ASSERT(forced_reg >= 0); + duk__expr(comp_ctx, res, rbp_flags); + duk__ivalue_toforcedreg(comp_ctx, res, forced_reg); +} + +DUK_LOCAL duk_regconst_t duk__expr_toregconst(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__expr(comp_ctx, res, rbp_flags); + return duk__ivalue_toregconst(comp_ctx, res); +} + +#if 0 /* unused */ +DUK_LOCAL duk_regconst_t duk__expr_totempconst(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__expr(comp_ctx, res, rbp_flags); + return duk__ivalue_totempconst(comp_ctx, res); +} +#endif + +DUK_LOCAL void duk__expr_toplain(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__expr(comp_ctx, res, rbp_flags); + duk__ivalue_toplain(comp_ctx, res); +} + +DUK_LOCAL void duk__expr_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__expr(comp_ctx, res, rbp_flags); + duk__ivalue_toplain_ignore(comp_ctx, res); +} + +DUK_LOCAL duk_regconst_t duk__exprtop_toreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__exprtop(comp_ctx, res, rbp_flags); + return duk__ivalue_toreg(comp_ctx, res); +} + +#if 0 /* unused */ +DUK_LOCAL duk_regconst_t duk__exprtop_totemp(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__exprtop(comp_ctx, res, rbp_flags); + return duk__ivalue_totemp(comp_ctx, res); +} +#endif + +DUK_LOCAL void duk__exprtop_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags, duk_regconst_t forced_reg) { + DUK_ASSERT(forced_reg >= 0); + duk__exprtop(comp_ctx, res, rbp_flags); + duk__ivalue_toforcedreg(comp_ctx, res, forced_reg); +} + +DUK_LOCAL duk_regconst_t duk__exprtop_toregconst(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t rbp_flags) { + duk__exprtop(comp_ctx, res, rbp_flags); + return duk__ivalue_toregconst(comp_ctx, res); +} + +#if 0 /* unused */ +DUK_LOCAL void duk__exprtop_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue *res, int rbp_flags) { + duk__exprtop(comp_ctx, res, rbp_flags); + duk__ivalue_toplain_ignore(comp_ctx, res); +} +#endif + +/* + * Parse an individual source element (top level statement) or a statement. + * + * Handles labeled statements automatically (peeling away labels before + * parsing an expression that follows the label(s)). + * + * Upon entry, 'curr_tok' contains the first token of the statement (parsed + * in "allow regexp literal" mode). Upon exit, 'curr_tok' contains the first + * token following the statement (if the statement has a terminator, this is + * the token after the terminator). + */ + +#define DUK__HAS_VAL (1 << 0) /* stmt has non-empty value */ +#define DUK__HAS_TERM (1 << 1) /* stmt has explicit/implicit semicolon terminator */ +#define DUK__ALLOW_AUTO_SEMI_ALWAYS (1 << 2) /* allow automatic semicolon even without lineterm (compatibility) */ +#define DUK__STILL_PROLOGUE (1 << 3) /* statement does not terminate directive prologue */ +#define DUK__IS_TERMINAL (1 << 4) /* statement is guaranteed to be terminal (control doesn't flow to next statement) */ + +/* Parse a single variable declaration (e.g. "i" or "i=10"). A leading 'var' + * has already been eaten. These is no return value in 'res', it is used only + * as a temporary. + * + * When called from 'for-in' statement parser, the initializer expression must + * not allow the 'in' token. The caller supply additional expression parsing + * flags (like DUK__EXPR_FLAG_REJECT_IN) in 'expr_flags'. + * + * Finally, out_rc_varname and out_reg_varbind are updated to reflect where + * the identifier is bound: + * + * If register bound: out_reg_varbind >= 0, out_rc_varname == 0 (ignore) + * If not register bound: out_reg_varbind < 0, out_rc_varname >= 0 + * + * These allow the caller to use the variable for further assignment, e.g. + * as is done in 'for-in' parsing. + */ + +DUK_LOCAL void duk__parse_var_decl(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t expr_flags, duk_regconst_t *out_reg_varbind, duk_regconst_t *out_rc_varname) { + duk_hthread *thr = comp_ctx->thr; + duk_hstring *h_varname; + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + /* assume 'var' has been eaten */ + + /* Note: Identifier rejects reserved words */ + if (comp_ctx->curr_token.t != DUK_TOK_IDENTIFIER) { + goto syntax_error; + } + h_varname = comp_ctx->curr_token.str1; + + DUK_ASSERT(h_varname != NULL); + + /* strict mode restrictions (E5 Section 12.2.1) */ + if (duk__hstring_is_eval_or_arguments_in_strict_mode(comp_ctx, h_varname)) { + goto syntax_error; + } + + /* register declarations in first pass */ + if (comp_ctx->curr_func.in_scanning) { + duk_uarridx_t n; + DUK_DDD(DUK_DDDPRINT("register variable declaration %!O in pass 1", + (duk_heaphdr *) h_varname)); + n = (duk_uarridx_t) duk_get_length(thr, comp_ctx->curr_func.decls_idx); + duk_push_hstring(thr, h_varname); + duk_put_prop_index(thr, comp_ctx->curr_func.decls_idx, n); + duk_push_int(thr, DUK_DECL_TYPE_VAR + (0 << 8)); + duk_put_prop_index(thr, comp_ctx->curr_func.decls_idx, n + 1); + } + + duk_push_hstring(thr, h_varname); /* push before advancing to keep reachable */ + + /* register binding lookup is based on varmap (even in first pass) */ + duk_dup_top(thr); + (void) duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname); + + duk__advance(comp_ctx); /* eat identifier */ + + if (comp_ctx->curr_token.t == DUK_TOK_EQUALSIGN) { + duk__advance(comp_ctx); + + DUK_DDD(DUK_DDDPRINT("vardecl, assign to '%!O' -> reg_varbind=%ld, rc_varname=%ld", + (duk_heaphdr *) h_varname, (long) reg_varbind, (long) rc_varname)); + + duk__exprtop(comp_ctx, res, DUK__BP_COMMA | expr_flags /*rbp_flags*/); /* AssignmentExpression */ + + if (reg_varbind >= 0) { + duk__ivalue_toforcedreg(comp_ctx, res, reg_varbind); + } else { + duk_regconst_t reg_val; + reg_val = duk__ivalue_toreg(comp_ctx, res); + duk__emit_a_bc(comp_ctx, + DUK_OP_PUTVAR | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_val, + rc_varname); + } + } else { + if (expr_flags & DUK__EXPR_FLAG_REQUIRE_INIT) { + /* Used for minimal 'const': initializer required. */ + goto syntax_error; + } + } + + duk_pop(thr); /* pop varname */ + + *out_rc_varname = rc_varname; + *out_reg_varbind = reg_varbind; + + return; + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_VAR_DECLARATION); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__parse_var_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_small_uint_t expr_flags) { + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + duk__advance(comp_ctx); /* eat 'var' */ + + for (;;) { + /* rc_varname and reg_varbind are ignored here */ + duk__parse_var_decl(comp_ctx, res, 0 | expr_flags, ®_varbind, &rc_varname); + + if (comp_ctx->curr_token.t != DUK_TOK_COMMA) { + break; + } + duk__advance(comp_ctx); + } +} + +DUK_LOCAL void duk__parse_for_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site) { + duk_hthread *thr = comp_ctx->thr; + duk_int_t pc_v34_lhs; /* start variant 3/4 left-hand-side code (L1 in doc/compiler.rst example) */ + duk_regconst_t temp_reset; /* knock back "next temp" to this whenever possible */ + duk_regconst_t reg_temps; /* preallocated temporaries (2) for variants 3 and 4 */ + + DUK_DDD(DUK_DDDPRINT("start parsing a for/for-in statement")); + + /* Two temporaries are preallocated here for variants 3 and 4 which need + * registers which are never clobbered by expressions in the loop + * (concretely: for the enumerator object and the next enumerated value). + * Variants 1 and 2 "release" these temps. + */ + + reg_temps = DUK__ALLOCTEMPS(comp_ctx, 2); + + temp_reset = DUK__GETTEMP(comp_ctx); + + /* + * For/for-in main variants are: + * + * 1. for (ExpressionNoIn_opt; Expression_opt; Expression_opt) Statement + * 2. for (var VariableDeclarationNoIn; Expression_opt; Expression_opt) Statement + * 3. for (LeftHandSideExpression in Expression) Statement + * 4. for (var VariableDeclarationNoIn in Expression) Statement + * + * Parsing these without arbitrary lookahead or backtracking is relatively + * tricky but we manage to do so for now. + * + * See doc/compiler.rst for a detailed discussion of control flow + * issues, evaluation order issues, etc. + */ + + duk__advance(comp_ctx); /* eat 'for' */ + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + + DUK_DDD(DUK_DDDPRINT("detecting for/for-in loop variant, pc=%ld", (long) duk__get_current_pc(comp_ctx))); + + /* a label site has been emitted by duk__parse_stmt() automatically + * (it will also emit the ENDLABEL). + */ + + if (comp_ctx->curr_token.t == DUK_TOK_VAR) { + /* + * Variant 2 or 4 + */ + + duk_regconst_t reg_varbind; /* variable binding register if register-bound (otherwise < 0) */ + duk_regconst_t rc_varname; /* variable name reg/const, if variable not register-bound */ + + duk__advance(comp_ctx); /* eat 'var' */ + duk__parse_var_decl(comp_ctx, res, DUK__EXPR_FLAG_REJECT_IN, ®_varbind, &rc_varname); + DUK__SETTEMP(comp_ctx, temp_reset); + + if (comp_ctx->curr_token.t == DUK_TOK_IN) { + /* + * Variant 4 + */ + + DUK_DDD(DUK_DDDPRINT("detected for variant 4: for (var VariableDeclarationNoIn in Expression) Statement")); + pc_v34_lhs = duk__get_current_pc(comp_ctx); /* jump is inserted here */ + if (reg_varbind >= 0) { + duk__emit_a_bc(comp_ctx, + DUK_OP_LDREG, + reg_varbind, + reg_temps + 0); + } else { + duk__emit_a_bc(comp_ctx, + DUK_OP_PUTVAR | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_temps + 0, + rc_varname); + } + goto parse_3_or_4; + } else { + /* + * Variant 2 + */ + + DUK_DDD(DUK_DDDPRINT("detected for variant 2: for (var VariableDeclarationNoIn; Expression_opt; Expression_opt) Statement")); + for (;;) { + /* more initializers */ + if (comp_ctx->curr_token.t != DUK_TOK_COMMA) { + break; + } + DUK_DDD(DUK_DDDPRINT("variant 2 has another variable initializer")); + + duk__advance(comp_ctx); /* eat comma */ + duk__parse_var_decl(comp_ctx, res, DUK__EXPR_FLAG_REJECT_IN, ®_varbind, &rc_varname); + } + goto parse_1_or_2; + } + } else { + /* + * Variant 1 or 3 + */ + + pc_v34_lhs = duk__get_current_pc(comp_ctx); /* jump is inserted here (variant 3) */ + + /* Note that duk__exprtop() here can clobber any reg above current temp_next, + * so any loop variables (e.g. enumerator) must be "preallocated". + */ + + /* don't coerce yet to a plain value (variant 3 needs special handling) */ + duk__exprtop(comp_ctx, res, DUK__BP_FOR_EXPR | DUK__EXPR_FLAG_REJECT_IN | DUK__EXPR_FLAG_ALLOW_EMPTY /*rbp_flags*/); /* Expression */ + if (comp_ctx->curr_token.t == DUK_TOK_IN) { + /* + * Variant 3 + */ + + /* XXX: need to determine LHS type, and check that it is LHS compatible */ + DUK_DDD(DUK_DDDPRINT("detected for variant 3: for (LeftHandSideExpression in Expression) Statement")); + if (duk__expr_is_empty(comp_ctx)) { + goto syntax_error; /* LeftHandSideExpression does not allow empty expression */ + } + + if (res->t == DUK_IVAL_VAR) { + duk_regconst_t reg_varbind; + duk_regconst_t rc_varname; + + duk_dup(thr, res->x1.valstack_idx); + if (duk__lookup_lhs(comp_ctx, ®_varbind, &rc_varname)) { + duk__emit_a_bc(comp_ctx, + DUK_OP_LDREG, + reg_varbind, + reg_temps + 0); + } else { + duk__emit_a_bc(comp_ctx, + DUK_OP_PUTVAR | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_temps + 0, + rc_varname); + } + } else if (res->t == DUK_IVAL_PROP) { + /* Don't allow a constant for the object (even for a number etc), as + * it goes into the 'A' field of the opcode. + */ + duk_regconst_t reg_obj; + duk_regconst_t rc_key; + reg_obj = duk__ispec_toregconst_raw(comp_ctx, &res->x1, -1 /*forced_reg*/, 0 /*flags*/); /* don't allow const */ + rc_key = duk__ispec_toregconst_raw(comp_ctx, &res->x2, -1 /*forced_reg*/, DUK__IVAL_FLAG_ALLOW_CONST /*flags*/); + duk__emit_a_b_c(comp_ctx, + DUK_OP_PUTPROP | DUK__EMIT_FLAG_A_IS_SOURCE | DUK__EMIT_FLAG_BC_REGCONST, + reg_obj, + rc_key, + reg_temps + 0); + } else { + duk__ivalue_toplain_ignore(comp_ctx, res); /* just in case */ + duk__emit_op_only(comp_ctx, + DUK_OP_INVLHS); + } + goto parse_3_or_4; + } else { + /* + * Variant 1 + */ + + DUK_DDD(DUK_DDDPRINT("detected for variant 1: for (ExpressionNoIn_opt; Expression_opt; Expression_opt) Statement")); + duk__ivalue_toplain_ignore(comp_ctx, res); + goto parse_1_or_2; + } + } + + parse_1_or_2: + /* + * Parse variant 1 or 2. The first part expression (which differs + * in the variants) has already been parsed and its code emitted. + * + * reg_temps + 0: unused + * reg_temps + 1: unused + */ + { + duk_regconst_t rc_cond; + duk_int_t pc_l1, pc_l2, pc_l3, pc_l4; + duk_int_t pc_jumpto_l3, pc_jumpto_l4; + duk_bool_t expr_c_empty; + + DUK_DDD(DUK_DDDPRINT("shared code for parsing variants 1 and 2")); + + /* "release" preallocated temps since we won't need them */ + temp_reset = reg_temps + 0; + DUK__SETTEMP(comp_ctx, temp_reset); + + duk__advance_expect(comp_ctx, DUK_TOK_SEMICOLON); + + pc_l1 = duk__get_current_pc(comp_ctx); + duk__exprtop(comp_ctx, res, DUK__BP_FOR_EXPR | DUK__EXPR_FLAG_ALLOW_EMPTY /*rbp_flags*/); /* Expression_opt */ + if (duk__expr_is_empty(comp_ctx)) { + /* no need to coerce */ + pc_jumpto_l3 = duk__emit_jump_empty(comp_ctx); /* to body */ + pc_jumpto_l4 = -1; /* omitted */ + } else { + rc_cond = duk__ivalue_toregconst(comp_ctx, res); + duk__emit_if_false_skip(comp_ctx, rc_cond); + pc_jumpto_l3 = duk__emit_jump_empty(comp_ctx); /* to body */ + pc_jumpto_l4 = duk__emit_jump_empty(comp_ctx); /* to exit */ + } + DUK__SETTEMP(comp_ctx, temp_reset); + + duk__advance_expect(comp_ctx, DUK_TOK_SEMICOLON); + + pc_l2 = duk__get_current_pc(comp_ctx); + duk__exprtop(comp_ctx, res, DUK__BP_FOR_EXPR | DUK__EXPR_FLAG_ALLOW_EMPTY /*rbp_flags*/); /* Expression_opt */ + if (duk__expr_is_empty(comp_ctx)) { + /* no need to coerce */ + expr_c_empty = 1; + /* JUMP L1 omitted */ + } else { + duk__ivalue_toplain_ignore(comp_ctx, res); + expr_c_empty = 0; + duk__emit_jump(comp_ctx, pc_l1); + } + DUK__SETTEMP(comp_ctx, temp_reset); + + comp_ctx->curr_func.allow_regexp_in_adv = 1; + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* Allow RegExp as part of next stmt. */ + + pc_l3 = duk__get_current_pc(comp_ctx); + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + if (expr_c_empty) { + duk__emit_jump(comp_ctx, pc_l1); + } else { + duk__emit_jump(comp_ctx, pc_l2); + } + /* temp reset is not necessary after duk__parse_stmt(), which already does it */ + + pc_l4 = duk__get_current_pc(comp_ctx); + + DUK_DDD(DUK_DDDPRINT("patching jumps: jumpto_l3: %ld->%ld, jumpto_l4: %ld->%ld, " + "break: %ld->%ld, continue: %ld->%ld", + (long) pc_jumpto_l3, (long) pc_l3, (long) pc_jumpto_l4, (long) pc_l4, + (long) (pc_label_site + 1), (long) pc_l4, (long) (pc_label_site + 2), (long) pc_l2)); + + duk__patch_jump(comp_ctx, pc_jumpto_l3, pc_l3); + duk__patch_jump(comp_ctx, pc_jumpto_l4, pc_l4); + duk__patch_jump(comp_ctx, + pc_label_site + 1, + pc_l4); /* break jump */ + duk__patch_jump(comp_ctx, + pc_label_site + 2, + expr_c_empty ? pc_l1 : pc_l2); /* continue jump */ + } + goto finished; + + parse_3_or_4: + /* + * Parse variant 3 or 4. + * + * For variant 3 (e.g. "for (A in C) D;") the code for A (except the + * final property/variable write) has already been emitted. The first + * instruction of that code is at pc_v34_lhs; a JUMP needs to be inserted + * there to satisfy control flow needs. + * + * For variant 4, if the variable declaration had an initializer + * (e.g. "for (var A = B in C) D;") the code for the assignment + * (B) has already been emitted. + * + * Variables set before entering here: + * + * pc_v34_lhs: insert a "JUMP L2" here (see doc/compiler.rst example). + * reg_temps + 0: iteration target value (written to LHS) + * reg_temps + 1: enumerator object + */ + { + duk_int_t pc_l1, pc_l2, pc_l3, pc_l4, pc_l5; + duk_int_t pc_jumpto_l2, pc_jumpto_l3, pc_jumpto_l4, pc_jumpto_l5; + duk_regconst_t reg_target; + + DUK_DDD(DUK_DDDPRINT("shared code for parsing variants 3 and 4, pc_v34_lhs=%ld", (long) pc_v34_lhs)); + + DUK__SETTEMP(comp_ctx, temp_reset); + + /* First we need to insert a jump in the middle of previously + * emitted code to get the control flow right. No jumps can + * cross the position where the jump is inserted. See doc/compiler.rst + * for discussion on the intricacies of control flow and side effects + * for variants 3 and 4. + */ + + duk__insert_jump_entry(comp_ctx, pc_v34_lhs); + pc_jumpto_l2 = pc_v34_lhs; /* inserted jump */ + pc_l1 = pc_v34_lhs + 1; /* +1, right after inserted jump */ + + /* The code for writing reg_temps + 0 to the left hand side has already + * been emitted. + */ + + pc_jumpto_l3 = duk__emit_jump_empty(comp_ctx); /* -> loop body */ + + duk__advance(comp_ctx); /* eat 'in' */ + + /* Parse enumeration target and initialize enumerator. For 'null' and 'undefined', + * INITENUM will creates a 'null' enumerator which works like an empty enumerator + * (E5 Section 12.6.4, step 3). Note that INITENUM requires the value to be in a + * register (constant not allowed). + */ + + pc_l2 = duk__get_current_pc(comp_ctx); + reg_target = duk__exprtop_toreg(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); /* Expression */ + duk__emit_b_c(comp_ctx, + DUK_OP_INITENUM | DUK__EMIT_FLAG_B_IS_TARGET, + reg_temps + 1, + reg_target); + pc_jumpto_l4 = duk__emit_jump_empty(comp_ctx); + DUK__SETTEMP(comp_ctx, temp_reset); + + comp_ctx->curr_func.allow_regexp_in_adv = 1; + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* Allow RegExp as part of next stmt. */ + + pc_l3 = duk__get_current_pc(comp_ctx); + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + /* temp reset is not necessary after duk__parse_stmt(), which already does it */ + + /* NEXTENUM needs a jump slot right after the main opcode. + * We need the code emitter to reserve the slot: if there's + * target shuffling, the target shuffle opcodes must happen + * after the jump slot (for NEXTENUM the shuffle opcodes are + * not needed if the enum is finished). + */ + pc_l4 = duk__get_current_pc(comp_ctx); + duk__emit_b_c(comp_ctx, + DUK_OP_NEXTENUM | DUK__EMIT_FLAG_B_IS_TARGET | DUK__EMIT_FLAG_RESERVE_JUMPSLOT, + reg_temps + 0, + reg_temps + 1); + pc_jumpto_l5 = comp_ctx->emit_jumpslot_pc; /* NEXTENUM jump slot: executed when enum finished */ + duk__emit_jump(comp_ctx, pc_l1); /* jump to next loop, using reg_v34_iter as iterated value */ + + pc_l5 = duk__get_current_pc(comp_ctx); + + /* XXX: since the enumerator may be a memory expensive object, + * perhaps clear it explicitly here? If so, break jump must + * go through this clearing operation. + */ + + DUK_DDD(DUK_DDDPRINT("patching jumps: jumpto_l2: %ld->%ld, jumpto_l3: %ld->%ld, " + "jumpto_l4: %ld->%ld, jumpto_l5: %ld->%ld, " + "break: %ld->%ld, continue: %ld->%ld", + (long) pc_jumpto_l2, (long) pc_l2, (long) pc_jumpto_l3, (long) pc_l3, + (long) pc_jumpto_l4, (long) pc_l4, (long) pc_jumpto_l5, (long) pc_l5, + (long) (pc_label_site + 1), (long) pc_l5, (long) (pc_label_site + 2), (long) pc_l4)); + + duk__patch_jump(comp_ctx, pc_jumpto_l2, pc_l2); + duk__patch_jump(comp_ctx, pc_jumpto_l3, pc_l3); + duk__patch_jump(comp_ctx, pc_jumpto_l4, pc_l4); + duk__patch_jump(comp_ctx, pc_jumpto_l5, pc_l5); + duk__patch_jump(comp_ctx, pc_label_site + 1, pc_l5); /* break jump */ + duk__patch_jump(comp_ctx, pc_label_site + 2, pc_l4); /* continue jump */ + } + goto finished; + + finished: + DUK_DDD(DUK_DDDPRINT("end parsing a for/for-in statement")); + return; + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_FOR); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__parse_switch_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site) { + duk_hthread *thr = comp_ctx->thr; + duk_regconst_t temp_at_loop; + duk_regconst_t rc_switch; /* reg/const for switch value */ + duk_regconst_t rc_case; /* reg/const for case value */ + duk_regconst_t reg_temp; /* general temp register */ + duk_int_t pc_prevcase = -1; + duk_int_t pc_prevstmt = -1; + duk_int_t pc_default = -1; /* -1 == not set, -2 == pending (next statement list) */ + + /* Note: negative pc values are ignored when patching jumps, so no explicit checks needed */ + + /* + * Switch is pretty complicated because of several conflicting concerns: + * + * - Want to generate code without an intermediate representation, + * i.e., in one go + * + * - Case selectors are expressions, not values, and may thus e.g. throw + * exceptions (which causes evaluation order concerns) + * + * - Evaluation semantics of case selectors and default clause need to be + * carefully implemented to provide correct behavior even with case value + * side effects + * + * - Fall through case and default clauses; avoiding dead JUMPs if case + * ends with an unconditional jump (a break or a continue) + * + * - The same case value may occur multiple times, but evaluation rules + * only process the first match before switching to a "propagation" mode + * where case values are no longer evaluated + * + * See E5 Section 12.11. Also see doc/compiler.rst for compilation + * discussion. + */ + + duk__advance(comp_ctx); + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + rc_switch = duk__exprtop_toregconst(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* RegExp mode does not matter. */ + duk__advance_expect(comp_ctx, DUK_TOK_LCURLY); + + DUK_DDD(DUK_DDDPRINT("switch value in register %ld", (long) rc_switch)); + + temp_at_loop = DUK__GETTEMP(comp_ctx); + + for (;;) { + duk_int_t num_stmts; + duk_small_uint_t tok; + + /* sufficient for keeping temp reg numbers in check */ + DUK__SETTEMP(comp_ctx, temp_at_loop); + + if (comp_ctx->curr_token.t == DUK_TOK_RCURLY) { + break; + } + + /* + * Parse a case or default clause. + */ + + if (comp_ctx->curr_token.t == DUK_TOK_CASE) { + /* + * Case clause. + * + * Note: cannot use reg_case as a temp register (for SEQ target) + * because it may be a constant. + */ + + duk__patch_jump_here(comp_ctx, pc_prevcase); /* chain jumps for case + * evaluation and checking + */ + + duk__advance(comp_ctx); + rc_case = duk__exprtop_toregconst(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + duk__advance_expect(comp_ctx, DUK_TOK_COLON); + + reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk__emit_a_b_c(comp_ctx, + DUK_OP_SEQ | DUK__EMIT_FLAG_BC_REGCONST, + reg_temp, + rc_switch, + rc_case); + duk__emit_if_true_skip(comp_ctx, reg_temp); + + /* jump to next case clause */ + pc_prevcase = duk__emit_jump_empty(comp_ctx); /* no match, next case */ + + /* statements go here (if any) on next loop */ + } else if (comp_ctx->curr_token.t == DUK_TOK_DEFAULT) { + /* + * Default clause. + */ + + if (pc_default >= 0) { + goto syntax_error; + } + duk__advance(comp_ctx); + duk__advance_expect(comp_ctx, DUK_TOK_COLON); + + /* Fix for https://github.com/svaarala/duktape/issues/155: + * If 'default' is first clause (detected by pc_prevcase < 0) + * we need to ensure we stay in the matching chain. + */ + if (pc_prevcase < 0) { + DUK_DD(DUK_DDPRINT("default clause is first, emit prevcase jump")); + pc_prevcase = duk__emit_jump_empty(comp_ctx); + } + + /* default clause matches next statement list (if any) */ + pc_default = -2; + } else { + /* Code is not accepted before the first case/default clause */ + goto syntax_error; + } + + /* + * Parse code after the clause. Possible terminators are + * 'case', 'default', and '}'. + * + * Note that there may be no code at all, not even an empty statement, + * between case clauses. This must be handled just like an empty statement + * (omitting seemingly pointless JUMPs), to avoid situations like + * test-bug-case-fallthrough.js. + */ + + num_stmts = 0; + if (pc_default == -2) { + pc_default = duk__get_current_pc(comp_ctx); + } + + /* Note: this is correct even for default clause statements: + * they participate in 'fall-through' behavior even if the + * default clause is in the middle. + */ + duk__patch_jump_here(comp_ctx, pc_prevstmt); /* chain jumps for 'fall-through' + * after a case matches. + */ + + for (;;) { + tok = comp_ctx->curr_token.t; + if (tok == DUK_TOK_CASE || tok == DUK_TOK_DEFAULT || + tok == DUK_TOK_RCURLY) { + break; + } + num_stmts++; + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + } + + /* fall-through jump to next code of next case (backpatched) */ + pc_prevstmt = duk__emit_jump_empty(comp_ctx); + + /* XXX: would be nice to omit this jump when the jump is not + * reachable, at least in the obvious cases (such as the case + * ending with a 'break'. + * + * Perhaps duk__parse_stmt() could provide some info on whether + * the statement is a "dead end"? + * + * If implemented, just set pc_prevstmt to -1 when not needed. + */ + } + + DUK_ASSERT(comp_ctx->curr_token.t == DUK_TOK_RCURLY); + comp_ctx->curr_func.allow_regexp_in_adv = 1; + duk__advance(comp_ctx); /* Allow RegExp as part of next stmt. */ + + /* default case control flow patchup; note that if pc_prevcase < 0 + * (i.e. no case clauses), control enters default case automatically. + */ + if (pc_default >= 0) { + /* default case exists: go there if no case matches */ + duk__patch_jump(comp_ctx, pc_prevcase, pc_default); + } else { + /* default case does not exist, or no statements present + * after default case: finish case evaluation + */ + duk__patch_jump_here(comp_ctx, pc_prevcase); + } + + /* fall-through control flow patchup; note that pc_prevstmt may be + * < 0 (i.e. no case clauses), in which case this is a no-op. + */ + duk__patch_jump_here(comp_ctx, pc_prevstmt); + + /* continue jump not patched, an INVALID opcode remains there */ + duk__patch_jump_here(comp_ctx, pc_label_site + 1); /* break jump */ + + /* Note: 'fast' breaks will jump to pc_label_site + 1, which will + * then jump here. The double jump will be eliminated by a + * peephole pass, resulting in an optimal jump here. The label + * site jumps will remain in bytecode and will waste code size. + */ + + return; + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_SWITCH); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__parse_if_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_regconst_t temp_reset; + duk_regconst_t rc_cond; + duk_int_t pc_jump_false; + + DUK_DDD(DUK_DDDPRINT("begin parsing if statement")); + + temp_reset = DUK__GETTEMP(comp_ctx); + + duk__advance(comp_ctx); /* eat 'if' */ + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + + rc_cond = duk__exprtop_toregconst(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + duk__emit_if_true_skip(comp_ctx, rc_cond); + pc_jump_false = duk__emit_jump_empty(comp_ctx); /* jump to end or else part */ + DUK__SETTEMP(comp_ctx, temp_reset); + + comp_ctx->curr_func.allow_regexp_in_adv = 1; + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* Allow RegExp as part of next stmt. */ + + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + + /* The 'else' ambiguity is resolved by 'else' binding to the innermost + * construct, so greedy matching is correct here. + */ + + if (comp_ctx->curr_token.t == DUK_TOK_ELSE) { + duk_int_t pc_jump_end; + + DUK_DDD(DUK_DDDPRINT("if has else part")); + + duk__advance(comp_ctx); + + pc_jump_end = duk__emit_jump_empty(comp_ctx); /* jump from true part to end */ + duk__patch_jump_here(comp_ctx, pc_jump_false); + + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + + duk__patch_jump_here(comp_ctx, pc_jump_end); + } else { + DUK_DDD(DUK_DDDPRINT("if does not have else part")); + + duk__patch_jump_here(comp_ctx, pc_jump_false); + } + + DUK_DDD(DUK_DDDPRINT("end parsing if statement")); +} + +DUK_LOCAL void duk__parse_do_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site) { + duk_regconst_t rc_cond; + duk_int_t pc_start; + + DUK_DDD(DUK_DDDPRINT("begin parsing do statement")); + + duk__advance(comp_ctx); /* Eat 'do'; allow RegExp as part of next stmt. */ + + pc_start = duk__get_current_pc(comp_ctx); + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + duk__patch_jump_here(comp_ctx, pc_label_site + 2); /* continue jump */ + + duk__advance_expect(comp_ctx, DUK_TOK_WHILE); + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + + rc_cond = duk__exprtop_toregconst(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + duk__emit_if_false_skip(comp_ctx, rc_cond); + duk__emit_jump(comp_ctx, pc_start); + /* no need to reset temps, as we're finished emitting code */ + + comp_ctx->curr_func.allow_regexp_in_adv = 1; /* Allow RegExp as part of next stmt. */ + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); + + duk__patch_jump_here(comp_ctx, pc_label_site + 1); /* break jump */ + + DUK_DDD(DUK_DDDPRINT("end parsing do statement")); +} + +DUK_LOCAL void duk__parse_while_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_int_t pc_label_site) { + duk_regconst_t temp_reset; + duk_regconst_t rc_cond; + duk_int_t pc_start; + duk_int_t pc_jump_false; + + DUK_DDD(DUK_DDDPRINT("begin parsing while statement")); + + temp_reset = DUK__GETTEMP(comp_ctx); + + duk__advance(comp_ctx); /* eat 'while' */ + + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + + pc_start = duk__get_current_pc(comp_ctx); + duk__patch_jump_here(comp_ctx, pc_label_site + 2); /* continue jump */ + + rc_cond = duk__exprtop_toregconst(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + duk__emit_if_true_skip(comp_ctx, rc_cond); + pc_jump_false = duk__emit_jump_empty(comp_ctx); + DUK__SETTEMP(comp_ctx, temp_reset); + + comp_ctx->curr_func.allow_regexp_in_adv = 1; + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* Allow RegExp as part of next stmt. */ + + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + duk__emit_jump(comp_ctx, pc_start); + + duk__patch_jump_here(comp_ctx, pc_jump_false); + duk__patch_jump_here(comp_ctx, pc_label_site + 1); /* break jump */ + + DUK_DDD(DUK_DDDPRINT("end parsing while statement")); +} + +DUK_LOCAL void duk__parse_break_or_continue_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk_bool_t is_break = (comp_ctx->curr_token.t == DUK_TOK_BREAK); + duk_int_t label_id; + duk_int_t label_catch_depth; + duk_int_t label_pc; /* points to LABEL; pc+1 = jump site for break; pc+2 = jump site for continue */ + duk_bool_t label_is_closest; + + DUK_UNREF(res); + + duk__advance(comp_ctx); /* eat 'break' or 'continue' */ + + if (comp_ctx->curr_token.t == DUK_TOK_SEMICOLON || /* explicit semi follows */ + comp_ctx->curr_token.lineterm || /* automatic semi will be inserted */ + comp_ctx->curr_token.allow_auto_semi) { /* automatic semi will be inserted */ + /* break/continue without label */ + + duk__lookup_active_label(comp_ctx, DUK_HTHREAD_STRING_EMPTY_STRING(thr), is_break, &label_id, &label_catch_depth, &label_pc, &label_is_closest); + } else if (comp_ctx->curr_token.t == DUK_TOK_IDENTIFIER) { + /* break/continue with label (label cannot be a reserved word, production is 'Identifier' */ + DUK_ASSERT(comp_ctx->curr_token.str1 != NULL); + duk__lookup_active_label(comp_ctx, comp_ctx->curr_token.str1, is_break, &label_id, &label_catch_depth, &label_pc, &label_is_closest); + duk__advance(comp_ctx); + } else { + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_BREAK_CONT_LABEL); + DUK_WO_NORETURN(return;); + } + + /* Use a fast break/continue when possible. A fast break/continue is + * just a jump to the LABEL break/continue jump slot, which then jumps + * to an appropriate place (for break, going through ENDLABEL correctly). + * The peephole optimizer will optimize the jump to a direct one. + */ + + if (label_catch_depth == comp_ctx->curr_func.catch_depth && + label_is_closest) { + DUK_DDD(DUK_DDDPRINT("break/continue: is_break=%ld, label_id=%ld, label_is_closest=%ld, " + "label_catch_depth=%ld, catch_depth=%ld " + "-> use fast variant (direct jump)", + (long) is_break, (long) label_id, (long) label_is_closest, + (long) label_catch_depth, (long) comp_ctx->curr_func.catch_depth)); + + duk__emit_jump(comp_ctx, label_pc + (is_break ? 1 : 2)); + } else { + DUK_DDD(DUK_DDDPRINT("break/continue: is_break=%ld, label_id=%ld, label_is_closest=%ld, " + "label_catch_depth=%ld, catch_depth=%ld " + "-> use slow variant (longjmp)", + (long) is_break, (long) label_id, (long) label_is_closest, + (long) label_catch_depth, (long) comp_ctx->curr_func.catch_depth)); + + duk__emit_bc(comp_ctx, + is_break ? DUK_OP_BREAK : DUK_OP_CONTINUE, + (duk_regconst_t) label_id); + } +} + +DUK_LOCAL void duk__parse_return_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk_regconst_t rc_val; + + duk__advance(comp_ctx); /* eat 'return' */ + + /* A 'return' statement is only allowed inside an actual function body, + * not as part of eval or global code. + */ + if (!comp_ctx->curr_func.is_function) { + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_RETURN); + DUK_WO_NORETURN(return;); + } + + if (comp_ctx->curr_token.t == DUK_TOK_SEMICOLON || /* explicit semi follows */ + comp_ctx->curr_token.lineterm || /* automatic semi will be inserted */ + comp_ctx->curr_token.allow_auto_semi) { /* automatic semi will be inserted */ + DUK_DDD(DUK_DDDPRINT("empty return value -> undefined")); + duk__emit_op_only(comp_ctx, DUK_OP_RETUNDEF); + } else { + duk_int_t pc_before_expr; + duk_int_t pc_after_expr; + + DUK_DDD(DUK_DDDPRINT("return with a value")); + + DUK_UNREF(pc_before_expr); + DUK_UNREF(pc_after_expr); + + pc_before_expr = duk__get_current_pc(comp_ctx); + rc_val = duk__exprtop_toregconst(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + pc_after_expr = duk__get_current_pc(comp_ctx); + + /* Tail call check: if last opcode emitted was CALL, and + * the context allows it, add a tailcall flag to the CALL. + * This doesn't guarantee that a tail call will be allowed at + * runtime, so the RETURN must still be emitted. (Duktape + * 0.10.0 avoided this and simulated a RETURN if a tail call + * couldn't be used at runtime; but this didn't work + * correctly with a thread yield/resume, see + * test-bug-tailcall-thread-yield-resume.js for discussion.) + * + * In addition to the last opcode being CALL, we also need to + * be sure that 'rc_val' is the result register of the CALL. + * For instance, for the expression 'return 0, (function () + * { return 1; }), 2' the last opcode emitted is CALL (no + * bytecode is emitted for '2') but 'rc_val' indicates + * constant '2'. Similarly if '2' is replaced by a register + * bound variable, no opcodes are emitted but tail call would + * be incorrect. + * + * This is tricky and easy to get wrong. It would be best to + * track enough expression metadata to check that 'rc_val' came + * from that last CALL instruction. We don't have that metadata + * now, so we check that 'rc_val' is a temporary register result + * (not a constant or a register bound variable). There should + * be no way currently for 'rc_val' to be a temporary for an + * expression following the CALL instruction without emitting + * some opcodes following the CALL. This proxy check is used + * below. + * + * See: test-bug-comma-expr-gh131.js. + * + * The non-standard 'caller' property disables tail calls + * because they pose some special cases which haven't been + * fixed yet. + */ + +#if defined(DUK_USE_TAILCALL) + if (comp_ctx->curr_func.catch_depth == 0 && /* no catchers */ + pc_after_expr > pc_before_expr) { /* at least one opcode emitted */ + duk_compiler_instr *instr; + duk_instr_t ins; + duk_small_uint_t op; + + instr = duk__get_instr_ptr(comp_ctx, pc_after_expr - 1); + DUK_ASSERT(instr != NULL); + + ins = instr->ins; + op = (duk_small_uint_t) DUK_DEC_OP(ins); + if ((op & ~0x0fU) == DUK_OP_CALL0 && + DUK__ISREG_TEMP(comp_ctx, rc_val) /* see above */) { + DUK_DDD(DUK_DDDPRINT("return statement detected a tail call opportunity: " + "catch depth is 0, duk__exprtop() emitted >= 1 instructions, " + "and last instruction is a CALL " + "-> change to TAILCALL")); + ins |= DUK_ENC_OP(DUK_BC_CALL_FLAG_TAILCALL); + instr->ins = ins; + } + } +#endif /* DUK_USE_TAILCALL */ + + if (DUK__ISREG(rc_val)) { + duk__emit_bc(comp_ctx, DUK_OP_RETREG, rc_val); + } else { + rc_val = DUK__REMOVECONST(rc_val); + if (duk__const_needs_refcount(comp_ctx, rc_val)) { + duk__emit_bc(comp_ctx, DUK_OP_RETCONST, rc_val); + } else { + duk__emit_bc(comp_ctx, DUK_OP_RETCONSTN, rc_val); + } + } + } +} + +DUK_LOCAL void duk__parse_throw_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_regconst_t reg_val; + + duk__advance(comp_ctx); /* eat 'throw' */ + + /* Unlike break/continue, throw statement does not allow an empty value. */ + + if (comp_ctx->curr_token.lineterm) { + DUK_ERROR_SYNTAX(comp_ctx->thr, DUK_STR_INVALID_THROW); + DUK_WO_NORETURN(return;); + } + + reg_val = duk__exprtop_toreg(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + duk__emit_bc(comp_ctx, + DUK_OP_THROW, + reg_val); +} + +DUK_LOCAL void duk__parse_try_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_hthread *thr = comp_ctx->thr; + duk_regconst_t reg_catch; /* reg_catch+0 and reg_catch+1 are reserved for TRYCATCH */ + duk_regconst_t rc_varname = 0; + duk_small_uint_t trycatch_flags = 0; + duk_int_t pc_ldconst = -1; + duk_int_t pc_trycatch = -1; + duk_int_t pc_catch = -1; + duk_int_t pc_finally = -1; + + DUK_UNREF(res); + + /* + * See the following documentation for discussion: + * + * doc/execution.rst: control flow details + * + * Try, catch, and finally "parts" are Blocks, not Statements, so + * they must always be delimited by curly braces. This is unlike e.g. + * the if statement, which accepts any Statement. This eliminates any + * questions of matching parts of nested try statements. The Block + * parsing is implemented inline here (instead of calling out). + * + * Finally part has a 'let scoped' variable, which requires a few kinks + * here. + */ + + comp_ctx->curr_func.catch_depth++; + + duk__advance(comp_ctx); /* eat 'try' */ + + reg_catch = DUK__ALLOCTEMPS(comp_ctx, 2); + + /* The target for this LDCONST may need output shuffling, but we assume + * that 'pc_ldconst' will be the LDCONST that we can patch later. This + * should be the case because there's no input shuffling. (If there's + * no catch clause, this LDCONST will be replaced with a NOP.) + */ + pc_ldconst = duk__get_current_pc(comp_ctx); + duk__emit_a_bc(comp_ctx, DUK_OP_LDCONST, reg_catch, 0 /*patched later*/); + + pc_trycatch = duk__get_current_pc(comp_ctx); + duk__emit_invalid(comp_ctx); /* TRYCATCH, cannot emit now (not enough info) */ + duk__emit_invalid(comp_ctx); /* jump for 'catch' case */ + duk__emit_invalid(comp_ctx); /* jump for 'finally' case or end (if no finally) */ + + /* try part */ + duk__advance_expect(comp_ctx, DUK_TOK_LCURLY); + duk__parse_stmts(comp_ctx, 0 /*allow_source_elem*/, 0 /*expect_eof*/, 1 /*regexp_after*/); + /* the DUK_TOK_RCURLY is eaten by duk__parse_stmts() */ + duk__emit_op_only(comp_ctx, DUK_OP_ENDTRY); + + if (comp_ctx->curr_token.t == DUK_TOK_CATCH) { + /* + * The catch variable must be updated to reflect the new allocated + * register for the duration of the catch clause. We need to store + * and restore the original value for the varmap entry (if any). + */ + + /* + * Note: currently register bindings must be fixed for the entire + * function. So, even though the catch variable is in a register + * we know, we must use an explicit environment record and slow path + * accesses to read/write the catch binding to make closures created + * within the catch clause work correctly. This restriction should + * be fixable (at least in common cases) later. + * + * See: test-bug-catch-binding-2.js. + * + * XXX: improve to get fast path access to most catch clauses. + */ + + duk_hstring *h_var; + duk_int_t varmap_value; /* for storing/restoring the varmap binding for catch variable */ + + DUK_DDD(DUK_DDDPRINT("stack top at start of catch clause: %ld", (long) duk_get_top(thr))); + + trycatch_flags |= DUK_BC_TRYCATCH_FLAG_HAVE_CATCH; + + pc_catch = duk__get_current_pc(comp_ctx); + + duk__advance(comp_ctx); + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + + if (comp_ctx->curr_token.t != DUK_TOK_IDENTIFIER) { + /* Identifier, i.e. don't allow reserved words */ + goto syntax_error; + } + h_var = comp_ctx->curr_token.str1; + DUK_ASSERT(h_var != NULL); + + duk_push_hstring(thr, h_var); /* keep in on valstack, use borrowed ref below */ + + if (comp_ctx->curr_func.is_strict && + ((h_var == DUK_HTHREAD_STRING_EVAL(thr)) || + (h_var == DUK_HTHREAD_STRING_LC_ARGUMENTS(thr)))) { + DUK_DDD(DUK_DDDPRINT("catch identifier 'eval' or 'arguments' in strict mode -> SyntaxError")); + goto syntax_error; + } + + duk_dup_top(thr); + rc_varname = duk__getconst(comp_ctx); + DUK_DDD(DUK_DDDPRINT("catch clause, rc_varname=0x%08lx (%ld)", + (unsigned long) rc_varname, (long) rc_varname)); + + duk__advance(comp_ctx); + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); + + duk__advance_expect(comp_ctx, DUK_TOK_LCURLY); + + DUK_DDD(DUK_DDDPRINT("varmap before modifying for catch clause: %!iT", + (duk_tval *) duk_get_tval(thr, comp_ctx->curr_func.varmap_idx))); + + duk_dup_top(thr); + duk_get_prop(thr, comp_ctx->curr_func.varmap_idx); + if (duk_is_undefined(thr, -1)) { + varmap_value = -2; + } else if (duk_is_null(thr, -1)) { + varmap_value = -1; + } else { + DUK_ASSERT(duk_is_number(thr, -1)); + varmap_value = duk_get_int(thr, -1); + DUK_ASSERT(varmap_value >= 0); + } + duk_pop(thr); + +#if 0 + /* It'd be nice to do something like this - but it doesn't + * work for closures created inside the catch clause. + */ + duk_dup_top(thr); + duk_push_int(thr, (duk_int_t) (reg_catch + 0)); + duk_put_prop(thr, comp_ctx->curr_func.varmap_idx); +#endif + duk_dup_top(thr); + duk_push_null(thr); + duk_put_prop(thr, comp_ctx->curr_func.varmap_idx); + + duk__emit_a_bc(comp_ctx, + DUK_OP_PUTVAR | DUK__EMIT_FLAG_A_IS_SOURCE, + reg_catch + 0 /*value*/, + rc_varname /*varname*/); + + DUK_DDD(DUK_DDDPRINT("varmap before parsing catch clause: %!iT", + (duk_tval *) duk_get_tval(thr, comp_ctx->curr_func.varmap_idx))); + + duk__parse_stmts(comp_ctx, 0 /*allow_source_elem*/, 0 /*expect_eof*/, 1 /*regexp_after*/); + /* the DUK_TOK_RCURLY is eaten by duk__parse_stmts() */ + + if (varmap_value == -2) { + /* not present */ + duk_del_prop(thr, comp_ctx->curr_func.varmap_idx); + } else { + if (varmap_value == -1) { + duk_push_null(thr); + } else { + DUK_ASSERT(varmap_value >= 0); + duk_push_int(thr, varmap_value); + } + duk_put_prop(thr, comp_ctx->curr_func.varmap_idx); + } + /* varname is popped by above code */ + + DUK_DDD(DUK_DDDPRINT("varmap after restore catch clause: %!iT", + (duk_tval *) duk_get_tval(thr, comp_ctx->curr_func.varmap_idx))); + + duk__emit_op_only(comp_ctx, + DUK_OP_ENDCATCH); + + /* + * XXX: for now, indicate that an expensive catch binding + * declarative environment is always needed. If we don't + * need it, we don't need the const_varname either. + */ + + trycatch_flags |= DUK_BC_TRYCATCH_FLAG_CATCH_BINDING; + + DUK_DDD(DUK_DDDPRINT("stack top at end of catch clause: %ld", (long) duk_get_top(thr))); + } + + if (comp_ctx->curr_token.t == DUK_TOK_FINALLY) { + trycatch_flags |= DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY; + + pc_finally = duk__get_current_pc(comp_ctx); + + duk__advance(comp_ctx); + + duk__advance_expect(comp_ctx, DUK_TOK_LCURLY); + duk__parse_stmts(comp_ctx, 0 /*allow_source_elem*/, 0 /*expect_eof*/, 1 /*regexp_after*/); + /* the DUK_TOK_RCURLY is eaten by duk__parse_stmts() */ + duk__emit_abc(comp_ctx, + DUK_OP_ENDFIN, + reg_catch); /* rethrow */ + } + + if (!(trycatch_flags & DUK_BC_TRYCATCH_FLAG_HAVE_CATCH) && + !(trycatch_flags & DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY)) { + /* must have catch and/or finally */ + goto syntax_error; + } + + /* If there's no catch block, rc_varname will be 0 and duk__patch_trycatch() + * will replace the LDCONST with a NOP. For any actual constant (including + * constant 0) the DUK__CONST_MARKER flag will be set in rc_varname. + */ + + duk__patch_trycatch(comp_ctx, + pc_ldconst, + pc_trycatch, + reg_catch, + rc_varname, + trycatch_flags); + + if (trycatch_flags & DUK_BC_TRYCATCH_FLAG_HAVE_CATCH) { + DUK_ASSERT(pc_catch >= 0); + duk__patch_jump(comp_ctx, pc_trycatch + 1, pc_catch); + } + + if (trycatch_flags & DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY) { + DUK_ASSERT(pc_finally >= 0); + duk__patch_jump(comp_ctx, pc_trycatch + 2, pc_finally); + } else { + /* without finally, the second jump slot is used to jump to end of stmt */ + duk__patch_jump_here(comp_ctx, pc_trycatch + 2); + } + + comp_ctx->curr_func.catch_depth--; + return; + + syntax_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_TRY); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__parse_with_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res) { + duk_int_t pc_trycatch; + duk_int_t pc_finished; + duk_regconst_t reg_catch; + duk_small_uint_t trycatch_flags; + + if (comp_ctx->curr_func.is_strict) { + DUK_ERROR_SYNTAX(comp_ctx->thr, DUK_STR_WITH_IN_STRICT_MODE); + DUK_WO_NORETURN(return;); + } + + comp_ctx->curr_func.catch_depth++; + + duk__advance(comp_ctx); /* eat 'with' */ + + reg_catch = DUK__ALLOCTEMPS(comp_ctx, 2); + + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + duk__exprtop_toforcedreg(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/, reg_catch); + comp_ctx->curr_func.allow_regexp_in_adv = 1; + duk__advance_expect(comp_ctx, DUK_TOK_RPAREN); /* Allow RegExp as part of next stmt. */ + + pc_trycatch = duk__get_current_pc(comp_ctx); + trycatch_flags = DUK_BC_TRYCATCH_FLAG_WITH_BINDING; + duk__emit_a_bc(comp_ctx, + DUK_OP_TRYCATCH | DUK__EMIT_FLAG_NO_SHUFFLE_A, + (duk_regconst_t) trycatch_flags /*a*/, + reg_catch /*bc*/); + duk__emit_invalid(comp_ctx); /* catch jump */ + duk__emit_invalid(comp_ctx); /* finished jump */ + + duk__parse_stmt(comp_ctx, res, 0 /*allow_source_elem*/); + duk__emit_op_only(comp_ctx, DUK_OP_ENDTRY); + + pc_finished = duk__get_current_pc(comp_ctx); + + duk__patch_jump(comp_ctx, pc_trycatch + 2, pc_finished); + + comp_ctx->curr_func.catch_depth--; +} + +DUK_LOCAL duk_int_t duk__stmt_label_site(duk_compiler_ctx *comp_ctx, duk_int_t label_id) { + /* if a site already exists, nop: max one label site per statement */ + if (label_id >= 0) { + return label_id; + } + + label_id = comp_ctx->curr_func.label_next++; + DUK_DDD(DUK_DDDPRINT("allocated new label id for label site: %ld", (long) label_id)); + + duk__emit_bc(comp_ctx, + DUK_OP_LABEL, + (duk_regconst_t) label_id); + duk__emit_invalid(comp_ctx); + duk__emit_invalid(comp_ctx); + + return label_id; +} + +/* Parse a single statement. + * + * Creates a label site (with an empty label) automatically for iteration + * statements. Also "peels off" any label statements for explicit labels. + */ +DUK_LOCAL void duk__parse_stmt(duk_compiler_ctx *comp_ctx, duk_ivalue *res, duk_bool_t allow_source_elem) { + duk_hthread *thr = comp_ctx->thr; + duk_bool_t dir_prol_at_entry; /* directive prologue status at entry */ + duk_regconst_t temp_at_entry; + duk_size_t labels_len_at_entry; + duk_int_t pc_at_entry; /* assumed to also be PC of "LABEL" */ + duk_int_t stmt_id; + duk_small_uint_t stmt_flags = 0; + duk_int_t label_id = -1; + duk_small_uint_t tok; + duk_bool_t test_func_decl; + + DUK__RECURSION_INCREASE(comp_ctx, thr); + + temp_at_entry = DUK__GETTEMP(comp_ctx); + pc_at_entry = duk__get_current_pc(comp_ctx); + labels_len_at_entry = duk_get_length(thr, comp_ctx->curr_func.labelnames_idx); + stmt_id = comp_ctx->curr_func.stmt_next++; + dir_prol_at_entry = comp_ctx->curr_func.in_directive_prologue; + + DUK_UNREF(stmt_id); + + DUK_DDD(DUK_DDDPRINT("parsing a statement, stmt_id=%ld, temp_at_entry=%ld, labels_len_at_entry=%ld, " + "is_strict=%ld, in_directive_prologue=%ld, catch_depth=%ld", + (long) stmt_id, (long) temp_at_entry, (long) labels_len_at_entry, + (long) comp_ctx->curr_func.is_strict, (long) comp_ctx->curr_func.in_directive_prologue, + (long) comp_ctx->curr_func.catch_depth)); + + /* The directive prologue flag is cleared by default so that it is + * unset for any recursive statement parsing. It is only "revived" + * if a directive is detected. (We could also make directives only + * allowed if 'allow_source_elem' was true.) + */ + comp_ctx->curr_func.in_directive_prologue = 0; + + retry_parse: + + DUK_DDD(DUK_DDDPRINT("try stmt parse, stmt_id=%ld, label_id=%ld, allow_source_elem=%ld, catch_depth=%ld", + (long) stmt_id, (long) label_id, (long) allow_source_elem, + (long) comp_ctx->curr_func.catch_depth)); + + /* + * Detect iteration statements; if encountered, establish an + * empty label. + */ + + tok = comp_ctx->curr_token.t; + if (tok == DUK_TOK_FOR || tok == DUK_TOK_DO || tok == DUK_TOK_WHILE || + tok == DUK_TOK_SWITCH) { + DUK_DDD(DUK_DDDPRINT("iteration/switch statement -> add empty label")); + + label_id = duk__stmt_label_site(comp_ctx, label_id); + duk__add_label(comp_ctx, + DUK_HTHREAD_STRING_EMPTY_STRING(thr), + pc_at_entry /*pc_label*/, + label_id); + } + + /* + * Main switch for statement / source element type. + */ + + switch (comp_ctx->curr_token.t) { + case DUK_TOK_FUNCTION: { + /* + * Function declaration, function expression, or (non-standard) + * function statement. + * + * The E5 specification only allows function declarations at + * the top level (in "source elements"). An ExpressionStatement + * is explicitly not allowed to begin with a "function" keyword + * (E5 Section 12.4). Hence any non-error semantics for such + * non-top-level statements are non-standard. Duktape semantics + * for function statements are modelled after V8, see + * test-dev-func-decl-outside-top.js. + */ + test_func_decl = allow_source_elem; +#if defined(DUK_USE_NONSTD_FUNC_STMT) + /* Lenient: allow function declarations outside top level in + * non-strict mode but reject them in strict mode. + */ + test_func_decl = test_func_decl || !comp_ctx->curr_func.is_strict; +#endif /* DUK_USE_NONSTD_FUNC_STMT */ + /* Strict: never allow function declarations outside top level. */ + if (test_func_decl) { + /* FunctionDeclaration: not strictly a statement but handled as such. + * + * O(depth^2) parse count for inner functions is handled by recording a + * lexer offset on the first compilation pass, so that the function can + * be efficiently skipped on the second pass. This is encapsulated into + * duk__parse_func_like_fnum(). + */ + + duk_int_t fnum; +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t top_before; +#endif + + DUK_DDD(DUK_DDDPRINT("function declaration statement")); + +#if defined(DUK_USE_ASSERTIONS) + top_before = duk_get_top(thr); +#endif + + duk__advance(comp_ctx); /* eat 'function' */ + fnum = duk__parse_func_like_fnum(comp_ctx, DUK__FUNC_FLAG_DECL | DUK__FUNC_FLAG_PUSHNAME_PASS1); + + /* The value stack convention here is a bit odd: the function + * name is only pushed on pass 1 (in_scanning), and is needed + * to process function declarations. + */ + if (comp_ctx->curr_func.in_scanning) { + duk_uarridx_t n; + +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(duk_get_top(thr) == top_before + 1); +#endif + DUK_DDD(DUK_DDDPRINT("register function declaration %!T in pass 1, fnum %ld", + duk_get_tval(thr, -1), (long) fnum)); + n = (duk_uarridx_t) duk_get_length(thr, comp_ctx->curr_func.decls_idx); + /* funcname is at index -1 */ + duk_put_prop_index(thr, comp_ctx->curr_func.decls_idx, n); + duk_push_int(thr, (duk_int_t) (DUK_DECL_TYPE_FUNC + (fnum << 8))); + duk_put_prop_index(thr, comp_ctx->curr_func.decls_idx, n + 1); + } else { +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(duk_get_top(thr) == top_before); +#endif + } + + /* no statement value (unlike function expression) */ + stmt_flags = 0; + break; + } else { + DUK_ERROR_SYNTAX(thr, DUK_STR_FUNC_STMT_NOT_ALLOWED); + DUK_WO_NORETURN(return;); + } + break; + } + case DUK_TOK_LCURLY: { + DUK_DDD(DUK_DDDPRINT("block statement")); + duk__advance(comp_ctx); + duk__parse_stmts(comp_ctx, 0 /*allow_source_elem*/, 0 /*expect_eof*/, 1 /*regexp_after*/); + /* the DUK_TOK_RCURLY is eaten by duk__parse_stmts() */ + if (label_id >= 0) { + duk__patch_jump_here(comp_ctx, pc_at_entry + 1); /* break jump */ + } + stmt_flags = 0; + break; + } + case DUK_TOK_CONST: { + DUK_DDD(DUK_DDDPRINT("constant declaration statement")); + duk__parse_var_stmt(comp_ctx, res, DUK__EXPR_FLAG_REQUIRE_INIT /*expr_flags*/); + stmt_flags = DUK__HAS_TERM; + break; + } + case DUK_TOK_VAR: { + DUK_DDD(DUK_DDDPRINT("variable declaration statement")); + duk__parse_var_stmt(comp_ctx, res, 0 /*expr_flags*/); + stmt_flags = DUK__HAS_TERM; + break; + } + case DUK_TOK_SEMICOLON: { + /* empty statement with an explicit semicolon */ + DUK_DDD(DUK_DDDPRINT("empty statement")); + stmt_flags = DUK__HAS_TERM; + break; + } + case DUK_TOK_IF: { + DUK_DDD(DUK_DDDPRINT("if statement")); + duk__parse_if_stmt(comp_ctx, res); + if (label_id >= 0) { + duk__patch_jump_here(comp_ctx, pc_at_entry + 1); /* break jump */ + } + stmt_flags = 0; + break; + } + case DUK_TOK_DO: { + /* + * Do-while statement is mostly trivial, but there is special + * handling for automatic semicolon handling (triggered by the + * DUK__ALLOW_AUTO_SEMI_ALWAYS) flag related to a bug filed at: + * + * https://bugs.ecmascript.org/show_bug.cgi?id=8 + * + * See doc/compiler.rst for details. + */ + DUK_DDD(DUK_DDDPRINT("do statement")); + DUK_ASSERT(label_id >= 0); + duk__update_label_flags(comp_ctx, + label_id, + DUK_LABEL_FLAG_ALLOW_BREAK | DUK_LABEL_FLAG_ALLOW_CONTINUE); + duk__parse_do_stmt(comp_ctx, res, pc_at_entry); + stmt_flags = DUK__HAS_TERM | DUK__ALLOW_AUTO_SEMI_ALWAYS; /* DUK__ALLOW_AUTO_SEMI_ALWAYS workaround */ + break; + } + case DUK_TOK_WHILE: { + DUK_DDD(DUK_DDDPRINT("while statement")); + DUK_ASSERT(label_id >= 0); + duk__update_label_flags(comp_ctx, + label_id, + DUK_LABEL_FLAG_ALLOW_BREAK | DUK_LABEL_FLAG_ALLOW_CONTINUE); + duk__parse_while_stmt(comp_ctx, res, pc_at_entry); + stmt_flags = 0; + break; + } + case DUK_TOK_FOR: { + /* + * For/for-in statement is complicated to parse because + * determining the statement type (three-part for vs. a + * for-in) requires potential backtracking. + * + * See the helper for the messy stuff. + */ + DUK_DDD(DUK_DDDPRINT("for/for-in statement")); + DUK_ASSERT(label_id >= 0); + duk__update_label_flags(comp_ctx, + label_id, + DUK_LABEL_FLAG_ALLOW_BREAK | DUK_LABEL_FLAG_ALLOW_CONTINUE); + duk__parse_for_stmt(comp_ctx, res, pc_at_entry); + stmt_flags = 0; + break; + } + case DUK_TOK_CONTINUE: + case DUK_TOK_BREAK: { + DUK_DDD(DUK_DDDPRINT("break/continue statement")); + duk__parse_break_or_continue_stmt(comp_ctx, res); + stmt_flags = DUK__HAS_TERM | DUK__IS_TERMINAL; + break; + } + case DUK_TOK_RETURN: { + DUK_DDD(DUK_DDDPRINT("return statement")); + duk__parse_return_stmt(comp_ctx, res); + stmt_flags = DUK__HAS_TERM | DUK__IS_TERMINAL; + break; + } + case DUK_TOK_WITH: { + DUK_DDD(DUK_DDDPRINT("with statement")); + comp_ctx->curr_func.with_depth++; + duk__parse_with_stmt(comp_ctx, res); + if (label_id >= 0) { + duk__patch_jump_here(comp_ctx, pc_at_entry + 1); /* break jump */ + } + comp_ctx->curr_func.with_depth--; + stmt_flags = 0; + break; + } + case DUK_TOK_SWITCH: { + /* + * The switch statement is pretty messy to compile. + * See the helper for details. + */ + DUK_DDD(DUK_DDDPRINT("switch statement")); + DUK_ASSERT(label_id >= 0); + duk__update_label_flags(comp_ctx, + label_id, + DUK_LABEL_FLAG_ALLOW_BREAK); /* don't allow continue */ + duk__parse_switch_stmt(comp_ctx, res, pc_at_entry); + stmt_flags = 0; + break; + } + case DUK_TOK_THROW: { + DUK_DDD(DUK_DDDPRINT("throw statement")); + duk__parse_throw_stmt(comp_ctx, res); + stmt_flags = DUK__HAS_TERM | DUK__IS_TERMINAL; + break; + } + case DUK_TOK_TRY: { + DUK_DDD(DUK_DDDPRINT("try statement")); + duk__parse_try_stmt(comp_ctx, res); + stmt_flags = 0; + break; + } + case DUK_TOK_DEBUGGER: { + duk__advance(comp_ctx); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + DUK_DDD(DUK_DDDPRINT("debugger statement: debugging enabled, emit debugger opcode")); + duk__emit_op_only(comp_ctx, DUK_OP_DEBUGGER); +#else + DUK_DDD(DUK_DDDPRINT("debugger statement: ignored")); +#endif + stmt_flags = DUK__HAS_TERM; + break; + } + default: { + /* + * Else, must be one of: + * - ExpressionStatement, possibly a directive (String) + * - LabelledStatement (Identifier followed by ':') + * + * Expressions beginning with 'function' keyword are covered by a case + * above (such expressions are not allowed in standard E5 anyway). + * Also expressions starting with '{' are interpreted as block + * statements. See E5 Section 12.4. + * + * Directive detection is tricky; see E5 Section 14.1 on directive + * prologue. A directive is an expression statement with a single + * string literal and an explicit or automatic semicolon. Escape + * characters are significant and no parens etc are allowed: + * + * 'use strict'; // valid 'use strict' directive + * 'use\u0020strict'; // valid directive, not a 'use strict' directive + * ('use strict'); // not a valid directive + * + * The expression is determined to consist of a single string literal + * based on duk__expr_nud() and duk__expr_led() call counts. The string literal + * of a 'use strict' directive is determined to lack any escapes based + * num_escapes count from the lexer. Note that other directives may be + * allowed to contain escapes, so a directive with escapes does not + * terminate a directive prologue. + * + * We rely on the fact that the expression parser will not emit any + * code for a single token expression. However, it will generate an + * intermediate value which we will then successfully ignore. + * + * A similar approach is used for labels. + */ + + duk_bool_t single_token; + + DUK_DDD(DUK_DDDPRINT("expression statement")); + duk__exprtop(comp_ctx, res, DUK__BP_FOR_EXPR /*rbp_flags*/); + + single_token = (comp_ctx->curr_func.nud_count == 1 && /* one token */ + comp_ctx->curr_func.led_count == 0); /* no operators */ + + if (single_token && + comp_ctx->prev_token.t == DUK_TOK_IDENTIFIER && + comp_ctx->curr_token.t == DUK_TOK_COLON) { + /* + * Detected label + */ + + duk_hstring *h_lab; + + /* expected ival */ + DUK_ASSERT(res->t == DUK_IVAL_VAR); + DUK_ASSERT(res->x1.t == DUK_ISPEC_VALUE); + DUK_ASSERT(DUK_TVAL_IS_STRING(duk_get_tval(thr, res->x1.valstack_idx))); + h_lab = comp_ctx->prev_token.str1; + DUK_ASSERT(h_lab != NULL); + + DUK_DDD(DUK_DDDPRINT("explicit label site for label '%!O'", + (duk_heaphdr *) h_lab)); + + duk__advance(comp_ctx); /* eat colon */ + + label_id = duk__stmt_label_site(comp_ctx, label_id); + + duk__add_label(comp_ctx, + h_lab, + pc_at_entry /*pc_label*/, + label_id); + + /* a statement following a label cannot be a source element + * (a function declaration). + */ + allow_source_elem = 0; + + DUK_DDD(DUK_DDDPRINT("label handled, retry statement parsing")); + goto retry_parse; + } + + stmt_flags = 0; + + if (dir_prol_at_entry && /* still in prologue */ + single_token && /* single string token */ + comp_ctx->prev_token.t == DUK_TOK_STRING) { + /* + * Detected a directive + */ + duk_hstring *h_dir; + + /* expected ival */ + DUK_ASSERT(res->t == DUK_IVAL_PLAIN); + DUK_ASSERT(res->x1.t == DUK_ISPEC_VALUE); + DUK_ASSERT(DUK_TVAL_IS_STRING(duk_get_tval(thr, res->x1.valstack_idx))); + h_dir = comp_ctx->prev_token.str1; + DUK_ASSERT(h_dir != NULL); + + DUK_DDD(DUK_DDDPRINT("potential directive: %!O", h_dir)); + + stmt_flags |= DUK__STILL_PROLOGUE; + + /* Note: escaped characters differentiate directives */ + + if (comp_ctx->prev_token.num_escapes > 0) { + DUK_DDD(DUK_DDDPRINT("directive contains escapes: valid directive " + "but we ignore such directives")); + } else { + /* + * The length comparisons are present to handle + * strings like "use strict\u0000foo" as required. + */ + + if (DUK_HSTRING_GET_BYTELEN(h_dir) == 10 && + DUK_STRCMP((const char *) DUK_HSTRING_GET_DATA(h_dir), "use strict") == 0) { +#if defined(DUK_USE_STRICT_DECL) + DUK_DDD(DUK_DDDPRINT("use strict directive detected: strict flag %ld -> %ld", + (long) comp_ctx->curr_func.is_strict, (long) 1)); + comp_ctx->curr_func.is_strict = 1; +#else + DUK_DDD(DUK_DDDPRINT("use strict detected but strict declarations disabled, ignoring")); +#endif + } else if (DUK_HSTRING_GET_BYTELEN(h_dir) == 14 && + DUK_STRCMP((const char *) DUK_HSTRING_GET_DATA(h_dir), "use duk notail") == 0) { + DUK_DDD(DUK_DDDPRINT("use duk notail directive detected: notail flag %ld -> %ld", + (long) comp_ctx->curr_func.is_notail, (long) 1)); + comp_ctx->curr_func.is_notail = 1; + } else { + DUK_DD(DUK_DDPRINT("unknown directive: '%!O', ignoring but not terminating " + "directive prologue", (duk_hobject *) h_dir)); + } + } + } else { + DUK_DDD(DUK_DDDPRINT("non-directive expression statement or no longer in prologue; " + "prologue terminated if still active")); + } + + stmt_flags |= DUK__HAS_VAL | DUK__HAS_TERM; + } + } /* end switch (tok) */ + + /* + * Statement value handling. + * + * Global code and eval code has an implicit return value + * which comes from the last statement with a value + * (technically a non-"empty" continuation, which is + * different from an empty statement). + * + * Since we don't know whether a later statement will + * override the value of the current statement, we need + * to coerce the statement value to a register allocated + * for implicit return values. In other cases we need + * to coerce the statement value to a plain value to get + * any side effects out (consider e.g. "foo.bar;"). + */ + + /* XXX: what about statements which leave a half-cooked value in 'res' + * but have no stmt value? Any such statements? + */ + + if (stmt_flags & DUK__HAS_VAL) { + duk_regconst_t reg_stmt_value = comp_ctx->curr_func.reg_stmt_value; + if (reg_stmt_value >= 0) { + duk__ivalue_toforcedreg(comp_ctx, res, reg_stmt_value); + } else { + duk__ivalue_toplain_ignore(comp_ctx, res); + } + } else { + ; + } + + /* + * Statement terminator check, including automatic semicolon + * handling. After this step, 'curr_tok' should be the first + * token after a possible statement terminator. + */ + + if (stmt_flags & DUK__HAS_TERM) { + if (comp_ctx->curr_token.t == DUK_TOK_SEMICOLON) { + DUK_DDD(DUK_DDDPRINT("explicit semicolon terminates statement")); + duk__advance(comp_ctx); + } else { + if (comp_ctx->curr_token.allow_auto_semi) { + DUK_DDD(DUK_DDDPRINT("automatic semicolon terminates statement")); + } else if (stmt_flags & DUK__ALLOW_AUTO_SEMI_ALWAYS) { + /* XXX: make this lenience dependent on flags or strictness? */ + DUK_DDD(DUK_DDDPRINT("automatic semicolon terminates statement (allowed for compatibility " + "even though no lineterm present before next token)")); + } else { + DUK_ERROR_SYNTAX(thr, DUK_STR_UNTERMINATED_STMT); + DUK_WO_NORETURN(return;); + } + } + } else { + DUK_DDD(DUK_DDDPRINT("statement has no terminator")); + } + + /* + * Directive prologue tracking. + */ + + if (stmt_flags & DUK__STILL_PROLOGUE) { + DUK_DDD(DUK_DDDPRINT("setting in_directive_prologue")); + comp_ctx->curr_func.in_directive_prologue = 1; + } + + /* + * Cleanups (all statement parsing flows through here). + * + * Pop label site and reset labels. Reset 'next temp' to value at + * entry to reuse temps. + */ + + if (label_id >= 0) { + duk__emit_bc(comp_ctx, + DUK_OP_ENDLABEL, + (duk_regconst_t) label_id); + } + + DUK__SETTEMP(comp_ctx, temp_at_entry); + + duk__reset_labels_to_length(comp_ctx, labels_len_at_entry); + + /* XXX: return indication of "terminalness" (e.g. a 'throw' is terminal) */ + + DUK__RECURSION_DECREASE(comp_ctx, thr); +} + +/* + * Parse a statement list. + * + * Handles automatic semicolon insertion and implicit return value. + * + * Upon entry, 'curr_tok' should contain the first token of the first + * statement (parsed in the "allow regexp literal" mode). Upon exit, + * 'curr_tok' contains the token following the statement list terminator + * (EOF or closing brace). + */ + +DUK_LOCAL void duk__parse_stmts(duk_compiler_ctx *comp_ctx, duk_bool_t allow_source_elem, duk_bool_t expect_eof, duk_bool_t regexp_after) { + duk_hthread *thr = comp_ctx->thr; + duk_ivalue res_alloc; + duk_ivalue *res = &res_alloc; + + /* Setup state. Initial ivalue is 'undefined'. */ + + duk_require_stack(thr, DUK__PARSE_STATEMENTS_SLOTS); + + /* XXX: 'res' setup can be moved to function body level; in fact, two 'res' + * intermediate values suffice for parsing of each function. Nesting is needed + * for nested functions (which may occur inside expressions). + */ + + duk_memzero(&res_alloc, sizeof(res_alloc)); + res->t = DUK_IVAL_PLAIN; + res->x1.t = DUK_ISPEC_VALUE; + res->x1.valstack_idx = duk_get_top(thr); + res->x2.valstack_idx = res->x1.valstack_idx + 1; + duk_push_undefined(thr); + duk_push_undefined(thr); + + /* Parse statements until a closing token (EOF or '}') is found. */ + + for (;;) { + /* Check whether statement list ends. */ + + if (expect_eof) { + if (comp_ctx->curr_token.t == DUK_TOK_EOF) { + break; + } + } else { + if (comp_ctx->curr_token.t == DUK_TOK_RCURLY) { + break; + } + } + + /* Check statement type based on the first token type. + * + * Note: expression parsing helpers expect 'curr_tok' to + * contain the first token of the expression upon entry. + */ + + DUK_DDD(DUK_DDDPRINT("TOKEN %ld (non-whitespace, non-comment)", (long) comp_ctx->curr_token.t)); + + duk__parse_stmt(comp_ctx, res, allow_source_elem); + } + + /* RegExp is allowed / not allowed depending on context. For function + * declarations RegExp is allowed because it follows a function + * declaration statement and may appear as part of the next statement. + * For function expressions RegExp is not allowed, and it's possible + * to do something like '(function () {} / 123)'. + */ + if (regexp_after) { + comp_ctx->curr_func.allow_regexp_in_adv = 1; + } + duk__advance(comp_ctx); + + /* Tear down state. */ + + duk_pop_2(thr); +} + +/* + * Declaration binding instantiation conceptually happens when calling a + * function; for us it essentially means that function prologue. The + * conceptual process is described in E5 Section 10.5. + * + * We need to keep track of all encountered identifiers to (1) create an + * identifier-to-register map ("varmap"); and (2) detect duplicate + * declarations. Identifiers which are not bound to registers still need + * to be tracked for detecting duplicates. Currently such identifiers + * are put into the varmap with a 'null' value, which is later cleaned up. + * + * To support functions with a large number of variable and function + * declarations, registers are not allocated beyond a certain limit; + * after that limit, variables and functions need slow path access. + * Arguments are currently always register bound, which imposes a hard + * (and relatively small) argument count limit. + * + * Some bindings in E5 are not configurable (= deletable) and almost all + * are mutable (writable). Exceptions are: + * + * - The 'arguments' binding, established only if no shadowing argument + * or function declaration exists. We handle 'arguments' creation + * and binding through an explicit slow path environment record. + * + * - The "name" binding for a named function expression. This is also + * handled through an explicit slow path environment record. + */ + +/* XXX: add support for variables to not be register bound always, to + * handle cases with a very large number of variables? + */ + +DUK_LOCAL void duk__init_varmap_and_prologue_for_pass2(duk_compiler_ctx *comp_ctx, duk_regconst_t *out_stmt_value_reg) { + duk_hthread *thr = comp_ctx->thr; + duk_hstring *h_name; + duk_bool_t configurable_bindings; + duk_uarridx_t num_args; + duk_uarridx_t num_decls; + duk_regconst_t rc_name; + duk_small_uint_t declvar_flags; + duk_uarridx_t i; +#if defined(DUK_USE_ASSERTIONS) + duk_idx_t entry_top; +#endif + +#if defined(DUK_USE_ASSERTIONS) + entry_top = duk_get_top(thr); +#endif + + /* + * Preliminaries + */ + + configurable_bindings = comp_ctx->curr_func.is_eval; + DUK_DDD(DUK_DDDPRINT("configurable_bindings=%ld", (long) configurable_bindings)); + + /* varmap is already in comp_ctx->curr_func.varmap_idx */ + + /* + * Function formal arguments, always bound to registers + * (there's no support for shuffling them now). + */ + + num_args = (duk_uarridx_t) duk_get_length(thr, comp_ctx->curr_func.argnames_idx); + DUK_DDD(DUK_DDDPRINT("num_args=%ld", (long) num_args)); + /* XXX: check num_args */ + + for (i = 0; i < num_args; i++) { + duk_get_prop_index(thr, comp_ctx->curr_func.argnames_idx, i); + h_name = duk_known_hstring(thr, -1); + + if (comp_ctx->curr_func.is_strict) { + if (duk__hstring_is_eval_or_arguments(comp_ctx, h_name)) { + DUK_DDD(DUK_DDDPRINT("arg named 'eval' or 'arguments' in strict mode -> SyntaxError")); + goto error_argname; + } + duk_dup_top(thr); + if (duk_has_prop(thr, comp_ctx->curr_func.varmap_idx)) { + DUK_DDD(DUK_DDDPRINT("duplicate arg name in strict mode -> SyntaxError")); + goto error_argname; + } + + /* Ensure argument name is not a reserved word in current + * (final) strictness. Formal argument parsing may not + * catch reserved names if strictness changes during + * parsing. + * + * We only need to do this in strict mode because non-strict + * keyword are always detected in formal argument parsing. + */ + + if (DUK_HSTRING_HAS_STRICT_RESERVED_WORD(h_name)) { + goto error_argname; + } + } + + /* overwrite any previous binding of the same name; the effect is + * that last argument of a certain name wins. + */ + + /* only functions can have arguments */ + DUK_ASSERT(comp_ctx->curr_func.is_function); + duk_push_uarridx(thr, i); /* -> [ ... name index ] */ + duk_put_prop(thr, comp_ctx->curr_func.varmap_idx); /* -> [ ... ] */ + + /* no code needs to be emitted, the regs already have values */ + } + + /* use temp_next for tracking register allocations */ + DUK__SETTEMP_CHECKMAX(comp_ctx, (duk_regconst_t) num_args); + + /* + * After arguments, allocate special registers (like shuffling temps) + */ + + if (out_stmt_value_reg) { + *out_stmt_value_reg = DUK__ALLOCTEMP(comp_ctx); + } + if (comp_ctx->curr_func.needs_shuffle) { + duk_regconst_t shuffle_base = DUK__ALLOCTEMPS(comp_ctx, 3); + comp_ctx->curr_func.shuffle1 = shuffle_base; + comp_ctx->curr_func.shuffle2 = shuffle_base + 1; + comp_ctx->curr_func.shuffle3 = shuffle_base + 2; + DUK_D(DUK_DPRINT("shuffle registers needed by function, allocated: %ld %ld %ld", + (long) comp_ctx->curr_func.shuffle1, + (long) comp_ctx->curr_func.shuffle2, + (long) comp_ctx->curr_func.shuffle3)); + } + if (comp_ctx->curr_func.temp_next > 0x100) { + DUK_D(DUK_DPRINT("not enough 8-bit regs: temp_next=%ld", (long) comp_ctx->curr_func.temp_next)); + goto error_outofregs; + } + + /* + * Function declarations + */ + + num_decls = (duk_uarridx_t) duk_get_length(thr, comp_ctx->curr_func.decls_idx); + DUK_DDD(DUK_DDDPRINT("num_decls=%ld -> %!T", + (long) num_decls, + (duk_tval *) duk_get_tval(thr, comp_ctx->curr_func.decls_idx))); + for (i = 0; i < num_decls; i += 2) { + duk_int_t decl_type; + duk_int_t fnum; + + duk_get_prop_index(thr, comp_ctx->curr_func.decls_idx, i + 1); /* decl type */ + decl_type = duk_to_int(thr, -1); + fnum = decl_type >> 8; /* XXX: macros */ + decl_type = decl_type & 0xff; + duk_pop(thr); + + if (decl_type != DUK_DECL_TYPE_FUNC) { + continue; + } + + duk_get_prop_index(thr, comp_ctx->curr_func.decls_idx, i); /* decl name */ + + /* XXX: spilling */ + if (comp_ctx->curr_func.is_function) { + duk_regconst_t reg_bind; + duk_dup_top(thr); + if (duk_has_prop(thr, comp_ctx->curr_func.varmap_idx)) { + /* shadowed; update value */ + duk_dup_top(thr); + duk_get_prop(thr, comp_ctx->curr_func.varmap_idx); + reg_bind = duk_to_int(thr, -1); /* [ ... name reg_bind ] */ + duk__emit_a_bc(comp_ctx, + DUK_OP_CLOSURE, + reg_bind, + (duk_regconst_t) fnum); + } else { + /* function: always register bound */ + reg_bind = DUK__ALLOCTEMP(comp_ctx); + duk__emit_a_bc(comp_ctx, + DUK_OP_CLOSURE, + reg_bind, + (duk_regconst_t) fnum); + duk_push_int(thr, (duk_int_t) reg_bind); + } + } else { + /* Function declaration for global/eval code is emitted even + * for duplicates, because of E5 Section 10.5, step 5.e of + * E5.1 (special behavior for variable bound to global object). + * + * DECLVAR will not re-declare a variable as such, but will + * update the binding value. + */ + + duk_regconst_t reg_temp = DUK__ALLOCTEMP(comp_ctx); + duk_dup_top(thr); + rc_name = duk__getconst(comp_ctx); + duk_push_null(thr); + + duk__emit_a_bc(comp_ctx, + DUK_OP_CLOSURE, + reg_temp, + (duk_regconst_t) fnum); + + declvar_flags = DUK_PROPDESC_FLAG_WRITABLE | + DUK_PROPDESC_FLAG_ENUMERABLE | + DUK_BC_DECLVAR_FLAG_FUNC_DECL; + + if (configurable_bindings) { + declvar_flags |= DUK_PROPDESC_FLAG_CONFIGURABLE; + } + + duk__emit_a_b_c(comp_ctx, + DUK_OP_DECLVAR | DUK__EMIT_FLAG_NO_SHUFFLE_A | DUK__EMIT_FLAG_BC_REGCONST, + (duk_regconst_t) declvar_flags /*flags*/, + rc_name /*name*/, + reg_temp /*value*/); + + DUK__SETTEMP(comp_ctx, reg_temp); /* forget temp */ + } + + DUK_DDD(DUK_DDDPRINT("function declaration to varmap: %!T -> %!T", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_NULL(duk_get_tval(thr, -1)) || DUK_TVAL_IS_FASTINT(duk_get_tval(thr, -1))); +#endif + duk_put_prop(thr, comp_ctx->curr_func.varmap_idx); /* [ ... name reg/null ] -> [ ... ] */ + } + + /* + * 'arguments' binding is special; if a shadowing argument or + * function declaration exists, an arguments object will + * definitely not be needed, regardless of whether the identifier + * 'arguments' is referenced inside the function body. + */ + + if (duk_has_prop_stridx(thr, comp_ctx->curr_func.varmap_idx, DUK_STRIDX_LC_ARGUMENTS)) { + DUK_DDD(DUK_DDDPRINT("'arguments' is shadowed by argument or function declaration " + "-> arguments object creation can be skipped")); + comp_ctx->curr_func.is_arguments_shadowed = 1; + } + + /* + * Variable declarations. + * + * Unlike function declarations, variable declaration values don't get + * assigned on entry. If a binding of the same name already exists, just + * ignore it silently. + */ + + for (i = 0; i < num_decls; i += 2) { + duk_int_t decl_type; + + duk_get_prop_index(thr, comp_ctx->curr_func.decls_idx, i + 1); /* decl type */ + decl_type = duk_to_int(thr, -1); + decl_type = decl_type & 0xff; + duk_pop(thr); + + if (decl_type != DUK_DECL_TYPE_VAR) { + continue; + } + + duk_get_prop_index(thr, comp_ctx->curr_func.decls_idx, i); /* decl name */ + + if (duk_has_prop(thr, comp_ctx->curr_func.varmap_idx)) { + /* shadowed, ignore */ + } else { + duk_get_prop_index(thr, comp_ctx->curr_func.decls_idx, i); /* decl name */ + h_name = duk_known_hstring(thr, -1); + + if (h_name == DUK_HTHREAD_STRING_LC_ARGUMENTS(thr) && + !comp_ctx->curr_func.is_arguments_shadowed) { + /* E5 Section steps 7-8 */ + DUK_DDD(DUK_DDDPRINT("'arguments' not shadowed by a function declaration, " + "but appears as a variable declaration -> treat as " + "a no-op for variable declaration purposes")); + duk_pop(thr); + continue; + } + + /* XXX: spilling */ + if (comp_ctx->curr_func.is_function) { + duk_regconst_t reg_bind = DUK__ALLOCTEMP(comp_ctx); + /* no need to init reg, it will be undefined on entry */ + duk_push_int(thr, (duk_int_t) reg_bind); + } else { + duk_dup_top(thr); + rc_name = duk__getconst(comp_ctx); + duk_push_null(thr); + + declvar_flags = DUK_PROPDESC_FLAG_WRITABLE | + DUK_PROPDESC_FLAG_ENUMERABLE; + if (configurable_bindings) { + declvar_flags |= DUK_PROPDESC_FLAG_CONFIGURABLE; + } + + duk__emit_a_b_c(comp_ctx, + DUK_OP_DECLVAR | DUK__EMIT_FLAG_NO_SHUFFLE_A | DUK__EMIT_FLAG_BC_REGCONST, + (duk_regconst_t) declvar_flags /*flags*/, + rc_name /*name*/, + 0 /*value*/); + } + + duk_put_prop(thr, comp_ctx->curr_func.varmap_idx); /* [ ... name reg/null ] -> [ ... ] */ + } + } + + /* + * Wrap up + */ + + DUK_DDD(DUK_DDDPRINT("varmap: %!T, is_arguments_shadowed=%ld", + (duk_tval *) duk_get_tval(thr, comp_ctx->curr_func.varmap_idx), + (long) comp_ctx->curr_func.is_arguments_shadowed)); + + DUK_ASSERT_TOP(thr, entry_top); + return; + + error_outofregs: + DUK_ERROR_RANGE(thr, DUK_STR_REG_LIMIT); + DUK_WO_NORETURN(return;); + + error_argname: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_ARG_NAME); + DUK_WO_NORETURN(return;); +} + +/* + * Parse a function-body-like expression (FunctionBody or Program + * in E5 grammar) using a two-pass parse. The productions appear + * in the following contexts: + * + * - function expression + * - function statement + * - function declaration + * - getter in object literal + * - setter in object literal + * - global code + * - eval code + * - Function constructor body + * + * This function only parses the statement list of the body; the argument + * list and possible function name must be initialized by the caller. + * For instance, for Function constructor, the argument names are originally + * on the value stack. The parsing of statements ends either at an EOF or + * a closing brace; this is controlled by an input flag. + * + * Note that there are many differences affecting parsing and even code + * generation: + * + * - Global and eval code have an implicit return value generated + * by the last statement; function code does not + * + * - Global code, eval code, and Function constructor body end in + * an EOF, other bodies in a closing brace ('}') + * + * Upon entry, 'curr_tok' is ignored and the function will pull in the + * first token on its own. Upon exit, 'curr_tok' is the terminating + * token (EOF or closing brace). + */ + +DUK_LOCAL void duk__parse_func_body(duk_compiler_ctx *comp_ctx, duk_bool_t expect_eof, duk_bool_t implicit_return_value, duk_bool_t regexp_after, duk_small_int_t expect_token) { + duk_compiler_func *func; + duk_hthread *thr; + duk_regconst_t reg_stmt_value = -1; + duk_lexer_point lex_pt; + duk_regconst_t temp_first; + duk_small_int_t compile_round = 1; + + DUK_ASSERT(comp_ctx != NULL); + + thr = comp_ctx->thr; + DUK_ASSERT(thr != NULL); + + func = &comp_ctx->curr_func; + DUK_ASSERT(func != NULL); + + DUK__RECURSION_INCREASE(comp_ctx, thr); + + duk_require_stack(thr, DUK__FUNCTION_BODY_REQUIRE_SLOTS); + + /* + * Store lexer position for a later rewind + */ + + DUK_LEXER_GETPOINT(&comp_ctx->lex, &lex_pt); + + /* + * Program code (global and eval code) has an implicit return value + * from the last statement value (e.g. eval("1; 2+3;") returns 3). + * This is not the case with functions. If implicit statement return + * value is requested, all statements are coerced to a register + * allocated here, and used in the implicit return statement below. + */ + + /* XXX: this is pointless here because pass 1 is throw-away */ + if (implicit_return_value) { + reg_stmt_value = DUK__ALLOCTEMP(comp_ctx); + + /* If an implicit return value is needed by caller, it must be + * initialized to 'undefined' because we don't know whether any + * non-empty (where "empty" is a continuation type, and different + * from an empty statement) statements will be executed. + * + * However, since 1st pass is a throwaway one, no need to emit + * it here. + */ +#if 0 + duk__emit_bc(comp_ctx, + DUK_OP_LDUNDEF, + 0); +#endif + } + + /* + * First pass. + * + * Gather variable/function declarations needed for second pass. + * Code generated is dummy and discarded. + */ + + func->in_directive_prologue = 1; + func->in_scanning = 1; + func->may_direct_eval = 0; + func->id_access_arguments = 0; + func->id_access_slow = 0; + func->id_access_slow_own = 0; + func->reg_stmt_value = reg_stmt_value; +#if defined(DUK_USE_DEBUGGER_SUPPORT) + func->min_line = DUK_INT_MAX; + func->max_line = 0; +#endif + + /* duk__parse_stmts() expects curr_tok to be set; parse in "allow + * regexp literal" mode with current strictness. + */ + if (expect_token >= 0) { + /* Eating a left curly; regexp mode is allowed by left curly + * based on duk__token_lbp[] automatically. + */ + DUK_ASSERT(expect_token == DUK_TOK_LCURLY); + duk__update_lineinfo_currtoken(comp_ctx); + duk__advance_expect(comp_ctx, expect_token); + } else { + /* Need to set curr_token.t because lexing regexp mode depends on current + * token type. Zero value causes "allow regexp" mode. + */ + comp_ctx->curr_token.t = 0; + duk__advance(comp_ctx); + } + + DUK_DDD(DUK_DDDPRINT("begin 1st pass")); + duk__parse_stmts(comp_ctx, + 1, /* allow source elements */ + expect_eof, /* expect EOF instead of } */ + regexp_after); /* regexp after */ + DUK_DDD(DUK_DDDPRINT("end 1st pass")); + + /* + * Second (and possibly third) pass. + * + * Generate actual code. In most cases the need for shuffle + * registers is detected during pass 1, but in some corner cases + * we'll only detect it during pass 2 and a third pass is then + * needed (see GH-115). + */ + + for (;;) { + duk_bool_t needs_shuffle_before = comp_ctx->curr_func.needs_shuffle; + compile_round++; + + /* + * Rewind lexer. + * + * duk__parse_stmts() expects curr_tok to be set; parse in "allow regexp + * literal" mode with current strictness. + * + * curr_token line number info should be initialized for pass 2 before + * generating prologue, to ensure prologue bytecode gets nice line numbers. + */ + + DUK_DDD(DUK_DDDPRINT("rewind lexer")); + DUK_LEXER_SETPOINT(&comp_ctx->lex, &lex_pt); + comp_ctx->curr_token.t = 0; /* this is needed for regexp mode */ + comp_ctx->curr_token.start_line = 0; /* needed for line number tracking (becomes prev_token.start_line) */ + duk__advance(comp_ctx); + + /* + * Reset function state and perform register allocation, which creates + * 'varmap' for second pass. Function prologue for variable declarations, + * binding value initializations etc is emitted as a by-product. + * + * Strict mode restrictions for duplicate and invalid argument + * names are checked here now that we know whether the function + * is actually strict. See: test-dev-strict-mode-boundary.js. + * + * Inner functions are compiled during pass 1 and are not reset. + */ + + duk__reset_func_for_pass2(comp_ctx); + func->in_directive_prologue = 1; + func->in_scanning = 0; + + /* must be able to emit code, alloc consts, etc. */ + + duk__init_varmap_and_prologue_for_pass2(comp_ctx, + (implicit_return_value ? ®_stmt_value : NULL)); + func->reg_stmt_value = reg_stmt_value; + + temp_first = DUK__GETTEMP(comp_ctx); + + func->temp_first = temp_first; + func->temp_next = temp_first; + func->stmt_next = 0; + func->label_next = 0; + + /* XXX: init or assert catch depth etc -- all values */ + func->id_access_arguments = 0; + func->id_access_slow = 0; + func->id_access_slow_own = 0; + + /* + * Check function name validity now that we know strictness. + * This only applies to function declarations and expressions, + * not setter/getter name. + * + * See: test-dev-strict-mode-boundary.js + */ + + if (func->is_function && !func->is_setget && func->h_name != NULL) { + if (func->is_strict) { + if (duk__hstring_is_eval_or_arguments(comp_ctx, func->h_name)) { + DUK_DDD(DUK_DDDPRINT("func name is 'eval' or 'arguments' in strict mode")); + goto error_funcname; + } + if (DUK_HSTRING_HAS_STRICT_RESERVED_WORD(func->h_name)) { + DUK_DDD(DUK_DDDPRINT("func name is a reserved word in strict mode")); + goto error_funcname; + } + } else { + if (DUK_HSTRING_HAS_RESERVED_WORD(func->h_name) && + !DUK_HSTRING_HAS_STRICT_RESERVED_WORD(func->h_name)) { + DUK_DDD(DUK_DDDPRINT("func name is a reserved word in non-strict mode")); + goto error_funcname; + } + } + } + + /* + * Second pass parsing. + */ + + if (implicit_return_value) { + /* Default implicit return value. */ + duk__emit_bc(comp_ctx, + DUK_OP_LDUNDEF, + 0); + } + + DUK_DDD(DUK_DDDPRINT("begin 2nd pass")); + duk__parse_stmts(comp_ctx, + 1, /* allow source elements */ + expect_eof, /* expect EOF instead of } */ + regexp_after); /* regexp after */ + DUK_DDD(DUK_DDDPRINT("end 2nd pass")); + + duk__update_lineinfo_currtoken(comp_ctx); + + if (needs_shuffle_before == comp_ctx->curr_func.needs_shuffle) { + /* Shuffle decision not changed. */ + break; + } + if (compile_round >= 3) { + /* Should never happen but avoid infinite loop just in case. */ + DUK_D(DUK_DPRINT("more than 3 compile passes needed, should never happen")); + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); + } + DUK_D(DUK_DPRINT("need additional round to compile function, round now %d", (int) compile_round)); + } + + /* + * Emit a final RETURN. + * + * It would be nice to avoid emitting an unnecessary "return" opcode + * if the current PC is not reachable. However, this cannot be reliably + * detected; even if the previous instruction is an unconditional jump, + * there may be a previous jump which jumps to current PC (which is the + * case for iteration and conditional statements, for instance). + */ + + /* XXX: request a "last statement is terminal" from duk__parse_stmt() and duk__parse_stmts(); + * we could avoid the last RETURN if we could ensure there is no way to get here + * (directly or via a jump) + */ + + DUK_ASSERT(comp_ctx->curr_func.catch_depth == 0); + if (reg_stmt_value >= 0) { + DUK_ASSERT(DUK__ISREG(reg_stmt_value)); + duk__emit_bc(comp_ctx, DUK_OP_RETREG, reg_stmt_value /*reg*/); + } else { + duk__emit_op_only(comp_ctx, DUK_OP_RETUNDEF); + } + + /* + * Peephole optimize JUMP chains. + */ + + duk__peephole_optimize_bytecode(comp_ctx); + + /* + * comp_ctx->curr_func is now ready to be converted into an actual + * function template. + */ + + DUK__RECURSION_DECREASE(comp_ctx, thr); + return; + + error_funcname: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_FUNC_NAME); + DUK_WO_NORETURN(return;); +} + +/* + * Parse a function-like expression: + * + * - function expression + * - function declaration + * - function statement (non-standard) + * - setter/getter + * + * Adds the function to comp_ctx->curr_func function table and returns the + * function number. + * + * On entry, curr_token points to: + * + * - the token after 'function' for function expression/declaration/statement + * - the token after 'set' or 'get' for setter/getter + */ + +/* Parse formals. */ +DUK_LOCAL void duk__parse_func_formals(duk_compiler_ctx *comp_ctx) { + duk_hthread *thr = comp_ctx->thr; + duk_bool_t first = 1; + duk_uarridx_t n; + + for (;;) { + if (comp_ctx->curr_token.t == DUK_TOK_RPAREN) { + break; + } + + if (first) { + /* no comma */ + first = 0; + } else { + duk__advance_expect(comp_ctx, DUK_TOK_COMMA); + } + + /* Note: when parsing a formal list in non-strict context, e.g. + * "implements" is parsed as an identifier. When the function is + * later detected to be strict, the argument list must be rechecked + * against a larger set of reserved words (that of strict mode). + * This is handled by duk__parse_func_body(). Here we recognize + * whatever tokens are considered reserved in current strictness + * (which is not always enough). + */ + + if (comp_ctx->curr_token.t != DUK_TOK_IDENTIFIER) { + DUK_ERROR_SYNTAX(thr, DUK_STR_EXPECTED_IDENTIFIER); + DUK_WO_NORETURN(return;); + } + DUK_ASSERT(comp_ctx->curr_token.t == DUK_TOK_IDENTIFIER); + DUK_ASSERT(comp_ctx->curr_token.str1 != NULL); + DUK_DDD(DUK_DDDPRINT("formal argument: %!O", + (duk_heaphdr *) comp_ctx->curr_token.str1)); + + /* XXX: append primitive */ + duk_push_hstring(thr, comp_ctx->curr_token.str1); + n = (duk_uarridx_t) duk_get_length(thr, comp_ctx->curr_func.argnames_idx); + duk_put_prop_index(thr, comp_ctx->curr_func.argnames_idx, n); + + duk__advance(comp_ctx); /* eat identifier */ + } +} + +/* Parse a function-like expression, assuming that 'comp_ctx->curr_func' is + * correctly set up. Assumes that curr_token is just after 'function' (or + * 'set'/'get' etc). + */ +DUK_LOCAL void duk__parse_func_like_raw(duk_compiler_ctx *comp_ctx, duk_small_uint_t flags) { + duk_hthread *thr = comp_ctx->thr; + duk_token *tok; + duk_bool_t no_advance; + + DUK_ASSERT(comp_ctx->curr_func.num_formals == 0); + DUK_ASSERT(comp_ctx->curr_func.is_function == 1); + DUK_ASSERT(comp_ctx->curr_func.is_eval == 0); + DUK_ASSERT(comp_ctx->curr_func.is_global == 0); + DUK_ASSERT(comp_ctx->curr_func.is_setget == ((flags & DUK__FUNC_FLAG_GETSET) != 0)); + + duk__update_lineinfo_currtoken(comp_ctx); + + /* + * Function name (if any) + * + * We don't check for prohibited names here, because we don't + * yet know whether the function will be strict. Function body + * parsing handles this retroactively. + * + * For function expressions and declarations function name must + * be an Identifer (excludes reserved words). For setter/getter + * it is a PropertyName which allows reserved words and also + * strings and numbers (e.g. "{ get 1() { ... } }"). + * + * Function parsing may start either from prev_token or curr_token + * (object literal method definition uses prev_token for example). + * This is dealt with for the initial token. + */ + + no_advance = (flags & DUK__FUNC_FLAG_USE_PREVTOKEN); + if (no_advance) { + tok = &comp_ctx->prev_token; + } else { + tok = &comp_ctx->curr_token; + } + + if (flags & DUK__FUNC_FLAG_GETSET) { + /* PropertyName -> IdentifierName | StringLiteral | NumericLiteral */ + if (tok->t_nores == DUK_TOK_IDENTIFIER || tok->t == DUK_TOK_STRING) { + duk_push_hstring(thr, tok->str1); /* keep in valstack */ + } else if (tok->t == DUK_TOK_NUMBER) { + duk_push_number(thr, tok->num); + duk_to_string(thr, -1); + } else { + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_GETSET_NAME); + DUK_WO_NORETURN(return;); + } + comp_ctx->curr_func.h_name = duk_known_hstring(thr, -1); /* borrowed reference */ + } else { + /* Function name is an Identifier (not IdentifierName), but we get + * the raw name (not recognizing keywords) here and perform the name + * checks only after pass 1. + */ + if (tok->t_nores == DUK_TOK_IDENTIFIER) { + duk_push_hstring(thr, tok->str1); /* keep in valstack */ + comp_ctx->curr_func.h_name = duk_known_hstring(thr, -1); /* borrowed reference */ + } else { + /* valstack will be unbalanced, which is OK */ + DUK_ASSERT((flags & DUK__FUNC_FLAG_GETSET) == 0); + DUK_ASSERT(comp_ctx->curr_func.h_name == NULL); + no_advance = 1; + if (flags & DUK__FUNC_FLAG_DECL) { + DUK_ERROR_SYNTAX(thr, DUK_STR_FUNC_NAME_REQUIRED); + DUK_WO_NORETURN(return;); + } + } + } + + DUK_DD(DUK_DDPRINT("function name: %!O", + (duk_heaphdr *) comp_ctx->curr_func.h_name)); + + if (!no_advance) { + duk__advance(comp_ctx); + } + + /* + * Formal argument list + * + * We don't check for prohibited names or for duplicate argument + * names here, becase we don't yet know whether the function will + * be strict. Function body parsing handles this retroactively. + */ + + duk__advance_expect(comp_ctx, DUK_TOK_LPAREN); + + duk__parse_func_formals(comp_ctx); + + DUK_ASSERT(comp_ctx->curr_token.t == DUK_TOK_RPAREN); + duk__advance(comp_ctx); + + /* + * Parse function body + */ + + duk__parse_func_body(comp_ctx, + 0, /* expect_eof */ + 0, /* implicit_return_value */ + flags & DUK__FUNC_FLAG_DECL, /* regexp_after */ + DUK_TOK_LCURLY); /* expect_token */ + + /* + * Convert duk_compiler_func to a function template and add it + * to the parent function table. + */ + + duk__convert_to_func_template(comp_ctx); /* -> [ ... func ] */ +} + +/* Parse an inner function, adding the function template to the current function's + * function table. Return a function number to be used by the outer function. + * + * Avoiding O(depth^2) inner function parsing is handled here. On the first pass, + * compile and register the function normally into the 'funcs' array, also recording + * a lexer point (offset/line) to the closing brace of the function. On the second + * pass, skip the function and return the same 'fnum' as on the first pass by using + * a running counter. + * + * An unfortunate side effect of this is that when parsing the inner function, almost + * nothing is known of the outer function, i.e. the inner function's scope. We don't + * need that information at the moment, but it would allow some optimizations if it + * were used. + */ +DUK_LOCAL duk_int_t duk__parse_func_like_fnum(duk_compiler_ctx *comp_ctx, duk_small_uint_t flags) { + duk_hthread *thr = comp_ctx->thr; + duk_compiler_func old_func; + duk_idx_t entry_top; + duk_int_t fnum; + + /* + * On second pass, skip the function. + */ + + if (!comp_ctx->curr_func.in_scanning) { + duk_lexer_point lex_pt; + + fnum = comp_ctx->curr_func.fnum_next++; + duk_get_prop_index(thr, comp_ctx->curr_func.funcs_idx, (duk_uarridx_t) (fnum * 3 + 1)); + lex_pt.offset = (duk_size_t) duk_to_uint(thr, -1); + duk_pop(thr); + duk_get_prop_index(thr, comp_ctx->curr_func.funcs_idx, (duk_uarridx_t) (fnum * 3 + 2)); + lex_pt.line = duk_to_int(thr, -1); + duk_pop(thr); + + DUK_DDD(DUK_DDDPRINT("second pass of an inner func, skip the function, reparse closing brace; lex offset=%ld, line=%ld", + (long) lex_pt.offset, (long) lex_pt.line)); + + DUK_LEXER_SETPOINT(&comp_ctx->lex, &lex_pt); + comp_ctx->curr_token.t = 0; /* this is needed for regexp mode */ + comp_ctx->curr_token.start_line = 0; /* needed for line number tracking (becomes prev_token.start_line) */ + duk__advance(comp_ctx); + + /* RegExp is not allowed after a function expression, e.g. in + * (function () {} / 123). A RegExp *is* allowed after a + * function declaration! + */ + if (flags & DUK__FUNC_FLAG_DECL) { + comp_ctx->curr_func.allow_regexp_in_adv = 1; + } + duk__advance_expect(comp_ctx, DUK_TOK_RCURLY); + + return fnum; + } + + /* + * On first pass, perform actual parsing. Remember valstack top on entry + * to restore it later, and switch to using a new function in comp_ctx. + */ + + entry_top = duk_get_top(thr); + DUK_DDD(DUK_DDDPRINT("before func: entry_top=%ld, curr_tok.start_offset=%ld", + (long) entry_top, (long) comp_ctx->curr_token.start_offset)); + + duk_memcpy(&old_func, &comp_ctx->curr_func, sizeof(duk_compiler_func)); + + duk_memzero(&comp_ctx->curr_func, sizeof(duk_compiler_func)); + duk__init_func_valstack_slots(comp_ctx); + DUK_ASSERT(comp_ctx->curr_func.num_formals == 0); + + /* inherit initial strictness from parent */ + comp_ctx->curr_func.is_strict = old_func.is_strict; + + /* XXX: It might be better to just store the flags into the curr_func + * struct and use them as is without this flag interpretation step + * here. + */ + DUK_ASSERT(comp_ctx->curr_func.is_notail == 0); + comp_ctx->curr_func.is_function = 1; + DUK_ASSERT(comp_ctx->curr_func.is_eval == 0); + DUK_ASSERT(comp_ctx->curr_func.is_global == 0); + comp_ctx->curr_func.is_setget = ((flags & DUK__FUNC_FLAG_GETSET) != 0); + comp_ctx->curr_func.is_namebinding = !(flags & (DUK__FUNC_FLAG_GETSET | + DUK__FUNC_FLAG_METDEF | + DUK__FUNC_FLAG_DECL)); /* no name binding for: declarations, objlit getset, objlit method def */ + comp_ctx->curr_func.is_constructable = !(flags & (DUK__FUNC_FLAG_GETSET | + DUK__FUNC_FLAG_METDEF)); /* not constructable: objlit getset, objlit method def */ + + /* + * Parse inner function + */ + + duk__parse_func_like_raw(comp_ctx, flags); /* pushes function template */ + + /* prev_token.start_offset points to the closing brace here; when skipping + * we're going to reparse the closing brace to ensure semicolon insertion + * etc work as expected. + */ + DUK_DDD(DUK_DDDPRINT("after func: prev_tok.start_offset=%ld, curr_tok.start_offset=%ld", + (long) comp_ctx->prev_token.start_offset, (long) comp_ctx->curr_token.start_offset)); + DUK_ASSERT(comp_ctx->lex.input[comp_ctx->prev_token.start_offset] == (duk_uint8_t) DUK_ASC_RCURLY); + + /* XXX: append primitive */ + DUK_ASSERT(duk_get_length(thr, old_func.funcs_idx) == (duk_size_t) (old_func.fnum_next * 3)); + fnum = old_func.fnum_next++; + + if (fnum > DUK__MAX_FUNCS) { + DUK_ERROR_RANGE(comp_ctx->thr, DUK_STR_FUNC_LIMIT); + DUK_WO_NORETURN(return 0;); + } + + /* array writes autoincrement length */ + (void) duk_put_prop_index(thr, old_func.funcs_idx, (duk_uarridx_t) (fnum * 3)); + duk_push_size_t(thr, comp_ctx->prev_token.start_offset); + (void) duk_put_prop_index(thr, old_func.funcs_idx, (duk_uarridx_t) (fnum * 3 + 1)); + duk_push_int(thr, comp_ctx->prev_token.start_line); + (void) duk_put_prop_index(thr, old_func.funcs_idx, (duk_uarridx_t) (fnum * 3 + 2)); + + /* + * Cleanup: restore original function, restore valstack state. + * + * Function declaration handling needs the function name to be pushed + * on the value stack. + */ + + if (flags & DUK__FUNC_FLAG_PUSHNAME_PASS1) { + DUK_ASSERT(comp_ctx->curr_func.h_name != NULL); + duk_push_hstring(thr, comp_ctx->curr_func.h_name); + duk_replace(thr, entry_top); + duk_set_top(thr, entry_top + 1); + } else { + duk_set_top(thr, entry_top); + } + duk_memcpy((void *) &comp_ctx->curr_func, (void *) &old_func, sizeof(duk_compiler_func)); + + return fnum; +} + +/* + * Compile input string into an executable function template without + * arguments. + * + * The string is parsed as the "Program" production of ECMAScript E5. + * Compilation context can be either global code or eval code (see E5 + * Sections 14 and 15.1.2.1). + * + * Input stack: [ ... filename ] + * Output stack: [ ... func_template ] + */ + +/* XXX: source code property */ + +DUK_LOCAL duk_ret_t duk__js_compile_raw(duk_hthread *thr, void *udata) { + duk_hstring *h_filename; + duk__compiler_stkstate *comp_stk; + duk_compiler_ctx *comp_ctx; + duk_lexer_point *lex_pt; + duk_compiler_func *func; + duk_idx_t entry_top; + duk_bool_t is_strict; + duk_bool_t is_eval; + duk_bool_t is_funcexpr; + duk_small_uint_t flags; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(udata != NULL); + + /* + * Arguments check + */ + + entry_top = duk_get_top(thr); + DUK_ASSERT(entry_top >= 1); + + comp_stk = (duk__compiler_stkstate *) udata; + comp_ctx = &comp_stk->comp_ctx_alloc; + lex_pt = &comp_stk->lex_pt_alloc; + DUK_ASSERT(comp_ctx != NULL); + DUK_ASSERT(lex_pt != NULL); + + flags = comp_stk->flags; + is_eval = (flags & DUK_COMPILE_EVAL ? 1 : 0); + is_strict = (flags & DUK_COMPILE_STRICT ? 1 : 0); + is_funcexpr = (flags & DUK_COMPILE_FUNCEXPR ? 1 : 0); + + h_filename = duk_get_hstring(thr, -1); /* may be undefined */ + + /* + * Init compiler and lexer contexts + */ + + func = &comp_ctx->curr_func; +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + comp_ctx->thr = NULL; + comp_ctx->h_filename = NULL; + comp_ctx->prev_token.str1 = NULL; + comp_ctx->prev_token.str2 = NULL; + comp_ctx->curr_token.str1 = NULL; + comp_ctx->curr_token.str2 = NULL; +#endif + + duk_require_stack(thr, DUK__COMPILE_ENTRY_SLOTS); + + duk_push_dynamic_buffer(thr, 0); /* entry_top + 0 */ + duk_push_undefined(thr); /* entry_top + 1 */ + duk_push_undefined(thr); /* entry_top + 2 */ + duk_push_undefined(thr); /* entry_top + 3 */ + duk_push_undefined(thr); /* entry_top + 4 */ + + comp_ctx->thr = thr; + comp_ctx->h_filename = h_filename; + comp_ctx->tok11_idx = entry_top + 1; + comp_ctx->tok12_idx = entry_top + 2; + comp_ctx->tok21_idx = entry_top + 3; + comp_ctx->tok22_idx = entry_top + 4; + comp_ctx->recursion_limit = DUK_USE_COMPILER_RECLIMIT; + + /* comp_ctx->lex has been pre-initialized by caller: it has been + * zeroed and input/input_length has been set. + */ + comp_ctx->lex.thr = thr; + /* comp_ctx->lex.input and comp_ctx->lex.input_length filled by caller */ + comp_ctx->lex.slot1_idx = comp_ctx->tok11_idx; + comp_ctx->lex.slot2_idx = comp_ctx->tok12_idx; + comp_ctx->lex.buf_idx = entry_top + 0; + comp_ctx->lex.buf = (duk_hbuffer_dynamic *) duk_known_hbuffer(thr, entry_top + 0); + DUK_ASSERT(DUK_HBUFFER_HAS_DYNAMIC(comp_ctx->lex.buf) && !DUK_HBUFFER_HAS_EXTERNAL(comp_ctx->lex.buf)); + comp_ctx->lex.token_limit = DUK_COMPILER_TOKEN_LIMIT; + + lex_pt->offset = 0; + lex_pt->line = 1; + DUK_LEXER_SETPOINT(&comp_ctx->lex, lex_pt); /* fills window */ + comp_ctx->curr_token.start_line = 0; /* needed for line number tracking (becomes prev_token.start_line) */ + + /* + * Initialize function state for a zero-argument function + */ + + duk__init_func_valstack_slots(comp_ctx); + DUK_ASSERT(func->num_formals == 0); + + if (is_funcexpr) { + /* Name will be filled from function expression, not by caller. + * This case is used by Function constructor and duk_compile() + * API with the DUK_COMPILE_FUNCTION option. + */ + DUK_ASSERT(func->h_name == NULL); + } else { + duk_push_hstring_stridx(thr, (is_eval ? DUK_STRIDX_EVAL : + DUK_STRIDX_GLOBAL)); + func->h_name = duk_get_hstring(thr, -1); + } + + /* + * Parse a function body or a function-like expression, depending + * on flags. + */ + + DUK_ASSERT(func->is_setget == 0); + func->is_strict = (duk_uint8_t) is_strict; + DUK_ASSERT(func->is_notail == 0); + + if (is_funcexpr) { + func->is_function = 1; + DUK_ASSERT(func->is_eval == 0); + DUK_ASSERT(func->is_global == 0); + func->is_namebinding = 1; + func->is_constructable = 1; + + duk__advance(comp_ctx); /* init 'curr_token' */ + duk__advance_expect(comp_ctx, DUK_TOK_FUNCTION); + (void) duk__parse_func_like_raw(comp_ctx, 0 /*flags*/); + } else { + DUK_ASSERT(func->is_function == 0); + DUK_ASSERT(is_eval == 0 || is_eval == 1); + func->is_eval = (duk_uint8_t) is_eval; + func->is_global = (duk_uint8_t) !is_eval; + DUK_ASSERT(func->is_namebinding == 0); + DUK_ASSERT(func->is_constructable == 0); + + duk__parse_func_body(comp_ctx, + 1, /* expect_eof */ + 1, /* implicit_return_value */ + 1, /* regexp_after (does not matter) */ + -1); /* expect_token */ + } + + /* + * Convert duk_compiler_func to a function template + */ + + duk__convert_to_func_template(comp_ctx); + + /* + * Wrapping duk_safe_call() will mangle the stack, just return stack top + */ + + /* [ ... filename (temps) func ] */ + + return 1; +} + +DUK_INTERNAL void duk_js_compile(duk_hthread *thr, const duk_uint8_t *src_buffer, duk_size_t src_length, duk_small_uint_t flags) { + duk__compiler_stkstate comp_stk; + duk_compiler_ctx *prev_ctx; + duk_ret_t safe_rc; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(src_buffer != NULL); + + /* preinitialize lexer state partially */ + duk_memzero(&comp_stk, sizeof(comp_stk)); + comp_stk.flags = flags; + DUK_LEXER_INITCTX(&comp_stk.comp_ctx_alloc.lex); + comp_stk.comp_ctx_alloc.lex.input = src_buffer; + comp_stk.comp_ctx_alloc.lex.input_length = src_length; + comp_stk.comp_ctx_alloc.lex.flags = flags; /* Forward flags directly for now. */ + + /* [ ... filename ] */ + + prev_ctx = thr->compile_ctx; + thr->compile_ctx = &comp_stk.comp_ctx_alloc; /* for duk_error_augment.c */ + safe_rc = duk_safe_call(thr, duk__js_compile_raw, (void *) &comp_stk /*udata*/, 1 /*nargs*/, 1 /*nrets*/); + thr->compile_ctx = prev_ctx; /* must restore reliably before returning */ + + if (safe_rc != DUK_EXEC_SUCCESS) { + DUK_D(DUK_DPRINT("compilation failed: %!T", duk_get_tval(thr, -1))); + (void) duk_throw(thr); + DUK_WO_NORETURN(return;); + } + + /* [ ... template ] */ +} + +/* automatic undefs */ +#undef DUK__ALLOCTEMP +#undef DUK__ALLOCTEMPS +#undef DUK__ALLOW_AUTO_SEMI_ALWAYS +#undef DUK__BC_INITIAL_INSTS +#undef DUK__BP_ADDITIVE +#undef DUK__BP_ASSIGNMENT +#undef DUK__BP_BAND +#undef DUK__BP_BOR +#undef DUK__BP_BXOR +#undef DUK__BP_CALL +#undef DUK__BP_CLOSING +#undef DUK__BP_COMMA +#undef DUK__BP_CONDITIONAL +#undef DUK__BP_EOF +#undef DUK__BP_EQUALITY +#undef DUK__BP_EXPONENTIATION +#undef DUK__BP_FOR_EXPR +#undef DUK__BP_INVALID +#undef DUK__BP_LAND +#undef DUK__BP_LOR +#undef DUK__BP_MEMBER +#undef DUK__BP_MULTIPLICATIVE +#undef DUK__BP_POSTFIX +#undef DUK__BP_RELATIONAL +#undef DUK__BP_SHIFT +#undef DUK__COMPILE_ENTRY_SLOTS +#undef DUK__CONST_MARKER +#undef DUK__DUMP_ISPEC +#undef DUK__DUMP_IVALUE +#undef DUK__EMIT_FLAG_A_IS_SOURCE +#undef DUK__EMIT_FLAG_BC_REGCONST +#undef DUK__EMIT_FLAG_B_IS_TARGET +#undef DUK__EMIT_FLAG_C_IS_TARGET +#undef DUK__EMIT_FLAG_NO_SHUFFLE_A +#undef DUK__EMIT_FLAG_NO_SHUFFLE_B +#undef DUK__EMIT_FLAG_NO_SHUFFLE_C +#undef DUK__EMIT_FLAG_RESERVE_JUMPSLOT +#undef DUK__EXPR_FLAG_ALLOW_EMPTY +#undef DUK__EXPR_FLAG_REJECT_IN +#undef DUK__EXPR_FLAG_REQUIRE_INIT +#undef DUK__EXPR_RBP_MASK +#undef DUK__FUNCTION_BODY_REQUIRE_SLOTS +#undef DUK__FUNCTION_INIT_REQUIRE_SLOTS +#undef DUK__FUNC_FLAG_DECL +#undef DUK__FUNC_FLAG_GETSET +#undef DUK__FUNC_FLAG_METDEF +#undef DUK__FUNC_FLAG_PUSHNAME_PASS1 +#undef DUK__FUNC_FLAG_USE_PREVTOKEN +#undef DUK__GETCONST_MAX_CONSTS_CHECK +#undef DUK__GETTEMP +#undef DUK__HAS_TERM +#undef DUK__HAS_VAL +#undef DUK__ISCONST +#undef DUK__ISREG +#undef DUK__ISREG_NOTTEMP +#undef DUK__ISREG_TEMP +#undef DUK__IS_TERMINAL +#undef DUK__IVAL_FLAG_ALLOW_CONST +#undef DUK__IVAL_FLAG_REQUIRE_SHORT +#undef DUK__IVAL_FLAG_REQUIRE_TEMP +#undef DUK__MAX_ARRAY_INIT_VALUES +#undef DUK__MAX_CONSTS +#undef DUK__MAX_FUNCS +#undef DUK__MAX_OBJECT_INIT_PAIRS +#undef DUK__MAX_TEMPS +#undef DUK__MK_LBP +#undef DUK__MK_LBP_FLAGS +#undef DUK__OBJ_LIT_KEY_GET +#undef DUK__OBJ_LIT_KEY_PLAIN +#undef DUK__OBJ_LIT_KEY_SET +#undef DUK__PARSE_EXPR_SLOTS +#undef DUK__PARSE_STATEMENTS_SLOTS +#undef DUK__RECURSION_DECREASE +#undef DUK__RECURSION_INCREASE +#undef DUK__REMOVECONST +#undef DUK__SETTEMP +#undef DUK__SETTEMP_CHECKMAX +#undef DUK__STILL_PROLOGUE +#undef DUK__TOKEN_LBP_BP_MASK +#undef DUK__TOKEN_LBP_FLAG_NO_REGEXP +#undef DUK__TOKEN_LBP_FLAG_TERMINATES +#undef DUK__TOKEN_LBP_FLAG_UNUSED +#undef DUK__TOKEN_LBP_GET_BP +#line 1 "duk_js_executor.c" +/* + * ECMAScript bytecode executor. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Local declarations. + */ + +DUK_LOCAL_DECL void duk__js_execute_bytecode_inner(duk_hthread *entry_thread, duk_activation *entry_act); + +/* + * Misc helpers. + */ + +/* Replace value stack top to value at 'tv_ptr'. Optimize for + * performance by only applying the net refcount change. + */ +#define DUK__REPLACE_TO_TVPTR(thr,tv_ptr) do { \ + duk_hthread *duk__thr; \ + duk_tval *duk__tvsrc; \ + duk_tval *duk__tvdst; \ + duk_tval duk__tvtmp; \ + duk__thr = (thr); \ + duk__tvsrc = DUK_GET_TVAL_NEGIDX(duk__thr, -1); \ + duk__tvdst = (tv_ptr); \ + DUK_TVAL_SET_TVAL(&duk__tvtmp, duk__tvdst); \ + DUK_TVAL_SET_TVAL(duk__tvdst, duk__tvsrc); \ + DUK_TVAL_SET_UNDEFINED(duk__tvsrc); /* value stack init policy */ \ + duk__thr->valstack_top = duk__tvsrc; \ + DUK_TVAL_DECREF(duk__thr, &duk__tvtmp); \ + } while (0) + +/* XXX: candidate of being an internal shared API call */ +#if 0 /* unused */ +DUK_LOCAL void duk__push_tvals_incref_only(duk_hthread *thr, duk_tval *tv_src, duk_small_uint_fast_t count) { + duk_tval *tv_dst; + duk_size_t copy_size; + duk_size_t i; + + tv_dst = thr->valstack_top; + copy_size = sizeof(duk_tval) * count; + duk_memcpy((void *) tv_dst, (const void *) tv_src, copy_size); + for (i = 0; i < count; i++) { + DUK_TVAL_INCREF(thr, tv_dst); + tv_dst++; + } + thr->valstack_top = tv_dst; +} +#endif + +/* + * Arithmetic, binary, and logical helpers. + * + * Note: there is no opcode for logical AND or logical OR; this is on + * purpose, because the evalution order semantics for them make such + * opcodes pretty pointless: short circuiting means they are most + * comfortably implemented as jumps. However, a logical NOT opcode + * is useful. + * + * Note: careful with duk_tval pointers here: they are potentially + * invalidated by any DECREF and almost any API call. It's still + * preferable to work without making a copy but that's not always + * possible. + */ + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF duk_double_t duk__compute_mod(duk_double_t d1, duk_double_t d2) { + return (duk_double_t) duk_js_arith_mod((double) d1, (double) d2); +} + +#if defined(DUK_USE_ES7_EXP_OPERATOR) +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF duk_double_t duk__compute_exp(duk_double_t d1, duk_double_t d2) { + return (duk_double_t) duk_js_arith_pow((double) d1, (double) d2); +} +#endif + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__vm_arith_add(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_small_uint_fast_t idx_z) { + /* + * Addition operator is different from other arithmetic + * operations in that it also provides string concatenation. + * Hence it is implemented separately. + * + * There is a fast path for number addition. Other cases go + * through potentially multiple coercions as described in the + * E5 specification. It may be possible to reduce the number + * of coercions, but this must be done carefully to preserve + * the exact semantics. + * + * E5 Section 11.6.1. + * + * Custom types also have special behavior implemented here. + */ + + duk_double_union du; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv_x != NULL); /* may be reg or const */ + DUK_ASSERT(tv_y != NULL); /* may be reg or const */ + DUK_ASSERT_DISABLE(idx_z >= 0); /* unsigned */ + DUK_ASSERT((duk_uint_t) idx_z < (duk_uint_t) duk_get_top(thr)); + + /* + * Fast paths + */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_x) && DUK_TVAL_IS_FASTINT(tv_y)) { + duk_int64_t v1, v2, v3; + duk_int32_t v3_hi; + duk_tval *tv_z; + + /* Input values are signed 48-bit so we can detect overflow + * reliably from high bits or just a comparison. + */ + + v1 = DUK_TVAL_GET_FASTINT(tv_x); + v2 = DUK_TVAL_GET_FASTINT(tv_y); + v3 = v1 + v2; + v3_hi = (duk_int32_t) (v3 >> 32); + if (DUK_LIKELY(v3_hi >= DUK_I64_CONSTANT(-0x8000) && v3_hi <= DUK_I64_CONSTANT(0x7fff))) { + tv_z = thr->valstack_bottom + idx_z; + DUK_TVAL_SET_FASTINT_UPDREF(thr, tv_z, v3); /* side effects */ + return; + } else { + /* overflow, fall through */ + ; + } + } +#endif /* DUK_USE_FASTINT */ + + if (DUK_TVAL_IS_NUMBER(tv_x) && DUK_TVAL_IS_NUMBER(tv_y)) { +#if !defined(DUK_USE_EXEC_PREFER_SIZE) + duk_tval *tv_z; +#endif + + du.d = DUK_TVAL_GET_NUMBER(tv_x) + DUK_TVAL_GET_NUMBER(tv_y); +#if defined(DUK_USE_EXEC_PREFER_SIZE) + duk_push_number(thr, du.d); /* will NaN normalize result */ + duk_replace(thr, (duk_idx_t) idx_z); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + DUK_DBLUNION_NORMALIZE_NAN_CHECK(&du); + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + tv_z = thr->valstack_bottom + idx_z; + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv_z, du.d); /* side effects */ +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + return; + } + + /* + * Slow path: potentially requires function calls for coercion + */ + + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + duk_to_primitive(thr, -2, DUK_HINT_NONE); /* side effects -> don't use tv_x, tv_y after */ + duk_to_primitive(thr, -1, DUK_HINT_NONE); + + /* Since Duktape 2.x plain buffers are treated like ArrayBuffer. */ + if (duk_is_string(thr, -2) || duk_is_string(thr, -1)) { + /* Symbols shouldn't technically be handled here, but should + * go into the default ToNumber() coercion path instead and + * fail there with a TypeError. However, there's a ToString() + * in duk_concat_2() which also fails with TypeError so no + * explicit check is needed. + */ + duk_concat_2(thr); /* [... s1 s2] -> [... s1+s2] */ + } else { + duk_double_t d1, d2; + + d1 = duk_to_number_m2(thr); + d2 = duk_to_number_m1(thr); + DUK_ASSERT(duk_is_number(thr, -2)); + DUK_ASSERT(duk_is_number(thr, -1)); + DUK_ASSERT_DOUBLE_IS_NORMALIZED(d1); + DUK_ASSERT_DOUBLE_IS_NORMALIZED(d2); + + du.d = d1 + d2; + duk_pop_2_unsafe(thr); + duk_push_number(thr, du.d); /* will NaN normalize result */ + } + duk_replace(thr, (duk_idx_t) idx_z); /* side effects */ +} + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__vm_arith_binary_op(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_uint_fast_t idx_z, duk_small_uint_fast_t opcode) { + /* + * Arithmetic operations other than '+' have number-only semantics + * and are implemented here. The separate switch-case here means a + * "double dispatch" of the arithmetic opcode, but saves code space. + * + * E5 Sections 11.5, 11.5.1, 11.5.2, 11.5.3, 11.6, 11.6.1, 11.6.2, 11.6.3. + */ + + duk_double_t d1, d2; + duk_double_union du; + duk_small_uint_fast_t opcode_shifted; +#if defined(DUK_USE_FASTINT) || !defined(DUK_USE_EXEC_PREFER_SIZE) + duk_tval *tv_z; +#endif + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv_x != NULL); /* may be reg or const */ + DUK_ASSERT(tv_y != NULL); /* may be reg or const */ + DUK_ASSERT_DISABLE(idx_z >= 0); /* unsigned */ + DUK_ASSERT((duk_uint_t) idx_z < (duk_uint_t) duk_get_top(thr)); + + opcode_shifted = opcode >> 2; /* Get base opcode without reg/const modifiers. */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_x) && DUK_TVAL_IS_FASTINT(tv_y)) { + duk_int64_t v1, v2, v3; + duk_int32_t v3_hi; + + v1 = DUK_TVAL_GET_FASTINT(tv_x); + v2 = DUK_TVAL_GET_FASTINT(tv_y); + + switch (opcode_shifted) { + case DUK_OP_SUB >> 2: { + v3 = v1 - v2; + break; + } + case DUK_OP_MUL >> 2: { + /* Must ensure result is 64-bit (no overflow); a + * simple and sufficient fast path is to allow only + * 32-bit inputs. Avoid zero inputs to avoid + * negative zero issues (-1 * 0 = -0, for instance). + */ + if (v1 >= DUK_I64_CONSTANT(-0x80000000) && v1 <= DUK_I64_CONSTANT(0x7fffffff) && v1 != 0 && + v2 >= DUK_I64_CONSTANT(-0x80000000) && v2 <= DUK_I64_CONSTANT(0x7fffffff) && v2 != 0) { + v3 = v1 * v2; + } else { + goto skip_fastint; + } + break; + } + case DUK_OP_DIV >> 2: { + /* Don't allow a zero divisor. Fast path check by + * "verifying" with multiplication. Also avoid zero + * dividend to avoid negative zero issues (0 / -1 = -0 + * for instance). + */ + if (v1 == 0 || v2 == 0) { + goto skip_fastint; + } + v3 = v1 / v2; + if (v3 * v2 != v1) { + goto skip_fastint; + } + break; + } + case DUK_OP_MOD >> 2: { + /* Don't allow a zero divisor. Restrict both v1 and + * v2 to positive values to avoid compiler specific + * behavior. + */ + if (v1 < 1 || v2 < 1) { + goto skip_fastint; + } + v3 = v1 % v2; + DUK_ASSERT(v3 >= 0); + DUK_ASSERT(v3 < v2); + DUK_ASSERT(v1 - (v1 / v2) * v2 == v3); + break; + } + default: { + /* Possible with DUK_OP_EXP. */ + goto skip_fastint; + } + } + + v3_hi = (duk_int32_t) (v3 >> 32); + if (DUK_LIKELY(v3_hi >= DUK_I64_CONSTANT(-0x8000) && v3_hi <= DUK_I64_CONSTANT(0x7fff))) { + tv_z = thr->valstack_bottom + idx_z; + DUK_TVAL_SET_FASTINT_UPDREF(thr, tv_z, v3); /* side effects */ + return; + } + /* fall through if overflow etc */ + } + skip_fastint: +#endif /* DUK_USE_FASTINT */ + + if (DUK_TVAL_IS_NUMBER(tv_x) && DUK_TVAL_IS_NUMBER(tv_y)) { + /* fast path */ + d1 = DUK_TVAL_GET_NUMBER(tv_x); + d2 = DUK_TVAL_GET_NUMBER(tv_y); + } else { + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + d1 = duk_to_number_m2(thr); /* side effects */ + d2 = duk_to_number_m1(thr); + DUK_ASSERT(duk_is_number(thr, -2)); + DUK_ASSERT(duk_is_number(thr, -1)); + DUK_ASSERT_DOUBLE_IS_NORMALIZED(d1); + DUK_ASSERT_DOUBLE_IS_NORMALIZED(d2); + duk_pop_2_unsafe(thr); + } + + switch (opcode_shifted) { + case DUK_OP_SUB >> 2: { + du.d = d1 - d2; + break; + } + case DUK_OP_MUL >> 2: { + du.d = d1 * d2; + break; + } + case DUK_OP_DIV >> 2: { + /* Division-by-zero is undefined behavior, so + * rely on a helper. + */ + du.d = duk_double_div(d1, d2); + break; + } + case DUK_OP_MOD >> 2: { + du.d = duk__compute_mod(d1, d2); + break; + } +#if defined(DUK_USE_ES7_EXP_OPERATOR) + case DUK_OP_EXP >> 2: { + du.d = duk__compute_exp(d1, d2); + break; + } +#endif + default: { + DUK_UNREACHABLE(); + du.d = DUK_DOUBLE_NAN; /* should not happen */ + break; + } + } + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + duk_push_number(thr, du.d); /* will NaN normalize result */ + duk_replace(thr, (duk_idx_t) idx_z); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + /* important to use normalized NaN with 8-byte tagged types */ + DUK_DBLUNION_NORMALIZE_NAN_CHECK(&du); + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + tv_z = thr->valstack_bottom + idx_z; + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv_z, du.d); /* side effects */ +#endif /* DUK_USE_EXEC_PREFER_SIZE */ +} + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__vm_bitwise_binary_op(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_small_uint_fast_t idx_z, duk_small_uint_fast_t opcode) { + /* + * Binary bitwise operations use different coercions (ToInt32, ToUint32) + * depending on the operation. We coerce the arguments first using + * ToInt32(), and then cast to an 32-bit value if necessary. Note that + * such casts must be correct even if there is no native 32-bit type + * (e.g., duk_int32_t and duk_uint32_t are 64-bit). + * + * E5 Sections 11.10, 11.7.1, 11.7.2, 11.7.3 + */ + + duk_int32_t i1, i2, i3; + duk_uint32_t u1, u2, u3; +#if defined(DUK_USE_FASTINT) + duk_int64_t fi3; +#else + duk_double_t d3; +#endif + duk_small_uint_fast_t opcode_shifted; +#if defined(DUK_USE_FASTINT) || !defined(DUK_USE_EXEC_PREFER_SIZE) + duk_tval *tv_z; +#endif + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv_x != NULL); /* may be reg or const */ + DUK_ASSERT(tv_y != NULL); /* may be reg or const */ + DUK_ASSERT_DISABLE(idx_z >= 0); /* unsigned */ + DUK_ASSERT((duk_uint_t) idx_z < (duk_uint_t) duk_get_top(thr)); + + opcode_shifted = opcode >> 2; /* Get base opcode without reg/const modifiers. */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_x) && DUK_TVAL_IS_FASTINT(tv_y)) { + i1 = (duk_int32_t) DUK_TVAL_GET_FASTINT_I32(tv_x); + i2 = (duk_int32_t) DUK_TVAL_GET_FASTINT_I32(tv_y); + } + else +#endif /* DUK_USE_FASTINT */ + { + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + i1 = duk_to_int32(thr, -2); + i2 = duk_to_int32(thr, -1); + duk_pop_2_unsafe(thr); + } + + switch (opcode_shifted) { + case DUK_OP_BAND >> 2: { + i3 = i1 & i2; + break; + } + case DUK_OP_BOR >> 2: { + i3 = i1 | i2; + break; + } + case DUK_OP_BXOR >> 2: { + i3 = i1 ^ i2; + break; + } + case DUK_OP_BASL >> 2: { + /* Signed shift, named "arithmetic" (asl) because the result + * is signed, e.g. 4294967295 << 1 -> -2. Note that result + * must be masked. + */ + + u2 = ((duk_uint32_t) i2) & 0xffffffffUL; + i3 = (duk_int32_t) (((duk_uint32_t) i1) << (u2 & 0x1fUL)); /* E5 Section 11.7.1, steps 7 and 8 */ + i3 = i3 & ((duk_int32_t) 0xffffffffUL); /* Note: left shift, should mask */ + break; + } + case DUK_OP_BASR >> 2: { + /* signed shift */ + + u2 = ((duk_uint32_t) i2) & 0xffffffffUL; + i3 = i1 >> (u2 & 0x1fUL); /* E5 Section 11.7.2, steps 7 and 8 */ + break; + } + case DUK_OP_BLSR >> 2: { + /* unsigned shift */ + + u1 = ((duk_uint32_t) i1) & 0xffffffffUL; + u2 = ((duk_uint32_t) i2) & 0xffffffffUL; + + /* special result value handling */ + u3 = u1 >> (u2 & 0x1fUL); /* E5 Section 11.7.2, steps 7 and 8 */ +#if defined(DUK_USE_FASTINT) + fi3 = (duk_int64_t) u3; + goto fastint_result_set; +#else + d3 = (duk_double_t) u3; + goto result_set; +#endif + } + default: { + DUK_UNREACHABLE(); + i3 = 0; /* should not happen */ + break; + } + } + +#if defined(DUK_USE_FASTINT) + /* Result is always fastint compatible. */ + /* XXX: Set 32-bit result (but must then handle signed and + * unsigned results separately). + */ + fi3 = (duk_int64_t) i3; + + fastint_result_set: + tv_z = thr->valstack_bottom + idx_z; + DUK_TVAL_SET_FASTINT_UPDREF(thr, tv_z, fi3); /* side effects */ +#else /* DUK_USE_FASTINT */ + d3 = (duk_double_t) i3; + + result_set: + DUK_ASSERT(!DUK_ISNAN(d3)); /* 'd3' is never NaN, so no need to normalize */ + DUK_ASSERT_DOUBLE_IS_NORMALIZED(d3); /* always normalized */ + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + duk_push_number(thr, d3); /* would NaN normalize result, but unnecessary */ + duk_replace(thr, (duk_idx_t) idx_z); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + tv_z = thr->valstack_bottom + idx_z; + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv_z, d3); /* side effects */ +#endif /* DUK_USE_EXEC_PREFER_SIZE */ +#endif /* DUK_USE_FASTINT */ +} + +/* In-place unary operation. */ +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__vm_arith_unary_op(duk_hthread *thr, duk_uint_fast_t idx_src, duk_uint_fast_t idx_dst, duk_small_uint_fast_t opcode) { + /* + * Arithmetic operations other than '+' have number-only semantics + * and are implemented here. The separate switch-case here means a + * "double dispatch" of the arithmetic opcode, but saves code space. + * + * E5 Sections 11.5, 11.5.1, 11.5.2, 11.5.3, 11.6, 11.6.1, 11.6.2, 11.6.3. + */ + + duk_tval *tv; + duk_double_t d1; + duk_double_union du; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(opcode == DUK_OP_UNM || opcode == DUK_OP_UNP); + DUK_ASSERT_DISABLE(idx_src >= 0); + DUK_ASSERT_DISABLE(idx_dst >= 0); + + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_src); + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + duk_int64_t v1, v2; + + v1 = DUK_TVAL_GET_FASTINT(tv); + if (opcode == DUK_OP_UNM) { + /* The smallest fastint is no longer 48-bit when + * negated. Positive zero becames negative zero + * (cannot be represented) when negated. + */ + if (DUK_LIKELY(v1 != DUK_FASTINT_MIN && v1 != 0)) { + v2 = -v1; + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst); + DUK_TVAL_SET_FASTINT_UPDREF(thr, tv, v2); + return; + } + } else { + /* ToNumber() for a fastint is a no-op. */ + DUK_ASSERT(opcode == DUK_OP_UNP); + v2 = v1; + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst); + DUK_TVAL_SET_FASTINT_UPDREF(thr, tv, v2); + return; + } + /* fall through if overflow etc */ + } +#endif /* DUK_USE_FASTINT */ + + if (DUK_TVAL_IS_NUMBER(tv)) { + d1 = DUK_TVAL_GET_NUMBER(tv); + } else { + d1 = duk_to_number_tval(thr, tv); /* side effects */ + } + + if (opcode == DUK_OP_UNP) { + /* ToNumber() for a double is a no-op, but unary plus is + * used to force a fastint check so do that here. + */ + du.d = d1; + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); +#if defined(DUK_USE_FASTINT) + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst); + DUK_TVAL_SET_NUMBER_CHKFAST_UPDREF(thr, tv, du.d); /* always 'fast', i.e. inlined */ + return; +#endif + } else { + DUK_ASSERT(opcode == DUK_OP_UNM); + du.d = -d1; + DUK_DBLUNION_NORMALIZE_NAN_CHECK(&du); /* mandatory if du.d is a NaN */ + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + } + + /* XXX: size optimize: push+replace? */ + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst); + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv, du.d); +} + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__vm_bitwise_not(duk_hthread *thr, duk_uint_fast_t idx_src, duk_uint_fast_t idx_dst) { + /* + * E5 Section 11.4.8 + */ + + duk_tval *tv; + duk_int32_t i1, i2; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT_DISABLE(idx_src >= 0); + DUK_ASSERT_DISABLE(idx_dst >= 0); + DUK_ASSERT((duk_uint_t) idx_src < (duk_uint_t) duk_get_top(thr)); + DUK_ASSERT((duk_uint_t) idx_dst < (duk_uint_t) duk_get_top(thr)); + + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_src); + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + i1 = (duk_int32_t) DUK_TVAL_GET_FASTINT_I32(tv); + } + else +#endif /* DUK_USE_FASTINT */ + { + duk_push_tval(thr, tv); + i1 = duk_to_int32(thr, -1); /* side effects */ + duk_pop_unsafe(thr); + } + + /* Result is always fastint compatible. */ + i2 = ~i1; + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst); + DUK_TVAL_SET_I32_UPDREF(thr, tv, i2); /* side effects */ +} + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__vm_logical_not(duk_hthread *thr, duk_uint_fast_t idx_src, duk_uint_fast_t idx_dst) { + /* + * E5 Section 11.4.9 + */ + + duk_tval *tv; + duk_bool_t res; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT_DISABLE(idx_src >= 0); + DUK_ASSERT_DISABLE(idx_dst >= 0); + DUK_ASSERT((duk_uint_t) idx_src < (duk_uint_t) duk_get_top(thr)); + DUK_ASSERT((duk_uint_t) idx_dst < (duk_uint_t) duk_get_top(thr)); + + /* ToBoolean() does not require any operations with side effects so + * we can do it efficiently. For footprint it would be better to use + * duk_js_toboolean() and then push+replace to the result slot. + */ + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_src); + res = duk_js_toboolean(tv); /* does not modify 'tv' */ + DUK_ASSERT(res == 0 || res == 1); + res ^= 1; + tv = DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst); + /* XXX: size optimize: push+replace? */ + DUK_TVAL_SET_BOOLEAN_UPDREF(thr, tv, res); /* side effects */ +} + +/* XXX: size optimized variant */ +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__prepost_incdec_reg_helper(duk_hthread *thr, duk_tval *tv_dst, duk_tval *tv_src, duk_small_uint_t op) { + duk_double_t x, y, z; + + /* Two lowest bits of opcode are used to distinguish + * variants. Bit 0 = inc(0)/dec(1), bit 1 = pre(0)/post(1). + */ + DUK_ASSERT((DUK_OP_PREINCR & 0x03) == 0x00); + DUK_ASSERT((DUK_OP_PREDECR & 0x03) == 0x01); + DUK_ASSERT((DUK_OP_POSTINCR & 0x03) == 0x02); + DUK_ASSERT((DUK_OP_POSTDECR & 0x03) == 0x03); + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_src)) { + duk_int64_t x_fi, y_fi, z_fi; + x_fi = DUK_TVAL_GET_FASTINT(tv_src); + if (op & 0x01) { + if (DUK_UNLIKELY(x_fi == DUK_FASTINT_MIN)) { + goto skip_fastint; + } + y_fi = x_fi - 1; + } else { + if (DUK_UNLIKELY(x_fi == DUK_FASTINT_MAX)) { + goto skip_fastint; + } + y_fi = x_fi + 1; + } + + DUK_TVAL_SET_FASTINT(tv_src, y_fi); /* no need for refcount update */ + + z_fi = (op & 0x02) ? x_fi : y_fi; + DUK_TVAL_SET_FASTINT_UPDREF(thr, tv_dst, z_fi); /* side effects */ + return; + } + skip_fastint: +#endif + if (DUK_TVAL_IS_NUMBER(tv_src)) { + /* Fast path for the case where the register + * is a number (e.g. loop counter). + */ + + x = DUK_TVAL_GET_NUMBER(tv_src); + if (op & 0x01) { + y = x - 1.0; + } else { + y = x + 1.0; + } + + DUK_TVAL_SET_NUMBER(tv_src, y); /* no need for refcount update */ + } else { + /* Preserve duk_tval pointer(s) across a potential valstack + * resize by converting them into offsets temporarily. + */ + duk_idx_t bc; + duk_size_t off_dst; + + off_dst = (duk_size_t) ((duk_uint8_t *) tv_dst - (duk_uint8_t *) thr->valstack_bottom); + bc = (duk_idx_t) (tv_src - thr->valstack_bottom); /* XXX: pass index explicitly? */ + tv_src = NULL; /* no longer referenced */ + + x = duk_to_number(thr, bc); + if (op & 0x01) { + y = x - 1.0; + } else { + y = x + 1.0; + } + + duk_push_number(thr, y); + duk_replace(thr, bc); + + tv_dst = (duk_tval *) (void *) (((duk_uint8_t *) thr->valstack_bottom) + off_dst); + } + + z = (op & 0x02) ? x : y; + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv_dst, z); /* side effects */ +} + +DUK_LOCAL DUK_EXEC_ALWAYS_INLINE_PERF void duk__prepost_incdec_var_helper(duk_hthread *thr, duk_small_uint_t idx_dst, duk_tval *tv_id, duk_small_uint_t op, duk_small_uint_t is_strict) { + duk_activation *act; + duk_double_t x, y; + duk_hstring *name; + + /* XXX: The pre/post inc/dec for an identifier lookup is + * missing the important fast path where the identifier + * has a storage location e.g. in a scope object so that + * it can be updated in-place. In particular, the case + * where the identifier has a storage location AND the + * previous value is a number should be optimized because + * it's side effect free. + */ + + /* Two lowest bits of opcode are used to distinguish + * variants. Bit 0 = inc(0)/dec(1), bit 1 = pre(0)/post(1). + */ + DUK_ASSERT((DUK_OP_PREINCV & 0x03) == 0x00); + DUK_ASSERT((DUK_OP_PREDECV & 0x03) == 0x01); + DUK_ASSERT((DUK_OP_POSTINCV & 0x03) == 0x02); + DUK_ASSERT((DUK_OP_POSTDECV & 0x03) == 0x03); + + DUK_ASSERT(DUK_TVAL_IS_STRING(tv_id)); + name = DUK_TVAL_GET_STRING(tv_id); + DUK_ASSERT(name != NULL); + act = thr->callstack_curr; + (void) duk_js_getvar_activation(thr, act, name, 1 /*throw*/); /* -> [ ... val this ] */ + + /* XXX: Fastint fast path would be useful here. Also fastints + * now lose their fastint status in current handling which is + * not intuitive. + */ + + x = duk_to_number_m2(thr); + if (op & 0x01) { + y = x - 1.0; + } else { + y = x + 1.0; + } + + /* [... x this] */ + + if (op & 0x02) { + duk_push_number(thr, y); /* -> [ ... x this y ] */ + DUK_ASSERT(act == thr->callstack_curr); + duk_js_putvar_activation(thr, act, name, DUK_GET_TVAL_NEGIDX(thr, -1), is_strict); + duk_pop_2_unsafe(thr); /* -> [ ... x ] */ + } else { + duk_pop_2_unsafe(thr); /* -> [ ... ] */ + duk_push_number(thr, y); /* -> [ ... y ] */ + DUK_ASSERT(act == thr->callstack_curr); + duk_js_putvar_activation(thr, act, name, DUK_GET_TVAL_NEGIDX(thr, -1), is_strict); + } + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + duk_replace(thr, (duk_idx_t) idx_dst); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + DUK__REPLACE_TO_TVPTR(thr, DUK_GET_TVAL_POSIDX(thr, (duk_idx_t) idx_dst)); +#endif /* DUK_USE_EXEC_PREFER_SIZE */ +} + +/* + * Longjmp and other control flow transfer for the bytecode executor. + * + * The longjmp handler can handle all longjmp types: error, yield, and + * resume (pseudotypes are never actually thrown). + * + * Error policy for longjmp: should not ordinarily throw errors; if errors + * occur (e.g. due to out-of-memory) they bubble outwards rather than being + * handled recursively. + */ + +#define DUK__LONGJMP_RESTART 0 /* state updated, restart bytecode execution */ +#define DUK__LONGJMP_RETHROW 1 /* exit bytecode executor by rethrowing an error to caller */ + +#define DUK__RETHAND_RESTART 0 /* state updated, restart bytecode execution */ +#define DUK__RETHAND_FINISHED 1 /* exit bytecode execution with return value */ + +/* XXX: optimize reconfig valstack operations so that resize, clamp, and setting + * top are combined into one pass. + */ + +/* Reconfigure value stack for return to an ECMAScript function at + * callstack top (caller unwinds). + */ +DUK_LOCAL void duk__reconfig_valstack_ecma_return(duk_hthread *thr) { + duk_activation *act; + duk_hcompfunc *h_func; + duk_idx_t clamp_top; + + DUK_ASSERT(thr != NULL); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(act) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(act))); + + /* Clamp so that values at 'clamp_top' and above are wiped and won't + * retain reachable garbage. Then extend to 'nregs' because we're + * returning to an ECMAScript function. + */ + + h_func = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + + thr->valstack_bottom = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + act->bottom_byteoff); + DUK_ASSERT(act->retval_byteoff >= act->bottom_byteoff); + clamp_top = (duk_idx_t) ((act->retval_byteoff - act->bottom_byteoff + sizeof(duk_tval)) / sizeof(duk_tval)); /* +1 = one retval */ + duk_set_top_and_wipe(thr, h_func->nregs, clamp_top); + + DUK_ASSERT((duk_uint8_t *) thr->valstack_end >= (duk_uint8_t *) thr->valstack + act->reserve_byteoff); + thr->valstack_end = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + act->reserve_byteoff); + + /* XXX: a best effort shrink check would be OK here */ +} + +/* Reconfigure value stack for an ECMAScript catcher. Use topmost catcher + * in 'act'. + */ +DUK_LOCAL void duk__reconfig_valstack_ecma_catcher(duk_hthread *thr, duk_activation *act) { + duk_catcher *cat; + duk_hcompfunc *h_func; + duk_size_t idx_bottom; + duk_idx_t clamp_top; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(act) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(act))); + cat = act->cat; + DUK_ASSERT(cat != NULL); + + h_func = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + + thr->valstack_bottom = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + act->bottom_byteoff); + idx_bottom = (duk_size_t) (thr->valstack_bottom - thr->valstack); + DUK_ASSERT(cat->idx_base >= idx_bottom); + clamp_top = (duk_idx_t) (cat->idx_base - idx_bottom + 2); /* +2 = catcher value, catcher lj_type */ + duk_set_top_and_wipe(thr, h_func->nregs, clamp_top); + + DUK_ASSERT((duk_uint8_t *) thr->valstack_end >= (duk_uint8_t *) thr->valstack + act->reserve_byteoff); + thr->valstack_end = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + act->reserve_byteoff); + + /* XXX: a best effort shrink check would be OK here */ +} + +/* Set catcher regs: idx_base+0 = value, idx_base+1 = lj_type. + * No side effects. + */ +DUK_LOCAL void duk__set_catcher_regs_norz(duk_hthread *thr, duk_catcher *cat, duk_tval *tv_val_unstable, duk_small_uint_t lj_type) { + duk_tval *tv1; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv_val_unstable != NULL); + + tv1 = thr->valstack + cat->idx_base; + DUK_ASSERT(tv1 < thr->valstack_top); + DUK_TVAL_SET_TVAL_UPDREF_NORZ(thr, tv1, tv_val_unstable); + + tv1++; + DUK_ASSERT(tv1 == thr->valstack + cat->idx_base + 1); + DUK_ASSERT(tv1 < thr->valstack_top); + DUK_TVAL_SET_U32_UPDREF_NORZ(thr, tv1, (duk_uint32_t) lj_type); +} + +DUK_LOCAL void duk__handle_catch_part1(duk_hthread *thr, duk_tval *tv_val_unstable, duk_small_uint_t lj_type, volatile duk_bool_t *out_delayed_catch_setup) { + duk_activation *act; + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv_val_unstable != NULL); + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + DUK_DD(DUK_DDPRINT("handle catch, part 1; act=%!A, cat=%!C", act, act->cat)); + + DUK_ASSERT(act->cat != NULL); + DUK_ASSERT(DUK_CAT_GET_TYPE(act->cat) == DUK_CAT_TYPE_TCF); + + /* The part1/part2 split could also be made here at the very top + * of catch handling. Value stack would be reconfigured inside + * part2's protection. Value stack reconfiguration should be free + * of allocs, however. + */ + + duk__set_catcher_regs_norz(thr, act->cat, tv_val_unstable, lj_type); + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr))); + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + duk__reconfig_valstack_ecma_catcher(thr, act); + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + cat = act->cat; + DUK_ASSERT(cat != NULL); + + act->curr_pc = cat->pc_base + 0; /* +0 = catch */ + + /* + * If the catch block has an automatic catch variable binding, + * we need to create a lexical environment for it which requires + * allocations. Move out of "error handling state" before the + * allocations to avoid e.g. out-of-memory errors (leading to + * GH-2022 or similar). + */ + + if (DUK_CAT_HAS_CATCH_BINDING_ENABLED(cat)) { + DUK_DDD(DUK_DDDPRINT("catcher has an automatic catch binding, handle in part 2")); + *out_delayed_catch_setup = 1; + } else { + DUK_DDD(DUK_DDDPRINT("catcher has no catch binding")); + } + + DUK_CAT_CLEAR_CATCH_ENABLED(cat); +} + +DUK_LOCAL void duk__handle_catch_part2(duk_hthread *thr) { + duk_activation *act; + duk_catcher *cat; + duk_hdecenv *new_env; + + DUK_ASSERT(thr != NULL); + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + DUK_DD(DUK_DDPRINT("handle catch, part 2; act=%!A, cat=%!C", act, act->cat)); + + DUK_ASSERT(act->cat != NULL); + cat = act->cat; + DUK_ASSERT(cat != NULL); + DUK_ASSERT(DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_TCF); + DUK_ASSERT(DUK_CAT_HAS_CATCH_BINDING_ENABLED(cat)); + DUK_ASSERT(thr->valstack + cat->idx_base < thr->valstack_top); + + /* + * Create lexical environment for the catch clause, containing + * a binding for the caught value. + * + * The binding is mutable (= writable) but not deletable. + * Step 4 for the catch production in E5 Section 12.14; + * no value is given for CreateMutableBinding 'D' argument, + * which implies the binding is not deletable. + */ + + if (act->lex_env == NULL) { + DUK_ASSERT(act->var_env == NULL); + DUK_DDD(DUK_DDDPRINT("delayed environment initialization")); + + duk_js_init_activation_environment_records_delayed(thr, act); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + } + DUK_ASSERT(act->lex_env != NULL); + DUK_ASSERT(act->var_env != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(act) != NULL); + + new_env = duk_hdecenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DECENV)); + DUK_ASSERT(new_env != NULL); + duk_push_hobject(thr, (duk_hobject *) new_env); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) new_env) == NULL); + DUK_DDD(DUK_DDDPRINT("new_env allocated: %!iO", (duk_heaphdr *) new_env)); + + /* Note: currently the catch binding is handled without a register + * binding because we don't support dynamic register bindings (they + * must be fixed for an entire function). So, there is no need to + * record regbases etc. + */ + + /* [ ...env ] */ + + DUK_ASSERT(cat->h_varname != NULL); + duk_push_hstring(thr, cat->h_varname); + DUK_ASSERT(thr->valstack + cat->idx_base < thr->valstack_top); + duk_push_tval(thr, thr->valstack + cat->idx_base); + duk_xdef_prop(thr, -3, DUK_PROPDESC_FLAGS_W); /* writable, not configurable */ + + /* [ ... env ] */ + + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, (duk_hobject *) new_env, act->lex_env); + act->lex_env = (duk_hobject *) new_env; + DUK_HOBJECT_INCREF(thr, (duk_hobject *) new_env); /* reachable through activation */ + /* Net refcount change to act->lex_env is 0: incref for new_env's + * prototype, decref for act->lex_env overwrite. + */ + + DUK_CAT_SET_LEXENV_ACTIVE(cat); + + duk_pop_unsafe(thr); + + DUK_DDD(DUK_DDDPRINT("new_env finished: %!iO", (duk_heaphdr *) new_env)); +} + +DUK_LOCAL void duk__handle_finally(duk_hthread *thr, duk_tval *tv_val_unstable, duk_small_uint_t lj_type) { + duk_activation *act; + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv_val_unstable != NULL); + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + DUK_ASSERT(act->cat != NULL); + DUK_ASSERT(DUK_CAT_GET_TYPE(act->cat) == DUK_CAT_TYPE_TCF); + + duk__set_catcher_regs_norz(thr, act->cat, tv_val_unstable, lj_type); + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr))); + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + duk__reconfig_valstack_ecma_catcher(thr, act); + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + cat = act->cat; + DUK_ASSERT(cat != NULL); + + act->curr_pc = cat->pc_base + 1; /* +1 = finally */ + + DUK_CAT_CLEAR_FINALLY_ENABLED(cat); +} + +DUK_LOCAL void duk__handle_label(duk_hthread *thr, duk_small_uint_t lj_type) { + duk_activation *act; + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + + DUK_ASSERT(thr->callstack_top >= 1); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(act) != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(DUK_ACT_GET_FUNC(act))); + + /* +0 = break, +1 = continue */ + cat = act->cat; + DUK_ASSERT(cat != NULL); + DUK_ASSERT(DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_LABEL); + + act->curr_pc = cat->pc_base + (lj_type == DUK_LJ_TYPE_CONTINUE ? 1 : 0); + + /* valstack should not need changes */ +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack_bottom) == + (duk_size_t) ((duk_hcompfunc *) DUK_ACT_GET_FUNC(act))->nregs); +#endif +} + +/* Called for handling both a longjmp() with type DUK_LJ_TYPE_YIELD and + * when a RETURN opcode terminates a thread and yields to the resumer. + * Caller unwinds so that top of callstack is the activation we return to. + */ +#if defined(DUK_USE_COROUTINE_SUPPORT) +DUK_LOCAL void duk__handle_yield(duk_hthread *thr, duk_hthread *resumer, duk_tval *tv_val_unstable) { + duk_activation *act_resumer; + duk_tval *tv1; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(resumer != NULL); + DUK_ASSERT(tv_val_unstable != NULL); + act_resumer = resumer->callstack_curr; + DUK_ASSERT(act_resumer != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(act_resumer) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(act_resumer))); /* resume caller must be an ECMAScript func */ + + tv1 = (duk_tval *) (void *) ((duk_uint8_t *) resumer->valstack + act_resumer->retval_byteoff); /* return value from Duktape.Thread.resume() */ + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv_val_unstable); /* side effects */ /* XXX: avoid side effects */ + + duk__reconfig_valstack_ecma_return(resumer); + + /* caller must change active thread, and set thr->resumer to NULL */ +} +#endif /* DUK_USE_COROUTINE_SUPPORT */ + +DUK_LOCAL duk_small_uint_t duk__handle_longjmp(duk_hthread *thr, duk_activation *entry_act, volatile duk_bool_t *out_delayed_catch_setup) { + duk_small_uint_t retval = DUK__LONGJMP_RESTART; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(entry_act != NULL); + + /* 'thr' is the current thread, as no-one resumes except us and we + * switch 'thr' in that case. + */ + DUK_ASSERT(thr == thr->heap->curr_thread); + + /* + * (Re)try handling the longjmp. + * + * A longjmp handler may convert the longjmp to a different type and + * "virtually" rethrow by goto'ing to 'check_longjmp'. Before the goto, + * the following must be updated: + * - the heap 'lj' state + * - 'thr' must reflect the "throwing" thread + */ + + check_longjmp: + + DUK_DD(DUK_DDPRINT("handling longjmp: type=%ld, value1=%!T, value2=%!T, iserror=%ld, top=%ld", + (long) thr->heap->lj.type, + (duk_tval *) &thr->heap->lj.value1, + (duk_tval *) &thr->heap->lj.value2, + (long) thr->heap->lj.iserror, + (long) duk_get_top(thr))); + + switch (thr->heap->lj.type) { + +#if defined(DUK_USE_COROUTINE_SUPPORT) + case DUK_LJ_TYPE_RESUME: { + /* + * Note: lj.value1 is 'value', lj.value2 is 'resumee'. + * This differs from YIELD. + */ + + duk_tval *tv; + duk_tval *tv2; + duk_hthread *resumee; + + /* duk_bi_duk_object_yield() and duk_bi_duk_object_resume() ensure all of these are met */ + + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_RUNNING); /* unchanged by Duktape.Thread.resume() */ + DUK_ASSERT(thr->callstack_top >= 2); /* ECMAScript activation + Duktape.Thread.resume() activation */ + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL && + DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr)) && + ((duk_hnatfunc *) DUK_ACT_GET_FUNC(thr->callstack_curr))->func == duk_bi_thread_resume); + + tv = &thr->heap->lj.value2; /* resumee */ + DUK_ASSERT(DUK_TVAL_IS_OBJECT(tv)); + DUK_ASSERT(DUK_TVAL_GET_OBJECT(tv) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_THREAD(DUK_TVAL_GET_OBJECT(tv))); + resumee = (duk_hthread *) DUK_TVAL_GET_OBJECT(tv); + + DUK_ASSERT(resumee != NULL); + DUK_ASSERT(resumee->resumer == NULL); + DUK_ASSERT(resumee->state == DUK_HTHREAD_STATE_INACTIVE || + resumee->state == DUK_HTHREAD_STATE_YIELDED); /* checked by Duktape.Thread.resume() */ + DUK_ASSERT(resumee->state != DUK_HTHREAD_STATE_YIELDED || + resumee->callstack_top >= 2); /* YIELDED: ECMAScript activation + Duktape.Thread.yield() activation */ + DUK_ASSERT(resumee->state != DUK_HTHREAD_STATE_YIELDED || + (DUK_ACT_GET_FUNC(resumee->callstack_curr) != NULL && + DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(resumee->callstack_curr)) && + ((duk_hnatfunc *) DUK_ACT_GET_FUNC(resumee->callstack_curr))->func == duk_bi_thread_yield)); + DUK_ASSERT(resumee->state != DUK_HTHREAD_STATE_INACTIVE || + resumee->callstack_top == 0); /* INACTIVE: no activation, single function value on valstack */ + + if (thr->heap->lj.iserror) { + /* + * Throw the error in the resumed thread's context; the + * error value is pushed onto the resumee valstack. + * + * Note: the callstack of the target may empty in this case + * too (i.e. the target thread has never been resumed). The + * value stack will contain the initial function in that case, + * which we simply ignore. + */ + + DUK_ASSERT(resumee->resumer == NULL); + resumee->resumer = thr; + DUK_HTHREAD_INCREF(thr, thr); + resumee->state = DUK_HTHREAD_STATE_RUNNING; + thr->state = DUK_HTHREAD_STATE_RESUMED; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumee); + thr = resumee; + + thr->heap->lj.type = DUK_LJ_TYPE_THROW; + + /* thr->heap->lj.value1 is already the value to throw */ + /* thr->heap->lj.value2 is 'thread', will be wiped out at the end */ + + DUK_ASSERT(thr->heap->lj.iserror); /* already set */ + + DUK_DD(DUK_DDPRINT("-> resume with an error, converted to a throw in the resumee, propagate")); + goto check_longjmp; + } else if (resumee->state == DUK_HTHREAD_STATE_YIELDED) { + /* Unwind previous Duktape.Thread.yield() call. The + * activation remaining must always be an ECMAScript + * call now (yield() accepts calls from ECMAScript + * only). + */ + duk_activation *act_resumee; + + DUK_ASSERT(resumee->callstack_top >= 2); + act_resumee = resumee->callstack_curr; /* Duktape.Thread.yield() */ + DUK_ASSERT(act_resumee != NULL); + act_resumee = act_resumee->parent; /* ECMAScript call site for yield() */ + DUK_ASSERT(act_resumee != NULL); + + tv = (duk_tval *) (void *) ((duk_uint8_t *) resumee->valstack + act_resumee->retval_byteoff); /* return value from Duktape.Thread.yield() */ + DUK_ASSERT(tv >= resumee->valstack && tv < resumee->valstack_top); + tv2 = &thr->heap->lj.value1; + DUK_TVAL_SET_TVAL_UPDREF(thr, tv, tv2); /* side effects */ /* XXX: avoid side effects */ + + duk_hthread_activation_unwind_norz(resumee); /* unwind to 'yield' caller */ + /* no need to unwind catch stack */ + + duk__reconfig_valstack_ecma_return(resumee); + + DUK_ASSERT(resumee->resumer == NULL); + resumee->resumer = thr; + DUK_HTHREAD_INCREF(thr, thr); + resumee->state = DUK_HTHREAD_STATE_RUNNING; + thr->state = DUK_HTHREAD_STATE_RESUMED; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumee); +#if 0 + thr = resumee; /* not needed, as we exit right away */ +#endif + DUK_DD(DUK_DDPRINT("-> resume with a value, restart execution in resumee")); + retval = DUK__LONGJMP_RESTART; + goto wipe_and_return; + } else { + /* Initial resume call. */ + duk_small_uint_t call_flags; + duk_int_t setup_rc; + + /* resumee: [... initial_func] (currently actually: [initial_func]) */ + + duk_push_undefined(resumee); + tv = &thr->heap->lj.value1; + duk_push_tval(resumee, tv); + + /* resumee: [... initial_func undefined(= this) resume_value ] */ + + call_flags = DUK_CALL_FLAG_ALLOW_ECMATOECMA; /* not tailcall, ecma-to-ecma (assumed to succeed) */ + + setup_rc = duk_handle_call_unprotected_nargs(resumee, 1 /*nargs*/, call_flags); + if (setup_rc == 0) { + /* This shouldn't happen; Duktape.Thread.resume() + * should make sure of that. If it does happen + * this internal error will propagate out of the + * executor which can be quite misleading. + */ + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); + } + + DUK_ASSERT(resumee->resumer == NULL); + resumee->resumer = thr; + DUK_HTHREAD_INCREF(thr, thr); + resumee->state = DUK_HTHREAD_STATE_RUNNING; + thr->state = DUK_HTHREAD_STATE_RESUMED; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumee); +#if 0 + thr = resumee; /* not needed, as we exit right away */ +#endif + DUK_DD(DUK_DDPRINT("-> resume with a value, restart execution in resumee")); + retval = DUK__LONGJMP_RESTART; + goto wipe_and_return; + } + DUK_UNREACHABLE(); + break; /* never here */ + } + + case DUK_LJ_TYPE_YIELD: { + /* + * Currently only allowed only if yielding thread has only + * ECMAScript activations (except for the Duktape.Thread.yield() + * call at the callstack top) and none of them constructor + * calls. + * + * This excludes the 'entry' thread which will always have + * a preventcount > 0. + */ + + duk_hthread *resumer; + + /* duk_bi_duk_object_yield() and duk_bi_duk_object_resume() ensure all of these are met */ + +#if 0 /* entry_thread not available for assert */ + DUK_ASSERT(thr != entry_thread); /* Duktape.Thread.yield() should prevent */ +#endif + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_RUNNING); /* unchanged from Duktape.Thread.yield() */ + DUK_ASSERT(thr->callstack_top >= 2); /* ECMAScript activation + Duktape.Thread.yield() activation */ + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL && + DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr)) && + ((duk_hnatfunc *) DUK_ACT_GET_FUNC(thr->callstack_curr))->func == duk_bi_thread_yield); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr->parent) != NULL && + DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr->parent))); /* an ECMAScript function */ + + resumer = thr->resumer; + + DUK_ASSERT(resumer != NULL); + DUK_ASSERT(resumer->state == DUK_HTHREAD_STATE_RESUMED); /* written by a previous RESUME handling */ + DUK_ASSERT(resumer->callstack_top >= 2); /* ECMAScript activation + Duktape.Thread.resume() activation */ + DUK_ASSERT(resumer->callstack_curr != NULL); + DUK_ASSERT(resumer->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(resumer->callstack_curr) != NULL && + DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(resumer->callstack_curr)) && + ((duk_hnatfunc *) DUK_ACT_GET_FUNC(resumer->callstack_curr))->func == duk_bi_thread_resume); + DUK_ASSERT(DUK_ACT_GET_FUNC(resumer->callstack_curr->parent) != NULL && + DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(resumer->callstack_curr->parent))); /* an ECMAScript function */ + + if (thr->heap->lj.iserror) { + thr->state = DUK_HTHREAD_STATE_YIELDED; + thr->resumer = NULL; + DUK_HTHREAD_DECREF_NORZ(thr, resumer); + resumer->state = DUK_HTHREAD_STATE_RUNNING; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumer); + thr = resumer; + + thr->heap->lj.type = DUK_LJ_TYPE_THROW; + /* lj.value1 is already set */ + DUK_ASSERT(thr->heap->lj.iserror); /* already set */ + + DUK_DD(DUK_DDPRINT("-> yield an error, converted to a throw in the resumer, propagate")); + goto check_longjmp; + } else { + duk_hthread_activation_unwind_norz(resumer); + duk__handle_yield(thr, resumer, &thr->heap->lj.value1); + + thr->state = DUK_HTHREAD_STATE_YIELDED; + thr->resumer = NULL; + DUK_HTHREAD_DECREF_NORZ(thr, resumer); + resumer->state = DUK_HTHREAD_STATE_RUNNING; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumer); +#if 0 + thr = resumer; /* not needed, as we exit right away */ +#endif + + DUK_DD(DUK_DDPRINT("-> yield a value, restart execution in resumer")); + retval = DUK__LONGJMP_RESTART; + goto wipe_and_return; + } + DUK_UNREACHABLE(); + break; /* never here */ + } +#endif /* DUK_USE_COROUTINE_SUPPORT */ + + case DUK_LJ_TYPE_THROW: { + /* + * Three possible outcomes: + * * A try or finally catcher is found => resume there. + * (or) + * * The error propagates to the bytecode executor entry + * level (and we're in the entry thread) => rethrow + * with a new longjmp(), after restoring the previous + * catchpoint. + * * The error is not caught in the current thread, so + * the thread finishes with an error. This works like + * a yielded error, except that the thread is finished + * and can no longer be resumed. (There is always a + * resumer in this case.) + * + * Note: until we hit the entry level, there can only be + * ECMAScript activations. + */ + + duk_activation *act; + duk_catcher *cat; + duk_hthread *resumer; + + for (;;) { + act = thr->callstack_curr; + if (act == NULL) { + break; + } + + for (;;) { + cat = act->cat; + if (cat == NULL) { + break; + } + + if (DUK_CAT_HAS_CATCH_ENABLED(cat)) { + DUK_ASSERT(DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_TCF); + + DUK_DDD(DUK_DDDPRINT("before catch part 1: thr=%p, act=%p, cat=%p", + (void *) thr, (void *) act, (void *) act->cat)); + duk__handle_catch_part1(thr, + &thr->heap->lj.value1, + DUK_LJ_TYPE_THROW, + out_delayed_catch_setup); + + DUK_DD(DUK_DDPRINT("-> throw caught by a 'catch' clause, restart execution")); + retval = DUK__LONGJMP_RESTART; + goto wipe_and_return; + } + + if (DUK_CAT_HAS_FINALLY_ENABLED(cat)) { + DUK_ASSERT(DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_TCF); + DUK_ASSERT(!DUK_CAT_HAS_CATCH_ENABLED(cat)); + + duk__handle_finally(thr, + &thr->heap->lj.value1, + DUK_LJ_TYPE_THROW); + + DUK_DD(DUK_DDPRINT("-> throw caught by a 'finally' clause, restart execution")); + retval = DUK__LONGJMP_RESTART; + goto wipe_and_return; + } + + duk_hthread_catcher_unwind_norz(thr, act); + } + + if (act == entry_act) { + /* Not caught by anything before entry level; rethrow and let the + * final catcher finish unwinding (esp. value stack). + */ + DUK_D(DUK_DPRINT("-> throw propagated up to entry level, rethrow and exit bytecode executor")); + retval = DUK__LONGJMP_RETHROW; + goto just_return; + } + + duk_hthread_activation_unwind_norz(thr); + } + + DUK_DD(DUK_DDPRINT("-> throw not caught by current thread, yield error to resumer and recheck longjmp")); + + /* Not caught by current thread, thread terminates (yield error to resumer); + * note that this may cause a cascade if the resumer terminates with an uncaught + * exception etc (this is OK, but needs careful testing). + */ + + DUK_ASSERT(thr->resumer != NULL); + DUK_ASSERT(thr->resumer->callstack_top >= 2); /* ECMAScript activation + Duktape.Thread.resume() activation */ + DUK_ASSERT(thr->resumer->callstack_curr != NULL); + DUK_ASSERT(thr->resumer->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->resumer->callstack_curr->parent) != NULL && + DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->resumer->callstack_curr->parent))); /* an ECMAScript function */ + + resumer = thr->resumer; + + /* reset longjmp */ + + DUK_ASSERT(thr->heap->lj.type == DUK_LJ_TYPE_THROW); /* already set */ + /* lj.value1 already set */ + + duk_hthread_terminate(thr); /* updates thread state, minimizes its allocations */ + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_TERMINATED); + + thr->resumer = NULL; + DUK_HTHREAD_DECREF_NORZ(thr, resumer); + resumer->state = DUK_HTHREAD_STATE_RUNNING; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumer); + thr = resumer; + goto check_longjmp; + } + + case DUK_LJ_TYPE_BREAK: /* pseudotypes, not used in actual longjmps */ + case DUK_LJ_TYPE_CONTINUE: + case DUK_LJ_TYPE_RETURN: + case DUK_LJ_TYPE_NORMAL: + default: { + /* should never happen, but be robust */ + DUK_D(DUK_DPRINT("caught unknown longjmp type %ld, treat as internal error", (long) thr->heap->lj.type)); + goto convert_to_internal_error; + } + + } /* end switch */ + + DUK_UNREACHABLE(); + + wipe_and_return: + DUK_DD(DUK_DDPRINT("handling longjmp done, wipe-and-return, top=%ld", + (long) duk_get_top(thr))); + thr->heap->lj.type = DUK_LJ_TYPE_UNKNOWN; + thr->heap->lj.iserror = 0; + + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, &thr->heap->lj.value1); /* side effects */ + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, &thr->heap->lj.value2); /* side effects */ + + DUK_GC_TORTURE(thr->heap); + + just_return: + return retval; + + convert_to_internal_error: + /* This could also be thrown internally (set the error, goto check_longjmp), + * but it's better for internal errors to bubble outwards so that we won't + * infinite loop in this catchpoint. + */ + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); +} + +/* Handle a BREAK/CONTINUE opcode. Avoid using longjmp() for BREAK/CONTINUE + * handling because it has a measurable performance impact in ordinary + * environments and an extreme impact in Emscripten (GH-342). + */ +DUK_LOCAL DUK_EXEC_NOINLINE_PERF void duk__handle_break_or_continue(duk_hthread *thr, + duk_uint_t label_id, + duk_small_uint_t lj_type) { + duk_activation *act; + duk_catcher *cat; + + DUK_ASSERT(thr != NULL); + + /* Find a matching label catcher or 'finally' catcher in + * the same function, unwinding catchers as we go. + * + * A label catcher must always exist and will match unless + * a 'finally' captures the break/continue first. It is the + * compiler's responsibility to ensure that labels are used + * correctly. + */ + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + + for (;;) { + cat = act->cat; + if (cat == NULL) { + break; + } + + DUK_DDD(DUK_DDDPRINT("considering catcher %p: type=%ld label=%ld", + (void *) cat, + (long) DUK_CAT_GET_TYPE(cat), + (long) DUK_CAT_GET_LABEL(cat))); + + /* XXX: bit mask test; FINALLY <-> TCF, single bit mask would suffice? */ + + if (DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_TCF && + DUK_CAT_HAS_FINALLY_ENABLED(cat)) { + duk_tval tv_tmp; + + DUK_TVAL_SET_U32(&tv_tmp, (duk_uint32_t) label_id); + duk__handle_finally(thr, &tv_tmp, lj_type); + + DUK_DD(DUK_DDPRINT("-> break/continue caught by 'finally', restart execution")); + return; + } + if (DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_LABEL && + (duk_uint_t) DUK_CAT_GET_LABEL(cat) == label_id) { + duk__handle_label(thr, lj_type); + + DUK_DD(DUK_DDPRINT("-> break/continue caught by a label catcher (in the same function), restart execution")); + return; + } + + duk_hthread_catcher_unwind_norz(thr, act); + } + + /* Should never happen, but be robust. */ + DUK_D(DUK_DPRINT("-> break/continue not caught by anything in the current function (should never happen), throw internal error")); + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); +} + +/* Handle a RETURN opcode. Avoid using longjmp() for return handling because + * it has a measurable performance impact in ordinary environments and an extreme + * impact in Emscripten (GH-342). Return value is on value stack top. + */ +DUK_LOCAL duk_small_uint_t duk__handle_return(duk_hthread *thr, duk_activation *entry_act) { + duk_tval *tv1; + duk_tval *tv2; +#if defined(DUK_USE_COROUTINE_SUPPORT) + duk_hthread *resumer; +#endif + duk_activation *act; + duk_catcher *cat; + + /* We can directly access value stack here. */ + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(entry_act != NULL); + DUK_ASSERT(thr->valstack_top - 1 >= thr->valstack_bottom); + tv1 = thr->valstack_top - 1; + DUK_TVAL_CHKFAST_INPLACE_FAST(tv1); /* fastint downgrade check for return values */ + + /* + * Four possible outcomes: + * + * 1. A 'finally' in the same function catches the 'return'. + * It may continue to propagate when 'finally' is finished, + * or it may be neutralized by 'finally' (both handled by + * ENDFIN). + * + * 2. The return happens at the entry level of the bytecode + * executor, so return from the executor (in C stack). + * + * 3. There is a calling (ECMAScript) activation in the call + * stack => return to it, in the same executor instance. + * + * 4. There is no calling activation, and the thread is + * terminated. There is always a resumer in this case, + * which gets the return value similarly to a 'yield' + * (except that the current thread can no longer be + * resumed). + */ + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->callstack_top >= 1); + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + + for (;;) { + cat = act->cat; + if (cat == NULL) { + break; + } + + if (DUK_CAT_GET_TYPE(cat) == DUK_CAT_TYPE_TCF && + DUK_CAT_HAS_FINALLY_ENABLED(cat)) { + DUK_ASSERT(thr->valstack_top - 1 >= thr->valstack_bottom); + duk__handle_finally(thr, thr->valstack_top - 1, DUK_LJ_TYPE_RETURN); + + DUK_DD(DUK_DDPRINT("-> return caught by 'finally', restart execution")); + return DUK__RETHAND_RESTART; + } + + duk_hthread_catcher_unwind_norz(thr, act); + } + + if (act == entry_act) { + /* Return to the bytecode executor caller who will unwind stacks + * and handle constructor post-processing. + * Return value is already on the stack top: [ ... retval ]. + */ + + DUK_DDD(DUK_DDDPRINT("-> return propagated up to entry level, exit bytecode executor")); + return DUK__RETHAND_FINISHED; + } + + if (thr->callstack_top >= 2) { + /* There is a caller; it MUST be an ECMAScript caller (otherwise it would + * match entry_act check). + */ + DUK_DDD(DUK_DDDPRINT("return to ECMAScript caller, retval_byteoff=%ld, lj_value1=%!T", + (long) (thr->callstack_curr->parent->retval_byteoff), + (duk_tval *) &thr->heap->lj.value1)); + + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(thr->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr->parent))); /* must be ECMAScript */ + +#if defined(DUK_USE_ES6_PROXY) + if (thr->callstack_curr->flags & (DUK_ACT_FLAG_CONSTRUCT | DUK_ACT_FLAG_CONSTRUCT_PROXY)) { + duk_call_construct_postprocess(thr, thr->callstack_curr->flags & DUK_ACT_FLAG_CONSTRUCT_PROXY); /* side effects */ + } +#else + if (thr->callstack_curr->flags & DUK_ACT_FLAG_CONSTRUCT) { + duk_call_construct_postprocess(thr, 0); /* side effects */ + } +#endif + + tv1 = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + thr->callstack_curr->parent->retval_byteoff); + DUK_ASSERT(thr->valstack_top - 1 >= thr->valstack_bottom); + tv2 = thr->valstack_top - 1; + DUK_TVAL_SET_TVAL_UPDREF(thr, tv1, tv2); /* side effects */ + + /* Catch stack unwind happens inline in callstack unwind. */ + duk_hthread_activation_unwind_norz(thr); + + duk__reconfig_valstack_ecma_return(thr); + + DUK_DD(DUK_DDPRINT("-> return not intercepted, restart execution in caller")); + return DUK__RETHAND_RESTART; + } + +#if defined(DUK_USE_COROUTINE_SUPPORT) + DUK_DD(DUK_DDPRINT("no calling activation, thread finishes (similar to yield)")); + + DUK_ASSERT(thr->resumer != NULL); + DUK_ASSERT(thr->resumer->callstack_top >= 2); /* ECMAScript activation + Duktape.Thread.resume() activation */ + DUK_ASSERT(thr->resumer->callstack_curr != NULL); + DUK_ASSERT(thr->resumer->callstack_curr->parent != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->resumer->callstack_curr) != NULL && + DUK_HOBJECT_IS_NATFUNC(DUK_ACT_GET_FUNC(thr->resumer->callstack_curr)) && + ((duk_hnatfunc *) DUK_ACT_GET_FUNC(thr->resumer->callstack_curr))->func == duk_bi_thread_resume); /* Duktape.Thread.resume() */ + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->resumer->callstack_curr->parent) != NULL && + DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->resumer->callstack_curr->parent))); /* an ECMAScript function */ + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_RUNNING); + DUK_ASSERT(thr->resumer->state == DUK_HTHREAD_STATE_RESUMED); + + resumer = thr->resumer; + + /* Share yield longjmp handler. + * + * This sequence of steps is a bit fragile (see GH-1845): + * - We need the return value from 'thr' (resumed thread) value stack. + * The termination unwinds its value stack, losing the value. + * - We need a refcounted reference for 'thr', which may only exist + * in the caller value stack. We can't unwind or reconfigure the + * caller's value stack without potentially freeing 'thr'. + * + * Current approach is to capture the 'thr' return value and store + * a reference to 'thr' in the caller value stack temporarily. This + * keeps 'thr' reachable until final yield/return handling which + * removes the references atomatically. + */ + + DUK_ASSERT(thr->valstack_top - 1 >= thr->valstack_bottom); + duk_hthread_activation_unwind_norz(resumer); /* May remove last reference to 'thr', but is NORZ. */ + duk_push_tval(resumer, thr->valstack_top - 1); /* Capture return value, side effect free. */ + duk_push_hthread(resumer, thr); /* Make 'thr' reachable again, before side effects. */ + + duk_hthread_terminate(thr); /* Updates thread state, minimizes its allocations. */ + thr->resumer = NULL; + DUK_HTHREAD_DECREF(thr, resumer); + DUK_ASSERT(thr->state == DUK_HTHREAD_STATE_TERMINATED); + + resumer->state = DUK_HTHREAD_STATE_RUNNING; + DUK_HEAP_SWITCH_THREAD(thr->heap, resumer); + + DUK_ASSERT(resumer->valstack_top - 2 >= resumer->valstack_bottom); + duk__handle_yield(thr, resumer, resumer->valstack_top - 2); + thr = NULL; /* 'thr' invalidated by call */ + +#if 0 + thr = resumer; /* not needed */ +#endif + + DUK_DD(DUK_DDPRINT("-> return not caught, thread terminated; handle like yield, restart execution in resumer")); + return DUK__RETHAND_RESTART; +#else + /* Without coroutine support this case should never happen. */ + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return 0;); +#endif +} + +/* + * Executor interrupt handling + * + * The handler is called whenever the interrupt countdown reaches zero + * (or below). The handler must perform whatever checks are activated, + * e.g. check for cumulative step count to impose an execution step + * limit or check for breakpoints or other debugger interaction. + * + * When the actions are done, the handler must reinit the interrupt + * init and counter values. The 'init' value must indicate how many + * bytecode instructions are executed before the next interrupt. The + * counter must interface with the bytecode executor loop. Concretely, + * the new init value is normally one higher than the new counter value. + * For instance, to execute exactly one bytecode instruction the init + * value is set to 1 and the counter to 0. If an error is thrown by the + * interrupt handler, the counters are set to the same value (e.g. both + * to 0 to cause an interrupt when the next bytecode instruction is about + * to be executed after error handling). + * + * Maintaining the init/counter value properly is important for accurate + * behavior. For instance, executor step limit needs a cumulative step + * count which is simply computed as a sum of 'init' values. This must + * work accurately even when single stepping. + */ + +#if defined(DUK_USE_INTERRUPT_COUNTER) + +#define DUK__INT_NOACTION 0 /* no specific action, resume normal execution */ +#define DUK__INT_RESTART 1 /* must "goto restart_execution", e.g. breakpoints changed */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_LOCAL void duk__interrupt_handle_debugger(duk_hthread *thr, duk_bool_t *out_immediate, duk_small_uint_t *out_interrupt_retval) { + duk_activation *act; + duk_breakpoint *bp; + duk_breakpoint **bp_active; + duk_uint_fast32_t line = 0; + duk_bool_t process_messages; + duk_bool_t processed_messages = 0; + + DUK_ASSERT(thr->heap->dbg_processing == 0); /* don't re-enter e.g. during Eval */ + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + + /* It might seem that replacing 'thr->heap' with just 'heap' below + * might be a good idea, but it increases code size slightly + * (probably due to unnecessary spilling) at least on x64. + */ + + /* + * Single opcode step check + */ + + if (thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_ONE_OPCODE_ACTIVE) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by one opcode step")); + duk_debug_set_paused(thr->heap); + } + + /* + * Breakpoint and step state checks + */ + + if (act->flags & DUK_ACT_FLAG_BREAKPOINT_ACTIVE || + (thr->heap->dbg_pause_act == thr->callstack_curr)) { + line = duk_debug_curr_line(thr); + + if (act->prev_line != line) { + /* Stepped? Step out is handled by callstack unwind. */ + if ((thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_LINE_CHANGE) && + (thr->heap->dbg_pause_act == thr->callstack_curr) && + (line != thr->heap->dbg_pause_startline)) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by line change, at line %ld", + (long) line)); + duk_debug_set_paused(thr->heap); + } + + /* Check for breakpoints only on line transition. + * Breakpoint is triggered when we enter the target + * line from a different line, and the previous line + * was within the same function. + * + * This condition is tricky: the condition used to be + * that transition to -or across- the breakpoint line + * triggered the breakpoint. This seems intuitively + * better because it handles breakpoints on lines with + * no emitted opcodes; but this leads to the issue + * described in: https://github.com/svaarala/duktape/issues/263. + */ + bp_active = thr->heap->dbg_breakpoints_active; + for (;;) { + bp = *bp_active++; + if (bp == NULL) { + break; + } + + DUK_ASSERT(bp->filename != NULL); + if (act->prev_line != bp->line && line == bp->line) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by breakpoint at %!O:%ld", + (duk_heaphdr *) bp->filename, (long) bp->line)); + duk_debug_set_paused(thr->heap); + } + } + } else { + ; + } + + act->prev_line = (duk_uint32_t) line; + } + + /* + * Rate limit check for sending status update or peeking into + * the debug transport. Both can be expensive operations that + * we don't want to do on every opcode. + * + * Making sure the interval remains reasonable on a wide variety + * of targets and bytecode is difficult without a timestamp, so + * we use a Date-provided timestamp for the rate limit check. + * But since it's also expensive to get a timestamp, a bytecode + * counter is used to rate limit getting timestamps. + */ + + process_messages = 0; + if (thr->heap->dbg_state_dirty || DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap) || thr->heap->dbg_detaching) { + /* Enter message processing loop for sending Status notifys and + * to finish a pending detach. + */ + process_messages = 1; + } + + /* XXX: remove heap->dbg_exec_counter, use heap->inst_count_interrupt instead? */ + DUK_ASSERT(thr->interrupt_init >= 0); + thr->heap->dbg_exec_counter += (duk_uint_t) thr->interrupt_init; + if (thr->heap->dbg_exec_counter - thr->heap->dbg_last_counter >= DUK_HEAP_DBG_RATELIMIT_OPCODES) { + /* Overflow of the execution counter is fine and doesn't break + * anything here. + */ + + duk_double_t now, diff_last; + + thr->heap->dbg_last_counter = thr->heap->dbg_exec_counter; + now = duk_time_get_monotonic_time(thr); + + diff_last = now - thr->heap->dbg_last_time; + if (diff_last < 0.0 || diff_last >= (duk_double_t) DUK_HEAP_DBG_RATELIMIT_MILLISECS) { + /* Monotonic time should not experience time jumps, + * but the provider may be missing and we're actually + * using ECMAScript time. So, tolerate negative values + * so that a time jump works reasonably. + * + * Same interval is now used for status sending and + * peeking. + */ + + thr->heap->dbg_last_time = now; + thr->heap->dbg_state_dirty = 1; + process_messages = 1; + } + } + + /* + * Process messages and send status if necessary. + * + * If we're paused, we'll block for new messages. If we're not + * paused, we'll process anything we can peek but won't block + * for more. Detach (and re-attach) handling is all localized + * to duk_debug_process_messages() too. + * + * Debugger writes outside the message loop may cause debugger + * detach1 phase to run, after which dbg_read_cb == NULL and + * dbg_detaching != 0. The message loop will finish the detach + * by running detach2 phase, so enter the message loop also when + * detaching. + */ + + if (process_messages) { + DUK_ASSERT(thr->heap->dbg_processing == 0); + processed_messages = duk_debug_process_messages(thr, 0 /*no_block*/); + DUK_ASSERT(thr->heap->dbg_processing == 0); + } + + /* Continue checked execution if there are breakpoints or we're stepping. + * Also use checked execution if paused flag is active - it shouldn't be + * because the debug message loop shouldn't terminate if it was. Step out + * is handled by callstack unwind and doesn't need checked execution. + * Note that debugger may have detached due to error or explicit request + * above, so we must recheck attach status. + */ + + if (duk_debug_is_attached(thr->heap)) { + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + if (act->flags & DUK_ACT_FLAG_BREAKPOINT_ACTIVE || + (thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_ONE_OPCODE) || + ((thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_LINE_CHANGE) && + thr->heap->dbg_pause_act == thr->callstack_curr) || + DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap)) { + *out_immediate = 1; + } + + /* If we processed any debug messages breakpoints may have + * changed; restart execution to re-check active breakpoints. + */ + if (processed_messages) { + DUK_D(DUK_DPRINT("processed debug messages, restart execution to recheck possibly changed breakpoints")); + *out_interrupt_retval = DUK__INT_RESTART; + } else { + if (thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_ONE_OPCODE) { + /* Set 'pause after one opcode' active only when we're + * actually just about to execute code. + */ + thr->heap->dbg_pause_flags |= DUK_PAUSE_FLAG_ONE_OPCODE_ACTIVE; + } + } + } else { + DUK_D(DUK_DPRINT("debugger became detached, resume normal execution")); + } +} +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF DUK_COLD duk_small_uint_t duk__executor_interrupt(duk_hthread *thr) { + duk_int_t ctr; + duk_activation *act; + duk_hcompfunc *fun; + duk_bool_t immediate = 0; + duk_small_uint_t retval; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->heap != NULL); + DUK_ASSERT(thr->callstack_top > 0); + +#if defined(DUK_USE_DEBUG) + thr->heap->inst_count_interrupt += thr->interrupt_init; + DUK_DD(DUK_DDPRINT("execution interrupt, counter=%ld, init=%ld, " + "instruction counts: executor=%ld, interrupt=%ld", + (long) thr->interrupt_counter, (long) thr->interrupt_init, + (long) thr->heap->inst_count_exec, (long) thr->heap->inst_count_interrupt)); +#endif + + retval = DUK__INT_NOACTION; + ctr = DUK_HTHREAD_INTCTR_DEFAULT; + + /* + * Avoid nested calls. Concretely this happens during debugging, e.g. + * when we eval() an expression. + * + * Also don't interrupt if we're currently doing debug processing + * (which can be initiated outside the bytecode executor) as this + * may cause the debugger to be called recursively. Check required + * for correct operation of throw intercept and other "exotic" halting + * scenarios. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (DUK_HEAP_HAS_INTERRUPT_RUNNING(thr->heap) || thr->heap->dbg_processing) { +#else + if (DUK_HEAP_HAS_INTERRUPT_RUNNING(thr->heap)) { +#endif + DUK_DD(DUK_DDPRINT("nested executor interrupt, ignoring")); + + /* Set a high interrupt counter; the original executor + * interrupt invocation will rewrite before exiting. + */ + thr->interrupt_init = ctr; + thr->interrupt_counter = ctr - 1; + return DUK__INT_NOACTION; + } + DUK_HEAP_SET_INTERRUPT_RUNNING(thr->heap); + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + + fun = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC((duk_hobject *) fun)); + + DUK_UNREF(fun); + +#if defined(DUK_USE_EXEC_TIMEOUT_CHECK) + /* + * Execution timeout check + */ + + if (DUK_USE_EXEC_TIMEOUT_CHECK(thr->heap->heap_udata)) { + /* Keep throwing an error whenever we get here. The unusual values + * are set this way because no instruction is ever executed, we just + * throw an error until all try/catch/finally and other catchpoints + * have been exhausted. Duktape/C code gets control at each protected + * call but whenever it enters back into Duktape the RangeError gets + * raised. User exec timeout check must consistently indicate a timeout + * until we've fully bubbled out of Duktape. + */ + DUK_D(DUK_DPRINT("execution timeout, throwing a RangeError")); + thr->interrupt_init = 0; + thr->interrupt_counter = 0; + DUK_HEAP_CLEAR_INTERRUPT_RUNNING(thr->heap); + DUK_ERROR_RANGE(thr, "execution timeout"); + DUK_WO_NORETURN(return 0;); + } +#endif /* DUK_USE_EXEC_TIMEOUT_CHECK */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (!thr->heap->dbg_processing && + (thr->heap->dbg_read_cb != NULL || thr->heap->dbg_detaching)) { + /* Avoid recursive re-entry; enter when we're attached or + * detaching (to finish off the pending detach). + */ + duk__interrupt_handle_debugger(thr, &immediate, &retval); + DUK_ASSERT(act == thr->callstack_curr); + } +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + + /* + * Update the interrupt counter + */ + + if (immediate) { + /* Cause an interrupt after executing one instruction. */ + ctr = 1; + } + + /* The counter value is one less than the init value: init value should + * indicate how many instructions are executed before interrupt. To + * execute 1 instruction (after interrupt handler return), counter must + * be 0. + */ + DUK_ASSERT(ctr >= 1); + thr->interrupt_init = ctr; + thr->interrupt_counter = ctr - 1; + DUK_HEAP_CLEAR_INTERRUPT_RUNNING(thr->heap); + + return retval; +} +#endif /* DUK_USE_INTERRUPT_COUNTER */ + +/* + * Debugger handling for executor restart + * + * Check for breakpoints, stepping, etc, and figure out if we should execute + * in checked or normal mode. Note that we can't do this when an activation + * is created, because breakpoint status (and stepping status) may change + * later, so we must recheck every time we're executing an activation. + * This primitive should be side effect free to avoid changes during check. + */ + +#if defined(DUK_USE_DEBUGGER_SUPPORT) +DUK_LOCAL void duk__executor_recheck_debugger(duk_hthread *thr, duk_activation *act, duk_hcompfunc *fun) { + duk_heap *heap; + duk_tval *tv_tmp; + duk_hstring *filename; + duk_small_uint_t bp_idx; + duk_breakpoint **bp_active; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(act != NULL); + DUK_ASSERT(fun != NULL); + + heap = thr->heap; + bp_active = heap->dbg_breakpoints_active; + act->flags &= ~DUK_ACT_FLAG_BREAKPOINT_ACTIVE; + + tv_tmp = duk_hobject_find_entry_tval_ptr_stridx(thr->heap, (duk_hobject *) fun, DUK_STRIDX_FILE_NAME); + if (tv_tmp && DUK_TVAL_IS_STRING(tv_tmp)) { + filename = DUK_TVAL_GET_STRING(tv_tmp); + + /* Figure out all active breakpoints. A breakpoint is + * considered active if the current function's fileName + * matches the breakpoint's fileName, AND there is no + * inner function that has matching line numbers + * (otherwise a breakpoint would be triggered both + * inside and outside of the inner function which would + * be confusing). Example: + * + * function foo() { + * print('foo'); + * function bar() { <-. breakpoints in these + * print('bar'); | lines should not affect + * } <-' foo() execution + * bar(); + * } + * + * We need a few things that are only available when + * debugger support is enabled: (1) a line range for + * each function, and (2) access to the function + * template to access the inner functions (and their + * line ranges). + * + * It's important to have a narrow match for active + * breakpoints so that we don't enter checked execution + * when that's not necessary. For instance, if we're + * running inside a certain function and there's + * breakpoint outside in (after the call site), we + * don't want to slow down execution of the function. + */ + + for (bp_idx = 0; bp_idx < heap->dbg_breakpoint_count; bp_idx++) { + duk_breakpoint *bp = heap->dbg_breakpoints + bp_idx; + duk_hobject **funcs, **funcs_end; + duk_hcompfunc *inner_fun; + duk_bool_t bp_match; + + if (bp->filename == filename && + bp->line >= fun->start_line && bp->line <= fun->end_line) { + bp_match = 1; + DUK_DD(DUK_DDPRINT("breakpoint filename and line match: " + "%s:%ld vs. %s (line %ld vs. %ld-%ld)", + DUK_HSTRING_GET_DATA(bp->filename), + (long) bp->line, + DUK_HSTRING_GET_DATA(filename), + (long) bp->line, + (long) fun->start_line, + (long) fun->end_line)); + + funcs = DUK_HCOMPFUNC_GET_FUNCS_BASE(thr->heap, fun); + funcs_end = DUK_HCOMPFUNC_GET_FUNCS_END(thr->heap, fun); + while (funcs != funcs_end) { + inner_fun = (duk_hcompfunc *) *funcs; + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) inner_fun)); + if (bp->line >= inner_fun->start_line && bp->line <= inner_fun->end_line) { + DUK_DD(DUK_DDPRINT("inner function masks ('captures') breakpoint")); + bp_match = 0; + break; + } + funcs++; + } + + if (bp_match) { + /* No need to check for size of bp_active list, + * it's always larger than maximum number of + * breakpoints. + */ + act->flags |= DUK_ACT_FLAG_BREAKPOINT_ACTIVE; + *bp_active = heap->dbg_breakpoints + bp_idx; + bp_active++; + } + } + } + } + + *bp_active = NULL; /* terminate */ + + DUK_DD(DUK_DDPRINT("ACTIVE BREAKPOINTS: %ld", (long) (bp_active - thr->heap->dbg_breakpoints_active))); + + /* Force pause if we were doing "step into" in another activation. */ + if ((thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_FUNC_ENTRY) && + thr->heap->dbg_pause_act != thr->callstack_curr) { + DUK_D(DUK_DPRINT("PAUSE TRIGGERED by function entry")); + duk_debug_set_paused(thr->heap); + } + + /* Force interrupt right away if we're paused or in "checked mode". + * Step out is handled by callstack unwind. + */ + if ((act->flags & DUK_ACT_FLAG_BREAKPOINT_ACTIVE) || + DUK_HEAP_HAS_DEBUGGER_PAUSED(thr->heap) || + ((thr->heap->dbg_pause_flags & DUK_PAUSE_FLAG_LINE_CHANGE) && + thr->heap->dbg_pause_act == thr->callstack_curr)) { + /* We'll need to interrupt early so recompute the init + * counter to reflect the number of bytecode instructions + * executed so that step counts for e.g. debugger rate + * limiting are accurate. + */ + DUK_ASSERT(thr->interrupt_counter <= thr->interrupt_init); + thr->interrupt_init = thr->interrupt_init - thr->interrupt_counter; + thr->interrupt_counter = 0; + } +} +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +/* + * Opcode handlers for opcodes with a lot of code and which are relatively + * rare; NOINLINE to reduce amount of code in main bytecode dispatcher. + */ + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF void duk__handle_op_initset_initget(duk_hthread *thr, duk_uint_fast32_t ins) { + duk_bool_t is_set = (DUK_DEC_OP(ins) == DUK_OP_INITSET); + duk_uint_fast_t idx; + duk_uint_t defprop_flags; + + /* A -> object register (acts as a source) + * BC -> BC+0 contains key, BC+1 closure (value) + */ + + /* INITSET/INITGET are only used to initialize object literal keys. + * There may be a previous propery in ES2015 because duplicate property + * names are allowed. + */ + + /* This could be made more optimal by accessing internals directly. */ + + idx = (duk_uint_fast_t) DUK_DEC_BC(ins); + duk_dup(thr, (duk_idx_t) (idx + 0)); /* key */ + duk_dup(thr, (duk_idx_t) (idx + 1)); /* getter/setter */ + if (is_set) { + defprop_flags = DUK_DEFPROP_HAVE_SETTER | + DUK_DEFPROP_FORCE | + DUK_DEFPROP_SET_ENUMERABLE | + DUK_DEFPROP_SET_CONFIGURABLE; + } else { + defprop_flags = DUK_DEFPROP_HAVE_GETTER | + DUK_DEFPROP_FORCE | + DUK_DEFPROP_SET_ENUMERABLE | + DUK_DEFPROP_SET_CONFIGURABLE; + } + duk_def_prop(thr, (duk_idx_t) DUK_DEC_A(ins), defprop_flags); +} + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF void duk__handle_op_trycatch(duk_hthread *thr, duk_uint_fast32_t ins, duk_instr_t *curr_pc) { + duk_activation *act; + duk_catcher *cat; + duk_tval *tv1; + duk_small_uint_fast_t a; + duk_small_uint_fast_t bc; + + /* A -> flags + * BC -> reg_catch; base register for two registers used both during + * trycatch setup and when catch is triggered + * + * If DUK_BC_TRYCATCH_FLAG_CATCH_BINDING set: + * reg_catch + 0: catch binding variable name (string). + * Automatic declarative environment is established for + * the duration of the 'catch' clause. + * + * If DUK_BC_TRYCATCH_FLAG_WITH_BINDING set: + * reg_catch + 0: with 'target value', which is coerced to + * an object and then used as a bindind object for an + * environment record. The binding is initialized here, for + * the 'try' clause. + * + * Note that a TRYCATCH generated for a 'with' statement has no + * catch or finally parts. + */ + + /* XXX: TRYCATCH handling should be reworked to avoid creating + * an explicit scope unless it is actually needed (e.g. function + * instances or eval is executed inside the catch block). This + * rework is not trivial because the compiler doesn't have an + * intermediate representation. When the rework is done, the + * opcode format can also be made more straightforward. + */ + + /* XXX: side effect handling is quite awkward here */ + + DUK_DDD(DUK_DDDPRINT("TRYCATCH: reg_catch=%ld, have_catch=%ld, " + "have_finally=%ld, catch_binding=%ld, with_binding=%ld (flags=0x%02lx)", + (long) DUK_DEC_BC(ins), + (long) (DUK_DEC_A(ins) & DUK_BC_TRYCATCH_FLAG_HAVE_CATCH ? 1 : 0), + (long) (DUK_DEC_A(ins) & DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY ? 1 : 0), + (long) (DUK_DEC_A(ins) & DUK_BC_TRYCATCH_FLAG_CATCH_BINDING ? 1 : 0), + (long) (DUK_DEC_A(ins) & DUK_BC_TRYCATCH_FLAG_WITH_BINDING ? 1 : 0), + (unsigned long) DUK_DEC_A(ins))); + + a = DUK_DEC_A(ins); + bc = DUK_DEC_BC(ins); + + /* Registers 'bc' and 'bc + 1' are written in longjmp handling + * and if their previous values (which are temporaries) become + * unreachable -and- have a finalizer, there'll be a function + * call during error handling which is not supported now (GH-287). + * Ensure that both 'bc' and 'bc + 1' have primitive values to + * guarantee no finalizer calls in error handling. Scrubbing also + * ensures finalizers for the previous values run here rather than + * later. Error handling related values are also written to 'bc' + * and 'bc + 1' but those values never become unreachable during + * error handling, so there's no side effect problem even if the + * error value has a finalizer. + */ + duk_dup(thr, (duk_idx_t) bc); /* Stabilize value. */ + duk_to_undefined(thr, (duk_idx_t) bc); + duk_to_undefined(thr, (duk_idx_t) (bc + 1)); + + /* Allocate catcher and populate it. Doesn't have to + * be fully atomic, but the catcher must be in a + * consistent state if side effects (such as finalizer + * calls) occur. + */ + + cat = duk_hthread_catcher_alloc(thr); + DUK_ASSERT(cat != NULL); + + cat->flags = DUK_CAT_TYPE_TCF; + cat->h_varname = NULL; + cat->pc_base = (duk_instr_t *) curr_pc; /* pre-incremented, points to first jump slot */ + cat->idx_base = (duk_size_t) (thr->valstack_bottom - thr->valstack) + bc; + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + cat->parent = act->cat; + act->cat = cat; + + if (a & DUK_BC_TRYCATCH_FLAG_HAVE_CATCH) { + cat->flags |= DUK_CAT_FLAG_CATCH_ENABLED; + } + if (a & DUK_BC_TRYCATCH_FLAG_HAVE_FINALLY) { + cat->flags |= DUK_CAT_FLAG_FINALLY_ENABLED; + } + if (a & DUK_BC_TRYCATCH_FLAG_CATCH_BINDING) { + DUK_DDD(DUK_DDDPRINT("catch binding flag set to catcher")); + cat->flags |= DUK_CAT_FLAG_CATCH_BINDING_ENABLED; + tv1 = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv1)); + + /* borrowed reference; although 'tv1' comes from a register, + * its value was loaded using LDCONST so the constant will + * also exist and be reachable. + */ + cat->h_varname = DUK_TVAL_GET_STRING(tv1); + } else if (a & DUK_BC_TRYCATCH_FLAG_WITH_BINDING) { + duk_hobjenv *env; + duk_hobject *target; + + /* Delayed env initialization for activation (if needed). */ + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + if (act->lex_env == NULL) { + DUK_DDD(DUK_DDDPRINT("delayed environment initialization")); + DUK_ASSERT(act->var_env == NULL); + + duk_js_init_activation_environment_records_delayed(thr, act); + DUK_ASSERT(act == thr->callstack_curr); + DUK_UNREF(act); /* 'act' is no longer accessed, scanbuild fix */ + } + DUK_ASSERT(act->lex_env != NULL); + DUK_ASSERT(act->var_env != NULL); + + /* Coerce 'with' target. */ + target = duk_to_hobject(thr, -1); + DUK_ASSERT(target != NULL); + + /* Create an object environment; it is not pushed + * so avoid side effects very carefully until it is + * referenced. + */ + env = duk_hobjenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJENV)); + DUK_ASSERT(env != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) env) == NULL); + env->target = target; /* always provideThis=true */ + DUK_HOBJECT_INCREF(thr, target); + env->has_this = 1; + DUK_HOBJENV_ASSERT_VALID(env); + DUK_DDD(DUK_DDDPRINT("environment for with binding: %!iO", env)); + + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) env) == NULL); + DUK_ASSERT(act->lex_env != NULL); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, (duk_hobject *) env, act->lex_env); + act->lex_env = (duk_hobject *) env; /* Now reachable. */ + DUK_HOBJECT_INCREF(thr, (duk_hobject *) env); + /* Net refcount change to act->lex_env is 0: incref for env's + * prototype, decref for act->lex_env overwrite. + */ + + /* Set catcher lex_env active (affects unwind) + * only when the whole setup is complete. + */ + cat = act->cat; /* XXX: better to relookup? not mandatory because 'cat' is stable */ + cat->flags |= DUK_CAT_FLAG_LEXENV_ACTIVE; + } else { + ; + } + + DUK_DDD(DUK_DDDPRINT("TRYCATCH catcher: flags=0x%08lx, pc_base=%ld, " + "idx_base=%ld, h_varname=%!O", + (unsigned long) cat->flags, + (long) cat->pc_base, (long) cat->idx_base, (duk_heaphdr *) cat->h_varname)); + + duk_pop_unsafe(thr); +} + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF duk_instr_t *duk__handle_op_endtry(duk_hthread *thr, duk_uint_fast32_t ins) { + duk_activation *act; + duk_catcher *cat; + duk_tval *tv1; + duk_instr_t *pc_base; + + DUK_UNREF(ins); + + DUK_ASSERT(thr->callstack_top >= 1); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + cat = act->cat; + DUK_ASSERT(cat != NULL); + DUK_ASSERT(DUK_CAT_GET_TYPE(act->cat) == DUK_CAT_TYPE_TCF); + + DUK_DDD(DUK_DDDPRINT("ENDTRY: clearing catch active flag (regardless of whether it was set or not)")); + DUK_CAT_CLEAR_CATCH_ENABLED(cat); + + pc_base = cat->pc_base; + + if (DUK_CAT_HAS_FINALLY_ENABLED(cat)) { + DUK_DDD(DUK_DDDPRINT("ENDTRY: finally part is active, jump through 2nd jump slot with 'normal continuation'")); + + tv1 = thr->valstack + cat->idx_base; + DUK_ASSERT(tv1 >= thr->valstack && tv1 < thr->valstack_top); + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv1); /* side effects */ + tv1 = NULL; + + tv1 = thr->valstack + cat->idx_base + 1; + DUK_ASSERT(tv1 >= thr->valstack && tv1 < thr->valstack_top); + DUK_TVAL_SET_U32_UPDREF(thr, tv1, (duk_uint32_t) DUK_LJ_TYPE_NORMAL); /* side effects */ + tv1 = NULL; + + DUK_CAT_CLEAR_FINALLY_ENABLED(cat); + } else { + DUK_DDD(DUK_DDDPRINT("ENDTRY: no finally part, dismantle catcher, jump through 2nd jump slot (to end of statement)")); + + duk_hthread_catcher_unwind_norz(thr, act); /* lexenv may be set for 'with' binding */ + /* no need to unwind callstack */ + } + + return pc_base + 1; /* new curr_pc value */ +} + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF duk_instr_t *duk__handle_op_endcatch(duk_hthread *thr, duk_uint_fast32_t ins) { + duk_activation *act; + duk_catcher *cat; + duk_tval *tv1; + duk_instr_t *pc_base; + + DUK_UNREF(ins); + + DUK_ASSERT(thr->callstack_top >= 1); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + cat = act->cat; + DUK_ASSERT(cat != NULL); + DUK_ASSERT(!DUK_CAT_HAS_CATCH_ENABLED(cat)); /* cleared before entering catch part */ + + if (DUK_CAT_HAS_LEXENV_ACTIVE(cat)) { + duk_hobject *prev_env; + + /* 'with' binding has no catch clause, so can't be here unless a normal try-catch */ + DUK_ASSERT(DUK_CAT_HAS_CATCH_BINDING_ENABLED(cat)); + DUK_ASSERT(act->lex_env != NULL); + + DUK_DDD(DUK_DDDPRINT("ENDCATCH: popping catcher part lexical environment")); + + prev_env = act->lex_env; + DUK_ASSERT(prev_env != NULL); + act->lex_env = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, prev_env); + DUK_CAT_CLEAR_LEXENV_ACTIVE(cat); + DUK_HOBJECT_INCREF(thr, act->lex_env); + DUK_HOBJECT_DECREF(thr, prev_env); /* side effects */ + + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + } + + pc_base = cat->pc_base; + + if (DUK_CAT_HAS_FINALLY_ENABLED(cat)) { + DUK_DDD(DUK_DDDPRINT("ENDCATCH: finally part is active, jump through 2nd jump slot with 'normal continuation'")); + + tv1 = thr->valstack + cat->idx_base; + DUK_ASSERT(tv1 >= thr->valstack && tv1 < thr->valstack_top); + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv1); /* side effects */ + tv1 = NULL; + + tv1 = thr->valstack + cat->idx_base + 1; + DUK_ASSERT(tv1 >= thr->valstack && tv1 < thr->valstack_top); + DUK_TVAL_SET_U32_UPDREF(thr, tv1, (duk_uint32_t) DUK_LJ_TYPE_NORMAL); /* side effects */ + tv1 = NULL; + + DUK_CAT_CLEAR_FINALLY_ENABLED(cat); + } else { + DUK_DDD(DUK_DDDPRINT("ENDCATCH: no finally part, dismantle catcher, jump through 2nd jump slot (to end of statement)")); + + duk_hthread_catcher_unwind_norz(thr, act); + /* no need to unwind callstack */ + } + + return pc_base + 1; /* new curr_pc value */ +} + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF duk_small_uint_t duk__handle_op_endfin(duk_hthread *thr, duk_uint_fast32_t ins, duk_activation *entry_act) { + duk_activation *act; + duk_tval *tv1; + duk_uint_t reg_catch; + duk_small_uint_t cont_type; + duk_small_uint_t ret_result; + + DUK_ASSERT(thr->ptr_curr_pc == NULL); + DUK_ASSERT(thr->callstack_top >= 1); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + reg_catch = DUK_DEC_ABC(ins); + + /* CATCH flag may be enabled or disabled here; it may be enabled if + * the statement has a catch block but the try block does not throw + * an error. + */ + + DUK_DDD(DUK_DDDPRINT("ENDFIN: completion value=%!T, type=%!T", + (duk_tval *) (thr->valstack_bottom + reg_catch + 0), + (duk_tval *) (thr->valstack_bottom + reg_catch + 1))); + + tv1 = thr->valstack_bottom + reg_catch + 1; /* type */ + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv1)); +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv1)); + cont_type = (duk_small_uint_t) DUK_TVAL_GET_FASTINT_U32(tv1); +#else + cont_type = (duk_small_uint_t) DUK_TVAL_GET_NUMBER(tv1); +#endif + + tv1--; /* value */ + + switch (cont_type) { + case DUK_LJ_TYPE_NORMAL: { + DUK_DDD(DUK_DDDPRINT("ENDFIN: finally part finishing with 'normal' (non-abrupt) completion -> " + "dismantle catcher, resume execution after ENDFIN")); + + duk_hthread_catcher_unwind_norz(thr, act); + /* no need to unwind callstack */ + return 0; /* restart execution */ + } + case DUK_LJ_TYPE_RETURN: { + DUK_DDD(DUK_DDDPRINT("ENDFIN: finally part finishing with 'return' complation -> dismantle " + "catcher, handle return, lj.value1=%!T", tv1)); + + /* Not necessary to unwind catch stack: return handling will + * do it. The finally flag of 'cat' is no longer set. The + * catch flag may be set, but it's not checked by return handling. + */ + + duk_push_tval(thr, tv1); + ret_result = duk__handle_return(thr, entry_act); + if (ret_result == DUK__RETHAND_RESTART) { + return 0; /* restart execution */ + } + DUK_ASSERT(ret_result == DUK__RETHAND_FINISHED); + + DUK_DDD(DUK_DDDPRINT("exiting executor after ENDFIN and RETURN (pseudo) longjmp type")); + return 1; /* exit executor */ + } + case DUK_LJ_TYPE_BREAK: + case DUK_LJ_TYPE_CONTINUE: { + duk_uint_t label_id; + duk_small_uint_t lj_type; + + /* Not necessary to unwind catch stack: break/continue + * handling will do it. The finally flag of 'cat' is + * no longer set. The catch flag may be set, but it's + * not checked by break/continue handling. + */ + + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv1)); +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv1)); + label_id = (duk_small_uint_t) DUK_TVAL_GET_FASTINT_U32(tv1); +#else + label_id = (duk_small_uint_t) DUK_TVAL_GET_NUMBER(tv1); +#endif + lj_type = cont_type; + duk__handle_break_or_continue(thr, label_id, lj_type); + return 0; /* restart execution */ + } + default: { + DUK_DDD(DUK_DDDPRINT("ENDFIN: finally part finishing with abrupt completion, lj_type=%ld -> " + "dismantle catcher, re-throw error", + (long) cont_type)); + + duk_err_setup_ljstate1(thr, (duk_small_uint_t) cont_type, tv1); + /* No debugger Throw notify check on purpose (rethrow). */ + + DUK_ASSERT(thr->heap->lj.jmpbuf_ptr != NULL); /* always in executor */ + duk_err_longjmp(thr); + DUK_UNREACHABLE(); + } + } + + DUK_UNREACHABLE(); + return 0; +} + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF void duk__handle_op_initenum(duk_hthread *thr, duk_uint_fast32_t ins) { + duk_small_uint_t b; + duk_small_uint_t c; + + /* + * Enumeration semantics come from for-in statement, E5 Section 12.6.4. + * If called with 'null' or 'undefined', this opcode returns 'null' as + * the enumerator, which is special cased in NEXTENUM. This simplifies + * the compiler part + */ + + /* B -> register for writing enumerator object + * C -> value to be enumerated (register) + */ + b = DUK_DEC_B(ins); + c = DUK_DEC_C(ins); + + if (duk_is_null_or_undefined(thr, (duk_idx_t) c)) { + duk_push_null(thr); + duk_replace(thr, (duk_idx_t) b); + } else { + duk_dup(thr, (duk_idx_t) c); + duk_to_object(thr, -1); + duk_hobject_enumerator_create(thr, 0 /*enum_flags*/); /* [ ... val ] --> [ ... enum ] */ + duk_replace(thr, (duk_idx_t) b); + } +} + +DUK_LOCAL DUK_EXEC_NOINLINE_PERF duk_small_uint_t duk__handle_op_nextenum(duk_hthread *thr, duk_uint_fast32_t ins) { + duk_small_uint_t b; + duk_small_uint_t c; + duk_small_uint_t pc_skip = 0; + + /* + * NEXTENUM checks whether the enumerator still has unenumerated + * keys. If so, the next key is loaded to the target register + * and the next instruction is skipped. Otherwise the next instruction + * will be executed, jumping out of the enumeration loop. + */ + + /* B -> target register for next key + * C -> enum register + */ + b = DUK_DEC_B(ins); + c = DUK_DEC_C(ins); + + DUK_DDD(DUK_DDDPRINT("NEXTENUM: b->%!T, c->%!T", + (duk_tval *) duk_get_tval(thr, (duk_idx_t) b), + (duk_tval *) duk_get_tval(thr, (duk_idx_t) c))); + + if (duk_is_object(thr, (duk_idx_t) c)) { + /* XXX: assert 'c' is an enumerator */ + duk_dup(thr, (duk_idx_t) c); + if (duk_hobject_enumerator_next(thr, 0 /*get_value*/)) { + /* [ ... enum ] -> [ ... next_key ] */ + DUK_DDD(DUK_DDDPRINT("enum active, next key is %!T, skip jump slot ", + (duk_tval *) duk_get_tval(thr, -1))); + pc_skip = 1; + } else { + /* [ ... enum ] -> [ ... ] */ + DUK_DDD(DUK_DDDPRINT("enum finished, execute jump slot")); + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); /* valstack policy */ + thr->valstack_top++; + } + duk_replace(thr, (duk_idx_t) b); + } else { + /* 'null' enumerator case -> behave as with an empty enumerator */ + DUK_ASSERT(duk_is_null(thr, (duk_idx_t) c)); + DUK_DDD(DUK_DDDPRINT("enum is null, execute jump slot")); + } + + return pc_skip; +} + +/* + * Call handling helpers. + */ + +DUK_LOCAL duk_bool_t duk__executor_handle_call(duk_hthread *thr, duk_idx_t idx, duk_idx_t nargs, duk_small_uint_t call_flags) { + duk_bool_t rc; + + duk_set_top_unsafe(thr, (duk_idx_t) (idx + nargs + 2)); /* [ ... func this arg1 ... argN ] */ + + /* Attempt an Ecma-to-Ecma call setup. If the call + * target is (directly or indirectly) Reflect.construct(), + * the call may change into a constructor call on the fly. + */ + rc = (duk_bool_t) duk_handle_call_unprotected(thr, idx, call_flags); + if (rc != 0) { + /* Ecma-to-ecma call possible, may or may not + * be a tail call. Avoid C recursion by + * reusing current executor instance. + */ + DUK_DDD(DUK_DDDPRINT("ecma-to-ecma call setup possible, restart execution")); + /* curr_pc synced by duk_handle_call_unprotected() */ + DUK_ASSERT(thr->ptr_curr_pc == NULL); + return rc; + } else { + /* Call was handled inline. */ + } + DUK_ASSERT(thr->ptr_curr_pc != NULL); + return rc; +} + +/* + * ECMAScript bytecode executor. + * + * Resume execution for the current thread from its current activation. + * Returns when execution would return from the entry level activation, + * leaving a single return value on top of the stack. Function calls + * and thread resumptions are handled internally. If an error occurs, + * a longjmp() with type DUK_LJ_TYPE_THROW is called on the entry level + * setjmp() jmpbuf. + * + * ECMAScript function calls and coroutine resumptions are handled + * internally (by the outer executor function) without recursive C calls. + * Other function calls are handled using duk_handle_call(), increasing + * C recursion depth. + * + * Abrupt completions (= long control tranfers) are handled either + * directly by reconfiguring relevant stacks and restarting execution, + * or via a longjmp. Longjmp-free handling is preferable for performance + * (especially Emscripten performance), and is used for: break, continue, + * and return. + * + * For more detailed notes, see doc/execution.rst. + * + * Also see doc/code-issues.rst for discussion of setjmp(), longjmp(), + * and volatile. + */ + +/* Presence of 'fun' is config based, there's a marginal performance + * difference and the best option is architecture dependent. + */ +#if defined(DUK_USE_EXEC_FUN_LOCAL) +#define DUK__FUN() fun +#else +#define DUK__FUN() ((duk_hcompfunc *) DUK_ACT_GET_FUNC((thr)->callstack_curr)) +#endif + +/* Strict flag. */ +#define DUK__STRICT() ((duk_small_uint_t) DUK_HOBJECT_HAS_STRICT((duk_hobject *) DUK__FUN())) + +/* Reg/const access macros: these are very footprint and performance sensitive + * so modify with care. Arguments are sometimes evaluated multiple times which + * is not ideal. + */ +#define DUK__REG(x) (*(thr->valstack_bottom + (x))) +#define DUK__REGP(x) (thr->valstack_bottom + (x)) +#define DUK__CONST(x) (*(consts + (x))) +#define DUK__CONSTP(x) (consts + (x)) + +/* Reg/const access macros which take the 32-bit instruction and avoid an + * explicit field decoding step by using shifts and masks. These must be + * kept in sync with duk_js_bytecode.h. The shift/mask values are chosen + * so that 'ins' can be shifted and masked and used as a -byte- offset + * instead of a duk_tval offset which needs further shifting (which is an + * issue on some, but not all, CPUs). + */ +#define DUK__RCBIT_B DUK_BC_REGCONST_B +#define DUK__RCBIT_C DUK_BC_REGCONST_C +#if defined(DUK_USE_EXEC_REGCONST_OPTIMIZE) +#if defined(DUK_USE_PACKED_TVAL) +#define DUK__TVAL_SHIFT 3 /* sizeof(duk_tval) == 8 */ +#else +#define DUK__TVAL_SHIFT 4 /* sizeof(duk_tval) == 16; not always the case so also asserted for */ +#endif +#define DUK__SHIFT_A (DUK_BC_SHIFT_A - DUK__TVAL_SHIFT) +#define DUK__SHIFT_B (DUK_BC_SHIFT_B - DUK__TVAL_SHIFT) +#define DUK__SHIFT_C (DUK_BC_SHIFT_C - DUK__TVAL_SHIFT) +#define DUK__SHIFT_BC (DUK_BC_SHIFT_BC - DUK__TVAL_SHIFT) +#define DUK__MASK_A (DUK_BC_UNSHIFTED_MASK_A << DUK__TVAL_SHIFT) +#define DUK__MASK_B (DUK_BC_UNSHIFTED_MASK_B << DUK__TVAL_SHIFT) +#define DUK__MASK_C (DUK_BC_UNSHIFTED_MASK_C << DUK__TVAL_SHIFT) +#define DUK__MASK_BC (DUK_BC_UNSHIFTED_MASK_BC << DUK__TVAL_SHIFT) +#define DUK__BYTEOFF_A(ins) (((ins) >> DUK__SHIFT_A) & DUK__MASK_A) +#define DUK__BYTEOFF_B(ins) (((ins) >> DUK__SHIFT_B) & DUK__MASK_B) +#define DUK__BYTEOFF_C(ins) (((ins) >> DUK__SHIFT_C) & DUK__MASK_C) +#define DUK__BYTEOFF_BC(ins) (((ins) >> DUK__SHIFT_BC) & DUK__MASK_BC) + +#define DUK__REGP_A(ins) ((duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_bottom + DUK__BYTEOFF_A((ins)))) +#define DUK__REGP_B(ins) ((duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_bottom + DUK__BYTEOFF_B((ins)))) +#define DUK__REGP_C(ins) ((duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_bottom + DUK__BYTEOFF_C((ins)))) +#define DUK__REGP_BC(ins) ((duk_tval *) (void *) ((duk_uint8_t *) thr->valstack_bottom + DUK__BYTEOFF_BC((ins)))) +#define DUK__CONSTP_A(ins) ((duk_tval *) (void *) ((duk_uint8_t *) consts + DUK__BYTEOFF_A((ins)))) +#define DUK__CONSTP_B(ins) ((duk_tval *) (void *) ((duk_uint8_t *) consts + DUK__BYTEOFF_B((ins)))) +#define DUK__CONSTP_C(ins) ((duk_tval *) (void *) ((duk_uint8_t *) consts + DUK__BYTEOFF_C((ins)))) +#define DUK__CONSTP_BC(ins) ((duk_tval *) (void *) ((duk_uint8_t *) consts + DUK__BYTEOFF_BC((ins)))) +#define DUK__REGCONSTP_B(ins) ((duk_tval *) (void *) ((duk_uint8_t *) (((ins) & DUK__RCBIT_B) ? consts : thr->valstack_bottom) + DUK__BYTEOFF_B((ins)))) +#define DUK__REGCONSTP_C(ins) ((duk_tval *) (void *) ((duk_uint8_t *) (((ins) & DUK__RCBIT_C) ? consts : thr->valstack_bottom) + DUK__BYTEOFF_C((ins)))) +#else /* DUK_USE_EXEC_REGCONST_OPTIMIZE */ +/* Safe alternatives, no assumption about duk_tval size. */ +#define DUK__REGP_A(ins) DUK__REGP(DUK_DEC_A((ins))) +#define DUK__REGP_B(ins) DUK__REGP(DUK_DEC_B((ins))) +#define DUK__REGP_C(ins) DUK__REGP(DUK_DEC_C((ins))) +#define DUK__REGP_BC(ins) DUK__REGP(DUK_DEC_BC((ins))) +#define DUK__CONSTP_A(ins) DUK__CONSTP(DUK_DEC_A((ins))) +#define DUK__CONSTP_B(ins) DUK__CONSTP(DUK_DEC_B((ins))) +#define DUK__CONSTP_C(ins) DUK__CONSTP(DUK_DEC_C((ins))) +#define DUK__CONSTP_BC(ins) DUK__CONSTP(DUK_DEC_BC((ins))) +#define DUK__REGCONSTP_B(ins) ((((ins) & DUK__RCBIT_B) ? consts : thr->valstack_bottom) + DUK_DEC_B((ins))) +#define DUK__REGCONSTP_C(ins) ((((ins) & DUK__RCBIT_C) ? consts : thr->valstack_bottom) + DUK_DEC_C((ins))) +#endif /* DUK_USE_EXEC_REGCONST_OPTIMIZE */ + +#if defined(DUK_USE_VERBOSE_EXECUTOR_ERRORS) +#define DUK__INTERNAL_ERROR(msg) do { \ + DUK_ERROR_ERROR(thr, (msg)); \ + DUK_WO_NORETURN(return;); \ + } while (0) +#else +#define DUK__INTERNAL_ERROR(msg) do { \ + goto internal_error; \ + } while (0) +#endif + +#define DUK__SYNC_CURR_PC() do { \ + duk_activation *duk__act; \ + duk__act = thr->callstack_curr; \ + duk__act->curr_pc = curr_pc; \ + } while (0) +#define DUK__SYNC_AND_NULL_CURR_PC() do { \ + duk_activation *duk__act; \ + duk__act = thr->callstack_curr; \ + duk__act->curr_pc = curr_pc; \ + thr->ptr_curr_pc = NULL; \ + } while (0) + +#if defined(DUK_USE_EXEC_PREFER_SIZE) +#define DUK__LOOKUP_INDIRECT(idx) do { \ + (idx) = (duk_uint_fast_t) duk_get_uint(thr, (duk_idx_t) (idx)); \ + } while (0) +#elif defined(DUK_USE_FASTINT) +#define DUK__LOOKUP_INDIRECT(idx) do { \ + duk_tval *tv_ind; \ + tv_ind = DUK__REGP((idx)); \ + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_ind)); \ + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv_ind)); /* compiler guarantees */ \ + (idx) = (duk_uint_fast_t) DUK_TVAL_GET_FASTINT_U32(tv_ind); \ + } while (0) +#else +#define DUK__LOOKUP_INDIRECT(idx) do { \ + duk_tval *tv_ind; \ + tv_ind = DUK__REGP(idx); \ + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_ind)); \ + idx = (duk_uint_fast_t) DUK_TVAL_GET_NUMBER(tv_ind); \ + } while (0) +#endif + +DUK_LOCAL void duk__handle_executor_error(duk_heap *heap, + duk_activation *entry_act, + duk_int_t entry_call_recursion_depth, + duk_jmpbuf *entry_jmpbuf_ptr, + volatile duk_bool_t *out_delayed_catch_setup) { + duk_small_uint_t lj_ret; + + /* Longjmp callers are required to sync-and-null thr->ptr_curr_pc + * before longjmp. + */ + DUK_ASSERT(heap->curr_thread != NULL); + DUK_ASSERT(heap->curr_thread->ptr_curr_pc == NULL); + + /* XXX: signalling the need to shrink check (only if unwound) */ + + /* Must be restored here to handle e.g. yields properly. */ + heap->call_recursion_depth = entry_call_recursion_depth; + + /* Switch to caller's setjmp() catcher so that if an error occurs + * during error handling, it is always propagated outwards instead + * of causing an infinite loop in our own handler. + */ + heap->lj.jmpbuf_ptr = (duk_jmpbuf *) entry_jmpbuf_ptr; + + lj_ret = duk__handle_longjmp(heap->curr_thread, entry_act, out_delayed_catch_setup); + + /* Error handling complete, remove side effect protections. + */ +#if defined(DUK_USE_ASSERTIONS) + DUK_ASSERT(heap->error_not_allowed == 1); + heap->error_not_allowed = 0; +#endif + DUK_ASSERT(heap->pf_prevent_count > 0); + heap->pf_prevent_count--; + DUK_DD(DUK_DDPRINT("executor error handled, pf_prevent_count updated to %ld", (long) heap->pf_prevent_count)); + + if (lj_ret == DUK__LONGJMP_RESTART) { + /* Restart bytecode execution, possibly with a changed thread. */ + DUK_REFZERO_CHECK_SLOW(heap->curr_thread); + } else { + /* If an error is propagated, don't run refzero checks here. + * The next catcher will deal with that. Pf_prevent_count + * will be re-bumped by the longjmp. + */ + + DUK_ASSERT(lj_ret == DUK__LONGJMP_RETHROW); /* Rethrow error to calling state. */ + DUK_ASSERT(heap->lj.jmpbuf_ptr == entry_jmpbuf_ptr); /* Longjmp handling has restored jmpbuf_ptr. */ + + /* Thread may have changed, e.g. YIELD converted to THROW. */ + duk_err_longjmp(heap->curr_thread); + DUK_UNREACHABLE(); + } +} + +/* Outer executor with setjmp/longjmp handling. */ +DUK_INTERNAL void duk_js_execute_bytecode(duk_hthread *exec_thr) { + /* Entry level info. */ + duk_hthread *entry_thread; + duk_activation *entry_act; + duk_int_t entry_call_recursion_depth; + duk_jmpbuf *entry_jmpbuf_ptr; + duk_jmpbuf our_jmpbuf; + duk_heap *heap; + volatile duk_bool_t delayed_catch_setup = 0; + + DUK_ASSERT(exec_thr != NULL); + DUK_ASSERT(exec_thr->heap != NULL); + DUK_ASSERT(exec_thr->heap->curr_thread != NULL); + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR((duk_heaphdr *) exec_thr); + DUK_ASSERT(exec_thr->callstack_top >= 1); /* at least one activation, ours */ + DUK_ASSERT(exec_thr->callstack_curr != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(exec_thr->callstack_curr) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(exec_thr->callstack_curr))); + + DUK_GC_TORTURE(exec_thr->heap); + + entry_thread = exec_thr; + heap = entry_thread->heap; + entry_act = entry_thread->callstack_curr; + DUK_ASSERT(entry_act != NULL); + entry_call_recursion_depth = entry_thread->heap->call_recursion_depth; + entry_jmpbuf_ptr = entry_thread->heap->lj.jmpbuf_ptr; + + /* + * Note: we currently assume that the setjmp() catchpoint is + * not re-entrant (longjmp() cannot be called more than once + * for a single setjmp()). + * + * See doc/code-issues.rst for notes on variable assignment + * before and after setjmp(). + */ + + for (;;) { + heap->lj.jmpbuf_ptr = &our_jmpbuf; + DUK_ASSERT(heap->lj.jmpbuf_ptr != NULL); + +#if defined(DUK_USE_CPP_EXCEPTIONS) + try { +#else + DUK_ASSERT(heap->lj.jmpbuf_ptr == &our_jmpbuf); + if (DUK_SETJMP(our_jmpbuf.jb) == 0) { +#endif + DUK_DDD(DUK_DDDPRINT("after setjmp, delayed catch setup: %ld\n", (long) delayed_catch_setup)); + + if (DUK_UNLIKELY(delayed_catch_setup != 0)) { + duk_hthread *thr = entry_thread->heap->curr_thread; + + delayed_catch_setup = 0; + duk__handle_catch_part2(thr); + DUK_ASSERT(delayed_catch_setup == 0); + DUK_DDD(DUK_DDDPRINT("top after delayed catch setup: %ld", (long) duk_get_top(entry_thread))); + } + + /* Execute bytecode until returned or longjmp(). */ + duk__js_execute_bytecode_inner(entry_thread, entry_act); + + /* Successful return: restore jmpbuf and return to caller. */ + heap->lj.jmpbuf_ptr = entry_jmpbuf_ptr; + + return; +#if defined(DUK_USE_CPP_EXCEPTIONS) + } catch (duk_internal_exception &exc) { +#else + } else { +#endif +#if defined(DUK_USE_CPP_EXCEPTIONS) + DUK_UNREF(exc); +#endif + DUK_DDD(DUK_DDDPRINT("longjmp caught by bytecode executor")); + DUK_STATS_INC(exec_thr->heap, stats_exec_throw); + + duk__handle_executor_error(heap, + entry_act, + entry_call_recursion_depth, + entry_jmpbuf_ptr, + &delayed_catch_setup); + } +#if defined(DUK_USE_CPP_EXCEPTIONS) + catch (duk_fatal_exception &exc) { + DUK_D(DUK_DPRINT("rethrow duk_fatal_exception")); + DUK_UNREF(exc); + throw; + } catch (std::exception &exc) { + const char *what = exc.what(); + if (!what) { + what = "unknown"; + } + DUK_D(DUK_DPRINT("unexpected c++ std::exception (perhaps thrown by user code)")); + DUK_STATS_INC(exec_thr->heap, stats_exec_throw); + try { + DUK_ASSERT(heap->curr_thread != NULL); + DUK_ERROR_FMT1(heap->curr_thread, DUK_ERR_TYPE_ERROR, "caught invalid c++ std::exception '%s' (perhaps thrown by user code)", what); + DUK_WO_NORETURN(return;); + } catch (duk_internal_exception exc) { + DUK_D(DUK_DPRINT("caught api error thrown from unexpected c++ std::exception")); + DUK_UNREF(exc); + duk__handle_executor_error(heap, + entry_act, + entry_call_recursion_depth, + entry_jmpbuf_ptr, + &delayed_catch_setup); + } + } catch (...) { + DUK_D(DUK_DPRINT("unexpected c++ exception (perhaps thrown by user code)")); + DUK_STATS_INC(exec_thr->heap, stats_exec_throw); + try { + DUK_ASSERT(heap->curr_thread != NULL); + DUK_ERROR_TYPE(heap->curr_thread, "caught invalid c++ exception (perhaps thrown by user code)"); + DUK_WO_NORETURN(return;); + } catch (duk_internal_exception exc) { + DUK_D(DUK_DPRINT("caught api error thrown from unexpected c++ exception")); + DUK_UNREF(exc); + duk__handle_executor_error(heap, + entry_act, + entry_call_recursion_depth, + entry_jmpbuf_ptr, + &delayed_catch_setup); + } + } +#endif + } + + DUK_WO_NORETURN(return;); +} + +/* Inner executor, performance critical. */ +DUK_LOCAL DUK_NOINLINE DUK_HOT void duk__js_execute_bytecode_inner(duk_hthread *entry_thread, duk_activation *entry_act) { + /* Current PC, accessed by other functions through thr->ptr_to_curr_pc. + * Critical for performance. It would be safest to make this volatile, + * but that eliminates performance benefits; aliasing guarantees + * should be enough though. + */ + duk_instr_t *curr_pc; /* bytecode has a stable pointer */ + + /* Hot variables for interpretation. Critical for performance, + * but must add sparingly to minimize register shuffling. + */ + duk_hthread *thr; /* stable */ + duk_tval *consts; /* stable */ + duk_uint_fast32_t ins; + /* 'funcs' is quite rarely used, so no local for it */ +#if defined(DUK_USE_EXEC_FUN_LOCAL) + duk_hcompfunc *fun; +#else + /* 'fun' is quite rarely used, so no local for it */ +#endif + +#if defined(DUK_USE_INTERRUPT_COUNTER) + duk_int_t int_ctr; +#endif + +#if defined(DUK_USE_ASSERTIONS) + duk_size_t valstack_top_base; /* valstack top, should match before interpreting each op (no leftovers) */ +#endif + + /* Optimized reg/const access macros assume sizeof(duk_tval) to be + * either 8 or 16. Heap allocation checks this even without asserts + * enabled now because it can't be autodetected in duk_config.h. + */ +#if 1 +#if defined(DUK_USE_PACKED_TVAL) + DUK_ASSERT(sizeof(duk_tval) == 8); +#else + DUK_ASSERT(sizeof(duk_tval) == 16); +#endif +#endif + + DUK_GC_TORTURE(entry_thread->heap); + + /* + * Restart execution by reloading thread state. + * + * Note that 'thr' and any thread configuration may have changed, + * so all local variables are suspect and we need to reinitialize. + * + * The number of local variables should be kept to a minimum: if + * the variables are spilled, they will need to be loaded from + * memory anyway. + * + * Any 'goto restart_execution;' code path in opcode dispatch must + * ensure 'curr_pc' is synced back to act->curr_pc before the goto + * takes place. + * + * The interpreter must be very careful with memory pointers, as + * many pointers are not guaranteed to be 'stable' and may be + * reallocated and relocated on-the-fly quite easily (e.g. by a + * memory allocation or a property access). + * + * The following are assumed to have stable pointers: + * - the current thread + * - the current function + * - the bytecode, constant table, inner function table of the + * current function (as they are a part of the function allocation) + * + * The following are assumed to have semi-stable pointers: + * - the current activation entry: stable as long as callstack + * is not changed (reallocated by growing or shrinking), or + * by any garbage collection invocation (through finalizers) + * - Note in particular that ANY DECREF can invalidate the + * activation pointer, so for the most part a fresh lookup + * is required + * + * The following are not assumed to have stable pointers at all: + * - the value stack (registers) of the current thread + * + * See execution.rst for discussion. + */ + + restart_execution: + + /* Lookup current thread; use the stable 'entry_thread' for this to + * avoid clobber warnings. Any valid, reachable 'thr' value would be + * fine for this, so using 'entry_thread' is just to silence warnings. + */ + thr = entry_thread->heap->curr_thread; + DUK_ASSERT(thr != NULL); + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(thr->callstack_curr != NULL); + DUK_ASSERT(DUK_ACT_GET_FUNC(thr->callstack_curr) != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(DUK_ACT_GET_FUNC(thr->callstack_curr))); + + DUK_GC_TORTURE(thr->heap); + + thr->ptr_curr_pc = &curr_pc; + + /* Relookup and initialize dispatch loop variables. Debugger check. */ + { + duk_activation *act; +#if !defined(DUK_USE_EXEC_FUN_LOCAL) + duk_hcompfunc *fun; +#endif + + /* Assume interrupt init/counter are properly initialized here. */ + /* Assume that thr->valstack_bottom has been set-up before getting here. */ + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + fun = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + DUK_ASSERT(fun != NULL); + DUK_ASSERT(thr->valstack_top - thr->valstack_bottom == fun->nregs); + consts = DUK_HCOMPFUNC_GET_CONSTS_BASE(thr->heap, fun); + DUK_ASSERT(consts != NULL); + +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (DUK_UNLIKELY(duk_debug_is_attached(thr->heap) && !thr->heap->dbg_processing)) { + duk__executor_recheck_debugger(thr, act, fun); + DUK_ASSERT(act == thr->callstack_curr); + DUK_ASSERT(act != NULL); + } +#endif /* DUK_USE_DEBUGGER_SUPPORT */ + +#if defined(DUK_USE_ASSERTIONS) + valstack_top_base = (duk_size_t) (thr->valstack_top - thr->valstack); +#endif + + /* Set up curr_pc for opcode dispatch. */ + curr_pc = act->curr_pc; + } + + DUK_DD(DUK_DDPRINT("restarting execution, thr %p, act idx %ld, fun %p," + "consts %p, funcs %p, lev %ld, regbot %ld, regtop %ld, " + "preventcount=%ld", + (void *) thr, + (long) (thr->callstack_top - 1), + (void *) DUK__FUN(), + (void *) DUK_HCOMPFUNC_GET_CONSTS_BASE(thr->heap, DUK__FUN()), + (void *) DUK_HCOMPFUNC_GET_FUNCS_BASE(thr->heap, DUK__FUN()), + (long) (thr->callstack_top - 1), + (long) (thr->valstack_bottom - thr->valstack), + (long) (thr->valstack_top - thr->valstack), + (long) thr->callstack_preventcount)); + + /* Dispatch loop. */ + + for (;;) { + duk_uint8_t op; + + DUK_ASSERT(thr->callstack_top >= 1); + DUK_ASSERT(thr->valstack_top - thr->valstack_bottom == DUK__FUN()->nregs); + DUK_ASSERT((duk_size_t) (thr->valstack_top - thr->valstack) == valstack_top_base); + + /* Executor interrupt counter check, used to implement breakpoints, + * debugging interface, execution timeouts, etc. The counter is heap + * specific but is maintained in the current thread to make the check + * as fast as possible. The counter is copied back to the heap struct + * whenever a thread switch occurs by the DUK_HEAP_SWITCH_THREAD() macro. + */ +#if defined(DUK_USE_INTERRUPT_COUNTER) + int_ctr = thr->interrupt_counter; + if (DUK_LIKELY(int_ctr > 0)) { + thr->interrupt_counter = int_ctr - 1; + } else { + /* Trigger at zero or below */ + duk_small_uint_t exec_int_ret; + + DUK_STATS_INC(thr->heap, stats_exec_interrupt); + + /* Write curr_pc back for the debugger. */ + { + duk_activation *act; + DUK_ASSERT(thr->callstack_top > 0); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + act->curr_pc = (duk_instr_t *) curr_pc; + } + + /* Forced restart caused by a function return; must recheck + * debugger breakpoints before checking line transitions, + * see GH-303. Restart and then handle interrupt_counter + * zero again. + */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (thr->heap->dbg_force_restart) { + DUK_DD(DUK_DDPRINT("dbg_force_restart flag forced restart execution")); /* GH-303 */ + thr->heap->dbg_force_restart = 0; + goto restart_execution; + } +#endif + + exec_int_ret = duk__executor_interrupt(thr); + if (exec_int_ret == DUK__INT_RESTART) { + /* curr_pc synced back above */ + goto restart_execution; + } + } +#endif /* DUK_USE_INTERRUPT_COUNTER */ +#if defined(DUK_USE_INTERRUPT_COUNTER) && defined(DUK_USE_DEBUG) + /* For cross-checking during development: ensure dispatch count + * matches cumulative interrupt counter init value sums. + */ + thr->heap->inst_count_exec++; +#endif + +#if defined(DUK_USE_ASSERTIONS) || defined(DUK_USE_DEBUG) + { + duk_activation *act; + act = thr->callstack_curr; + DUK_ASSERT(curr_pc >= DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, DUK__FUN())); + DUK_ASSERT(curr_pc < DUK_HCOMPFUNC_GET_CODE_END(thr->heap, DUK__FUN())); + DUK_UNREF(act); /* if debugging disabled */ + + DUK_DDD(DUK_DDDPRINT("executing bytecode: pc=%ld, ins=0x%08lx, op=%ld, valstack_top=%ld/%ld, nregs=%ld --> %!I", + (long) (curr_pc - DUK_HCOMPFUNC_GET_CODE_BASE(thr->heap, DUK__FUN())), + (unsigned long) *curr_pc, + (long) DUK_DEC_OP(*curr_pc), + (long) (thr->valstack_top - thr->valstack), + (long) (thr->valstack_end - thr->valstack), + (long) (DUK__FUN() ? DUK__FUN()->nregs : -1), + (duk_instr_t) *curr_pc)); + } +#endif + +#if defined(DUK_USE_ASSERTIONS) + /* Quite heavy assert: check valstack policy. Improper + * shuffle instructions can write beyond valstack_top/end + * so this check catches them in the act. + */ + { + duk_tval *tv; + tv = thr->valstack_top; + while (tv != thr->valstack_end) { + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(tv)); + tv++; + } + } +#endif + + ins = *curr_pc++; + DUK_STATS_INC(thr->heap, stats_exec_opcodes); + + /* Typing: use duk_small_(u)int_fast_t when decoding small + * opcode fields (op, A, B, C, BC) which fit into 16 bits + * and duk_(u)int_fast_t when decoding larger fields (e.g. + * ABC). Use unsigned variant by default, signed when the + * value is used in signed arithmetic. Using variable names + * such as 'a', 'b', 'c', 'bc', etc makes it easier to spot + * typing mismatches. + */ + + /* Switch based on opcode. Cast to 8-bit unsigned value and + * use a fully populated case clauses so that the compiler + * will (at least usually) omit a bounds check. + */ + op = (duk_uint8_t) DUK_DEC_OP(ins); + switch (op) { + + /* Some useful macros. These access inner executor variables + * directly so they only apply within the executor. + */ +#if defined(DUK_USE_EXEC_PREFER_SIZE) +#define DUK__REPLACE_TOP_A_BREAK() { goto replace_top_a; } +#define DUK__REPLACE_TOP_BC_BREAK() { goto replace_top_bc; } +#define DUK__REPLACE_BOOL_A_BREAK(bval) { \ + duk_bool_t duk__bval; \ + duk__bval = (bval); \ + DUK_ASSERT(duk__bval == 0 || duk__bval == 1); \ + duk_push_boolean(thr, duk__bval); \ + DUK__REPLACE_TOP_A_BREAK(); \ + } +#else +#define DUK__REPLACE_TOP_A_BREAK() { DUK__REPLACE_TO_TVPTR(thr, DUK__REGP_A(ins)); break; } +#define DUK__REPLACE_TOP_BC_BREAK() { DUK__REPLACE_TO_TVPTR(thr, DUK__REGP_BC(ins)); break; } +#define DUK__REPLACE_BOOL_A_BREAK(bval) { \ + duk_bool_t duk__bval; \ + duk_tval *duk__tvdst; \ + duk__bval = (bval); \ + DUK_ASSERT(duk__bval == 0 || duk__bval == 1); \ + duk__tvdst = DUK__REGP_A(ins); \ + DUK_TVAL_SET_BOOLEAN_UPDREF(thr, duk__tvdst, duk__bval); \ + break; \ + } +#endif + + /* XXX: 12 + 12 bit variant might make sense too, for both reg and + * const loads. + */ + + /* For LDREG, STREG, LDCONST footprint optimized variants would just + * duk_dup() + duk_replace(), but because they're used quite a lot + * they're currently intentionally not size optimized. + */ + case DUK_OP_LDREG: { + duk_tval *tv1, *tv2; + + tv1 = DUK__REGP_A(ins); + tv2 = DUK__REGP_BC(ins); + DUK_TVAL_SET_TVAL_UPDREF_FAST(thr, tv1, tv2); /* side effects */ + break; + } + + case DUK_OP_STREG: { + duk_tval *tv1, *tv2; + + tv1 = DUK__REGP_A(ins); + tv2 = DUK__REGP_BC(ins); + DUK_TVAL_SET_TVAL_UPDREF_FAST(thr, tv2, tv1); /* side effects */ + break; + } + + case DUK_OP_LDCONST: { + duk_tval *tv1, *tv2; + + tv1 = DUK__REGP_A(ins); + tv2 = DUK__CONSTP_BC(ins); + DUK_TVAL_SET_TVAL_UPDREF_FAST(thr, tv1, tv2); /* side effects */ + break; + } + + /* LDINT and LDINTX are intended to load an arbitrary signed + * 32-bit value. Only an LDINT+LDINTX sequence is supported. + * This also guarantees all values remain fastints. + */ +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_LDINT: { + duk_int32_t val; + + val = (duk_int32_t) DUK_DEC_BC(ins) - (duk_int32_t) DUK_BC_LDINT_BIAS; + duk_push_int(thr, val); + DUK__REPLACE_TOP_A_BREAK(); + } + case DUK_OP_LDINTX: { + duk_int32_t val; + + val = (duk_int32_t) duk_get_int(thr, DUK_DEC_A(ins)); + val = (val << DUK_BC_LDINTX_SHIFT) + (duk_int32_t) DUK_DEC_BC(ins); /* no bias */ + duk_push_int(thr, val); + DUK__REPLACE_TOP_A_BREAK(); + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_LDINT: { + duk_tval *tv1; + duk_int32_t val; + + val = (duk_int32_t) DUK_DEC_BC(ins) - (duk_int32_t) DUK_BC_LDINT_BIAS; + tv1 = DUK__REGP_A(ins); + DUK_TVAL_SET_I32_UPDREF(thr, tv1, val); /* side effects */ + break; + } + case DUK_OP_LDINTX: { + duk_tval *tv1; + duk_int32_t val; + + tv1 = DUK__REGP_A(ins); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv1)); +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv1)); + val = DUK_TVAL_GET_FASTINT_I32(tv1); +#else + /* XXX: fast double-to-int conversion, we know number is integer in [-0x80000000,0xffffffff]. */ + val = (duk_int32_t) DUK_TVAL_GET_NUMBER(tv1); +#endif + val = (duk_int32_t) ((duk_uint32_t) val << DUK_BC_LDINTX_SHIFT) + (duk_int32_t) DUK_DEC_BC(ins); /* no bias */ + DUK_TVAL_SET_I32_UPDREF(thr, tv1, val); /* side effects */ + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_LDTHIS: { + duk_push_this(thr); + DUK__REPLACE_TOP_BC_BREAK(); + } + case DUK_OP_LDUNDEF: { + duk_to_undefined(thr, (duk_idx_t) DUK_DEC_BC(ins)); + break; + } + case DUK_OP_LDNULL: { + duk_to_null(thr, (duk_idx_t) DUK_DEC_BC(ins)); + break; + } + case DUK_OP_LDTRUE: { + duk_push_true(thr); + DUK__REPLACE_TOP_BC_BREAK(); + } + case DUK_OP_LDFALSE: { + duk_push_false(thr); + DUK__REPLACE_TOP_BC_BREAK(); + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_LDTHIS: { + /* Note: 'this' may be bound to any value, not just an object */ + duk_tval *tv1, *tv2; + + tv1 = DUK__REGP_BC(ins); + tv2 = thr->valstack_bottom - 1; /* 'this binding' is just under bottom */ + DUK_ASSERT(tv2 >= thr->valstack); + DUK_TVAL_SET_TVAL_UPDREF_FAST(thr, tv1, tv2); /* side effects */ + break; + } + case DUK_OP_LDUNDEF: { + duk_tval *tv1; + + tv1 = DUK__REGP_BC(ins); + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv1); /* side effects */ + break; + } + case DUK_OP_LDNULL: { + duk_tval *tv1; + + tv1 = DUK__REGP_BC(ins); + DUK_TVAL_SET_NULL_UPDREF(thr, tv1); /* side effects */ + break; + } + case DUK_OP_LDTRUE: { + duk_tval *tv1; + + tv1 = DUK__REGP_BC(ins); + DUK_TVAL_SET_BOOLEAN_UPDREF(thr, tv1, 1); /* side effects */ + break; + } + case DUK_OP_LDFALSE: { + duk_tval *tv1; + + tv1 = DUK__REGP_BC(ins); + DUK_TVAL_SET_BOOLEAN_UPDREF(thr, tv1, 0); /* side effects */ + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + case DUK_OP_BNOT: { + duk__vm_bitwise_not(thr, DUK_DEC_BC(ins), DUK_DEC_A(ins)); + break; + } + + case DUK_OP_LNOT: { + duk__vm_logical_not(thr, DUK_DEC_BC(ins), DUK_DEC_A(ins)); + break; + } + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_UNM: + case DUK_OP_UNP: { + duk__vm_arith_unary_op(thr, DUK_DEC_BC(ins), DUK_DEC_A(ins), op); + break; + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_UNM: { + duk__vm_arith_unary_op(thr, DUK_DEC_BC(ins), DUK_DEC_A(ins), DUK_OP_UNM); + break; + } + case DUK_OP_UNP: { + duk__vm_arith_unary_op(thr, DUK_DEC_BC(ins), DUK_DEC_A(ins), DUK_OP_UNP); + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_TYPEOF: { + duk_small_uint_t stridx; + + stridx = duk_js_typeof_stridx(DUK__REGP_BC(ins)); + DUK_ASSERT_STRIDX_VALID(stridx); + duk_push_hstring_stridx(thr, stridx); + DUK__REPLACE_TOP_A_BREAK(); + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_TYPEOF: { + duk_tval *tv; + duk_small_uint_t stridx; + duk_hstring *h_str; + + tv = DUK__REGP_BC(ins); + stridx = duk_js_typeof_stridx(tv); + DUK_ASSERT_STRIDX_VALID(stridx); + h_str = DUK_HTHREAD_GET_STRING(thr, stridx); + tv = DUK__REGP_A(ins); + DUK_TVAL_SET_STRING_UPDREF(thr, tv, h_str); + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + case DUK_OP_TYPEOFID: { + duk_small_uint_t stridx; +#if !defined(DUK_USE_EXEC_PREFER_SIZE) + duk_hstring *h_str; +#endif + duk_activation *act; + duk_hstring *name; + duk_tval *tv; + + /* A -> target register + * BC -> constant index of identifier name + */ + + tv = DUK__CONSTP_BC(ins); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv)); + name = DUK_TVAL_GET_STRING(tv); + tv = NULL; /* lookup has side effects */ + act = thr->callstack_curr; + if (duk_js_getvar_activation(thr, act, name, 0 /*throw*/)) { + /* -> [... val this] */ + tv = DUK_GET_TVAL_NEGIDX(thr, -2); + stridx = duk_js_typeof_stridx(tv); + tv = NULL; /* no longer needed */ + duk_pop_2_unsafe(thr); + } else { + /* unresolvable, no stack changes */ + stridx = DUK_STRIDX_LC_UNDEFINED; + } + DUK_ASSERT_STRIDX_VALID(stridx); +#if defined(DUK_USE_EXEC_PREFER_SIZE) + duk_push_hstring_stridx(thr, stridx); + DUK__REPLACE_TOP_A_BREAK(); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + h_str = DUK_HTHREAD_GET_STRING(thr, stridx); + tv = DUK__REGP_A(ins); + DUK_TVAL_SET_STRING_UPDREF(thr, tv, h_str); + break; +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + } + + /* Equality: E5 Sections 11.9.1, 11.9.3 */ + +#define DUK__EQ_BODY(barg,carg) { \ + duk_bool_t tmp; \ + tmp = duk_js_equals(thr, (barg), (carg)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#define DUK__NEQ_BODY(barg,carg) { \ + duk_bool_t tmp; \ + tmp = duk_js_equals(thr, (barg), (carg)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + tmp ^= 1; \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#define DUK__SEQ_BODY(barg,carg) { \ + duk_bool_t tmp; \ + tmp = duk_js_strict_equals((barg), (carg)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#define DUK__SNEQ_BODY(barg,carg) { \ + duk_bool_t tmp; \ + tmp = duk_js_strict_equals((barg), (carg)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + tmp ^= 1; \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_EQ_RR: + case DUK_OP_EQ_CR: + case DUK_OP_EQ_RC: + case DUK_OP_EQ_CC: + DUK__EQ_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_NEQ_RR: + case DUK_OP_NEQ_CR: + case DUK_OP_NEQ_RC: + case DUK_OP_NEQ_CC: + DUK__NEQ_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_SEQ_RR: + case DUK_OP_SEQ_CR: + case DUK_OP_SEQ_RC: + case DUK_OP_SEQ_CC: + DUK__SEQ_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_SNEQ_RR: + case DUK_OP_SNEQ_CR: + case DUK_OP_SNEQ_RC: + case DUK_OP_SNEQ_CC: + DUK__SNEQ_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_EQ_RR: + DUK__EQ_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_EQ_CR: + DUK__EQ_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_EQ_RC: + DUK__EQ_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_EQ_CC: + DUK__EQ_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_NEQ_RR: + DUK__NEQ_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_NEQ_CR: + DUK__NEQ_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_NEQ_RC: + DUK__NEQ_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_NEQ_CC: + DUK__NEQ_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_SEQ_RR: + DUK__SEQ_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_SEQ_CR: + DUK__SEQ_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_SEQ_RC: + DUK__SEQ_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_SEQ_CC: + DUK__SEQ_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_SNEQ_RR: + DUK__SNEQ_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_SNEQ_CR: + DUK__SNEQ_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_SNEQ_RC: + DUK__SNEQ_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_SNEQ_CC: + DUK__SNEQ_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + +#define DUK__COMPARE_BODY(arg1,arg2,flags) { \ + duk_bool_t tmp; \ + tmp = duk_js_compare_helper(thr, (arg1), (arg2), (flags)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#define DUK__GT_BODY(barg,carg) DUK__COMPARE_BODY((carg), (barg), 0) +#define DUK__GE_BODY(barg,carg) DUK__COMPARE_BODY((barg), (carg), DUK_COMPARE_FLAG_EVAL_LEFT_FIRST | DUK_COMPARE_FLAG_NEGATE) +#define DUK__LT_BODY(barg,carg) DUK__COMPARE_BODY((barg), (carg), DUK_COMPARE_FLAG_EVAL_LEFT_FIRST) +#define DUK__LE_BODY(barg,carg) DUK__COMPARE_BODY((carg), (barg), DUK_COMPARE_FLAG_NEGATE) +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_GT_RR: + case DUK_OP_GT_CR: + case DUK_OP_GT_RC: + case DUK_OP_GT_CC: + DUK__GT_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_GE_RR: + case DUK_OP_GE_CR: + case DUK_OP_GE_RC: + case DUK_OP_GE_CC: + DUK__GE_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_LT_RR: + case DUK_OP_LT_CR: + case DUK_OP_LT_RC: + case DUK_OP_LT_CC: + DUK__LT_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_LE_RR: + case DUK_OP_LE_CR: + case DUK_OP_LE_RC: + case DUK_OP_LE_CC: + DUK__LE_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_GT_RR: + DUK__GT_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GT_CR: + DUK__GT_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GT_RC: + DUK__GT_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_GT_CC: + DUK__GT_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_GE_RR: + DUK__GE_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GE_CR: + DUK__GE_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GE_RC: + DUK__GE_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_GE_CC: + DUK__GE_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_LT_RR: + DUK__LT_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_LT_CR: + DUK__LT_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_LT_RC: + DUK__LT_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_LT_CC: + DUK__LT_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_LE_RR: + DUK__LE_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_LE_CR: + DUK__LE_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_LE_RC: + DUK__LE_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_LE_CC: + DUK__LE_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + /* No size optimized variant at present for IF. */ + case DUK_OP_IFTRUE_R: { + if (duk_js_toboolean(DUK__REGP_BC(ins)) != 0) { + curr_pc++; + } + break; + } + case DUK_OP_IFTRUE_C: { + if (duk_js_toboolean(DUK__CONSTP_BC(ins)) != 0) { + curr_pc++; + } + break; + } + case DUK_OP_IFFALSE_R: { + if (duk_js_toboolean(DUK__REGP_BC(ins)) == 0) { + curr_pc++; + } + break; + } + case DUK_OP_IFFALSE_C: { + if (duk_js_toboolean(DUK__CONSTP_BC(ins)) == 0) { + curr_pc++; + } + break; + } + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_ADD_RR: + case DUK_OP_ADD_CR: + case DUK_OP_ADD_RC: + case DUK_OP_ADD_CC: { + /* XXX: could leave value on stack top and goto replace_top_a; */ + duk__vm_arith_add(thr, DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins), DUK_DEC_A(ins)); + break; + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_ADD_RR: { + duk__vm_arith_add(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins)); + break; + } + case DUK_OP_ADD_CR: { + duk__vm_arith_add(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins)); + break; + } + case DUK_OP_ADD_RC: { + duk__vm_arith_add(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins)); + break; + } + case DUK_OP_ADD_CC: { + duk__vm_arith_add(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins)); + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_SUB_RR: + case DUK_OP_SUB_CR: + case DUK_OP_SUB_RC: + case DUK_OP_SUB_CC: + case DUK_OP_MUL_RR: + case DUK_OP_MUL_CR: + case DUK_OP_MUL_RC: + case DUK_OP_MUL_CC: + case DUK_OP_DIV_RR: + case DUK_OP_DIV_CR: + case DUK_OP_DIV_RC: + case DUK_OP_DIV_CC: + case DUK_OP_MOD_RR: + case DUK_OP_MOD_CR: + case DUK_OP_MOD_RC: + case DUK_OP_MOD_CC: +#if defined(DUK_USE_ES7_EXP_OPERATOR) + case DUK_OP_EXP_RR: + case DUK_OP_EXP_CR: + case DUK_OP_EXP_RC: + case DUK_OP_EXP_CC: +#endif /* DUK_USE_ES7_EXP_OPERATOR */ + { + /* XXX: could leave value on stack top and goto replace_top_a; */ + duk__vm_arith_binary_op(thr, DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins), DUK_DEC_A(ins), op); + break; + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_SUB_RR: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_SUB); + break; + } + case DUK_OP_SUB_CR: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_SUB); + break; + } + case DUK_OP_SUB_RC: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_SUB); + break; + } + case DUK_OP_SUB_CC: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_SUB); + break; + } + case DUK_OP_MUL_RR: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_MUL); + break; + } + case DUK_OP_MUL_CR: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_MUL); + break; + } + case DUK_OP_MUL_RC: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_MUL); + break; + } + case DUK_OP_MUL_CC: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_MUL); + break; + } + case DUK_OP_DIV_RR: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_DIV); + break; + } + case DUK_OP_DIV_CR: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_DIV); + break; + } + case DUK_OP_DIV_RC: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_DIV); + break; + } + case DUK_OP_DIV_CC: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_DIV); + break; + } + case DUK_OP_MOD_RR: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_MOD); + break; + } + case DUK_OP_MOD_CR: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_MOD); + break; + } + case DUK_OP_MOD_RC: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_MOD); + break; + } + case DUK_OP_MOD_CC: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_MOD); + break; + } +#if defined(DUK_USE_ES7_EXP_OPERATOR) + case DUK_OP_EXP_RR: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_EXP); + break; + } + case DUK_OP_EXP_CR: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_EXP); + break; + } + case DUK_OP_EXP_RC: { + duk__vm_arith_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_EXP); + break; + } + case DUK_OP_EXP_CC: { + duk__vm_arith_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_EXP); + break; + } +#endif /* DUK_USE_ES7_EXP_OPERATOR */ +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_BAND_RR: + case DUK_OP_BAND_CR: + case DUK_OP_BAND_RC: + case DUK_OP_BAND_CC: + case DUK_OP_BOR_RR: + case DUK_OP_BOR_CR: + case DUK_OP_BOR_RC: + case DUK_OP_BOR_CC: + case DUK_OP_BXOR_RR: + case DUK_OP_BXOR_CR: + case DUK_OP_BXOR_RC: + case DUK_OP_BXOR_CC: + case DUK_OP_BASL_RR: + case DUK_OP_BASL_CR: + case DUK_OP_BASL_RC: + case DUK_OP_BASL_CC: + case DUK_OP_BLSR_RR: + case DUK_OP_BLSR_CR: + case DUK_OP_BLSR_RC: + case DUK_OP_BLSR_CC: + case DUK_OP_BASR_RR: + case DUK_OP_BASR_CR: + case DUK_OP_BASR_RC: + case DUK_OP_BASR_CC: { + /* XXX: could leave value on stack top and goto replace_top_a; */ + duk__vm_bitwise_binary_op(thr, DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins), DUK_DEC_A(ins), op); + break; + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_BAND_RR: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BAND); + break; + } + case DUK_OP_BAND_CR: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BAND); + break; + } + case DUK_OP_BAND_RC: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BAND); + break; + } + case DUK_OP_BAND_CC: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BAND); + break; + } + case DUK_OP_BOR_RR: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BOR); + break; + } + case DUK_OP_BOR_CR: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BOR); + break; + } + case DUK_OP_BOR_RC: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BOR); + break; + } + case DUK_OP_BOR_CC: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BOR); + break; + } + case DUK_OP_BXOR_RR: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BXOR); + break; + } + case DUK_OP_BXOR_CR: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BXOR); + break; + } + case DUK_OP_BXOR_RC: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BXOR); + break; + } + case DUK_OP_BXOR_CC: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BXOR); + break; + } + case DUK_OP_BASL_RR: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BASL); + break; + } + case DUK_OP_BASL_CR: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BASL); + break; + } + case DUK_OP_BASL_RC: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BASL); + break; + } + case DUK_OP_BASL_CC: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BASL); + break; + } + case DUK_OP_BLSR_RR: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BLSR); + break; + } + case DUK_OP_BLSR_CR: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BLSR); + break; + } + case DUK_OP_BLSR_RC: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BLSR); + break; + } + case DUK_OP_BLSR_CC: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BLSR); + break; + } + case DUK_OP_BASR_RR: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BASR); + break; + } + case DUK_OP_BASR_CR: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__REGP_C(ins), DUK_DEC_A(ins), DUK_OP_BASR); + break; + } + case DUK_OP_BASR_RC: { + duk__vm_bitwise_binary_op(thr, DUK__REGP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BASR); + break; + } + case DUK_OP_BASR_CC: { + duk__vm_bitwise_binary_op(thr, DUK__CONSTP_B(ins), DUK__CONSTP_C(ins), DUK_DEC_A(ins), DUK_OP_BASR); + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + /* For INSTOF and IN, B is always a register. */ +#define DUK__INSTOF_BODY(barg,carg) { \ + duk_bool_t tmp; \ + tmp = duk_js_instanceof(thr, (barg), (carg)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#define DUK__IN_BODY(barg,carg) { \ + duk_bool_t tmp; \ + tmp = duk_js_in(thr, (barg), (carg)); \ + DUK_ASSERT(tmp == 0 || tmp == 1); \ + DUK__REPLACE_BOOL_A_BREAK(tmp); \ + } +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_INSTOF_RR: + case DUK_OP_INSTOF_CR: + case DUK_OP_INSTOF_RC: + case DUK_OP_INSTOF_CC: + DUK__INSTOF_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_IN_RR: + case DUK_OP_IN_CR: + case DUK_OP_IN_RC: + case DUK_OP_IN_CC: + DUK__IN_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_INSTOF_RR: + DUK__INSTOF_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_INSTOF_CR: + DUK__INSTOF_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_INSTOF_RC: + DUK__INSTOF_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_INSTOF_CC: + DUK__INSTOF_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_IN_RR: + DUK__IN_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_IN_CR: + DUK__IN_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_IN_RC: + DUK__IN_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_IN_CC: + DUK__IN_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + /* Pre/post inc/dec for register variables, important for loops. */ +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_PREINCR: + case DUK_OP_PREDECR: + case DUK_OP_POSTINCR: + case DUK_OP_POSTDECR: { + duk__prepost_incdec_reg_helper(thr, DUK__REGP_A(ins), DUK__REGP_BC(ins), op); + break; + } + case DUK_OP_PREINCV: + case DUK_OP_PREDECV: + case DUK_OP_POSTINCV: + case DUK_OP_POSTDECV: { + duk__prepost_incdec_var_helper(thr, DUK_DEC_A(ins), DUK__CONSTP_BC(ins), op, DUK__STRICT()); + break; + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_PREINCR: { + duk__prepost_incdec_reg_helper(thr, DUK__REGP_A(ins), DUK__REGP_BC(ins), DUK_OP_PREINCR); + break; + } + case DUK_OP_PREDECR: { + duk__prepost_incdec_reg_helper(thr, DUK__REGP_A(ins), DUK__REGP_BC(ins), DUK_OP_PREDECR); + break; + } + case DUK_OP_POSTINCR: { + duk__prepost_incdec_reg_helper(thr, DUK__REGP_A(ins), DUK__REGP_BC(ins), DUK_OP_POSTINCR); + break; + } + case DUK_OP_POSTDECR: { + duk__prepost_incdec_reg_helper(thr, DUK__REGP_A(ins), DUK__REGP_BC(ins), DUK_OP_POSTDECR); + break; + } + case DUK_OP_PREINCV: { + duk__prepost_incdec_var_helper(thr, DUK_DEC_A(ins), DUK__CONSTP_BC(ins), DUK_OP_PREINCV, DUK__STRICT()); + break; + } + case DUK_OP_PREDECV: { + duk__prepost_incdec_var_helper(thr, DUK_DEC_A(ins), DUK__CONSTP_BC(ins), DUK_OP_PREDECV, DUK__STRICT()); + break; + } + case DUK_OP_POSTINCV: { + duk__prepost_incdec_var_helper(thr, DUK_DEC_A(ins), DUK__CONSTP_BC(ins), DUK_OP_POSTINCV, DUK__STRICT()); + break; + } + case DUK_OP_POSTDECV: { + duk__prepost_incdec_var_helper(thr, DUK_DEC_A(ins), DUK__CONSTP_BC(ins), DUK_OP_POSTDECV, DUK__STRICT()); + break; + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + /* XXX: Move to separate helper, optimize for perf/size separately. */ + /* Preinc/predec for object properties. */ + case DUK_OP_PREINCP_RR: + case DUK_OP_PREINCP_CR: + case DUK_OP_PREINCP_RC: + case DUK_OP_PREINCP_CC: + case DUK_OP_PREDECP_RR: + case DUK_OP_PREDECP_CR: + case DUK_OP_PREDECP_RC: + case DUK_OP_PREDECP_CC: + case DUK_OP_POSTINCP_RR: + case DUK_OP_POSTINCP_CR: + case DUK_OP_POSTINCP_RC: + case DUK_OP_POSTINCP_CC: + case DUK_OP_POSTDECP_RR: + case DUK_OP_POSTDECP_CR: + case DUK_OP_POSTDECP_RC: + case DUK_OP_POSTDECP_CC: { + duk_tval *tv_obj; + duk_tval *tv_key; + duk_tval *tv_val; + duk_bool_t rc; + duk_double_t x, y, z; +#if !defined(DUK_USE_EXEC_PREFER_SIZE) + duk_tval *tv_dst; +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + /* A -> target reg + * B -> object reg/const (may be const e.g. in "'foo'[1]") + * C -> key reg/const + */ + + /* Opcode bits 0-1 are used to distinguish reg/const variants. + * Opcode bits 2-3 are used to distinguish inc/dec variants: + * Bit 2 = inc(0)/dec(1), bit 3 = pre(0)/post(1). + */ + DUK_ASSERT((DUK_OP_PREINCP_RR & 0x0c) == 0x00); + DUK_ASSERT((DUK_OP_PREDECP_RR & 0x0c) == 0x04); + DUK_ASSERT((DUK_OP_POSTINCP_RR & 0x0c) == 0x08); + DUK_ASSERT((DUK_OP_POSTDECP_RR & 0x0c) == 0x0c); + + tv_obj = DUK__REGCONSTP_B(ins); + tv_key = DUK__REGCONSTP_C(ins); + rc = duk_hobject_getprop(thr, tv_obj, tv_key); /* -> [val] */ + DUK_UNREF(rc); /* ignore */ + tv_obj = NULL; /* invalidated */ + tv_key = NULL; /* invalidated */ + + /* XXX: Fastint fast path would be useful here. Also fastints + * now lose their fastint status in current handling which is + * not intuitive. + */ + + x = duk_to_number_m1(thr); + duk_pop_unsafe(thr); + if (ins & DUK_BC_INCDECP_FLAG_DEC) { + y = x - 1.0; + } else { + y = x + 1.0; + } + + duk_push_number(thr, y); + tv_val = DUK_GET_TVAL_NEGIDX(thr, -1); + DUK_ASSERT(tv_val != NULL); + tv_obj = DUK__REGCONSTP_B(ins); + tv_key = DUK__REGCONSTP_C(ins); + rc = duk_hobject_putprop(thr, tv_obj, tv_key, tv_val, DUK__STRICT()); + DUK_UNREF(rc); /* ignore */ + tv_obj = NULL; /* invalidated */ + tv_key = NULL; /* invalidated */ + duk_pop_unsafe(thr); + + z = (ins & DUK_BC_INCDECP_FLAG_POST) ? x : y; +#if defined(DUK_USE_EXEC_PREFER_SIZE) + duk_push_number(thr, z); + DUK__REPLACE_TOP_A_BREAK(); +#else + tv_dst = DUK__REGP_A(ins); + DUK_TVAL_SET_NUMBER_UPDREF(thr, tv_dst, z); + break; +#endif + } + + /* XXX: GETPROP where object is 'this', GETPROPT? + * Occurs relatively often in object oriented code. + */ + +#define DUK__GETPROP_BODY(barg,carg) { \ + /* A -> target reg \ + * B -> object reg/const (may be const e.g. in "'foo'[1]") \ + * C -> key reg/const \ + */ \ + (void) duk_hobject_getprop(thr, (barg), (carg)); \ + DUK__REPLACE_TOP_A_BREAK(); \ + } +#define DUK__GETPROPC_BODY(barg,carg) { \ + /* Same as GETPROP but callability check for property-based calls. */ \ + duk_tval *tv__targ; \ + (void) duk_hobject_getprop(thr, (barg), (carg)); \ + DUK_GC_TORTURE(thr->heap); \ + tv__targ = DUK_GET_TVAL_NEGIDX(thr, -1); \ + if (DUK_UNLIKELY(!duk_is_callable_tval(thr, tv__targ))) { \ + /* Here we intentionally re-evaluate the macro \ + * arguments to deal with potentially changed \ + * valstack base pointer! \ + */ \ + duk_call_setup_propcall_error(thr, (barg), (carg)); \ + } \ + DUK__REPLACE_TOP_A_BREAK(); \ + } +#define DUK__PUTPROP_BODY(aarg,barg,carg) { \ + /* A -> object reg \ + * B -> key reg/const \ + * C -> value reg/const \ + * \ + * Note: intentional difference to register arrangement \ + * of e.g. GETPROP; 'A' must contain a register-only value. \ + */ \ + (void) duk_hobject_putprop(thr, (aarg), (barg), (carg), DUK__STRICT()); \ + break; \ + } +#define DUK__DELPROP_BODY(barg,carg) { \ + /* A -> result reg \ + * B -> object reg \ + * C -> key reg/const \ + */ \ + duk_bool_t rc; \ + rc = duk_hobject_delprop(thr, (barg), (carg), DUK__STRICT()); \ + DUK_ASSERT(rc == 0 || rc == 1); \ + DUK__REPLACE_BOOL_A_BREAK(rc); \ + } +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_GETPROP_RR: + case DUK_OP_GETPROP_CR: + case DUK_OP_GETPROP_RC: + case DUK_OP_GETPROP_CC: + DUK__GETPROP_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); +#if defined(DUK_USE_VERBOSE_ERRORS) + case DUK_OP_GETPROPC_RR: + case DUK_OP_GETPROPC_CR: + case DUK_OP_GETPROPC_RC: + case DUK_OP_GETPROPC_CC: + DUK__GETPROPC_BODY(DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); +#endif + case DUK_OP_PUTPROP_RR: + case DUK_OP_PUTPROP_CR: + case DUK_OP_PUTPROP_RC: + case DUK_OP_PUTPROP_CC: + DUK__PUTPROP_BODY(DUK__REGP_A(ins), DUK__REGCONSTP_B(ins), DUK__REGCONSTP_C(ins)); + case DUK_OP_DELPROP_RR: + case DUK_OP_DELPROP_RC: /* B is always reg */ + DUK__DELPROP_BODY(DUK__REGP_B(ins), DUK__REGCONSTP_C(ins)); +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_GETPROP_RR: + DUK__GETPROP_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GETPROP_CR: + DUK__GETPROP_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GETPROP_RC: + DUK__GETPROP_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_GETPROP_CC: + DUK__GETPROP_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); +#if defined(DUK_USE_VERBOSE_ERRORS) + case DUK_OP_GETPROPC_RR: + DUK__GETPROPC_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GETPROPC_CR: + DUK__GETPROPC_BODY(DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_GETPROPC_RC: + DUK__GETPROPC_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_GETPROPC_CC: + DUK__GETPROPC_BODY(DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); +#endif + case DUK_OP_PUTPROP_RR: + DUK__PUTPROP_BODY(DUK__REGP_A(ins), DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_PUTPROP_CR: + DUK__PUTPROP_BODY(DUK__REGP_A(ins), DUK__CONSTP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_PUTPROP_RC: + DUK__PUTPROP_BODY(DUK__REGP_A(ins), DUK__REGP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_PUTPROP_CC: + DUK__PUTPROP_BODY(DUK__REGP_A(ins), DUK__CONSTP_B(ins), DUK__CONSTP_C(ins)); + case DUK_OP_DELPROP_RR: /* B is always reg */ + DUK__DELPROP_BODY(DUK__REGP_B(ins), DUK__REGP_C(ins)); + case DUK_OP_DELPROP_RC: + DUK__DELPROP_BODY(DUK__REGP_B(ins), DUK__CONSTP_C(ins)); +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + /* No fast path for DECLVAR now, it's quite a rare instruction. */ + case DUK_OP_DECLVAR_RR: + case DUK_OP_DECLVAR_CR: + case DUK_OP_DECLVAR_RC: + case DUK_OP_DECLVAR_CC: { + duk_activation *act; + duk_small_uint_fast_t a = DUK_DEC_A(ins); + duk_tval *tv1; + duk_hstring *name; + duk_small_uint_t prop_flags; + duk_bool_t is_func_decl; + + tv1 = DUK__REGCONSTP_B(ins); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv1)); + name = DUK_TVAL_GET_STRING(tv1); + DUK_ASSERT(name != NULL); + + is_func_decl = ((a & DUK_BC_DECLVAR_FLAG_FUNC_DECL) != 0); + + /* XXX: declvar takes an duk_tval pointer, which is awkward and + * should be reworked. + */ + + /* Compiler is responsible for selecting property flags (configurability, + * writability, etc). + */ + prop_flags = a & DUK_PROPDESC_FLAGS_MASK; + + if (is_func_decl) { + duk_push_tval(thr, DUK__REGCONSTP_C(ins)); + } else { + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); /* valstack policy */ + thr->valstack_top++; + } + tv1 = DUK_GET_TVAL_NEGIDX(thr, -1); + + act = thr->callstack_curr; + if (duk_js_declvar_activation(thr, act, name, tv1, prop_flags, is_func_decl)) { + if (is_func_decl) { + /* Already declared, update value. */ + tv1 = DUK_GET_TVAL_NEGIDX(thr, -1); + duk_js_putvar_activation(thr, act, name, tv1, DUK__STRICT()); + } else { + /* Already declared but no initializer value + * (e.g. 'var xyz;'), no-op. + */ + } + } + + duk_pop_unsafe(thr); + break; + } + +#if defined(DUK_USE_REGEXP_SUPPORT) + /* The compiler should never emit DUK_OP_REGEXP if there is no + * regexp support. + */ + case DUK_OP_REGEXP_RR: + case DUK_OP_REGEXP_CR: + case DUK_OP_REGEXP_RC: + case DUK_OP_REGEXP_CC: { + /* A -> target register + * B -> bytecode (also contains flags) + * C -> escaped source + */ + + duk_push_tval(thr, DUK__REGCONSTP_C(ins)); + duk_push_tval(thr, DUK__REGCONSTP_B(ins)); /* -> [ ... escaped_source bytecode ] */ + duk_regexp_create_instance(thr); /* -> [ ... regexp_instance ] */ + DUK__REPLACE_TOP_A_BREAK(); + } +#endif /* DUK_USE_REGEXP_SUPPORT */ + + /* XXX: 'c' is unused, use whole BC, etc. */ + case DUK_OP_CSVAR_RR: + case DUK_OP_CSVAR_CR: + case DUK_OP_CSVAR_RC: + case DUK_OP_CSVAR_CC: { + /* The speciality of calling through a variable binding is that the + * 'this' value may be provided by the variable lookup: E5 Section 6.b.i. + * + * The only (standard) case where the 'this' binding is non-null is when + * (1) the variable is found in an object environment record, and + * (2) that object environment record is a 'with' block. + */ + + duk_activation *act; + duk_uint_fast_t idx; + duk_tval *tv1; + duk_hstring *name; + + /* A -> target registers (A, A + 1) for call setup + * B -> identifier name, usually constant but can be a register due to shuffling + */ + + tv1 = DUK__REGCONSTP_B(ins); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv1)); + name = DUK_TVAL_GET_STRING(tv1); + DUK_ASSERT(name != NULL); + act = thr->callstack_curr; + (void) duk_js_getvar_activation(thr, act, name, 1 /*throw*/); /* -> [... val this] */ + + idx = (duk_uint_fast_t) DUK_DEC_A(ins); + + /* Could add direct value stack handling. */ + duk_replace(thr, (duk_idx_t) (idx + 1)); /* 'this' binding */ + duk_replace(thr, (duk_idx_t) idx); /* variable value (function, we hope, not checked here) */ + break; + } + + case DUK_OP_CLOSURE: { + duk_activation *act; + duk_hcompfunc *fun_act; + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); + duk_hobject *fun_temp; + + /* A -> target reg + * BC -> inner function index + */ + + DUK_DDD(DUK_DDDPRINT("CLOSURE to target register %ld, fnum %ld (count %ld)", + (long) DUK_DEC_A(ins), (long) DUK_DEC_BC(ins), (long) DUK_HCOMPFUNC_GET_FUNCS_COUNT(thr->heap, DUK__FUN()))); + + DUK_ASSERT_DISABLE(bc >= 0); /* unsigned */ + DUK_ASSERT((duk_uint_t) bc < (duk_uint_t) DUK_HCOMPFUNC_GET_FUNCS_COUNT(thr->heap, DUK__FUN())); + + act = thr->callstack_curr; + fun_act = (duk_hcompfunc *) DUK_ACT_GET_FUNC(act); + fun_temp = DUK_HCOMPFUNC_GET_FUNCS_BASE(thr->heap, fun_act)[bc]; + DUK_ASSERT(fun_temp != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC(fun_temp)); + + DUK_DDD(DUK_DDDPRINT("CLOSURE: function template is: %p -> %!O", + (void *) fun_temp, (duk_heaphdr *) fun_temp)); + + if (act->lex_env == NULL) { + DUK_ASSERT(act->var_env == NULL); + duk_js_init_activation_environment_records_delayed(thr, act); + act = thr->callstack_curr; + } + DUK_ASSERT(act->lex_env != NULL); + DUK_ASSERT(act->var_env != NULL); + + /* functions always have a NEWENV flag, i.e. they get a + * new variable declaration environment, so only lex_env + * matters here. + */ + duk_js_push_closure(thr, + (duk_hcompfunc *) fun_temp, + act->var_env, + act->lex_env, + 1 /*add_auto_proto*/); + DUK__REPLACE_TOP_A_BREAK(); + } + + case DUK_OP_GETVAR: { + duk_activation *act; + duk_tval *tv1; + duk_hstring *name; + + tv1 = DUK__CONSTP_BC(ins); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv1)); + name = DUK_TVAL_GET_STRING(tv1); + DUK_ASSERT(name != NULL); + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + (void) duk_js_getvar_activation(thr, act, name, 1 /*throw*/); /* -> [... val this] */ + duk_pop_unsafe(thr); /* 'this' binding is not needed here */ + DUK__REPLACE_TOP_A_BREAK(); + } + + case DUK_OP_PUTVAR: { + duk_activation *act; + duk_tval *tv1; + duk_hstring *name; + + tv1 = DUK__CONSTP_BC(ins); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv1)); + name = DUK_TVAL_GET_STRING(tv1); + DUK_ASSERT(name != NULL); + + /* XXX: putvar takes a duk_tval pointer, which is awkward and + * should be reworked. + */ + + tv1 = DUK__REGP_A(ins); /* val */ + act = thr->callstack_curr; + duk_js_putvar_activation(thr, act, name, tv1, DUK__STRICT()); + break; + } + + case DUK_OP_DELVAR: { + duk_activation *act; + duk_tval *tv1; + duk_hstring *name; + duk_bool_t rc; + + tv1 = DUK__CONSTP_BC(ins); + DUK_ASSERT(DUK_TVAL_IS_STRING(tv1)); + name = DUK_TVAL_GET_STRING(tv1); + DUK_ASSERT(name != NULL); + act = thr->callstack_curr; + rc = duk_js_delvar_activation(thr, act, name); + DUK__REPLACE_BOOL_A_BREAK(rc); + } + + case DUK_OP_JUMP: { + /* Note: without explicit cast to signed, MSVC will + * apparently generate a large positive jump when the + * bias-corrected value would normally be negative. + */ + curr_pc += (duk_int_fast_t) DUK_DEC_ABC(ins) - (duk_int_fast_t) DUK_BC_JUMP_BIAS; + break; + } + +#define DUK__RETURN_SHARED() do { \ + duk_small_uint_t ret_result; \ + /* duk__handle_return() is guaranteed never to throw, except \ + * for potential out-of-memory situations which will then \ + * propagate out of the executor longjmp handler. \ + */ \ + DUK_ASSERT(thr->ptr_curr_pc == NULL); \ + ret_result = duk__handle_return(thr, entry_act); \ + if (ret_result == DUK__RETHAND_RESTART) { \ + goto restart_execution; \ + } \ + DUK_ASSERT(ret_result == DUK__RETHAND_FINISHED); \ + return; \ + } while (0) +#if defined(DUK_USE_EXEC_PREFER_SIZE) + case DUK_OP_RETREG: + case DUK_OP_RETCONST: + case DUK_OP_RETCONSTN: + case DUK_OP_RETUNDEF: { + /* BC -> return value reg/const */ + + DUK__SYNC_AND_NULL_CURR_PC(); + + if (op == DUK_OP_RETREG) { + duk_push_tval(thr, DUK__REGP_BC(ins)); + } else if (op == DUK_OP_RETUNDEF) { + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); /* valstack policy */ + thr->valstack_top++; + } else { + DUK_ASSERT(op == DUK_OP_RETCONST || op == DUK_OP_RETCONSTN); + duk_push_tval(thr, DUK__CONSTP_BC(ins)); + } + + DUK__RETURN_SHARED(); + } +#else /* DUK_USE_EXEC_PREFER_SIZE */ + case DUK_OP_RETREG: { + duk_tval *tv; + + DUK__SYNC_AND_NULL_CURR_PC(); + tv = DUK__REGP_BC(ins); + DUK_TVAL_SET_TVAL(thr->valstack_top, tv); + DUK_TVAL_INCREF(thr, tv); + thr->valstack_top++; + DUK__RETURN_SHARED(); + } + /* This will be unused without refcounting. */ + case DUK_OP_RETCONST: { + duk_tval *tv; + + DUK__SYNC_AND_NULL_CURR_PC(); + tv = DUK__CONSTP_BC(ins); + DUK_TVAL_SET_TVAL(thr->valstack_top, tv); + DUK_TVAL_INCREF(thr, tv); + thr->valstack_top++; + DUK__RETURN_SHARED(); + } + case DUK_OP_RETCONSTN: { + duk_tval *tv; + + DUK__SYNC_AND_NULL_CURR_PC(); + tv = DUK__CONSTP_BC(ins); + DUK_TVAL_SET_TVAL(thr->valstack_top, tv); +#if defined(DUK_USE_REFERENCE_COUNTING) + /* Without refcounting only RETCONSTN is used. */ + DUK_ASSERT(!DUK_TVAL_IS_HEAP_ALLOCATED(tv)); /* no INCREF for this constant */ +#endif + thr->valstack_top++; + DUK__RETURN_SHARED(); + } + case DUK_OP_RETUNDEF: { + DUK__SYNC_AND_NULL_CURR_PC(); + thr->valstack_top++; /* value at valstack top is already undefined by valstack policy */ + DUK_ASSERT(DUK_TVAL_IS_UNDEFINED(thr->valstack_top)); + DUK__RETURN_SHARED(); + } +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + + case DUK_OP_LABEL: { + duk_activation *act; + duk_catcher *cat; + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); + + /* Allocate catcher and populate it (must be atomic). */ + + cat = duk_hthread_catcher_alloc(thr); + DUK_ASSERT(cat != NULL); + + cat->flags = (duk_uint32_t) (DUK_CAT_TYPE_LABEL | (bc << DUK_CAT_LABEL_SHIFT)); + cat->pc_base = (duk_instr_t *) curr_pc; /* pre-incremented, points to first jump slot */ + cat->idx_base = 0; /* unused for label */ + cat->h_varname = NULL; + + act = thr->callstack_curr; + DUK_ASSERT(act != NULL); + cat->parent = act->cat; + act->cat = cat; + + DUK_DDD(DUK_DDDPRINT("LABEL catcher: flags=0x%08lx, pc_base=%ld, " + "idx_base=%ld, h_varname=%!O, label_id=%ld", + (long) cat->flags, (long) cat->pc_base, + (long) cat->idx_base, (duk_heaphdr *) cat->h_varname, (long) DUK_CAT_GET_LABEL(cat))); + + curr_pc += 2; /* skip jump slots */ + break; + } + + case DUK_OP_ENDLABEL: { + duk_activation *act; +#if (defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2)) || defined(DUK_USE_ASSERTIONS) + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); +#endif +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + DUK_DDD(DUK_DDDPRINT("ENDLABEL %ld", (long) bc)); +#endif + + act = thr->callstack_curr; + DUK_ASSERT(act->cat != NULL); + DUK_ASSERT(DUK_CAT_GET_TYPE(act->cat) == DUK_CAT_TYPE_LABEL); + DUK_ASSERT((duk_uint_fast_t) DUK_CAT_GET_LABEL(act->cat) == bc); + duk_hthread_catcher_unwind_nolexenv_norz(thr, act); + + /* no need to unwind callstack */ + break; + } + + case DUK_OP_BREAK: { + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); + + DUK__SYNC_AND_NULL_CURR_PC(); + duk__handle_break_or_continue(thr, (duk_uint_t) bc, DUK_LJ_TYPE_BREAK); + goto restart_execution; + } + + case DUK_OP_CONTINUE: { + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); + + DUK__SYNC_AND_NULL_CURR_PC(); + duk__handle_break_or_continue(thr, (duk_uint_t) bc, DUK_LJ_TYPE_CONTINUE); + goto restart_execution; + } + + /* XXX: move to helper, too large to be inline here */ + case DUK_OP_TRYCATCH: { + duk__handle_op_trycatch(thr, ins, curr_pc); + curr_pc += 2; /* skip jump slots */ + break; + } + + case DUK_OP_ENDTRY: { + curr_pc = duk__handle_op_endtry(thr, ins); + break; + } + + case DUK_OP_ENDCATCH: { + duk__handle_op_endcatch(thr, ins); + break; + } + + case DUK_OP_ENDFIN: { + /* Sync and NULL early. */ + DUK__SYNC_AND_NULL_CURR_PC(); + + if (duk__handle_op_endfin(thr, ins, entry_act) != 0) { + return; + } + + /* Must restart because we NULLed out curr_pc. */ + goto restart_execution; + } + + case DUK_OP_THROW: { + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); + + /* Note: errors are augmented when they are created, not + * when they are thrown. So, don't augment here, it would + * break re-throwing for instance. + */ + + /* Sync so that augmentation sees up-to-date activations, NULL + * thr->ptr_curr_pc so that it's not used if side effects occur + * in augmentation or longjmp handling. + */ + DUK__SYNC_AND_NULL_CURR_PC(); + + duk_dup(thr, (duk_idx_t) bc); + DUK_DDD(DUK_DDDPRINT("THROW ERROR (BYTECODE): %!dT (before throw augment)", + (duk_tval *) duk_get_tval(thr, -1))); +#if defined(DUK_USE_AUGMENT_ERROR_THROW) + duk_err_augment_error_throw(thr); + DUK_DDD(DUK_DDDPRINT("THROW ERROR (BYTECODE): %!dT (after throw augment)", + (duk_tval *) duk_get_tval(thr, -1))); +#endif + + duk_err_setup_ljstate1(thr, DUK_LJ_TYPE_THROW, DUK_GET_TVAL_NEGIDX(thr, -1)); +#if defined(DUK_USE_DEBUGGER_SUPPORT) + duk_err_check_debugger_integration(thr); +#endif + + DUK_ASSERT(thr->heap->lj.jmpbuf_ptr != NULL); /* always in executor */ + duk_err_longjmp(thr); + DUK_UNREACHABLE(); + break; + } + + case DUK_OP_CSREG: { + /* + * Assuming a register binds to a variable declared within this + * function (a declarative binding), the 'this' for the call + * setup is always 'undefined'. E5 Section 10.2.1.1.6. + */ + + duk_small_uint_fast_t a = DUK_DEC_A(ins); + duk_small_uint_fast_t bc = DUK_DEC_BC(ins); + + /* A -> register containing target function (not type checked here) + * BC -> target registers (BC, BC + 1) for call setup + */ + +#if defined(DUK_USE_PREFER_SIZE) + duk_dup(thr, (duk_idx_t) a); + duk_replace(thr, (duk_idx_t) bc); + duk_to_undefined(thr, (duk_idx_t) (bc + 1)); +#else + duk_tval *tv1; + duk_tval *tv2; + duk_tval *tv3; + duk_tval tv_tmp1; + duk_tval tv_tmp2; + + tv1 = DUK__REGP(bc); + tv2 = tv1 + 1; + DUK_TVAL_SET_TVAL(&tv_tmp1, tv1); + DUK_TVAL_SET_TVAL(&tv_tmp2, tv2); + tv3 = DUK__REGP(a); + DUK_TVAL_SET_TVAL(tv1, tv3); + DUK_TVAL_INCREF(thr, tv1); /* no side effects */ + DUK_TVAL_SET_UNDEFINED(tv2); /* no need for incref */ + DUK_TVAL_DECREF(thr, &tv_tmp1); + DUK_TVAL_DECREF(thr, &tv_tmp2); +#endif + break; + } + + + /* XXX: in some cases it's faster NOT to reuse the value + * stack but rather copy the arguments on top of the stack + * (mainly when the calling value stack is large and the value + * stack resize would be large). + */ + + case DUK_OP_CALL0: + case DUK_OP_CALL1: + case DUK_OP_CALL2: + case DUK_OP_CALL3: + case DUK_OP_CALL4: + case DUK_OP_CALL5: + case DUK_OP_CALL6: + case DUK_OP_CALL7: { + /* Opcode packs 4 flag bits: 1 for indirect, 3 map + * 1:1 to three lowest call handling flags. + * + * A -> nargs or register with nargs (indirect) + * BC -> base register for call (base -> func, base+1 -> this, base+2 -> arg1 ... base+2+N-1 -> argN) + */ + + duk_idx_t nargs; + duk_idx_t idx; + duk_small_uint_t call_flags; +#if !defined(DUK_USE_EXEC_FUN_LOCAL) + duk_hcompfunc *fun; +#endif + + DUK_ASSERT((DUK_OP_CALL0 & 0x0fU) == 0); + DUK_ASSERT((ins & DUK_BC_CALL_FLAG_INDIRECT) == 0); + + nargs = (duk_idx_t) DUK_DEC_A(ins); + call_flags = (ins & 0x07U) | DUK_CALL_FLAG_ALLOW_ECMATOECMA; + idx = (duk_idx_t) DUK_DEC_BC(ins); + + if (duk__executor_handle_call(thr, idx, nargs, call_flags)) { + /* curr_pc synced by duk_handle_call_unprotected() */ + DUK_ASSERT(thr->ptr_curr_pc == NULL); + goto restart_execution; + } + DUK_ASSERT(thr->ptr_curr_pc != NULL); + + /* duk_js_call.c is required to restore the stack reserve + * so we only need to reset the top. + */ +#if !defined(DUK_USE_EXEC_FUN_LOCAL) + fun = DUK__FUN(); +#endif + duk_set_top_unsafe(thr, (duk_idx_t) fun->nregs); + + /* No need to reinit setjmp() catchpoint, as call handling + * will store and restore our state. + * + * When debugger is enabled, we need to recheck the activation + * status after returning. This is now handled by call handling + * and heap->dbg_force_restart. + */ + break; + } + + case DUK_OP_CALL8: + case DUK_OP_CALL9: + case DUK_OP_CALL10: + case DUK_OP_CALL11: + case DUK_OP_CALL12: + case DUK_OP_CALL13: + case DUK_OP_CALL14: + case DUK_OP_CALL15: { + /* Indirect variant. */ + duk_uint_fast_t nargs; + duk_idx_t idx; + duk_small_uint_t call_flags; +#if !defined(DUK_USE_EXEC_FUN_LOCAL) + duk_hcompfunc *fun; +#endif + + DUK_ASSERT((DUK_OP_CALL0 & 0x0fU) == 0); + DUK_ASSERT((ins & DUK_BC_CALL_FLAG_INDIRECT) != 0); + + nargs = (duk_uint_fast_t) DUK_DEC_A(ins); + DUK__LOOKUP_INDIRECT(nargs); + call_flags = (ins & 0x07U) | DUK_CALL_FLAG_ALLOW_ECMATOECMA; + idx = (duk_idx_t) DUK_DEC_BC(ins); + + if (duk__executor_handle_call(thr, idx, (duk_idx_t) nargs, call_flags)) { + DUK_ASSERT(thr->ptr_curr_pc == NULL); + goto restart_execution; + } + DUK_ASSERT(thr->ptr_curr_pc != NULL); + +#if !defined(DUK_USE_EXEC_FUN_LOCAL) + fun = DUK__FUN(); +#endif + duk_set_top_unsafe(thr, (duk_idx_t) fun->nregs); + break; + } + + case DUK_OP_NEWOBJ: { + duk_push_object(thr); +#if defined(DUK_USE_ASSERTIONS) + { + duk_hobject *h; + h = duk_require_hobject(thr, -1); + DUK_ASSERT(DUK_HOBJECT_GET_ESIZE(h) == 0); + DUK_ASSERT(DUK_HOBJECT_GET_ENEXT(h) == 0); + DUK_ASSERT(DUK_HOBJECT_GET_ASIZE(h) == 0); + DUK_ASSERT(DUK_HOBJECT_GET_HSIZE(h) == 0); + } +#endif +#if !defined(DUK_USE_PREFER_SIZE) + /* XXX: could do a direct props realloc, but need hash size */ + duk_hobject_resize_entrypart(thr, duk_known_hobject(thr, -1), DUK_DEC_A(ins)); +#endif + DUK__REPLACE_TOP_BC_BREAK(); + } + + case DUK_OP_NEWARR: { + duk_push_array(thr); +#if defined(DUK_USE_ASSERTIONS) + { + duk_hobject *h; + h = duk_require_hobject(thr, -1); + DUK_ASSERT(DUK_HOBJECT_GET_ESIZE(h) == 0); + DUK_ASSERT(DUK_HOBJECT_GET_ENEXT(h) == 0); + DUK_ASSERT(DUK_HOBJECT_GET_ASIZE(h) == 0); + DUK_ASSERT(DUK_HOBJECT_GET_HSIZE(h) == 0); + DUK_ASSERT(DUK_HOBJECT_HAS_ARRAY_PART(h)); + } +#endif +#if !defined(DUK_USE_PREFER_SIZE) + duk_hobject_realloc_props(thr, + duk_known_hobject(thr, -1), + 0 /*new_e_size*/, + DUK_DEC_A(ins) /*new_a_size*/, + 0 /*new_h_size*/, + 0 /*abandon_array*/); +#if 0 + duk_hobject_resize_arraypart(thr, duk_known_hobject(thr, -1), DUK_DEC_A(ins)); +#endif +#endif + DUK__REPLACE_TOP_BC_BREAK(); + } + + case DUK_OP_MPUTOBJ: + case DUK_OP_MPUTOBJI: { + duk_idx_t obj_idx; + duk_uint_fast_t idx, idx_end; + duk_small_uint_fast_t count; + + /* A -> register of target object + * B -> first register of key/value pair list + * or register containing first register number if indirect + * C -> number of key/value pairs * 2 + * (= number of value stack indices used starting from 'B') + */ + + obj_idx = DUK_DEC_A(ins); + DUK_ASSERT(duk_is_object(thr, obj_idx)); + + idx = (duk_uint_fast_t) DUK_DEC_B(ins); + if (DUK_DEC_OP(ins) == DUK_OP_MPUTOBJI) { + DUK__LOOKUP_INDIRECT(idx); + } + + count = (duk_small_uint_fast_t) DUK_DEC_C(ins); + DUK_ASSERT(count > 0); /* compiler guarantees */ + idx_end = idx + count; + +#if defined(DUK_USE_EXEC_INDIRECT_BOUND_CHECK) + if (DUK_UNLIKELY(idx_end > (duk_uint_fast_t) duk_get_top(thr))) { + /* XXX: use duk_is_valid_index() instead? */ + /* XXX: improve check; check against nregs, not against top */ + DUK__INTERNAL_ERROR("MPUTOBJ out of bounds"); + } +#endif + + /* Use 'force' flag to duk_def_prop() to ensure that any + * inherited properties don't prevent the operation. + * With ES2015 duplicate properties are allowed, so that we + * must overwrite any previous data or accessor property. + * + * With ES2015 computed property names the literal keys + * may be arbitrary values and need to be ToPropertyKey() + * coerced at runtime. + */ + do { + /* XXX: faster initialization (direct access or better primitives) */ + duk_dup(thr, (duk_idx_t) idx); + duk_dup(thr, (duk_idx_t) (idx + 1)); + duk_def_prop(thr, obj_idx, DUK_DEFPROP_HAVE_VALUE | + DUK_DEFPROP_FORCE | + DUK_DEFPROP_SET_WRITABLE | + DUK_DEFPROP_SET_ENUMERABLE | + DUK_DEFPROP_SET_CONFIGURABLE); + idx += 2; + } while (idx < idx_end); + break; + } + + case DUK_OP_INITSET: + case DUK_OP_INITGET: { + duk__handle_op_initset_initget(thr, ins); + break; + } + + case DUK_OP_MPUTARR: + case DUK_OP_MPUTARRI: { + duk_idx_t obj_idx; + duk_uint_fast_t idx, idx_end; + duk_small_uint_fast_t count; + duk_tval *tv1; + duk_uint32_t arr_idx; + + /* A -> register of target object + * B -> first register of value data (start_index, value1, value2, ..., valueN) + * or register containing first register number if indirect + * C -> number of key/value pairs (N) + */ + + obj_idx = DUK_DEC_A(ins); + DUK_ASSERT(duk_is_object(thr, obj_idx)); + + idx = (duk_uint_fast_t) DUK_DEC_B(ins); + if (DUK_DEC_OP(ins) == DUK_OP_MPUTARRI) { + DUK__LOOKUP_INDIRECT(idx); + } + + count = (duk_small_uint_fast_t) DUK_DEC_C(ins); + DUK_ASSERT(count > 0 + 1); /* compiler guarantees */ + idx_end = idx + count; + +#if defined(DUK_USE_EXEC_INDIRECT_BOUND_CHECK) + if (idx_end > (duk_uint_fast_t) duk_get_top(thr)) { + /* XXX: use duk_is_valid_index() instead? */ + /* XXX: improve check; check against nregs, not against top */ + DUK__INTERNAL_ERROR("MPUTARR out of bounds"); + } +#endif + + tv1 = DUK__REGP(idx); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv1)); +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv1)); + arr_idx = (duk_uint32_t) DUK_TVAL_GET_FASTINT_U32(tv1); +#else + arr_idx = (duk_uint32_t) DUK_TVAL_GET_NUMBER(tv1); +#endif + idx++; + + do { + /* duk_xdef_prop() will define an own property without any array + * special behaviors. We'll need to set the array length explicitly + * in the end. For arrays with elisions, the compiler will emit an + * explicit SETALEN which will update the length. + */ + + /* XXX: because we're dealing with 'own' properties of a fresh array, + * the array initializer should just ensure that the array has a large + * enough array part and write the values directly into array part, + * and finally set 'length' manually in the end (as already happens now). + */ + + duk_dup(thr, (duk_idx_t) idx); + duk_xdef_prop_index_wec(thr, obj_idx, arr_idx); + + idx++; + arr_idx++; + } while (idx < idx_end); + + /* XXX: E5.1 Section 11.1.4 coerces the final length through + * ToUint32() which is odd but happens now as a side effect of + * 'arr_idx' type. + */ + duk_set_length(thr, obj_idx, (duk_size_t) (duk_uarridx_t) arr_idx); + break; + } + + case DUK_OP_SETALEN: { + duk_tval *tv1; + duk_hobject *h; + duk_uint32_t len; + + tv1 = DUK__REGP_A(ins); + DUK_ASSERT(DUK_TVAL_IS_OBJECT(tv1)); + h = DUK_TVAL_GET_OBJECT(tv1); + DUK_ASSERT(DUK_HOBJECT_IS_ARRAY(h)); + + tv1 = DUK__REGP_BC(ins); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv1)); +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv1)); + len = (duk_uint32_t) DUK_TVAL_GET_FASTINT_U32(tv1); +#else + len = (duk_uint32_t) DUK_TVAL_GET_NUMBER(tv1); +#endif + ((duk_harray *) h)->length = len; + break; + } + + case DUK_OP_INITENUM: { + duk__handle_op_initenum(thr, ins); + break; + } + + case DUK_OP_NEXTENUM: { + curr_pc += duk__handle_op_nextenum(thr, ins); + break; + } + + case DUK_OP_INVLHS: { + DUK_ERROR_REFERENCE(thr, DUK_STR_INVALID_LVALUE); + DUK_WO_NORETURN(return;); + break; + } + + case DUK_OP_DEBUGGER: { + /* Opcode only emitted by compiler when debugger + * support is enabled. Ignore it silently without + * debugger support, in case it has been loaded + * from precompiled bytecode. + */ +#if defined(DUK_USE_DEBUGGER_SUPPORT) + if (duk_debug_is_attached(thr->heap)) { + DUK_D(DUK_DPRINT("DEBUGGER statement encountered, halt execution")); + DUK__SYNC_AND_NULL_CURR_PC(); + duk_debug_halt_execution(thr, 1 /*use_prev_pc*/); + DUK_D(DUK_DPRINT("DEBUGGER statement finished, resume execution")); + goto restart_execution; + } else { + DUK_D(DUK_DPRINT("DEBUGGER statement ignored, debugger not attached")); + } +#else + DUK_D(DUK_DPRINT("DEBUGGER statement ignored, no debugger support")); +#endif + break; + } + + case DUK_OP_NOP: { + /* Nop, ignored, but ABC fields may carry a value e.g. + * for indirect opcode handling. + */ + break; + } + + case DUK_OP_INVALID: { + DUK_ERROR_FMT1(thr, DUK_ERR_ERROR, "INVALID opcode (%ld)", (long) DUK_DEC_ABC(ins)); + DUK_WO_NORETURN(return;); + break; + } + +#if defined(DUK_USE_ES6) + case DUK_OP_NEWTARGET: { + duk_push_new_target(thr); + DUK__REPLACE_TOP_BC_BREAK(); + } +#endif /* DUK_USE_ES6 */ + +#if !defined(DUK_USE_EXEC_PREFER_SIZE) +#if !defined(DUK_USE_ES7_EXP_OPERATOR) + case DUK_OP_EXP_RR: + case DUK_OP_EXP_CR: + case DUK_OP_EXP_RC: + case DUK_OP_EXP_CC: +#endif +#if !defined(DUK_USE_ES6) + case DUK_OP_NEWTARGET: +#endif +#if !defined(DUK_USE_VERBOSE_ERRORS) + case DUK_OP_GETPROPC_RR: + case DUK_OP_GETPROPC_CR: + case DUK_OP_GETPROPC_RC: + case DUK_OP_GETPROPC_CC: +#endif + case DUK_OP_UNUSED207: + case DUK_OP_UNUSED212: + case DUK_OP_UNUSED213: + case DUK_OP_UNUSED214: + case DUK_OP_UNUSED215: + case DUK_OP_UNUSED216: + case DUK_OP_UNUSED217: + case DUK_OP_UNUSED218: + case DUK_OP_UNUSED219: + case DUK_OP_UNUSED220: + case DUK_OP_UNUSED221: + case DUK_OP_UNUSED222: + case DUK_OP_UNUSED223: + case DUK_OP_UNUSED224: + case DUK_OP_UNUSED225: + case DUK_OP_UNUSED226: + case DUK_OP_UNUSED227: + case DUK_OP_UNUSED228: + case DUK_OP_UNUSED229: + case DUK_OP_UNUSED230: + case DUK_OP_UNUSED231: + case DUK_OP_UNUSED232: + case DUK_OP_UNUSED233: + case DUK_OP_UNUSED234: + case DUK_OP_UNUSED235: + case DUK_OP_UNUSED236: + case DUK_OP_UNUSED237: + case DUK_OP_UNUSED238: + case DUK_OP_UNUSED239: + case DUK_OP_UNUSED240: + case DUK_OP_UNUSED241: + case DUK_OP_UNUSED242: + case DUK_OP_UNUSED243: + case DUK_OP_UNUSED244: + case DUK_OP_UNUSED245: + case DUK_OP_UNUSED246: + case DUK_OP_UNUSED247: + case DUK_OP_UNUSED248: + case DUK_OP_UNUSED249: + case DUK_OP_UNUSED250: + case DUK_OP_UNUSED251: + case DUK_OP_UNUSED252: + case DUK_OP_UNUSED253: + case DUK_OP_UNUSED254: + case DUK_OP_UNUSED255: + /* Force all case clauses to map to an actual handler + * so that the compiler can emit a jump without a bounds + * check: the switch argument is a duk_uint8_t so that + * the compiler may be able to figure it out. This is + * a small detail and obviously compiler dependent. + */ + /* default: clause omitted on purpose */ +#else /* DUK_USE_EXEC_PREFER_SIZE */ + default: +#endif /* DUK_USE_EXEC_PREFER_SIZE */ + { + /* Default case catches invalid/unsupported opcodes. */ + DUK_D(DUK_DPRINT("invalid opcode: %ld - %!I", (long) op, ins)); + DUK__INTERNAL_ERROR("invalid opcode"); + break; + } + + } /* end switch */ + + continue; + + /* Some shared exit paths for opcode handling below. These + * are mostly useful to reduce code footprint when multiple + * opcodes have a similar epilogue (like replacing stack top + * with index 'a'). + */ + +#if defined(DUK_USE_EXEC_PREFER_SIZE) + replace_top_a: + DUK__REPLACE_TO_TVPTR(thr, DUK__REGP_A(ins)); + continue; + replace_top_bc: + DUK__REPLACE_TO_TVPTR(thr, DUK__REGP_BC(ins)); + continue; +#endif + } + DUK_WO_NORETURN(return;); + +#if !defined(DUK_USE_VERBOSE_EXECUTOR_ERRORS) + internal_error: + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return;); +#endif +} + +/* automatic undefs */ +#undef DUK__BYTEOFF_A +#undef DUK__BYTEOFF_B +#undef DUK__BYTEOFF_BC +#undef DUK__BYTEOFF_C +#undef DUK__COMPARE_BODY +#undef DUK__CONST +#undef DUK__CONSTP +#undef DUK__CONSTP_A +#undef DUK__CONSTP_B +#undef DUK__CONSTP_BC +#undef DUK__CONSTP_C +#undef DUK__DELPROP_BODY +#undef DUK__EQ_BODY +#undef DUK__FUN +#undef DUK__GETPROPC_BODY +#undef DUK__GETPROP_BODY +#undef DUK__GE_BODY +#undef DUK__GT_BODY +#undef DUK__INSTOF_BODY +#undef DUK__INTERNAL_ERROR +#undef DUK__INT_NOACTION +#undef DUK__INT_RESTART +#undef DUK__IN_BODY +#undef DUK__LE_BODY +#undef DUK__LONGJMP_RESTART +#undef DUK__LONGJMP_RETHROW +#undef DUK__LOOKUP_INDIRECT +#undef DUK__LT_BODY +#undef DUK__MASK_A +#undef DUK__MASK_B +#undef DUK__MASK_BC +#undef DUK__MASK_C +#undef DUK__NEQ_BODY +#undef DUK__PUTPROP_BODY +#undef DUK__RCBIT_B +#undef DUK__RCBIT_C +#undef DUK__REG +#undef DUK__REGCONSTP_B +#undef DUK__REGCONSTP_C +#undef DUK__REGP +#undef DUK__REGP_A +#undef DUK__REGP_B +#undef DUK__REGP_BC +#undef DUK__REGP_C +#undef DUK__REPLACE_BOOL_A_BREAK +#undef DUK__REPLACE_TOP_A_BREAK +#undef DUK__REPLACE_TOP_BC_BREAK +#undef DUK__REPLACE_TO_TVPTR +#undef DUK__RETHAND_FINISHED +#undef DUK__RETHAND_RESTART +#undef DUK__RETURN_SHARED +#undef DUK__SEQ_BODY +#undef DUK__SHIFT_A +#undef DUK__SHIFT_B +#undef DUK__SHIFT_BC +#undef DUK__SHIFT_C +#undef DUK__SNEQ_BODY +#undef DUK__STRICT +#undef DUK__SYNC_AND_NULL_CURR_PC +#undef DUK__SYNC_CURR_PC +#undef DUK__TVAL_SHIFT +#line 1 "duk_js_ops.c" +/* + * ECMAScript specification algorithm and conversion helpers. + * + * These helpers encapsulate the primitive ECMAScript operation semantics, + * and are used by the bytecode executor and the API (among other places). + * Some primitives are only implemented as part of the API and have no + * "internal" helper. This is the case when an internal helper would not + * really be useful; e.g. the operation is rare, uses value stack heavily, + * etc. + * + * The operation arguments depend on what is required to implement + * the operation: + * + * - If an operation is simple and stateless, and has no side + * effects, it won't take an duk_hthread argument and its + * arguments may be duk_tval pointers (which are safe as long + * as no side effects take place). + * + * - If complex coercions are required (e.g. a "ToNumber" coercion) + * or errors may be thrown, the operation takes an duk_hthread + * argument. This also implies that the operation may have + * arbitrary side effects, invalidating any duk_tval pointers. + * + * - For operations with potential side effects, arguments can be + * taken in several ways: + * + * a) as duk_tval pointers, which makes sense if the "common case" + * can be resolved without side effects (e.g. coercion); the + * arguments are pushed to the valstack for coercion if + * necessary + * + * b) as duk_tval values + * + * c) implicitly on value stack top + * + * d) as indices to the value stack + * + * Future work: + * + * - Argument styles may not be the most sensible in every case now. + * + * - In-place coercions might be useful for several operations, if + * in-place coercion is OK for the bytecode executor and the API. + */ + +/* #include duk_internal.h -> already included */ + +/* + * ToPrimitive() (E5 Section 9.1) + * + * ==> implemented in the API. + */ + +/* + * ToBoolean() (E5 Section 9.2) + */ + +DUK_INTERNAL duk_bool_t duk_js_toboolean(duk_tval *tv) { + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: + return 0; + case DUK_TAG_BOOLEAN: + DUK_ASSERT(DUK_TVAL_GET_BOOLEAN(tv) == 0 || DUK_TVAL_GET_BOOLEAN(tv) == 1); + return DUK_TVAL_GET_BOOLEAN(tv); + case DUK_TAG_STRING: { + /* Symbols ToBoolean() coerce to true, regardless of their + * description. This happens with no explicit check because + * of the symbol representation byte prefix. + */ + duk_hstring *h = DUK_TVAL_GET_STRING(tv); + DUK_ASSERT(h != NULL); + return (DUK_HSTRING_GET_BYTELEN(h) > 0 ? 1 : 0); + } + case DUK_TAG_OBJECT: { + return 1; + } + case DUK_TAG_BUFFER: { + /* Mimic Uint8Array semantics: objects coerce true, regardless + * of buffer length (zero or not) or context. + */ + return 1; + } + case DUK_TAG_POINTER: { + void *p = DUK_TVAL_GET_POINTER(tv); + return (p != NULL ? 1 : 0); + } + case DUK_TAG_LIGHTFUNC: { + return 1; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: + if (DUK_TVAL_GET_FASTINT(tv) != 0) { + return 1; + } else { + return 0; + } +#endif + default: { + /* number */ + duk_double_t d; +#if defined(DUK_USE_PREFER_SIZE) + int c; +#endif + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_DOUBLE(tv)); + d = DUK_TVAL_GET_DOUBLE(tv); +#if defined(DUK_USE_PREFER_SIZE) + c = DUK_FPCLASSIFY((double) d); + if (c == DUK_FP_ZERO || c == DUK_FP_NAN) { + return 0; + } else { + return 1; + } +#else + DUK_ASSERT(duk_double_is_nan_or_zero(d) == 0 || duk_double_is_nan_or_zero(d) == 1); + return duk_double_is_nan_or_zero(d) ^ 1; +#endif + } + } + DUK_UNREACHABLE(); + DUK_WO_UNREACHABLE(return 0;); +} + +/* + * ToNumber() (E5 Section 9.3) + * + * Value to convert must be on stack top, and is popped before exit. + * + * See: http://www.cs.indiana.edu/~burger/FP-Printing-PLDI96.pdf + * http://www.cs.indiana.edu/~burger/fp/index.html + * + * Notes on the conversion: + * + * - There are specific requirements on the accuracy of the conversion + * through a "Mathematical Value" (MV), so this conversion is not + * trivial. + * + * - Quick rejects (e.g. based on first char) are difficult because + * the grammar allows leading and trailing white space. + * + * - Quick reject based on string length is difficult even after + * accounting for white space; there may be arbitrarily many + * decimal digits. + * + * - Standard grammar allows decimal values ("123"), hex values + * ("0x123") and infinities + * + * - Unlike source code literals, ToNumber() coerces empty strings + * and strings with only whitespace to zero (not NaN). However, + * while '' coerces to 0, '+' and '-' coerce to NaN. + */ + +/* E5 Section 9.3.1 */ +DUK_LOCAL duk_double_t duk__tonumber_string_raw(duk_hthread *thr) { + duk_small_uint_t s2n_flags; + duk_double_t d; + + DUK_ASSERT(duk_is_string(thr, -1)); + + /* Quite lenient, e.g. allow empty as zero, but don't allow trailing + * garbage. + */ + s2n_flags = DUK_S2N_FLAG_TRIM_WHITE | + DUK_S2N_FLAG_ALLOW_EXP | + DUK_S2N_FLAG_ALLOW_PLUS | + DUK_S2N_FLAG_ALLOW_MINUS | + DUK_S2N_FLAG_ALLOW_INF | + DUK_S2N_FLAG_ALLOW_FRAC | + DUK_S2N_FLAG_ALLOW_NAKED_FRAC | + DUK_S2N_FLAG_ALLOW_EMPTY_FRAC | + DUK_S2N_FLAG_ALLOW_EMPTY_AS_ZERO | + DUK_S2N_FLAG_ALLOW_LEADING_ZERO | + DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT | + DUK_S2N_FLAG_ALLOW_AUTO_OCT_INT | + DUK_S2N_FLAG_ALLOW_AUTO_BIN_INT; + + duk_numconv_parse(thr, 10 /*radix*/, s2n_flags); + +#if defined(DUK_USE_PREFER_SIZE) + d = duk_get_number(thr, -1); + duk_pop_unsafe(thr); +#else + thr->valstack_top--; + DUK_ASSERT(DUK_TVAL_IS_NUMBER(thr->valstack_top)); + DUK_ASSERT(DUK_TVAL_IS_DOUBLE(thr->valstack_top)); /* no fastint conversion in numconv now */ + DUK_ASSERT(!DUK_TVAL_NEEDS_REFCOUNT_UPDATE(thr->valstack_top)); + d = DUK_TVAL_GET_DOUBLE(thr->valstack_top); /* assumes not a fastint */ + DUK_TVAL_SET_UNDEFINED(thr->valstack_top); +#endif + + return d; +} + +DUK_INTERNAL duk_double_t duk_js_tonumber(duk_hthread *thr, duk_tval *tv) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(tv != NULL); + + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_UNDEFINED: { + /* return a specific NaN (although not strictly necessary) */ + duk_double_union du; + DUK_DBLUNION_SET_NAN(&du); + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + return du.d; + } + case DUK_TAG_NULL: { + /* +0.0 */ + return 0.0; + } + case DUK_TAG_BOOLEAN: { + if (DUK_TVAL_IS_BOOLEAN_TRUE(tv)) { + return 1.0; + } + return 0.0; + } + case DUK_TAG_STRING: { + /* For Symbols ToNumber() is always a TypeError. */ + duk_hstring *h = DUK_TVAL_GET_STRING(tv); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(h))) { + DUK_ERROR_TYPE(thr, DUK_STR_CANNOT_NUMBER_COERCE_SYMBOL); + DUK_WO_NORETURN(return 0.0;); + } + duk_push_hstring(thr, h); + return duk__tonumber_string_raw(thr); + } + case DUK_TAG_BUFFER: /* plain buffer treated like object */ + case DUK_TAG_OBJECT: { + duk_double_t d; + duk_push_tval(thr, tv); + duk_to_primitive(thr, -1, DUK_HINT_NUMBER); /* 'tv' becomes invalid */ + + /* recursive call for a primitive value (guaranteed not to cause second + * recursion). + */ + DUK_ASSERT(duk_get_tval(thr, -1) != NULL); + d = duk_js_tonumber(thr, duk_get_tval(thr, -1)); + + duk_pop_unsafe(thr); + return d; + } + case DUK_TAG_POINTER: { + /* Coerce like boolean */ + void *p = DUK_TVAL_GET_POINTER(tv); + return (p != NULL ? 1.0 : 0.0); + } + case DUK_TAG_LIGHTFUNC: { + /* +(function(){}) -> NaN */ + return DUK_DOUBLE_NAN; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: + return (duk_double_t) DUK_TVAL_GET_FASTINT(tv); +#endif + default: { + /* number */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv)); + DUK_ASSERT(DUK_TVAL_IS_DOUBLE(tv)); + return DUK_TVAL_GET_DOUBLE(tv); + } + } + + DUK_UNREACHABLE(); + DUK_WO_UNREACHABLE(return 0.0;); +} + +/* + * ToInteger() (E5 Section 9.4) + */ + +/* exposed, used by e.g. duk_bi_date.c */ +DUK_INTERNAL duk_double_t duk_js_tointeger_number(duk_double_t x) { +#if defined(DUK_USE_PREFER_SIZE) + duk_small_int_t c = (duk_small_int_t) DUK_FPCLASSIFY(x); + + if (DUK_UNLIKELY(c == DUK_FP_NAN)) { + return 0.0; + } else if (DUK_UNLIKELY(c == DUK_FP_INFINITE)) { + return x; + } else { + /* Finite, including neg/pos zero. Neg zero sign must be + * preserved. + */ + return duk_double_trunc_towards_zero(x); + } +#else /* DUK_USE_PREFER_SIZE */ + /* NaN and Infinity have the same exponent so it's a cheap + * initial check for the rare path. + */ + if (DUK_UNLIKELY(duk_double_is_nan_or_inf(x) != 0U)) { + if (duk_double_is_nan(x)) { + return 0.0; + } else { + return x; + } + } else { + return duk_double_trunc_towards_zero(x); + } +#endif /* DUK_USE_PREFER_SIZE */ +} + +DUK_INTERNAL duk_double_t duk_js_tointeger(duk_hthread *thr, duk_tval *tv) { + /* XXX: fastint */ + duk_double_t d = duk_js_tonumber(thr, tv); /* invalidates tv */ + return duk_js_tointeger_number(d); +} + +/* + * ToInt32(), ToUint32(), ToUint16() (E5 Sections 9.5, 9.6, 9.7) + */ + +/* combined algorithm matching E5 Sections 9.5 and 9.6 */ +DUK_LOCAL duk_double_t duk__toint32_touint32_helper(duk_double_t x, duk_bool_t is_toint32) { +#if defined (DUK_USE_PREFER_SIZE) + duk_small_int_t c; +#endif + +#if defined (DUK_USE_PREFER_SIZE) + c = (duk_small_int_t) DUK_FPCLASSIFY(x); + if (c == DUK_FP_NAN || c == DUK_FP_ZERO || c == DUK_FP_INFINITE) { + return 0.0; + } +#else + if (duk_double_is_nan_zero_inf(x)) { + return 0.0; + } +#endif + + /* x = sign(x) * floor(abs(x)), i.e. truncate towards zero, keep sign */ + x = duk_double_trunc_towards_zero(x); + + /* NOTE: fmod(x) result sign is same as sign of x, which + * differs from what Javascript wants (see Section 9.6). + */ + + x = DUK_FMOD(x, DUK_DOUBLE_2TO32); /* -> x in ]-2**32, 2**32[ */ + + if (x < 0.0) { + x += DUK_DOUBLE_2TO32; + } + DUK_ASSERT(x >= 0 && x < DUK_DOUBLE_2TO32); /* -> x in [0, 2**32[ */ + + if (is_toint32) { + if (x >= DUK_DOUBLE_2TO31) { + /* x in [2**31, 2**32[ */ + + x -= DUK_DOUBLE_2TO32; /* -> x in [-2**31,2**31[ */ + } + } + + return x; +} + +DUK_INTERNAL duk_int32_t duk_js_toint32(duk_hthread *thr, duk_tval *tv) { + duk_double_t d; + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + return DUK_TVAL_GET_FASTINT_I32(tv); + } +#endif + + d = duk_js_tonumber(thr, tv); /* invalidates tv */ + d = duk__toint32_touint32_helper(d, 1); + DUK_ASSERT(DUK_FPCLASSIFY(d) == DUK_FP_ZERO || DUK_FPCLASSIFY(d) == DUK_FP_NORMAL); + DUK_ASSERT(d >= -2147483648.0 && d <= 2147483647.0); /* [-0x80000000,0x7fffffff] */ + DUK_ASSERT(duk_double_equals(d, (duk_double_t) ((duk_int32_t) d))); /* whole, won't clip */ + return (duk_int32_t) d; +} + + +DUK_INTERNAL duk_uint32_t duk_js_touint32(duk_hthread *thr, duk_tval *tv) { + duk_double_t d; + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv)) { + return DUK_TVAL_GET_FASTINT_U32(tv); + } +#endif + + d = duk_js_tonumber(thr, tv); /* invalidates tv */ + d = duk__toint32_touint32_helper(d, 0); + DUK_ASSERT(DUK_FPCLASSIFY(d) == DUK_FP_ZERO || DUK_FPCLASSIFY(d) == DUK_FP_NORMAL); + DUK_ASSERT(d >= 0.0 && d <= 4294967295.0); /* [0x00000000, 0xffffffff] */ + DUK_ASSERT(duk_double_equals(d, (duk_double_t) ((duk_uint32_t) d))); /* whole, won't clip */ + return (duk_uint32_t) d; + +} + +DUK_INTERNAL duk_uint16_t duk_js_touint16(duk_hthread *thr, duk_tval *tv) { + /* should be a safe way to compute this */ + return (duk_uint16_t) (duk_js_touint32(thr, tv) & 0x0000ffffU); +} + +/* + * ToString() (E5 Section 9.8) + * ToObject() (E5 Section 9.9) + * CheckObjectCoercible() (E5 Section 9.10) + * IsCallable() (E5 Section 9.11) + * + * ==> implemented in the API. + */ + +/* + * Loose equality, strict equality, and SameValue (E5 Sections 11.9.1, 11.9.4, + * 9.12). These have much in common so they can share some helpers. + * + * Future work notes: + * + * - Current implementation (and spec definition) has recursion; this should + * be fixed if possible. + * + * - String-to-number coercion should be possible without going through the + * value stack (and be more compact) if a shared helper is invoked. + */ + +/* Note that this is the same operation for strict and loose equality: + * - E5 Section 11.9.3, step 1.c (loose) + * - E5 Section 11.9.6, step 4 (strict) + */ + +DUK_LOCAL duk_bool_t duk__js_equals_number(duk_double_t x, duk_double_t y) { +#if defined(DUK_USE_PARANOID_MATH) + /* Straightforward algorithm, makes fewer compiler assumptions. */ + duk_small_int_t cx = (duk_small_int_t) DUK_FPCLASSIFY(x); + duk_small_int_t cy = (duk_small_int_t) DUK_FPCLASSIFY(y); + if (cx == DUK_FP_NAN || cy == DUK_FP_NAN) { + return 0; + } + if (cx == DUK_FP_ZERO && cy == DUK_FP_ZERO) { + return 1; + } + if (x == y) { + return 1; + } + return 0; +#else /* DUK_USE_PARANOID_MATH */ + /* Better equivalent algorithm. If the compiler is compliant, C and + * ECMAScript semantics are identical for this particular comparison. + * In particular, NaNs must never compare equal and zeroes must compare + * equal regardless of sign. Could also use a macro, but this inlines + * already nicely (no difference on gcc, for instance). + */ + if (duk_double_equals(x, y)) { + /* IEEE requires that NaNs compare false */ + DUK_ASSERT(DUK_FPCLASSIFY(x) != DUK_FP_NAN); + DUK_ASSERT(DUK_FPCLASSIFY(y) != DUK_FP_NAN); + return 1; + } else { + /* IEEE requires that zeros compare the same regardless + * of their signed, so if both x and y are zeroes, they + * are caught above. + */ + DUK_ASSERT(!(DUK_FPCLASSIFY(x) == DUK_FP_ZERO && DUK_FPCLASSIFY(y) == DUK_FP_ZERO)); + return 0; + } +#endif /* DUK_USE_PARANOID_MATH */ +} + +DUK_LOCAL duk_bool_t duk__js_samevalue_number(duk_double_t x, duk_double_t y) { +#if defined(DUK_USE_PARANOID_MATH) + duk_small_int_t cx = (duk_small_int_t) DUK_FPCLASSIFY(x); + duk_small_int_t cy = (duk_small_int_t) DUK_FPCLASSIFY(y); + + if (cx == DUK_FP_NAN && cy == DUK_FP_NAN) { + /* SameValue(NaN, NaN) = true, regardless of NaN sign or extra bits */ + return 1; + } + if (cx == DUK_FP_ZERO && cy == DUK_FP_ZERO) { + /* Note: cannot assume that a non-zero return value of signbit() would + * always be the same -- hence cannot (portably) use something like: + * + * signbit(x) == signbit(y) + */ + duk_small_int_t sx = DUK_SIGNBIT(x) ? 1 : 0; + duk_small_int_t sy = DUK_SIGNBIT(y) ? 1 : 0; + return (sx == sy); + } + + /* normal comparison; known: + * - both x and y are not NaNs (but one of them can be) + * - both x and y are not zero (but one of them can be) + * - x and y may be denormal or infinite + */ + + return (x == y); +#else /* DUK_USE_PARANOID_MATH */ + duk_small_int_t cx = (duk_small_int_t) DUK_FPCLASSIFY(x); + duk_small_int_t cy = (duk_small_int_t) DUK_FPCLASSIFY(y); + + if (duk_double_equals(x, y)) { + /* IEEE requires that NaNs compare false */ + DUK_ASSERT(DUK_FPCLASSIFY(x) != DUK_FP_NAN); + DUK_ASSERT(DUK_FPCLASSIFY(y) != DUK_FP_NAN); + + /* Using classification has smaller footprint than direct comparison. */ + if (DUK_UNLIKELY(cx == DUK_FP_ZERO && cy == DUK_FP_ZERO)) { + /* Note: cannot assume that a non-zero return value of signbit() would + * always be the same -- hence cannot (portably) use something like: + * + * signbit(x) == signbit(y) + */ + return duk_double_same_sign(x, y); + } + return 1; + } else { + /* IEEE requires that zeros compare the same regardless + * of their sign, so if both x and y are zeroes, they + * are caught above. + */ + DUK_ASSERT(!(DUK_FPCLASSIFY(x) == DUK_FP_ZERO && DUK_FPCLASSIFY(y) == DUK_FP_ZERO)); + + /* Difference to non-strict/strict comparison is that NaNs compare + * equal and signed zero signs matter. + */ + if (DUK_UNLIKELY(cx == DUK_FP_NAN && cy == DUK_FP_NAN)) { + /* SameValue(NaN, NaN) = true, regardless of NaN sign or extra bits */ + return 1; + } + return 0; + } +#endif /* DUK_USE_PARANOID_MATH */ +} + +DUK_INTERNAL duk_bool_t duk_js_equals_helper(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_small_uint_t flags) { + duk_uint_t type_mask_x; + duk_uint_t type_mask_y; + + /* If flags != 0 (strict or SameValue), thr can be NULL. For loose + * equals comparison it must be != NULL. + */ + DUK_ASSERT(flags != 0 || thr != NULL); + + /* + * Same type? + * + * Note: since number values have no explicit tag in the 8-byte + * representation, need the awkward if + switch. + */ + +#if defined(DUK_USE_FASTINT) + if (DUK_TVAL_IS_FASTINT(tv_x) && DUK_TVAL_IS_FASTINT(tv_y)) { + if (DUK_TVAL_GET_FASTINT(tv_x) == DUK_TVAL_GET_FASTINT(tv_y)) { + return 1; + } else { + return 0; + } + } + else +#endif + if (DUK_TVAL_IS_NUMBER(tv_x) && DUK_TVAL_IS_NUMBER(tv_y)) { + duk_double_t d1, d2; + + /* Catches both doubles and cases where only one argument is + * a fastint so can't assume a double. + */ + d1 = DUK_TVAL_GET_NUMBER(tv_x); + d2 = DUK_TVAL_GET_NUMBER(tv_y); + if (DUK_UNLIKELY((flags & DUK_EQUALS_FLAG_SAMEVALUE) != 0)) { + /* SameValue */ + return duk__js_samevalue_number(d1, d2); + } else { + /* equals and strict equals */ + return duk__js_equals_number(d1, d2); + } + } else if (DUK_TVAL_GET_TAG(tv_x) == DUK_TVAL_GET_TAG(tv_y)) { + switch (DUK_TVAL_GET_TAG(tv_x)) { + case DUK_TAG_UNDEFINED: + case DUK_TAG_NULL: { + return 1; + } + case DUK_TAG_BOOLEAN: { + return DUK_TVAL_GET_BOOLEAN(tv_x) == DUK_TVAL_GET_BOOLEAN(tv_y); + } + case DUK_TAG_POINTER: { + return DUK_TVAL_GET_POINTER(tv_x) == DUK_TVAL_GET_POINTER(tv_y); + } + case DUK_TAG_STRING: + case DUK_TAG_OBJECT: { + /* Heap pointer comparison suffices for strings and objects. + * Symbols compare equal if they have the same internal + * representation; again heap pointer comparison suffices. + */ + return DUK_TVAL_GET_HEAPHDR(tv_x) == DUK_TVAL_GET_HEAPHDR(tv_y); + } + case DUK_TAG_BUFFER: { + /* In Duktape 2.x plain buffers mimic Uint8Array objects + * so always compare by heap pointer. In Duktape 1.x + * strict comparison would compare heap pointers and + * non-strict would compare contents. + */ + return DUK_TVAL_GET_HEAPHDR(tv_x) == DUK_TVAL_GET_HEAPHDR(tv_y); + } + case DUK_TAG_LIGHTFUNC: { + /* At least 'magic' has a significant impact on function + * identity. + */ + duk_small_uint_t lf_flags_x; + duk_small_uint_t lf_flags_y; + duk_c_function func_x; + duk_c_function func_y; + + DUK_TVAL_GET_LIGHTFUNC(tv_x, func_x, lf_flags_x); + DUK_TVAL_GET_LIGHTFUNC(tv_y, func_y, lf_flags_y); + return ((func_x == func_y) && (lf_flags_x == lf_flags_y)) ? 1 : 0; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv_x)); + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv_y)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_x)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_y)); + DUK_UNREACHABLE(); + DUK_WO_UNREACHABLE(return 0;); + } + } + } + + if ((flags & (DUK_EQUALS_FLAG_STRICT | DUK_EQUALS_FLAG_SAMEVALUE)) != 0) { + return 0; + } + + DUK_ASSERT(flags == 0); /* non-strict equality from here on */ + + /* + * Types are different; various cases for non-strict comparison + * + * Since comparison is symmetric, we use a "swap trick" to reduce + * code size. + */ + + type_mask_x = duk_get_type_mask_tval(tv_x); + type_mask_y = duk_get_type_mask_tval(tv_y); + + /* Undefined/null are considered equal (e.g. "null == undefined" -> true). */ + if ((type_mask_x & (DUK_TYPE_MASK_UNDEFINED | DUK_TYPE_MASK_NULL)) && + (type_mask_y & (DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_UNDEFINED))) { + return 1; + } + + /* Number/string -> coerce string to number (e.g. "'1.5' == 1.5" -> true). */ + if ((type_mask_x & DUK_TYPE_MASK_NUMBER) && (type_mask_y & DUK_TYPE_MASK_STRING)) { + if (!DUK_TVAL_STRING_IS_SYMBOL(tv_y)) { + duk_double_t d1, d2; + d1 = DUK_TVAL_GET_NUMBER(tv_x); + d2 = duk_to_number_tval(thr, tv_y); + return duk__js_equals_number(d1, d2); + } + } + if ((type_mask_x & DUK_TYPE_MASK_STRING) && (type_mask_y & DUK_TYPE_MASK_NUMBER)) { + if (!DUK_TVAL_STRING_IS_SYMBOL(tv_x)) { + duk_double_t d1, d2; + d1 = DUK_TVAL_GET_NUMBER(tv_y); + d2 = duk_to_number_tval(thr, tv_x); + return duk__js_equals_number(d1, d2); + } + } + + /* Boolean/any -> coerce boolean to number and try again. If boolean is + * compared to a pointer, the final comparison after coercion now always + * yields false (as pointer vs. number compares to false), but this is + * not special cased. + * + * ToNumber(bool) is +1.0 or 0.0. Tagged boolean value is always 0 or 1. + */ + if (type_mask_x & DUK_TYPE_MASK_BOOLEAN) { + DUK_ASSERT(DUK_TVAL_GET_BOOLEAN(tv_x) == 0 || DUK_TVAL_GET_BOOLEAN(tv_x) == 1); + duk_push_uint(thr, DUK_TVAL_GET_BOOLEAN(tv_x)); + duk_push_tval(thr, tv_y); + goto recursive_call; + } + if (type_mask_y & DUK_TYPE_MASK_BOOLEAN) { + DUK_ASSERT(DUK_TVAL_GET_BOOLEAN(tv_y) == 0 || DUK_TVAL_GET_BOOLEAN(tv_y) == 1); + duk_push_tval(thr, tv_x); + duk_push_uint(thr, DUK_TVAL_GET_BOOLEAN(tv_y)); + goto recursive_call; + } + + /* String-number-symbol/object -> coerce object to primitive (apparently without hint), then try again. */ + if ((type_mask_x & (DUK_TYPE_MASK_STRING | DUK_TYPE_MASK_NUMBER)) && + (type_mask_y & DUK_TYPE_MASK_OBJECT)) { + /* No symbol check needed because symbols and strings are accepted. */ + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + duk_to_primitive(thr, -1, DUK_HINT_NONE); /* apparently no hint? */ + goto recursive_call; + } + if ((type_mask_x & DUK_TYPE_MASK_OBJECT) && + (type_mask_y & (DUK_TYPE_MASK_STRING | DUK_TYPE_MASK_NUMBER))) { + /* No symbol check needed because symbols and strings are accepted. */ + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + duk_to_primitive(thr, -2, DUK_HINT_NONE); /* apparently no hint? */ + goto recursive_call; + } + + /* Nothing worked -> not equal. */ + return 0; + + recursive_call: + /* Shared code path to call the helper again with arguments on stack top. */ + { + duk_bool_t rc; + rc = duk_js_equals_helper(thr, + DUK_GET_TVAL_NEGIDX(thr, -2), + DUK_GET_TVAL_NEGIDX(thr, -1), + 0 /*flags:nonstrict*/); + duk_pop_2_unsafe(thr); + return rc; + } +} + +/* + * Comparisons (x >= y, x > y, x <= y, x < y) + * + * E5 Section 11.8.5: implement 'x < y' and then use negate and eval_left_first + * flags to get the rest. + */ + +/* XXX: this should probably just operate on the stack top, because it + * needs to push stuff on the stack anyway... + */ + +DUK_INTERNAL duk_small_int_t duk_js_data_compare(const duk_uint8_t *buf1, const duk_uint8_t *buf2, duk_size_t len1, duk_size_t len2) { + duk_size_t prefix_len; + duk_small_int_t rc; + + prefix_len = (len1 <= len2 ? len1 : len2); + + /* duk_memcmp() is guaranteed to return zero (equal) for zero length + * inputs. + */ + rc = duk_memcmp_unsafe((const void *) buf1, + (const void *) buf2, + (size_t) prefix_len); + + if (rc < 0) { + return -1; + } else if (rc > 0) { + return 1; + } + + /* prefix matches, lengths matter now */ + if (len1 < len2) { + /* e.g. "x" < "xx" */ + return -1; + } else if (len1 > len2) { + return 1; + } + + return 0; +} + +DUK_INTERNAL duk_small_int_t duk_js_string_compare(duk_hstring *h1, duk_hstring *h2) { + /* + * String comparison (E5 Section 11.8.5, step 4), which + * needs to compare codepoint by codepoint. + * + * However, UTF-8 allows us to use strcmp directly: the shared + * prefix will be encoded identically (UTF-8 has unique encoding) + * and the first differing character can be compared with a simple + * unsigned byte comparison (which strcmp does). + * + * This will not work properly for non-xutf-8 strings, but this + * is not an issue for compliance. + */ + + DUK_ASSERT(h1 != NULL); + DUK_ASSERT(h2 != NULL); + + return duk_js_data_compare((const duk_uint8_t *) DUK_HSTRING_GET_DATA(h1), + (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h2), + (duk_size_t) DUK_HSTRING_GET_BYTELEN(h1), + (duk_size_t) DUK_HSTRING_GET_BYTELEN(h2)); +} + +#if 0 /* unused */ +DUK_INTERNAL duk_small_int_t duk_js_buffer_compare(duk_heap *heap, duk_hbuffer *h1, duk_hbuffer *h2) { + /* Similar to String comparison. */ + + DUK_ASSERT(h1 != NULL); + DUK_ASSERT(h2 != NULL); + DUK_UNREF(heap); + + return duk_js_data_compare((const duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(heap, h1), + (const duk_uint8_t *) DUK_HBUFFER_GET_DATA_PTR(heap, h2), + (duk_size_t) DUK_HBUFFER_GET_SIZE(h1), + (duk_size_t) DUK_HBUFFER_GET_SIZE(h2)); +} +#endif + +#if defined(DUK_USE_FASTINT) +DUK_LOCAL duk_bool_t duk__compare_fastint(duk_bool_t retval, duk_int64_t v1, duk_int64_t v2) { + DUK_ASSERT(retval == 0 || retval == 1); + if (v1 < v2) { + return retval ^ 1; + } else { + return retval; + } +} +#endif + +#if defined(DUK_USE_PARANOID_MATH) +DUK_LOCAL duk_bool_t duk__compare_number(duk_bool_t retval, duk_double_t d1, duk_double_t d2) { + duk_small_int_t c1, s1, c2, s2; + + DUK_ASSERT(retval == 0 || retval == 1); + c1 = (duk_small_int_t) DUK_FPCLASSIFY(d1); + s1 = (duk_small_int_t) DUK_SIGNBIT(d1); + c2 = (duk_small_int_t) DUK_FPCLASSIFY(d2); + s2 = (duk_small_int_t) DUK_SIGNBIT(d2); + + if (c1 == DUK_FP_NAN || c2 == DUK_FP_NAN) { + return 0; /* Always false, regardless of negation. */ + } + + if (c1 == DUK_FP_ZERO && c2 == DUK_FP_ZERO) { + /* For all combinations: +0 < +0, +0 < -0, -0 < +0, -0 < -0, + * steps e, f, and g. + */ + return retval; /* false */ + } + + if (d1 == d2) { + return retval; /* false */ + } + + if (c1 == DUK_FP_INFINITE && s1 == 0) { + /* x == +Infinity */ + return retval; /* false */ + } + + if (c2 == DUK_FP_INFINITE && s2 == 0) { + /* y == +Infinity */ + return retval ^ 1; /* true */ + } + + if (c2 == DUK_FP_INFINITE && s2 != 0) { + /* y == -Infinity */ + return retval; /* false */ + } + + if (c1 == DUK_FP_INFINITE && s1 != 0) { + /* x == -Infinity */ + return retval ^ 1; /* true */ + } + + if (d1 < d2) { + return retval ^ 1; /* true */ + } + + return retval; /* false */ +} +#else /* DUK_USE_PARANOID_MATH */ +DUK_LOCAL duk_bool_t duk__compare_number(duk_bool_t retval, duk_double_t d1, duk_double_t d2) { + /* This comparison tree relies doesn't match the exact steps in + * E5 Section 11.8.5 but should produce the same results. The + * steps rely on exact IEEE semantics for NaNs, etc. + */ + + DUK_ASSERT(retval == 0 || retval == 1); + if (d1 < d2) { + /* In no case should both (d1 < d2) and (d2 < d1) be true. + * It's possible that neither is true though, and that's + * handled below. + */ + DUK_ASSERT(!(d2 < d1)); + + /* - d1 < d2, both d1/d2 are normals (not Infinity, not NaN) + * - d2 is +Infinity, d1 != +Infinity and NaN + * - d1 is -Infinity, d2 != -Infinity and NaN + */ + return retval ^ 1; + } else { + if (d2 < d1) { + /* - !(d1 < d2), both d1/d2 are normals (not Infinity, not NaN) + * - d1 is +Infinity, d2 != +Infinity and NaN + * - d2 is -Infinity, d1 != -Infinity and NaN + */ + return retval; + } else { + /* - d1 and/or d2 is NaN + * - d1 and d2 are both +/- 0 + * - d1 == d2 (including infinities) + */ + if (duk_double_is_nan(d1) || duk_double_is_nan(d2)) { + /* Note: undefined from Section 11.8.5 always + * results in false return (see e.g. Section + * 11.8.3) - hence special treatment here. + */ + return 0; /* zero regardless of negation */ + } else { + return retval; + } + } + } +} +#endif /* DUK_USE_PARANOID_MATH */ + +DUK_INTERNAL duk_bool_t duk_js_compare_helper(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_small_uint_t flags) { + duk_double_t d1, d2; + duk_small_int_t rc; + duk_bool_t retval; + + DUK_ASSERT(DUK_COMPARE_FLAG_NEGATE == 1); /* Rely on this flag being lowest. */ + retval = flags & DUK_COMPARE_FLAG_NEGATE; + DUK_ASSERT(retval == 0 || retval == 1); + + /* Fast path for fastints */ +#if defined(DUK_USE_FASTINT) + if (DUK_LIKELY(DUK_TVAL_IS_FASTINT(tv_x) && DUK_TVAL_IS_FASTINT(tv_y))) { + return duk__compare_fastint(retval, + DUK_TVAL_GET_FASTINT(tv_x), + DUK_TVAL_GET_FASTINT(tv_y)); + } +#endif /* DUK_USE_FASTINT */ + + /* Fast path for numbers (one of which may be a fastint) */ +#if !defined(DUK_USE_PREFER_SIZE) + if (DUK_LIKELY(DUK_TVAL_IS_NUMBER(tv_x) && DUK_TVAL_IS_NUMBER(tv_y))) { + return duk__compare_number(retval, + DUK_TVAL_GET_NUMBER(tv_x), + DUK_TVAL_GET_NUMBER(tv_y)); + } +#endif + + /* Slow path */ + + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + + if (flags & DUK_COMPARE_FLAG_EVAL_LEFT_FIRST) { + duk_to_primitive(thr, -2, DUK_HINT_NUMBER); + duk_to_primitive(thr, -1, DUK_HINT_NUMBER); + } else { + duk_to_primitive(thr, -1, DUK_HINT_NUMBER); + duk_to_primitive(thr, -2, DUK_HINT_NUMBER); + } + + /* Note: reuse variables */ + tv_x = DUK_GET_TVAL_NEGIDX(thr, -2); + tv_y = DUK_GET_TVAL_NEGIDX(thr, -1); + + if (DUK_TVAL_IS_STRING(tv_x) && DUK_TVAL_IS_STRING(tv_y)) { + duk_hstring *h1 = DUK_TVAL_GET_STRING(tv_x); + duk_hstring *h2 = DUK_TVAL_GET_STRING(tv_y); + DUK_ASSERT(h1 != NULL); + DUK_ASSERT(h2 != NULL); + + if (DUK_LIKELY(!DUK_HSTRING_HAS_SYMBOL(h1) && !DUK_HSTRING_HAS_SYMBOL(h2))) { + rc = duk_js_string_compare(h1, h2); + duk_pop_2_unsafe(thr); + if (rc < 0) { + return retval ^ 1; + } else { + return retval; + } + } + + /* One or both are Symbols: fall through to handle in the + * generic path. Concretely, ToNumber() will fail. + */ + } + + /* Ordering should not matter (E5 Section 11.8.5, step 3.a). */ +#if 0 + if (flags & DUK_COMPARE_FLAG_EVAL_LEFT_FIRST) { + d1 = duk_to_number_m2(thr); + d2 = duk_to_number_m1(thr); + } else { + d2 = duk_to_number_m1(thr); + d1 = duk_to_number_m2(thr); + } +#endif + d1 = duk_to_number_m2(thr); + d2 = duk_to_number_m1(thr); + + /* We want to duk_pop_2_unsafe(thr); because the values are numbers + * no decref check is needed. + */ +#if defined(DUK_USE_PREFER_SIZE) + duk_pop_2_nodecref_unsafe(thr); +#else + DUK_ASSERT(!DUK_TVAL_NEEDS_REFCOUNT_UPDATE(duk_get_tval(thr, -2))); + DUK_ASSERT(!DUK_TVAL_NEEDS_REFCOUNT_UPDATE(duk_get_tval(thr, -1))); + DUK_ASSERT(duk_get_top(thr) >= 2); + thr->valstack_top -= 2; + tv_x = thr->valstack_top; + tv_y = tv_x + 1; + DUK_TVAL_SET_UNDEFINED(tv_x); /* Value stack policy */ + DUK_TVAL_SET_UNDEFINED(tv_y); +#endif + + return duk__compare_number(retval, d1, d2); +} + +/* + * instanceof + */ + +/* + * ES2015 Section 7.3.19 describes the OrdinaryHasInstance() algorithm + * which covers both bound and non-bound functions; in effect the algorithm + * includes E5 Sections 11.8.6, 15.3.5.3, and 15.3.4.5.3. + * + * ES2015 Section 12.9.4 describes the instanceof operator which first + * checks @@hasInstance well-known symbol and falls back to + * OrdinaryHasInstance(). + * + * Limited Proxy support: don't support 'getPrototypeOf' trap but + * continue lookup in Proxy target if the value is a Proxy. + */ + +DUK_LOCAL duk_bool_t duk__js_instanceof_helper(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y, duk_bool_t skip_sym_check) { + duk_hobject *func; + duk_hobject *val; + duk_hobject *proto; + duk_tval *tv; + duk_bool_t skip_first; + duk_uint_t sanity; + + /* + * Get the values onto the stack first. It would be possible to cover + * some normal cases without resorting to the value stack. + * + * The right hand side could be a light function (as they generally + * behave like objects). Light functions never have a 'prototype' + * property so E5.1 Section 15.3.5.3 step 3 always throws a TypeError. + * Using duk_require_hobject() is thus correct (except for error msg). + */ + + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + func = duk_require_hobject(thr, -1); + DUK_ASSERT(func != NULL); + +#if defined(DUK_USE_SYMBOL_BUILTIN) + /* + * @@hasInstance check, ES2015 Section 12.9.4, Steps 2-4. + */ + if (!skip_sym_check) { + if (duk_get_method_stridx(thr, -1, DUK_STRIDX_WELLKNOWN_SYMBOL_HAS_INSTANCE)) { + /* [ ... lhs rhs func ] */ + duk_insert(thr, -3); /* -> [ ... func lhs rhs ] */ + duk_swap_top(thr, -2); /* -> [ ... func rhs(this) lhs ] */ + duk_call_method(thr, 1); + return duk_to_boolean_top_pop(thr); + } + } +#else + DUK_UNREF(skip_sym_check); +#endif + + /* + * For bound objects, [[HasInstance]] just calls the target function + * [[HasInstance]]. If that is again a bound object, repeat until + * we find a non-bound Function object. + * + * The bound function chain is now "collapsed" so there can be only + * one bound function in the chain. + */ + + if (!DUK_HOBJECT_IS_CALLABLE(func)) { + /* + * Note: of native ECMAScript objects, only Function instances + * have a [[HasInstance]] internal property. Custom objects might + * also have it, but not in current implementation. + * + * XXX: add a separate flag, DUK_HOBJECT_FLAG_ALLOW_INSTANCEOF? + */ + goto error_invalid_rval; + } + + if (DUK_HOBJECT_HAS_BOUNDFUNC(func)) { + duk_push_tval(thr, &((duk_hboundfunc *) (void *) func)->target); + duk_replace(thr, -2); + func = duk_require_hobject(thr, -1); /* lightfunc throws */ + + /* Rely on Function.prototype.bind() never creating bound + * functions whose target is not proper. + */ + DUK_ASSERT(func != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_CALLABLE(func)); + } + + /* + * 'func' is now a non-bound object which supports [[HasInstance]] + * (which here just means DUK_HOBJECT_FLAG_CALLABLE). Move on + * to execute E5 Section 15.3.5.3. + */ + + DUK_ASSERT(func != NULL); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(func)); + DUK_ASSERT(DUK_HOBJECT_IS_CALLABLE(func)); + + /* [ ... lval rval(func) ] */ + + /* For lightfuncs, buffers, and pointers start the comparison directly + * from the virtual prototype object. + */ + skip_first = 0; + tv = DUK_GET_TVAL_NEGIDX(thr, -2); + switch (DUK_TVAL_GET_TAG(tv)) { + case DUK_TAG_LIGHTFUNC: + val = thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]; + DUK_ASSERT(val != NULL); + break; + case DUK_TAG_BUFFER: + val = thr->builtins[DUK_BIDX_UINT8ARRAY_PROTOTYPE]; + DUK_ASSERT(val != NULL); + break; + case DUK_TAG_POINTER: + val = thr->builtins[DUK_BIDX_POINTER_PROTOTYPE]; + DUK_ASSERT(val != NULL); + break; + case DUK_TAG_OBJECT: + skip_first = 1; /* Ignore object itself on first round. */ + val = DUK_TVAL_GET_OBJECT(tv); + DUK_ASSERT(val != NULL); + break; + default: + goto pop2_and_false; + } + DUK_ASSERT(val != NULL); /* Loop doesn't actually rely on this. */ + + /* Look up .prototype of rval. Leave it on the value stack in case it + * has been virtualized (e.g. getter, Proxy trap). + */ + duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_PROTOTYPE); /* -> [ ... lval rval rval.prototype ] */ +#if defined(DUK_USE_VERBOSE_ERRORS) + proto = duk_get_hobject(thr, -1); + if (proto == NULL) { + goto error_invalid_rval_noproto; + } +#else + proto = duk_require_hobject(thr, -1); +#endif + + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + do { + /* + * Note: prototype chain is followed BEFORE first comparison. This + * means that the instanceof lval is never itself compared to the + * rval.prototype property. This is apparently intentional, see E5 + * Section 15.3.5.3, step 4.a. + * + * Also note: + * + * js> (function() {}) instanceof Function + * true + * js> Function instanceof Function + * true + * + * For the latter, h_proto will be Function.prototype, which is the + * built-in Function prototype. Because Function.[[Prototype]] is + * also the built-in Function prototype, the result is true. + */ + + if (!val) { + goto pop3_and_false; + } + + DUK_ASSERT(val != NULL); +#if defined(DUK_USE_ES6_PROXY) + val = duk_hobject_resolve_proxy_target(val); +#endif + + if (skip_first) { + skip_first = 0; + } else if (val == proto) { + goto pop3_and_true; + } + + DUK_ASSERT(val != NULL); + val = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, val); + } while (--sanity > 0); + + DUK_ASSERT(sanity == 0); + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + + pop2_and_false: + duk_pop_2_unsafe(thr); + return 0; + + pop3_and_false: + duk_pop_3_unsafe(thr); + return 0; + + pop3_and_true: + duk_pop_3_unsafe(thr); + return 1; + + error_invalid_rval: + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_INSTANCEOF_RVAL); + DUK_WO_NORETURN(return 0;); + +#if defined(DUK_USE_VERBOSE_ERRORS) + error_invalid_rval_noproto: + DUK_ERROR_TYPE(thr, DUK_STR_INVALID_INSTANCEOF_RVAL_NOPROTO); + DUK_WO_NORETURN(return 0;); +#endif +} + +#if defined(DUK_USE_SYMBOL_BUILTIN) +DUK_INTERNAL duk_bool_t duk_js_instanceof_ordinary(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y) { + return duk__js_instanceof_helper(thr, tv_x, tv_y, 1 /*skip_sym_check*/); +} +#endif + +DUK_INTERNAL duk_bool_t duk_js_instanceof(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y) { + return duk__js_instanceof_helper(thr, tv_x, tv_y, 0 /*skip_sym_check*/); +} + +/* + * in + */ + +/* + * E5 Sections 11.8.7, 8.12.6. + * + * Basically just a property existence check using [[HasProperty]]. + */ + +DUK_INTERNAL duk_bool_t duk_js_in(duk_hthread *thr, duk_tval *tv_x, duk_tval *tv_y) { + duk_bool_t retval; + + /* + * Get the values onto the stack first. It would be possible to cover + * some normal cases without resorting to the value stack (e.g. if + * lval is already a string). + */ + + /* XXX: The ES5/5.1/6 specifications require that the key in 'key in obj' + * must be string coerced before the internal HasProperty() algorithm is + * invoked. A fast path skipping coercion could be safely implemented for + * numbers (as number-to-string coercion has no side effects). For ES2015 + * proxy behavior, the trap 'key' argument must be in a string coerced + * form (which is a shame). + */ + + /* TypeError if rval is not an object or object like (e.g. lightfunc + * or plain buffer). + */ + duk_push_tval(thr, tv_x); + duk_push_tval(thr, tv_y); + duk_require_type_mask(thr, -1, DUK_TYPE_MASK_OBJECT | DUK_TYPE_MASK_LIGHTFUNC | DUK_TYPE_MASK_BUFFER); + + (void) duk_to_property_key_hstring(thr, -2); + + retval = duk_hobject_hasprop(thr, + DUK_GET_TVAL_NEGIDX(thr, -1), + DUK_GET_TVAL_NEGIDX(thr, -2)); + + duk_pop_2_unsafe(thr); + return retval; +} + +/* + * typeof + * + * E5 Section 11.4.3. + * + * Very straightforward. The only question is what to return for our + * non-standard tag / object types. + * + * There is an unfortunate string constant define naming problem with + * typeof return values for e.g. "Object" and "object"; careful with + * the built-in string defines. The LC_XXX defines are used for the + * lowercase variants now. + */ + +DUK_INTERNAL duk_small_uint_t duk_js_typeof_stridx(duk_tval *tv_x) { + duk_small_uint_t stridx = 0; + + switch (DUK_TVAL_GET_TAG(tv_x)) { + case DUK_TAG_UNDEFINED: { + stridx = DUK_STRIDX_LC_UNDEFINED; + break; + } + case DUK_TAG_NULL: { + /* Note: not a typo, "object" is returned for a null value. */ + stridx = DUK_STRIDX_LC_OBJECT; + break; + } + case DUK_TAG_BOOLEAN: { + stridx = DUK_STRIDX_LC_BOOLEAN; + break; + } + case DUK_TAG_POINTER: { + /* Implementation specific. */ + stridx = DUK_STRIDX_LC_POINTER; + break; + } + case DUK_TAG_STRING: { + duk_hstring *str; + + /* All internal keys are identified as Symbols. */ + str = DUK_TVAL_GET_STRING(tv_x); + DUK_ASSERT(str != NULL); + if (DUK_UNLIKELY(DUK_HSTRING_HAS_SYMBOL(str))) { + stridx = DUK_STRIDX_LC_SYMBOL; + } else { + stridx = DUK_STRIDX_LC_STRING; + } + break; + } + case DUK_TAG_OBJECT: { + duk_hobject *obj = DUK_TVAL_GET_OBJECT(tv_x); + DUK_ASSERT(obj != NULL); + if (DUK_HOBJECT_IS_CALLABLE(obj)) { + stridx = DUK_STRIDX_LC_FUNCTION; + } else { + stridx = DUK_STRIDX_LC_OBJECT; + } + break; + } + case DUK_TAG_BUFFER: { + /* Implementation specific. In Duktape 1.x this would be + * 'buffer', in Duktape 2.x changed to 'object' because plain + * buffers now mimic Uint8Array objects. + */ + stridx = DUK_STRIDX_LC_OBJECT; + break; + } + case DUK_TAG_LIGHTFUNC: { + stridx = DUK_STRIDX_LC_FUNCTION; + break; + } +#if defined(DUK_USE_FASTINT) + case DUK_TAG_FASTINT: +#endif + default: { + /* number */ + DUK_ASSERT(!DUK_TVAL_IS_UNUSED(tv_x)); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv_x)); + stridx = DUK_STRIDX_LC_NUMBER; + break; + } + } + + DUK_ASSERT_STRIDX_VALID(stridx); + return stridx; +} + +/* + * IsArray() + */ + +DUK_INTERNAL duk_bool_t duk_js_isarray_hobject(duk_hobject *h) { + DUK_ASSERT(h != NULL); +#if defined(DUK_USE_ES6_PROXY) + h = duk_hobject_resolve_proxy_target(h); +#endif + return (DUK_HOBJECT_GET_CLASS_NUMBER(h) == DUK_HOBJECT_CLASS_ARRAY ? 1 : 0); +} + +DUK_INTERNAL duk_bool_t duk_js_isarray(duk_tval *tv) { + DUK_ASSERT(tv != NULL); + if (DUK_TVAL_IS_OBJECT(tv)) { + return duk_js_isarray_hobject(DUK_TVAL_GET_OBJECT(tv)); + } + return 0; +} + +/* + * Array index and length + * + * Array index: E5 Section 15.4 + * Array length: E5 Section 15.4.5.1 steps 3.c - 3.d (array length write) + */ + +/* Compure array index from string context, or return a "not array index" + * indicator. + */ +DUK_INTERNAL duk_uarridx_t duk_js_to_arrayindex_string(const duk_uint8_t *str, duk_uint32_t blen) { + duk_uarridx_t res; + + /* Only strings with byte length 1-10 can be 32-bit array indices. + * Leading zeroes (except '0' alone), plus/minus signs are not allowed. + * We could do a lot of prechecks here, but since most strings won't + * start with any digits, it's simpler to just parse the number and + * fail quickly. + */ + + res = 0; + if (blen == 0) { + goto parse_fail; + } + do { + duk_uarridx_t dig; + dig = (duk_uarridx_t) (*str++) - DUK_ASC_0; + + if (dig <= 9U) { + /* Careful overflow handling. When multiplying by 10: + * - 0x19999998 x 10 = 0xfffffff0: no overflow, and adding + * 0...9 is safe. + * - 0x19999999 x 10 = 0xfffffffa: no overflow, adding + * 0...5 is safe, 6...9 overflows. + * - 0x1999999a x 10 = 0x100000004: always overflow. + */ + if (DUK_UNLIKELY(res >= 0x19999999UL)) { + if (res >= 0x1999999aUL) { + /* Always overflow. */ + goto parse_fail; + } + DUK_ASSERT(res == 0x19999999UL); + if (dig >= 6U) { + goto parse_fail; + } + res = 0xfffffffaUL + dig; + DUK_ASSERT(res >= 0xfffffffaUL); + DUK_ASSERT_DISABLE(res <= 0xffffffffUL); /* range */ + } else { + res = res * 10U + dig; + if (DUK_UNLIKELY(res == 0)) { + /* If 'res' is 0, previous 'res' must + * have been 0 and we scanned in a zero. + * This is only allowed if blen == 1, + * i.e. the exact string '0'. + */ + if (blen == (duk_uint32_t) 1) { + return 0; + } + goto parse_fail; + } + } + } else { + /* Because 'dig' is unsigned, catches both values + * above '9' and below '0'. + */ + goto parse_fail; + } + } while (--blen > 0); + + return res; + + parse_fail: + return DUK_HSTRING_NO_ARRAY_INDEX; +} + +#if !defined(DUK_USE_HSTRING_ARRIDX) +/* Get array index for a string which is known to be an array index. This helper + * is needed when duk_hstring doesn't concretely store the array index, but strings + * are flagged as array indices at intern time. + */ +DUK_INTERNAL duk_uarridx_t duk_js_to_arrayindex_hstring_fast_known(duk_hstring *h) { + const duk_uint8_t *p; + duk_uarridx_t res; + duk_uint8_t t; + + DUK_ASSERT(h != NULL); + DUK_ASSERT(DUK_HSTRING_HAS_ARRIDX(h)); + + p = DUK_HSTRING_GET_DATA(h); + res = 0; + for (;;) { + t = *p++; + if (DUK_UNLIKELY(t == 0)) { + /* Scanning to NUL is always safe for interned strings. */ + break; + } + DUK_ASSERT(t >= (duk_uint8_t) DUK_ASC_0 && t <= (duk_uint8_t) DUK_ASC_9); + res = res * 10U + (duk_uarridx_t) t - (duk_uarridx_t) DUK_ASC_0; + } + return res; +} + +DUK_INTERNAL duk_uarridx_t duk_js_to_arrayindex_hstring_fast(duk_hstring *h) { + DUK_ASSERT(h != NULL); + if (!DUK_HSTRING_HAS_ARRIDX(h)) { + return DUK_HSTRING_NO_ARRAY_INDEX; + } + return duk_js_to_arrayindex_hstring_fast_known(h); +} +#endif /* DUK_USE_HSTRING_ARRIDX */ +#line 1 "duk_js_var.c" +/* + * Identifier access and function closure handling. + * + * Provides the primitives for slow path identifier accesses: GETVAR, + * PUTVAR, DELVAR, etc. The fast path, direct register accesses, should + * be used for most identifier accesses. Consequently, these slow path + * primitives should be optimized for maximum compactness. + * + * ECMAScript environment records (declarative and object) are represented + * as internal objects with control keys. Environment records have a + * parent record ("outer environment reference") which is represented by + * the implicit prototype for technical reasons (in other words, it is a + * convenient field). The prototype chain is not followed in the ordinary + * sense for variable lookups. + * + * See identifier-handling.rst for more details on the identifier algorithms + * and the internal representation. See function-objects.rst for details on + * what function templates and instances are expected to look like. + * + * Care must be taken to avoid duk_tval pointer invalidation caused by + * e.g. value stack or object resizing. + * + * TODO: properties for function instances could be initialized much more + * efficiently by creating a property allocation for a certain size and + * filling in keys and values directly (and INCREFing both with "bulk incref" + * primitives. + * + * XXX: duk_hobject_getprop() and duk_hobject_putprop() calls are a bit + * awkward (especially because they follow the prototype chain); rework + * if "raw" own property helpers are added. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Local result type for duk__get_identifier_reference() lookup. + */ + +typedef struct { + duk_hobject *env; + duk_hobject *holder; /* for object-bound identifiers */ + duk_tval *value; /* for register-bound and declarative env identifiers */ + duk_uint_t attrs; /* property attributes for identifier (relevant if value != NULL) */ + duk_bool_t has_this; /* for object-bound identifiers: provide 'this' binding */ +} duk__id_lookup_result; + +/* + * Create a new function object based on a "template function" which contains + * compiled bytecode, constants, etc, but lacks a lexical environment. + * + * ECMAScript requires that each created closure is a separate object, with + * its own set of editable properties. However, structured property values + * (such as the formal arguments list and the variable map) are shared. + * Also the bytecode, constants, and inner functions are shared. + * + * See E5 Section 13.2 for detailed requirements on the function objects; + * there are no similar requirements for function "templates" which are an + * implementation dependent internal feature. Also see function-objects.rst + * for a discussion on the function instance properties provided by this + * implementation. + * + * Notes: + * + * * Order of internal properties should match frequency of use, since the + * properties will be linearly scanned on lookup (functions usually don't + * have enough properties to warrant a hash part). + * + * * The created closure is independent of its template; they do share the + * same 'data' buffer object, but the template object itself can be freed + * even if the closure object remains reachable. + */ + +DUK_LOCAL void duk__inc_data_inner_refcounts(duk_hthread *thr, duk_hcompfunc *f) { + duk_tval *tv, *tv_end; + duk_hobject **funcs, **funcs_end; + + DUK_UNREF(thr); + + /* If function creation fails due to out-of-memory, the data buffer + * pointer may be NULL in some cases. That's actually possible for + * GC code, but shouldn't be possible here because the incomplete + * function will be unwound from the value stack and never instantiated. + */ + DUK_ASSERT(DUK_HCOMPFUNC_GET_DATA(thr->heap, f) != NULL); + + tv = DUK_HCOMPFUNC_GET_CONSTS_BASE(thr->heap, f); + tv_end = DUK_HCOMPFUNC_GET_CONSTS_END(thr->heap, f); + while (tv < tv_end) { + DUK_TVAL_INCREF(thr, tv); + tv++; + } + + funcs = DUK_HCOMPFUNC_GET_FUNCS_BASE(thr->heap, f); + funcs_end = DUK_HCOMPFUNC_GET_FUNCS_END(thr->heap, f); + while (funcs < funcs_end) { + DUK_HEAPHDR_INCREF(thr, (duk_heaphdr *) *funcs); + funcs++; + } +} + +/* Push a new closure on the stack. + * + * Note: if fun_temp has NEWENV, i.e. a new lexical and variable declaration + * is created when the function is called, only outer_lex_env matters + * (outer_var_env is ignored and may or may not be same as outer_lex_env). + */ + +DUK_LOCAL const duk_uint16_t duk__closure_copy_proplist[] = { + /* order: most frequent to least frequent */ + DUK_STRIDX_INT_VARMAP, + DUK_STRIDX_INT_FORMALS, +#if defined(DUK_USE_PC2LINE) + DUK_STRIDX_INT_PC2LINE, +#endif +#if defined(DUK_USE_FUNC_FILENAME_PROPERTY) + DUK_STRIDX_FILE_NAME, +#endif +#if defined(DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY) + DUK_STRIDX_INT_SOURCE +#endif +}; + +DUK_INTERNAL +void duk_js_push_closure(duk_hthread *thr, + duk_hcompfunc *fun_temp, + duk_hobject *outer_var_env, + duk_hobject *outer_lex_env, + duk_bool_t add_auto_proto) { + duk_hcompfunc *fun_clos; + duk_harray *formals; + duk_small_uint_t i; + duk_uint_t len_value; + + DUK_ASSERT(fun_temp != NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_DATA(thr->heap, fun_temp) != NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_FUNCS(thr->heap, fun_temp) != NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_BYTECODE(thr->heap, fun_temp) != NULL); + DUK_ASSERT(outer_var_env != NULL); + DUK_ASSERT(outer_lex_env != NULL); + DUK_UNREF(len_value); + + DUK_STATS_INC(thr->heap, stats_envrec_pushclosure); + + fun_clos = duk_push_hcompfunc(thr); + DUK_ASSERT(fun_clos != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) fun_clos) == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); + + duk_push_hobject(thr, &fun_temp->obj); /* -> [ ... closure template ] */ + + DUK_ASSERT(DUK_HOBJECT_IS_COMPFUNC((duk_hobject *) fun_clos)); + DUK_ASSERT(DUK_HCOMPFUNC_GET_DATA(thr->heap, fun_clos) == NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_FUNCS(thr->heap, fun_clos) == NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_BYTECODE(thr->heap, fun_clos) == NULL); + + DUK_HCOMPFUNC_SET_DATA(thr->heap, fun_clos, DUK_HCOMPFUNC_GET_DATA(thr->heap, fun_temp)); + DUK_HCOMPFUNC_SET_FUNCS(thr->heap, fun_clos, DUK_HCOMPFUNC_GET_FUNCS(thr->heap, fun_temp)); + DUK_HCOMPFUNC_SET_BYTECODE(thr->heap, fun_clos, DUK_HCOMPFUNC_GET_BYTECODE(thr->heap, fun_temp)); + + /* Note: all references inside 'data' need to get their refcounts + * upped too. This is the case because refcounts are decreased + * through every function referencing 'data' independently. + */ + + DUK_HBUFFER_INCREF(thr, DUK_HCOMPFUNC_GET_DATA(thr->heap, fun_clos)); + duk__inc_data_inner_refcounts(thr, fun_temp); + + fun_clos->nregs = fun_temp->nregs; + fun_clos->nargs = fun_temp->nargs; +#if defined(DUK_USE_DEBUGGER_SUPPORT) + fun_clos->start_line = fun_temp->start_line; + fun_clos->end_line = fun_temp->end_line; +#endif + + DUK_ASSERT(DUK_HCOMPFUNC_GET_DATA(thr->heap, fun_clos) != NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_FUNCS(thr->heap, fun_clos) != NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_BYTECODE(thr->heap, fun_clos) != NULL); + + /* XXX: Could also copy from template, but there's no way to have any + * other value here now (used code has no access to the template). + * Prototype is set by duk_push_hcompfunc(). + */ + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, &fun_clos->obj) == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); +#if 0 + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, &fun_clos->obj, thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); +#endif + + /* Copy duk_hobject flags as is from the template using a mask. + * Leave out duk_heaphdr owned flags just in case (e.g. if there's + * some GC flag or similar). Some flags can then be adjusted + * separately if necessary. + */ + + /* DUK_HEAPHDR_SET_FLAGS() masks changes to non-duk_heaphdr flags only. */ + DUK_HEAPHDR_SET_FLAGS((duk_heaphdr *) fun_clos, DUK_HEAPHDR_GET_FLAGS_RAW((duk_heaphdr *) fun_temp)); + DUK_DD(DUK_DDPRINT("fun_temp heaphdr flags: 0x%08lx, fun_clos heaphdr flags: 0x%08lx", + (unsigned long) DUK_HEAPHDR_GET_FLAGS_RAW((duk_heaphdr *) fun_temp), + (unsigned long) DUK_HEAPHDR_GET_FLAGS_RAW((duk_heaphdr *) fun_clos))); + + DUK_ASSERT(DUK_HOBJECT_HAS_EXTENSIBLE(&fun_clos->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(&fun_clos->obj)); + DUK_ASSERT(DUK_HOBJECT_HAS_COMPFUNC(&fun_clos->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_NATFUNC(&fun_clos->obj)); + DUK_ASSERT(!DUK_HOBJECT_IS_THREAD(&fun_clos->obj)); + /* DUK_HOBJECT_FLAG_ARRAY_PART: don't care */ + /* DUK_HOBJECT_FLAG_NEWENV: handled below */ + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARRAY(&fun_clos->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(&fun_clos->obj)); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(&fun_clos->obj)); + + if (!DUK_HOBJECT_HAS_CONSTRUCTABLE(&fun_clos->obj)) { + /* If the template is not constructable don't add an automatic + * .prototype property. This is the case for e.g. ES2015 object + * literal getters/setters and method definitions. + */ + add_auto_proto = 0; + } + + /* + * Setup environment record properties based on the template and + * its flags. + * + * If DUK_HOBJECT_HAS_NEWENV(fun_temp) is true, the environment + * records represent identifiers "outside" the function; the + * "inner" environment records are created on demand. Otherwise, + * the environment records are those that will be directly used + * (e.g. for declarations). + * + * _Lexenv is always set; _Varenv defaults to _Lexenv if missing, + * so _Varenv is only set if _Lexenv != _Varenv. + * + * This is relatively complex, see doc/identifier-handling.rst. + */ + + if (DUK_HOBJECT_HAS_NEWENV(&fun_clos->obj)) { +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + if (DUK_HOBJECT_HAS_NAMEBINDING(&fun_clos->obj)) { + duk_hobject *proto; + duk_hdecenv *new_env; + + /* + * Named function expression, name needs to be bound + * in an intermediate environment record. The "outer" + * lexical/variable environment will thus be: + * + * a) { funcname: , __prototype: outer_lex_env } + * b) { funcname: , __prototype: } (if outer_lex_env missing) + */ + + if (outer_lex_env) { + proto = outer_lex_env; + } else { + proto = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + } + + /* -> [ ... closure template env ] */ + new_env = duk_hdecenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DECENV)); + DUK_ASSERT(new_env != NULL); + duk_push_hobject(thr, (duk_hobject *) new_env); + + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) new_env) == NULL); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, (duk_hobject *) new_env, proto); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, proto); + + DUK_ASSERT(new_env->thread == NULL); /* Closed. */ + DUK_ASSERT(new_env->varmap == NULL); + + /* It's important that duk_xdef_prop() is a 'raw define' so that any + * properties in an ancestor are never an issue (they should never be + * e.g. non-writable, but just in case). + * + * Because template objects are not visible to user code, the case + * where .name is missing shouldn't happen in practice. It it does, + * the name 'undefined' gets bound and maps to the closure (which is + * a bit odd, but safe). + */ + (void) duk_get_prop_stridx_short(thr, -2, DUK_STRIDX_NAME); + /* -> [ ... closure template env funcname ] */ + duk_dup_m4(thr); /* -> [ ... closure template env funcname closure ] */ + duk_xdef_prop(thr, -3, DUK_PROPDESC_FLAGS_NONE); /* -> [ ... closure template env ] */ + /* env[funcname] = closure */ + + /* [ ... closure template env ] */ + + DUK_HCOMPFUNC_SET_LEXENV(thr->heap, fun_clos, (duk_hobject *) new_env); + DUK_HCOMPFUNC_SET_VARENV(thr->heap, fun_clos, (duk_hobject *) new_env); + DUK_HOBJECT_INCREF(thr, (duk_hobject *) new_env); + DUK_HOBJECT_INCREF(thr, (duk_hobject *) new_env); + duk_pop_unsafe(thr); + + /* [ ... closure template ] */ + } + else +#endif /* DUK_USE_FUNC_NAME_PROPERTY */ + { + /* + * Other cases (function declaration, anonymous function expression, + * strict direct eval code). The "outer" environment will be whatever + * the caller gave us. + */ + + DUK_HCOMPFUNC_SET_LEXENV(thr->heap, fun_clos, outer_lex_env); + DUK_HCOMPFUNC_SET_VARENV(thr->heap, fun_clos, outer_lex_env); + DUK_HOBJECT_INCREF(thr, outer_lex_env); + DUK_HOBJECT_INCREF(thr, outer_lex_env); + + /* [ ... closure template ] */ + } + } else { + /* + * Function gets no new environment when called. This is the + * case for global code, indirect eval code, and non-strict + * direct eval code. There is no direct correspondence to the + * E5 specification, as global/eval code is not exposed as a + * function. + */ + + DUK_ASSERT(!DUK_HOBJECT_HAS_NAMEBINDING(&fun_temp->obj)); + + DUK_HCOMPFUNC_SET_LEXENV(thr->heap, fun_clos, outer_lex_env); + DUK_HCOMPFUNC_SET_VARENV(thr->heap, fun_clos, outer_var_env); + DUK_HOBJECT_INCREF(thr, outer_lex_env); /* NULLs not allowed; asserted on entry */ + DUK_HOBJECT_INCREF(thr, outer_var_env); + } + DUK_DDD(DUK_DDDPRINT("closure varenv -> %!ipO, lexenv -> %!ipO", + (duk_heaphdr *) fun_clos->var_env, + (duk_heaphdr *) fun_clos->lex_env)); + + /* Call handling assumes this for all callable closures. */ + DUK_ASSERT(DUK_HCOMPFUNC_GET_LEXENV(thr->heap, fun_clos) != NULL); + DUK_ASSERT(DUK_HCOMPFUNC_GET_VARENV(thr->heap, fun_clos) != NULL); + + /* + * Copy some internal properties directly + * + * The properties will be non-writable and non-enumerable, but + * configurable. + * + * Function templates are bare objects, so inheritance of internal + * Symbols is not an issue here even when using ordinary property + * reads. The function instance created is not bare, so internal + * Symbols must be defined without inheritance checks. + */ + + /* [ ... closure template ] */ + + DUK_DDD(DUK_DDDPRINT("copying properties: closure=%!iT, template=%!iT", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + + for (i = 0; i < (duk_small_uint_t) (sizeof(duk__closure_copy_proplist) / sizeof(duk_uint16_t)); i++) { + duk_small_int_t stridx = (duk_small_int_t) duk__closure_copy_proplist[i]; + if (duk_xget_owndataprop_stridx_short(thr, -1, stridx)) { + /* [ ... closure template val ] */ + DUK_DDD(DUK_DDDPRINT("copying property, stridx=%ld -> found", (long) stridx)); + duk_xdef_prop_stridx_short(thr, -3, stridx, DUK_PROPDESC_FLAGS_C); + } else { + DUK_DDD(DUK_DDDPRINT("copying property, stridx=%ld -> not found", (long) stridx)); + duk_pop_unsafe(thr); + } + } + + /* + * "length" maps to number of formals (E5 Section 13.2) for function + * declarations/expressions (non-bound functions). Note that 'nargs' + * is NOT necessarily equal to the number of arguments. Use length + * of _Formals; if missing, assume nargs matches .length. + */ + + /* [ ... closure template ] */ + + formals = duk_hobject_get_formals(thr, (duk_hobject *) fun_temp); + if (formals) { + len_value = (duk_uint_t) formals->length; + DUK_DD(DUK_DDPRINT("closure length from _Formals -> %ld", (long) len_value)); + } else { + len_value = fun_temp->nargs; + DUK_DD(DUK_DDPRINT("closure length defaulted from nargs -> %ld", (long) len_value)); + } + + duk_push_uint(thr, len_value); /* [ ... closure template len_value ] */ + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_LENGTH, DUK_PROPDESC_FLAGS_C); + + /* + * "prototype" is, by default, a fresh object with the "constructor" + * property. + * + * Note that this creates a circular reference for every function + * instance (closure) which prevents refcount-based collection of + * function instances. + * + * XXX: Try to avoid creating the default prototype object, because + * many functions are not used as constructors and the default + * prototype is unnecessary. Perhaps it could be created on-demand + * when it is first accessed? + */ + + /* [ ... closure template ] */ + + if (add_auto_proto) { + duk_push_object(thr); /* -> [ ... closure template newobj ] */ + duk_dup_m3(thr); /* -> [ ... closure template newobj closure ] */ + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_CONSTRUCTOR, DUK_PROPDESC_FLAGS_WC); /* -> [ ... closure template newobj ] */ + duk_compact(thr, -1); /* compact the prototype */ + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_PROTOTYPE, DUK_PROPDESC_FLAGS_W); /* -> [ ... closure template ] */ + } + + /* + * "arguments" and "caller" must be mapped to throwers for strict + * mode and bound functions (E5 Section 15.3.5). + * + * XXX: This is expensive to have for every strict function instance. + * Try to implement as virtual properties or on-demand created properties. + */ + + /* [ ... closure template ] */ + + if (DUK_HOBJECT_HAS_STRICT(&fun_clos->obj)) { + duk_xdef_prop_stridx_thrower(thr, -2, DUK_STRIDX_CALLER); + duk_xdef_prop_stridx_thrower(thr, -2, DUK_STRIDX_LC_ARGUMENTS); + } else { +#if defined(DUK_USE_NONSTD_FUNC_CALLER_PROPERTY) + DUK_DDD(DUK_DDDPRINT("function is non-strict and non-standard 'caller' property in use, add initial 'null' value")); + duk_push_null(thr); + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_CALLER, DUK_PROPDESC_FLAGS_NONE); +#else + DUK_DDD(DUK_DDDPRINT("function is non-strict and non-standard 'caller' property not used")); +#endif + } + + /* + * "name" used to be non-standard but is now defined by ES2015. + * In ES2015/ES2016 the .name property is configurable. + */ + + /* [ ... closure template ] */ + +#if defined(DUK_USE_FUNC_NAME_PROPERTY) + /* XXX: Look for own property only; doesn't matter much because + * templates are bare objects. + */ + if (duk_get_prop_stridx_short(thr, -1, DUK_STRIDX_NAME)) { + /* [ ... closure template name ] */ + DUK_ASSERT(duk_is_string(thr, -1)); + DUK_DD(DUK_DDPRINT("setting function instance name to %!T", duk_get_tval(thr, -1))); + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_NAME, DUK_PROPDESC_FLAGS_C); /* -> [ ... closure template ] */ + } else { + /* Anonymous functions don't have a .name in ES2015, so don't set + * it on the instance either. The instance will then inherit + * it from Function.prototype.name. + */ + DUK_DD(DUK_DDPRINT("not setting function instance .name")); + duk_pop_unsafe(thr); + } +#endif + + /* + * Compact the closure, in most cases no properties will be added later. + * Also, without this the closures end up having unused property slots + * (e.g. in Duktape 0.9.0, 8 slots would be allocated and only 7 used). + * A better future solution would be to allocate the closure directly + * to correct size (and setup the properties directly without going + * through the API). + */ + + duk_compact(thr, -2); + + /* + * Some assertions (E5 Section 13.2). + */ + + DUK_ASSERT(DUK_HOBJECT_GET_CLASS_NUMBER(&fun_clos->obj) == DUK_HOBJECT_CLASS_FUNCTION); + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, &fun_clos->obj) == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]); + DUK_ASSERT(DUK_HOBJECT_HAS_EXTENSIBLE(&fun_clos->obj)); + DUK_ASSERT(duk_has_prop_stridx(thr, -2, DUK_STRIDX_LENGTH) != 0); + DUK_ASSERT(add_auto_proto == 0 || duk_has_prop_stridx(thr, -2, DUK_STRIDX_PROTOTYPE) != 0); + /* May be missing .name */ + DUK_ASSERT(!DUK_HOBJECT_HAS_STRICT(&fun_clos->obj) || + duk_has_prop_stridx(thr, -2, DUK_STRIDX_CALLER) != 0); + DUK_ASSERT(!DUK_HOBJECT_HAS_STRICT(&fun_clos->obj) || + duk_has_prop_stridx(thr, -2, DUK_STRIDX_LC_ARGUMENTS) != 0); + + /* + * Finish + */ + + /* [ ... closure template ] */ + + DUK_DDD(DUK_DDDPRINT("created function instance: template=%!iT -> closure=%!iT", + (duk_tval *) duk_get_tval(thr, -1), + (duk_tval *) duk_get_tval(thr, -2))); + + duk_pop_unsafe(thr); + + /* [ ... closure ] */ +} + +/* + * Delayed activation environment record initialization (for functions + * with NEWENV). + * + * The non-delayed initialization is handled by duk_handle_call(). + */ + +DUK_LOCAL void duk__preallocate_env_entries(duk_hthread *thr, duk_hobject *varmap, duk_hobject *env) { + duk_uint_fast32_t i; + + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(varmap); i++) { + duk_hstring *key; + + key = DUK_HOBJECT_E_GET_KEY(thr->heap, varmap, i); + DUK_ASSERT(key != NULL); /* assume keys are compact in _Varmap */ + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, varmap, i)); /* assume plain values */ + + /* Predefine as 'undefined' to reserve a property slot. + * This makes the unwind process (where register values + * are copied to the env object) safe against throwing. + * + * XXX: This could be made much faster by creating the + * property table directly. + */ + duk_push_undefined(thr); + DUK_DDD(DUK_DDDPRINT("preallocate env entry for key %!O", key)); + duk_hobject_define_property_internal(thr, env, key, DUK_PROPDESC_FLAGS_WE); + } +} + +/* shared helper */ +DUK_INTERNAL +duk_hobject *duk_create_activation_environment_record(duk_hthread *thr, + duk_hobject *func, + duk_size_t bottom_byteoff) { + duk_hdecenv *env; + duk_hobject *parent; + duk_hcompfunc *f; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(func != NULL); + + DUK_STATS_INC(thr->heap, stats_envrec_create); + + f = (duk_hcompfunc *) func; + parent = DUK_HCOMPFUNC_GET_LEXENV(thr->heap, f); + if (!parent) { + parent = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + } + + env = duk_hdecenv_alloc(thr, + DUK_HOBJECT_FLAG_EXTENSIBLE | + DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_DECENV)); + DUK_ASSERT(env != NULL); + duk_push_hobject(thr, (duk_hobject *) env); + + DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, (duk_hobject *) env) == NULL); + DUK_HOBJECT_SET_PROTOTYPE(thr->heap, (duk_hobject *) env, parent); + DUK_HOBJECT_INCREF_ALLOWNULL(thr, parent); /* parent env is the prototype */ + + /* open scope information, for compiled functions only */ + + DUK_ASSERT(env->thread == NULL); + DUK_ASSERT(env->varmap == NULL); + DUK_ASSERT(env->regbase_byteoff == 0); + if (DUK_HOBJECT_IS_COMPFUNC(func)) { + duk_hobject *varmap; + + varmap = duk_hobject_get_varmap(thr, func); + if (varmap != NULL) { + env->varmap = varmap; + DUK_HOBJECT_INCREF(thr, varmap); + env->thread = thr; + DUK_HTHREAD_INCREF(thr, thr); + env->regbase_byteoff = bottom_byteoff; + + /* Preallocate env property table to avoid potential + * for out-of-memory on unwind when the env is closed. + */ + duk__preallocate_env_entries(thr, varmap, (duk_hobject *) env); + } else { + /* If function has no _Varmap, leave the environment closed. */ + DUK_ASSERT(env->thread == NULL); + DUK_ASSERT(env->varmap == NULL); + DUK_ASSERT(env->regbase_byteoff == 0); + } + } + + return (duk_hobject *) env; +} + +DUK_INTERNAL +void duk_js_init_activation_environment_records_delayed(duk_hthread *thr, + duk_activation *act) { + duk_hobject *func; + duk_hobject *env; + + DUK_ASSERT(thr != NULL); + func = DUK_ACT_GET_FUNC(act); + DUK_ASSERT(func != NULL); + DUK_ASSERT(!DUK_HOBJECT_HAS_BOUNDFUNC(func)); /* bound functions are never in act 'func' */ + + /* + * Delayed initialization only occurs for 'NEWENV' functions. + */ + + DUK_ASSERT(DUK_HOBJECT_HAS_NEWENV(func)); + DUK_ASSERT(act->lex_env == NULL); + DUK_ASSERT(act->var_env == NULL); + + DUK_STATS_INC(thr->heap, stats_envrec_delayedcreate); + + env = duk_create_activation_environment_record(thr, func, act->bottom_byteoff); + DUK_ASSERT(env != NULL); + /* 'act' is a stable pointer, so still OK. */ + + DUK_DDD(DUK_DDDPRINT("created delayed fresh env: %!ipO", (duk_heaphdr *) env)); +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + { + duk_hobject *p = env; + while (p) { + DUK_DDD(DUK_DDDPRINT(" -> %!ipO", (duk_heaphdr *) p)); + p = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, p); + } + } +#endif + + act->lex_env = env; + act->var_env = env; + DUK_HOBJECT_INCREF(thr, env); /* XXX: incref by count (here 2 times) */ + DUK_HOBJECT_INCREF(thr, env); + + duk_pop_unsafe(thr); +} + +/* + * Closing environment records. + * + * The environment record MUST be closed with the thread where its activation + * is; i.e. if 'env' is open, 'thr' must match env->thread, and the regbase + * and varmap must still be valid. On entry, 'env' must be reachable. + */ + +DUK_INTERNAL void duk_js_close_environment_record(duk_hthread *thr, duk_hobject *env) { + duk_uint_fast32_t i; + duk_hobject *varmap; + duk_hstring *key; + duk_tval *tv; + duk_uint_t regnum; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(env != NULL); + + if (DUK_UNLIKELY(!DUK_HOBJECT_IS_DECENV(env))) { + DUK_DDD(DUK_DDDPRINT("env not a declarative record: %!iO", (duk_heaphdr *) env)); + return; + } + + varmap = ((duk_hdecenv *) env)->varmap; + if (varmap == NULL) { + DUK_DDD(DUK_DDDPRINT("env already closed: %!iO", (duk_heaphdr *) env)); + + return; + } + DUK_ASSERT(((duk_hdecenv *) env)->thread != NULL); + DUK_HDECENV_ASSERT_VALID((duk_hdecenv *) env); + + DUK_DDD(DUK_DDDPRINT("closing env: %!iO", (duk_heaphdr *) env)); + DUK_DDD(DUK_DDDPRINT("varmap: %!O", (duk_heaphdr *) varmap)); + + /* Env must be closed in the same thread as where it runs. */ + DUK_ASSERT(((duk_hdecenv *) env)->thread == thr); + + /* XXX: additional conditions when to close variables? we don't want to do it + * unless the environment may have "escaped" (referenced in a function closure). + * With delayed environments, the existence is probably good enough of a check. + */ + + /* Note: we rely on the _Varmap having a bunch of nice properties, like: + * - being compacted and unmodified during this process + * - not containing an array part + * - having correct value types + */ + + DUK_DDD(DUK_DDDPRINT("copying bound register values, %ld bound regs", (long) DUK_HOBJECT_GET_ENEXT(varmap))); + + /* Copy over current variable values from value stack to the + * environment record. The scope object is empty but may + * inherit from another scope which has conflicting names. + */ + + /* XXX: Do this using a once allocated entry area, no side effects. + * Hash part would need special treatment however (maybe copy, and + * then realloc with hash part if large enough). + */ + for (i = 0; i < (duk_uint_fast32_t) DUK_HOBJECT_GET_ENEXT(varmap); i++) { + duk_size_t regbase_byteoff; + + key = DUK_HOBJECT_E_GET_KEY(thr->heap, varmap, i); + DUK_ASSERT(key != NULL); /* assume keys are compact in _Varmap */ + DUK_ASSERT(!DUK_HOBJECT_E_SLOT_IS_ACCESSOR(thr->heap, varmap, i)); /* assume plain values */ + + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, varmap, i); + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + DUK_ASSERT(DUK_TVAL_GET_NUMBER(tv) <= (duk_double_t) DUK_UINT32_MAX); /* limits */ +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv)); + regnum = (duk_uint_t) DUK_TVAL_GET_FASTINT_U32(tv); +#else + regnum = (duk_uint_t) DUK_TVAL_GET_NUMBER(tv); +#endif + + regbase_byteoff = ((duk_hdecenv *) env)->regbase_byteoff; + DUK_ASSERT((duk_uint8_t *) thr->valstack + regbase_byteoff + sizeof(duk_tval) * regnum >= (duk_uint8_t *) thr->valstack); + DUK_ASSERT((duk_uint8_t *) thr->valstack + regbase_byteoff + sizeof(duk_tval) * regnum < (duk_uint8_t *) thr->valstack_top); + + /* Write register value into env as named properties. + * If property already exists, overwrites silently. + * Property is writable, but not deletable (not configurable + * in terms of property attributes). + * + * This property write must not throw because we're unwinding + * and unwind code is not allowed to throw at present. The + * call itself has no such guarantees, but we've preallocated + * entries for each property when the env was created, so no + * out-of-memory error should be possible. If this guarantee + * is not provided, problems like GH-476 may happen. + */ + duk_push_tval(thr, (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + regbase_byteoff + sizeof(duk_tval) * regnum)); + DUK_DDD(DUK_DDDPRINT("closing identifier %!O -> reg %ld, value %!T", + (duk_heaphdr *) key, + (long) regnum, + (duk_tval *) duk_get_tval(thr, -1))); + duk_hobject_define_property_internal(thr, env, key, DUK_PROPDESC_FLAGS_WE); + } + + /* NULL atomically to avoid inconsistent state + side effects. */ + DUK_HOBJECT_DECREF_NORZ(thr, ((duk_hdecenv *) env)->thread); + DUK_HOBJECT_DECREF_NORZ(thr, ((duk_hdecenv *) env)->varmap); + ((duk_hdecenv *) env)->thread = NULL; + ((duk_hdecenv *) env)->varmap = NULL; + + DUK_DDD(DUK_DDDPRINT("env after closing: %!O", (duk_heaphdr *) env)); +} + +/* + * GETIDREF: a GetIdentifierReference-like helper. + * + * Provides a parent traversing lookup and a single level lookup + * (for HasBinding). + * + * Instead of returning the value, returns a bunch of values allowing + * the caller to read, write, or delete the binding. Value pointers + * are duk_tval pointers which can be mutated directly as long as + * refcounts are properly updated. Note that any operation which may + * reallocate valstacks or compact objects may invalidate the returned + * duk_tval (but not object) pointers, so caller must be very careful. + * + * If starting environment record 'env' is given, 'act' is ignored. + * However, if 'env' is NULL, the caller may identify, in 'act', an + * activation which hasn't had its declarative environment initialized + * yet. The activation registers are then looked up, and its parent + * traversed normally. + * + * The 'out' structure values are only valid if the function returns + * success (non-zero). + */ + +/* lookup name from an open declarative record's registers */ +DUK_LOCAL +duk_bool_t duk__getid_open_decl_env_regs(duk_hthread *thr, + duk_hstring *name, + duk_hdecenv *env, + duk__id_lookup_result *out) { + duk_tval *tv; + duk_size_t reg_rel; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(name != NULL); + DUK_ASSERT(env != NULL); + DUK_ASSERT(out != NULL); + + DUK_ASSERT(DUK_HOBJECT_IS_DECENV((duk_hobject *) env)); + DUK_HDECENV_ASSERT_VALID(env); + + if (env->thread == NULL) { + /* already closed */ + return 0; + } + DUK_ASSERT(env->varmap != NULL); + + tv = duk_hobject_find_entry_tval_ptr(thr->heap, env->varmap, name); + if (DUK_UNLIKELY(tv == NULL)) { + return 0; + } + + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + DUK_ASSERT(DUK_TVAL_GET_NUMBER(tv) <= (duk_double_t) DUK_UINT32_MAX); /* limits */ +#if defined(DUK_USE_FASTINT) + DUK_ASSERT(DUK_TVAL_IS_FASTINT(tv)); + reg_rel = (duk_size_t) DUK_TVAL_GET_FASTINT_U32(tv); +#else + reg_rel = (duk_size_t) DUK_TVAL_GET_NUMBER(tv); +#endif + DUK_ASSERT_DISABLE(reg_rel >= 0); /* unsigned */ + + tv = (duk_tval *) (void *) ((duk_uint8_t *) env->thread->valstack + env->regbase_byteoff + sizeof(duk_tval) * reg_rel); + DUK_ASSERT(tv >= env->thread->valstack && tv < env->thread->valstack_end); /* XXX: more accurate? */ + + out->value = tv; + out->attrs = DUK_PROPDESC_FLAGS_W; /* registers are mutable, non-deletable */ + out->env = (duk_hobject *) env; + out->holder = NULL; + out->has_this = 0; + return 1; +} + +/* lookup name from current activation record's functions' registers */ +DUK_LOCAL +duk_bool_t duk__getid_activation_regs(duk_hthread *thr, + duk_hstring *name, + duk_activation *act, + duk__id_lookup_result *out) { + duk_tval *tv; + duk_hobject *func; + duk_hobject *varmap; + duk_size_t reg_rel; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(name != NULL); + DUK_ASSERT(act != NULL); + DUK_ASSERT(out != NULL); + + func = DUK_ACT_GET_FUNC(act); + DUK_ASSERT(func != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_NEWENV(func)); + + if (!DUK_HOBJECT_IS_COMPFUNC(func)) { + return 0; + } + + /* XXX: move varmap to duk_hcompfunc struct field? */ + varmap = duk_hobject_get_varmap(thr, func); + if (!varmap) { + return 0; + } + + tv = duk_hobject_find_entry_tval_ptr(thr->heap, varmap, name); + if (!tv) { + return 0; + } + DUK_ASSERT(DUK_TVAL_IS_NUMBER(tv)); + reg_rel = (duk_size_t) DUK_TVAL_GET_NUMBER(tv); + DUK_ASSERT_DISABLE(reg_rel >= 0); + DUK_ASSERT(reg_rel < ((duk_hcompfunc *) func)->nregs); + + tv = (duk_tval *) (void *) ((duk_uint8_t *) thr->valstack + act->bottom_byteoff); + tv += reg_rel; + + out->value = tv; + out->attrs = DUK_PROPDESC_FLAGS_W; /* registers are mutable, non-deletable */ + out->env = NULL; + out->holder = NULL; + out->has_this = 0; + return 1; +} + +DUK_LOCAL +duk_bool_t duk__get_identifier_reference(duk_hthread *thr, + duk_hobject *env, + duk_hstring *name, + duk_activation *act, + duk_bool_t parents, + duk__id_lookup_result *out) { + duk_tval *tv; + duk_uint_t sanity; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(env != NULL || act != NULL); + DUK_ASSERT(name != NULL); + DUK_ASSERT(out != NULL); + + DUK_ASSERT(!env || DUK_HOBJECT_IS_ENV(env)); + DUK_ASSERT(!env || !DUK_HOBJECT_HAS_ARRAY_PART(env)); + + /* + * Conceptually, we look for the identifier binding by starting from + * 'env' and following to chain of environment records (represented + * by the prototype chain). + * + * If 'env' is NULL, the current activation does not yet have an + * allocated declarative environment record; this should be treated + * exactly as if the environment record existed but had no bindings + * other than register bindings. + * + * Note: we assume that with the DUK_HOBJECT_FLAG_NEWENV cleared + * the environment will always be initialized immediately; hence + * a NULL 'env' should only happen with the flag set. This is the + * case for: (1) function calls, and (2) strict, direct eval calls. + */ + + if (env == NULL && act != NULL) { + duk_hobject *func; + duk_hcompfunc *f; + + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference: env is NULL, activation is non-NULL -> " + "delayed env case, look up activation regs first")); + + /* + * Try registers + */ + + if (duk__getid_activation_regs(thr, name, act, out)) { + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference successful: " + "name=%!O -> value=%!T, attrs=%ld, has_this=%ld, env=%!O, holder=%!O " + "(found from register bindings when env=NULL)", + (duk_heaphdr *) name, (duk_tval *) out->value, + (long) out->attrs, (long) out->has_this, + (duk_heaphdr *) out->env, (duk_heaphdr *) out->holder)); + return 1; + } + + DUK_DDD(DUK_DDDPRINT("not found in current activation regs")); + + /* + * Not found in registers, proceed to the parent record. + * Here we need to determine what the parent would be, + * if 'env' was not NULL (i.e. same logic as when initializing + * the record). + * + * Note that environment initialization is only deferred when + * DUK_HOBJECT_HAS_NEWENV is set, and this only happens for: + * - Function code + * - Strict eval code + * + * We only need to check _Lexenv here; _Varenv exists only if it + * differs from _Lexenv (and thus _Lexenv will also be present). + */ + + if (!parents) { + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference failed, no parent traversal " + "(not found from register bindings when env=NULL)")); + goto fail_not_found; + } + + func = DUK_ACT_GET_FUNC(act); + DUK_ASSERT(func != NULL); + DUK_ASSERT(DUK_HOBJECT_HAS_NEWENV(func)); + f = (duk_hcompfunc *) func; + + env = DUK_HCOMPFUNC_GET_LEXENV(thr->heap, f); + if (!env) { + env = thr->builtins[DUK_BIDX_GLOBAL_ENV]; + } + + DUK_DDD(DUK_DDDPRINT("continue lookup from env: %!iO", + (duk_heaphdr *) env)); + } + + /* + * Prototype walking starting from 'env'. + * + * ('act' is not needed anywhere here.) + */ + + sanity = DUK_HOBJECT_PROTOTYPE_CHAIN_SANITY; + while (env != NULL) { + duk_small_uint_t cl; + duk_uint_t attrs; + + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference, name=%!O, considering env=%p -> %!iO", + (duk_heaphdr *) name, + (void *) env, + (duk_heaphdr *) env)); + + DUK_ASSERT(env != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_ENV(env)); + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(env)); + + cl = DUK_HOBJECT_GET_CLASS_NUMBER(env); + DUK_ASSERT(cl == DUK_HOBJECT_CLASS_OBJENV || cl == DUK_HOBJECT_CLASS_DECENV); + if (cl == DUK_HOBJECT_CLASS_DECENV) { + /* + * Declarative environment record. + * + * Identifiers can never be stored in ancestors and are + * always plain values, so we can use an internal helper + * and access the value directly with an duk_tval ptr. + * + * A closed environment is only indicated by it missing + * the "book-keeping" properties required for accessing + * register-bound variables. + */ + + DUK_HDECENV_ASSERT_VALID((duk_hdecenv *) env); + if (duk__getid_open_decl_env_regs(thr, name, (duk_hdecenv *) env, out)) { + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference successful: " + "name=%!O -> value=%!T, attrs=%ld, has_this=%ld, env=%!O, holder=%!O " + "(declarative environment record, scope open, found in regs)", + (duk_heaphdr *) name, (duk_tval *) out->value, + (long) out->attrs, (long) out->has_this, + (duk_heaphdr *) out->env, (duk_heaphdr *) out->holder)); + return 1; + } + + tv = duk_hobject_find_entry_tval_ptr_and_attrs(thr->heap, env, name, &attrs); + if (tv) { + out->value = tv; + out->attrs = attrs; + out->env = env; + out->holder = env; + out->has_this = 0; + + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference successful: " + "name=%!O -> value=%!T, attrs=%ld, has_this=%ld, env=%!O, holder=%!O " + "(declarative environment record, found in properties)", + (duk_heaphdr *) name, (duk_tval *) out->value, + (long) out->attrs, (long) out->has_this, + (duk_heaphdr *) out->env, (duk_heaphdr *) out->holder)); + return 1; + } + } else { + /* + * Object environment record. + * + * Binding (target) object is an external, uncontrolled object. + * Identifier may be bound in an ancestor property, and may be + * an accessor. Target can also be a Proxy which we must support + * here. + */ + + /* XXX: we could save space by using _Target OR _This. If _Target, assume + * this binding is undefined. If _This, assumes this binding is _This, and + * target is also _This. One property would then be enough. + */ + + duk_hobject *target; + duk_bool_t found; + + DUK_ASSERT(cl == DUK_HOBJECT_CLASS_OBJENV); + DUK_HOBJENV_ASSERT_VALID((duk_hobjenv *) env); + + target = ((duk_hobjenv *) env)->target; + DUK_ASSERT(target != NULL); + + /* Target may be a Proxy or property may be an accessor, so we must + * use an actual, Proxy-aware hasprop check here. + * + * out->holder is NOT set to the actual duk_hobject where the + * property is found, but rather the object binding target object. + */ + +#if defined(DUK_USE_ES6_PROXY) + if (DUK_UNLIKELY(DUK_HOBJECT_IS_PROXY(target))) { + duk_tval tv_name; + duk_tval tv_target_tmp; + + DUK_ASSERT(name != NULL); + DUK_TVAL_SET_STRING(&tv_name, name); + DUK_TVAL_SET_OBJECT(&tv_target_tmp, target); + + found = duk_hobject_hasprop(thr, &tv_target_tmp, &tv_name); + } else +#endif /* DUK_USE_ES6_PROXY */ + { + /* XXX: duk_hobject_hasprop() would be correct for + * non-Proxy objects too, but it is about ~20-25% + * slower at present so separate code paths for + * Proxy and non-Proxy now. + */ + found = duk_hobject_hasprop_raw(thr, target, name); + } + + if (found) { + out->value = NULL; /* can't get value, may be accessor */ + out->attrs = 0; /* irrelevant when out->value == NULL */ + out->env = env; + out->holder = target; + out->has_this = ((duk_hobjenv *) env)->has_this; + + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference successful: " + "name=%!O -> value=%!T, attrs=%ld, has_this=%ld, env=%!O, holder=%!O " + "(object environment record)", + (duk_heaphdr *) name, (duk_tval *) out->value, + (long) out->attrs, (long) out->has_this, + (duk_heaphdr *) out->env, (duk_heaphdr *) out->holder)); + return 1; + } + } + + if (!parents) { + DUK_DDD(DUK_DDDPRINT("duk__get_identifier_reference failed, no parent traversal " + "(not found from first traversed env)")); + goto fail_not_found; + } + + if (DUK_UNLIKELY(sanity-- == 0)) { + DUK_ERROR_RANGE(thr, DUK_STR_PROTOTYPE_CHAIN_LIMIT); + DUK_WO_NORETURN(return 0;); + } + env = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, env); + } + + /* + * Not found (even in global object) + */ + + fail_not_found: + return 0; +} + +/* + * HASVAR: check identifier binding from a given environment record + * without traversing its parents. + * + * This primitive is not exposed to user code as such, but is used + * internally for e.g. declaration binding instantiation. + * + * See E5 Sections: + * 10.2.1.1.1 HasBinding(N) + * 10.2.1.2.1 HasBinding(N) + * + * Note: strictness has no bearing on this check. Hence we don't take + * a 'strict' parameter. + */ + +#if 0 /*unused*/ +DUK_INTERNAL +duk_bool_t duk_js_hasvar_envrec(duk_hthread *thr, + duk_hobject *env, + duk_hstring *name) { + duk__id_lookup_result ref; + duk_bool_t parents; + + DUK_DDD(DUK_DDDPRINT("hasvar: thr=%p, env=%p, name=%!O " + "(env -> %!dO)", + (void *) thr, (void *) env, (duk_heaphdr *) name, + (duk_heaphdr *) env)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(env != NULL); + DUK_ASSERT(name != NULL); + + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(env); + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(name); + + DUK_ASSERT(DUK_HOBJECT_IS_ENV(env)); + DUK_ASSERT(!DUK_HOBJECT_HAS_ARRAY_PART(env)); + + /* lookup results is ignored */ + parents = 0; + return duk__get_identifier_reference(thr, env, name, NULL, parents, &ref); +} +#endif + +/* + * GETVAR + * + * See E5 Sections: + * 11.1.2 Identifier Reference + * 10.3.1 Identifier Resolution + * 11.13.1 Simple Assignment [example of where the Reference is GetValue'd] + * 8.7.1 GetValue (V) + * 8.12.1 [[GetOwnProperty]] (P) + * 8.12.2 [[GetProperty]] (P) + * 8.12.3 [[Get]] (P) + * + * If 'throw' is true, always leaves two values on top of stack: [val this]. + * + * If 'throw' is false, returns 0 if identifier cannot be resolved, and the + * stack will be unaffected in this case. If identifier is resolved, returns + * 1 and leaves [val this] on top of stack. + * + * Note: the 'strict' flag of a reference returned by GetIdentifierReference + * is ignored by GetValue. Hence we don't take a 'strict' parameter. + * + * The 'throw' flag is needed for implementing 'typeof' for an unreferenced + * identifier. An unreference identifier in other contexts generates a + * ReferenceError. + */ + +DUK_LOCAL +duk_bool_t duk__getvar_helper(duk_hthread *thr, + duk_hobject *env, + duk_activation *act, + duk_hstring *name, + duk_bool_t throw_flag) { + duk__id_lookup_result ref; + duk_tval tv_tmp_obj; + duk_tval tv_tmp_key; + duk_bool_t parents; + + DUK_DDD(DUK_DDDPRINT("getvar: thr=%p, env=%p, act=%p, name=%!O " + "(env -> %!dO)", + (void *) thr, (void *) env, (void *) act, + (duk_heaphdr *) name, (duk_heaphdr *) env)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(name != NULL); + /* env and act may be NULL */ + + DUK_STATS_INC(thr->heap, stats_getvar_all); + + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(env); + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(name); + + parents = 1; /* follow parent chain */ + if (duk__get_identifier_reference(thr, env, name, act, parents, &ref)) { + if (ref.value) { + duk_push_tval(thr, ref.value); + duk_push_undefined(thr); + } else { + DUK_ASSERT(ref.holder != NULL); + + /* ref.holder is safe across the getprop call (even + * with side effects) because 'env' is reachable and + * ref.holder is a direct heap pointer. + */ + + DUK_TVAL_SET_OBJECT(&tv_tmp_obj, ref.holder); + DUK_TVAL_SET_STRING(&tv_tmp_key, name); + (void) duk_hobject_getprop(thr, &tv_tmp_obj, &tv_tmp_key); /* [value] */ + + if (ref.has_this) { + duk_push_hobject(thr, ref.holder); + } else { + duk_push_undefined(thr); + } + + /* [value this] */ + } + + return 1; + } else { + if (throw_flag) { + DUK_ERROR_FMT1(thr, DUK_ERR_REFERENCE_ERROR, + "identifier '%s' undefined", + (const char *) DUK_HSTRING_GET_DATA(name)); + DUK_WO_NORETURN(return 0;); + } + + return 0; + } +} + +DUK_INTERNAL +duk_bool_t duk_js_getvar_envrec(duk_hthread *thr, + duk_hobject *env, + duk_hstring *name, + duk_bool_t throw_flag) { + return duk__getvar_helper(thr, env, NULL, name, throw_flag); +} + +DUK_INTERNAL +duk_bool_t duk_js_getvar_activation(duk_hthread *thr, + duk_activation *act, + duk_hstring *name, + duk_bool_t throw_flag) { + DUK_ASSERT(act != NULL); + return duk__getvar_helper(thr, act->lex_env, act, name, throw_flag); +} + +/* + * PUTVAR + * + * See E5 Sections: + * 11.1.2 Identifier Reference + * 10.3.1 Identifier Resolution + * 11.13.1 Simple Assignment [example of where the Reference is PutValue'd] + * 8.7.2 PutValue (V,W) [see especially step 3.b, undefined -> automatic global in non-strict mode] + * 8.12.4 [[CanPut]] (P) + * 8.12.5 [[Put]] (P) + * + * Note: may invalidate any valstack (or object) duk_tval pointers because + * putting a value may reallocate any object or any valstack. Caller beware. + */ + +DUK_LOCAL +void duk__putvar_helper(duk_hthread *thr, + duk_hobject *env, + duk_activation *act, + duk_hstring *name, + duk_tval *val, + duk_bool_t strict) { + duk__id_lookup_result ref; + duk_tval tv_tmp_obj; + duk_tval tv_tmp_key; + duk_bool_t parents; + + DUK_STATS_INC(thr->heap, stats_putvar_all); + + DUK_DDD(DUK_DDDPRINT("putvar: thr=%p, env=%p, act=%p, name=%!O, val=%p, strict=%ld " + "(env -> %!dO, val -> %!T)", + (void *) thr, (void *) env, (void *) act, + (duk_heaphdr *) name, (void *) val, (long) strict, + (duk_heaphdr *) env, (duk_tval *) val)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(name != NULL); + DUK_ASSERT(val != NULL); + /* env and act may be NULL */ + + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(env); + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(name); + DUK_ASSERT_REFCOUNT_NONZERO_TVAL(val); + + /* + * In strict mode E5 protects 'eval' and 'arguments' from being + * assigned to (or even declared anywhere). Attempt to do so + * should result in a compile time SyntaxError. See the internal + * design documentation for details. + * + * Thus, we should never come here, run-time, for strict code, + * and name 'eval' or 'arguments'. + */ + + DUK_ASSERT(!strict || + (name != DUK_HTHREAD_STRING_EVAL(thr) && + name != DUK_HTHREAD_STRING_LC_ARGUMENTS(thr))); + + /* + * Lookup variable and update in-place if found. + */ + + parents = 1; /* follow parent chain */ + + if (duk__get_identifier_reference(thr, env, name, act, parents, &ref)) { + if (ref.value && (ref.attrs & DUK_PROPDESC_FLAG_WRITABLE)) { + /* Update duk_tval in-place if pointer provided and the + * property is writable. If the property is not writable + * (immutable binding), use duk_hobject_putprop() which + * will respect mutability. + */ + duk_tval *tv_val; + + tv_val = ref.value; + DUK_ASSERT(tv_val != NULL); + DUK_TVAL_SET_TVAL_UPDREF(thr, tv_val, val); /* side effects */ + + /* ref.value invalidated here */ + } else { + DUK_ASSERT(ref.holder != NULL); + + DUK_TVAL_SET_OBJECT(&tv_tmp_obj, ref.holder); + DUK_TVAL_SET_STRING(&tv_tmp_key, name); + (void) duk_hobject_putprop(thr, &tv_tmp_obj, &tv_tmp_key, val, strict); + + /* ref.value invalidated here */ + } + + return; + } + + /* + * Not found: write to global object (non-strict) or ReferenceError + * (strict); see E5 Section 8.7.2, step 3. + */ + + if (strict) { + DUK_DDD(DUK_DDDPRINT("identifier binding not found, strict => reference error")); + DUK_ERROR_FMT1(thr, DUK_ERR_REFERENCE_ERROR, + "identifier '%s' undefined", + (const char *) DUK_HSTRING_GET_DATA(name)); + DUK_WO_NORETURN(return;); + } + + DUK_DDD(DUK_DDDPRINT("identifier binding not found, not strict => set to global")); + + DUK_TVAL_SET_OBJECT(&tv_tmp_obj, thr->builtins[DUK_BIDX_GLOBAL]); + DUK_TVAL_SET_STRING(&tv_tmp_key, name); + (void) duk_hobject_putprop(thr, &tv_tmp_obj, &tv_tmp_key, val, 0); /* 0 = no throw */ + + /* NB: 'val' may be invalidated here because put_value may realloc valstack, + * caller beware. + */ +} + +DUK_INTERNAL +void duk_js_putvar_envrec(duk_hthread *thr, + duk_hobject *env, + duk_hstring *name, + duk_tval *val, + duk_bool_t strict) { + duk__putvar_helper(thr, env, NULL, name, val, strict); +} + +DUK_INTERNAL +void duk_js_putvar_activation(duk_hthread *thr, + duk_activation *act, + duk_hstring *name, + duk_tval *val, + duk_bool_t strict) { + DUK_ASSERT(act != NULL); + duk__putvar_helper(thr, act->lex_env, act, name, val, strict); +} + +/* + * DELVAR + * + * See E5 Sections: + * 11.4.1 The delete operator + * 10.2.1.1.5 DeleteBinding (N) [declarative environment record] + * 10.2.1.2.5 DeleteBinding (N) [object environment record] + * + * Variable bindings established inside eval() are deletable (configurable), + * other bindings are not, including variables declared in global level. + * Registers are always non-deletable, and the deletion of other bindings + * is controlled by the configurable flag. + * + * For strict mode code, the 'delete' operator should fail with a compile + * time SyntaxError if applied to identifiers. Hence, no strict mode + * run-time deletion of identifiers should ever happen. This function + * should never be called from strict mode code! + */ + +DUK_LOCAL +duk_bool_t duk__delvar_helper(duk_hthread *thr, + duk_hobject *env, + duk_activation *act, + duk_hstring *name) { + duk__id_lookup_result ref; + duk_bool_t parents; + + DUK_DDD(DUK_DDDPRINT("delvar: thr=%p, env=%p, act=%p, name=%!O " + "(env -> %!dO)", + (void *) thr, (void *) env, (void *) act, + (duk_heaphdr *) name, (duk_heaphdr *) env)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(name != NULL); + /* env and act may be NULL */ + + DUK_ASSERT_REFCOUNT_NONZERO_HEAPHDR(name); + + parents = 1; /* follow parent chain */ + + if (duk__get_identifier_reference(thr, env, name, act, parents, &ref)) { + if (ref.value && !(ref.attrs & DUK_PROPDESC_FLAG_CONFIGURABLE)) { + /* Identifier found in registers (always non-deletable) + * or declarative environment record and non-configurable. + */ + return 0; + } + DUK_ASSERT(ref.holder != NULL); + + return duk_hobject_delprop_raw(thr, ref.holder, name, 0); + } + + /* + * Not found (even in global object). + * + * In non-strict mode this is a silent SUCCESS (!), see E5 Section 11.4.1, + * step 3.b. In strict mode this case is a compile time SyntaxError so + * we should not come here. + */ + + DUK_DDD(DUK_DDDPRINT("identifier to be deleted not found: name=%!O " + "(treated as silent success)", + (duk_heaphdr *) name)); + return 1; +} + +#if 0 /*unused*/ +DUK_INTERNAL +duk_bool_t duk_js_delvar_envrec(duk_hthread *thr, + duk_hobject *env, + duk_hstring *name) { + return duk__delvar_helper(thr, env, NULL, name); +} +#endif + +DUK_INTERNAL +duk_bool_t duk_js_delvar_activation(duk_hthread *thr, + duk_activation *act, + duk_hstring *name) { + DUK_ASSERT(act != NULL); + return duk__delvar_helper(thr, act->lex_env, act, name); +} + +/* + * DECLVAR + * + * See E5 Sections: + * 10.4.3 Entering Function Code + * 10.5 Declaration Binding Instantion + * 12.2 Variable Statement + * 11.1.2 Identifier Reference + * 10.3.1 Identifier Resolution + * + * Variable declaration behavior is mainly discussed in Section 10.5, + * and is not discussed in the execution semantics (Sections 11-13). + * + * Conceptually declarations happen when code (global, eval, function) + * is entered, before any user code is executed. In practice, register- + * bound identifiers are 'declared' automatically (by virtue of being + * allocated to registers with the initial value 'undefined'). Other + * identifiers are declared in the function prologue with this primitive. + * + * Since non-register bindings eventually back to an internal object's + * properties, the 'prop_flags' argument is used to specify binding + * type: + * + * - Immutable binding: set DUK_PROPDESC_FLAG_WRITABLE to false + * - Non-deletable binding: set DUK_PROPDESC_FLAG_CONFIGURABLE to false + * - The flag DUK_PROPDESC_FLAG_ENUMERABLE should be set, although it + * doesn't really matter for internal objects + * + * All bindings are non-deletable mutable bindings except: + * + * - Declarations in eval code (mutable, deletable) + * - 'arguments' binding in strict function code (immutable) + * - Function name binding of a function expression (immutable) + * + * Declarations may go to declarative environment records (always + * so for functions), but may also go to object environment records + * (e.g. global code). The global object environment has special + * behavior when re-declaring a function (but not a variable); see + * E5.1 specification, Section 10.5, step 5.e. + * + * Declarations always go to the 'top-most' environment record, i.e. + * we never check the record chain. It's not an error even if a + * property (even an immutable or non-deletable one) of the same name + * already exists. + * + * If a declared variable already exists, its value needs to be updated + * (if possible). Returns 1 if a PUTVAR needs to be done by the caller; + * otherwise returns 0. + */ + +DUK_LOCAL +duk_bool_t duk__declvar_helper(duk_hthread *thr, + duk_hobject *env, + duk_hstring *name, + duk_tval *val, + duk_small_uint_t prop_flags, + duk_bool_t is_func_decl) { + duk_hobject *holder; + duk_bool_t parents; + duk__id_lookup_result ref; + duk_tval *tv; + + DUK_DDD(DUK_DDDPRINT("declvar: thr=%p, env=%p, name=%!O, val=%!T, prop_flags=0x%08lx, is_func_decl=%ld " + "(env -> %!iO)", + (void *) thr, (void *) env, (duk_heaphdr *) name, + (duk_tval *) val, (unsigned long) prop_flags, + (unsigned int) is_func_decl, (duk_heaphdr *) env)); + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(env != NULL); + DUK_ASSERT(name != NULL); + DUK_ASSERT(val != NULL); + + /* Note: in strict mode the compiler should reject explicit + * declaration of 'eval' or 'arguments'. However, internal + * bytecode may declare 'arguments' in the function prologue. + * We don't bother checking (or asserting) for these now. + */ + + /* Note: val is a stable duk_tval pointer. The caller makes + * a value copy into its stack frame, so 'tv_val' is not subject + * to side effects here. + */ + + /* + * Check whether already declared. + * + * We need to check whether the binding exists in the environment + * without walking its parents. However, we still need to check + * register-bound identifiers and the prototype chain of an object + * environment target object. + */ + + parents = 0; /* just check 'env' */ + if (duk__get_identifier_reference(thr, env, name, NULL, parents, &ref)) { + duk_int_t e_idx; + duk_int_t h_idx; + duk_small_uint_t flags; + + /* + * Variable already declared, ignore re-declaration. + * The only exception is the updated behavior of E5.1 for + * global function declarations, E5.1 Section 10.5, step 5.e. + * This behavior does not apply to global variable declarations. + */ + + if (!(is_func_decl && env == thr->builtins[DUK_BIDX_GLOBAL_ENV])) { + DUK_DDD(DUK_DDDPRINT("re-declare a binding, ignoring")); + return 1; /* 1 -> needs a PUTVAR */ + } + + /* + * Special behavior in E5.1. + * + * Note that even though parents == 0, the conflicting property + * may be an inherited property (currently our global object's + * prototype is Object.prototype). Step 5.e first operates on + * the existing property (which is potentially in an ancestor) + * and then defines a new property in the global object (and + * never modifies the ancestor). + * + * Also note that this logic would become even more complicated + * if the conflicting property might be a virtual one. Object + * prototype has no virtual properties, though. + * + * XXX: this is now very awkward, rework. + */ + + DUK_DDD(DUK_DDDPRINT("re-declare a function binding in global object, " + "updated E5.1 processing")); + + DUK_ASSERT(ref.holder != NULL); + holder = ref.holder; + + /* holder will be set to the target object, not the actual object + * where the property was found (see duk__get_identifier_reference()). + */ + DUK_ASSERT(DUK_HOBJECT_GET_CLASS_NUMBER(holder) == DUK_HOBJECT_CLASS_GLOBAL); + DUK_ASSERT(!DUK_HOBJECT_HAS_EXOTIC_ARRAY(holder)); /* global object doesn't have array part */ + + /* XXX: use a helper for prototype traversal; no loop check here */ + /* must be found: was found earlier, and cannot be inherited */ + for (;;) { + DUK_ASSERT(holder != NULL); + if (duk_hobject_find_entry(thr->heap, holder, name, &e_idx, &h_idx)) { + DUK_ASSERT(e_idx >= 0); + break; + } + /* SCANBUILD: NULL pointer dereference, doesn't actually trigger, + * asserted above. + */ + holder = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, holder); + } + DUK_ASSERT(holder != NULL); + DUK_ASSERT(e_idx >= 0); + /* SCANBUILD: scan-build produces a NULL pointer dereference warning + * below; it never actually triggers because holder is actually never + * NULL. + */ + + /* ref.holder is global object, holder is the object with the + * conflicting property. + */ + + flags = DUK_HOBJECT_E_GET_FLAGS(thr->heap, holder, e_idx); + if (!(flags & DUK_PROPDESC_FLAG_CONFIGURABLE)) { + if (flags & DUK_PROPDESC_FLAG_ACCESSOR) { + DUK_DDD(DUK_DDDPRINT("existing property is a non-configurable " + "accessor -> reject")); + goto fail_existing_attributes; + } + if (!((flags & DUK_PROPDESC_FLAG_WRITABLE) && + (flags & DUK_PROPDESC_FLAG_ENUMERABLE))) { + DUK_DDD(DUK_DDDPRINT("existing property is a non-configurable " + "plain property which is not writable and " + "enumerable -> reject")); + goto fail_existing_attributes; + } + + DUK_DDD(DUK_DDDPRINT("existing property is not configurable but " + "is plain, enumerable, and writable -> " + "allow redeclaration")); + } + + if (holder == ref.holder) { + /* XXX: if duk_hobject_define_property_internal() was updated + * to handle a pre-existing accessor property, this would be + * a simple call (like for the ancestor case). + */ + DUK_DDD(DUK_DDDPRINT("redefine, offending property in global object itself")); + + if (flags & DUK_PROPDESC_FLAG_ACCESSOR) { + duk_hobject *tmp; + + tmp = DUK_HOBJECT_E_GET_VALUE_GETTER(thr->heap, holder, e_idx); + DUK_HOBJECT_E_SET_VALUE_GETTER(thr->heap, holder, e_idx, NULL); + DUK_HOBJECT_DECREF_ALLOWNULL(thr, tmp); + DUK_UNREF(tmp); + tmp = DUK_HOBJECT_E_GET_VALUE_SETTER(thr->heap, holder, e_idx); + DUK_HOBJECT_E_SET_VALUE_SETTER(thr->heap, holder, e_idx, NULL); + DUK_HOBJECT_DECREF_ALLOWNULL(thr, tmp); + DUK_UNREF(tmp); + } else { + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, holder, e_idx); + DUK_TVAL_SET_UNDEFINED_UPDREF(thr, tv); + } + + /* Here val would be potentially invalid if we didn't make + * a value copy at the caller. + */ + + tv = DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, holder, e_idx); + DUK_TVAL_SET_TVAL(tv, val); + DUK_TVAL_INCREF(thr, tv); + DUK_HOBJECT_E_SET_FLAGS(thr->heap, holder, e_idx, prop_flags); + + DUK_DDD(DUK_DDDPRINT("updated global binding, final result: " + "value -> %!T, prop_flags=0x%08lx", + (duk_tval *) DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(thr->heap, holder, e_idx), + (unsigned long) prop_flags)); + } else { + DUK_DDD(DUK_DDDPRINT("redefine, offending property in ancestor")); + + DUK_ASSERT(ref.holder == thr->builtins[DUK_BIDX_GLOBAL]); + duk_push_tval(thr, val); + duk_hobject_define_property_internal(thr, ref.holder, name, prop_flags); + } + + return 0; + } + + /* + * Not found (in registers or record objects). Declare + * to current variable environment. + */ + + /* + * Get holder object + */ + + if (DUK_HOBJECT_IS_DECENV(env)) { + DUK_HDECENV_ASSERT_VALID((duk_hdecenv *) env); + holder = env; + } else { + DUK_HOBJENV_ASSERT_VALID((duk_hobjenv *) env); + holder = ((duk_hobjenv *) env)->target; + DUK_ASSERT(holder != NULL); + } + + /* + * Define new property + * + * Note: this may fail if the holder is not extensible. + */ + + /* XXX: this is awkward as we use an internal method which doesn't handle + * extensibility etc correctly. Basically we'd want to do a [[DefineOwnProperty]] + * or Object.defineProperty() here. + */ + + if (!DUK_HOBJECT_HAS_EXTENSIBLE(holder)) { + goto fail_not_extensible; + } + + duk_push_hobject(thr, holder); + duk_push_hstring(thr, name); + duk_push_tval(thr, val); + duk_xdef_prop(thr, -3, prop_flags); /* [holder name val] -> [holder] */ + duk_pop_unsafe(thr); + + return 0; + + fail_existing_attributes: + fail_not_extensible: + DUK_ERROR_TYPE(thr, "declaration failed"); + DUK_WO_NORETURN(return 0;); +} + +DUK_INTERNAL +duk_bool_t duk_js_declvar_activation(duk_hthread *thr, + duk_activation *act, + duk_hstring *name, + duk_tval *val, + duk_small_uint_t prop_flags, + duk_bool_t is_func_decl) { + duk_hobject *env; + duk_tval tv_val_copy; + + DUK_ASSERT(act != NULL); + + /* + * Make a value copy of the input val. This ensures that + * side effects cannot invalidate the pointer. + */ + + DUK_TVAL_SET_TVAL(&tv_val_copy, val); + val = &tv_val_copy; + + /* + * Delayed env creation check + */ + + if (!act->var_env) { + DUK_ASSERT(act->lex_env == NULL); + duk_js_init_activation_environment_records_delayed(thr, act); + /* 'act' is a stable pointer, so still OK. */ + } + DUK_ASSERT(act->lex_env != NULL); + DUK_ASSERT(act->var_env != NULL); + + env = act->var_env; + DUK_ASSERT(env != NULL); + DUK_ASSERT(DUK_HOBJECT_IS_ENV(env)); + + return duk__declvar_helper(thr, env, name, val, prop_flags, is_func_decl); +} +#line 1 "duk_lexer.c" +/* + * Lexer for source files, ToNumber() string conversions, RegExp expressions, + * and JSON. + * + * Provides a stream of ECMAScript tokens from an UTF-8/CESU-8 buffer. The + * caller can also rewind the token stream into a certain position which is + * needed by the compiler part for multi-pass scanning. Tokens are + * represented as duk_token structures, and contain line number information. + * Token types are identified with DUK_TOK_* defines. + * + * Characters are decoded into a fixed size lookup window consisting of + * decoded Unicode code points, with window positions past the end of the + * input filled with an invalid codepoint (-1). The tokenizer can thus + * perform multiple character lookups efficiently and with few sanity + * checks (such as access outside the end of the input), which keeps the + * tokenization code small at the cost of performance. + * + * Character data in tokens, such as identifier names and string literals, + * is encoded into CESU-8 format on-the-fly while parsing the token in + * question. The string data is made reachable to garbage collection by + * placing the token-related values in value stack entries allocated for + * this purpose by the caller. The characters exist in Unicode code point + * form only in the fixed size lookup window, which keeps character data + * expansion (of especially ASCII data) low. + * + * Token parsing supports the full range of Unicode characters as described + * in the E5 specification. Parsing has been optimized for ASCII characters + * because ordinary ECMAScript code consists almost entirely of ASCII + * characters. Matching of complex Unicode codepoint sets (such as in the + * IdentifierStart and IdentifierPart productions) is optimized for size, + * and is done using a linear scan of a bit-packed list of ranges. This is + * very slow, but should never be entered unless the source code actually + * contains Unicode characters. + * + * ECMAScript tokenization is partially context sensitive. First, + * additional future reserved words are recognized in strict mode (see E5 + * Section 7.6.1.2). Second, a forward slash character ('/') can be + * recognized either as starting a RegExp literal or as a division operator, + * depending on context. The caller must provide necessary context flags + * when requesting a new token. + * + * Future work: + * + * * Make line number tracking optional, as it consumes space. + * + * * Add a feature flag for disabling UTF-8 decoding of input, as most + * source code is ASCII. Because of Unicode escapes written in ASCII, + * this does not allow Unicode support to be removed from e.g. + * duk_unicode_is_identifier_start() nor does it allow removal of CESU-8 + * encoding of e.g. string literals. + * + * * Add a feature flag for disabling Unicode compliance of e.g. identifier + * names. This allows for a build more than a kilobyte smaller, because + * Unicode ranges needed by duk_unicode_is_identifier_start() and + * duk_unicode_is_identifier_part() can be dropped. String literals + * should still be allowed to contain escaped Unicode, so this still does + * not allow removal of CESU-8 encoding of e.g. string literals. + * + * * Character lookup tables for codepoints above BMP could be stripped. + * + * * Strictly speaking, E5 specification requires that source code consists + * of 16-bit code units, and if not, must be conceptually converted to + * that format first. The current lexer processes Unicode code points + * and allows characters outside the BMP. These should be converted to + * surrogate pairs while reading the source characters into the window, + * not after tokens have been formed (as is done now). However, the fix + * is not trivial because two characters are decoded from one codepoint. + * + * * Optimize for speed as well as size. Large if-else ladders are (at + * least potentially) slow. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Various defines and file specific helper macros + */ + +#define DUK__MAX_RE_DECESC_DIGITS 9 +#define DUK__MAX_RE_QUANT_DIGITS 9 /* Does not allow e.g. 2**31-1, but one more would allow overflows of u32. */ + +/* whether to use macros or helper function depends on call count */ +#define DUK__ISDIGIT(x) ((x) >= DUK_ASC_0 && (x) <= DUK_ASC_9) +#define DUK__ISHEXDIGIT(x) duk__is_hex_digit((x)) +#define DUK__ISOCTDIGIT(x) ((x) >= DUK_ASC_0 && (x) <= DUK_ASC_7) +#define DUK__ISDIGIT03(x) ((x) >= DUK_ASC_0 && (x) <= DUK_ASC_3) +#define DUK__ISDIGIT47(x) ((x) >= DUK_ASC_4 && (x) <= DUK_ASC_7) + +/* lexer character window helpers */ +#define DUK__LOOKUP(lex_ctx,idx) ((lex_ctx)->window[(idx)].codepoint) +#define DUK__ADVANCECHARS(lex_ctx,count) duk__advance_chars((lex_ctx), (count)) +#define DUK__ADVANCEBYTES(lex_ctx,count) duk__advance_bytes((lex_ctx), (count)) +#define DUK__INITBUFFER(lex_ctx) duk__initbuffer((lex_ctx)) +#define DUK__APPENDBUFFER(lex_ctx,x) duk__appendbuffer((lex_ctx), (duk_codepoint_t) (x)) +#define DUK__APPENDBUFFER_ASCII(lex_ctx,x) duk__appendbuffer_ascii((lex_ctx), (duk_codepoint_t) (x)) + +/* lookup shorthands (note: assume context variable is named 'lex_ctx') */ +#define DUK__L0() DUK__LOOKUP(lex_ctx, 0) +#define DUK__L1() DUK__LOOKUP(lex_ctx, 1) +#define DUK__L2() DUK__LOOKUP(lex_ctx, 2) +#define DUK__L3() DUK__LOOKUP(lex_ctx, 3) +#define DUK__L4() DUK__LOOKUP(lex_ctx, 4) +#define DUK__L5() DUK__LOOKUP(lex_ctx, 5) + +/* packed advance/token number macro used by multiple functions */ +#define DUK__ADVTOK(advbytes,tok) ((((advbytes) * sizeof(duk_lexer_codepoint)) << 8) + (tok)) + +/* + * Advance lookup window by N characters, filling in new characters as + * necessary. After returning caller is guaranteed a character window of + * at least DUK_LEXER_WINDOW_SIZE characters. + * + * The main function duk__advance_bytes() is called at least once per every + * token so it has a major lexer/compiler performance impact. There are two + * variants for the main duk__advance_bytes() algorithm: a sliding window + * approach which is slightly faster at the cost of larger code footprint, + * and a simple copying one. + * + * Decoding directly from the source string would be another lexing option. + * But the lookup window based approach has the advantage of hiding the + * source string and its encoding effectively which gives more flexibility + * going forward to e.g. support chunked streaming of source from flash. + * + * Decodes UTF-8/CESU-8 leniently with support for code points from U+0000 to + * U+10FFFF, causing an error if the input is unparseable. Leniency means: + * + * * Unicode code point validation is intentionally not performed, + * except to check that the codepoint does not exceed 0x10ffff. + * + * * In particular, surrogate pairs are allowed and not combined, which + * allows source files to represent all SourceCharacters with CESU-8. + * Broken surrogate pairs are allowed, as ECMAScript does not mandate + * their validation. + * + * * Allow non-shortest UTF-8 encodings. + * + * Leniency here causes few security concerns because all character data is + * decoded into Unicode codepoints before lexer processing, and is then + * re-encoded into CESU-8. The source can be parsed as strict UTF-8 with + * a compiler option. However, ECMAScript source characters include -all- + * 16-bit unsigned integer codepoints, so leniency seems to be appropriate. + * + * Note that codepoints above the BMP are not strictly SourceCharacters, + * but the lexer still accepts them as such. Before ending up in a string + * or an identifier name, codepoints above BMP are converted into surrogate + * pairs and then CESU-8 encoded, resulting in 16-bit Unicode data as + * expected by ECMAScript. + * + * An alternative approach to dealing with invalid or partial sequences + * would be to skip them and replace them with e.g. the Unicode replacement + * character U+FFFD. This has limited utility because a replacement character + * will most likely cause a parse error, unless it occurs inside a string. + * Further, ECMAScript source is typically pure ASCII. + * + * See: + * + * http://en.wikipedia.org/wiki/UTF-8 + * http://en.wikipedia.org/wiki/CESU-8 + * http://tools.ietf.org/html/rfc3629 + * http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences + * + * Future work: + * + * * Reject other invalid Unicode sequences (see Wikipedia entry for examples) + * in strict UTF-8 mode. + * + * * Size optimize. An attempt to use a 16-byte lookup table for the first + * byte resulted in a code increase though. + * + * * Is checking against maximum 0x10ffff really useful? 4-byte encoding + * imposes a certain limit anyway. + * + * * Support chunked streaming of source code. Can be implemented either + * by streaming chunks of bytes or chunks of codepoints. + */ + +#if defined(DUK_USE_LEXER_SLIDING_WINDOW) +DUK_LOCAL void duk__fill_lexer_buffer(duk_lexer_ctx *lex_ctx, duk_small_uint_t start_offset_bytes) { + duk_lexer_codepoint *cp, *cp_end; + duk_ucodepoint_t x; + duk_small_uint_t contlen; + const duk_uint8_t *p, *p_end; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + duk_ucodepoint_t mincp; +#endif + duk_int_t input_line; + + /* Use temporaries and update lex_ctx only when finished. */ + input_line = lex_ctx->input_line; + p = lex_ctx->input + lex_ctx->input_offset; + p_end = lex_ctx->input + lex_ctx->input_length; + + cp = (duk_lexer_codepoint *) (void *) ((duk_uint8_t *) lex_ctx->buffer + start_offset_bytes); + cp_end = lex_ctx->buffer + DUK_LEXER_BUFFER_SIZE; + + for (; cp != cp_end; cp++) { + cp->offset = (duk_size_t) (p - lex_ctx->input); + cp->line = input_line; + + /* XXX: potential issue with signed pointers, p_end < p. */ + if (DUK_UNLIKELY(p >= p_end)) { + /* If input_offset were assigned a negative value, it would + * result in a large positive value. Most likely it would be + * larger than input_length and be caught here. In any case + * no memory unsafe behavior would happen. + */ + cp->codepoint = -1; + continue; + } + + x = (duk_ucodepoint_t) (*p++); + + /* Fast path. */ + + if (DUK_LIKELY(x < 0x80UL)) { + DUK_ASSERT(x != 0x2028UL && x != 0x2029UL); /* not LS/PS */ + if (DUK_UNLIKELY(x <= 0x000dUL)) { + if ((x == 0x000aUL) || + ((x == 0x000dUL) && (p >= p_end || *p != 0x000aUL))) { + /* lookup for 0x000a above assumes shortest encoding now */ + + /* E5 Section 7.3, treat the following as newlines: + * LF + * CR [not followed by LF] + * LS + * PS + * + * For CR LF, CR is ignored if it is followed by LF, and the LF will bump + * the line number. + */ + input_line++; + } + } + + cp->codepoint = (duk_codepoint_t) x; + continue; + } + + /* Slow path. */ + + if (x < 0xc0UL) { + /* 10xx xxxx -> invalid */ + goto error_encoding; + } else if (x < 0xe0UL) { + /* 110x xxxx 10xx xxxx */ + contlen = 1; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + mincp = 0x80UL; +#endif + x = x & 0x1fUL; + } else if (x < 0xf0UL) { + /* 1110 xxxx 10xx xxxx 10xx xxxx */ + contlen = 2; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + mincp = 0x800UL; +#endif + x = x & 0x0fUL; + } else if (x < 0xf8UL) { + /* 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx */ + contlen = 3; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + mincp = 0x10000UL; +#endif + x = x & 0x07UL; + } else { + /* no point in supporting encodings of 5 or more bytes */ + goto error_encoding; + } + + DUK_ASSERT(p_end >= p); + if ((duk_size_t) contlen > (duk_size_t) (p_end - p)) { + goto error_clipped; + } + + while (contlen > 0) { + duk_small_uint_t y; + y = *p++; + if ((y & 0xc0U) != 0x80U) { + /* check that byte has the form 10xx xxxx */ + goto error_encoding; + } + x = x << 6; + x += y & 0x3fUL; + contlen--; + } + + /* check final character validity */ + + if (x > 0x10ffffUL) { + goto error_encoding; + } +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + if (x < mincp || (x >= 0xd800UL && x <= 0xdfffUL) || x == 0xfffeUL) { + goto error_encoding; + } +#endif + + DUK_ASSERT(x != 0x000aUL && x != 0x000dUL); + if ((x == 0x2028UL) || (x == 0x2029UL)) { + input_line++; + } + + cp->codepoint = (duk_codepoint_t) x; + } + + lex_ctx->input_offset = (duk_size_t) (p - lex_ctx->input); + lex_ctx->input_line = input_line; + return; + + error_clipped: /* clipped codepoint */ + error_encoding: /* invalid codepoint encoding or codepoint */ + lex_ctx->input_offset = (duk_size_t) (p - lex_ctx->input); + lex_ctx->input_line = input_line; + + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_SOURCE_DECODE_FAILED); + DUK_WO_NORETURN(return;); +} + +DUK_LOCAL void duk__advance_bytes(duk_lexer_ctx *lex_ctx, duk_small_uint_t count_bytes) { + duk_small_uint_t used_bytes, avail_bytes; + + DUK_ASSERT_DISABLE(count_bytes >= 0); /* unsigned */ + DUK_ASSERT(count_bytes <= (duk_small_uint_t) (DUK_LEXER_WINDOW_SIZE * sizeof(duk_lexer_codepoint))); + DUK_ASSERT(lex_ctx->window >= lex_ctx->buffer); + DUK_ASSERT(lex_ctx->window < lex_ctx->buffer + DUK_LEXER_BUFFER_SIZE); + DUK_ASSERT((duk_uint8_t *) lex_ctx->window + count_bytes <= (duk_uint8_t *) lex_ctx->buffer + DUK_LEXER_BUFFER_SIZE * sizeof(duk_lexer_codepoint)); + + /* Zero 'count' is also allowed to make call sites easier. + * Arithmetic in bytes generates better code in GCC. + */ + + lex_ctx->window = (duk_lexer_codepoint *) (void *) ((duk_uint8_t *) lex_ctx->window + count_bytes); /* avoid multiply */ + used_bytes = (duk_small_uint_t) ((duk_uint8_t *) lex_ctx->window - (duk_uint8_t *) lex_ctx->buffer); + avail_bytes = DUK_LEXER_BUFFER_SIZE * sizeof(duk_lexer_codepoint) - used_bytes; + if (avail_bytes < (duk_small_uint_t) (DUK_LEXER_WINDOW_SIZE * sizeof(duk_lexer_codepoint))) { + /* Not enough data to provide a full window, so "scroll" window to + * start of buffer and fill up the rest. + */ + duk_memmove((void *) lex_ctx->buffer, + (const void *) lex_ctx->window, + (size_t) avail_bytes); + lex_ctx->window = lex_ctx->buffer; + duk__fill_lexer_buffer(lex_ctx, avail_bytes); + } +} + +DUK_LOCAL void duk__init_lexer_window(duk_lexer_ctx *lex_ctx) { + lex_ctx->window = lex_ctx->buffer; + duk__fill_lexer_buffer(lex_ctx, 0); +} +#else /* DUK_USE_LEXER_SLIDING_WINDOW */ +DUK_LOCAL duk_codepoint_t duk__read_char(duk_lexer_ctx *lex_ctx) { + duk_ucodepoint_t x; + duk_small_uint_t len; + duk_small_uint_t i; + const duk_uint8_t *p; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + duk_ucodepoint_t mincp; +#endif + duk_size_t input_offset; + + input_offset = lex_ctx->input_offset; + if (DUK_UNLIKELY(input_offset >= lex_ctx->input_length)) { + /* If input_offset were assigned a negative value, it would + * result in a large positive value. Most likely it would be + * larger than input_length and be caught here. In any case + * no memory unsafe behavior would happen. + */ + return -1; + } + + p = lex_ctx->input + input_offset; + x = (duk_ucodepoint_t) (*p); + + if (DUK_LIKELY(x < 0x80UL)) { + /* 0xxx xxxx -> fast path */ + + /* input offset tracking */ + lex_ctx->input_offset++; + + DUK_ASSERT(x != 0x2028UL && x != 0x2029UL); /* not LS/PS */ + if (DUK_UNLIKELY(x <= 0x000dUL)) { + if ((x == 0x000aUL) || + ((x == 0x000dUL) && (lex_ctx->input_offset >= lex_ctx->input_length || + lex_ctx->input[lex_ctx->input_offset] != 0x000aUL))) { + /* lookup for 0x000a above assumes shortest encoding now */ + + /* E5 Section 7.3, treat the following as newlines: + * LF + * CR [not followed by LF] + * LS + * PS + * + * For CR LF, CR is ignored if it is followed by LF, and the LF will bump + * the line number. + */ + lex_ctx->input_line++; + } + } + + return (duk_codepoint_t) x; + } + + /* Slow path. */ + + if (x < 0xc0UL) { + /* 10xx xxxx -> invalid */ + goto error_encoding; + } else if (x < 0xe0UL) { + /* 110x xxxx 10xx xxxx */ + len = 2; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + mincp = 0x80UL; +#endif + x = x & 0x1fUL; + } else if (x < 0xf0UL) { + /* 1110 xxxx 10xx xxxx 10xx xxxx */ + len = 3; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + mincp = 0x800UL; +#endif + x = x & 0x0fUL; + } else if (x < 0xf8UL) { + /* 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx */ + len = 4; +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + mincp = 0x10000UL; +#endif + x = x & 0x07UL; + } else { + /* no point in supporting encodings of 5 or more bytes */ + goto error_encoding; + } + + DUK_ASSERT(lex_ctx->input_length >= lex_ctx->input_offset); + if ((duk_size_t) len > (duk_size_t) (lex_ctx->input_length - lex_ctx->input_offset)) { + goto error_clipped; + } + + p++; + for (i = 1; i < len; i++) { + duk_small_uint_t y; + y = *p++; + if ((y & 0xc0U) != 0x80U) { + /* check that byte has the form 10xx xxxx */ + goto error_encoding; + } + x = x << 6; + x += y & 0x3fUL; + } + + /* check final character validity */ + + if (x > 0x10ffffUL) { + goto error_encoding; + } +#if defined(DUK_USE_STRICT_UTF8_SOURCE) + if (x < mincp || (x >= 0xd800UL && x <= 0xdfffUL) || x == 0xfffeUL) { + goto error_encoding; + } +#endif + + /* input offset tracking */ + lex_ctx->input_offset += len; + + /* line tracking */ + DUK_ASSERT(x != 0x000aUL && x != 0x000dUL); + if ((x == 0x2028UL) || (x == 0x2029UL)) { + lex_ctx->input_line++; + } + + return (duk_codepoint_t) x; + + error_clipped: /* clipped codepoint */ + error_encoding: /* invalid codepoint encoding or codepoint */ + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_SOURCE_DECODE_FAILED); + DUK_WO_NORETURN(return 0;); +} + +DUK_LOCAL void duk__advance_bytes(duk_lexer_ctx *lex_ctx, duk_small_uint_t count_bytes) { + duk_small_uint_t keep_bytes; + duk_lexer_codepoint *cp, *cp_end; + + DUK_ASSERT_DISABLE(count_bytes >= 0); /* unsigned */ + DUK_ASSERT(count_bytes <= (duk_small_uint_t) (DUK_LEXER_WINDOW_SIZE * sizeof(duk_lexer_codepoint))); + + /* Zero 'count' is also allowed to make call sites easier. */ + + keep_bytes = DUK_LEXER_WINDOW_SIZE * sizeof(duk_lexer_codepoint) - count_bytes; + duk_memmove((void *) lex_ctx->window, + (const void *) ((duk_uint8_t *) lex_ctx->window + count_bytes), + (size_t) keep_bytes); + + cp = (duk_lexer_codepoint *) ((duk_uint8_t *) lex_ctx->window + keep_bytes); + cp_end = lex_ctx->window + DUK_LEXER_WINDOW_SIZE; + for (; cp != cp_end; cp++) { + cp->offset = lex_ctx->input_offset; + cp->line = lex_ctx->input_line; + cp->codepoint = duk__read_char(lex_ctx); + } +} + +DUK_LOCAL void duk__init_lexer_window(duk_lexer_ctx *lex_ctx) { + /* Call with count == DUK_LEXER_WINDOW_SIZE to fill buffer initially. */ + duk__advance_bytes(lex_ctx, DUK_LEXER_WINDOW_SIZE * sizeof(duk_lexer_codepoint)); /* fill window */ +} +#endif /* DUK_USE_LEXER_SLIDING_WINDOW */ + +DUK_LOCAL void duk__advance_chars(duk_lexer_ctx *lex_ctx, duk_small_uint_t count_chars) { + duk__advance_bytes(lex_ctx, count_chars * sizeof(duk_lexer_codepoint)); +} + +/* + * (Re)initialize the temporary byte buffer. May be called extra times + * with little impact. + */ + +DUK_LOCAL void duk__initbuffer(duk_lexer_ctx *lex_ctx) { + /* Reuse buffer as is unless buffer has grown large. */ + if (DUK_HBUFFER_DYNAMIC_GET_SIZE(lex_ctx->buf) < DUK_LEXER_TEMP_BUF_LIMIT) { + /* Keep current size */ + } else { + duk_hbuffer_resize(lex_ctx->thr, lex_ctx->buf, DUK_LEXER_TEMP_BUF_LIMIT); + } + + DUK_BW_INIT_WITHBUF(lex_ctx->thr, &lex_ctx->bw, lex_ctx->buf); +} + +/* + * Append a Unicode codepoint to the temporary byte buffer. Performs + * CESU-8 surrogate pair encoding for codepoints above the BMP. + * Existing surrogate pairs are allowed and also encoded into CESU-8. + */ + +DUK_LOCAL void duk__appendbuffer(duk_lexer_ctx *lex_ctx, duk_codepoint_t x) { + /* + * Since character data is only generated by decoding the source or by + * the compiler itself, we rely on the input codepoints being correct + * and avoid a check here. + * + * Character data can also come here through decoding of Unicode + * escapes ("\udead\ubeef") so all 16-but unsigned values can be + * present, even when the source file itself is strict UTF-8. + */ + DUK_ASSERT(x >= 0 && x <= 0x10ffffL); + + DUK_BW_WRITE_ENSURE_CESU8(lex_ctx->thr, &lex_ctx->bw, (duk_ucodepoint_t) x); +} + +DUK_LOCAL void duk__appendbuffer_ascii(duk_lexer_ctx *lex_ctx, duk_codepoint_t x) { + /* ASCII characters can be emitted as a single byte without encoding + * which matters for some fast paths. + */ + DUK_ASSERT(x >= 0 && x <= 0x7f); + + DUK_BW_WRITE_ENSURE_U8(lex_ctx->thr, &lex_ctx->bw, (duk_uint8_t) x); +} + +/* + * Intern the temporary byte buffer into a valstack slot + * (in practice, slot1 or slot2). + */ + +DUK_LOCAL duk_hstring *duk__internbuffer(duk_lexer_ctx *lex_ctx, duk_idx_t valstack_idx) { + DUK_ASSERT(valstack_idx == lex_ctx->slot1_idx || valstack_idx == lex_ctx->slot2_idx); + + DUK_BW_PUSH_AS_STRING(lex_ctx->thr, &lex_ctx->bw); + duk_replace(lex_ctx->thr, valstack_idx); + return duk_known_hstring(lex_ctx->thr, valstack_idx); +} + +/* + * Init lexer context + */ + +DUK_INTERNAL void duk_lexer_initctx(duk_lexer_ctx *lex_ctx) { + DUK_ASSERT(lex_ctx != NULL); + + duk_memzero(lex_ctx, sizeof(*lex_ctx)); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) +#if defined(DUK_USE_LEXER_SLIDING_WINDOW) + lex_ctx->window = NULL; +#endif + lex_ctx->thr = NULL; + lex_ctx->input = NULL; + lex_ctx->buf = NULL; +#endif +} + +/* + * Set lexer input position and reinitialize lookup window. + */ + +DUK_INTERNAL void duk_lexer_getpoint(duk_lexer_ctx *lex_ctx, duk_lexer_point *pt) { + pt->offset = lex_ctx->window[0].offset; + pt->line = lex_ctx->window[0].line; +} + +DUK_INTERNAL void duk_lexer_setpoint(duk_lexer_ctx *lex_ctx, duk_lexer_point *pt) { + DUK_ASSERT_DISABLE(pt->offset >= 0); /* unsigned */ + DUK_ASSERT(pt->line >= 1); + lex_ctx->input_offset = pt->offset; + lex_ctx->input_line = pt->line; + duk__init_lexer_window(lex_ctx); +} + +/* + * Lexing helpers + */ + +/* Numeric value of a hex digit (also covers octal and decimal digits) or + * -1 if not a valid hex digit. + */ +DUK_LOCAL duk_codepoint_t duk__hexval_validate(duk_codepoint_t x) { + duk_small_int_t t; + + /* Here 'x' is a Unicode codepoint */ + if (DUK_LIKELY(x >= 0 && x <= 0xff)) { + t = duk_hex_dectab[x]; + if (DUK_LIKELY(t >= 0)) { + return t; + } + } + + return -1; +} + +/* Just a wrapper for call sites where 'x' is known to be valid so + * we assert for it before decoding. + */ +DUK_LOCAL duk_codepoint_t duk__hexval(duk_codepoint_t x) { + duk_codepoint_t ret; + + DUK_ASSERT((x >= DUK_ASC_0 && x <= DUK_ASC_9) || + (x >= DUK_ASC_LC_A && x <= DUK_ASC_LC_F) || + (x >= DUK_ASC_UC_A && x <= DUK_ASC_UC_F)); + ret = duk__hexval_validate(x); + DUK_ASSERT(ret >= 0 && ret <= 15); + return ret; +} + +/* having this as a separate function provided a size benefit */ +DUK_LOCAL duk_bool_t duk__is_hex_digit(duk_codepoint_t x) { + if (DUK_LIKELY(x >= 0 && x <= 0xff)) { + return (duk_hex_dectab[x] >= 0); + } + return 0; +} + +/* Parse a Unicode escape of the form \xHH, \uHHHH, or \u{H+}. Shared by + * source and RegExp parsing. + */ +DUK_LOCAL duk_codepoint_t duk__lexer_parse_escape(duk_lexer_ctx *lex_ctx, duk_bool_t allow_es6) { + duk_small_int_t digits; /* Initial value 2 or 4 for fixed length escapes, 0 for ES2015 \u{H+}. */ + duk_codepoint_t escval; + duk_codepoint_t x; + duk_small_uint_t adv; + + DUK_ASSERT(DUK__L0() == DUK_ASC_BACKSLASH); /* caller responsibilities */ + DUK_ASSERT(DUK__L1() == DUK_ASC_LC_X || DUK__L1() == DUK_ASC_LC_U); + DUK_UNREF(allow_es6); + + adv = 2; + digits = 2; + if (DUK__L1() == DUK_ASC_LC_U) { + digits = 4; +#if defined(DUK_USE_ES6_UNICODE_ESCAPE) + if (DUK__L2() == DUK_ASC_LCURLY && allow_es6) { + digits = 0; + adv = 3; + } +#endif + } + DUK__ADVANCECHARS(lex_ctx, adv); + + escval = 0; + for (;;) { + /* One of the escape forms: \xHH, \uHHHH, \u{H+}. + * The 'digits' variable tracks parsing state and is + * initialized to: + * + * \xHH 2 + * \uHH 4 + * \u{H+} 0 first time, updated to -1 to indicate + * at least one digit has been parsed + * + * Octal parsing is handled separately because it can be + * done with fixed lookahead and also has validation + * rules which depend on the escape length (which is + * variable). + * + * We don't need a specific check for x < 0 (end of + * input) or duk_unicode_is_line_terminator(x) + * because the 'dig' decode will fail and lead to a + * SyntaxError. + */ + duk_codepoint_t dig; + + x = DUK__L0(); + DUK__ADVANCECHARS(lex_ctx, 1); + + dig = duk__hexval_validate(x); + if (digits > 0) { + digits--; + if (dig < 0) { + goto fail_escape; + } + DUK_ASSERT(dig >= 0x00 && dig <= 0x0f); + escval = (escval << 4) + dig; + if (digits == 0) { + DUK_ASSERT(escval >= 0 && escval <= 0xffffL); + break; + } + } else { +#if defined(DUK_USE_ES6_UNICODE_ESCAPE) + DUK_ASSERT(digits == 0 /* first time */ || digits == -1 /* others */); + if (dig >= 0) { + DUK_ASSERT(dig >= 0x00 && dig <= 0x0f); + escval = (escval << 4) + dig; + if (escval > 0x10ffffL) { + goto fail_escape; + } + } else if (x == DUK_ASC_RCURLY) { + if (digits == 0) { + /* Empty escape, \u{}. */ + goto fail_escape; + } + DUK_ASSERT(escval >= 0 && escval <= 0x10ffffL); + break; + } else { + goto fail_escape; + } + digits = -1; /* Indicate we have at least one digit. */ +#else /* DUK_USE_ES6_UNICODE_ESCAPE */ + DUK_ASSERT(0); /* Never happens if \u{H+} support disabled. */ +#endif /* DUK_USE_ES6_UNICODE_ESCAPE */ + } + } + + return escval; + + fail_escape: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_ESCAPE); + DUK_WO_NORETURN(return 0;); +} + +/* Parse legacy octal escape of the form \N{1,3}, e.g. \0, \5, \0377. Maximum + * allowed value is \0377 (U+00FF), longest match is used. Used for both string + * RegExp octal escape parsing. Window[0] must be the slash '\' and the first + * digit must already be validated to be in [0-9] by the caller. + */ +DUK_LOCAL duk_codepoint_t duk__lexer_parse_legacy_octal(duk_lexer_ctx *lex_ctx, duk_small_uint_t *out_adv, duk_bool_t reject_annex_b) { + duk_codepoint_t cp; + duk_small_uint_t lookup_idx; + duk_small_uint_t adv; + duk_codepoint_t tmp; + + DUK_ASSERT(out_adv != NULL); + DUK_ASSERT(DUK__LOOKUP(lex_ctx, 0) == DUK_ASC_BACKSLASH); + DUK_ASSERT(DUK__LOOKUP(lex_ctx, 1) >= DUK_ASC_0 && DUK__LOOKUP(lex_ctx, 1) <= DUK_ASC_9); + + cp = 0; + tmp = 0; + for (lookup_idx = 1; lookup_idx <= 3; lookup_idx++) { + DUK_DDD(DUK_DDDPRINT("lookup_idx=%ld, cp=%ld", (long) lookup_idx, (long) cp)); + tmp = DUK__LOOKUP(lex_ctx, lookup_idx); + if (tmp < DUK_ASC_0 || tmp > DUK_ASC_7) { + /* No more valid digits. */ + break; + } + tmp = (cp << 3) + (tmp - DUK_ASC_0); + if (tmp > 0xff) { + /* Three digit octal escapes above \377 (= 0xff) + * are not allowed. + */ + break; + } + cp = tmp; + } + DUK_DDD(DUK_DDDPRINT("final lookup_idx=%ld, cp=%ld", (long) lookup_idx, (long) cp)); + + adv = lookup_idx; + if (lookup_idx == 1) { + DUK_DDD(DUK_DDDPRINT("\\8 or \\9 -> treat as literal, accept in strict mode too")); + DUK_ASSERT(tmp == DUK_ASC_8 || tmp == DUK_ASC_9); + cp = tmp; + adv++; /* correction to above, eat offending character */ + } else if (lookup_idx == 2 && cp == 0) { + /* Note: 'foo\0bar' is OK in strict mode, but 'foo\00bar' is not. + * It won't be interpreted as 'foo\u{0}0bar' but as a SyntaxError. + */ + DUK_DDD(DUK_DDDPRINT("\\0 -> accept in strict mode too")); + } else { + /* This clause also handles non-shortest zero, e.g. \00. */ + if (reject_annex_b) { + DUK_DDD(DUK_DDDPRINT("non-zero octal literal %ld -> reject in strict-mode", (long) cp)); + cp = -1; + } else { + DUK_DDD(DUK_DDDPRINT("non-zero octal literal %ld -> accepted", (long) cp)); + DUK_ASSERT(cp >= 0 && cp <= 0xff); + } + } + + *out_adv = adv; + + DUK_ASSERT((cp >= 0 && cp <= 0xff) || (cp == -1 && reject_annex_b)); + return cp; +} + +/* XXX: move strict mode to lex_ctx? */ +DUK_LOCAL void duk__lexer_parse_string_literal(duk_lexer_ctx *lex_ctx, duk_token *out_token, duk_small_int_t quote, duk_bool_t strict_mode) { + duk_small_uint_t adv; + + for (adv = 1 /* initial quote */ ;;) { + duk_codepoint_t x; + + DUK__ADVANCECHARS(lex_ctx, adv); /* eat opening quote on first loop */ + x = DUK__L0(); + + adv = 1; + if (x == quote) { + DUK__ADVANCECHARS(lex_ctx, 1); /* eat closing quote */ + break; + } else if (x == '\\') { + /* DUK__L0 -> '\' char + * DUK__L1 ... DUK__L5 -> more lookup + */ + duk_small_int_t emitcp = -1; + + x = DUK__L1(); + + /* How much to advance before next loop. */ + adv = 2; /* note: long live range */ + + switch (x) { + case '\'': + emitcp = 0x0027; + break; + case '"': + emitcp = 0x0022; + break; + case '\\': + emitcp = 0x005c; + break; + case 'b': + emitcp = 0x0008; + break; + case 'f': + emitcp = 0x000c; + break; + case 'n': + emitcp = 0x000a; + break; + case 'r': + emitcp = 0x000d; + break; + case 't': + emitcp = 0x0009; + break; + case 'v': + emitcp = 0x000b; + break; + case 'x': + case 'u': { + duk_codepoint_t esc_cp; + esc_cp = duk__lexer_parse_escape(lex_ctx, 1 /*allow_es6*/); + DUK__APPENDBUFFER(lex_ctx, esc_cp); + adv = 0; + break; + } + default: { + if (duk_unicode_is_line_terminator(x)) { + /* line continuation */ + if (x == 0x000d && DUK__L2() == 0x000a) { + /* CR LF again a special case */ + adv = 3; /* line terminator, CR, LF */ + } + } else if (DUK__ISDIGIT(x)) { + /* + * Octal escape or zero escape: + * \0 (lookahead not OctalDigit) + * \1 ... \7 (lookahead not OctalDigit) + * \ZeroToThree OctalDigit (lookahead not OctalDigit) + * \FourToSeven OctalDigit (no lookahead restrictions) + * \ZeroToThree OctalDigit OctalDigit (no lookahead restrictions) + * + * Zero escape is part of the standard syntax. Octal escapes are + * defined in E5 Section B.1.2, and are only allowed in non-strict mode. + * Any other productions starting with a decimal digit are invalid + * but are in practice treated like identity escapes. + * + * Parse octal (up to 3 digits) from the lookup window. + */ + + emitcp = duk__lexer_parse_legacy_octal(lex_ctx, &adv, strict_mode /*reject_annex_b*/); + if (emitcp < 0) { + goto fail_escape; + } + } else if (x < 0) { + goto fail_unterminated; + } else { + /* escaped NonEscapeCharacter */ + DUK__APPENDBUFFER(lex_ctx, x); + } + } /* end default clause */ + } /* end switch */ + + /* Shared handling for single codepoint escapes. */ + if (emitcp >= 0) { + DUK__APPENDBUFFER(lex_ctx, emitcp); + } + + /* Track number of escapes; count not really needed but directive + * prologues need to detect whether there were any escapes or line + * continuations or not. + */ + out_token->num_escapes++; + } else if (x >= 0x20 && x <= 0x7f) { + /* Fast path for ASCII case, avoids line terminator + * check and CESU-8 encoding. + */ + DUK_ASSERT(x >= 0); + DUK_ASSERT(!duk_unicode_is_line_terminator(x)); + DUK_ASSERT(x != quote); + DUK_ASSERT(x != DUK_ASC_BACKSLASH); + DUK__APPENDBUFFER_ASCII(lex_ctx, x); + } else if (x < 0 || duk_unicode_is_line_terminator(x)) { + goto fail_unterminated; + } else { + /* Character which is part of the string but wasn't handled + * by the fast path. + */ + DUK__APPENDBUFFER(lex_ctx, x); + } + } /* string parse loop */ + + return; + + fail_escape: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_ESCAPE); + DUK_WO_NORETURN(return;); + + fail_unterminated: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_UNTERMINATED_STRING); + DUK_WO_NORETURN(return;); +} + +/* Skip to end-of-line (or end-of-file), used for single line comments. */ +DUK_LOCAL void duk__lexer_skip_to_endofline(duk_lexer_ctx *lex_ctx) { + for (;;) { + duk_codepoint_t x; + + x = DUK__L0(); + if (x < 0 || duk_unicode_is_line_terminator(x)) { + break; + } + DUK__ADVANCECHARS(lex_ctx, 1); + } +} + +/* + * Parse ECMAScript source InputElementDiv or InputElementRegExp + * (E5 Section 7), skipping whitespace, comments, and line terminators. + * + * Possible results are: + * (1) a token + * (2) a line terminator (skipped) + * (3) a comment (skipped) + * (4) EOF + * + * White space is automatically skipped from the current position (but + * not after the input element). If input has already ended, returns + * DUK_TOK_EOF indefinitely. If a parse error occurs, uses an DUK_ERROR() + * macro call (and hence a longjmp through current heap longjmp context). + * Comments and line terminator tokens are automatically skipped. + * + * The input element being matched is determined by regexp_mode; if set, + * parses a InputElementRegExp, otherwise a InputElementDiv. The + * difference between these are handling of productions starting with a + * forward slash. + * + * If strict_mode is set, recognizes additional future reserved words + * specific to strict mode, and refuses to parse octal literals. + * + * The matching strategy below is to (currently) use a six character + * lookup window to quickly determine which production is the -longest- + * matching one, and then parse that. The top-level if-else clauses + * match the first character, and the code blocks for each clause + * handle -all- alternatives for that first character. ECMAScript + * specification uses the "longest match wins" semantics, so the order + * of the if-clauses matters. + * + * Misc notes: + * + * * ECMAScript numeric literals do not accept a sign character. + * Consequently e.g. "-1.0" is parsed as two tokens: a negative + * sign and a positive numeric literal. The compiler performs + * the negation during compilation, so this has no adverse impact. + * + * * There is no token for "undefined": it is just a value available + * from the global object (or simply established by doing a reference + * to an undefined value). + * + * * Some contexts want Identifier tokens, which are IdentifierNames + * excluding reserved words, while some contexts want IdentifierNames + * directly. In the latter case e.g. "while" is interpreted as an + * identifier name, not a DUK_TOK_WHILE token. The solution here is + * to provide both token types: DUK_TOK_WHILE goes to 't' while + * DUK_TOK_IDENTIFIER goes to 't_nores', and 'slot1' always contains + * the identifier / keyword name. + * + * * Directive prologue needs to identify string literals such as + * "use strict" and 'use strict', which are sensitive to line + * continuations and escape sequences. For instance, "use\u0020strict" + * is a valid directive but is distinct from "use strict". The solution + * here is to decode escapes while tokenizing, but to keep track of the + * number of escapes. Directive detection can then check that the + * number of escapes is zero. + * + * * Multi-line comments with one or more internal LineTerminator are + * treated like a line terminator to comply with automatic semicolon + * insertion. + */ + +DUK_INTERNAL +void duk_lexer_parse_js_input_element(duk_lexer_ctx *lex_ctx, + duk_token *out_token, + duk_bool_t strict_mode, + duk_bool_t regexp_mode) { + duk_codepoint_t x; /* temporary, must be signed and 32-bit to hold Unicode code points */ + duk_small_uint_t advtok = 0; /* (advance << 8) + token_type, updated at function end, + * init is unnecessary but suppresses "may be used uninitialized" warnings. + */ + duk_bool_t got_lineterm = 0; /* got lineterm preceding non-whitespace, non-lineterm token */ + + if (++lex_ctx->token_count >= lex_ctx->token_limit) { + goto fail_token_limit; + } + + out_token->t = DUK_TOK_EOF; + out_token->t_nores = DUK_TOK_INVALID; /* marker: copy t if not changed */ +#if 0 /* not necessary to init, disabled for faster parsing */ + out_token->num = DUK_DOUBLE_NAN; + out_token->str1 = NULL; + out_token->str2 = NULL; +#endif + out_token->num_escapes = 0; + /* out_token->lineterm set by caller */ + + /* This would be nice, but parsing is faster without resetting the + * value slots. The only side effect is that references to temporary + * string values may linger until lexing is finished; they're then + * freed normally. + */ +#if 0 + duk_to_undefined(lex_ctx->thr, lex_ctx->slot1_idx); + duk_to_undefined(lex_ctx->thr, lex_ctx->slot2_idx); +#endif + + /* 'advtok' indicates how much to advance and which token id to assign + * at the end. This shared functionality minimizes code size. All + * code paths are required to set 'advtok' to some value, so no default + * init value is used. Code paths calling DUK_ERROR() never return so + * they don't need to set advtok. + */ + + /* + * Matching order: + * + * Punctuator first chars, also covers comments, regexps + * LineTerminator + * Identifier or reserved word, also covers null/true/false literals + * NumericLiteral + * StringLiteral + * EOF + * + * The order does not matter as long as the longest match is + * always correctly identified. There are order dependencies + * in the clauses, so it's not trivial to convert to a switch. + */ + + restart_lineupdate: + out_token->start_line = lex_ctx->window[0].line; + + restart: + out_token->start_offset = lex_ctx->window[0].offset; + + x = DUK__L0(); + + switch (x) { + case DUK_ASC_SPACE: + case DUK_ASC_HT: /* fast paths for space and tab */ + DUK__ADVANCECHARS(lex_ctx, 1); + goto restart; + case DUK_ASC_LF: /* LF line terminator; CR LF and Unicode lineterms are handled in slow path */ + DUK__ADVANCECHARS(lex_ctx, 1); + got_lineterm = 1; + goto restart_lineupdate; +#if defined(DUK_USE_SHEBANG_COMMENTS) + case DUK_ASC_HASH: /* '#' */ + if (DUK__L1() == DUK_ASC_EXCLAMATION && lex_ctx->window[0].offset == 0 && + (lex_ctx->flags & DUK_COMPILE_SHEBANG)) { + /* "Shebang" comment ('#! ...') on first line. */ + /* DUK__ADVANCECHARS(lex_ctx, 2) would be correct here, but not necessary */ + duk__lexer_skip_to_endofline(lex_ctx); + goto restart; /* line terminator will be handled on next round */ + } + goto fail_token; +#endif /* DUK_USE_SHEBANG_COMMENTS */ + case DUK_ASC_SLASH: /* '/' */ + if (DUK__L1() == DUK_ASC_SLASH) { + /* + * E5 Section 7.4, allow SourceCharacter (which is any 16-bit + * code point). + */ + + /* DUK__ADVANCECHARS(lex_ctx, 2) would be correct here, but not necessary */ + duk__lexer_skip_to_endofline(lex_ctx); + goto restart; /* line terminator will be handled on next round */ + } else if (DUK__L1() == DUK_ASC_STAR) { + /* + * E5 Section 7.4. If the multi-line comment contains a newline, + * it is treated like a single line terminator for automatic + * semicolon insertion. + */ + + duk_bool_t last_asterisk = 0; + DUK__ADVANCECHARS(lex_ctx, 2); + for (;;) { + x = DUK__L0(); + if (x < 0) { + goto fail_unterm_comment; + } + DUK__ADVANCECHARS(lex_ctx, 1); + if (last_asterisk && x == DUK_ASC_SLASH) { + break; + } + if (duk_unicode_is_line_terminator(x)) { + got_lineterm = 1; + } + last_asterisk = (x == DUK_ASC_STAR); + } + goto restart_lineupdate; + } else if (regexp_mode) { +#if defined(DUK_USE_REGEXP_SUPPORT) + /* + * "/" followed by something in regexp mode. See E5 Section 7.8.5. + * + * RegExp parsing is a bit complex. First, the regexp body is delimited + * by forward slashes, but the body may also contain forward slashes as + * part of an escape sequence or inside a character class (delimited by + * square brackets). A mini state machine is used to implement these. + * + * Further, an early (parse time) error must be thrown if the regexp + * would cause a run-time error when used in the expression new RegExp(...). + * Parsing here simply extracts the (candidate) regexp, and also accepts + * invalid regular expressions (which are delimited properly). The caller + * (compiler) must perform final validation and regexp compilation. + * + * RegExp first char may not be '/' (single line comment) or '*' (multi- + * line comment). These have already been checked above, so there is no + * need below for special handling of the first regexp character as in + * the E5 productions. + * + * About unicode escapes within regexp literals: + * + * E5 Section 7.8.5 grammar does NOT accept \uHHHH escapes. + * However, Section 6 states that regexps accept the escapes, + * see paragraph starting with "In string literals...". + * The regexp grammar, which sees the decoded regexp literal + * (after lexical parsing) DOES have a \uHHHH unicode escape. + * So, for instance: + * + * /\u1234/ + * + * should first be parsed by the lexical grammar as: + * + * '\' 'u' RegularExpressionBackslashSequence + * '1' RegularExpressionNonTerminator + * '2' RegularExpressionNonTerminator + * '3' RegularExpressionNonTerminator + * '4' RegularExpressionNonTerminator + * + * and the escape itself is then parsed by the regexp engine. + * This is the current implementation. + * + * Minor spec inconsistency: + * + * E5 Section 7.8.5 RegularExpressionBackslashSequence is: + * + * \ RegularExpressionNonTerminator + * + * while Section A.1 RegularExpressionBackslashSequence is: + * + * \ NonTerminator + * + * The latter is not normative and a typo. + * + */ + + /* first, parse regexp body roughly */ + + duk_small_int_t state = 0; /* 0=base, 1=esc, 2=class, 3=class+esc */ + + DUK__INITBUFFER(lex_ctx); + for (;;) { + DUK__ADVANCECHARS(lex_ctx, 1); /* skip opening slash on first loop */ + x = DUK__L0(); + if (x < 0 || duk_unicode_is_line_terminator(x)) { + goto fail_unterm_regexp; + } + x = DUK__L0(); /* re-read to avoid spill / fetch */ + if (state == 0) { + if (x == DUK_ASC_SLASH) { + DUK__ADVANCECHARS(lex_ctx, 1); /* eat closing slash */ + break; + } else if (x == DUK_ASC_BACKSLASH) { + state = 1; + } else if (x == DUK_ASC_LBRACKET) { + state = 2; + } + } else if (state == 1) { + state = 0; + } else if (state == 2) { + if (x == DUK_ASC_RBRACKET) { + state = 0; + } else if (x == DUK_ASC_BACKSLASH) { + state = 3; + } + } else { /* state == 3 */ + state = 2; + } + DUK__APPENDBUFFER(lex_ctx, x); + } + out_token->str1 = duk__internbuffer(lex_ctx, lex_ctx->slot1_idx); + + /* second, parse flags */ + + DUK__INITBUFFER(lex_ctx); + for (;;) { + x = DUK__L0(); + if (!duk_unicode_is_identifier_part(x)) { + break; + } + x = DUK__L0(); /* re-read to avoid spill / fetch */ + DUK__APPENDBUFFER(lex_ctx, x); + DUK__ADVANCECHARS(lex_ctx, 1); + } + out_token->str2 = duk__internbuffer(lex_ctx, lex_ctx->slot2_idx); + + DUK__INITBUFFER(lex_ctx); /* free some memory */ + + /* validation of the regexp is caller's responsibility */ + + advtok = DUK__ADVTOK(0, DUK_TOK_REGEXP); +#else /* DUK_USE_REGEXP_SUPPORT */ + goto fail_regexp_support; +#endif /* DUK_USE_REGEXP_SUPPORT */ + } else if (DUK__L1() == DUK_ASC_EQUALS) { + /* "/=" and not in regexp mode */ + advtok = DUK__ADVTOK(2, DUK_TOK_DIV_EQ); + } else { + /* "/" and not in regexp mode */ + advtok = DUK__ADVTOK(1, DUK_TOK_DIV); + } + break; + case DUK_ASC_LCURLY: /* '{' */ + advtok = DUK__ADVTOK(1, DUK_TOK_LCURLY); + break; + case DUK_ASC_RCURLY: /* '}' */ + advtok = DUK__ADVTOK(1, DUK_TOK_RCURLY); + break; + case DUK_ASC_LPAREN: /* '(' */ + advtok = DUK__ADVTOK(1, DUK_TOK_LPAREN); + break; + case DUK_ASC_RPAREN: /* ')' */ + advtok = DUK__ADVTOK(1, DUK_TOK_RPAREN); + break; + case DUK_ASC_LBRACKET: /* '[' */ + advtok = DUK__ADVTOK(1, DUK_TOK_LBRACKET); + break; + case DUK_ASC_RBRACKET: /* ']' */ + advtok = DUK__ADVTOK(1, DUK_TOK_RBRACKET); + break; + case DUK_ASC_PERIOD: /* '.' */ + if (DUK__ISDIGIT(DUK__L1())) { + /* Period followed by a digit can only start DecimalLiteral + * (handled in slow path). We could jump straight into the + * DecimalLiteral handling but should avoid goto to inside + * a block. + */ + goto slow_path; + } + advtok = DUK__ADVTOK(1, DUK_TOK_PERIOD); + break; + case DUK_ASC_SEMICOLON: /* ';' */ + advtok = DUK__ADVTOK(1, DUK_TOK_SEMICOLON); + break; + case DUK_ASC_COMMA: /* ',' */ + advtok = DUK__ADVTOK(1, DUK_TOK_COMMA); + break; + case DUK_ASC_LANGLE: /* '<' */ +#if defined(DUK_USE_HTML_COMMENTS) + if (DUK__L1() == DUK_ASC_EXCLAMATION && DUK__L2() == DUK_ASC_MINUS && DUK__L3() == DUK_ASC_MINUS) { + /* + * ES2015: B.1.3, handle "" SingleLineHTMLCloseComment + * Only allowed: + * - on new line + * - preceded only by whitespace + * - preceded by end of multiline comment and optional whitespace + * + * Since whitespace generates no tokens, and multiline comments + * are treated as a line ending, consulting `got_lineterm` is + * sufficient to test for these three options. + */ + + /* DUK__ADVANCECHARS(lex_ctx, 3) would be correct here, but not necessary */ + duk__lexer_skip_to_endofline(lex_ctx); + goto restart; /* line terminator will be handled on next round */ + } else +#endif /* DUK_USE_HTML_COMMENTS */ + if (DUK__L1() == DUK_ASC_MINUS) { + advtok = DUK__ADVTOK(2, DUK_TOK_DECREMENT); + } else if (DUK__L1() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(2, DUK_TOK_SUB_EQ); + } else { + advtok = DUK__ADVTOK(1, DUK_TOK_SUB); + } + break; + case DUK_ASC_STAR: /* '*' */ +#if defined(DUK_USE_ES7_EXP_OPERATOR) + if (DUK__L1() == DUK_ASC_STAR && DUK__L2() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(3, DUK_TOK_EXP_EQ); + } else if (DUK__L1() == DUK_ASC_STAR) { + advtok = DUK__ADVTOK(2, DUK_TOK_EXP); + } else +#endif + if (DUK__L1() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(2, DUK_TOK_MUL_EQ); + } else { + advtok = DUK__ADVTOK(1, DUK_TOK_MUL); + } + break; + case DUK_ASC_PERCENT: /* '%' */ + if (DUK__L1() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(2, DUK_TOK_MOD_EQ); + } else { + advtok = DUK__ADVTOK(1, DUK_TOK_MOD); + } + break; + case DUK_ASC_AMP: /* '&' */ + if (DUK__L1() == DUK_ASC_AMP) { + advtok = DUK__ADVTOK(2, DUK_TOK_LAND); + } else if (DUK__L1() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(2, DUK_TOK_BAND_EQ); + } else { + advtok = DUK__ADVTOK(1, DUK_TOK_BAND); + } + break; + case DUK_ASC_PIPE: /* '|' */ + if (DUK__L1() == DUK_ASC_PIPE) { + advtok = DUK__ADVTOK(2, DUK_TOK_LOR); + } else if (DUK__L1() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(2, DUK_TOK_BOR_EQ); + } else { + advtok = DUK__ADVTOK(1, DUK_TOK_BOR); + } + break; + case DUK_ASC_CARET: /* '^' */ + if (DUK__L1() == DUK_ASC_EQUALS) { + advtok = DUK__ADVTOK(2, DUK_TOK_BXOR_EQ); + } else { + advtok = DUK__ADVTOK(1, DUK_TOK_BXOR); + } + break; + case DUK_ASC_TILDE: /* '~' */ + advtok = DUK__ADVTOK(1, DUK_TOK_BNOT); + break; + case DUK_ASC_QUESTION: /* '?' */ + advtok = DUK__ADVTOK(1, DUK_TOK_QUESTION); + break; + case DUK_ASC_COLON: /* ':' */ + advtok = DUK__ADVTOK(1, DUK_TOK_COLON); + break; + case DUK_ASC_DOUBLEQUOTE: /* '"' */ + case DUK_ASC_SINGLEQUOTE: { /* '\'' */ + DUK__INITBUFFER(lex_ctx); + duk__lexer_parse_string_literal(lex_ctx, out_token, x /*quote*/, strict_mode); + duk__internbuffer(lex_ctx, lex_ctx->slot1_idx); + out_token->str1 = duk_known_hstring(lex_ctx->thr, lex_ctx->slot1_idx); + + DUK__INITBUFFER(lex_ctx); /* free some memory */ + + advtok = DUK__ADVTOK(0, DUK_TOK_STRING); + break; + } + default: + goto slow_path; + } /* switch */ + + goto skip_slow_path; + + slow_path: + if (duk_unicode_is_line_terminator(x)) { + if (x == 0x000d && DUK__L1() == 0x000a) { + /* + * E5 Section 7.3: CR LF is detected as a single line terminator for + * line numbers. Here we also detect it as a single line terminator + * token. + */ + DUK__ADVANCECHARS(lex_ctx, 2); + } else { + DUK__ADVANCECHARS(lex_ctx, 1); + } + got_lineterm = 1; + goto restart_lineupdate; + } else if (duk_unicode_is_identifier_start(x) || x == DUK_ASC_BACKSLASH) { + /* + * Parse an identifier and then check whether it is: + * - reserved word (keyword or other reserved word) + * - "null" (NullLiteral) + * - "true" (BooleanLiteral) + * - "false" (BooleanLiteral) + * - anything else => identifier + * + * This does not follow the E5 productions cleanly, but is + * useful and compact. + * + * Note that identifiers may contain Unicode escapes, + * see E5 Sections 6 and 7.6. They must be decoded first, + * and the result checked against allowed characters. + * The above if-clause accepts an identifier start and an + * '\' character -- no other token can begin with a '\'. + * + * Note that "get" and "set" are not reserved words in E5 + * specification so they are recognized as plain identifiers + * (the tokens DUK_TOK_GET and DUK_TOK_SET are actually not + * used now). The compiler needs to work around this. + * + * Strictly speaking, following ECMAScript longest match + * specification, an invalid escape for the first character + * should cause a syntax error. However, an invalid escape + * for IdentifierParts should just terminate the identifier + * early (longest match), and let the next tokenization + * fail. For instance Rhino croaks with 'foo\z' when + * parsing the identifier. This has little practical impact. + */ + + duk_small_uint_t i, i_end; + duk_bool_t first = 1; + duk_hstring *str; + + DUK__INITBUFFER(lex_ctx); + for (;;) { + /* re-lookup first char on first loop */ + if (DUK__L0() == DUK_ASC_BACKSLASH) { + duk_codepoint_t esc_cp; + if (DUK__L1() != DUK_ASC_LC_U) { + goto fail_escape; + } + esc_cp = duk__lexer_parse_escape(lex_ctx, 1 /*allow_es6*/); + DUK__APPENDBUFFER(lex_ctx, esc_cp); + + /* IdentifierStart is stricter than IdentifierPart, so if the first + * character is escaped, must have a stricter check here. + */ + if (!(first ? duk_unicode_is_identifier_start(esc_cp) : duk_unicode_is_identifier_part(esc_cp))) { + goto fail_escape; + } + + /* Track number of escapes: necessary for proper keyword + * detection. + */ + out_token->num_escapes++; + } else { + /* Note: first character is checked against this. But because + * IdentifierPart includes all IdentifierStart characters, and + * the first character (if unescaped) has already been checked + * in the if condition, this is OK. + */ + if (!duk_unicode_is_identifier_part(DUK__L0())) { + break; + } + DUK__APPENDBUFFER(lex_ctx, DUK__L0()); + DUK__ADVANCECHARS(lex_ctx, 1); + } + first = 0; + } + + out_token->str1 = duk__internbuffer(lex_ctx, lex_ctx->slot1_idx); + str = out_token->str1; + out_token->t_nores = DUK_TOK_IDENTIFIER; + + DUK__INITBUFFER(lex_ctx); /* free some memory */ + + /* + * Interned identifier is compared against reserved words, which are + * currently interned into the heap context. See genbuiltins.py. + * + * Note that an escape in the identifier disables recognition of + * keywords; e.g. "\u0069f = 1;" is a valid statement (assigns to + * identifier named "if"). This is not necessarily compliant, + * see test-dec-escaped-char-in-keyword.js. + * + * Note: "get" and "set" are awkward. They are not officially + * ReservedWords (and indeed e.g. "var set = 1;" is valid), and + * must come out as DUK_TOK_IDENTIFIER. The compiler needs to + * work around this a bit. + */ + + /* XXX: optimize by adding the token numbers directly into the + * always interned duk_hstring objects (there should be enough + * flag bits free for that)? + */ + + i_end = (strict_mode ? DUK_STRIDX_END_RESERVED : DUK_STRIDX_START_STRICT_RESERVED); + + advtok = DUK__ADVTOK(0, DUK_TOK_IDENTIFIER); + if (out_token->num_escapes == 0) { + for (i = DUK_STRIDX_START_RESERVED; i < i_end; i++) { + DUK_ASSERT_DISABLE(i >= 0); /* unsigned */ + DUK_ASSERT(i < DUK_HEAP_NUM_STRINGS); + if (DUK_HTHREAD_GET_STRING(lex_ctx->thr, i) == str) { + advtok = DUK__ADVTOK(0, DUK_STRIDX_TO_TOK(i)); + break; + } + } + } + } else if (DUK__ISDIGIT(x) || (x == DUK_ASC_PERIOD)) { + /* Note: decimal number may start with a period, but must be followed by a digit */ + + /* + * Pre-parsing for decimal, hex, octal (both legacy and ES2015), + * and binary literals, followed by an actual parser step + * provided by numconv. + * + * Note: the leading sign character ('+' or '-') is -not- part of + * the production in E5 grammar, and that the a DecimalLiteral + * starting with a '0' must be followed by a non-digit. + * + * XXX: the two step parsing process is quite awkward, it would + * be more straightforward to allow numconv to parse the longest + * valid prefix (it already does that, it only needs to indicate + * where the input ended). However, the lexer decodes characters + * using a limited lookup window, so this is not a trivial change. + */ + + /* XXX: because of the final check below (that the literal is not + * followed by a digit), this could maybe be simplified, if we bail + * out early from a leading zero (and if there are no periods etc). + * Maybe too complex. + */ + + duk_double_t val; + duk_bool_t legacy_oct = 0; + duk_small_int_t state; /* 0=before period/exp, + * 1=after period, before exp + * 2=after exp, allow '+' or '-' + * 3=after exp and exp sign + */ + duk_small_uint_t s2n_flags; + duk_codepoint_t y, z; + duk_small_int_t s2n_radix = 10; + duk_small_uint_t pre_adv = 0; + + DUK__INITBUFFER(lex_ctx); + y = DUK__L1(); + + if (x == DUK_ASC_0) { + z = DUK_LOWERCASE_CHAR_ASCII(y); + + pre_adv = 2; /* default for 0xNNN, 0oNNN, 0bNNN. */ + if (z == DUK_ASC_LC_X) { + s2n_radix = 16; + } else if (z == DUK_ASC_LC_O) { + s2n_radix = 8; + } else if (z == DUK_ASC_LC_B) { + s2n_radix = 2; + } else { + pre_adv = 0; + if (DUK__ISDIGIT(y)) { + if (strict_mode) { + /* Reject octal like \07 but also octal-lookalike + * decimal like \08 in strict mode. + */ + goto fail_number_literal; + } else { + /* Legacy OctalIntegerLiteral or octal-lookalice + * decimal. Deciding between the two happens below + * in digit scanning. + */ + DUK__APPENDBUFFER(lex_ctx, x); + pre_adv = 1; + legacy_oct = 1; + s2n_radix = 8; /* tentative unless conflicting digits found */ + } + } + } + } + + DUK__ADVANCECHARS(lex_ctx, pre_adv); + + /* XXX: we could parse integers here directly, and fall back + * to numconv only when encountering a fractional expression + * or when an octal literal turned out to be decimal (0778 etc). + */ + state = 0; + for (;;) { + x = DUK__L0(); /* re-lookup curr char on first round */ + if (DUK__ISDIGIT(x)) { + /* Note: intentionally allow leading zeroes here, as the + * actual parser will check for them. + */ + if (state == 0 && legacy_oct && (x == DUK_ASC_8 || x == DUK_ASC_9)) { + /* Started out as an octal-lookalike + * but interpreted as decimal, e.g. + * '0779' -> 779. This also means + * that fractions are allowed, e.g. + * '0779.123' is allowed but '0777.123' + * is not! + */ + s2n_radix = 10; + } + if (state == 2) { + state = 3; + } + } else if (s2n_radix == 16 && DUK__ISHEXDIGIT(x)) { + /* Note: 'e' and 'E' are also accepted here. */ + ; + } else if (x == DUK_ASC_PERIOD) { + if (state >= 1 || s2n_radix != 10) { + break; + } else { + state = 1; + } + } else if (x == DUK_ASC_LC_E || x == DUK_ASC_UC_E) { + if (state >= 2 || s2n_radix != 10) { + break; + } else { + state = 2; + } + } else if (x == DUK_ASC_MINUS || x == DUK_ASC_PLUS) { + if (state != 2) { + break; + } else { + state = 3; + } + } else { + break; + } + DUK__APPENDBUFFER(lex_ctx, x); + DUK__ADVANCECHARS(lex_ctx, 1); + } + + /* XXX: better coercion */ + (void) duk__internbuffer(lex_ctx, lex_ctx->slot1_idx); + + if (s2n_radix != 10) { + /* For bases other than 10, integer only. */ + s2n_flags = DUK_S2N_FLAG_ALLOW_LEADING_ZERO; + } else { + s2n_flags = DUK_S2N_FLAG_ALLOW_EXP | + DUK_S2N_FLAG_ALLOW_FRAC | + DUK_S2N_FLAG_ALLOW_NAKED_FRAC | + DUK_S2N_FLAG_ALLOW_EMPTY_FRAC | + DUK_S2N_FLAG_ALLOW_LEADING_ZERO; + } + + duk_dup(lex_ctx->thr, lex_ctx->slot1_idx); + duk_numconv_parse(lex_ctx->thr, s2n_radix, s2n_flags); + val = duk_to_number_m1(lex_ctx->thr); + if (DUK_ISNAN(val)) { + goto fail_number_literal; + } + duk_replace(lex_ctx->thr, lex_ctx->slot1_idx); /* could also just pop? */ + + DUK__INITBUFFER(lex_ctx); /* free some memory */ + + /* Section 7.8.3 (note): NumericLiteral must be followed by something other than + * IdentifierStart or DecimalDigit. + */ + + if (DUK__ISDIGIT(DUK__L0()) || duk_unicode_is_identifier_start(DUK__L0())) { + goto fail_number_literal; + } + + out_token->num = val; + advtok = DUK__ADVTOK(0, DUK_TOK_NUMBER); + } else if (duk_unicode_is_whitespace(DUK__LOOKUP(lex_ctx, 0))) { + DUK__ADVANCECHARS(lex_ctx, 1); + goto restart; + } else if (x < 0) { + advtok = DUK__ADVTOK(0, DUK_TOK_EOF); + } else { + goto fail_token; + } + skip_slow_path: + + /* + * Shared exit path + */ + + DUK__ADVANCEBYTES(lex_ctx, advtok >> 8); + out_token->t = advtok & 0xff; + if (out_token->t_nores == DUK_TOK_INVALID) { + out_token->t_nores = out_token->t; + } + out_token->lineterm = got_lineterm; + + /* Automatic semicolon insertion is allowed if a token is preceded + * by line terminator(s), or terminates a statement list (right curly + * or EOF). + */ + if (got_lineterm || out_token->t == DUK_TOK_RCURLY || out_token->t == DUK_TOK_EOF) { + out_token->allow_auto_semi = 1; + } else { + out_token->allow_auto_semi = 0; + } + + return; + + fail_token_limit: + DUK_ERROR_RANGE(lex_ctx->thr, DUK_STR_TOKEN_LIMIT); + DUK_WO_NORETURN(return;); + + fail_token: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_TOKEN); + DUK_WO_NORETURN(return;); + + fail_number_literal: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_NUMBER_LITERAL); + DUK_WO_NORETURN(return;); + + fail_escape: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_ESCAPE); + DUK_WO_NORETURN(return;); + + fail_unterm_regexp: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_UNTERMINATED_REGEXP); + DUK_WO_NORETURN(return;); + + fail_unterm_comment: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_UNTERMINATED_COMMENT); + DUK_WO_NORETURN(return;); + +#if !defined(DUK_USE_REGEXP_SUPPORT) + fail_regexp_support: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_REGEXP_SUPPORT_DISABLED); + DUK_WO_NORETURN(return;); +#endif +} + +#if defined(DUK_USE_REGEXP_SUPPORT) + +/* + * Parse a RegExp token. The grammar is described in E5 Section 15.10. + * Terminal constructions (such as quantifiers) are parsed directly here. + * + * 0xffffffffU is used as a marker for "infinity" in quantifiers. Further, + * DUK__MAX_RE_QUANT_DIGITS limits the maximum number of digits that + * will be accepted for a quantifier. + */ + +DUK_INTERNAL void duk_lexer_parse_re_token(duk_lexer_ctx *lex_ctx, duk_re_token *out_token) { + duk_small_uint_t advtok = 0; /* init is unnecessary but suppresses "may be used uninitialized" warnings */ + duk_codepoint_t x, y; + + if (++lex_ctx->token_count >= lex_ctx->token_limit) { + goto fail_token_limit; + } + + duk_memzero(out_token, sizeof(*out_token)); + + x = DUK__L0(); + y = DUK__L1(); + + DUK_DDD(DUK_DDDPRINT("parsing regexp token, L0=%ld, L1=%ld", (long) x, (long) y)); + + switch (x) { + case DUK_ASC_PIPE: { + advtok = DUK__ADVTOK(1, DUK_RETOK_DISJUNCTION); + break; + } + case DUK_ASC_CARET: { + advtok = DUK__ADVTOK(1, DUK_RETOK_ASSERT_START); + break; + } + case DUK_ASC_DOLLAR: { + advtok = DUK__ADVTOK(1, DUK_RETOK_ASSERT_END); + break; + } + case DUK_ASC_QUESTION: { + out_token->qmin = 0; + out_token->qmax = 1; + if (y == DUK_ASC_QUESTION) { + advtok = DUK__ADVTOK(2, DUK_RETOK_QUANTIFIER); + out_token->greedy = 0; + } else { + advtok = DUK__ADVTOK(1, DUK_RETOK_QUANTIFIER); + out_token->greedy = 1; + } + break; + } + case DUK_ASC_STAR: { + out_token->qmin = 0; + out_token->qmax = DUK_RE_QUANTIFIER_INFINITE; + if (y == DUK_ASC_QUESTION) { + advtok = DUK__ADVTOK(2, DUK_RETOK_QUANTIFIER); + out_token->greedy = 0; + } else { + advtok = DUK__ADVTOK(1, DUK_RETOK_QUANTIFIER); + out_token->greedy = 1; + } + break; + } + case DUK_ASC_PLUS: { + out_token->qmin = 1; + out_token->qmax = DUK_RE_QUANTIFIER_INFINITE; + if (y == DUK_ASC_QUESTION) { + advtok = DUK__ADVTOK(2, DUK_RETOK_QUANTIFIER); + out_token->greedy = 0; + } else { + advtok = DUK__ADVTOK(1, DUK_RETOK_QUANTIFIER); + out_token->greedy = 1; + } + break; + } + case DUK_ASC_LCURLY: { + /* Production allows 'DecimalDigits', including leading zeroes */ + duk_uint32_t val1 = 0; + duk_uint32_t val2 = DUK_RE_QUANTIFIER_INFINITE; + duk_small_int_t digits = 0; +#if defined(DUK_USE_ES6_REGEXP_SYNTAX) + duk_lexer_point lex_pt; +#endif + +#if defined(DUK_USE_ES6_REGEXP_SYNTAX) + /* Store lexer position, restoring if quantifier is invalid. */ + DUK_LEXER_GETPOINT(lex_ctx, &lex_pt); +#endif + + for (;;) { + DUK__ADVANCECHARS(lex_ctx, 1); /* eat '{' on entry */ + x = DUK__L0(); + if (DUK__ISDIGIT(x)) { + digits++; + val1 = val1 * 10 + (duk_uint32_t) duk__hexval(x); + } else if (x == DUK_ASC_COMMA) { + if (digits > DUK__MAX_RE_QUANT_DIGITS) { + goto invalid_quantifier; + } + if (val2 != DUK_RE_QUANTIFIER_INFINITE) { + goto invalid_quantifier; + } + if (DUK__L1() == DUK_ASC_RCURLY) { + /* form: { DecimalDigits , }, val1 = min count */ + if (digits == 0) { + goto invalid_quantifier; + } + out_token->qmin = val1; + out_token->qmax = DUK_RE_QUANTIFIER_INFINITE; + DUK__ADVANCECHARS(lex_ctx, 2); + break; + } + val2 = val1; + val1 = 0; + digits = 0; /* not strictly necessary because of lookahead '}' above */ + } else if (x == DUK_ASC_RCURLY) { + if (digits > DUK__MAX_RE_QUANT_DIGITS) { + goto invalid_quantifier; + } + if (digits == 0) { + goto invalid_quantifier; + } + if (val2 != DUK_RE_QUANTIFIER_INFINITE) { + /* val2 = min count, val1 = max count */ + out_token->qmin = val2; + out_token->qmax = val1; + } else { + /* val1 = count */ + out_token->qmin = val1; + out_token->qmax = val1; + } + DUK__ADVANCECHARS(lex_ctx, 1); + break; + } else { + goto invalid_quantifier; + } + } + if (DUK__L0() == DUK_ASC_QUESTION) { + out_token->greedy = 0; + DUK__ADVANCECHARS(lex_ctx, 1); + } else { + out_token->greedy = 1; + } + advtok = DUK__ADVTOK(0, DUK_RETOK_QUANTIFIER); + break; + invalid_quantifier: +#if defined(DUK_USE_ES6_REGEXP_SYNTAX) + /* Failed to match the quantifier, restore lexer and parse + * opening brace as a literal. + */ + DUK_LEXER_SETPOINT(lex_ctx, &lex_pt); + advtok = DUK__ADVTOK(1, DUK_RETOK_ATOM_CHAR); + out_token->num = DUK_ASC_LCURLY; +#else + goto fail_quantifier; +#endif + break; + } + case DUK_ASC_PERIOD: { + advtok = DUK__ADVTOK(1, DUK_RETOK_ATOM_PERIOD); + break; + } + case DUK_ASC_BACKSLASH: { + /* The E5.1 specification does not seem to allow IdentifierPart characters + * to be used as identity escapes. Unfortunately this includes '$', which + * cannot be escaped as '\$'; it needs to be escaped e.g. as '\u0024'. + * Many other implementations (including V8 and Rhino, for instance) do + * accept '\$' as a valid identity escape, which is quite pragmatic, and + * ES2015 Annex B relaxes the rules to allow these (and other) real world forms. + */ + + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_CHAR); /* default: char escape (two chars) */ + if (y == DUK_ASC_LC_B) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ASSERT_WORD_BOUNDARY); + } else if (y == DUK_ASC_UC_B) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ASSERT_NOT_WORD_BOUNDARY); + } else if (y == DUK_ASC_LC_F) { + out_token->num = 0x000c; + } else if (y == DUK_ASC_LC_N) { + out_token->num = 0x000a; + } else if (y == DUK_ASC_LC_T) { + out_token->num = 0x0009; + } else if (y == DUK_ASC_LC_R) { + out_token->num = 0x000d; + } else if (y == DUK_ASC_LC_V) { + out_token->num = 0x000b; + } else if (y == DUK_ASC_LC_C) { + x = DUK__L2(); + if ((x >= DUK_ASC_LC_A && x <= DUK_ASC_LC_Z) || + (x >= DUK_ASC_UC_A && x <= DUK_ASC_UC_Z)) { + out_token->num = (duk_uint32_t) (x % 32); + advtok = DUK__ADVTOK(3, DUK_RETOK_ATOM_CHAR); + } else { + goto fail_escape; + } + } else if (y == DUK_ASC_LC_X || y == DUK_ASC_LC_U) { + /* The token value is the Unicode codepoint without + * it being decode into surrogate pair characters + * here. The \u{H+} is only allowed in Unicode mode + * which we don't support yet. + */ + out_token->num = (duk_uint32_t) duk__lexer_parse_escape(lex_ctx, 0 /*allow_es6*/); + advtok = DUK__ADVTOK(0, DUK_RETOK_ATOM_CHAR); + } else if (y == DUK_ASC_LC_D) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_DIGIT); + } else if (y == DUK_ASC_UC_D) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_NOT_DIGIT); + } else if (y == DUK_ASC_LC_S) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_WHITE); + } else if (y == DUK_ASC_UC_S) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_NOT_WHITE); + } else if (y == DUK_ASC_LC_W) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_WORD_CHAR); + } else if (y == DUK_ASC_UC_W) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_NOT_WORD_CHAR); + } else if (DUK__ISDIGIT(y)) { + /* E5 Section 15.10.2.11 */ + if (y == DUK_ASC_0) { + if (DUK__ISDIGIT(DUK__L2())) { + goto fail_escape; + } + out_token->num = 0x0000; + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_CHAR); + } else { + /* XXX: shared parsing? */ + duk_uint32_t val = 0; + duk_small_int_t i; + for (i = 0; ; i++) { + if (i >= DUK__MAX_RE_DECESC_DIGITS) { + goto fail_escape; + } + DUK__ADVANCECHARS(lex_ctx, 1); /* eat backslash on entry */ + x = DUK__L0(); + if (!DUK__ISDIGIT(x)) { + break; + } + val = val * 10 + (duk_uint32_t) duk__hexval(x); + } + /* DUK__L0() cannot be a digit, because the loop doesn't terminate if it is */ + advtok = DUK__ADVTOK(0, DUK_RETOK_ATOM_BACKREFERENCE); + out_token->num = val; + } +#if defined(DUK_USE_ES6_REGEXP_SYNTAX) + } else if (y >= 0) { + /* For ES2015 Annex B, accept any source character as identity + * escape except 'c' which is used for control characters. + * http://www.ecma-international.org/ecma-262/6.0/#sec-regular-expressions-patterns + * Careful not to match end-of-buffer (<0) here. + * This is not yet full ES2015 Annex B because cases above + * (like hex escape) won't backtrack. + */ + DUK_ASSERT(y != DUK_ASC_LC_C); /* covered above */ +#else /* DUK_USE_ES6_REGEXP_SYNTAX */ + } else if ((y >= 0 && !duk_unicode_is_identifier_part(y)) || + y == DUK_UNICODE_CP_ZWNJ || + y == DUK_UNICODE_CP_ZWJ) { + /* For ES5.1 identity escapes are not allowed for identifier + * parts. This conflicts with a lot of real world code as this + * doesn't e.g. allow escaping a dollar sign as /\$/, see + * test-regexp-identity-escape-dollar.js. + */ +#endif /* DUK_USE_ES6_REGEXP_SYNTAX */ + out_token->num = (duk_uint32_t) y; + } else { + goto fail_escape; + } + break; + } + case DUK_ASC_LPAREN: { + /* XXX: naming is inconsistent: ATOM_END_GROUP ends an ASSERT_START_LOOKAHEAD */ + + if (y == DUK_ASC_QUESTION) { + if (DUK__L2() == DUK_ASC_EQUALS) { + /* (?= */ + advtok = DUK__ADVTOK(3, DUK_RETOK_ASSERT_START_POS_LOOKAHEAD); + } else if (DUK__L2() == DUK_ASC_EXCLAMATION) { + /* (?! */ + advtok = DUK__ADVTOK(3, DUK_RETOK_ASSERT_START_NEG_LOOKAHEAD); + } else if (DUK__L2() == DUK_ASC_COLON) { + /* (?: */ + advtok = DUK__ADVTOK(3, DUK_RETOK_ATOM_START_NONCAPTURE_GROUP); + } else { + goto fail_group; + } + } else { + /* ( */ + advtok = DUK__ADVTOK(1, DUK_RETOK_ATOM_START_CAPTURE_GROUP); + } + break; + } + case DUK_ASC_RPAREN: { + advtok = DUK__ADVTOK(1, DUK_RETOK_ATOM_END_GROUP); + break; + } + case DUK_ASC_LBRACKET: { + /* + * To avoid creating a heavy intermediate value for the list of ranges, + * only the start token ('[' or '[^') is parsed here. The regexp + * compiler parses the ranges itself. + */ + + /* XXX: with DUK_USE_ES6_REGEXP_SYNTAX we should allow left bracket + * literal too, but it's not easy to parse without backtracking. + */ + + advtok = DUK__ADVTOK(1, DUK_RETOK_ATOM_START_CHARCLASS); + if (y == DUK_ASC_CARET) { + advtok = DUK__ADVTOK(2, DUK_RETOK_ATOM_START_CHARCLASS_INVERTED); + } + break; + } +#if !defined(DUK_USE_ES6_REGEXP_SYNTAX) + case DUK_ASC_RCURLY: + case DUK_ASC_RBRACKET: { + /* Although these could be parsed as PatternCharacters unambiguously (here), + * E5 Section 15.10.1 grammar explicitly forbids these as PatternCharacters. + */ + goto fail_invalid_char; + break; + } +#endif + case -1: { + /* EOF */ + advtok = DUK__ADVTOK(0, DUK_TOK_EOF); + break; + } + default: { + /* PatternCharacter, all excluded characters are matched by cases above */ + advtok = DUK__ADVTOK(1, DUK_RETOK_ATOM_CHAR); + out_token->num = (duk_uint32_t) x; + break; + } + } + + /* + * Shared exit path + */ + + DUK__ADVANCEBYTES(lex_ctx, advtok >> 8); + out_token->t = advtok & 0xff; + return; + + fail_token_limit: + DUK_ERROR_RANGE(lex_ctx->thr, DUK_STR_TOKEN_LIMIT); + DUK_WO_NORETURN(return;); + + fail_escape: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_REGEXP_ESCAPE); + DUK_WO_NORETURN(return;); + + fail_group: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_REGEXP_GROUP); + DUK_WO_NORETURN(return;); + +#if !defined(DUK_USE_ES6_REGEXP_SYNTAX) + fail_invalid_char: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_REGEXP_CHARACTER); + DUK_WO_NORETURN(return;); + + fail_quantifier: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_QUANTIFIER); + DUK_WO_NORETURN(return;); +#endif +} + +/* + * Special parser for character classes; calls callback for every + * range parsed and returns the number of ranges present. + */ + +/* XXX: this duplicates functionality in duk_regexp.c where a similar loop is + * required anyway. We could use that BUT we need to update the regexp compiler + * 'nranges' too. Work this out a bit more cleanly to save space. + */ + +/* XXX: the handling of character range detection is a bit convoluted. + * Try to simplify and make smaller. + */ + +/* XXX: logic for handling character ranges is now incorrect, it will accept + * e.g. [\d-z] whereas it should croak from it? SMJS accepts this too, though. + * + * Needs a read through and a lot of additional tests. + */ + +DUK_LOCAL +void duk__emit_u16_direct_ranges(duk_lexer_ctx *lex_ctx, + duk_re_range_callback gen_range, + void *userdata, + const duk_uint16_t *ranges, + duk_small_int_t num) { + const duk_uint16_t *ranges_end; + + DUK_UNREF(lex_ctx); + + ranges_end = ranges + num; + while (ranges < ranges_end) { + /* mark range 'direct', bypass canonicalization (see Wiki) */ + gen_range(userdata, (duk_codepoint_t) ranges[0], (duk_codepoint_t) ranges[1], 1); + ranges += 2; + } +} + +DUK_INTERNAL void duk_lexer_parse_re_ranges(duk_lexer_ctx *lex_ctx, duk_re_range_callback gen_range, void *userdata) { + duk_codepoint_t start = -1; + duk_codepoint_t ch; + duk_codepoint_t x; + duk_bool_t dash = 0; + duk_small_uint_t adv = 0; + + DUK_DD(DUK_DDPRINT("parsing regexp ranges")); + + for (;;) { + DUK__ADVANCECHARS(lex_ctx, adv); + adv = 1; + + x = DUK__L0(); + + ch = -1; /* not strictly necessary, but avoids "uninitialized variable" warnings */ + DUK_UNREF(ch); + + if (x < 0) { + goto fail_unterm_charclass; + } else if (x == DUK_ASC_RBRACKET) { + if (start >= 0) { + gen_range(userdata, start, start, 0); + } + DUK__ADVANCECHARS(lex_ctx, 1); /* eat ']' before finishing */ + break; + } else if (x == DUK_ASC_MINUS) { + if (start >= 0 && !dash && DUK__L1() != DUK_ASC_RBRACKET) { + /* '-' as a range indicator */ + dash = 1; + continue; + } else { + /* '-' verbatim */ + ch = x; + } + } else if (x == DUK_ASC_BACKSLASH) { + /* + * The escapes are same as outside a character class, except that \b has a + * different meaning, and \B and backreferences are prohibited (see E5 + * Section 15.10.2.19). However, it's difficult to share code because we + * handle e.g. "\n" very differently: here we generate a single character + * range for it. + */ + + /* XXX: ES2015 surrogate pair handling. */ + + x = DUK__L1(); + + adv = 2; + + if (x == DUK_ASC_LC_B) { + /* Note: '\b' in char class is different than outside (assertion), + * '\B' is not allowed and is caught by the duk_unicode_is_identifier_part() + * check below. + */ + ch = 0x0008; + } else if (x == DUK_ASC_LC_F) { + ch = 0x000c; + } else if (x == DUK_ASC_LC_N) { + ch = 0x000a; + } else if (x == DUK_ASC_LC_T) { + ch = 0x0009; + } else if (x == DUK_ASC_LC_R) { + ch = 0x000d; + } else if (x == DUK_ASC_LC_V) { + ch = 0x000b; + } else if (x == DUK_ASC_LC_C) { + x = DUK__L2(); + adv = 3; + if ((x >= DUK_ASC_LC_A && x <= DUK_ASC_LC_Z) || + (x >= DUK_ASC_UC_A && x <= DUK_ASC_UC_Z)) { + ch = (x % 32); + } else { + goto fail_escape; + } + } else if (x == DUK_ASC_LC_X || x == DUK_ASC_LC_U) { + /* The \u{H+} form is only allowed in Unicode mode which + * we don't support yet. + */ + ch = duk__lexer_parse_escape(lex_ctx, 0 /*allow_es6*/); + adv = 0; + } else if (x == DUK_ASC_LC_D) { + duk__emit_u16_direct_ranges(lex_ctx, + gen_range, + userdata, + duk_unicode_re_ranges_digit, + sizeof(duk_unicode_re_ranges_digit) / sizeof(duk_uint16_t)); + ch = -1; + } else if (x == DUK_ASC_UC_D) { + duk__emit_u16_direct_ranges(lex_ctx, + gen_range, + userdata, + duk_unicode_re_ranges_not_digit, + sizeof(duk_unicode_re_ranges_not_digit) / sizeof(duk_uint16_t)); + ch = -1; + } else if (x == DUK_ASC_LC_S) { + duk__emit_u16_direct_ranges(lex_ctx, + gen_range, + userdata, + duk_unicode_re_ranges_white, + sizeof(duk_unicode_re_ranges_white) / sizeof(duk_uint16_t)); + ch = -1; + } else if (x == DUK_ASC_UC_S) { + duk__emit_u16_direct_ranges(lex_ctx, + gen_range, + userdata, + duk_unicode_re_ranges_not_white, + sizeof(duk_unicode_re_ranges_not_white) / sizeof(duk_uint16_t)); + ch = -1; + } else if (x == DUK_ASC_LC_W) { + duk__emit_u16_direct_ranges(lex_ctx, + gen_range, + userdata, + duk_unicode_re_ranges_wordchar, + sizeof(duk_unicode_re_ranges_wordchar) / sizeof(duk_uint16_t)); + ch = -1; + } else if (x == DUK_ASC_UC_W) { + duk__emit_u16_direct_ranges(lex_ctx, + gen_range, + userdata, + duk_unicode_re_ranges_not_wordchar, + sizeof(duk_unicode_re_ranges_not_wordchar) / sizeof(duk_uint16_t)); + ch = -1; + } else if (DUK__ISDIGIT(x)) { + /* DecimalEscape, only \0 is allowed, no leading + * zeroes are allowed. + * + * ES2015 Annex B also allows (maximal match) legacy + * octal escapes up to \377 and \8 and \9 are + * accepted as literal '8' and '9', also in strict mode. + */ + +#if defined(DUK_USE_ES6_REGEXP_SYNTAX) + ch = duk__lexer_parse_legacy_octal(lex_ctx, &adv, 0 /*reject_annex_b*/); + DUK_ASSERT(ch >= 0); /* no rejections */ +#else + if (x == DUK_ASC_0 && !DUK__ISDIGIT(DUK__L2())) { + ch = 0x0000; + } else { + goto fail_escape; + } +#endif +#if defined(DUK_USE_ES6_REGEXP_SYNTAX) + } else if (x >= 0) { + /* IdentityEscape: ES2015 Annex B allows almost all + * source characters here. Match anything except + * EOF here. + */ + ch = x; +#else /* DUK_USE_ES6_REGEXP_SYNTAX */ + } else if (!duk_unicode_is_identifier_part(x)) { + /* IdentityEscape: ES5.1 doesn't allow identity escape + * for identifier part characters, which conflicts with + * some real world code. For example, it doesn't allow + * /[\$]/ which is awkward. + */ + ch = x; +#endif /* DUK_USE_ES6_REGEXP_SYNTAX */ + } else { + goto fail_escape; + } + } else { + /* character represents itself */ + ch = x; + } + + /* ch is a literal character here or -1 if parsed entity was + * an escape such as "\s". + */ + + if (ch < 0) { + /* multi-character sets not allowed as part of ranges, see + * E5 Section 15.10.2.15, abstract operation CharacterRange. + */ + if (start >= 0) { + if (dash) { + goto fail_range; + } else { + gen_range(userdata, start, start, 0); + start = -1; + /* dash is already 0 */ + } + } + } else { + if (start >= 0) { + if (dash) { + if (start > ch) { + goto fail_range; + } + gen_range(userdata, start, ch, 0); + start = -1; + dash = 0; + } else { + gen_range(userdata, start, start, 0); + start = ch; + /* dash is already 0 */ + } + } else { + start = ch; + } + } + } + + return; + + fail_escape: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_REGEXP_ESCAPE); + DUK_WO_NORETURN(return;); + + fail_range: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_INVALID_RANGE); + DUK_WO_NORETURN(return;); + + fail_unterm_charclass: + DUK_ERROR_SYNTAX(lex_ctx->thr, DUK_STR_UNTERMINATED_CHARCLASS); + DUK_WO_NORETURN(return;); +} + +#endif /* DUK_USE_REGEXP_SUPPORT */ + +/* automatic undefs */ +#undef DUK__ADVANCEBYTES +#undef DUK__ADVANCECHARS +#undef DUK__ADVTOK +#undef DUK__APPENDBUFFER +#undef DUK__APPENDBUFFER_ASCII +#undef DUK__INITBUFFER +#undef DUK__ISDIGIT +#undef DUK__ISDIGIT03 +#undef DUK__ISDIGIT47 +#undef DUK__ISHEXDIGIT +#undef DUK__ISOCTDIGIT +#undef DUK__L0 +#undef DUK__L1 +#undef DUK__L2 +#undef DUK__L3 +#undef DUK__L4 +#undef DUK__L5 +#undef DUK__LOOKUP +#undef DUK__MAX_RE_DECESC_DIGITS +#undef DUK__MAX_RE_QUANT_DIGITS +#line 1 "duk_numconv.c" +/* + * Number-to-string and string-to-number conversions. + * + * Slow path number-to-string and string-to-number conversion is based on + * a Dragon4 variant, with fast paths for small integers. Big integer + * arithmetic is needed for guaranteeing that the conversion is correct + * and uses a minimum number of digits. The big number arithmetic has a + * fixed maximum size and does not require dynamic allocations. + * + * See: doc/number-conversion.rst. + */ + +/* #include duk_internal.h -> already included */ + +#define DUK__IEEE_DOUBLE_EXP_BIAS 1023 +#define DUK__IEEE_DOUBLE_EXP_MIN (-1022) /* biased exp == 0 -> denormal, exp -1022 */ + +#define DUK__DIGITCHAR(x) duk_lc_digits[(x)] + +/* + * Tables generated with util/gennumdigits.py. + * + * duk__str2num_digits_for_radix indicates, for each radix, how many input + * digits should be considered significant for string-to-number conversion. + * The input is also padded to this many digits to give the Dragon4 + * conversion enough (apparent) precision to work with. + * + * duk__str2num_exp_limits indicates, for each radix, the radix-specific + * minimum/maximum exponent values (for a Dragon4 integer mantissa) + * below and above which the number is guaranteed to underflow to zero + * or overflow to Infinity. This allows parsing to keep bigint values + * bounded. + */ + +DUK_LOCAL const duk_uint8_t duk__str2num_digits_for_radix[] = { + 69, 44, 35, 30, 27, 25, 23, 22, 20, 20, /* 2 to 11 */ + 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, /* 12 to 21 */ + 16, 16, 16, 15, 15, 15, 15, 15, 15, 14, /* 22 to 31 */ + 14, 14, 14, 14, 14 /* 31 to 36 */ +}; + +typedef struct { + duk_int16_t upper; + duk_int16_t lower; +} duk__exp_limits; + +DUK_LOCAL const duk__exp_limits duk__str2num_exp_limits[] = { + { 957, -1147 }, { 605, -725 }, { 479, -575 }, { 414, -496 }, + { 372, -446 }, { 342, -411 }, { 321, -384 }, { 304, -364 }, + { 291, -346 }, { 279, -334 }, { 268, -323 }, { 260, -312 }, + { 252, -304 }, { 247, -296 }, { 240, -289 }, { 236, -283 }, + { 231, -278 }, { 227, -273 }, { 223, -267 }, { 220, -263 }, + { 216, -260 }, { 213, -256 }, { 210, -253 }, { 208, -249 }, + { 205, -246 }, { 203, -244 }, { 201, -241 }, { 198, -239 }, + { 196, -237 }, { 195, -234 }, { 193, -232 }, { 191, -230 }, + { 190, -228 }, { 188, -226 }, { 187, -225 }, +}; + +/* + * Limited functionality bigint implementation. + * + * Restricted to non-negative numbers with less than 32 * DUK__BI_MAX_PARTS bits, + * with the caller responsible for ensuring this is never exceeded. No memory + * allocation (except stack) is needed for bigint computation. Operations + * have been tailored for number conversion needs. + * + * Argument order is "assignment order", i.e. target first, then arguments: + * x <- y * z --> duk__bi_mul(x, y, z); + */ + +/* This upper value has been experimentally determined; debug build will check + * bigint size with assertions. + */ +#define DUK__BI_MAX_PARTS 37 /* 37x32 = 1184 bits */ + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) +#define DUK__BI_PRINT(name,x) duk__bi_print((name),(x)) +#else +#define DUK__BI_PRINT(name,x) +#endif + +/* Current size is about 152 bytes. */ +typedef struct { + duk_small_int_t n; + duk_uint32_t v[DUK__BI_MAX_PARTS]; /* low to high */ +} duk__bigint; + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) +DUK_LOCAL void duk__bi_print(const char *name, duk__bigint *x) { + /* Overestimate required size; debug code so not critical to be tight. */ + char buf[DUK__BI_MAX_PARTS * 9 + 64]; + char *p = buf; + duk_small_int_t i; + + /* No NUL term checks in this debug code. */ + p += DUK_SPRINTF(p, "%p n=%ld", (void *) x, (long) x->n); + if (x->n == 0) { + p += DUK_SPRINTF(p, " 0"); + } + for (i = x->n - 1; i >= 0; i--) { + p += DUK_SPRINTF(p, " %08lx", (unsigned long) x->v[i]); + } + + DUK_DDD(DUK_DDDPRINT("%s: %s", (const char *) name, (const char *) buf)); +} +#endif + +#if defined(DUK_USE_ASSERTIONS) +DUK_LOCAL duk_small_int_t duk__bi_is_valid(duk__bigint *x) { + return (duk_small_int_t) + ( ((x->n >= 0) && (x->n <= DUK__BI_MAX_PARTS)) /* is valid size */ && + ((x->n == 0) || (x->v[x->n - 1] != 0)) /* is normalized */ ); +} +#endif + +DUK_LOCAL void duk__bi_normalize(duk__bigint *x) { + duk_small_int_t i; + + for (i = x->n - 1; i >= 0; i--) { + if (x->v[i] != 0) { + break; + } + } + + /* Note: if 'x' is zero, x->n becomes 0 here */ + x->n = i + 1; + DUK_ASSERT(duk__bi_is_valid(x)); +} + +/* x <- y */ +DUK_LOCAL void duk__bi_copy(duk__bigint *x, duk__bigint *y) { + duk_small_int_t n; + + n = y->n; + x->n = n; + /* No need to special case n == 0. */ + duk_memcpy((void *) x->v, (const void *) y->v, (size_t) (sizeof(duk_uint32_t) * (size_t) n)); +} + +DUK_LOCAL void duk__bi_set_small(duk__bigint *x, duk_uint32_t v) { + if (v == 0U) { + x->n = 0; + } else { + x->n = 1; + x->v[0] = v; + } + DUK_ASSERT(duk__bi_is_valid(x)); +} + +/* Return value: <0 <=> x < y + * 0 <=> x == y + * >0 <=> x > y + */ +DUK_LOCAL int duk__bi_compare(duk__bigint *x, duk__bigint *y) { + duk_small_int_t i, nx, ny; + duk_uint32_t tx, ty; + + DUK_ASSERT(duk__bi_is_valid(x)); + DUK_ASSERT(duk__bi_is_valid(y)); + + nx = x->n; + ny = y->n; + if (nx > ny) { + goto ret_gt; + } + if (nx < ny) { + goto ret_lt; + } + for (i = nx - 1; i >= 0; i--) { + tx = x->v[i]; + ty = y->v[i]; + + if (tx > ty) { + goto ret_gt; + } + if (tx < ty) { + goto ret_lt; + } + } + + return 0; + + ret_gt: + return 1; + + ret_lt: + return -1; +} + +/* x <- y + z */ +#if defined(DUK_USE_64BIT_OPS) +DUK_LOCAL void duk__bi_add(duk__bigint *x, duk__bigint *y, duk__bigint *z) { + duk_uint64_t tmp; + duk_small_int_t i, ny, nz; + + DUK_ASSERT(duk__bi_is_valid(y)); + DUK_ASSERT(duk__bi_is_valid(z)); + + if (z->n > y->n) { + duk__bigint *t; + t = y; y = z; z = t; + } + DUK_ASSERT(y->n >= z->n); + + ny = y->n; nz = z->n; + tmp = 0U; + for (i = 0; i < ny; i++) { + DUK_ASSERT(i < DUK__BI_MAX_PARTS); + tmp += y->v[i]; + if (i < nz) { + tmp += z->v[i]; + } + x->v[i] = (duk_uint32_t) (tmp & 0xffffffffUL); + tmp = tmp >> 32; + } + if (tmp != 0U) { + DUK_ASSERT(i < DUK__BI_MAX_PARTS); + x->v[i++] = (duk_uint32_t) tmp; + } + x->n = i; + DUK_ASSERT(x->n <= DUK__BI_MAX_PARTS); + + /* no need to normalize */ + DUK_ASSERT(duk__bi_is_valid(x)); +} +#else /* DUK_USE_64BIT_OPS */ +DUK_LOCAL void duk__bi_add(duk__bigint *x, duk__bigint *y, duk__bigint *z) { + duk_uint32_t carry, tmp1, tmp2; + duk_small_int_t i, ny, nz; + + DUK_ASSERT(duk__bi_is_valid(y)); + DUK_ASSERT(duk__bi_is_valid(z)); + + if (z->n > y->n) { + duk__bigint *t; + t = y; y = z; z = t; + } + DUK_ASSERT(y->n >= z->n); + + ny = y->n; nz = z->n; + carry = 0U; + for (i = 0; i < ny; i++) { + /* Carry is detected based on wrapping which relies on exact 32-bit + * types. + */ + DUK_ASSERT(i < DUK__BI_MAX_PARTS); + tmp1 = y->v[i]; + tmp2 = tmp1; + if (i < nz) { + tmp2 += z->v[i]; + } + + /* Careful with carry condition: + * - If carry not added: 0x12345678 + 0 + 0xffffffff = 0x12345677 (< 0x12345678) + * - If carry added: 0x12345678 + 1 + 0xffffffff = 0x12345678 (== 0x12345678) + */ + if (carry) { + tmp2++; + carry = (tmp2 <= tmp1 ? 1U : 0U); + } else { + carry = (tmp2 < tmp1 ? 1U : 0U); + } + + x->v[i] = tmp2; + } + if (carry) { + DUK_ASSERT(i < DUK__BI_MAX_PARTS); + DUK_ASSERT(carry == 1U); + x->v[i++] = carry; + } + x->n = i; + DUK_ASSERT(x->n <= DUK__BI_MAX_PARTS); + + /* no need to normalize */ + DUK_ASSERT(duk__bi_is_valid(x)); +} +#endif /* DUK_USE_64BIT_OPS */ + +/* x <- y + z */ +DUK_LOCAL void duk__bi_add_small(duk__bigint *x, duk__bigint *y, duk_uint32_t z) { + duk__bigint tmp; + + DUK_ASSERT(duk__bi_is_valid(y)); + + /* XXX: this could be optimized; there is only one call site now though */ + duk__bi_set_small(&tmp, z); + duk__bi_add(x, y, &tmp); + + DUK_ASSERT(duk__bi_is_valid(x)); +} + +#if 0 /* unused */ +/* x <- x + y, use t as temp */ +DUK_LOCAL void duk__bi_add_copy(duk__bigint *x, duk__bigint *y, duk__bigint *t) { + duk__bi_add(t, x, y); + duk__bi_copy(x, t); +} +#endif + +/* x <- y - z, require x >= y => z >= 0, i.e. y >= z */ +#if defined(DUK_USE_64BIT_OPS) +DUK_LOCAL void duk__bi_sub(duk__bigint *x, duk__bigint *y, duk__bigint *z) { + duk_small_int_t i, ny, nz; + duk_uint32_t ty, tz; + duk_int64_t tmp; + + DUK_ASSERT(duk__bi_is_valid(y)); + DUK_ASSERT(duk__bi_is_valid(z)); + DUK_ASSERT(duk__bi_compare(y, z) >= 0); + DUK_ASSERT(y->n >= z->n); + + ny = y->n; nz = z->n; + tmp = 0; + for (i = 0; i < ny; i++) { + ty = y->v[i]; + if (i < nz) { + tz = z->v[i]; + } else { + tz = 0; + } + tmp = (duk_int64_t) ty - (duk_int64_t) tz + tmp; + x->v[i] = (duk_uint32_t) ((duk_uint64_t) tmp & 0xffffffffUL); + tmp = tmp >> 32; /* 0 or -1 */ + } + DUK_ASSERT(tmp == 0); + + x->n = i; + duk__bi_normalize(x); /* need to normalize, may even cancel to 0 */ + DUK_ASSERT(duk__bi_is_valid(x)); +} +#else +DUK_LOCAL void duk__bi_sub(duk__bigint *x, duk__bigint *y, duk__bigint *z) { + duk_small_int_t i, ny, nz; + duk_uint32_t tmp1, tmp2, borrow; + + DUK_ASSERT(duk__bi_is_valid(y)); + DUK_ASSERT(duk__bi_is_valid(z)); + DUK_ASSERT(duk__bi_compare(y, z) >= 0); + DUK_ASSERT(y->n >= z->n); + + ny = y->n; nz = z->n; + borrow = 0U; + for (i = 0; i < ny; i++) { + /* Borrow is detected based on wrapping which relies on exact 32-bit + * types. + */ + tmp1 = y->v[i]; + tmp2 = tmp1; + if (i < nz) { + tmp2 -= z->v[i]; + } + + /* Careful with borrow condition: + * - If borrow not subtracted: 0x12345678 - 0 - 0xffffffff = 0x12345679 (> 0x12345678) + * - If borrow subtracted: 0x12345678 - 1 - 0xffffffff = 0x12345678 (== 0x12345678) + */ + if (borrow) { + tmp2--; + borrow = (tmp2 >= tmp1 ? 1U : 0U); + } else { + borrow = (tmp2 > tmp1 ? 1U : 0U); + } + + x->v[i] = tmp2; + } + DUK_ASSERT(borrow == 0U); + + x->n = i; + duk__bi_normalize(x); /* need to normalize, may even cancel to 0 */ + DUK_ASSERT(duk__bi_is_valid(x)); +} +#endif + +#if 0 /* unused */ +/* x <- y - z */ +DUK_LOCAL void duk__bi_sub_small(duk__bigint *x, duk__bigint *y, duk_uint32_t z) { + duk__bigint tmp; + + DUK_ASSERT(duk__bi_is_valid(y)); + + /* XXX: this could be optimized */ + duk__bi_set_small(&tmp, z); + duk__bi_sub(x, y, &tmp); + + DUK_ASSERT(duk__bi_is_valid(x)); +} +#endif + +/* x <- x - y, use t as temp */ +DUK_LOCAL void duk__bi_sub_copy(duk__bigint *x, duk__bigint *y, duk__bigint *t) { + duk__bi_sub(t, x, y); + duk__bi_copy(x, t); +} + +/* x <- y * z */ +DUK_LOCAL void duk__bi_mul(duk__bigint *x, duk__bigint *y, duk__bigint *z) { + duk_small_int_t i, j, nx, nz; + + DUK_ASSERT(duk__bi_is_valid(y)); + DUK_ASSERT(duk__bi_is_valid(z)); + + nx = y->n + z->n; /* max possible */ + DUK_ASSERT(nx <= DUK__BI_MAX_PARTS); + + if (nx == 0) { + /* Both inputs are zero; cases where only one is zero can go + * through main algorithm. + */ + x->n = 0; + return; + } + + duk_memzero((void *) x->v, (size_t) (sizeof(duk_uint32_t) * (size_t) nx)); + x->n = nx; + + nz = z->n; + for (i = 0; i < y->n; i++) { +#if defined(DUK_USE_64BIT_OPS) + duk_uint64_t tmp = 0U; + for (j = 0; j < nz; j++) { + tmp += (duk_uint64_t) y->v[i] * (duk_uint64_t) z->v[j] + x->v[i+j]; + x->v[i+j] = (duk_uint32_t) (tmp & 0xffffffffUL); + tmp = tmp >> 32; + } + if (tmp > 0) { + DUK_ASSERT(i + j < nx); + DUK_ASSERT(i + j < DUK__BI_MAX_PARTS); + DUK_ASSERT(x->v[i+j] == 0U); + x->v[i+j] = (duk_uint32_t) tmp; + } +#else + /* + * Multiply + add + carry for 32-bit components using only 16x16->32 + * multiplies and carry detection based on unsigned overflow. + * + * 1st mult, 32-bit: (A*2^16 + B) + * 2nd mult, 32-bit: (C*2^16 + D) + * 3rd add, 32-bit: E + * 4th add, 32-bit: F + * + * (AC*2^16 + B) * (C*2^16 + D) + E + F + * = AC*2^32 + AD*2^16 + BC*2^16 + BD + E + F + * = AC*2^32 + (AD + BC)*2^16 + (BD + E + F) + * = AC*2^32 + AD*2^16 + BC*2^16 + (BD + E + F) + */ + duk_uint32_t a, b, c, d, e, f; + duk_uint32_t r, s, t; + + a = y->v[i]; b = a & 0xffffUL; a = a >> 16; + + f = 0; + for (j = 0; j < nz; j++) { + c = z->v[j]; d = c & 0xffffUL; c = c >> 16; + e = x->v[i+j]; + + /* build result as: (r << 32) + s: start with (BD + E + F) */ + r = 0; + s = b * d; + + /* add E */ + t = s + e; + if (t < s) { r++; } /* carry */ + s = t; + + /* add F */ + t = s + f; + if (t < s) { r++; } /* carry */ + s = t; + + /* add BC*2^16 */ + t = b * c; + r += (t >> 16); + t = s + ((t & 0xffffUL) << 16); + if (t < s) { r++; } /* carry */ + s = t; + + /* add AD*2^16 */ + t = a * d; + r += (t >> 16); + t = s + ((t & 0xffffUL) << 16); + if (t < s) { r++; } /* carry */ + s = t; + + /* add AC*2^32 */ + t = a * c; + r += t; + + DUK_DDD(DUK_DDDPRINT("ab=%08lx cd=%08lx ef=%08lx -> rs=%08lx %08lx", + (unsigned long) y->v[i], (unsigned long) z->v[j], + (unsigned long) x->v[i+j], (unsigned long) r, + (unsigned long) s)); + + x->v[i+j] = s; + f = r; + } + if (f > 0U) { + DUK_ASSERT(i + j < nx); + DUK_ASSERT(i + j < DUK__BI_MAX_PARTS); + DUK_ASSERT(x->v[i+j] == 0U); + x->v[i+j] = (duk_uint32_t) f; + } +#endif /* DUK_USE_64BIT_OPS */ + } + + duk__bi_normalize(x); + DUK_ASSERT(duk__bi_is_valid(x)); +} + +/* x <- y * z */ +DUK_LOCAL void duk__bi_mul_small(duk__bigint *x, duk__bigint *y, duk_uint32_t z) { + duk__bigint tmp; + + DUK_ASSERT(duk__bi_is_valid(y)); + + /* XXX: this could be optimized */ + duk__bi_set_small(&tmp, z); + duk__bi_mul(x, y, &tmp); + + DUK_ASSERT(duk__bi_is_valid(x)); +} + +/* x <- x * y, use t as temp */ +DUK_LOCAL void duk__bi_mul_copy(duk__bigint *x, duk__bigint *y, duk__bigint *t) { + duk__bi_mul(t, x, y); + duk__bi_copy(x, t); +} + +/* x <- x * y, use t as temp */ +DUK_LOCAL void duk__bi_mul_small_copy(duk__bigint *x, duk_uint32_t y, duk__bigint *t) { + duk__bi_mul_small(t, x, y); + duk__bi_copy(x, t); +} + +DUK_LOCAL int duk__bi_is_even(duk__bigint *x) { + DUK_ASSERT(duk__bi_is_valid(x)); + return (x->n == 0) || ((x->v[0] & 0x01) == 0); +} + +DUK_LOCAL int duk__bi_is_zero(duk__bigint *x) { + DUK_ASSERT(duk__bi_is_valid(x)); + return (x->n == 0); /* this is the case for normalized numbers */ +} + +/* Bigint is 2^52. Used to detect normalized IEEE double mantissa values + * which are at the lowest edge (next floating point value downwards has + * a different exponent). The lowest mantissa has the form: + * + * 1000........000 (52 zeroes; only "hidden bit" is set) + */ +DUK_LOCAL duk_small_int_t duk__bi_is_2to52(duk__bigint *x) { + DUK_ASSERT(duk__bi_is_valid(x)); + return (duk_small_int_t) + (x->n == 2) && (x->v[0] == 0U) && (x->v[1] == (1U << (52-32))); +} + +/* x <- (1< 0); + r = y % 32; + duk_memzero((void *) x->v, sizeof(duk_uint32_t) * (size_t) n); + x->n = n; + x->v[n - 1] = (((duk_uint32_t) 1) << r); +} + +/* x <- b^y; use t1 and t2 as temps */ +DUK_LOCAL void duk__bi_exp_small(duk__bigint *x, duk_small_int_t b, duk_small_int_t y, duk__bigint *t1, duk__bigint *t2) { + /* Fast path the binary case */ + + DUK_ASSERT(x != t1 && x != t2 && t1 != t2); /* distinct bignums, easy mistake to make */ + DUK_ASSERT(b >= 0); + DUK_ASSERT(y >= 0); + + if (b == 2) { + duk__bi_twoexp(x, y); + return; + } + + /* http://en.wikipedia.org/wiki/Exponentiation_by_squaring */ + + DUK_DDD(DUK_DDDPRINT("exp_small: b=%ld, y=%ld", (long) b, (long) y)); + + duk__bi_set_small(x, 1); + duk__bi_set_small(t1, (duk_uint32_t) b); + for (;;) { + /* Loop structure ensures that we don't compute t1^2 unnecessarily + * on the final round, as that might create a bignum exceeding the + * current DUK__BI_MAX_PARTS limit. + */ + if (y & 0x01) { + duk__bi_mul_copy(x, t1, t2); + } + y = y >> 1; + if (y == 0) { + break; + } + duk__bi_mul_copy(t1, t1, t2); + } + + DUK__BI_PRINT("exp_small result", x); +} + +/* + * A Dragon4 number-to-string variant, based on: + * + * Guy L. Steele Jr., Jon L. White: "How to Print Floating-Point Numbers + * Accurately" + * + * Robert G. Burger, R. Kent Dybvig: "Printing Floating-Point Numbers + * Quickly and Accurately" + * + * The current algorithm is based on Figure 1 of the Burger-Dybvig paper, + * i.e. the base implementation without logarithm estimation speedups + * (these would increase code footprint considerably). Fixed-format output + * does not follow the suggestions in the paper; instead, we generate an + * extra digit and round-with-carry. + * + * The same algorithm is used for number parsing (with b=10 and B=2) + * by generating one extra digit and doing rounding manually. + * + * See doc/number-conversion.rst for limitations. + */ + +/* Maximum number of digits generated. */ +#define DUK__MAX_OUTPUT_DIGITS 1040 /* (Number.MAX_VALUE).toString(2).length == 1024, + slack */ + +/* Maximum number of characters in formatted value. */ +#define DUK__MAX_FORMATTED_LENGTH 1040 /* (-Number.MAX_VALUE).toString(2).length == 1025, + slack */ + +/* Number and (minimum) size of bigints in the nc_ctx structure. */ +#define DUK__NUMCONV_CTX_NUM_BIGINTS 7 +#define DUK__NUMCONV_CTX_BIGINTS_SIZE (sizeof(duk__bigint) * DUK__NUMCONV_CTX_NUM_BIGINTS) + +typedef struct { + /* Currently about 7*152 = 1064 bytes. The space for these + * duk__bigints is used also as a temporary buffer for generating + * the final string. This is a bit awkard; a union would be + * more correct. + */ + duk__bigint f, r, s, mp, mm, t1, t2; + + duk_small_int_t is_s2n; /* if 1, doing a string-to-number; else doing a number-to-string */ + duk_small_int_t is_fixed; /* if 1, doing a fixed format output (not free format) */ + duk_small_int_t req_digits; /* requested number of output digits; 0 = free-format */ + duk_small_int_t abs_pos; /* digit position is absolute, not relative */ + duk_small_int_t e; /* exponent for 'f' */ + duk_small_int_t b; /* input radix */ + duk_small_int_t B; /* output radix */ + duk_small_int_t k; /* see algorithm */ + duk_small_int_t low_ok; /* see algorithm */ + duk_small_int_t high_ok; /* see algorithm */ + duk_small_int_t unequal_gaps; /* m+ != m- (very rarely) */ + + /* Buffer used for generated digits, values are in the range [0,B-1]. */ + duk_uint8_t digits[DUK__MAX_OUTPUT_DIGITS]; + duk_small_int_t count; /* digit count */ +} duk__numconv_stringify_ctx; + +/* Note: computes with 'idx' in assertions, so caller beware. + * 'idx' is preincremented, i.e. '1' on first call, because it + * is more convenient for the caller. + */ +#define DUK__DRAGON4_OUTPUT_PREINC(nc_ctx,preinc_idx,x) do { \ + DUK_ASSERT((preinc_idx) - 1 >= 0); \ + DUK_ASSERT((preinc_idx) - 1 < DUK__MAX_OUTPUT_DIGITS); \ + ((nc_ctx)->digits[(preinc_idx) - 1]) = (duk_uint8_t) (x); \ + } while (0) + +DUK_LOCAL duk_size_t duk__dragon4_format_uint32(duk_uint8_t *buf, duk_uint32_t x, duk_small_int_t radix) { + duk_uint8_t *p; + duk_size_t len; + duk_small_int_t dig; + duk_uint32_t t; + + DUK_ASSERT(buf != NULL); + DUK_ASSERT(radix >= 2 && radix <= 36); + + /* A 32-bit unsigned integer formats to at most 32 digits (the + * worst case happens with radix == 2). Output the digits backwards, + * and use a memmove() to get them in the right place. + */ + + p = buf + 32; + for (;;) { + t = x / (duk_uint32_t) radix; + dig = (duk_small_int_t) (x - t * (duk_uint32_t) radix); + x = t; + + DUK_ASSERT(dig >= 0 && dig < 36); + *(--p) = DUK__DIGITCHAR(dig); + + if (x == 0) { + break; + } + } + len = (duk_size_t) ((buf + 32) - p); + + duk_memmove((void *) buf, (const void *) p, (size_t) len); + + return len; +} + +DUK_LOCAL void duk__dragon4_prepare(duk__numconv_stringify_ctx *nc_ctx) { + duk_small_int_t lowest_mantissa; + +#if 1 + /* Assume IEEE round-to-even, so that shorter encoding can be used + * when round-to-even would produce correct result. By removing + * this check (and having low_ok == high_ok == 0) the results would + * still be accurate but in some cases longer than necessary. + */ + if (duk__bi_is_even(&nc_ctx->f)) { + DUK_DDD(DUK_DDDPRINT("f is even")); + nc_ctx->low_ok = 1; + nc_ctx->high_ok = 1; + } else { + DUK_DDD(DUK_DDDPRINT("f is odd")); + nc_ctx->low_ok = 0; + nc_ctx->high_ok = 0; + } +#else + /* Note: not honoring round-to-even should work but now generates incorrect + * results. For instance, 1e23 serializes to "a000...", i.e. the first digit + * equals the radix (10). Scaling stops one step too early in this case. + * Don't know why this is the case, but since this code path is unused, it + * doesn't matter. + */ + nc_ctx->low_ok = 0; + nc_ctx->high_ok = 0; +#endif + + /* For string-to-number, pretend we never have the lowest mantissa as there + * is no natural "precision" for inputs. Having lowest_mantissa == 0, we'll + * fall into the base cases for both e >= 0 and e < 0. + */ + if (nc_ctx->is_s2n) { + lowest_mantissa = 0; + } else { + lowest_mantissa = duk__bi_is_2to52(&nc_ctx->f); + } + + nc_ctx->unequal_gaps = 0; + if (nc_ctx->e >= 0) { + /* exponent non-negative (and thus not minimum exponent) */ + + if (lowest_mantissa) { + /* (>= e 0) AND (= f (expt b (- p 1))) + * + * be <- (expt b e) == b^e + * be1 <- (* be b) == (expt b (+ e 1)) == b^(e+1) + * r <- (* f be1 2) == 2 * f * b^(e+1) [if b==2 -> f * b^(e+2)] + * s <- (* b 2) [if b==2 -> 4] + * m+ <- be1 == b^(e+1) + * m- <- be == b^e + * k <- 0 + * B <- B + * low_ok <- round + * high_ok <- round + */ + + DUK_DDD(DUK_DDDPRINT("non-negative exponent (not smallest exponent); " + "lowest mantissa value for this exponent -> " + "unequal gaps")); + + duk__bi_exp_small(&nc_ctx->mm, nc_ctx->b, nc_ctx->e, &nc_ctx->t1, &nc_ctx->t2); /* mm <- b^e */ + duk__bi_mul_small(&nc_ctx->mp, &nc_ctx->mm, (duk_uint32_t) nc_ctx->b); /* mp <- b^(e+1) */ + duk__bi_mul_small(&nc_ctx->t1, &nc_ctx->f, 2); + duk__bi_mul(&nc_ctx->r, &nc_ctx->t1, &nc_ctx->mp); /* r <- (2 * f) * b^(e+1) */ + duk__bi_set_small(&nc_ctx->s, (duk_uint32_t) (nc_ctx->b * 2)); /* s <- 2 * b */ + nc_ctx->unequal_gaps = 1; + } else { + /* (>= e 0) AND (not (= f (expt b (- p 1)))) + * + * be <- (expt b e) == b^e + * r <- (* f be 2) == 2 * f * b^e [if b==2 -> f * b^(e+1)] + * s <- 2 + * m+ <- be == b^e + * m- <- be == b^e + * k <- 0 + * B <- B + * low_ok <- round + * high_ok <- round + */ + + DUK_DDD(DUK_DDDPRINT("non-negative exponent (not smallest exponent); " + "not lowest mantissa for this exponent -> " + "equal gaps")); + + duk__bi_exp_small(&nc_ctx->mm, nc_ctx->b, nc_ctx->e, &nc_ctx->t1, &nc_ctx->t2); /* mm <- b^e */ + duk__bi_copy(&nc_ctx->mp, &nc_ctx->mm); /* mp <- b^e */ + duk__bi_mul_small(&nc_ctx->t1, &nc_ctx->f, 2); + duk__bi_mul(&nc_ctx->r, &nc_ctx->t1, &nc_ctx->mp); /* r <- (2 * f) * b^e */ + duk__bi_set_small(&nc_ctx->s, 2); /* s <- 2 */ + } + } else { + /* When doing string-to-number, lowest_mantissa is always 0 so + * the exponent check, while incorrect, won't matter. + */ + if (nc_ctx->e > DUK__IEEE_DOUBLE_EXP_MIN /*not minimum exponent*/ && + lowest_mantissa /* lowest mantissa for this exponent*/) { + /* r <- (* f b 2) [if b==2 -> (* f 4)] + * s <- (* (expt b (- 1 e)) 2) == b^(1-e) * 2 [if b==2 -> b^(2-e)] + * m+ <- b == 2 + * m- <- 1 + * k <- 0 + * B <- B + * low_ok <- round + * high_ok <- round + */ + + DUK_DDD(DUK_DDDPRINT("negative exponent; not minimum exponent and " + "lowest mantissa for this exponent -> " + "unequal gaps")); + + duk__bi_mul_small(&nc_ctx->r, &nc_ctx->f, (duk_uint32_t) (nc_ctx->b * 2)); /* r <- (2 * b) * f */ + duk__bi_exp_small(&nc_ctx->t1, nc_ctx->b, 1 - nc_ctx->e, &nc_ctx->s, &nc_ctx->t2); /* NB: use 's' as temp on purpose */ + duk__bi_mul_small(&nc_ctx->s, &nc_ctx->t1, 2); /* s <- b^(1-e) * 2 */ + duk__bi_set_small(&nc_ctx->mp, 2); + duk__bi_set_small(&nc_ctx->mm, 1); + nc_ctx->unequal_gaps = 1; + } else { + /* r <- (* f 2) + * s <- (* (expt b (- e)) 2) == b^(-e) * 2 [if b==2 -> b^(1-e)] + * m+ <- 1 + * m- <- 1 + * k <- 0 + * B <- B + * low_ok <- round + * high_ok <- round + */ + + DUK_DDD(DUK_DDDPRINT("negative exponent; minimum exponent or not " + "lowest mantissa for this exponent -> " + "equal gaps")); + + duk__bi_mul_small(&nc_ctx->r, &nc_ctx->f, 2); /* r <- 2 * f */ + duk__bi_exp_small(&nc_ctx->t1, nc_ctx->b, -nc_ctx->e, &nc_ctx->s, &nc_ctx->t2); /* NB: use 's' as temp on purpose */ + duk__bi_mul_small(&nc_ctx->s, &nc_ctx->t1, 2); /* s <- b^(-e) * 2 */ + duk__bi_set_small(&nc_ctx->mp, 1); + duk__bi_set_small(&nc_ctx->mm, 1); + } + } +} + +DUK_LOCAL void duk__dragon4_scale(duk__numconv_stringify_ctx *nc_ctx) { + duk_small_int_t k = 0; + + /* This is essentially the 'scale' algorithm, with recursion removed. + * Note that 'k' is either correct immediately, or will move in one + * direction in the loop. There's no need to do the low/high checks + * on every round (like the Scheme algorithm does). + * + * The scheme algorithm finds 'k' and updates 's' simultaneously, + * while the logical algorithm finds 'k' with 's' having its initial + * value, after which 's' is updated separately (see the Burger-Dybvig + * paper, Section 3.1, steps 2 and 3). + * + * The case where m+ == m- (almost always) is optimized for, because + * it reduces the bigint operations considerably and almost always + * applies. The scale loop only needs to work with m+, so this works. + */ + + /* XXX: this algorithm could be optimized quite a lot by using e.g. + * a logarithm based estimator for 'k' and performing B^n multiplication + * using a lookup table or using some bit-representation based exp + * algorithm. Currently we just loop, with significant performance + * impact for very large and very small numbers. + */ + + DUK_DDD(DUK_DDDPRINT("scale: B=%ld, low_ok=%ld, high_ok=%ld", + (long) nc_ctx->B, (long) nc_ctx->low_ok, (long) nc_ctx->high_ok)); + DUK__BI_PRINT("r(init)", &nc_ctx->r); + DUK__BI_PRINT("s(init)", &nc_ctx->s); + DUK__BI_PRINT("mp(init)", &nc_ctx->mp); + DUK__BI_PRINT("mm(init)", &nc_ctx->mm); + + for (;;) { + DUK_DDD(DUK_DDDPRINT("scale loop (inc k), k=%ld", (long) k)); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("m+", &nc_ctx->mp); + DUK__BI_PRINT("m-", &nc_ctx->mm); + + duk__bi_add(&nc_ctx->t1, &nc_ctx->r, &nc_ctx->mp); /* t1 = (+ r m+) */ + if (duk__bi_compare(&nc_ctx->t1, &nc_ctx->s) >= (nc_ctx->high_ok ? 0 : 1)) { + DUK_DDD(DUK_DDDPRINT("k is too low")); + /* r <- r + * s <- (* s B) + * m+ <- m+ + * m- <- m- + * k <- (+ k 1) + */ + + duk__bi_mul_small_copy(&nc_ctx->s, (duk_uint32_t) nc_ctx->B, &nc_ctx->t1); + k++; + } else { + break; + } + } + + /* k > 0 -> k was too low, and cannot be too high */ + if (k > 0) { + goto skip_dec_k; + } + + for (;;) { + DUK_DDD(DUK_DDDPRINT("scale loop (dec k), k=%ld", (long) k)); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("m+", &nc_ctx->mp); + DUK__BI_PRINT("m-", &nc_ctx->mm); + + duk__bi_add(&nc_ctx->t1, &nc_ctx->r, &nc_ctx->mp); /* t1 = (+ r m+) */ + duk__bi_mul_small(&nc_ctx->t2, &nc_ctx->t1, (duk_uint32_t) nc_ctx->B); /* t2 = (* (+ r m+) B) */ + if (duk__bi_compare(&nc_ctx->t2, &nc_ctx->s) <= (nc_ctx->high_ok ? -1 : 0)) { + DUK_DDD(DUK_DDDPRINT("k is too high")); + /* r <- (* r B) + * s <- s + * m+ <- (* m+ B) + * m- <- (* m- B) + * k <- (- k 1) + */ + duk__bi_mul_small_copy(&nc_ctx->r, (duk_uint32_t) nc_ctx->B, &nc_ctx->t1); + duk__bi_mul_small_copy(&nc_ctx->mp, (duk_uint32_t) nc_ctx->B, &nc_ctx->t1); + if (nc_ctx->unequal_gaps) { + DUK_DDD(DUK_DDDPRINT("m+ != m- -> need to update m- too")); + duk__bi_mul_small_copy(&nc_ctx->mm, (duk_uint32_t) nc_ctx->B, &nc_ctx->t1); + } + k--; + } else { + break; + } + } + + skip_dec_k: + + if (!nc_ctx->unequal_gaps) { + DUK_DDD(DUK_DDDPRINT("equal gaps, copy m- from m+")); + duk__bi_copy(&nc_ctx->mm, &nc_ctx->mp); /* mm <- mp */ + } + nc_ctx->k = k; + + DUK_DDD(DUK_DDDPRINT("final k: %ld", (long) k)); + DUK__BI_PRINT("r(final)", &nc_ctx->r); + DUK__BI_PRINT("s(final)", &nc_ctx->s); + DUK__BI_PRINT("mp(final)", &nc_ctx->mp); + DUK__BI_PRINT("mm(final)", &nc_ctx->mm); +} + +DUK_LOCAL void duk__dragon4_generate(duk__numconv_stringify_ctx *nc_ctx) { + duk_small_int_t tc1, tc2; /* terminating conditions */ + duk_small_int_t d; /* current digit */ + duk_small_int_t count = 0; /* digit count */ + + /* + * Digit generation loop. + * + * Different termination conditions: + * + * 1. Free format output. Terminate when shortest accurate + * representation found. + * + * 2. Fixed format output, with specific number of digits. + * Ignore termination conditions, terminate when digits + * generated. Caller requests an extra digit and rounds. + * + * 3. Fixed format output, with a specific absolute cut-off + * position (e.g. 10 digits after decimal point). Note + * that we always generate at least one digit, even if + * the digit is below the cut-off point already. + */ + + for (;;) { + DUK_DDD(DUK_DDDPRINT("generate loop, count=%ld, k=%ld, B=%ld, low_ok=%ld, high_ok=%ld", + (long) count, (long) nc_ctx->k, (long) nc_ctx->B, + (long) nc_ctx->low_ok, (long) nc_ctx->high_ok)); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("m+", &nc_ctx->mp); + DUK__BI_PRINT("m-", &nc_ctx->mm); + + /* (quotient-remainder (* r B) s) using a dummy subtraction loop */ + duk__bi_mul_small(&nc_ctx->t1, &nc_ctx->r, (duk_uint32_t) nc_ctx->B); /* t1 <- (* r B) */ + d = 0; + for (;;) { + if (duk__bi_compare(&nc_ctx->t1, &nc_ctx->s) < 0) { + break; + } + duk__bi_sub_copy(&nc_ctx->t1, &nc_ctx->s, &nc_ctx->t2); /* t1 <- t1 - s */ + d++; + } + duk__bi_copy(&nc_ctx->r, &nc_ctx->t1); /* r <- (remainder (* r B) s) */ + /* d <- (quotient (* r B) s) (in range 0...B-1) */ + DUK_DDD(DUK_DDDPRINT("-> d(quot)=%ld", (long) d)); + DUK__BI_PRINT("r(rem)", &nc_ctx->r); + + duk__bi_mul_small_copy(&nc_ctx->mp, (duk_uint32_t) nc_ctx->B, &nc_ctx->t2); /* m+ <- (* m+ B) */ + duk__bi_mul_small_copy(&nc_ctx->mm, (duk_uint32_t) nc_ctx->B, &nc_ctx->t2); /* m- <- (* m- B) */ + DUK__BI_PRINT("mp(upd)", &nc_ctx->mp); + DUK__BI_PRINT("mm(upd)", &nc_ctx->mm); + + /* Terminating conditions. For fixed width output, we just ignore the + * terminating conditions (and pretend that tc1 == tc2 == false). The + * the current shortcut for fixed-format output is to generate a few + * extra digits and use rounding (with carry) to finish the output. + */ + + if (nc_ctx->is_fixed == 0) { + /* free-form */ + tc1 = (duk__bi_compare(&nc_ctx->r, &nc_ctx->mm) <= (nc_ctx->low_ok ? 0 : -1)); + + duk__bi_add(&nc_ctx->t1, &nc_ctx->r, &nc_ctx->mp); /* t1 <- (+ r m+) */ + tc2 = (duk__bi_compare(&nc_ctx->t1, &nc_ctx->s) >= (nc_ctx->high_ok ? 0 : 1)); + + DUK_DDD(DUK_DDDPRINT("tc1=%ld, tc2=%ld", (long) tc1, (long) tc2)); + } else { + /* fixed-format */ + tc1 = 0; + tc2 = 0; + } + + /* Count is incremented before DUK__DRAGON4_OUTPUT_PREINC() call + * on purpose, which is taken into account by the macro. + */ + count++; + + if (tc1) { + if (tc2) { + /* tc1 = true, tc2 = true */ + duk__bi_mul_small(&nc_ctx->t1, &nc_ctx->r, 2); + if (duk__bi_compare(&nc_ctx->t1, &nc_ctx->s) < 0) { /* (< (* r 2) s) */ + DUK_DDD(DUK_DDDPRINT("tc1=true, tc2=true, 2r > s: output d --> %ld (k=%ld)", + (long) d, (long) nc_ctx->k)); + DUK__DRAGON4_OUTPUT_PREINC(nc_ctx, count, d); + } else { + DUK_DDD(DUK_DDDPRINT("tc1=true, tc2=true, 2r <= s: output d+1 --> %ld (k=%ld)", + (long) (d + 1), (long) nc_ctx->k)); + DUK__DRAGON4_OUTPUT_PREINC(nc_ctx, count, d + 1); + } + break; + } else { + /* tc1 = true, tc2 = false */ + DUK_DDD(DUK_DDDPRINT("tc1=true, tc2=false: output d --> %ld (k=%ld)", + (long) d, (long) nc_ctx->k)); + DUK__DRAGON4_OUTPUT_PREINC(nc_ctx, count, d); + break; + } + } else { + if (tc2) { + /* tc1 = false, tc2 = true */ + DUK_DDD(DUK_DDDPRINT("tc1=false, tc2=true: output d+1 --> %ld (k=%ld)", + (long) (d + 1), (long) nc_ctx->k)); + DUK__DRAGON4_OUTPUT_PREINC(nc_ctx, count, d + 1); + break; + } else { + /* tc1 = false, tc2 = false */ + DUK_DDD(DUK_DDDPRINT("tc1=false, tc2=false: output d --> %ld (k=%ld)", + (long) d, (long) nc_ctx->k)); + DUK__DRAGON4_OUTPUT_PREINC(nc_ctx, count, d); + + /* r <- r (updated above: r <- (remainder (* r B) s) + * s <- s + * m+ <- m+ (updated above: m+ <- (* m+ B) + * m- <- m- (updated above: m- <- (* m- B) + * B, low_ok, high_ok are fixed + */ + + /* fall through and continue for-loop */ + } + } + + /* fixed-format termination conditions */ + if (nc_ctx->is_fixed) { + if (nc_ctx->abs_pos) { + int pos = nc_ctx->k - count + 1; /* count is already incremented, take into account */ + DUK_DDD(DUK_DDDPRINT("fixed format, absolute: abs pos=%ld, k=%ld, count=%ld, req=%ld", + (long) pos, (long) nc_ctx->k, (long) count, (long) nc_ctx->req_digits)); + if (pos <= nc_ctx->req_digits) { + DUK_DDD(DUK_DDDPRINT("digit position reached req_digits, end generate loop")); + break; + } + } else { + DUK_DDD(DUK_DDDPRINT("fixed format, relative: k=%ld, count=%ld, req=%ld", + (long) nc_ctx->k, (long) count, (long) nc_ctx->req_digits)); + if (count >= nc_ctx->req_digits) { + DUK_DDD(DUK_DDDPRINT("digit count reached req_digits, end generate loop")); + break; + } + } + } + } /* for */ + + nc_ctx->count = count; + + DUK_DDD(DUK_DDDPRINT("generate finished")); + +#if defined(DUK_USE_DEBUG_LEVEL) && (DUK_USE_DEBUG_LEVEL >= 2) + { + duk_uint8_t buf[2048]; + duk_small_int_t i, t; + duk_memzero(buf, sizeof(buf)); + for (i = 0; i < nc_ctx->count; i++) { + t = nc_ctx->digits[i]; + if (t < 0 || t > 36) { + buf[i] = (duk_uint8_t) '?'; + } else { + buf[i] = (duk_uint8_t) DUK__DIGITCHAR(t); + } + } + DUK_DDD(DUK_DDDPRINT("-> generated digits; k=%ld, digits='%s'", + (long) nc_ctx->k, (const char *) buf)); + } +#endif +} + +/* Round up digits to a given position. If position is out-of-bounds, + * does nothing. If carry propagates over the first digit, a '1' is + * prepended to digits and 'k' will be updated. Return value indicates + * whether carry propagated over the first digit. + * + * Note that nc_ctx->count is NOT updated based on the rounding position + * (it is updated only if carry overflows over the first digit and an + * extra digit is prepended). + */ +DUK_LOCAL duk_small_int_t duk__dragon4_fixed_format_round(duk__numconv_stringify_ctx *nc_ctx, duk_small_int_t round_idx) { + duk_small_int_t t; + duk_uint8_t *p; + duk_uint8_t roundup_limit; + duk_small_int_t ret = 0; + + /* + * round_idx points to the digit which is considered for rounding; the + * digit to its left is the final digit of the rounded value. If round_idx + * is zero, rounding will be performed; the result will either be an empty + * rounded value or if carry happens a '1' digit is generated. + */ + + if (round_idx >= nc_ctx->count) { + DUK_DDD(DUK_DDDPRINT("round_idx out of bounds (%ld >= %ld (count)) -> no rounding", + (long) round_idx, (long) nc_ctx->count)); + return 0; + } else if (round_idx < 0) { + DUK_DDD(DUK_DDDPRINT("round_idx out of bounds (%ld < 0) -> no rounding", + (long) round_idx)); + return 0; + } + + /* + * Round-up limit. + * + * For even values, divides evenly, e.g. 10 -> roundup_limit=5. + * + * For odd values, rounds up, e.g. 3 -> roundup_limit=2. + * If radix is 3, 0/3 -> down, 1/3 -> down, 2/3 -> up. + */ + roundup_limit = (duk_uint8_t) ((nc_ctx->B + 1) / 2); + + p = &nc_ctx->digits[round_idx]; + if (*p >= roundup_limit) { + DUK_DDD(DUK_DDDPRINT("fixed-format rounding carry required")); + /* carry */ + for (;;) { + *p = 0; + if (p == &nc_ctx->digits[0]) { + DUK_DDD(DUK_DDDPRINT("carry propagated to first digit -> special case handling")); + duk_memmove((void *) (&nc_ctx->digits[1]), + (const void *) (&nc_ctx->digits[0]), + (size_t) (sizeof(char) * (size_t) nc_ctx->count)); + nc_ctx->digits[0] = 1; /* don't increase 'count' */ + nc_ctx->k++; /* position of highest digit changed */ + nc_ctx->count++; /* number of digits changed */ + ret = 1; + break; + } + + DUK_DDD(DUK_DDDPRINT("fixed-format rounding carry: B=%ld, roundup_limit=%ld, p=%p, digits=%p", + (long) nc_ctx->B, (long) roundup_limit, (void *) p, (void *) nc_ctx->digits)); + p--; + t = *p; + DUK_DDD(DUK_DDDPRINT("digit before carry: %ld", (long) t)); + if (++t < nc_ctx->B) { + DUK_DDD(DUK_DDDPRINT("rounding carry terminated")); + *p = (duk_uint8_t) t; + break; + } + + DUK_DDD(DUK_DDDPRINT("wraps, carry to next digit")); + } + } + + return ret; +} + +#define DUK__NO_EXP (65536) /* arbitrary marker, outside valid exp range */ + +DUK_LOCAL void duk__dragon4_convert_and_push(duk__numconv_stringify_ctx *nc_ctx, + duk_hthread *thr, + duk_small_int_t radix, + duk_small_int_t digits, + duk_small_uint_t flags, + duk_small_int_t neg) { + duk_small_int_t k; + duk_small_int_t pos, pos_end; + duk_small_int_t expt; + duk_small_int_t dig; + duk_uint8_t *q; + duk_uint8_t *buf; + + /* + * The string conversion here incorporates all the necessary ECMAScript + * semantics without attempting to be generic. nc_ctx->digits contains + * nc_ctx->count digits (>= 1), with the topmost digit's 'position' + * indicated by nc_ctx->k as follows: + * + * digits="123" count=3 k=0 --> 0.123 + * digits="123" count=3 k=1 --> 1.23 + * digits="123" count=3 k=5 --> 12300 + * digits="123" count=3 k=-1 --> 0.0123 + * + * Note that the identifier names used for format selection are different + * in Burger-Dybvig paper and ECMAScript specification (quite confusingly + * so, because e.g. 'k' has a totally different meaning in each). See + * documentation for discussion. + * + * ECMAScript doesn't specify any specific behavior for format selection + * (e.g. when to use exponent notation) for non-base-10 numbers. + * + * The bigint space in the context is reused for string output, as there + * is more than enough space for that (>1kB at the moment), and we avoid + * allocating even more stack. + */ + + DUK_ASSERT(DUK__NUMCONV_CTX_BIGINTS_SIZE >= DUK__MAX_FORMATTED_LENGTH); + DUK_ASSERT(nc_ctx->count >= 1); + + k = nc_ctx->k; + buf = (duk_uint8_t *) &nc_ctx->f; /* XXX: union would be more correct */ + q = buf; + + /* Exponent handling: if exponent format is used, record exponent value and + * fake k such that one leading digit is generated (e.g. digits=123 -> "1.23"). + * + * toFixed() prevents exponent use; otherwise apply a set of criteria to + * match the other API calls (toString(), toPrecision, etc). + */ + + expt = DUK__NO_EXP; + if (!nc_ctx->abs_pos /* toFixed() */) { + if ((flags & DUK_N2S_FLAG_FORCE_EXP) || /* exponential notation forced */ + ((flags & DUK_N2S_FLAG_NO_ZERO_PAD) && /* fixed precision and zero padding would be required */ + (k - digits >= 1)) || /* (e.g. k=3, digits=2 -> "12X") */ + ((k > 21 || k <= -6) && (radix == 10))) { /* toString() conditions */ + DUK_DDD(DUK_DDDPRINT("use exponential notation: k=%ld -> expt=%ld", + (long) k, (long) (k - 1))); + expt = k - 1; /* e.g. 12.3 -> digits="123" k=2 -> 1.23e1 */ + k = 1; /* generate mantissa with a single leading whole number digit */ + } + } + + if (neg) { + *q++ = '-'; + } + + /* Start position (inclusive) and end position (exclusive) */ + pos = (k >= 1 ? k : 1); + if (nc_ctx->is_fixed) { + if (nc_ctx->abs_pos) { + /* toFixed() */ + pos_end = -digits; + } else { + pos_end = k - digits; + } + } else { + pos_end = k - nc_ctx->count; + } + if (pos_end > 0) { + pos_end = 0; + } + + DUK_DDD(DUK_DDDPRINT("expt=%ld, k=%ld, count=%ld, pos=%ld, pos_end=%ld, is_fixed=%ld, " + "digits=%ld, abs_pos=%ld", + (long) expt, (long) k, (long) nc_ctx->count, (long) pos, (long) pos_end, + (long) nc_ctx->is_fixed, (long) digits, (long) nc_ctx->abs_pos)); + + /* Digit generation */ + while (pos > pos_end) { + DUK_DDD(DUK_DDDPRINT("digit generation: pos=%ld, pos_end=%ld", + (long) pos, (long) pos_end)); + if (pos == 0) { + *q++ = (duk_uint8_t) '.'; + } + if (pos > k) { + *q++ = (duk_uint8_t) '0'; + } else if (pos <= k - nc_ctx->count) { + *q++ = (duk_uint8_t) '0'; + } else { + dig = nc_ctx->digits[k - pos]; + DUK_ASSERT(dig >= 0 && dig < nc_ctx->B); + *q++ = (duk_uint8_t) DUK__DIGITCHAR(dig); + } + + pos--; + } + DUK_ASSERT(pos <= 1); + + /* Exponent */ + if (expt != DUK__NO_EXP) { + /* + * Exponent notation for non-base-10 numbers isn't specified in ECMAScript + * specification, as it never explicitly turns up: non-decimal numbers can + * only be formatted with Number.prototype.toString([radix]) and for that, + * behavior is not explicitly specified. + * + * Logical choices include formatting the exponent as decimal (e.g. binary + * 100000 as 1e+5) or in current radix (e.g. binary 100000 as 1e+101). + * The Dragon4 algorithm (in the original paper) prints the exponent value + * in the target radix B. However, for radix values 15 and above, the + * exponent separator 'e' is no longer easily parseable. Consider, for + * instance, the number "1.faecee+1c". + */ + + duk_size_t len; + char expt_sign; + + *q++ = 'e'; + if (expt >= 0) { + expt_sign = '+'; + } else { + expt_sign = '-'; + expt = -expt; + } + *q++ = (duk_uint8_t) expt_sign; + len = duk__dragon4_format_uint32(q, (duk_uint32_t) expt, radix); + q += len; + } + + duk_push_lstring(thr, (const char *) buf, (size_t) (q - buf)); +} + +/* + * Conversion helpers + */ + +DUK_LOCAL void duk__dragon4_double_to_ctx(duk__numconv_stringify_ctx *nc_ctx, duk_double_t x) { + duk_double_union u; + duk_uint32_t tmp; + duk_small_int_t expt; + + /* + * seeeeeee eeeeffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff + * A B C D E F G H + * + * s sign bit + * eee... exponent field + * fff... fraction + * + * ieee value = 1.ffff... * 2^(e - 1023) (normal) + * = 0.ffff... * 2^(-1022) (denormal) + * + * algorithm v = f * b^e + */ + + DUK_DBLUNION_SET_DOUBLE(&u, x); + + nc_ctx->f.n = 2; + + tmp = DUK_DBLUNION_GET_LOW32(&u); + nc_ctx->f.v[0] = tmp; + tmp = DUK_DBLUNION_GET_HIGH32(&u); + nc_ctx->f.v[1] = tmp & 0x000fffffUL; + expt = (duk_small_int_t) ((tmp >> 20) & 0x07ffUL); + + if (expt == 0) { + /* denormal */ + expt = DUK__IEEE_DOUBLE_EXP_MIN - 52; + duk__bi_normalize(&nc_ctx->f); + } else { + /* normal: implicit leading 1-bit */ + nc_ctx->f.v[1] |= 0x00100000UL; + expt = expt - DUK__IEEE_DOUBLE_EXP_BIAS - 52; + DUK_ASSERT(duk__bi_is_valid(&nc_ctx->f)); /* true, because v[1] has at least one bit set */ + } + + DUK_ASSERT(duk__bi_is_valid(&nc_ctx->f)); + + nc_ctx->e = expt; +} + +DUK_LOCAL void duk__dragon4_ctx_to_double(duk__numconv_stringify_ctx *nc_ctx, duk_double_t *x) { + duk_double_union u; + duk_small_int_t expt; + duk_small_int_t i; + duk_small_int_t bitstart; + duk_small_int_t bitround; + duk_small_int_t bitidx; + duk_small_int_t skip_round; + duk_uint32_t t, v; + + DUK_ASSERT(nc_ctx->count == 53 + 1); + + /* Sometimes this assert is not true right now; it will be true after + * rounding. See: test-bug-numconv-mantissa-assert.js. + */ + DUK_ASSERT_DISABLE(nc_ctx->digits[0] == 1); /* zero handled by caller */ + + /* Should not be required because the code below always sets both high + * and low parts, but at least gcc-4.4.5 fails to deduce this correctly + * (perhaps because the low part is set (seemingly) conditionally in a + * loop), so this is here to avoid the bogus warning. + */ + duk_memzero((void *) &u, sizeof(u)); + + /* + * Figure out how generated digits match up with the mantissa, + * and then perform rounding. If mantissa overflows, need to + * recompute the exponent (it is bumped and may overflow to + * infinity). + * + * For normal numbers the leading '1' is hidden and ignored, + * and the last bit is used for rounding: + * + * rounding pt + * <--------52------->| + * 1 x x x x ... x x x x|y ==> x x x x ... x x x x + * + * For denormals, the leading '1' is included in the number, + * and the rounding point is different: + * + * rounding pt + * <--52 or less--->| + * 1 x x x x ... x x|x x y ==> 0 0 ... 1 x x ... x x + * + * The largest denormals will have a mantissa beginning with + * a '1' (the explicit leading bit); smaller denormals will + * have leading zero bits. + * + * If the exponent would become too high, the result becomes + * Infinity. If the exponent is so small that the entire + * mantissa becomes zero, the result becomes zero. + * + * Note: the Dragon4 'k' is off-by-one with respect to the IEEE + * exponent. For instance, k==0 indicates that the leading '1' + * digit is at the first binary fraction position (0.1xxx...); + * the corresponding IEEE exponent would be -1. + */ + + skip_round = 0; + + recheck_exp: + + expt = nc_ctx->k - 1; /* IEEE exp without bias */ + if (expt > 1023) { + /* Infinity */ + bitstart = -255; /* needed for inf: causes mantissa to become zero, + * and rounding to be skipped. + */ + expt = 2047; + } else if (expt >= -1022) { + /* normal */ + bitstart = 1; /* skip leading digit */ + expt += DUK__IEEE_DOUBLE_EXP_BIAS; + DUK_ASSERT(expt >= 1 && expt <= 2046); + } else { + /* denormal or zero */ + bitstart = 1023 + expt; /* expt==-1023 -> bitstart=0 (leading 1); + * expt==-1024 -> bitstart=-1 (one left of leading 1), etc + */ + expt = 0; + } + bitround = bitstart + 52; + + DUK_DDD(DUK_DDDPRINT("ieee expt=%ld, bitstart=%ld, bitround=%ld", + (long) expt, (long) bitstart, (long) bitround)); + + if (!skip_round) { + if (duk__dragon4_fixed_format_round(nc_ctx, bitround)) { + /* Corner case: see test-numconv-parse-mant-carry.js. We could + * just bump the exponent and update bitstart, but it's more robust + * to recompute (but avoid rounding twice). + */ + DUK_DDD(DUK_DDDPRINT("rounding caused exponent to be bumped, recheck exponent")); + skip_round = 1; + goto recheck_exp; + } + } + + /* + * Create mantissa + */ + + t = 0; + for (i = 0; i < 52; i++) { + bitidx = bitstart + 52 - 1 - i; + if (bitidx >= nc_ctx->count) { + v = 0; + } else if (bitidx < 0) { + v = 0; + } else { + v = nc_ctx->digits[bitidx]; + } + DUK_ASSERT(v == 0 || v == 1); + t += v << (i % 32); + if (i == 31) { + /* low 32 bits is complete */ + DUK_DBLUNION_SET_LOW32(&u, t); + t = 0; + } + } + /* t has high mantissa */ + + DUK_DDD(DUK_DDDPRINT("mantissa is complete: %08lx %08lx", + (unsigned long) t, + (unsigned long) DUK_DBLUNION_GET_LOW32(&u))); + + DUK_ASSERT(expt >= 0 && expt <= 0x7ffL); + t += ((duk_uint32_t) expt) << 20; +#if 0 /* caller handles sign change */ + if (negative) { + t |= 0x80000000U; + } +#endif + DUK_DBLUNION_SET_HIGH32(&u, t); + + DUK_DDD(DUK_DDDPRINT("number is complete: %08lx %08lx", + (unsigned long) DUK_DBLUNION_GET_HIGH32(&u), + (unsigned long) DUK_DBLUNION_GET_LOW32(&u))); + + *x = DUK_DBLUNION_GET_DOUBLE(&u); +} + +/* + * Exposed number-to-string API + * + * Input: [ number ] + * Output: [ string ] + */ + +DUK_LOCAL DUK_NOINLINE void duk__numconv_stringify_raw(duk_hthread *thr, duk_small_int_t radix, duk_small_int_t digits, duk_small_uint_t flags) { + duk_double_t x; + duk_small_int_t c; + duk_small_int_t neg; + duk_uint32_t uval; + duk__numconv_stringify_ctx nc_ctx_alloc; /* large context; around 2kB now */ + duk__numconv_stringify_ctx *nc_ctx = &nc_ctx_alloc; + + x = (duk_double_t) duk_require_number(thr, -1); + duk_pop(thr); + + /* + * Handle special cases (NaN, infinity, zero). + */ + + c = (duk_small_int_t) DUK_FPCLASSIFY(x); + if (DUK_SIGNBIT((double) x)) { + x = -x; + neg = 1; + } else { + neg = 0; + } + + /* NaN sign bit is platform specific with unpacked, un-normalized NaNs */ + DUK_ASSERT(c == DUK_FP_NAN || DUK_SIGNBIT((double) x) == 0); + + if (c == DUK_FP_NAN) { + duk_push_hstring_stridx(thr, DUK_STRIDX_NAN); + return; + } else if (c == DUK_FP_INFINITE) { + if (neg) { + /* -Infinity */ + duk_push_hstring_stridx(thr, DUK_STRIDX_MINUS_INFINITY); + } else { + /* Infinity */ + duk_push_hstring_stridx(thr, DUK_STRIDX_INFINITY); + } + return; + } else if (c == DUK_FP_ZERO) { + /* We can't shortcut zero here if it goes through special formatting + * (such as forced exponential notation). + */ + ; + } + + /* + * Handle integers in 32-bit range (that is, [-(2**32-1),2**32-1]) + * specially, as they're very likely for embedded programs. This + * is now done for all radix values. We must be careful not to use + * the fast path when special formatting (e.g. forced exponential) + * is in force. + * + * XXX: could save space by supporting radix 10 only and using + * sprintf "%lu" for the fast path and for exponent formatting. + */ + + uval = duk_double_to_uint32_t(x); + if (duk_double_equals((double) uval, x) && /* integer number in range */ + flags == 0) { /* no special formatting */ + /* use bigint area as a temp */ + duk_uint8_t *buf = (duk_uint8_t *) (&nc_ctx->f); + duk_uint8_t *p = buf; + + DUK_ASSERT(DUK__NUMCONV_CTX_BIGINTS_SIZE >= 32 + 1); /* max size: radix=2 + sign */ + if (neg && uval != 0) { + /* no negative sign for zero */ + *p++ = (duk_uint8_t) '-'; + } + p += duk__dragon4_format_uint32(p, uval, radix); + duk_push_lstring(thr, (const char *) buf, (duk_size_t) (p - buf)); + return; + } + + /* + * Dragon4 setup. + * + * Convert double from IEEE representation for conversion; + * normal finite values have an implicit leading 1-bit. The + * slow path algorithm doesn't handle zero, so zero is special + * cased here but still creates a valid nc_ctx, and goes + * through normal formatting in case special formatting has + * been requested (e.g. forced exponential format: 0 -> "0e+0"). + */ + + /* Would be nice to bulk clear the allocation, but the context + * is 1-2 kilobytes and nothing should rely on it being zeroed. + */ +#if 0 + duk_memzero((void *) nc_ctx, sizeof(*nc_ctx)); /* slow init, do only for slow path cases */ +#endif + + nc_ctx->is_s2n = 0; + nc_ctx->b = 2; + nc_ctx->B = radix; + nc_ctx->abs_pos = 0; + if (flags & DUK_N2S_FLAG_FIXED_FORMAT) { + nc_ctx->is_fixed = 1; + if (flags & DUK_N2S_FLAG_FRACTION_DIGITS) { + /* absolute req_digits; e.g. digits = 1 -> last digit is 0, + * but add an extra digit for rounding. + */ + nc_ctx->abs_pos = 1; + nc_ctx->req_digits = (-digits + 1) - 1; + } else { + nc_ctx->req_digits = digits + 1; + } + } else { + nc_ctx->is_fixed = 0; + nc_ctx->req_digits = 0; + } + + if (c == DUK_FP_ZERO) { + /* Zero special case: fake requested number of zero digits; ensure + * no sign bit is printed. Relative and absolute fixed format + * require separate handling. + */ + duk_small_int_t count; + if (nc_ctx->is_fixed) { + if (nc_ctx->abs_pos) { + count = digits + 2; /* lead zero + 'digits' fractions + 1 for rounding */ + } else { + count = digits + 1; /* + 1 for rounding */ + } + } else { + count = 1; + } + DUK_DDD(DUK_DDDPRINT("count=%ld", (long) count)); + DUK_ASSERT(count >= 1); + duk_memzero((void *) nc_ctx->digits, (size_t) count); + nc_ctx->count = count; + nc_ctx->k = 1; /* 0.000... */ + neg = 0; + goto zero_skip; + } + + duk__dragon4_double_to_ctx(nc_ctx, x); /* -> sets 'f' and 'e' */ + DUK__BI_PRINT("f", &nc_ctx->f); + DUK_DDD(DUK_DDDPRINT("e=%ld", (long) nc_ctx->e)); + + /* + * Dragon4 slow path digit generation. + */ + + duk__dragon4_prepare(nc_ctx); /* setup many variables in nc_ctx */ + + DUK_DDD(DUK_DDDPRINT("after prepare:")); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("mp", &nc_ctx->mp); + DUK__BI_PRINT("mm", &nc_ctx->mm); + + duk__dragon4_scale(nc_ctx); + + DUK_DDD(DUK_DDDPRINT("after scale; k=%ld", (long) nc_ctx->k)); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("mp", &nc_ctx->mp); + DUK__BI_PRINT("mm", &nc_ctx->mm); + + duk__dragon4_generate(nc_ctx); + + /* + * Convert and push final string. + */ + + zero_skip: + + if (flags & DUK_N2S_FLAG_FIXED_FORMAT) { + /* Perform fixed-format rounding. */ + duk_small_int_t roundpos; + if (flags & DUK_N2S_FLAG_FRACTION_DIGITS) { + /* 'roundpos' is relative to nc_ctx->k and increases to the right + * (opposite of how 'k' changes). + */ + roundpos = -digits; /* absolute position for digit considered for rounding */ + roundpos = nc_ctx->k - roundpos; + } else { + roundpos = digits; + } + DUK_DDD(DUK_DDDPRINT("rounding: k=%ld, count=%ld, digits=%ld, roundpos=%ld", + (long) nc_ctx->k, (long) nc_ctx->count, (long) digits, (long) roundpos)); + (void) duk__dragon4_fixed_format_round(nc_ctx, roundpos); + + /* Note: 'count' is currently not adjusted by rounding (i.e. the + * digits are not "chopped off". That shouldn't matter because + * the digit position (absolute or relative) is passed on to the + * convert-and-push function. + */ + } + + duk__dragon4_convert_and_push(nc_ctx, thr, radix, digits, flags, neg); +} + +DUK_INTERNAL void duk_numconv_stringify(duk_hthread *thr, duk_small_int_t radix, duk_small_int_t digits, duk_small_uint_t flags) { + duk_native_stack_check(thr); + duk__numconv_stringify_raw(thr, radix, digits, flags); +} + +/* + * Exposed string-to-number API + * + * Input: [ string ] + * Output: [ number ] + * + * If number parsing fails, a NaN is pushed as the result. If number parsing + * fails due to an internal error, an InternalError is thrown. + */ + +DUK_LOCAL DUK_NOINLINE void duk__numconv_parse_raw(duk_hthread *thr, duk_small_int_t radix, duk_small_uint_t flags) { + duk__numconv_stringify_ctx nc_ctx_alloc; /* large context; around 2kB now */ + duk__numconv_stringify_ctx *nc_ctx = &nc_ctx_alloc; + duk_double_t res; + duk_hstring *h_str; + duk_int_t expt; + duk_bool_t expt_neg; + duk_small_int_t expt_adj; + duk_small_int_t neg; + duk_small_int_t dig; + duk_small_int_t dig_whole; + duk_small_int_t dig_lzero; + duk_small_int_t dig_frac; + duk_small_int_t dig_expt; + duk_small_int_t dig_prec; + const duk__exp_limits *explim; + const duk_uint8_t *p; + duk_small_int_t ch; + + DUK_DDD(DUK_DDDPRINT("parse number: %!T, radix=%ld, flags=0x%08lx", + (duk_tval *) duk_get_tval(thr, -1), + (long) radix, (unsigned long) flags)); + + DUK_ASSERT(radix >= 2 && radix <= 36); + DUK_ASSERT(radix - 2 < (duk_small_int_t) sizeof(duk__str2num_digits_for_radix)); + + /* + * Preliminaries: trim, sign, Infinity check + * + * We rely on the interned string having a NUL terminator, which will + * cause a parse failure wherever it is encountered. As a result, we + * don't need separate pointer checks. + * + * There is no special parsing for 'NaN' in the specification although + * 'Infinity' (with an optional sign) is allowed in some contexts. + * Some contexts allow plus/minus sign, while others only allow the + * minus sign (like JSON.parse()). + * + * Automatic hex number detection (leading '0x' or '0X') and octal + * number detection (leading '0' followed by at least one octal digit) + * is done here too. + * + * Symbols are not explicitly rejected here (that's up to the caller). + * If a symbol were passed here, it should ultimately safely fail + * parsing due to a syntax error. + */ + + if (flags & DUK_S2N_FLAG_TRIM_WHITE) { + /* Leading / trailing whitespace is sometimes accepted and + * sometimes not. After white space trimming, all valid input + * characters are pure ASCII. + */ + duk_trim(thr, -1); + } + h_str = duk_require_hstring(thr, -1); + DUK_ASSERT(h_str != NULL); + p = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_str); + + neg = 0; + ch = *p; + if (ch == (duk_small_int_t) '+') { + if ((flags & DUK_S2N_FLAG_ALLOW_PLUS) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: leading plus sign not allowed")); + goto parse_fail; + } + p++; + } else if (ch == (duk_small_int_t) '-') { + if ((flags & DUK_S2N_FLAG_ALLOW_MINUS) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: leading minus sign not allowed")); + goto parse_fail; + } + p++; + neg = 1; + } + + if ((flags & DUK_S2N_FLAG_ALLOW_INF) && DUK_STRNCMP((const char *) p, "Infinity", 8) == 0) { + /* Don't check for Infinity unless the context allows it. + * 'Infinity' is a valid integer literal in e.g. base-36: + * + * parseInt('Infinity', 36) + * 1461559270678 + */ + + if ((flags & DUK_S2N_FLAG_ALLOW_GARBAGE) == 0 && p[8] != DUK_ASC_NUL) { + DUK_DDD(DUK_DDDPRINT("parse failed: trailing garbage after matching 'Infinity' not allowed")); + goto parse_fail; + } else { + res = DUK_DOUBLE_INFINITY; + goto negcheck_and_ret; + } + } + ch = *p; + if (ch == (duk_small_int_t) '0') { + duk_small_int_t detect_radix = 0; + ch = DUK_LOWERCASE_CHAR_ASCII(p[1]); /* 'x' or 'X' -> 'x' */ + if ((flags & DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT) && ch == DUK_ASC_LC_X) { + DUK_DDD(DUK_DDDPRINT("detected 0x/0X hex prefix, changing radix and preventing fractions and exponent")); + detect_radix = 16; +#if 0 + } else if ((flags & DUK_S2N_FLAG_ALLOW_AUTO_LEGACY_OCT_INT) && + (ch >= (duk_small_int_t) '0' && ch <= (duk_small_int_t) '9')) { + DUK_DDD(DUK_DDDPRINT("detected 0n oct prefix, changing radix and preventing fractions and exponent")); + detect_radix = 8; + + /* NOTE: if this legacy octal case is added back, it has + * different flags and 'p' advance so this needs to be + * reworked. + */ + flags |= DUK_S2N_FLAG_ALLOW_EMPTY_AS_ZERO; /* interpret e.g. '09' as '0', not NaN */ + p += 1; +#endif + } else if ((flags & DUK_S2N_FLAG_ALLOW_AUTO_OCT_INT) && ch == DUK_ASC_LC_O) { + DUK_DDD(DUK_DDDPRINT("detected 0o oct prefix, changing radix and preventing fractions and exponent")); + detect_radix = 8; + } else if ((flags & DUK_S2N_FLAG_ALLOW_AUTO_BIN_INT) && ch == DUK_ASC_LC_B) { + DUK_DDD(DUK_DDDPRINT("detected 0b bin prefix, changing radix and preventing fractions and exponent")); + detect_radix = 2; + } + if (detect_radix > 0) { + radix = detect_radix; + /* Clear empty as zero flag: interpret e.g. '0x' and '0xg' as a NaN (= parse error) */ + flags &= ~(DUK_S2N_FLAG_ALLOW_EXP | DUK_S2N_FLAG_ALLOW_EMPTY_FRAC | + DUK_S2N_FLAG_ALLOW_FRAC | DUK_S2N_FLAG_ALLOW_NAKED_FRAC | + DUK_S2N_FLAG_ALLOW_EMPTY_AS_ZERO); + flags |= DUK_S2N_FLAG_ALLOW_LEADING_ZERO; /* allow e.g. '0x0009' and '0b00010001' */ + p += 2; + } + } + + /* + * Scan number and setup for Dragon4. + * + * The fast path case is detected during setup: an integer which + * can be converted without rounding, no net exponent. The fast + * path could be implemented as a separate scan, but may not really + * be worth it: the multiplications for building 'f' are not + * expensive when 'f' is small. + * + * The significand ('f') must contain enough bits of (apparent) + * accuracy, so that Dragon4 will generate enough binary output digits. + * For decimal numbers, this means generating a 20-digit significand, + * which should yield enough practical accuracy to parse IEEE doubles. + * In fact, the ECMAScript specification explicitly allows an + * implementation to treat digits beyond 20 as zeroes (and even + * to round the 20th digit upwards). For non-decimal numbers, the + * appropriate number of digits has been precomputed for comparable + * accuracy. + * + * Digit counts: + * + * [ dig_lzero ] + * | + * .+-..---[ dig_prec ]----. + * | || | + * 0000123.456789012345678901234567890e+123456 + * | | | | | | + * `--+--' `------[ dig_frac ]-------' `-+--' + * | | + * [ dig_whole ] [ dig_expt ] + * + * dig_frac and dig_expt are -1 if not present + * dig_lzero is only computed for whole number part + * + * Parsing state + * + * Parsing whole part dig_frac < 0 AND dig_expt < 0 + * Parsing fraction part dig_frac >= 0 AND dig_expt < 0 + * Parsing exponent part dig_expt >= 0 (dig_frac may be < 0 or >= 0) + * + * Note: in case we hit an implementation limit (like exponent range), + * we should throw an error, NOT return NaN or Infinity. Even with + * very large exponent (or significand) values the final result may be + * finite, so NaN/Infinity would be incorrect. + */ + + duk__bi_set_small(&nc_ctx->f, 0); + dig_prec = 0; + dig_lzero = 0; + dig_whole = 0; + dig_frac = -1; + dig_expt = -1; + expt = 0; + expt_adj = 0; /* essentially tracks digit position of lowest 'f' digit */ + expt_neg = 0; + for (;;) { + ch = *p++; + + DUK_DDD(DUK_DDDPRINT("parse digits: p=%p, ch='%c' (%ld), expt=%ld, expt_adj=%ld, " + "dig_whole=%ld, dig_frac=%ld, dig_expt=%ld, dig_lzero=%ld, dig_prec=%ld", + (const void *) p, (int) ((ch >= 0x20 && ch <= 0x7e) ? ch : '?'), (long) ch, + (long) expt, (long) expt_adj, (long) dig_whole, (long) dig_frac, + (long) dig_expt, (long) dig_lzero, (long) dig_prec)); + DUK__BI_PRINT("f", &nc_ctx->f); + + /* Most common cases first. */ + if (ch >= (duk_small_int_t) '0' && ch <= (duk_small_int_t) '9') { + dig = (duk_small_int_t) ch - '0' + 0; + } else if (ch == (duk_small_int_t) '.') { + /* A leading digit is not required in some cases, e.g. accept ".123". + * In other cases (JSON.parse()) a leading digit is required. This + * is checked for after the loop. + */ + if (dig_frac >= 0 || dig_expt >= 0) { + if (flags & DUK_S2N_FLAG_ALLOW_GARBAGE) { + DUK_DDD(DUK_DDDPRINT("garbage termination (invalid period)")); + break; + } else { + DUK_DDD(DUK_DDDPRINT("parse failed: period not allowed")); + goto parse_fail; + } + } + + if ((flags & DUK_S2N_FLAG_ALLOW_FRAC) == 0) { + /* Some contexts don't allow fractions at all; this can't be a + * post-check because the state ('f' and expt) would be incorrect. + */ + if (flags & DUK_S2N_FLAG_ALLOW_GARBAGE) { + DUK_DDD(DUK_DDDPRINT("garbage termination (invalid first period)")); + break; + } else { + DUK_DDD(DUK_DDDPRINT("parse failed: fraction part not allowed")); + } + } + + DUK_DDD(DUK_DDDPRINT("start fraction part")); + dig_frac = 0; + continue; + } else if (ch == (duk_small_int_t) 0) { + DUK_DDD(DUK_DDDPRINT("NUL termination")); + break; + } else if ((flags & DUK_S2N_FLAG_ALLOW_EXP) && + dig_expt < 0 && (ch == (duk_small_int_t) 'e' || ch == (duk_small_int_t) 'E')) { + /* Note: we don't parse back exponent notation for anything else + * than radix 10, so this is not an ambiguous check (e.g. hex + * exponent values may have 'e' either as a significand digit + * or as an exponent separator). + * + * If the exponent separator occurs twice, 'e' will be interpreted + * as a digit (= 14) and will be rejected as an invalid decimal + * digit. + */ + + DUK_DDD(DUK_DDDPRINT("start exponent part")); + + /* Exponent without a sign or with a +/- sign is accepted + * by all call sites (even JSON.parse()). + */ + ch = *p; + if (ch == (duk_small_int_t) '-') { + expt_neg = 1; + p++; + } else if (ch == (duk_small_int_t) '+') { + p++; + } + dig_expt = 0; + continue; + } else if (ch >= (duk_small_int_t) 'a' && ch <= (duk_small_int_t) 'z') { + dig = (duk_small_int_t) (ch - (duk_small_int_t) 'a' + 0x0a); + } else if (ch >= (duk_small_int_t) 'A' && ch <= (duk_small_int_t) 'Z') { + dig = (duk_small_int_t) (ch - (duk_small_int_t) 'A' + 0x0a); + } else { + dig = 255; /* triggers garbage digit check below */ + } + DUK_ASSERT((dig >= 0 && dig <= 35) || dig == 255); + + if (dig >= radix) { + if (flags & DUK_S2N_FLAG_ALLOW_GARBAGE) { + DUK_DDD(DUK_DDDPRINT("garbage termination")); + break; + } else { + DUK_DDD(DUK_DDDPRINT("parse failed: trailing garbage or invalid digit")); + goto parse_fail; + } + } + + if (dig_expt < 0) { + /* whole or fraction digit */ + + if (dig_prec < duk__str2num_digits_for_radix[radix - 2]) { + /* significant from precision perspective */ + + duk_small_int_t f_zero = duk__bi_is_zero(&nc_ctx->f); + if (f_zero && dig == 0) { + /* Leading zero is not counted towards precision digits; not + * in the integer part, nor in the fraction part. + */ + if (dig_frac < 0) { + dig_lzero++; + } + } else { + /* XXX: join these ops (multiply-accumulate), but only if + * code footprint decreases. + */ + duk__bi_mul_small(&nc_ctx->t1, &nc_ctx->f, (duk_uint32_t) radix); + duk__bi_add_small(&nc_ctx->f, &nc_ctx->t1, (duk_uint32_t) dig); + dig_prec++; + } + } else { + /* Ignore digits beyond a radix-specific limit, but note them + * in expt_adj. + */ + expt_adj++; + } + + if (dig_frac >= 0) { + dig_frac++; + expt_adj--; + } else { + dig_whole++; + } + } else { + /* exponent digit */ + + DUK_ASSERT(radix == 10); + expt = expt * radix + dig; + if (expt > DUK_S2N_MAX_EXPONENT) { + /* Impose a reasonable exponent limit, so that exp + * doesn't need to get tracked using a bigint. + */ + DUK_DDD(DUK_DDDPRINT("parse failed: exponent too large")); + goto parse_explimit_error; + } + dig_expt++; + } + } + + /* Leading zero. */ + + if (dig_lzero > 0 && dig_whole > 1) { + if ((flags & DUK_S2N_FLAG_ALLOW_LEADING_ZERO) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: leading zeroes not allowed in integer part")); + goto parse_fail; + } + } + + /* Validity checks for various fraction formats ("0.1", ".1", "1.", "."). */ + + if (dig_whole == 0) { + if (dig_frac == 0) { + /* "." is not accepted in any format */ + DUK_DDD(DUK_DDDPRINT("parse failed: plain period without leading or trailing digits")); + goto parse_fail; + } else if (dig_frac > 0) { + /* ".123" */ + if ((flags & DUK_S2N_FLAG_ALLOW_NAKED_FRAC) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: fraction part not allowed without " + "leading integer digit(s)")); + goto parse_fail; + } + } else { + /* Empty ("") is allowed in some formats (e.g. Number(''), as zero, + * but it must not have a leading +/- sign (GH-2019). Note that + * for Number(), h_str is already trimmed so we can check for zero + * length and still get Number(' + ') == NaN. + */ + if ((flags & DUK_S2N_FLAG_ALLOW_EMPTY_AS_ZERO) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: empty string not allowed (as zero)")); + goto parse_fail; + } else if (DUK_HSTRING_GET_BYTELEN(h_str) != 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: no digits, but not empty (had a +/- sign)")); + goto parse_fail; + } + } + } else { + if (dig_frac == 0) { + /* "123." is allowed in some formats */ + if ((flags & DUK_S2N_FLAG_ALLOW_EMPTY_FRAC) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: empty fractions")); + goto parse_fail; + } + } else if (dig_frac > 0) { + /* "123.456" */ + ; + } else { + /* "123" */ + ; + } + } + + /* Exponent without digits (e.g. "1e" or "1e+"). If trailing garbage is + * allowed, ignore exponent part as garbage (= parse as "1", i.e. exp 0). + */ + + if (dig_expt == 0) { + if ((flags & DUK_S2N_FLAG_ALLOW_GARBAGE) == 0) { + DUK_DDD(DUK_DDDPRINT("parse failed: empty exponent")); + goto parse_fail; + } + DUK_ASSERT(expt == 0); + } + + if (expt_neg) { + expt = -expt; + } + DUK_DDD(DUK_DDDPRINT("expt=%ld, expt_adj=%ld, net exponent -> %ld", + (long) expt, (long) expt_adj, (long) (expt + expt_adj))); + expt += expt_adj; + + /* Fast path check. */ + + if (nc_ctx->f.n <= 1 && /* 32-bit value */ + expt == 0 /* no net exponent */) { + /* Fast path is triggered for no exponent and also for balanced exponent + * and fraction parts, e.g. for "1.23e2" == "123". Remember to respect + * zero sign. + */ + + /* XXX: could accept numbers larger than 32 bits, e.g. up to 53 bits? */ + DUK_DDD(DUK_DDDPRINT("fast path number parse")); + if (nc_ctx->f.n == 1) { + res = (double) nc_ctx->f.v[0]; + } else { + res = 0.0; + } + goto negcheck_and_ret; + } + + /* Significand ('f') padding. */ + + while (dig_prec < duk__str2num_digits_for_radix[radix - 2]) { + /* Pad significand with "virtual" zero digits so that Dragon4 will + * have enough (apparent) precision to work with. + */ + DUK_DDD(DUK_DDDPRINT("dig_prec=%ld, pad significand with zero", (long) dig_prec)); + duk__bi_mul_small_copy(&nc_ctx->f, (duk_uint32_t) radix, &nc_ctx->t1); + DUK__BI_PRINT("f", &nc_ctx->f); + expt--; + dig_prec++; + } + + DUK_DDD(DUK_DDDPRINT("final exponent: %ld", (long) expt)); + + /* Detect zero special case. */ + + if (nc_ctx->f.n == 0) { + /* This may happen even after the fast path check, if exponent is + * not balanced (e.g. "0e1"). Remember to respect zero sign. + */ + DUK_DDD(DUK_DDDPRINT("significand is zero")); + res = 0.0; + goto negcheck_and_ret; + } + + + /* Quick reject of too large or too small exponents. This check + * would be incorrect for zero (e.g. "0e1000" is zero, not Infinity) + * so zero check must be above. + */ + + explim = &duk__str2num_exp_limits[radix - 2]; + if (expt > explim->upper) { + DUK_DDD(DUK_DDDPRINT("exponent too large -> infinite")); + res = (duk_double_t) DUK_DOUBLE_INFINITY; + goto negcheck_and_ret; + } else if (expt < explim->lower) { + DUK_DDD(DUK_DDDPRINT("exponent too small -> zero")); + res = (duk_double_t) 0.0; + goto negcheck_and_ret; + } + + nc_ctx->is_s2n = 1; + nc_ctx->e = expt; + nc_ctx->b = radix; + nc_ctx->B = 2; + nc_ctx->is_fixed = 1; + nc_ctx->abs_pos = 0; + nc_ctx->req_digits = 53 + 1; + + DUK__BI_PRINT("f", &nc_ctx->f); + DUK_DDD(DUK_DDDPRINT("e=%ld", (long) nc_ctx->e)); + + /* + * Dragon4 slow path (binary) digit generation. + * An extra digit is generated for rounding. + */ + + duk__dragon4_prepare(nc_ctx); /* setup many variables in nc_ctx */ + + DUK_DDD(DUK_DDDPRINT("after prepare:")); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("mp", &nc_ctx->mp); + DUK__BI_PRINT("mm", &nc_ctx->mm); + + duk__dragon4_scale(nc_ctx); + + DUK_DDD(DUK_DDDPRINT("after scale; k=%ld", (long) nc_ctx->k)); + DUK__BI_PRINT("r", &nc_ctx->r); + DUK__BI_PRINT("s", &nc_ctx->s); + DUK__BI_PRINT("mp", &nc_ctx->mp); + DUK__BI_PRINT("mm", &nc_ctx->mm); + + duk__dragon4_generate(nc_ctx); + + DUK_ASSERT(nc_ctx->count == 53 + 1); + + /* + * Convert binary digits into an IEEE double. Need to handle + * denormals and rounding correctly. + * + * Some call sites currently assume the result is always a + * non-fastint double. If this is changed, check all call + * sites. + */ + + duk__dragon4_ctx_to_double(nc_ctx, &res); + goto negcheck_and_ret; + + negcheck_and_ret: + if (neg) { + res = -res; + } + duk_pop(thr); + duk_push_number(thr, (double) res); + DUK_DDD(DUK_DDDPRINT("result: %!T", (duk_tval *) duk_get_tval(thr, -1))); + return; + + parse_fail: + DUK_DDD(DUK_DDDPRINT("parse failed")); + duk_pop(thr); + duk_push_nan(thr); + return; + + parse_explimit_error: + DUK_DDD(DUK_DDDPRINT("parse failed, internal error, can't return a value")); + DUK_ERROR_RANGE(thr, "exponent too large"); + DUK_WO_NORETURN(return;); +} + +DUK_INTERNAL void duk_numconv_parse(duk_hthread *thr, duk_small_int_t radix, duk_small_uint_t flags) { + duk_native_stack_check(thr); + duk__numconv_parse_raw(thr, radix, flags); +} + +/* automatic undefs */ +#undef DUK__BI_MAX_PARTS +#undef DUK__BI_PRINT +#undef DUK__DIGITCHAR +#undef DUK__DRAGON4_OUTPUT_PREINC +#undef DUK__IEEE_DOUBLE_EXP_BIAS +#undef DUK__IEEE_DOUBLE_EXP_MIN +#undef DUK__MAX_FORMATTED_LENGTH +#undef DUK__MAX_OUTPUT_DIGITS +#undef DUK__NO_EXP +#undef DUK__NUMCONV_CTX_BIGINTS_SIZE +#undef DUK__NUMCONV_CTX_NUM_BIGINTS +#line 1 "duk_regexp_compiler.c" +/* + * Regexp compilation. + * + * See doc/regexp.rst for a discussion of the compilation approach and + * current limitations. + * + * Regexp bytecode assumes jumps can be expressed with signed 32-bit + * integers. Consequently the bytecode size must not exceed 0x7fffffffL. + * The implementation casts duk_size_t (buffer size) to duk_(u)int32_t + * in many places. Although this could be changed, the bytecode format + * limit would still prevent regexps exceeding the signed 32-bit limit + * from working. + * + * XXX: The implementation does not prevent bytecode from exceeding the + * maximum supported size. This could be done by limiting the maximum + * input string size (assuming an upper bound can be computed for number + * of bytecode bytes emitted per input byte) or checking buffer maximum + * size when emitting bytecode (slower). + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_REGEXP_SUPPORT) + +/* + * Helper macros + */ + +#define DUK__RE_INITIAL_BUFSIZE 64 + +#define DUK__RE_BUFLEN(re_ctx) \ + DUK_BW_GET_SIZE(re_ctx->thr, &re_ctx->bw) + +/* + * Disjunction struct: result of parsing a disjunction + */ + +typedef struct { + /* Number of characters that the atom matches (e.g. 3 for 'abc'), + * -1 if atom is complex and number of matched characters either + * varies or is not known. + */ + duk_int32_t charlen; + +#if 0 + /* These are not needed to implement quantifier capture handling, + * but might be needed at some point. + */ + + /* re_ctx->captures at start and end of atom parsing. + * Since 'captures' indicates highest capture number emitted + * so far in a DUK_REOP_SAVE, the captures numbers saved by + * the atom are: ]start_captures,end_captures]. + */ + duk_uint32_t start_captures; + duk_uint32_t end_captures; +#endif +} duk__re_disjunction_info; + +/* + * Encoding helpers + * + * Some of the typing is bytecode based, e.g. slice sizes are unsigned 32-bit + * even though the buffer operations will use duk_size_t. + */ + +/* XXX: the insert helpers should ensure that the bytecode result is not + * larger than expected (or at least assert for it). Many things in the + * bytecode, like skip offsets, won't work correctly if the bytecode is + * larger than say 2G. + */ + +DUK_LOCAL duk_uint32_t duk__encode_i32(duk_int32_t x) { + if (x < 0) { + return ((duk_uint32_t) (-x)) * 2 + 1; + } else { + return ((duk_uint32_t) x) * 2; + } +} + +/* XXX: return type should probably be duk_size_t, or explicit checks are needed for + * maximum size. + */ +DUK_LOCAL duk_uint32_t duk__insert_u32(duk_re_compiler_ctx *re_ctx, duk_uint32_t offset, duk_uint32_t x) { + duk_uint8_t buf[DUK_UNICODE_MAX_XUTF8_LENGTH]; + duk_small_int_t len; + + len = duk_unicode_encode_xutf8((duk_ucodepoint_t) x, buf); + DUK_ASSERT(len >= 0); + DUK_BW_INSERT_ENSURE_BYTES(re_ctx->thr, &re_ctx->bw, offset, buf, (duk_size_t) len); + return (duk_uint32_t) len; +} + +DUK_LOCAL void duk__append_u32(duk_re_compiler_ctx *re_ctx, duk_uint32_t x) { + DUK_BW_WRITE_ENSURE_XUTF8(re_ctx->thr, &re_ctx->bw, x); +} + +DUK_LOCAL void duk__append_7bit(duk_re_compiler_ctx *re_ctx, duk_uint32_t x) { +#if defined(DUK_USE_PREFER_SIZE) + duk__append_u32(re_ctx, x); +#else + DUK_ASSERT(x <= 0x7fU); + DUK_BW_WRITE_ENSURE_U8(re_ctx->thr, &re_ctx->bw, (duk_uint8_t) x); +#endif +} + +#if 0 +DUK_LOCAL void duk__append_2bytes(duk_re_compiler_ctx *re_ctx, duk_uint8_t x, duk_uint8_t y) { + DUK_BW_WRITE_ENSURE_U8_2(re_ctx->thr, &re_ctx->bw, x, y); +} +#endif + +DUK_LOCAL duk_uint32_t duk__insert_i32(duk_re_compiler_ctx *re_ctx, duk_uint32_t offset, duk_int32_t x) { + return duk__insert_u32(re_ctx, offset, duk__encode_i32(x)); +} + +DUK_LOCAL void duk__append_reop(duk_re_compiler_ctx *re_ctx, duk_uint32_t reop) { + DUK_ASSERT(reop <= 0x7fU); + (void) duk__append_7bit(re_ctx, reop); +} + +#if 0 /* unused */ +DUK_LOCAL void duk__append_i32(duk_re_compiler_ctx *re_ctx, duk_int32_t x) { + duk__append_u32(re_ctx, duk__encode_i32(x)); +} +#endif + +/* special helper for emitting u16 lists (used for character ranges for built-in char classes) */ +DUK_LOCAL void duk__append_u16_list(duk_re_compiler_ctx *re_ctx, const duk_uint16_t *values, duk_uint32_t count) { + /* Call sites don't need the result length so it's not accumulated. */ + while (count-- > 0) { + duk__append_u32(re_ctx, (duk_uint32_t) (*values++)); + } +} + +DUK_LOCAL void duk__insert_slice(duk_re_compiler_ctx *re_ctx, duk_uint32_t offset, duk_uint32_t data_offset, duk_uint32_t data_length) { + DUK_BW_INSERT_ENSURE_SLICE(re_ctx->thr, &re_ctx->bw, offset, data_offset, data_length); +} + +DUK_LOCAL void duk__append_slice(duk_re_compiler_ctx *re_ctx, duk_uint32_t data_offset, duk_uint32_t data_length) { + DUK_BW_WRITE_ENSURE_SLICE(re_ctx->thr, &re_ctx->bw, data_offset, data_length); +} + +DUK_LOCAL void duk__remove_slice(duk_re_compiler_ctx *re_ctx, duk_uint32_t data_offset, duk_uint32_t data_length) { + DUK_BW_REMOVE_ENSURE_SLICE(re_ctx->thr, &re_ctx->bw, data_offset, data_length); +} + +/* + * Insert a jump offset at 'offset' to complete an instruction + * (the jump offset is always the last component of an instruction). + * The 'skip' argument must be computed relative to 'offset', + * -without- taking into account the skip field being inserted. + * + * ... A B C ins X Y Z ... (ins may be a JUMP, SPLIT1/SPLIT2, etc) + * => ... A B C ins SKIP X Y Z + * + * Computing the final (adjusted) skip value, which is relative to the + * first byte of the next instruction, is a bit tricky because of the + * variable length UTF-8 encoding. See doc/regexp.rst for discussion. + */ +DUK_LOCAL duk_uint32_t duk__insert_jump_offset(duk_re_compiler_ctx *re_ctx, duk_uint32_t offset, duk_int32_t skip) { +#if 0 + /* Iterative solution. */ + if (skip < 0) { + duk_small_int_t len; + /* two encoding attempts suffices */ + len = duk_unicode_get_xutf8_length((duk_codepoint_t) duk__encode_i32(skip)); + len = duk_unicode_get_xutf8_length((duk_codepoint_t) duk__encode_i32(skip - (duk_int32_t) len)); + DUK_ASSERT(duk_unicode_get_xutf8_length(duk__encode_i32(skip - (duk_int32_t) len)) == len); /* no change */ + skip -= (duk_int32_t) len; + } +#endif + +#if defined(DUK_USE_PREFER_SIZE) + /* Closed form solution, this produces smallest code. + * See re_neg_jump_offset (closed2). + */ + if (skip < 0) { + skip--; + if (skip < -0x3fL) { + skip--; + } + if (skip < -0x3ffL) { + skip--; + } + if (skip < -0x7fffL) { + skip--; + } + if (skip < -0xfffffL) { + skip--; + } + if (skip < -0x1ffffffL) { + skip--; + } + if (skip < -0x3fffffffL) { + skip--; + } + } +#else /* DUK_USE_PREFER_SIZE */ + /* Closed form solution, this produces fastest code. + * See re_neg_jump_offset (closed1). + */ + if (skip < 0) { + if (skip >= -0x3eL) { + skip -= 1; + } else if (skip >= -0x3fdL) { + skip -= 2; + } else if (skip >= -0x7ffcL) { + skip -= 3; + } else if (skip >= -0xffffbL) { + skip -= 4; + } else if (skip >= -0x1fffffaL) { + skip -= 5; + } else if (skip >= -0x3ffffff9L) { + skip -= 6; + } else { + skip -= 7; + } + } +#endif /* DUK_USE_PREFER_SIZE */ + + return duk__insert_i32(re_ctx, offset, skip); +} + +DUK_LOCAL duk_uint32_t duk__append_jump_offset(duk_re_compiler_ctx *re_ctx, duk_int32_t skip) { + return (duk_uint32_t) duk__insert_jump_offset(re_ctx, (duk_uint32_t) DUK__RE_BUFLEN(re_ctx), skip); +} + +/* + * duk_re_range_callback for generating character class ranges. + * + * When ignoreCase is false, the range is simply emitted as is. We don't, + * for instance, eliminate duplicates or overlapping ranges in a character + * class. + * + * When ignoreCase is true but the 'direct' flag is set, the caller knows + * that the range canonicalizes to itself for case insensitive matching, + * so the range is emitted as is. This is mainly useful for built-in ranges + * like \W. + * + * Otherwise, when ignoreCase is true, the range needs to be normalized + * through canonicalization. Unfortunately a canonicalized version of a + * continuous range is not necessarily continuous (e.g. [x-{] is continuous + * but [X-{] is not). As a result, a single input range may expand to a lot + * of output ranges. The current algorithm creates the canonicalized ranges + * footprint efficiently at the cost of compile time execution time; see + * doc/regexp.rst for discussion, and some more details below. + * + * Note that the ctx->nranges is a context-wide temporary value. This is OK + * because there cannot be multiple character classes being parsed + * simultaneously. + * + * More detail on canonicalization: + * + * Conceptually, a range is canonicalized by scanning the entire range, + * normalizing each codepoint by converting it to uppercase, and generating + * a set of result ranges. + * + * Ideally a minimal set of output ranges would be emitted by merging all + * possible ranges even if they're emitted out of sequence. Because the + * input string is also case normalized during matching, some codepoints + * never occur at runtime; these "don't care" codepoints can be included or + * excluded from ranges when merging/optimizing ranges. + * + * The current algorithm does not do optimal range merging. Rather, output + * codepoints are generated in sequence, and when the output codepoints are + * continuous (CP, CP+1, CP+2, ...), they are merged locally into as large a + * range as possible. A small canonicalization bitmap is used to reduce + * actual codepoint canonicalizations which are quite slow at present. The + * bitmap provides a "codepoint block is continuous with respect to + * canonicalization" for N-codepoint blocks. This allows blocks to be + * skipped quickly. + * + * There are a number of shortcomings and future work here: + * + * - Individual codepoint normalizations are slow because they involve + * walking bit-packed rules without a lookup index. + * + * - The conceptual algorithm needs to canonicalize every codepoint in the + * input range to figure out the output range(s). Even with the small + * canonicalization bitmap the algorithm runs quite slowly for worst case + * inputs. There are many data structure alternatives to improve this. + * + * - While the current algorithm generates maximal output ranges when the + * output codepoints are emitted linearly, output ranges are not sorted or + * merged otherwise. In the worst case a lot of ranges are emitted when + * most of the ranges could be merged. In this process one could take + * advantage of "don't care" codepoints, which are never matched against at + * runtime due to canonicalization of input codepoints before comparison, + * to merge otherwise discontinuous output ranges. + * + * - The runtime data structure is just a linear list of ranges to match + * against. This can be quite slow if there are a lot of output ranges. + * There are various ways to make matching against the ranges faster, + * e.g. sorting the ranges and using a binary search; skip lists; tree + * based representations; full or approximate codepoint bitmaps, etc. + * + * - Only BMP is supported, codepoints above BMP are assumed to canonicalize + * to themselves. For now this is one place where we don't want to + * support chars outside the BMP, because the exhaustive search would be + * massively larger. It would be possible to support non-BMP with a + * different algorithm, or perhaps doing case normalization only at match + * time. + */ + +DUK_LOCAL void duk__regexp_emit_range(duk_re_compiler_ctx *re_ctx, duk_codepoint_t r1, duk_codepoint_t r2) { + DUK_ASSERT(r2 >= r1); + duk__append_u32(re_ctx, (duk_uint32_t) r1); + duk__append_u32(re_ctx, (duk_uint32_t) r2); + re_ctx->nranges++; +} + +#if defined(DUK_USE_REGEXP_CANON_BITMAP) +/* Find next canonicalization discontinuity (conservative estimate) starting + * from 'start', not exceeding 'end'. If continuity is fine up to 'end' + * inclusive, returns end. Minimum possible return value is start. + */ +DUK_LOCAL duk_codepoint_t duk__re_canon_next_discontinuity(duk_codepoint_t start, duk_codepoint_t end) { + duk_uint_t start_blk; + duk_uint_t end_blk; + duk_uint_t blk; + duk_uint_t offset; + duk_uint8_t mask; + + /* Inclusive block range. */ + DUK_ASSERT(start >= 0); + DUK_ASSERT(end >= 0); + DUK_ASSERT(end >= start); + start_blk = (duk_uint_t) (start >> DUK_CANON_BITMAP_BLKSHIFT); + end_blk = (duk_uint_t) (end >> DUK_CANON_BITMAP_BLKSHIFT); + + for (blk = start_blk; blk <= end_blk; blk++) { + offset = blk >> 3; + mask = 1U << (blk & 0x07); + if (offset >= sizeof(duk_unicode_re_canon_bitmap)) { + /* Reached non-BMP range which is assumed continuous. */ + return end; + } + DUK_ASSERT(offset < sizeof(duk_unicode_re_canon_bitmap)); + if ((duk_unicode_re_canon_bitmap[offset] & mask) == 0) { + /* Block is discontinuous, continuity is guaranteed + * only up to end of previous block (+1 for exclusive + * return value => start of current block). Start + * block requires special handling. + */ + if (blk > start_blk) { + return (duk_codepoint_t) (blk << DUK_CANON_BITMAP_BLKSHIFT); + } else { + return start; + } + } + } + DUK_ASSERT(blk == end_blk + 1); /* Reached end block which is continuous. */ + return end; +} +#else /* DUK_USE_REGEXP_CANON_BITMAP */ +DUK_LOCAL duk_codepoint_t duk__re_canon_next_discontinuity(duk_codepoint_t start, duk_codepoint_t end) { + DUK_ASSERT(start >= 0); + DUK_ASSERT(end >= 0); + DUK_ASSERT(end >= start); + if (start >= 0x10000) { + /* Even without the bitmap, treat non-BMP as continuous. */ + return end; + } + return start; +} +#endif /* DUK_USE_REGEXP_CANON_BITMAP */ + +DUK_LOCAL void duk__regexp_generate_ranges(void *userdata, duk_codepoint_t r1, duk_codepoint_t r2, duk_bool_t direct) { + duk_re_compiler_ctx *re_ctx = (duk_re_compiler_ctx *) userdata; + duk_codepoint_t r_start; + duk_codepoint_t r_end; + duk_codepoint_t i; + duk_codepoint_t t; + duk_codepoint_t r_disc; + + DUK_DD(DUK_DDPRINT("duk__regexp_generate_ranges(): re_ctx=%p, range=[%ld,%ld] direct=%ld", + (void *) re_ctx, (long) r1, (long) r2, (long) direct)); + + DUK_ASSERT(r2 >= r1); /* SyntaxError for out of order range. */ + + if (direct || (re_ctx->re_flags & DUK_RE_FLAG_IGNORE_CASE) == 0) { + DUK_DD(DUK_DDPRINT("direct or not case sensitive, emit range: [%ld,%ld]", (long) r1, (long) r2)); + duk__regexp_emit_range(re_ctx, r1, r2); + return; + } + + DUK_DD(DUK_DDPRINT("case sensitive, process range: [%ld,%ld]", (long) r1, (long) r2)); + + r_start = duk_unicode_re_canonicalize_char(re_ctx->thr, r1); + r_end = r_start; + + for (i = r1 + 1; i <= r2;) { + /* Input codepoint space processed up to i-1, and + * current range in r_{start,end} is up-to-date + * (inclusive) and may either break or continue. + */ + r_disc = duk__re_canon_next_discontinuity(i, r2); + DUK_ASSERT(r_disc >= i); + DUK_ASSERT(r_disc <= r2); + + r_end += r_disc - i; /* May be zero. */ + t = duk_unicode_re_canonicalize_char(re_ctx->thr, r_disc); + if (t == r_end + 1) { + /* Not actually a discontinuity, continue range + * to r_disc and recheck. + */ + r_end = t; + } else { + duk__regexp_emit_range(re_ctx, r_start, r_end); + r_start = t; + r_end = t; + } + i = r_disc + 1; /* Guarantees progress. */ + } + duk__regexp_emit_range(re_ctx, r_start, r_end); + +#if 0 /* Exhaustive search, very slow. */ + r_start = duk_unicode_re_canonicalize_char(re_ctx->thr, r1); + r_end = r_start; + for (i = r1 + 1; i <= r2; i++) { + t = duk_unicode_re_canonicalize_char(re_ctx->thr, i); + if (t == r_end + 1) { + r_end = t; + } else { + DUK_DD(DUK_DDPRINT("canonicalized, emit range: [%ld,%ld]", (long) r_start, (long) r_end)); + duk__append_u32(re_ctx, (duk_uint32_t) r_start); + duk__append_u32(re_ctx, (duk_uint32_t) r_end); + re_ctx->nranges++; + r_start = t; + r_end = t; + } + } + DUK_DD(DUK_DDPRINT("canonicalized, emit range: [%ld,%ld]", (long) r_start, (long) r_end)); + duk__append_u32(re_ctx, (duk_uint32_t) r_start); + duk__append_u32(re_ctx, (duk_uint32_t) r_end); + re_ctx->nranges++; +#endif +} + +/* + * Parse regexp Disjunction. Most of regexp compilation happens here. + * + * Handles Disjunction, Alternative, and Term productions directly without + * recursion. The only constructs requiring recursion are positive/negative + * lookaheads, capturing parentheses, and non-capturing parentheses. + * + * The function determines whether the entire disjunction is a 'simple atom' + * (see doc/regexp.rst discussion on 'simple quantifiers') and if so, + * returns the atom character length which is needed by the caller to keep + * track of its own atom character length. A disjunction with more than one + * alternative is never considered a simple atom (although in some cases + * that might be the case). + * + * Return value: simple atom character length or < 0 if not a simple atom. + * Appends the bytecode for the disjunction matcher to the end of the temp + * buffer. + * + * Regexp top level structure is: + * + * Disjunction = Term* + * | Term* | Disjunction + * + * Term = Assertion + * | Atom + * | Atom Quantifier + * + * An empty Term sequence is a valid disjunction alternative (e.g. /|||c||/). + * + * Notes: + * + * * Tracking of the 'simple-ness' of the current atom vs. the entire + * disjunction are separate matters. For instance, the disjunction + * may be complex, but individual atoms may be simple. Furthermore, + * simple quantifiers are used whenever possible, even if the + * disjunction as a whole is complex. + * + * * The estimate of whether an atom is simple is conservative now, + * and it would be possible to expand it. For instance, captures + * cause the disjunction to be marked complex, even though captures + * -can- be handled by simple quantifiers with some minor modifications. + * + * * Disjunction 'tainting' as 'complex' is handled at the end of the + * main for loop collectively for atoms. Assertions, quantifiers, + * and '|' tokens need to taint the result manually if necessary. + * Assertions cannot add to result char length, only atoms (and + * quantifiers) can; currently quantifiers will taint the result + * as complex though. + */ + +DUK_LOCAL const duk_uint16_t * const duk__re_range_lookup1[3] = { + duk_unicode_re_ranges_digit, + duk_unicode_re_ranges_white, + duk_unicode_re_ranges_wordchar +}; +DUK_LOCAL const duk_uint8_t duk__re_range_lookup2[3] = { + sizeof(duk_unicode_re_ranges_digit) / (2 * sizeof(duk_uint16_t)), + sizeof(duk_unicode_re_ranges_white) / (2 * sizeof(duk_uint16_t)), + sizeof(duk_unicode_re_ranges_wordchar) / (2 * sizeof(duk_uint16_t)) +}; + +DUK_LOCAL void duk__append_range_atom_matcher(duk_re_compiler_ctx *re_ctx, duk_small_uint_t re_op, const duk_uint16_t *ranges, duk_small_uint_t count) { +#if 0 + DUK_ASSERT(re_op <= 0x7fUL); + DUK_ASSERT(count <= 0x7fUL); + duk__append_2bytes(re_ctx, (duk_uint8_t) re_op, (duk_uint8_t) count); +#endif + duk__append_reop(re_ctx, re_op); + duk__append_7bit(re_ctx, count); + duk__append_u16_list(re_ctx, ranges, count * 2); +} + +DUK_LOCAL void duk__parse_disjunction(duk_re_compiler_ctx *re_ctx, duk_bool_t expect_eof, duk__re_disjunction_info *out_atom_info) { + duk_int32_t atom_start_offset = -1; /* negative -> no atom matched on previous round */ + duk_int32_t atom_char_length = 0; /* negative -> complex atom */ + duk_uint32_t atom_start_captures = re_ctx->captures; /* value of re_ctx->captures at start of atom */ + duk_int32_t unpatched_disjunction_split = -1; + duk_int32_t unpatched_disjunction_jump = -1; + duk_uint32_t entry_offset = (duk_uint32_t) DUK__RE_BUFLEN(re_ctx); + duk_int32_t res_charlen = 0; /* -1 if disjunction is complex, char length if simple */ + duk__re_disjunction_info tmp_disj; + + DUK_ASSERT(out_atom_info != NULL); + + duk_native_stack_check(re_ctx->thr); + if (re_ctx->recursion_depth >= re_ctx->recursion_limit) { + DUK_ERROR_RANGE(re_ctx->thr, DUK_STR_REGEXP_COMPILER_RECURSION_LIMIT); + DUK_WO_NORETURN(return;); + } + re_ctx->recursion_depth++; + +#if 0 + out_atom_info->start_captures = re_ctx->captures; +#endif + + for (;;) { + /* atom_char_length, atom_start_offset, atom_start_offset reflect the + * atom matched on the previous loop. If a quantifier is encountered + * on this loop, these are needed to handle the quantifier correctly. + * new_atom_char_length etc are for the atom parsed on this round; + * they're written to atom_char_length etc at the end of the round. + */ + duk_int32_t new_atom_char_length; /* char length of the atom parsed in this loop */ + duk_int32_t new_atom_start_offset; /* bytecode start offset of the atom parsed in this loop + * (allows quantifiers to copy the atom bytecode) + */ + duk_uint32_t new_atom_start_captures; /* re_ctx->captures at the start of the atom parsed in this loop */ + + duk_lexer_parse_re_token(&re_ctx->lex, &re_ctx->curr_token); + + DUK_DD(DUK_DDPRINT("re token: %ld (num=%ld, char=%c)", + (long) re_ctx->curr_token.t, + (long) re_ctx->curr_token.num, + (re_ctx->curr_token.num >= 0x20 && re_ctx->curr_token.num <= 0x7e) ? + (int) re_ctx->curr_token.num : (int) '?')); + + /* set by atom case clauses */ + new_atom_start_offset = -1; + new_atom_char_length = -1; + new_atom_start_captures = re_ctx->captures; + + switch (re_ctx->curr_token.t) { + case DUK_RETOK_DISJUNCTION: { + /* + * The handling here is a bit tricky. If a previous '|' has been processed, + * we have a pending split1 and a pending jump (for a previous match). These + * need to be back-patched carefully. See docs for a detailed example. + */ + + /* patch pending jump and split */ + if (unpatched_disjunction_jump >= 0) { + duk_uint32_t offset; + + DUK_ASSERT(unpatched_disjunction_split >= 0); + offset = (duk_uint32_t) unpatched_disjunction_jump; + offset += duk__insert_jump_offset(re_ctx, + offset, + (duk_int32_t) (DUK__RE_BUFLEN(re_ctx) - offset)); + /* offset is now target of the pending split (right after jump) */ + duk__insert_jump_offset(re_ctx, + (duk_uint32_t) unpatched_disjunction_split, + (duk_int32_t) offset - unpatched_disjunction_split); + } + + /* add a new pending split to the beginning of the entire disjunction */ + (void) duk__insert_u32(re_ctx, + entry_offset, + DUK_REOP_SPLIT1); /* prefer direct execution */ + unpatched_disjunction_split = (duk_int32_t) (entry_offset + 1); /* +1 for opcode */ + + /* add a new pending match jump for latest finished alternative */ + duk__append_reop(re_ctx, DUK_REOP_JUMP); + unpatched_disjunction_jump = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + + /* 'taint' result as complex */ + res_charlen = -1; + break; + } + case DUK_RETOK_QUANTIFIER: { + if (atom_start_offset < 0) { + DUK_ERROR_SYNTAX(re_ctx->thr, DUK_STR_INVALID_QUANTIFIER_NO_ATOM); + DUK_WO_NORETURN(return;); + } + if (re_ctx->curr_token.qmin > re_ctx->curr_token.qmax) { + DUK_ERROR_SYNTAX(re_ctx->thr, DUK_STR_INVALID_QUANTIFIER_VALUES); + DUK_WO_NORETURN(return;); + } + if (atom_char_length >= 0) { + /* + * Simple atom + * + * If atom_char_length is zero, we'll have unbounded execution time for e.g. + * /()*x/.exec('x'). We can't just skip the match because it might have some + * side effects (for instance, if we allowed captures in simple atoms, the + * capture needs to happen). The simple solution below is to force the + * quantifier to match at most once, since the additional matches have no effect. + * + * With a simple atom there can be no capture groups, so no captures need + * to be reset. + */ + duk_int32_t atom_code_length; + duk_uint32_t offset; + duk_uint32_t qmin, qmax; + + qmin = re_ctx->curr_token.qmin; + qmax = re_ctx->curr_token.qmax; + if (atom_char_length == 0) { + /* qmin and qmax will be 0 or 1 */ + if (qmin > 1) { + qmin = 1; + } + if (qmax > 1) { + qmax = 1; + } + } + + duk__append_reop(re_ctx, DUK_REOP_MATCH); /* complete 'sub atom' */ + atom_code_length = (duk_int32_t) (DUK__RE_BUFLEN(re_ctx) - (duk_size_t) atom_start_offset); + + offset = (duk_uint32_t) atom_start_offset; + if (re_ctx->curr_token.greedy) { + offset += duk__insert_u32(re_ctx, offset, DUK_REOP_SQGREEDY); + offset += duk__insert_u32(re_ctx, offset, qmin); + offset += duk__insert_u32(re_ctx, offset, qmax); + offset += duk__insert_u32(re_ctx, offset, (duk_uint32_t) atom_char_length); + offset += duk__insert_jump_offset(re_ctx, offset, atom_code_length); + } else { + offset += duk__insert_u32(re_ctx, offset, DUK_REOP_SQMINIMAL); + offset += duk__insert_u32(re_ctx, offset, qmin); + offset += duk__insert_u32(re_ctx, offset, qmax); + offset += duk__insert_jump_offset(re_ctx, offset, atom_code_length); + } + DUK_UNREF(offset); /* silence scan-build warning */ + } else { + /* + * Complex atom + * + * The original code is used as a template, and removed at the end + * (this differs from the handling of simple quantifiers). + * + * NOTE: there is no current solution for empty atoms in complex + * quantifiers. This would need some sort of a 'progress' instruction. + * + * XXX: impose limit on maximum result size, i.e. atom_code_len * atom_copies? + */ + duk_int32_t atom_code_length; + duk_uint32_t atom_copies; + duk_uint32_t tmp_qmin, tmp_qmax; + + /* pre-check how many atom copies we're willing to make (atom_copies not needed below) */ + atom_copies = (re_ctx->curr_token.qmax == DUK_RE_QUANTIFIER_INFINITE) ? + re_ctx->curr_token.qmin : re_ctx->curr_token.qmax; + if (atom_copies > DUK_RE_MAX_ATOM_COPIES) { + DUK_ERROR_RANGE(re_ctx->thr, DUK_STR_QUANTIFIER_TOO_MANY_COPIES); + DUK_WO_NORETURN(return;); + } + + /* wipe the capture range made by the atom (if any) */ + DUK_ASSERT(atom_start_captures <= re_ctx->captures); + if (atom_start_captures != re_ctx->captures) { + DUK_ASSERT(atom_start_captures < re_ctx->captures); + DUK_DDD(DUK_DDDPRINT("must wipe ]atom_start_captures,re_ctx->captures]: ]%ld,%ld]", + (long) atom_start_captures, (long) re_ctx->captures)); + + /* insert (DUK_REOP_WIPERANGE, start, count) in reverse order so the order ends up right */ + duk__insert_u32(re_ctx, (duk_uint32_t) atom_start_offset, (re_ctx->captures - atom_start_captures) * 2U); + duk__insert_u32(re_ctx, (duk_uint32_t) atom_start_offset, (atom_start_captures + 1) * 2); + duk__insert_u32(re_ctx, (duk_uint32_t) atom_start_offset, DUK_REOP_WIPERANGE); + } else { + DUK_DDD(DUK_DDDPRINT("no need to wipe captures: atom_start_captures == re_ctx->captures == %ld", + (long) atom_start_captures)); + } + + atom_code_length = (duk_int32_t) DUK__RE_BUFLEN(re_ctx) - atom_start_offset; + + /* insert the required matches (qmin) by copying the atom */ + tmp_qmin = re_ctx->curr_token.qmin; + tmp_qmax = re_ctx->curr_token.qmax; + while (tmp_qmin > 0) { + duk__append_slice(re_ctx, (duk_uint32_t) atom_start_offset, (duk_uint32_t) atom_code_length); + tmp_qmin--; + if (tmp_qmax != DUK_RE_QUANTIFIER_INFINITE) { + tmp_qmax--; + } + } + DUK_ASSERT(tmp_qmin == 0); + + /* insert code for matching the remainder - infinite or finite */ + if (tmp_qmax == DUK_RE_QUANTIFIER_INFINITE) { + /* reuse last emitted atom for remaining 'infinite' quantifier */ + + if (re_ctx->curr_token.qmin == 0) { + /* Special case: original qmin was zero so there is nothing + * to repeat. Emit an atom copy but jump over it here. + */ + duk__append_reop(re_ctx, DUK_REOP_JUMP); + duk__append_jump_offset(re_ctx, atom_code_length); + duk__append_slice(re_ctx, (duk_uint32_t) atom_start_offset, (duk_uint32_t) atom_code_length); + } + if (re_ctx->curr_token.greedy) { + duk__append_reop(re_ctx, DUK_REOP_SPLIT2); /* prefer jump */ + } else { + duk__append_reop(re_ctx, DUK_REOP_SPLIT1); /* prefer direct */ + } + duk__append_jump_offset(re_ctx, -atom_code_length - 1); /* -1 for opcode */ + } else { + /* + * The remaining matches are emitted as sequence of SPLITs and atom + * copies; the SPLITs skip the remaining copies and match the sequel. + * This sequence needs to be emitted starting from the last copy + * because the SPLITs are variable length due to the variable length + * skip offset. This causes a lot of memory copying now. + * + * Example structure (greedy, match maximum # atoms): + * + * SPLIT1 LSEQ + * (atom) + * SPLIT1 LSEQ ; <- the byte length of this instruction is needed + * (atom) ; to encode the above SPLIT1 correctly + * ... + * LSEQ: + */ + duk_uint32_t offset = (duk_uint32_t) DUK__RE_BUFLEN(re_ctx); + while (tmp_qmax > 0) { + duk__insert_slice(re_ctx, offset, (duk_uint32_t) atom_start_offset, (duk_uint32_t) atom_code_length); + if (re_ctx->curr_token.greedy) { + duk__insert_u32(re_ctx, offset, DUK_REOP_SPLIT1); /* prefer direct */ + } else { + duk__insert_u32(re_ctx, offset, DUK_REOP_SPLIT2); /* prefer jump */ + } + duk__insert_jump_offset(re_ctx, + offset + 1, /* +1 for opcode */ + (duk_int32_t) (DUK__RE_BUFLEN(re_ctx) - (offset + 1))); + tmp_qmax--; + } + } + + /* remove the original 'template' atom */ + duk__remove_slice(re_ctx, (duk_uint32_t) atom_start_offset, (duk_uint32_t) atom_code_length); + } + + /* 'taint' result as complex */ + res_charlen = -1; + break; + } + case DUK_RETOK_ASSERT_START: { + duk__append_reop(re_ctx, DUK_REOP_ASSERT_START); + break; + } + case DUK_RETOK_ASSERT_END: { + duk__append_reop(re_ctx, DUK_REOP_ASSERT_END); + break; + } + case DUK_RETOK_ASSERT_WORD_BOUNDARY: { + duk__append_reop(re_ctx, DUK_REOP_ASSERT_WORD_BOUNDARY); + break; + } + case DUK_RETOK_ASSERT_NOT_WORD_BOUNDARY: { + duk__append_reop(re_ctx, DUK_REOP_ASSERT_NOT_WORD_BOUNDARY); + break; + } + case DUK_RETOK_ASSERT_START_POS_LOOKAHEAD: + case DUK_RETOK_ASSERT_START_NEG_LOOKAHEAD: { + duk_uint32_t offset; + duk_uint32_t opcode = (re_ctx->curr_token.t == DUK_RETOK_ASSERT_START_POS_LOOKAHEAD) ? + DUK_REOP_LOOKPOS : DUK_REOP_LOOKNEG; + + offset = (duk_uint32_t) DUK__RE_BUFLEN(re_ctx); + duk__parse_disjunction(re_ctx, 0, &tmp_disj); + duk__append_reop(re_ctx, DUK_REOP_MATCH); + + (void) duk__insert_u32(re_ctx, offset, opcode); + (void) duk__insert_jump_offset(re_ctx, + offset + 1, /* +1 for opcode */ + (duk_int32_t) (DUK__RE_BUFLEN(re_ctx) - (offset + 1))); + + /* 'taint' result as complex -- this is conservative, + * as lookaheads do not backtrack. + */ + res_charlen = -1; + break; + } + case DUK_RETOK_ATOM_PERIOD: { + new_atom_char_length = 1; + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + duk__append_reop(re_ctx, DUK_REOP_PERIOD); + break; + } + case DUK_RETOK_ATOM_CHAR: { + /* Note: successive characters could be joined into string matches + * but this is not trivial (consider e.g. '/xyz+/); see docs for + * more discussion. + * + * No support for \u{H+} yet. While only BMP Unicode escapes are + * supported for RegExps at present, 'ch' may still be a non-BMP + * codepoint if it is decoded straight from source text UTF-8. + * There's no non-BMP support yet so this is handled simply by + * matching the non-BMP character (which is custom behavior). + */ + duk_uint32_t ch; + + new_atom_char_length = 1; + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + duk__append_reop(re_ctx, DUK_REOP_CHAR); + ch = re_ctx->curr_token.num; + if (re_ctx->re_flags & DUK_RE_FLAG_IGNORE_CASE) { + ch = (duk_uint32_t) duk_unicode_re_canonicalize_char(re_ctx->thr, (duk_codepoint_t) ch); + } + duk__append_u32(re_ctx, ch); + break; + } + case DUK_RETOK_ATOM_DIGIT: + case DUK_RETOK_ATOM_NOT_DIGIT: + case DUK_RETOK_ATOM_WHITE: + case DUK_RETOK_ATOM_NOT_WHITE: + case DUK_RETOK_ATOM_WORD_CHAR: + case DUK_RETOK_ATOM_NOT_WORD_CHAR: { + duk_small_uint_t re_op; + duk_small_uint_t idx; + + new_atom_char_length = 1; + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + + DUK_ASSERT((DUK_RETOK_ATOM_DIGIT & 0x01) != 0); + DUK_ASSERT((DUK_RETOK_ATOM_WHITE & 0x01) != 0); + DUK_ASSERT((DUK_RETOK_ATOM_WORD_CHAR & 0x01) != 0); + DUK_ASSERT((DUK_RETOK_ATOM_NOT_DIGIT & 0x01) == 0); + DUK_ASSERT((DUK_RETOK_ATOM_NOT_WHITE & 0x01) == 0); + DUK_ASSERT((DUK_RETOK_ATOM_NOT_WORD_CHAR & 0x01) == 0); + re_op = (re_ctx->curr_token.t & 0x01) ? DUK_REOP_RANGES : DUK_REOP_INVRANGES; + + DUK_ASSERT(DUK_RETOK_ATOM_WHITE == DUK_RETOK_ATOM_DIGIT + 2); + DUK_ASSERT(DUK_RETOK_ATOM_WORD_CHAR == DUK_RETOK_ATOM_DIGIT + 4); + idx = (duk_small_uint_t) ((re_ctx->curr_token.t - DUK_RETOK_ATOM_DIGIT) >> 1U); + DUK_ASSERT(idx <= 2U); /* Assume continuous token numbers; also checks negative underflow. */ + + duk__append_range_atom_matcher(re_ctx, re_op, duk__re_range_lookup1[idx], duk__re_range_lookup2[idx]); + break; + } + case DUK_RETOK_ATOM_BACKREFERENCE: { + duk_uint32_t backref = (duk_uint32_t) re_ctx->curr_token.num; + if (backref > re_ctx->highest_backref) { + re_ctx->highest_backref = backref; + } + new_atom_char_length = -1; /* mark as complex */ + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + duk__append_reop(re_ctx, DUK_REOP_BACKREFERENCE); + duk__append_u32(re_ctx, backref); + break; + } + case DUK_RETOK_ATOM_START_CAPTURE_GROUP: { + duk_uint32_t cap; + + new_atom_char_length = -1; /* mark as complex (capture handling) */ + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + cap = ++re_ctx->captures; + duk__append_reop(re_ctx, DUK_REOP_SAVE); + duk__append_u32(re_ctx, cap * 2); + duk__parse_disjunction(re_ctx, 0, &tmp_disj); /* retval (sub-atom char length) unused, tainted as complex above */ + duk__append_reop(re_ctx, DUK_REOP_SAVE); + duk__append_u32(re_ctx, cap * 2 + 1); + break; + } + case DUK_RETOK_ATOM_START_NONCAPTURE_GROUP: { + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + duk__parse_disjunction(re_ctx, 0, &tmp_disj); + new_atom_char_length = tmp_disj.charlen; + break; + } + case DUK_RETOK_ATOM_START_CHARCLASS: + case DUK_RETOK_ATOM_START_CHARCLASS_INVERTED: { + /* + * Range parsing is done with a special lexer function which calls + * us for every range parsed. This is different from how rest of + * the parsing works, but avoids a heavy, arbitrary size intermediate + * value type to hold the ranges. + * + * Another complication is the handling of character ranges when + * case insensitive matching is used (see docs for discussion). + * The range handler callback given to the lexer takes care of this + * as well. + * + * Note that duplicate ranges are not eliminated when parsing character + * classes, so that canonicalization of + * + * [0-9a-fA-Fx-{] + * + * creates the result (note the duplicate ranges): + * + * [0-9A-FA-FX-Z{-{] + * + * where [x-{] is split as a result of canonicalization. The duplicate + * ranges are not a semantics issue: they work correctly. + */ + + duk_uint32_t offset; + + DUK_DD(DUK_DDPRINT("character class")); + + /* insert ranges instruction, range count patched in later */ + new_atom_char_length = 1; + new_atom_start_offset = (duk_int32_t) DUK__RE_BUFLEN(re_ctx); + duk__append_reop(re_ctx, + (re_ctx->curr_token.t == DUK_RETOK_ATOM_START_CHARCLASS) ? + DUK_REOP_RANGES : DUK_REOP_INVRANGES); + offset = (duk_uint32_t) DUK__RE_BUFLEN(re_ctx); /* patch in range count later */ + + /* parse ranges until character class ends */ + re_ctx->nranges = 0; /* note: ctx-wide temporary */ + duk_lexer_parse_re_ranges(&re_ctx->lex, duk__regexp_generate_ranges, (void *) re_ctx); + + /* insert range count */ + duk__insert_u32(re_ctx, offset, re_ctx->nranges); + break; + } + case DUK_RETOK_ATOM_END_GROUP: { + if (expect_eof) { + DUK_ERROR_SYNTAX(re_ctx->thr, DUK_STR_UNEXPECTED_CLOSING_PAREN); + DUK_WO_NORETURN(return;); + } + goto done; + } + case DUK_RETOK_EOF: { + if (!expect_eof) { + DUK_ERROR_SYNTAX(re_ctx->thr, DUK_STR_UNEXPECTED_END_OF_PATTERN); + DUK_WO_NORETURN(return;); + } + goto done; + } + default: { + DUK_ERROR_SYNTAX(re_ctx->thr, DUK_STR_UNEXPECTED_REGEXP_TOKEN); + DUK_WO_NORETURN(return;); + } + } + + /* a complex (new) atom taints the result */ + if (new_atom_start_offset >= 0) { + if (new_atom_char_length < 0) { + res_charlen = -1; + } else if (res_charlen >= 0) { + /* only advance if not tainted */ + res_charlen += new_atom_char_length; + } + } + + /* record previous atom info in case next token is a quantifier */ + atom_start_offset = new_atom_start_offset; + atom_char_length = new_atom_char_length; + atom_start_captures = new_atom_start_captures; + } + + done: + + /* finish up pending jump and split for last alternative */ + if (unpatched_disjunction_jump >= 0) { + duk_uint32_t offset; + + DUK_ASSERT(unpatched_disjunction_split >= 0); + offset = (duk_uint32_t) unpatched_disjunction_jump; + offset += duk__insert_jump_offset(re_ctx, + offset, + (duk_int32_t) (DUK__RE_BUFLEN(re_ctx) - offset)); + /* offset is now target of the pending split (right after jump) */ + duk__insert_jump_offset(re_ctx, + (duk_uint32_t) unpatched_disjunction_split, + (duk_int32_t) offset - unpatched_disjunction_split); + } + +#if 0 + out_atom_info->end_captures = re_ctx->captures; +#endif + out_atom_info->charlen = res_charlen; + DUK_DDD(DUK_DDDPRINT("parse disjunction finished: charlen=%ld", + (long) out_atom_info->charlen)); + + re_ctx->recursion_depth--; +} + +/* + * Flags parsing (see E5 Section 15.10.4.1). + */ + +DUK_LOCAL duk_uint32_t duk__parse_regexp_flags(duk_hthread *thr, duk_hstring *h) { + const duk_uint8_t *p; + const duk_uint8_t *p_end; + duk_uint32_t flags = 0; + + p = DUK_HSTRING_GET_DATA(h); + p_end = p + DUK_HSTRING_GET_BYTELEN(h); + + /* Note: can be safely scanned as bytes (undecoded) */ + + while (p < p_end) { + duk_uint8_t c = *p++; + switch (c) { + case (duk_uint8_t) 'g': { + if (flags & DUK_RE_FLAG_GLOBAL) { + goto flags_error; + } + flags |= DUK_RE_FLAG_GLOBAL; + break; + } + case (duk_uint8_t) 'i': { + if (flags & DUK_RE_FLAG_IGNORE_CASE) { + goto flags_error; + } + flags |= DUK_RE_FLAG_IGNORE_CASE; + break; + } + case (duk_uint8_t) 'm': { + if (flags & DUK_RE_FLAG_MULTILINE) { + goto flags_error; + } + flags |= DUK_RE_FLAG_MULTILINE; + break; + } + default: { + goto flags_error; + } + } + } + + return flags; + + flags_error: + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_REGEXP_FLAGS); + DUK_WO_NORETURN(return 0U;); +} + +/* + * Create escaped RegExp source (E5 Section 15.10.3). + * + * The current approach is to special case the empty RegExp + * ('' -> '(?:)') and otherwise replace unescaped '/' characters + * with '\/' regardless of where they occur in the regexp. + * + * Note that normalization does not seem to be necessary for + * RegExp literals (e.g. '/foo/') because to be acceptable as + * a RegExp literal, the text between forward slashes must + * already match the escaping requirements (e.g. must not contain + * unescaped forward slashes or be empty). Escaping IS needed + * for expressions like 'new Regexp("...", "")' however. + * Currently, we re-escape in either case. + * + * Also note that we process the source here in UTF-8 encoded + * form. This is correct, because any non-ASCII characters are + * passed through without change. + */ + +DUK_LOCAL void duk__create_escaped_source(duk_hthread *thr, int idx_pattern) { + duk_hstring *h; + const duk_uint8_t *p; + duk_bufwriter_ctx bw_alloc; + duk_bufwriter_ctx *bw; + duk_uint8_t *q; + duk_size_t i, n; + duk_uint_fast8_t c_prev, c; + + h = duk_known_hstring(thr, idx_pattern); + p = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h); + n = (duk_size_t) DUK_HSTRING_GET_BYTELEN(h); + + if (n == 0) { + duk_push_literal(thr, "(?:)"); + return; + } + + bw = &bw_alloc; + DUK_BW_INIT_PUSHBUF(thr, bw, n); + q = DUK_BW_GET_PTR(thr, bw); + + c_prev = (duk_uint_fast8_t) 0; + + for (i = 0; i < n; i++) { + c = p[i]; + + q = DUK_BW_ENSURE_RAW(thr, bw, 2, q); + + if (c == (duk_uint_fast8_t) '/' && c_prev != (duk_uint_fast8_t) '\\') { + /* Unescaped '/' ANYWHERE in the regexp (in disjunction, + * inside a character class, ...) => same escape works. + */ + *q++ = DUK_ASC_BACKSLASH; + } + *q++ = (duk_uint8_t) c; + + c_prev = c; + } + + DUK_BW_SETPTR_AND_COMPACT(thr, bw, q); + (void) duk_buffer_to_string(thr, -1); /* Safe if input is safe. */ + + /* [ ... escaped_source ] */ +} + +/* + * Exposed regexp compilation primitive. + * + * Sets up a regexp compilation context, and calls duk__parse_disjunction() to do the + * actual parsing. Handles generation of the compiled regexp header and the + * "boilerplate" capture of the matching substring (save 0 and 1). Also does some + * global level regexp checks after recursive compilation has finished. + * + * An escaped version of the regexp source, suitable for use as a RegExp instance + * 'source' property (see E5 Section 15.10.3), is also left on the stack. + * + * Input stack: [ pattern flags ] + * Output stack: [ bytecode escaped_source ] (both as strings) + */ + +DUK_INTERNAL void duk_regexp_compile(duk_hthread *thr) { + duk_re_compiler_ctx re_ctx; + duk_lexer_point lex_point; + duk_hstring *h_pattern; + duk_hstring *h_flags; + duk__re_disjunction_info ign_disj; + + DUK_ASSERT(thr != NULL); + + /* + * Args validation + */ + + /* TypeError if fails */ + h_pattern = duk_require_hstring_notsymbol(thr, -2); + h_flags = duk_require_hstring_notsymbol(thr, -1); + + /* + * Create normalized 'source' property (E5 Section 15.10.3). + */ + + /* [ ... pattern flags ] */ + + duk__create_escaped_source(thr, -2); + + /* [ ... pattern flags escaped_source ] */ + + /* + * Init compilation context + */ + + /* [ ... pattern flags escaped_source buffer ] */ + + duk_memzero(&re_ctx, sizeof(re_ctx)); + DUK_LEXER_INITCTX(&re_ctx.lex); /* duplicate zeroing, expect for (possible) NULL inits */ + re_ctx.thr = thr; + re_ctx.lex.thr = thr; + re_ctx.lex.input = DUK_HSTRING_GET_DATA(h_pattern); + re_ctx.lex.input_length = DUK_HSTRING_GET_BYTELEN(h_pattern); + re_ctx.lex.token_limit = DUK_RE_COMPILE_TOKEN_LIMIT; + re_ctx.recursion_limit = DUK_USE_REGEXP_COMPILER_RECLIMIT; + re_ctx.re_flags = duk__parse_regexp_flags(thr, h_flags); + + DUK_BW_INIT_PUSHBUF(thr, &re_ctx.bw, DUK__RE_INITIAL_BUFSIZE); + + DUK_DD(DUK_DDPRINT("regexp compiler ctx initialized, flags=0x%08lx, recursion_limit=%ld", + (unsigned long) re_ctx.re_flags, (long) re_ctx.recursion_limit)); + + /* + * Init lexer + */ + + lex_point.offset = 0; /* expensive init, just want to fill window */ + lex_point.line = 1; + DUK_LEXER_SETPOINT(&re_ctx.lex, &lex_point); + + /* + * Compilation + */ + + DUK_DD(DUK_DDPRINT("starting regexp compilation")); + + duk__append_reop(&re_ctx, DUK_REOP_SAVE); + duk__append_7bit(&re_ctx, 0); + duk__parse_disjunction(&re_ctx, 1 /*expect_eof*/, &ign_disj); + duk__append_reop(&re_ctx, DUK_REOP_SAVE); + duk__append_7bit(&re_ctx, 1); + duk__append_reop(&re_ctx, DUK_REOP_MATCH); + + /* + * Check for invalid backreferences; note that it is NOT an error + * to back-reference a capture group which has not yet been introduced + * in the pattern (as in /\1(foo)/); in fact, the backreference will + * always match! It IS an error to back-reference a capture group + * which will never be introduced in the pattern. Thus, we can check + * for such references only after parsing is complete. + */ + + if (re_ctx.highest_backref > re_ctx.captures) { + DUK_ERROR_SYNTAX(thr, DUK_STR_INVALID_BACKREFS); + DUK_WO_NORETURN(return;); + } + + /* + * Emit compiled regexp header: flags, ncaptures + * (insertion order inverted on purpose) + */ + + duk__insert_u32(&re_ctx, 0, (re_ctx.captures + 1) * 2); + duk__insert_u32(&re_ctx, 0, re_ctx.re_flags); + + /* [ ... pattern flags escaped_source buffer ] */ + + DUK_BW_COMPACT(thr, &re_ctx.bw); + (void) duk_buffer_to_string(thr, -1); /* Safe because flags is at most 7 bit. */ + + /* [ ... pattern flags escaped_source bytecode ] */ + + /* + * Finalize stack + */ + + duk_remove(thr, -4); /* -> [ ... flags escaped_source bytecode ] */ + duk_remove(thr, -3); /* -> [ ... escaped_source bytecode ] */ + + DUK_DD(DUK_DDPRINT("regexp compilation successful, bytecode: %!T, escaped source: %!T", + (duk_tval *) duk_get_tval(thr, -1), (duk_tval *) duk_get_tval(thr, -2))); +} + +/* + * Create a RegExp instance (E5 Section 15.10.7). + * + * Note: the output stack left by duk_regexp_compile() is directly compatible + * with the input here. + * + * Input stack: [ escaped_source bytecode ] (both as strings) + * Output stack: [ RegExp ] + */ + +DUK_INTERNAL void duk_regexp_create_instance(duk_hthread *thr) { + duk_hobject *h; + + /* [ ... escaped_source bytecode ] */ + + duk_push_object(thr); + h = duk_known_hobject(thr, -1); + duk_insert(thr, -3); + + /* [ ... regexp_object escaped_source bytecode ] */ + + DUK_HOBJECT_SET_CLASS_NUMBER(h, DUK_HOBJECT_CLASS_REGEXP); + DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h, thr->builtins[DUK_BIDX_REGEXP_PROTOTYPE]); + + duk_xdef_prop_stridx_short(thr, -3, DUK_STRIDX_INT_BYTECODE, DUK_PROPDESC_FLAGS_NONE); + + /* [ ... regexp_object escaped_source ] */ + + /* In ES2015 .source, and the .global, .multiline, etc flags are + * inherited getters. Store the escaped source as an internal + * property for the getter. + */ + + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_INT_SOURCE, DUK_PROPDESC_FLAGS_NONE); + + /* [ ... regexp_object ] */ + + duk_push_int(thr, 0); + duk_xdef_prop_stridx_short(thr, -2, DUK_STRIDX_LAST_INDEX, DUK_PROPDESC_FLAGS_W); + + /* [ ... regexp_object ] */ +} + +#else /* DUK_USE_REGEXP_SUPPORT */ + +/* regexp support disabled */ + +#endif /* DUK_USE_REGEXP_SUPPORT */ + +/* automatic undefs */ +#undef DUK__RE_BUFLEN +#undef DUK__RE_INITIAL_BUFSIZE +#line 1 "duk_regexp_executor.c" +/* + * Regexp executor. + * + * Safety: the ECMAScript executor should prevent user from reading and + * replacing regexp bytecode. Even so, the executor must validate all + * memory accesses etc. When an invalid access is detected (e.g. a 'save' + * opcode to invalid, unallocated index) it should fail with an internal + * error but not cause a segmentation fault. + * + * Notes: + * + * - Backtrack counts are limited to unsigned 32 bits but should + * technically be duk_size_t for strings longer than 4G chars. + * This also requires a regexp bytecode change. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_REGEXP_SUPPORT) + +/* + * Helpers for UTF-8 handling + * + * For bytecode readers the duk_uint32_t and duk_int32_t types are correct + * because they're used for more than just codepoints. + */ + +DUK_LOCAL duk_uint32_t duk__bc_get_u32(duk_re_matcher_ctx *re_ctx, const duk_uint8_t **pc) { + return (duk_uint32_t) duk_unicode_decode_xutf8_checked(re_ctx->thr, pc, re_ctx->bytecode, re_ctx->bytecode_end); +} + +DUK_LOCAL duk_int32_t duk__bc_get_i32(duk_re_matcher_ctx *re_ctx, const duk_uint8_t **pc) { + duk_uint32_t t; + + /* signed integer encoding needed to work with UTF-8 */ + t = (duk_uint32_t) duk_unicode_decode_xutf8_checked(re_ctx->thr, pc, re_ctx->bytecode, re_ctx->bytecode_end); + if (t & 1) { + return -((duk_int32_t) (t >> 1)); + } else { + return (duk_int32_t) (t >> 1); + } +} + +DUK_LOCAL const duk_uint8_t *duk__utf8_backtrack(duk_hthread *thr, const duk_uint8_t **ptr, const duk_uint8_t *ptr_start, const duk_uint8_t *ptr_end, duk_uint_fast32_t count) { + const duk_uint8_t *p; + + /* Note: allow backtracking from p == ptr_end */ + p = *ptr; + if (p < ptr_start || p > ptr_end) { + goto fail; + } + + while (count > 0) { + for (;;) { + p--; + if (p < ptr_start) { + goto fail; + } + if ((*p & 0xc0) != 0x80) { + /* utf-8 continuation bytes have the form 10xx xxxx */ + break; + } + } + count--; + } + *ptr = p; + return p; + + fail: + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return NULL;); +} + +DUK_LOCAL const duk_uint8_t *duk__utf8_advance(duk_hthread *thr, const duk_uint8_t **ptr, const duk_uint8_t *ptr_start, const duk_uint8_t *ptr_end, duk_uint_fast32_t count) { + const duk_uint8_t *p; + + p = *ptr; + if (p < ptr_start || p >= ptr_end) { + goto fail; + } + + while (count > 0) { + for (;;) { + p++; + + /* Note: if encoding ends by hitting end of input, we don't check that + * the encoding is valid, we just assume it is. + */ + if (p >= ptr_end || ((*p & 0xc0) != 0x80)) { + /* utf-8 continuation bytes have the form 10xx xxxx */ + break; + } + } + count--; + } + + *ptr = p; + return p; + + fail: + DUK_ERROR_INTERNAL(thr); + DUK_WO_NORETURN(return NULL;); +} + +/* + * Helpers for dealing with the input string + */ + +/* Get a (possibly canonicalized) input character from current sp. The input + * itself is never modified, and captures always record non-canonicalized + * characters even in case-insensitive matching. Return <0 if out of input. + */ +DUK_LOCAL duk_codepoint_t duk__inp_get_cp(duk_re_matcher_ctx *re_ctx, const duk_uint8_t **sp) { + duk_codepoint_t res; + + if (*sp >= re_ctx->input_end) { + return -1; + } + res = (duk_codepoint_t) duk_unicode_decode_xutf8_checked(re_ctx->thr, sp, re_ctx->input, re_ctx->input_end); + if (re_ctx->re_flags & DUK_RE_FLAG_IGNORE_CASE) { + res = duk_unicode_re_canonicalize_char(re_ctx->thr, res); + } + return res; +} + +DUK_LOCAL const duk_uint8_t *duk__inp_backtrack(duk_re_matcher_ctx *re_ctx, const duk_uint8_t **sp, duk_uint_fast32_t count) { + return duk__utf8_backtrack(re_ctx->thr, sp, re_ctx->input, re_ctx->input_end, count); +} + +/* Backtrack utf-8 input and return a (possibly canonicalized) input character. */ +DUK_LOCAL duk_codepoint_t duk__inp_get_prev_cp(duk_re_matcher_ctx *re_ctx, const duk_uint8_t *sp) { + /* note: caller 'sp' is intentionally not updated here */ + (void) duk__inp_backtrack(re_ctx, &sp, (duk_uint_fast32_t) 1); + return duk__inp_get_cp(re_ctx, &sp); +} + +/* + * Regexp recursive matching function. + * + * Returns 'sp' on successful match (points to character after last matched one), + * NULL otherwise. + * + * The C recursion depth limit check is only performed in this function, this + * suffices because the function is present in all true recursion required by + * regexp execution. + */ + +DUK_LOCAL const duk_uint8_t *duk__match_regexp(duk_re_matcher_ctx *re_ctx, const duk_uint8_t *pc, const duk_uint8_t *sp) { + duk_native_stack_check(re_ctx->thr); + if (re_ctx->recursion_depth >= re_ctx->recursion_limit) { + DUK_ERROR_RANGE(re_ctx->thr, DUK_STR_REGEXP_EXECUTOR_RECURSION_LIMIT); + DUK_WO_NORETURN(return NULL;); + } + re_ctx->recursion_depth++; + + for (;;) { + duk_small_int_t op; + + if (re_ctx->steps_count >= re_ctx->steps_limit) { + DUK_ERROR_RANGE(re_ctx->thr, DUK_STR_REGEXP_EXECUTOR_STEP_LIMIT); + DUK_WO_NORETURN(return NULL;); + } + re_ctx->steps_count++; + + /* Opcodes are at most 7 bits now so they encode to one byte. If this + * were not the case or 'pc' is invalid here (due to a bug etc) we'll + * still fail safely through the switch default case. + */ + DUK_ASSERT(pc[0] <= 0x7fU); +#if 0 + op = (duk_small_int_t) duk__bc_get_u32(re_ctx, &pc); +#endif + op = *pc++; + + DUK_DDD(DUK_DDDPRINT("match: rec=%ld, steps=%ld, pc (after op)=%ld, sp=%ld, op=%ld", + (long) re_ctx->recursion_depth, + (long) re_ctx->steps_count, + (long) (pc - re_ctx->bytecode), + (long) (sp - re_ctx->input), + (long) op)); + + switch (op) { + case DUK_REOP_MATCH: { + goto match; + } + case DUK_REOP_CHAR: { + /* + * Byte-based matching would be possible for case-sensitive + * matching but not for case-insensitive matching. So, we + * match by decoding the input and bytecode character normally. + * + * Bytecode characters are assumed to be already canonicalized. + * Input characters are canonicalized automatically by + * duk__inp_get_cp() if necessary. + * + * There is no opcode for matching multiple characters. The + * regexp compiler has trouble joining strings efficiently + * during compilation. See doc/regexp.rst for more discussion. + */ + duk_codepoint_t c1, c2; + + c1 = (duk_codepoint_t) duk__bc_get_u32(re_ctx, &pc); + DUK_ASSERT(!(re_ctx->re_flags & DUK_RE_FLAG_IGNORE_CASE) || + c1 == duk_unicode_re_canonicalize_char(re_ctx->thr, c1)); /* canonicalized by compiler */ + c2 = duk__inp_get_cp(re_ctx, &sp); + /* No need to check for c2 < 0 (end of input): because c1 >= 0, it + * will fail the match below automatically and cause goto fail. + */ +#if 0 + if (c2 < 0) { + goto fail; + } +#endif + DUK_ASSERT(c1 >= 0); + + DUK_DDD(DUK_DDDPRINT("char match, c1=%ld, c2=%ld", (long) c1, (long) c2)); + if (c1 != c2) { + goto fail; + } + break; + } + case DUK_REOP_PERIOD: { + duk_codepoint_t c; + + c = duk__inp_get_cp(re_ctx, &sp); + if (c < 0 || duk_unicode_is_line_terminator(c)) { + /* E5 Sections 15.10.2.8, 7.3 */ + goto fail; + } + break; + } + case DUK_REOP_RANGES: + case DUK_REOP_INVRANGES: { + duk_uint32_t n; + duk_codepoint_t c; + duk_small_int_t match; + + n = duk__bc_get_u32(re_ctx, &pc); + c = duk__inp_get_cp(re_ctx, &sp); + if (c < 0) { + goto fail; + } + + match = 0; + while (n) { + duk_codepoint_t r1, r2; + r1 = (duk_codepoint_t) duk__bc_get_u32(re_ctx, &pc); + r2 = (duk_codepoint_t) duk__bc_get_u32(re_ctx, &pc); + DUK_DDD(DUK_DDDPRINT("matching ranges/invranges, n=%ld, r1=%ld, r2=%ld, c=%ld", + (long) n, (long) r1, (long) r2, (long) c)); + if (c >= r1 && c <= r2) { + /* Note: don't bail out early, we must read all the ranges from + * bytecode. Another option is to skip them efficiently after + * breaking out of here. Prefer smallest code. + */ + match = 1; + } + n--; + } + + if (op == DUK_REOP_RANGES) { + if (!match) { + goto fail; + } + } else { + DUK_ASSERT(op == DUK_REOP_INVRANGES); + if (match) { + goto fail; + } + } + break; + } + case DUK_REOP_ASSERT_START: { + duk_codepoint_t c; + + if (sp <= re_ctx->input) { + break; + } + if (!(re_ctx->re_flags & DUK_RE_FLAG_MULTILINE)) { + goto fail; + } + c = duk__inp_get_prev_cp(re_ctx, sp); + if (duk_unicode_is_line_terminator(c)) { + /* E5 Sections 15.10.2.8, 7.3 */ + break; + } + goto fail; + } + case DUK_REOP_ASSERT_END: { + duk_codepoint_t c; + const duk_uint8_t *tmp_sp; + + tmp_sp = sp; + c = duk__inp_get_cp(re_ctx, &tmp_sp); + if (c < 0) { + break; + } + if (!(re_ctx->re_flags & DUK_RE_FLAG_MULTILINE)) { + goto fail; + } + if (duk_unicode_is_line_terminator(c)) { + /* E5 Sections 15.10.2.8, 7.3 */ + break; + } + goto fail; + } + case DUK_REOP_ASSERT_WORD_BOUNDARY: + case DUK_REOP_ASSERT_NOT_WORD_BOUNDARY: { + /* + * E5 Section 15.10.2.6. The previous and current character + * should -not- be canonicalized as they are now. However, + * canonicalization does not affect the result of IsWordChar() + * (which depends on Unicode characters never canonicalizing + * into ASCII characters) so this does not matter. + */ + duk_small_int_t w1, w2; + + if (sp <= re_ctx->input) { + w1 = 0; /* not a wordchar */ + } else { + duk_codepoint_t c; + c = duk__inp_get_prev_cp(re_ctx, sp); + w1 = duk_unicode_re_is_wordchar(c); + } + if (sp >= re_ctx->input_end) { + w2 = 0; /* not a wordchar */ + } else { + const duk_uint8_t *tmp_sp = sp; /* dummy so sp won't get updated */ + duk_codepoint_t c; + c = duk__inp_get_cp(re_ctx, &tmp_sp); + w2 = duk_unicode_re_is_wordchar(c); + } + + if (op == DUK_REOP_ASSERT_WORD_BOUNDARY) { + if (w1 == w2) { + goto fail; + } + } else { + DUK_ASSERT(op == DUK_REOP_ASSERT_NOT_WORD_BOUNDARY); + if (w1 != w2) { + goto fail; + } + } + break; + } + case DUK_REOP_JUMP: { + duk_int32_t skip; + + skip = duk__bc_get_i32(re_ctx, &pc); + pc += skip; + break; + } + case DUK_REOP_SPLIT1: { + /* split1: prefer direct execution (no jump) */ + const duk_uint8_t *sub_sp; + duk_int32_t skip; + + skip = duk__bc_get_i32(re_ctx, &pc); + sub_sp = duk__match_regexp(re_ctx, pc, sp); + if (sub_sp) { + sp = sub_sp; + goto match; + } + pc += skip; + break; + } + case DUK_REOP_SPLIT2: { + /* split2: prefer jump execution (not direct) */ + const duk_uint8_t *sub_sp; + duk_int32_t skip; + + skip = duk__bc_get_i32(re_ctx, &pc); + sub_sp = duk__match_regexp(re_ctx, pc + skip, sp); + if (sub_sp) { + sp = sub_sp; + goto match; + } + break; + } + case DUK_REOP_SQMINIMAL: { + duk_uint32_t q, qmin, qmax; + duk_int32_t skip; + const duk_uint8_t *sub_sp; + + qmin = duk__bc_get_u32(re_ctx, &pc); + qmax = duk__bc_get_u32(re_ctx, &pc); + skip = duk__bc_get_i32(re_ctx, &pc); + DUK_DDD(DUK_DDDPRINT("minimal quantifier, qmin=%lu, qmax=%lu, skip=%ld", + (unsigned long) qmin, (unsigned long) qmax, (long) skip)); + + q = 0; + while (q <= qmax) { + if (q >= qmin) { + sub_sp = duk__match_regexp(re_ctx, pc + skip, sp); + if (sub_sp) { + sp = sub_sp; + goto match; + } + } + sub_sp = duk__match_regexp(re_ctx, pc, sp); + if (!sub_sp) { + break; + } + sp = sub_sp; + q++; + } + goto fail; + } + case DUK_REOP_SQGREEDY: { + duk_uint32_t q, qmin, qmax, atomlen; + duk_int32_t skip; + const duk_uint8_t *sub_sp; + + qmin = duk__bc_get_u32(re_ctx, &pc); + qmax = duk__bc_get_u32(re_ctx, &pc); + atomlen = duk__bc_get_u32(re_ctx, &pc); + skip = duk__bc_get_i32(re_ctx, &pc); + DUK_DDD(DUK_DDDPRINT("greedy quantifier, qmin=%lu, qmax=%lu, atomlen=%lu, skip=%ld", + (unsigned long) qmin, (unsigned long) qmax, (unsigned long) atomlen, (long) skip)); + + q = 0; + while (q < qmax) { + sub_sp = duk__match_regexp(re_ctx, pc, sp); + if (!sub_sp) { + break; + } + sp = sub_sp; + q++; + } + while (q >= qmin) { + sub_sp = duk__match_regexp(re_ctx, pc + skip, sp); + if (sub_sp) { + sp = sub_sp; + goto match; + } + if (q == qmin) { + break; + } + + /* Note: if atom were to contain e.g. captures, we would need to + * re-match the atom to get correct captures. Simply quantifiers + * do not allow captures in their atom now, so this is not an issue. + */ + + DUK_DDD(DUK_DDDPRINT("greedy quantifier, backtrack %ld characters (atomlen)", + (long) atomlen)); + sp = duk__inp_backtrack(re_ctx, &sp, (duk_uint_fast32_t) atomlen); + q--; + } + goto fail; + } + case DUK_REOP_SAVE: { + duk_uint32_t idx; + const duk_uint8_t *old; + const duk_uint8_t *sub_sp; + + idx = duk__bc_get_u32(re_ctx, &pc); + if (idx >= re_ctx->nsaved) { + /* idx is unsigned, < 0 check is not necessary */ + DUK_D(DUK_DPRINT("internal error, regexp save index insane: idx=%ld", (long) idx)); + goto internal_error; + } + old = re_ctx->saved[idx]; + re_ctx->saved[idx] = sp; + sub_sp = duk__match_regexp(re_ctx, pc, sp); + if (sub_sp) { + sp = sub_sp; + goto match; + } + re_ctx->saved[idx] = old; + goto fail; + } + case DUK_REOP_WIPERANGE: { + /* Wipe capture range and save old values for backtracking. + * + * XXX: this typically happens with a relatively small idx_count. + * It might be useful to handle cases where the count is small + * (say <= 8) by saving the values in stack instead. This would + * reduce memory churn and improve performance, at the cost of a + * slightly higher code footprint. + */ + duk_uint32_t idx_start, idx_count; +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + duk_uint32_t idx_end, idx; +#endif + duk_uint8_t **range_save; + const duk_uint8_t *sub_sp; + + idx_start = duk__bc_get_u32(re_ctx, &pc); + idx_count = duk__bc_get_u32(re_ctx, &pc); + DUK_DDD(DUK_DDDPRINT("wipe saved range: start=%ld, count=%ld -> [%ld,%ld] (captures [%ld,%ld])", + (long) idx_start, (long) idx_count, + (long) idx_start, (long) (idx_start + idx_count - 1), + (long) (idx_start / 2), (long) ((idx_start + idx_count - 1) / 2))); + if (idx_start + idx_count > re_ctx->nsaved || idx_count == 0) { + /* idx is unsigned, < 0 check is not necessary */ + DUK_D(DUK_DPRINT("internal error, regexp wipe indices insane: idx_start=%ld, idx_count=%ld", + (long) idx_start, (long) idx_count)); + goto internal_error; + } + DUK_ASSERT(idx_count > 0); + + duk_require_stack(re_ctx->thr, 1); + range_save = (duk_uint8_t **) duk_push_fixed_buffer_nozero(re_ctx->thr, + sizeof(duk_uint8_t *) * idx_count); + DUK_ASSERT(range_save != NULL); + duk_memcpy(range_save, re_ctx->saved + idx_start, sizeof(duk_uint8_t *) * idx_count); +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + idx_end = idx_start + idx_count; + for (idx = idx_start; idx < idx_end; idx++) { + re_ctx->saved[idx] = NULL; + } +#else + duk_memzero((void *) (re_ctx->saved + idx_start), sizeof(duk_uint8_t *) * idx_count); +#endif + + sub_sp = duk__match_regexp(re_ctx, pc, sp); + if (sub_sp) { + /* match: keep wiped/resaved values */ + DUK_DDD(DUK_DDDPRINT("match: keep wiped/resaved values [%ld,%ld] (captures [%ld,%ld])", + (long) idx_start, (long) (idx_start + idx_count - 1), + (long) (idx_start / 2), (long) ((idx_start + idx_count - 1) / 2))); + duk_pop_unsafe(re_ctx->thr); + sp = sub_sp; + goto match; + } + + /* fail: restore saves */ + DUK_DDD(DUK_DDDPRINT("fail: restore wiped/resaved values [%ld,%ld] (captures [%ld,%ld])", + (long) idx_start, (long) (idx_start + idx_count - 1), + (long) (idx_start / 2), (long) ((idx_start + idx_count - 1) / 2))); + duk_memcpy((void *) (re_ctx->saved + idx_start), + (const void *) range_save, + sizeof(duk_uint8_t *) * idx_count); + duk_pop_unsafe(re_ctx->thr); + goto fail; + } + case DUK_REOP_LOOKPOS: + case DUK_REOP_LOOKNEG: { + /* + * Needs a save of multiple saved[] entries depending on what range + * may be overwritten. Because the regexp parser does no such analysis, + * we currently save the entire saved array here. Lookaheads are thus + * a bit expensive. Note that the saved array is not needed for just + * the lookahead sub-match, but for the matching of the entire sequel. + * + * The temporary save buffer is pushed on to the valstack to handle + * errors correctly. Each lookahead causes a C recursion and pushes + * more stuff on the value stack. If the C recursion limit is less + * than the value stack slack, there is no need to check the stack. + * We do so regardless, just in case. + */ + + duk_int32_t skip; + duk_uint8_t **full_save; + const duk_uint8_t *sub_sp; + + DUK_ASSERT(re_ctx->nsaved > 0); + + duk_require_stack(re_ctx->thr, 1); + full_save = (duk_uint8_t **) duk_push_fixed_buffer_nozero(re_ctx->thr, + sizeof(duk_uint8_t *) * re_ctx->nsaved); + DUK_ASSERT(full_save != NULL); + duk_memcpy(full_save, re_ctx->saved, sizeof(duk_uint8_t *) * re_ctx->nsaved); + + skip = duk__bc_get_i32(re_ctx, &pc); + sub_sp = duk__match_regexp(re_ctx, pc, sp); + if (op == DUK_REOP_LOOKPOS) { + if (!sub_sp) { + goto lookahead_fail; + } + } else { + if (sub_sp) { + goto lookahead_fail; + } + } + sub_sp = duk__match_regexp(re_ctx, pc + skip, sp); + if (sub_sp) { + /* match: keep saves */ + duk_pop_unsafe(re_ctx->thr); + sp = sub_sp; + goto match; + } + + /* fall through */ + + lookahead_fail: + /* fail: restore saves */ + duk_memcpy((void *) re_ctx->saved, + (const void *) full_save, + sizeof(duk_uint8_t *) * re_ctx->nsaved); + duk_pop_unsafe(re_ctx->thr); + goto fail; + } + case DUK_REOP_BACKREFERENCE: { + /* + * Byte matching for back-references would be OK in case- + * sensitive matching. In case-insensitive matching we need + * to canonicalize characters, so back-reference matching needs + * to be done with codepoints instead. So, we just decode + * everything normally here, too. + * + * Note: back-reference index which is 0 or higher than + * NCapturingParens (= number of capturing parens in the + * -entire- regexp) is a compile time error. However, a + * backreference referring to a valid capture which has + * not matched anything always succeeds! See E5 Section + * 15.10.2.9, step 5, sub-step 3. + */ + duk_uint32_t idx; + const duk_uint8_t *p; + + idx = duk__bc_get_u32(re_ctx, &pc); + idx = idx << 1; /* backref n -> saved indices [n*2, n*2+1] */ + if (idx < 2 || idx + 1 >= re_ctx->nsaved) { + /* regexp compiler should catch these */ + DUK_D(DUK_DPRINT("internal error, backreference index insane")); + goto internal_error; + } + if (!re_ctx->saved[idx] || !re_ctx->saved[idx+1]) { + /* capture is 'undefined', always matches! */ + DUK_DDD(DUK_DDDPRINT("backreference: saved[%ld,%ld] not complete, always match", + (long) idx, (long) (idx + 1))); + break; + } + DUK_DDD(DUK_DDDPRINT("backreference: match saved[%ld,%ld]", (long) idx, (long) (idx + 1))); + + p = re_ctx->saved[idx]; + while (p < re_ctx->saved[idx+1]) { + duk_codepoint_t c1, c2; + + /* Note: not necessary to check p against re_ctx->input_end: + * the memory access is checked by duk__inp_get_cp(), while + * valid compiled regexps cannot write a saved[] entry + * which points to outside the string. + */ + c1 = duk__inp_get_cp(re_ctx, &p); + DUK_ASSERT(c1 >= 0); + c2 = duk__inp_get_cp(re_ctx, &sp); + /* No need for an explicit c2 < 0 check: because c1 >= 0, + * the comparison will always fail if c2 < 0. + */ +#if 0 + if (c2 < 0) { + goto fail; + } +#endif + if (c1 != c2) { + goto fail; + } + } + break; + } + default: { + DUK_D(DUK_DPRINT("internal error, regexp opcode error: %ld", (long) op)); + goto internal_error; + } + } + } + + match: + re_ctx->recursion_depth--; + return sp; + + fail: + re_ctx->recursion_depth--; + return NULL; + + internal_error: + DUK_ERROR_INTERNAL(re_ctx->thr); + DUK_WO_NORETURN(return NULL;); +} + +/* + * Exposed matcher function which provides the semantics of RegExp.prototype.exec(). + * + * RegExp.prototype.test() has the same semantics as exec() but does not return the + * result object (which contains the matching string and capture groups). Currently + * there is no separate test() helper, so a temporary result object is created and + * discarded if test() is needed. This is intentional, to save code space. + * + * Input stack: [ ... re_obj input ] + * Output stack: [ ... result ] + */ + +DUK_LOCAL void duk__regexp_match_helper(duk_hthread *thr, duk_small_int_t force_global) { + duk_re_matcher_ctx re_ctx; + duk_hobject *h_regexp; + duk_hstring *h_bytecode; + duk_hstring *h_input; + duk_uint8_t *p_buf; + const duk_uint8_t *pc; + const duk_uint8_t *sp; + duk_small_int_t match = 0; + duk_small_int_t global; + duk_uint_fast32_t i; + double d; + duk_uint32_t char_offset; + + DUK_ASSERT(thr != NULL); + + DUK_DD(DUK_DDPRINT("regexp match: regexp=%!T, input=%!T", + (duk_tval *) duk_get_tval(thr, -2), + (duk_tval *) duk_get_tval(thr, -1))); + + /* + * Regexp instance check, bytecode check, input coercion. + * + * See E5 Section 15.10.6. + */ + + /* TypeError if wrong; class check, see E5 Section 15.10.6 */ + h_regexp = duk_require_hobject_with_class(thr, -2, DUK_HOBJECT_CLASS_REGEXP); + DUK_ASSERT(h_regexp != NULL); + DUK_ASSERT(DUK_HOBJECT_GET_CLASS_NUMBER(h_regexp) == DUK_HOBJECT_CLASS_REGEXP); + DUK_UNREF(h_regexp); + + h_input = duk_to_hstring(thr, -1); + DUK_ASSERT(h_input != NULL); + + duk_xget_owndataprop_stridx_short(thr, -2, DUK_STRIDX_INT_BYTECODE); /* [ ... re_obj input ] -> [ ... re_obj input bc ] */ + h_bytecode = duk_require_hstring(thr, -1); /* no regexp instance should exist without a non-configurable bytecode property */ + DUK_ASSERT(h_bytecode != NULL); + + /* + * Basic context initialization. + * + * Some init values are read from the bytecode header + * whose format is (UTF-8 codepoints): + * + * uint flags + * uint nsaved (even, 2n+2 where n = num captures) + */ + + /* [ ... re_obj input bc ] */ + + duk_memzero(&re_ctx, sizeof(re_ctx)); + + re_ctx.thr = thr; + re_ctx.input = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_input); + re_ctx.input_end = re_ctx.input + DUK_HSTRING_GET_BYTELEN(h_input); + re_ctx.bytecode = (const duk_uint8_t *) DUK_HSTRING_GET_DATA(h_bytecode); + re_ctx.bytecode_end = re_ctx.bytecode + DUK_HSTRING_GET_BYTELEN(h_bytecode); + re_ctx.saved = NULL; + re_ctx.recursion_limit = DUK_USE_REGEXP_EXECUTOR_RECLIMIT; + re_ctx.steps_limit = DUK_RE_EXECUTE_STEPS_LIMIT; + + /* read header */ + pc = re_ctx.bytecode; + re_ctx.re_flags = duk__bc_get_u32(&re_ctx, &pc); + re_ctx.nsaved = duk__bc_get_u32(&re_ctx, &pc); + re_ctx.bytecode = pc; + + DUK_ASSERT(DUK_RE_FLAG_GLOBAL < 0x10000UL); /* must fit into duk_small_int_t */ + global = (duk_small_int_t) (force_global | (duk_small_int_t) (re_ctx.re_flags & DUK_RE_FLAG_GLOBAL)); + + DUK_ASSERT(re_ctx.nsaved >= 2); + DUK_ASSERT((re_ctx.nsaved % 2) == 0); + + p_buf = (duk_uint8_t *) duk_push_fixed_buffer(thr, sizeof(duk_uint8_t *) * re_ctx.nsaved); /* rely on zeroing */ + DUK_UNREF(p_buf); + re_ctx.saved = (const duk_uint8_t **) duk_get_buffer(thr, -1, NULL); + DUK_ASSERT(re_ctx.saved != NULL); + + /* [ ... re_obj input bc saved_buf ] */ + +#if defined(DUK_USE_EXPLICIT_NULL_INIT) + for (i = 0; i < re_ctx.nsaved; i++) { + re_ctx.saved[i] = (duk_uint8_t *) NULL; + } +#elif defined(DUK_USE_ZERO_BUFFER_DATA) + /* buffer is automatically zeroed */ +#else + duk_memzero((void *) p_buf, sizeof(duk_uint8_t *) * re_ctx.nsaved); +#endif + + DUK_DDD(DUK_DDDPRINT("regexp ctx initialized, flags=0x%08lx, nsaved=%ld, recursion_limit=%ld, steps_limit=%ld", + (unsigned long) re_ctx.re_flags, (long) re_ctx.nsaved, (long) re_ctx.recursion_limit, + (long) re_ctx.steps_limit)); + + /* + * Get starting character offset for match, and initialize 'sp' based on it. + * + * Note: lastIndex is non-configurable so it must be present (we check the + * internal class of the object above, so we know it is). User code can set + * its value to an arbitrary (garbage) value though; E5 requires that lastIndex + * be coerced to a number before using. The code below works even if the + * property is missing: the value will then be coerced to zero. + * + * Note: lastIndex may be outside Uint32 range even after ToInteger() coercion. + * For instance, ToInteger(+Infinity) = +Infinity. We track the match offset + * as an integer, but pre-check it to be inside the 32-bit range before the loop. + * If not, the check in E5 Section 15.10.6.2, step 9.a applies. + */ + + /* XXX: lastIndex handling produces a lot of asm */ + + /* [ ... re_obj input bc saved_buf ] */ + + duk_get_prop_stridx_short(thr, -4, DUK_STRIDX_LAST_INDEX); /* -> [ ... re_obj input bc saved_buf lastIndex ] */ + (void) duk_to_int(thr, -1); /* ToInteger(lastIndex) */ + d = duk_get_number(thr, -1); /* integer, but may be +/- Infinite, +/- zero (not NaN, though) */ + duk_pop_nodecref_unsafe(thr); + + if (global) { + if (d < 0.0 || d > (double) DUK_HSTRING_GET_CHARLEN(h_input)) { + /* match fail */ + char_offset = 0; /* not really necessary */ + DUK_ASSERT(match == 0); + goto match_over; + } + char_offset = (duk_uint32_t) d; + } else { + /* lastIndex must be ignored for non-global regexps, but get the + * value for (theoretical) side effects. No side effects can + * really occur, because lastIndex is a normal property and is + * always non-configurable for RegExp instances. + */ + char_offset = (duk_uint32_t) 0; + } + + DUK_ASSERT(char_offset <= DUK_HSTRING_GET_CHARLEN(h_input)); + sp = re_ctx.input + duk_heap_strcache_offset_char2byte(thr, h_input, char_offset); + + /* + * Match loop. + * + * Try matching at different offsets until match found or input exhausted. + */ + + /* [ ... re_obj input bc saved_buf ] */ + + DUK_ASSERT(match == 0); + + for (;;) { + /* char offset in [0, h_input->clen] (both ends inclusive), checked before entry */ + DUK_ASSERT_DISABLE(char_offset >= 0); + DUK_ASSERT(char_offset <= DUK_HSTRING_GET_CHARLEN(h_input)); + + /* Note: re_ctx.steps is intentionally not reset, it applies to the entire unanchored match */ + DUK_ASSERT(re_ctx.recursion_depth == 0); + + DUK_DDD(DUK_DDDPRINT("attempt match at char offset %ld; %p [%p,%p]", + (long) char_offset, (const void *) sp, + (const void *) re_ctx.input, (const void *) re_ctx.input_end)); + + /* + * Note: + * + * - duk__match_regexp() is required not to longjmp() in ordinary "non-match" + * conditions; a longjmp() will terminate the entire matching process. + * + * - Clearing saved[] is not necessary because backtracking does it + * + * - Backtracking also rewinds re_ctx.recursion back to zero, unless an + * internal/limit error occurs (which causes a longjmp()) + * + * - If we supported anchored matches, we would break out here + * unconditionally; however, ECMAScript regexps don't have anchored + * matches. It might make sense to implement a fast bail-out if + * the regexp begins with '^' and sp is not 0: currently we'll just + * run through the entire input string, trivially failing the match + * at every non-zero offset. + */ + + if (duk__match_regexp(&re_ctx, re_ctx.bytecode, sp) != NULL) { + DUK_DDD(DUK_DDDPRINT("match at offset %ld", (long) char_offset)); + match = 1; + break; + } + + /* advance by one character (code point) and one char_offset */ + char_offset++; + if (char_offset > DUK_HSTRING_GET_CHARLEN(h_input)) { + /* + * Note: + * + * - Intentionally attempt (empty) match at char_offset == k_input->clen + * + * - Negative char_offsets have been eliminated and char_offset is duk_uint32_t + * -> no need or use for a negative check + */ + + DUK_DDD(DUK_DDDPRINT("no match after trying all sp offsets")); + break; + } + + /* avoid calling at end of input, will DUK_ERROR (above check suffices to avoid this) */ + (void) duk__utf8_advance(thr, &sp, re_ctx.input, re_ctx.input_end, (duk_uint_fast32_t) 1); + } + + match_over: + + /* + * Matching complete, create result array or return a 'null'. Update lastIndex + * if necessary. See E5 Section 15.10.6.2. + * + * Because lastIndex is a character (not byte) offset, we need the character + * length of the match which we conveniently get as a side effect of interning + * the matching substring (0th index of result array). + * + * saved[0] start pointer (~ byte offset) of current match + * saved[1] end pointer (~ byte offset) of current match (exclusive) + * char_offset start character offset of current match (-> .index of result) + * char_end_offset end character offset (computed below) + */ + + /* [ ... re_obj input bc saved_buf ] */ + + if (match) { +#if defined(DUK_USE_ASSERTIONS) + duk_hobject *h_res; +#endif + duk_uint32_t char_end_offset = 0; + + DUK_DDD(DUK_DDDPRINT("regexp matches at char_offset %ld", (long) char_offset)); + + DUK_ASSERT(re_ctx.nsaved >= 2); /* must have start and end */ + DUK_ASSERT((re_ctx.nsaved % 2) == 0); /* and even number */ + + /* XXX: Array size is known before and (2 * re_ctx.nsaved) but not taken + * advantage of now. The array is not compacted either, as regexp match + * objects are usually short lived. + */ + + duk_push_array(thr); + +#if defined(DUK_USE_ASSERTIONS) + h_res = duk_require_hobject(thr, -1); + DUK_ASSERT(DUK_HOBJECT_HAS_EXTENSIBLE(h_res)); + DUK_ASSERT(DUK_HOBJECT_HAS_EXOTIC_ARRAY(h_res)); + DUK_ASSERT(DUK_HOBJECT_GET_CLASS_NUMBER(h_res) == DUK_HOBJECT_CLASS_ARRAY); +#endif + + /* [ ... re_obj input bc saved_buf res_obj ] */ + + duk_push_u32(thr, char_offset); + duk_xdef_prop_stridx_short_wec(thr, -2, DUK_STRIDX_INDEX); + + duk_dup_m4(thr); + duk_xdef_prop_stridx_short_wec(thr, -2, DUK_STRIDX_INPUT); + + for (i = 0; i < re_ctx.nsaved; i += 2) { + /* Captures which are undefined have NULL pointers and are returned + * as 'undefined'. The same is done when saved[] pointers are insane + * (this should, of course, never happen in practice). + */ + if (re_ctx.saved[i] && re_ctx.saved[i + 1] && re_ctx.saved[i + 1] >= re_ctx.saved[i]) { + duk_push_lstring(thr, + (const char *) re_ctx.saved[i], + (duk_size_t) (re_ctx.saved[i+1] - re_ctx.saved[i])); + if (i == 0) { + /* Assumes that saved[0] and saved[1] are always + * set by regexp bytecode (if not, char_end_offset + * will be zero). Also assumes clen reflects the + * correct char length. + */ + char_end_offset = char_offset + (duk_uint32_t) duk_get_length(thr, -1); /* add charlen */ + } + } else { + duk_push_undefined(thr); + } + + /* [ ... re_obj input bc saved_buf res_obj val ] */ + duk_put_prop_index(thr, -2, (duk_uarridx_t) (i / 2)); + } + + /* [ ... re_obj input bc saved_buf res_obj ] */ + + /* NB: 'length' property is automatically updated by the array setup loop */ + + if (global) { + /* global regexp: lastIndex updated on match */ + duk_push_u32(thr, char_end_offset); + duk_put_prop_stridx_short(thr, -6, DUK_STRIDX_LAST_INDEX); + } else { + /* non-global regexp: lastIndex never updated on match */ + ; + } + } else { + /* + * No match, E5 Section 15.10.6.2, step 9.a.i - 9.a.ii apply, regardless + * of 'global' flag of the RegExp. In particular, if lastIndex is invalid + * initially, it is reset to zero. + */ + + DUK_DDD(DUK_DDDPRINT("regexp does not match")); + + duk_push_null(thr); + + /* [ ... re_obj input bc saved_buf res_obj ] */ + + duk_push_int(thr, 0); + duk_put_prop_stridx_short(thr, -6, DUK_STRIDX_LAST_INDEX); + } + + /* [ ... re_obj input bc saved_buf res_obj ] */ + + duk_insert(thr, -5); + + /* [ ... res_obj re_obj input bc saved_buf ] */ + + duk_pop_n_unsafe(thr, 4); + + /* [ ... res_obj ] */ + + /* XXX: these last tricks are unnecessary if the function is made + * a genuine native function. + */ +} + +DUK_INTERNAL void duk_regexp_match(duk_hthread *thr) { + duk__regexp_match_helper(thr, 0 /*force_global*/); +} + +/* This variant is needed by String.prototype.split(); it needs to perform + * global-style matching on a cloned RegExp which is potentially non-global. + */ +DUK_INTERNAL void duk_regexp_match_force_global(duk_hthread *thr) { + duk__regexp_match_helper(thr, 1 /*force_global*/); +} + +#else /* DUK_USE_REGEXP_SUPPORT */ + +/* regexp support disabled */ + +#endif /* DUK_USE_REGEXP_SUPPORT */ +#line 1 "duk_selftest.c" +/* + * Self tests to ensure execution environment is sane. Intended to catch + * compiler/platform problems which cannot be detected at compile time. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_SELF_TESTS) + +/* + * Unions and structs for self tests + */ + +typedef union { + double d; + duk_uint8_t x[8]; +} duk__test_double_union; + +/* Self test failed. Expects a local variable 'error_count' to exist. */ +#define DUK__FAILED(msg) do { \ + DUK_D(DUK_DPRINT("self test failed: " #msg " at " DUK_FILE_MACRO ":" DUK_MACRO_STRINGIFY(DUK_LINE_MACRO))); \ + error_count++; \ + } while (0) + +#define DUK__DBLUNION_CMP_TRUE(a,b) do { \ + if (duk_memcmp((const void *) (a), (const void *) (b), sizeof(duk__test_double_union)) != 0) { \ + DUK__FAILED("double union compares false (expected true)"); \ + } \ + } while (0) + +#define DUK__DBLUNION_CMP_FALSE(a,b) do { \ + if (duk_memcmp((const void *) (a), (const void *) (b), sizeof(duk__test_double_union)) == 0) { \ + DUK__FAILED("double union compares true (expected false)"); \ + } \ + } while (0) + +typedef union { + duk_uint32_t i; + duk_uint8_t x[8]; +} duk__test_u32_union; + +#if defined(DUK_USE_INTEGER_LE) +#define DUK__U32_INIT(u, a, b, c, d) do { \ + (u)->x[0] = (d); (u)->x[1] = (c); (u)->x[2] = (b); (u)->x[3] = (a); \ + } while (0) +#elif defined(DUK_USE_INTEGER_ME) +#error integer mixed endian not supported now +#elif defined(DUK_USE_INTEGER_BE) +#define DUK__U32_INIT(u, a, b, c, d) do { \ + (u)->x[0] = (a); (u)->x[1] = (b); (u)->x[2] = (c); (u)->x[3] = (d); \ + } while (0) +#else +#error unknown integer endianness +#endif + +#if defined(DUK_USE_DOUBLE_LE) +#define DUK__DOUBLE_INIT(u, a, b, c, d, e, f, g, h) do { \ + (u)->x[0] = (h); (u)->x[1] = (g); (u)->x[2] = (f); (u)->x[3] = (e); \ + (u)->x[4] = (d); (u)->x[5] = (c); (u)->x[6] = (b); (u)->x[7] = (a); \ + } while (0) +#define DUK__DOUBLE_COMPARE(u, a, b, c, d, e, f, g, h) \ + ((u)->x[0] == (h) && (u)->x[1] == (g) && (u)->x[2] == (f) && (u)->x[3] == (e) && \ + (u)->x[4] == (d) && (u)->x[5] == (c) && (u)->x[6] == (b) && (u)->x[7] == (a)) +#elif defined(DUK_USE_DOUBLE_ME) +#define DUK__DOUBLE_INIT(u, a, b, c, d, e, f, g, h) do { \ + (u)->x[0] = (d); (u)->x[1] = (c); (u)->x[2] = (b); (u)->x[3] = (a); \ + (u)->x[4] = (h); (u)->x[5] = (g); (u)->x[6] = (f); (u)->x[7] = (e); \ + } while (0) +#define DUK__DOUBLE_COMPARE(u, a, b, c, d, e, f, g, h) \ + ((u)->x[0] == (d) && (u)->x[1] == (c) && (u)->x[2] == (b) && (u)->x[3] == (a) && \ + (u)->x[4] == (h) && (u)->x[5] == (g) && (u)->x[6] == (f) && (u)->x[7] == (e)) +#elif defined(DUK_USE_DOUBLE_BE) +#define DUK__DOUBLE_INIT(u, a, b, c, d, e, f, g, h) do { \ + (u)->x[0] = (a); (u)->x[1] = (b); (u)->x[2] = (c); (u)->x[3] = (d); \ + (u)->x[4] = (e); (u)->x[5] = (f); (u)->x[6] = (g); (u)->x[7] = (h); \ + } while (0) +#define DUK__DOUBLE_COMPARE(u, a, b, c, d, e, f, g, h) \ + ((u)->x[0] == (a) && (u)->x[1] == (b) && (u)->x[2] == (c) && (u)->x[3] == (d) && \ + (u)->x[4] == (e) && (u)->x[5] == (f) && (u)->x[6] == (g) && (u)->x[7] == (h)) +#else +#error unknown double endianness +#endif + +/* + * Various sanity checks for typing + */ + +DUK_LOCAL duk_uint_t duk__selftest_types(void) { + duk_uint_t error_count = 0; + + if (!(sizeof(duk_int8_t) == 1 && + sizeof(duk_uint8_t) == 1 && + sizeof(duk_int16_t) == 2 && + sizeof(duk_uint16_t) == 2 && + sizeof(duk_int32_t) == 4 && + sizeof(duk_uint32_t) == 4)) { + DUK__FAILED("duk_(u)int{8,16,32}_t size"); + } +#if defined(DUK_USE_64BIT_OPS) + if (!(sizeof(duk_int64_t) == 8 && + sizeof(duk_uint64_t) == 8)) { + DUK__FAILED("duk_(u)int64_t size"); + } +#endif + + if (!(sizeof(duk_size_t) >= sizeof(duk_uint_t))) { + /* Some internal code now assumes that all duk_uint_t values + * can be expressed with a duk_size_t. + */ + DUK__FAILED("duk_size_t is smaller than duk_uint_t"); + } + if (!(sizeof(duk_int_t) >= 4)) { + DUK__FAILED("duk_int_t is not 32 bits"); + } + + return error_count; +} + +/* + * Packed tval sanity + */ + +DUK_LOCAL duk_uint_t duk__selftest_packed_tval(void) { + duk_uint_t error_count = 0; + +#if defined(DUK_USE_PACKED_TVAL) + if (sizeof(void *) > 4) { + DUK__FAILED("packed duk_tval in use but sizeof(void *) > 4"); + } +#endif + + return error_count; +} + +/* + * Two's complement arithmetic. + */ + +DUK_LOCAL duk_uint_t duk__selftest_twos_complement(void) { + duk_uint_t error_count = 0; + volatile int test; + test = -1; + + /* Note that byte order doesn't affect this test: all bytes in + * 'test' will be 0xFF for two's complement. + */ + if (((volatile duk_uint8_t *) &test)[0] != (duk_uint8_t) 0xff) { + DUK__FAILED("two's complement arithmetic"); + } + + return error_count; +} + +/* + * Byte order. Important to self check, because on some exotic platforms + * there is no actual detection but rather assumption based on platform + * defines. + */ + +DUK_LOCAL duk_uint_t duk__selftest_byte_order(void) { + duk_uint_t error_count = 0; + duk__test_u32_union u1; + duk__test_double_union u2; + + /* + * >>> struct.pack('>d', 102030405060).encode('hex') + * '4237c17c6dc40000' + */ + + DUK__U32_INIT(&u1, 0xde, 0xad, 0xbe, 0xef); + DUK__DOUBLE_INIT(&u2, 0x42, 0x37, 0xc1, 0x7c, 0x6d, 0xc4, 0x00, 0x00); + + if (u1.i != (duk_uint32_t) 0xdeadbeefUL) { + DUK__FAILED("duk_uint32_t byte order"); + } + + if (!duk_double_equals(u2.d, 102030405060.0)) { + DUK__FAILED("double byte order"); + } + + return error_count; +} + +/* + * DUK_BSWAP macros + */ + +DUK_LOCAL duk_uint_t duk__selftest_bswap_macros(void) { + duk_uint_t error_count = 0; + volatile duk_uint32_t x32_input, x32_output; + duk_uint32_t x32; + volatile duk_uint16_t x16_input, x16_output; + duk_uint16_t x16; + duk_double_union du; + duk_double_t du_diff; +#if defined(DUK_BSWAP64) + volatile duk_uint64_t x64_input, x64_output; + duk_uint64_t x64; +#endif + + /* Cover both compile time and runtime bswap operations, as these + * may have different bugs. + */ + + x16_input = 0xbeefUL; + x16 = x16_input; + x16 = DUK_BSWAP16(x16); + x16_output = x16; + if (x16_output != (duk_uint16_t) 0xefbeUL) { + DUK__FAILED("DUK_BSWAP16"); + } + + x16 = 0xbeefUL; + x16 = DUK_BSWAP16(x16); + if (x16 != (duk_uint16_t) 0xefbeUL) { + DUK__FAILED("DUK_BSWAP16"); + } + + x32_input = 0xdeadbeefUL; + x32 = x32_input; + x32 = DUK_BSWAP32(x32); + x32_output = x32; + if (x32_output != (duk_uint32_t) 0xefbeaddeUL) { + DUK__FAILED("DUK_BSWAP32"); + } + + x32 = 0xdeadbeefUL; + x32 = DUK_BSWAP32(x32); + if (x32 != (duk_uint32_t) 0xefbeaddeUL) { + DUK__FAILED("DUK_BSWAP32"); + } + +#if defined(DUK_BSWAP64) + x64_input = DUK_U64_CONSTANT(0x8899aabbccddeeff); + x64 = x64_input; + x64 = DUK_BSWAP64(x64); + x64_output = x64; + if (x64_output != (duk_uint64_t) DUK_U64_CONSTANT(0xffeeddccbbaa9988)) { + DUK__FAILED("DUK_BSWAP64"); + } + + x64 = DUK_U64_CONSTANT(0x8899aabbccddeeff); + x64 = DUK_BSWAP64(x64); + if (x64 != (duk_uint64_t) DUK_U64_CONSTANT(0xffeeddccbbaa9988)) { + DUK__FAILED("DUK_BSWAP64"); + } +#endif + + /* >>> struct.unpack('>d', '4000112233445566'.decode('hex')) + * (2.008366013071895,) + */ + + du.uc[0] = 0x40; du.uc[1] = 0x00; du.uc[2] = 0x11; du.uc[3] = 0x22; + du.uc[4] = 0x33; du.uc[5] = 0x44; du.uc[6] = 0x55; du.uc[7] = 0x66; + DUK_DBLUNION_DOUBLE_NTOH(&du); + du_diff = du.d - 2.008366013071895; +#if 0 + DUK_D(DUK_DPRINT("du_diff: %lg\n", (double) du_diff)); +#endif + if (du_diff > 1e-15) { + /* Allow very small lenience because some compilers won't parse + * exact IEEE double constants (happened in matrix testing with + * Linux gcc-4.8 -m32 at least). + */ +#if 0 + DUK_D(DUK_DPRINT("Result of DUK_DBLUNION_DOUBLE_NTOH: %02x %02x %02x %02x %02x %02x %02x %02x\n", + (unsigned int) du.uc[0], (unsigned int) du.uc[1], + (unsigned int) du.uc[2], (unsigned int) du.uc[3], + (unsigned int) du.uc[4], (unsigned int) du.uc[5], + (unsigned int) du.uc[6], (unsigned int) du.uc[7])); +#endif + DUK__FAILED("DUK_DBLUNION_DOUBLE_NTOH"); + } + + return error_count; +} + +/* + * Basic double / byte union memory layout. + */ + +DUK_LOCAL duk_uint_t duk__selftest_double_union_size(void) { + duk_uint_t error_count = 0; + + if (sizeof(duk__test_double_union) != 8) { + DUK__FAILED("invalid union size"); + } + + return error_count; +} + +/* + * Union aliasing, see misc/clang_aliasing.c. + */ + +DUK_LOCAL duk_uint_t duk__selftest_double_aliasing(void) { + /* This testcase fails when Emscripten-generated code runs on Firefox. + * It's not an issue because the failure should only affect packed + * duk_tval representation, which is not used with Emscripten. + */ +#if defined(DUK_USE_PACKED_TVAL) + duk_uint_t error_count = 0; + duk__test_double_union a, b; + + /* Test signaling NaN and alias assignment in all endianness combinations. + */ + + /* little endian */ + a.x[0] = 0x11; a.x[1] = 0x22; a.x[2] = 0x33; a.x[3] = 0x44; + a.x[4] = 0x00; a.x[5] = 0x00; a.x[6] = 0xf1; a.x[7] = 0xff; + b = a; + DUK__DBLUNION_CMP_TRUE(&a, &b); + + /* big endian */ + a.x[0] = 0xff; a.x[1] = 0xf1; a.x[2] = 0x00; a.x[3] = 0x00; + a.x[4] = 0x44; a.x[5] = 0x33; a.x[6] = 0x22; a.x[7] = 0x11; + b = a; + DUK__DBLUNION_CMP_TRUE(&a, &b); + + /* mixed endian */ + a.x[0] = 0x00; a.x[1] = 0x00; a.x[2] = 0xf1; a.x[3] = 0xff; + a.x[4] = 0x11; a.x[5] = 0x22; a.x[6] = 0x33; a.x[7] = 0x44; + b = a; + DUK__DBLUNION_CMP_TRUE(&a, &b); + + return error_count; +#else + DUK_D(DUK_DPRINT("skip double aliasing self test when duk_tval is not packed")); + return 0; +#endif +} + +/* + * Zero sign, see misc/tcc_zerosign2.c. + */ + +DUK_LOCAL duk_uint_t duk__selftest_double_zero_sign(void) { + duk_uint_t error_count = 0; + duk__test_double_union a, b; + + a.d = 0.0; + b.d = -a.d; + DUK__DBLUNION_CMP_FALSE(&a, &b); + + return error_count; +} + +/* + * Rounding mode: Duktape assumes round-to-nearest, check that this is true. + * If we had C99 fenv.h we could check that fegetround() == FE_TONEAREST, + * but we don't want to rely on that header; and even if we did, it's good + * to ensure the rounding actually works. + */ + +DUK_LOCAL duk_uint_t duk__selftest_double_rounding(void) { + duk_uint_t error_count = 0; + duk__test_double_union a, b, c; + +#if 0 + /* Include and test manually; these trigger failures: */ + fesetround(FE_UPWARD); + fesetround(FE_DOWNWARD); + fesetround(FE_TOWARDZERO); + + /* This is the default and passes. */ + fesetround(FE_TONEAREST); +#endif + + /* Rounding tests check that none of the other modes (round to + * +Inf, round to -Inf, round to zero) can be active: + * http://www.gnu.org/software/libc/manual/html_node/Rounding.html + */ + + /* 1.0 + 2^(-53): result is midway between 1.0 and 1.0 + ulp. + * Round to nearest: 1.0 + * Round to +Inf: 1.0 + ulp + * Round to -Inf: 1.0 + * Round to zero: 1.0 + * => Correct result eliminates round to +Inf. + */ + DUK__DOUBLE_INIT(&a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + DUK__DOUBLE_INIT(&b, 0x3c, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + duk_memset((void *) &c, 0, sizeof(c)); + c.d = a.d + b.d; + if (!DUK__DOUBLE_COMPARE(&c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)) { + DUK_D(DUK_DPRINT("broken result (native endiannesss): %02x %02x %02x %02x %02x %02x %02x %02x", + (unsigned int) c.x[0], (unsigned int) c.x[1], + (unsigned int) c.x[2], (unsigned int) c.x[3], + (unsigned int) c.x[4], (unsigned int) c.x[5], + (unsigned int) c.x[6], (unsigned int) c.x[7])); + DUK__FAILED("invalid result from 1.0 + 0.5ulp"); + } + + /* (1.0 + ulp) + 2^(-53): result is midway between 1.0 + ulp and 1.0 + 2*ulp. + * Round to nearest: 1.0 + 2*ulp (round to even mantissa) + * Round to +Inf: 1.0 + 2*ulp + * Round to -Inf: 1.0 + ulp + * Round to zero: 1.0 + ulp + * => Correct result eliminates round to -Inf and round to zero. + */ + DUK__DOUBLE_INIT(&a, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01); + DUK__DOUBLE_INIT(&b, 0x3c, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + duk_memset((void *) &c, 0, sizeof(c)); + c.d = a.d + b.d; + if (!DUK__DOUBLE_COMPARE(&c, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02)) { + DUK_D(DUK_DPRINT("broken result (native endiannesss): %02x %02x %02x %02x %02x %02x %02x %02x", + (unsigned int) c.x[0], (unsigned int) c.x[1], + (unsigned int) c.x[2], (unsigned int) c.x[3], + (unsigned int) c.x[4], (unsigned int) c.x[5], + (unsigned int) c.x[6], (unsigned int) c.x[7])); + DUK__FAILED("invalid result from (1.0 + ulp) + 0.5ulp"); + } + + /* Could do negative number testing too, but the tests above should + * differentiate between IEEE 754 rounding modes. + */ + return error_count; +} + +/* + * fmod(): often a portability issue in embedded or bare platform targets. + * Check for at least minimally correct behavior. Unlike some other math + * functions (like cos()) Duktape relies on fmod() internally too. + */ + +DUK_LOCAL duk_uint_t duk__selftest_fmod(void) { + duk_uint_t error_count = 0; + duk__test_double_union u1, u2; + volatile duk_double_t t1, t2, t3; + + /* fmod() with integer argument and exponent 2^32 is used by e.g. + * ToUint32() and some Duktape internals. + */ + u1.d = DUK_FMOD(10.0, 4294967296.0); + u2.d = 10.0; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + u1.d = DUK_FMOD(4294967306.0, 4294967296.0); + u2.d = 10.0; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + u1.d = DUK_FMOD(73014444042.0, 4294967296.0); + u2.d = 10.0; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + /* 52-bit integer split into two parts: + * >>> 0x1fedcba9876543 + * 8987183256397123 + * >>> float(0x1fedcba9876543) / float(2**53) + * 0.9977777777777778 + */ + u1.d = DUK_FMOD(8987183256397123.0, 4294967296.0); + u2.d = (duk_double_t) 0xa9876543UL; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + t1 = 8987183256397123.0; + t2 = 4294967296.0; + t3 = t1 / t2; + u1.d = DUK_FLOOR(t3); + u2.d = (duk_double_t) 0x1fedcbUL; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + /* C99 behavior is for fmod() result sign to mathc argument sign. */ + u1.d = DUK_FMOD(-10.0, 4294967296.0); + u2.d = -10.0; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + u1.d = DUK_FMOD(-4294967306.0, 4294967296.0); + u2.d = -10.0; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + u1.d = DUK_FMOD(-73014444042.0, 4294967296.0); + u2.d = -10.0; + DUK__DBLUNION_CMP_TRUE(&u1, &u2); + + return error_count; +} + +/* + * Struct size/alignment if platform requires it + * + * There are some compiler specific struct padding pragmas etc in use, this + * selftest ensures they're correctly detected and used. + */ + +DUK_LOCAL duk_uint_t duk__selftest_struct_align(void) { + duk_uint_t error_count = 0; + +#if (DUK_USE_ALIGN_BY == 4) + if ((sizeof(duk_hbuffer_fixed) % 4) != 0) { + DUK__FAILED("sizeof(duk_hbuffer_fixed) not aligned to 4"); + } +#elif (DUK_USE_ALIGN_BY == 8) + if ((sizeof(duk_hbuffer_fixed) % 8) != 0) { + DUK__FAILED("sizeof(duk_hbuffer_fixed) not aligned to 8"); + } +#elif (DUK_USE_ALIGN_BY == 1) + /* no check */ +#else +#error invalid DUK_USE_ALIGN_BY +#endif + return error_count; +} + +/* + * 64-bit arithmetic + * + * There are some platforms/compilers where 64-bit types are available + * but don't work correctly. Test for known cases. + */ + +DUK_LOCAL duk_uint_t duk__selftest_64bit_arithmetic(void) { + duk_uint_t error_count = 0; +#if defined(DUK_USE_64BIT_OPS) + volatile duk_int64_t i; + volatile duk_double_t d; + + /* Catch a double-to-int64 cast issue encountered in practice. */ + d = 2147483648.0; + i = (duk_int64_t) d; + if (i != DUK_I64_CONSTANT(0x80000000)) { + DUK__FAILED("casting 2147483648.0 to duk_int64_t failed"); + } +#else + /* nop */ +#endif + return error_count; +} + +/* + * Casting + */ + +DUK_LOCAL duk_uint_t duk__selftest_cast_double_to_small_uint(void) { + /* + * https://github.com/svaarala/duktape/issues/127#issuecomment-77863473 + */ + + duk_uint_t error_count = 0; + + duk_double_t d1, d2; + duk_small_uint_t u; + + duk_double_t d1v, d2v; + duk_small_uint_t uv; + + /* Test without volatiles */ + + d1 = 1.0; + u = (duk_small_uint_t) d1; + d2 = (duk_double_t) u; + + if (!(duk_double_equals(d1, 1.0) && u == 1 && duk_double_equals(d2, 1.0) && duk_double_equals(d1, d2))) { + DUK__FAILED("double to duk_small_uint_t cast failed"); + } + + /* Same test with volatiles */ + + d1v = 1.0; + uv = (duk_small_uint_t) d1v; + d2v = (duk_double_t) uv; + + if (!(duk_double_equals(d1v, 1.0) && uv == 1 && duk_double_equals(d2v, 1.0) && duk_double_equals(d1v, d2v))) { + DUK__FAILED("double to duk_small_uint_t cast failed"); + } + + return error_count; +} + +DUK_LOCAL duk_uint_t duk__selftest_cast_double_to_uint32(void) { + /* + * This test fails on an exotic ARM target; double-to-uint + * cast is incorrectly clamped to -signed- int highest value. + * + * https://github.com/svaarala/duktape/issues/336 + */ + + duk_uint_t error_count = 0; + duk_double_t dv; + duk_uint32_t uv; + + dv = 3735928559.0; /* 0xdeadbeef in decimal */ + uv = (duk_uint32_t) dv; + + if (uv != 0xdeadbeefUL) { + DUK__FAILED("double to duk_uint32_t cast failed"); + } + + return error_count; +} + +/* + * Minimal test of user supplied allocation functions + * + * - Basic alloc + realloc + free cycle + * + * - Realloc to significantly larger size to (hopefully) trigger a + * relocation and check that relocation copying works + */ + +DUK_LOCAL duk_uint_t duk__selftest_alloc_funcs(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *udata) { + duk_uint_t error_count = 0; + void *ptr; + void *new_ptr; + duk_small_int_t i, j; + unsigned char x; + + if (alloc_func == NULL || realloc_func == NULL || free_func == NULL) { + return 0; + } + + for (i = 1; i <= 256; i++) { + ptr = alloc_func(udata, (duk_size_t) i); + if (ptr == NULL) { + DUK_D(DUK_DPRINT("alloc failed, ignore")); + continue; /* alloc failed, ignore */ + } + for (j = 0; j < i; j++) { + ((unsigned char *) ptr)[j] = (unsigned char) (0x80 + j); + } + new_ptr = realloc_func(udata, ptr, 1024); + if (new_ptr == NULL) { + DUK_D(DUK_DPRINT("realloc failed, ignore")); + free_func(udata, ptr); + continue; /* realloc failed, ignore */ + } + ptr = new_ptr; + for (j = 0; j < i; j++) { + x = ((unsigned char *) ptr)[j]; + if (x != (unsigned char) (0x80 + j)) { + DUK_D(DUK_DPRINT("byte at index %ld doesn't match after realloc: %02lx", + (long) j, (unsigned long) x)); + DUK__FAILED("byte compare after realloc"); + break; + } + } + free_func(udata, ptr); + } + + return error_count; +} + +/* + * Self test main + */ + +DUK_INTERNAL duk_uint_t duk_selftest_run_tests(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *udata) { + duk_uint_t error_count = 0; + + DUK_D(DUK_DPRINT("self test starting")); + + error_count += duk__selftest_types(); + error_count += duk__selftest_packed_tval(); + error_count += duk__selftest_twos_complement(); + error_count += duk__selftest_byte_order(); + error_count += duk__selftest_bswap_macros(); + error_count += duk__selftest_double_union_size(); + error_count += duk__selftest_double_aliasing(); + error_count += duk__selftest_double_zero_sign(); + error_count += duk__selftest_double_rounding(); + error_count += duk__selftest_fmod(); + error_count += duk__selftest_struct_align(); + error_count += duk__selftest_64bit_arithmetic(); + error_count += duk__selftest_cast_double_to_small_uint(); + error_count += duk__selftest_cast_double_to_uint32(); + error_count += duk__selftest_alloc_funcs(alloc_func, realloc_func, free_func, udata); + + DUK_D(DUK_DPRINT("self test complete, total error count: %ld", (long) error_count)); + + return error_count; +} + +#endif /* DUK_USE_SELF_TESTS */ + +/* automatic undefs */ +#undef DUK__DBLUNION_CMP_FALSE +#undef DUK__DBLUNION_CMP_TRUE +#undef DUK__DOUBLE_COMPARE +#undef DUK__DOUBLE_INIT +#undef DUK__FAILED +#undef DUK__U32_INIT +/* #include duk_internal.h -> already included */ +#line 2 "duk_tval.c" + +#if defined(DUK_USE_FASTINT) + +/* + * Manually optimized double-to-fastint downgrade check. + * + * This check has a large impact on performance, especially for fastint + * slow paths, so must be changed carefully. The code should probably be + * optimized for the case where the result does not fit into a fastint, + * to minimize the penalty for "slow path code" dealing with fractions etc. + * + * At least on one tested soft float ARM platform double-to-int64 coercion + * is very slow (and sometimes produces incorrect results, see self tests). + * This algorithm combines a fastint compatibility check and extracting the + * integer value from an IEEE double for setting the tagged fastint. For + * other platforms a more naive approach might be better. + * + * See doc/fastint.rst for details. + */ + +DUK_INTERNAL DUK_ALWAYS_INLINE void duk_tval_set_number_chkfast_fast(duk_tval *tv, duk_double_t x) { + duk_double_union du; + duk_int64_t i; + duk_small_int_t expt; + duk_small_int_t shift; + + /* XXX: optimize for packed duk_tval directly? */ + + du.d = x; + i = (duk_int64_t) DUK_DBLUNION_GET_INT64(&du); + expt = (duk_small_int_t) ((i >> 52) & 0x07ff); + shift = expt - 1023; + + if (shift >= 0 && shift <= 46) { /* exponents 1023 to 1069 */ + duk_int64_t t; + + if (((DUK_I64_CONSTANT(0x000fffffffffffff) >> shift) & i) == 0) { + t = i | DUK_I64_CONSTANT(0x0010000000000000); /* implicit leading one */ + t = t & DUK_I64_CONSTANT(0x001fffffffffffff); + t = t >> (52 - shift); + if (i < 0) { + t = -t; + } + DUK_TVAL_SET_FASTINT(tv, t); + return; + } + } else if (shift == -1023) { /* exponent 0 */ + if (i >= 0 && (i & DUK_I64_CONSTANT(0x000fffffffffffff)) == 0) { + /* Note: reject negative zero. */ + DUK_TVAL_SET_FASTINT(tv, (duk_int64_t) 0); + return; + } + } else if (shift == 47) { /* exponent 1070 */ + if (i < 0 && (i & DUK_I64_CONSTANT(0x000fffffffffffff)) == 0) { + DUK_TVAL_SET_FASTINT(tv, (duk_int64_t) DUK_FASTINT_MIN); + return; + } + } + + DUK_TVAL_SET_DOUBLE(tv, x); + return; +} + +DUK_INTERNAL DUK_NOINLINE void duk_tval_set_number_chkfast_slow(duk_tval *tv, duk_double_t x) { + duk_tval_set_number_chkfast_fast(tv, x); +} + +/* + * Manually optimized number-to-double conversion + */ + +#if defined(DUK_USE_FASTINT) && defined(DUK_USE_PACKED_TVAL) +DUK_INTERNAL DUK_ALWAYS_INLINE duk_double_t duk_tval_get_number_packed(duk_tval *tv) { + duk_double_union du; + duk_uint64_t t; + + t = (duk_uint64_t) DUK_DBLUNION_GET_UINT64(tv); + if ((t >> 48) != DUK_TAG_FASTINT) { + return tv->d; + } else if (t & DUK_U64_CONSTANT(0x0000800000000000)) { + t = (duk_uint64_t) (-((duk_int64_t) t)); /* avoid unary minus on unsigned */ + t = t & DUK_U64_CONSTANT(0x0000ffffffffffff); /* negative */ + t |= DUK_U64_CONSTANT(0xc330000000000000); + DUK_DBLUNION_SET_UINT64(&du, t); + return du.d + 4503599627370496.0; /* 1 << 52 */ + } else if (t != 0) { + t &= DUK_U64_CONSTANT(0x0000ffffffffffff); /* positive */ + t |= DUK_U64_CONSTANT(0x4330000000000000); + DUK_DBLUNION_SET_UINT64(&du, t); + return du.d - 4503599627370496.0; /* 1 << 52 */ + } else { + return 0.0; /* zero */ + } +} +#endif /* DUK_USE_FASTINT && DUK_USE_PACKED_TVAL */ + +#if 0 /* unused */ +#if defined(DUK_USE_FASTINT) && !defined(DUK_USE_PACKED_TVAL) +DUK_INTERNAL DUK_ALWAYS_INLINE duk_double_t duk_tval_get_number_unpacked(duk_tval *tv) { + duk_double_union du; + duk_uint64_t t; + + DUK_ASSERT(tv->t == DUK_TAG_NUMBER || tv->t == DUK_TAG_FASTINT); + + if (tv->t == DUK_TAG_FASTINT) { + if (tv->v.fi >= 0) { + t = DUK_U64_CONSTANT(0x4330000000000000) | (duk_uint64_t) tv->v.fi; + DUK_DBLUNION_SET_UINT64(&du, t); + return du.d - 4503599627370496.0; /* 1 << 52 */ + } else { + t = DUK_U64_CONSTANT(0xc330000000000000) | (duk_uint64_t) (-tv->v.fi); + DUK_DBLUNION_SET_UINT64(&du, t); + return du.d + 4503599627370496.0; /* 1 << 52 */ + } + } else { + return tv->v.d; + } +} +#endif /* DUK_USE_FASTINT && DUK_USE_PACKED_TVAL */ +#endif /* 0 */ + +#if defined(DUK_USE_FASTINT) && !defined(DUK_USE_PACKED_TVAL) +DUK_INTERNAL DUK_ALWAYS_INLINE duk_double_t duk_tval_get_number_unpacked_fastint(duk_tval *tv) { + duk_double_union du; + duk_uint64_t t; + + DUK_ASSERT(tv->t == DUK_TAG_FASTINT); + + if (tv->v.fi >= 0) { + t = DUK_U64_CONSTANT(0x4330000000000000) | (duk_uint64_t) tv->v.fi; + DUK_DBLUNION_SET_UINT64(&du, t); + return du.d - 4503599627370496.0; /* 1 << 52 */ + } else { + t = DUK_U64_CONSTANT(0xc330000000000000) | (duk_uint64_t) (-tv->v.fi); + DUK_DBLUNION_SET_UINT64(&du, t); + return du.d + 4503599627370496.0; /* 1 << 52 */ + } +} +#endif /* DUK_USE_FASTINT && DUK_USE_PACKED_TVAL */ + +#endif /* DUK_USE_FASTINT */ + +/* + * Assertion helpers. + */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL void duk_tval_assert_valid(duk_tval *tv) { + DUK_ASSERT(tv != NULL); +} +#endif +#line 1 "duk_unicode_tables.c" +/* + * Unicode support tables automatically generated during build. + */ + +/* #include duk_internal.h -> already included */ + +/* + * Unicode tables containing ranges of Unicode characters in a + * packed format. These tables are used to match non-ASCII + * characters of complex productions by resorting to a linear + * range-by-range comparison. This is very slow, but is expected + * to be very rare in practical ECMAScript source code, and thus + * compactness is most important. + * + * The tables are matched using uni_range_match() and the format + * is described in tools/extract_chars.py. + */ + +#if defined(DUK_USE_SOURCE_NONBMP) +/* IdentifierStart production with ASCII excluded */ +/* duk_unicode_ids_noa[] */ +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +const duk_uint8_t duk_unicode_ids_noa[1116] = { +249,176,176,80,111,7,47,15,47,254,11,197,191,0,72,2,15,115,66,19,50,7,2,34, +2,240,66,244,50,247,185,249,98,241,99,7,241,159,57,240,181,63,31,241,191, +21,18,245,50,15,1,24,27,35,15,2,2,240,239,15,244,156,15,10,241,26,21,6,240, +101,10,4,15,9,240,152,175,39,240,82,127,56,242,100,15,4,8,159,1,240,5,115, +19,240,98,98,4,52,15,2,14,18,47,0,27,9,85,19,240,98,98,18,18,31,17,50,15,5, +47,2,130,34,240,98,98,18,68,15,4,15,1,31,9,12,115,19,240,98,98,18,68,15,16, +18,47,1,15,3,2,84,34,52,18,2,20,20,36,191,8,15,38,114,34,240,114,240,4,15, +12,38,31,16,5,114,34,240,114,146,68,15,18,2,31,1,31,4,114,34,241,147,15,2, +6,41,47,10,86,240,36,240,130,130,3,111,44,242,2,29,111,44,18,2,66,240,130, +2,146,26,3,66,15,7,63,18,15,49,114,241,79,13,79,101,241,191,6,15,2,85,52,4, +24,37,205,15,3,241,98,6,3,241,178,255,224,63,35,54,32,35,63,25,35,63,17,35, +54,32,35,62,47,41,35,63,51,241,127,0,240,47,70,53,79,254,21,227,240,18,240, +166,243,180,168,194,63,0,240,47,0,240,47,0,194,47,1,242,79,21,5,15,53,244, +152,67,241,34,6,243,107,240,255,35,240,227,76,241,197,240,175,40,240,122, +242,95,68,15,79,241,255,3,111,41,240,238,27,241,207,12,241,79,27,43,241,67, +136,241,179,47,27,50,82,20,6,251,15,50,255,224,8,53,63,22,53,55,32,32,32, +47,15,63,37,38,32,66,38,67,53,92,98,38,246,96,224,240,44,245,112,80,57,32, +68,112,32,32,35,42,51,100,80,240,63,25,255,233,107,241,242,241,242,247,87, +52,29,241,98,6,3,242,136,15,2,240,122,98,98,98,98,98,98,98,111,66,15,254, +12,146,240,184,132,52,95,70,114,47,74,35,111,27,47,78,240,63,11,242,127,0, +255,224,244,255,240,0,138,143,60,255,240,4,14,47,2,255,227,127,243,95,30, +63,253,79,0,177,240,111,31,240,47,15,63,64,241,152,63,87,63,37,52,242,42, +34,35,47,7,240,255,36,240,15,34,243,5,64,33,207,12,191,7,240,191,13,143,31, +240,224,240,36,41,180,47,25,240,146,39,240,111,7,64,79,34,32,65,52,48,32, +240,162,58,130,213,53,53,166,38,47,27,43,159,99,240,255,255,0,26,150,223,7, +95,33,255,240,0,255,143,254,6,3,245,175,24,109,70,2,146,194,66,2,18,18,245, +207,19,255,224,93,240,79,48,63,38,241,171,246,100,47,119,241,111,10,127,10, +207,73,69,53,53,50,241,91,47,10,47,3,33,46,61,241,79,107,243,127,37,255, +223,13,79,33,242,31,16,239,14,111,22,191,14,63,20,87,36,241,207,142,240,79, +20,95,20,95,24,159,36,248,239,254,2,154,240,107,127,138,83,2,241,194,20,3, +240,123,240,122,240,255,51,240,50,27,240,107,240,175,56,242,135,31,50,15,1, +50,34,240,223,28,240,212,240,223,21,114,240,207,13,242,107,240,107,240,62, +240,47,96,243,159,41,242,62,242,62,241,79,254,13,15,13,176,159,6,248,207,7, +223,37,243,223,29,241,47,9,240,207,20,240,240,207,19,64,223,32,240,3,240, +112,32,241,95,2,47,9,244,102,32,35,46,41,143,31,241,135,49,63,6,38,33,36, +64,240,64,212,249,15,37,240,67,240,96,241,47,32,240,97,32,250,175,31,241, +179,241,111,32,240,96,242,223,27,224,243,159,11,253,127,28,246,111,48,241, +16,249,39,63,23,240,32,32,240,224,191,24,128,240,112,207,30,240,80,241,79, +41,255,152,47,21,240,48,242,63,14,246,38,33,47,22,240,112,240,181,33,47,16, +240,0,255,224,59,240,63,254,0,31,254,40,207,88,245,255,3,251,79,254,155,15, +254,50,31,254,236,95,254,19,159,255,0,16,173,255,225,43,143,15,246,63,14, +240,79,32,240,35,241,31,5,111,3,255,225,164,243,15,114,243,182,15,52,207, +50,18,15,14,255,240,0,110,169,255,225,229,255,240,1,64,31,254,1,31,35,47,3, +57,255,224,126,255,231,248,245,182,196,136,159,255,0,6,90,244,82,243,114, +19,3,19,50,178,2,98,243,18,51,114,98,240,194,50,66,4,98,255,224,70,63,9,47, +9,47,15,47,9,47,15,47,9,47,15,47,9,47,15,47,9,39,255,232,40,241,219,111,2, +15,254,6,95,28,255,228,8,251,95,45,243,72,15,254,58,131,47,11,33,32,48,41, +35,32,32,112,80,32,32,34,33,32,48,32,32,32,32,33,32,51,38,35,35,32,41,47,1, +98,36,47,1,255,240,0,3,143,255,0,149,201,241,191,254,242,124,252,227,255, +240,0,87,79,0,255,240,0,194,63,254,177,63,254,17,0, +}; +#else +/* IdentifierStart production with ASCII and non-BMP excluded */ +/* duk_unicode_ids_noabmp[] */ +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +const duk_uint8_t duk_unicode_ids_noabmp[625] = { +249,176,176,80,111,7,47,15,47,254,11,197,191,0,72,2,15,115,66,19,50,7,2,34, +2,240,66,244,50,247,185,249,98,241,99,7,241,159,57,240,181,63,31,241,191, +21,18,245,50,15,1,24,27,35,15,2,2,240,239,15,244,156,15,10,241,26,21,6,240, +101,10,4,15,9,240,152,175,39,240,82,127,56,242,100,15,4,8,159,1,240,5,115, +19,240,98,98,4,52,15,2,14,18,47,0,27,9,85,19,240,98,98,18,18,31,17,50,15,5, +47,2,130,34,240,98,98,18,68,15,4,15,1,31,9,12,115,19,240,98,98,18,68,15,16, +18,47,1,15,3,2,84,34,52,18,2,20,20,36,191,8,15,38,114,34,240,114,240,4,15, +12,38,31,16,5,114,34,240,114,146,68,15,18,2,31,1,31,4,114,34,241,147,15,2, +6,41,47,10,86,240,36,240,130,130,3,111,44,242,2,29,111,44,18,2,66,240,130, +2,146,26,3,66,15,7,63,18,15,49,114,241,79,13,79,101,241,191,6,15,2,85,52,4, +24,37,205,15,3,241,98,6,3,241,178,255,224,63,35,54,32,35,63,25,35,63,17,35, +54,32,35,62,47,41,35,63,51,241,127,0,240,47,70,53,79,254,21,227,240,18,240, +166,243,180,168,194,63,0,240,47,0,240,47,0,194,47,1,242,79,21,5,15,53,244, +152,67,241,34,6,243,107,240,255,35,240,227,76,241,197,240,175,40,240,122, +242,95,68,15,79,241,255,3,111,41,240,238,27,241,207,12,241,79,27,43,241,67, +136,241,179,47,27,50,82,20,6,251,15,50,255,224,8,53,63,22,53,55,32,32,32, +47,15,63,37,38,32,66,38,67,53,92,98,38,246,96,224,240,44,245,112,80,57,32, +68,112,32,32,35,42,51,100,80,240,63,25,255,233,107,241,242,241,242,247,87, +52,29,241,98,6,3,242,136,15,2,240,122,98,98,98,98,98,98,98,111,66,15,254, +12,146,240,184,132,52,95,70,114,47,74,35,111,27,47,78,240,63,11,242,127,0, +255,224,244,255,240,0,138,143,60,255,240,4,14,47,2,255,227,127,243,95,30, +63,253,79,0,177,240,111,31,240,47,15,63,64,241,152,63,87,63,37,52,242,42, +34,35,47,7,240,255,36,240,15,34,243,5,64,33,207,12,191,7,240,191,13,143,31, +240,224,240,36,41,180,47,25,240,146,39,240,111,7,64,79,34,32,65,52,48,32, +240,162,58,130,213,53,53,166,38,47,27,43,159,99,240,255,255,0,26,150,223,7, +95,33,255,240,0,255,143,254,6,3,245,175,24,109,70,2,146,194,66,2,18,18,245, +207,19,255,224,93,240,79,48,63,38,241,171,246,100,47,119,241,111,10,127,10, +207,73,69,53,53,50,0, +}; +#endif + +#if defined(DUK_USE_SOURCE_NONBMP) +/* IdentifierStart production with Letter and ASCII excluded */ +/* duk_unicode_ids_m_let_noa[] */ +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +const duk_uint8_t duk_unicode_ids_m_let_noa[42] = { +255,240,0,94,18,255,233,99,241,51,63,254,215,32,240,184,240,2,255,240,6,89, +249,255,240,4,148,79,37,255,224,192,9,15,120,79,255,0,15,30,245,240, +}; +#else +/* IdentifierStart production with Letter, ASCII, and non-BMP excluded */ +/* duk_unicode_ids_m_let_noabmp[] */ +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +const duk_uint8_t duk_unicode_ids_m_let_noabmp[24] = { +255,240,0,94,18,255,233,99,241,51,63,254,215,32,240,184,240,2,255,240,6,89, +249,0, +}; +#endif + +#if defined(DUK_USE_SOURCE_NONBMP) +/* IdentifierPart production with IdentifierStart and ASCII excluded */ +/* duk_unicode_idp_m_ids_noa[] */ +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +const duk_uint8_t duk_unicode_idp_m_ids_noa[576] = { +255,225,243,246,15,254,0,116,255,191,29,32,33,33,32,243,170,242,47,15,112, +245,118,53,49,35,57,240,144,241,15,11,244,218,240,25,241,56,160,240,163,40, +34,36,241,210,246,158,47,17,242,130,47,2,38,177,57,240,50,242,160,38,49,50, +160,177,57,240,0,50,242,160,36,81,50,64,240,107,64,194,242,160,39,34,34, +240,97,57,181,34,242,160,38,49,50,145,177,57,240,64,242,212,66,35,160,240, +9,240,36,242,182,34,35,129,193,57,240,50,242,160,38,34,35,129,193,57,240, +35,242,145,38,34,35,160,177,57,240,65,243,128,85,32,39,121,49,242,240,54, +215,41,244,144,56,197,57,243,1,121,192,32,32,81,242,63,4,33,106,47,20,160, +245,111,4,41,211,82,34,54,67,235,46,255,225,179,47,254,42,98,240,242,240, +241,241,1,243,47,16,160,57,241,50,57,245,209,241,64,246,139,91,185,247,41, +242,244,242,185,47,13,58,121,240,141,243,68,242,31,1,201,240,56,210,241,12, +57,241,237,242,47,4,153,121,246,130,47,5,80,112,50,251,143,42,36,255,225,0, +31,35,31,5,15,109,197,4,191,254,175,34,247,240,245,47,16,255,225,30,95,91, +31,255,0,100,121,159,55,5,159,18,31,66,31,254,0,64,64,80,240,148,244,161, +242,79,2,185,127,2,234,240,231,240,188,241,227,242,29,240,25,192,185,242, +29,208,145,57,241,50,242,64,34,49,97,32,241,180,97,253,231,33,57,255,240,3, +225,128,255,225,213,240,15,2,240,4,31,10,47,178,159,23,15,254,27,16,253,64, +248,116,255,224,25,159,254,68,178,33,99,241,162,80,249,113,255,225,49,57, +159,254,16,10,250,18,242,126,241,25,240,19,241,250,242,121,114,241,109,41, +97,241,224,210,242,45,147,73,244,75,112,249,43,105,115,242,145,38,49,50, +160,177,54,68,251,47,2,169,80,244,63,4,217,252,118,56,240,209,244,79,1,240, +25,244,60,153,244,94,89,254,78,249,121,253,150,54,64,240,233,241,166,35, +144,170,242,15,0,255,224,137,114,127,2,159,42,240,98,223,108,84,2,18,98,9, +159,34,66,18,73,159,254,3,211,255,240,3,165,217,247,132,242,214,240,185, +255,226,233,2,242,120,63,255,0,59,254,31,255,0,3,186,68,89,115,111,16,63, +134,47,254,71,223,34,255,224,244,242,117,242,41,15,0,15,8,66,239,254,68,70, +47,1,54,33,36,255,118,169,255,224,150,223,254,76,166,245,246,105,255,240, +192,105,175,224,0, +}; +#else +/* IdentifierPart production with IdentifierStart, ASCII, and non-BMP excluded */ +/* duk_unicode_idp_m_ids_noabmp[] */ +/* + * Automatically generated by extract_chars.py, do not edit! + */ + +const duk_uint8_t duk_unicode_idp_m_ids_noabmp[358] = { +255,225,243,246,15,254,0,116,255,191,29,32,33,33,32,243,170,242,47,15,112, +245,118,53,49,35,57,240,144,241,15,11,244,218,240,25,241,56,160,240,163,40, +34,36,241,210,246,158,47,17,242,130,47,2,38,177,57,240,50,242,160,38,49,50, +160,177,57,240,0,50,242,160,36,81,50,64,240,107,64,194,242,160,39,34,34, +240,97,57,181,34,242,160,38,49,50,145,177,57,240,64,242,212,66,35,160,240, +9,240,36,242,182,34,35,129,193,57,240,50,242,160,38,34,35,129,193,57,240, +35,242,145,38,34,35,160,177,57,240,65,243,128,85,32,39,121,49,242,240,54, +215,41,244,144,56,197,57,243,1,121,192,32,32,81,242,63,4,33,106,47,20,160, +245,111,4,41,211,82,34,54,67,235,46,255,225,179,47,254,42,98,240,242,240, +241,241,1,243,47,16,160,57,241,50,57,245,209,241,64,246,139,91,185,247,41, +242,244,242,185,47,13,58,121,240,141,243,68,242,31,1,201,240,56,210,241,12, +57,241,237,242,47,4,153,121,246,130,47,5,80,112,50,251,143,42,36,255,225,0, +31,35,31,5,15,109,197,4,191,254,175,34,247,240,245,47,16,255,225,30,95,91, +31,255,0,100,121,159,55,5,159,18,31,66,31,254,0,64,64,80,240,148,244,161, +242,79,2,185,127,2,234,240,231,240,188,241,227,242,29,240,25,192,185,242, +29,208,145,57,241,50,242,64,34,49,97,32,241,180,97,253,231,33,57,255,240,3, +225,128,255,225,213,240,15,2,240,4,31,10,47,178,159,23,0, +}; +#endif + +/* + * Case conversion tables generated using tools/extract_caseconv.py. + */ + +/* duk_unicode_caseconv_uc[] */ +/* duk_unicode_caseconv_lc[] */ + +/* + * Automatically generated by extract_caseconv.py, do not edit! + */ + +const duk_uint8_t duk_unicode_caseconv_uc[1411] = { +152,3,128,3,0,184,7,192,6,192,112,35,242,199,224,64,74,192,49,32,128,162, +128,108,65,1,189,129,254,131,3,173,3,136,6,7,98,7,34,68,15,12,14,140,72,30, +104,28,112,32,67,0,65,4,0,138,0,128,4,1,88,65,76,83,8,104,14,72,43,16,253, +28,189,6,39,240,39,224,24,114,12,16,132,16,248,0,248,64,129,241,1,241,128, +195,228,3,229,2,7,204,7,206,4,15,160,15,164,6,31,96,31,104,16,62,224,63, +116,8,125,200,127,32,32,251,176,254,208,33,247,129,255,128,67,239,67,253, +64,135,223,7,254,129,15,216,15,220,2,31,208,31,216,4,63,192,63,208,8,133, +192,133,128,129,38,129,37,177,162,195,2,192,5,229,160,2,20,9,170,220,4,232, +40,127,160,255,144,154,136,4,4,4,0,192,9,152,9,144,48,19,160,19,145,0,41, +96,41,69,192,94,128,94,65,128,193,128,193,2,1,161,1,160,6,3,104,3,102,8,7, +56,7,52,64,14,248,14,240,144,31,144,31,130,128,68,96,68,66,64,145,192,145, +130,129,184,129,184,2,3,217,3,216,24,8,194,8,192,68,18,44,18,40,216,38,16, +38,8,112,77,16,77,6,3,192,35,192,18,199,168,71,168,24,15,168,143,172,132, +44,104,44,103,6,89,2,89,0,200,179,176,179,172,21,50,13,50,1,122,104,26,104, +1,212,228,116,228,65,233,204,233,204,143,211,189,83,188,130,167,127,167, +126,11,79,35,79,32,10,158,94,158,88,85,61,173,61,160,97,192,107,64,107,1,0, +226,128,226,3,1,198,1,196,6,3,228,3,226,8,10,0,6,152,16,31,192,31,184,34, +199,50,199,32,65,128,196,0,195,130,1,185,1,184,4,4,205,79,84,8,0,192,143,0, +142,193,1,52,128,203,2,45,39,16,199,5,253,0,11,80,57,192,15,240,23,128,19, +16,4,144,23,240,5,48,24,0,36,48,25,32,25,16,25,80,31,96,25,144,25,128,25, +160,35,208,25,224,34,0,26,128,26,112,27,240,31,112,29,208,24,224,31,48,31, +16,37,2,198,240,37,18,198,208,37,34,199,0,37,48,24,16,37,64,24,96,37,144, +24,240,37,176,25,0,37,202,122,176,38,0,25,48,38,26,122,192,38,48,25,64,38, +90,120,208,38,128,25,112,38,178,198,32,38,202,122,208,39,18,198,224,39,32, +25,208,39,80,25,240,39,210,198,64,40,42,124,80,40,122,123,16,40,128,26,224, +40,144,36,64,40,192,36,80,41,32,27,112,41,218,123,32,41,234,123,0,52,80,57, +144,55,112,55,96,58,192,56,96,60,32,58,48,60,192,56,192,61,0,57,32,61,16, +57,128,61,80,58,96,61,96,58,0,61,112,60,240,63,0,57,160,63,16,58,16,63,32, +63,144,63,48,55,240,63,80,57,80,76,240,76,1,200,0,65,33,200,16,65,65,200, +32,65,225,200,80,66,33,200,96,66,161,200,112,70,33,200,138,100,161,215,154, +119,209,215,210,198,49,216,234,124,97,233,177,230,1,251,224,57,145,254,81, +254,194,20,226,19,34,24,66,24,50,198,18,198,2,198,80,35,162,198,96,35,226, +207,50,207,42,120,202,120,186,121,74,124,74,124,58,124,42,181,58,123,60, +192,27,240,2,152,2,152,10,76,5,120,0,156,3,225,0,37,1,134,1,200,96,115,32, +97,0,96,32,118,24,29,40,24,64,24,8,44,60,10,106,10,164,61,45,0,36,1,152, +143,75,192,10,128,97,3,211,16,2,184,24,80,244,204,0,178,6,20,61,53,0,32, +129,95,15,168,64,116,160,98,99,234,88,29,40,24,152,24,0,250,166,7,74,6,38, +6,2,62,173,129,210,129,137,129,161,15,192,67,225,0,115,35,240,48,248,72,28, +200,252,20,62,20,7,50,63,7,15,133,129,204,143,194,67,225,128,115,35,240, +176,248,104,28,200,252,52,62,28,7,50,63,15,15,135,129,204,143,196,67,225,0, +115,35,241,48,248,72,28,200,252,84,62,20,7,50,63,23,15,133,129,204,143,198, +67,225,128,115,35,241,176,248,104,28,200,252,116,62,28,7,50,63,31,15,135, +129,204,143,200,67,229,0,115,35,242,48,249,72,28,200,252,148,62,84,7,50,63, +39,15,149,129,204,143,202,67,229,128,115,35,242,176,249,104,28,200,252,180, +62,92,7,50,63,47,15,151,129,204,143,204,67,229,0,115,35,243,48,249,72,28, +200,252,212,62,84,7,50,63,55,15,149,129,204,143,206,67,229,128,115,35,243, +176,249,104,28,200,252,244,62,92,7,50,63,63,15,151,129,204,143,208,67,237, +0,115,35,244,48,251,72,28,200,253,20,62,212,7,50,63,71,15,181,129,204,143, +210,67,237,128,115,35,244,176,251,104,28,200,253,52,62,220,7,50,63,79,15, +183,129,204,143,212,67,237,0,115,35,245,48,251,72,28,200,253,84,62,212,7, +50,63,87,15,181,129,204,143,214,67,237,128,115,35,245,176,251,104,28,200, +253,116,62,220,7,50,63,95,15,183,129,204,143,217,67,247,64,115,35,246,112, +28,136,28,200,253,164,7,12,7,50,63,109,1,200,129,161,15,219,224,114,32,104, +64,115,35,247,144,28,136,28,200,254,20,63,148,7,50,63,135,1,203,129,204, +143,226,64,113,32,115,35,248,208,28,184,26,16,254,62,7,46,6,132,7,50,63, +153,1,203,129,204,143,233,96,115,32,97,0,96,3,250,120,28,200,24,64,24,8, +254,180,7,50,6,132,63,175,129,204,129,132,1,161,15,241,96,116,160,97,0,96, +3,252,120,29,40,24,64,24,8,255,36,7,66,6,38,63,205,1,210,129,161,15,243, +224,116,160,97,0,104,67,254,80,255,208,28,200,255,156,7,82,7,50,63,233,1, +199,129,204,143,251,64,117,32,104,67,254,248,29,72,26,16,28,200,255,228,7, +82,7,51,246,1,0,35,0,35,125,128,192,8,192,9,63,96,80,2,48,2,103,216,30,0, +140,0,140,0,147,246,9,128,35,0,35,0,38,125,130,192,10,96,10,159,96,208,2, +152,2,167,216,156,10,136,10,141,246,41,2,162,2,154,253,138,192,168,128,167, +127,98,208,42,112,42,55,216,188,10,136,10,122, +}; +const duk_uint8_t duk_unicode_caseconv_lc[706] = { +160,3,0,3,128,184,6,192,7,192,112,24,144,37,96,64,54,32,81,64,128,226,0, +235,65,129,199,1,230,130,3,145,3,177,34,7,70,7,134,36,15,244,13,236,24,32, +0,34,129,0,65,0,67,4,0,166,32,172,41,132,40,11,64,19,9,208,85,184,80,19, +240,19,248,12,57,32,33,160,172,114,244,67,244,24,248,64,248,0,129,241,129, +241,0,195,229,3,228,2,7,206,7,204,4,15,164,15,160,6,31,104,31,96,16,63,16, +63,0,32,126,96,126,64,64,253,64,253,0,129,251,129,251,0,67,247,67,238,0, +135,242,7,220,130,15,236,15,232,2,31,218,31,118,4,63,208,63,192,8,127,168, +125,232,16,255,192,251,192,33,255,161,247,192,68,44,4,46,4,9,45,137,52,13, +22,0,22,24,47,44,126,2,63,5,254,67,254,130,106,48,16,0,16,19,0,38,64,38,96, +192,78,64,78,132,0,165,0,165,151,1,121,1,122,6,3,4,3,6,8,6,128,6,132,24,13, +152,13,160,32,28,176,28,193,32,59,192,59,226,64,124,128,124,193,0,252,0, +252,148,2,34,2,35,18,4,140,4,142,20,13,192,13,196,16,30,192,30,200,192,70, +0,70,18,32,145,64,145,102,193,48,65,48,131,130,104,2,104,176,30,0,30,1,150, +61,64,61,66,192,125,100,125,68,33,99,57,99,64,50,200,2,200,22,69,157,101, +157,128,169,144,41,144,75,211,64,83,64,142,167,34,167,35,15,78,101,78,102, +126,157,230,157,232,21,59,245,59,248,90,121,10,121,16,84,242,212,242,226, +169,237,41,237,67,12,3,76,5,0,8,6,176,6,180,16,14,32,14,48,48,28,80,28,96, +64,126,224,127,0,139,28,139,28,193,6,3,14,3,16,8,6,224,6,228,21,61,80,19, +48,32,3,1,150,2,105,4,4,118,4,120,8,67,28,180,156,23,240,192,94,0,63,192, +96,64,148,192,97,128,149,0,99,128,119,64,99,192,150,64,100,0,150,192,100, +64,100,128,100,192,152,0,101,0,152,192,101,192,154,0,102,0,102,64,103,64, +156,128,103,192,157,64,105,192,106,0,107,128,162,0,109,192,164,128,124,64, +124,192,125,128,101,64,125,192,111,192,136,0,103,128,142,139,25,64,143,64, +102,128,143,139,25,128,144,192,96,0,145,0,162,64,145,64,163,0,221,128,221, +192,223,192,252,192,225,128,235,0,227,0,243,0,243,192,245,192,253,0,238,0, +254,64,252,129,48,1,51,199,167,128,55,199,239,7,236,199,243,7,240,199,251, +7,249,71,255,7,252,200,73,128,242,72,74,128,26,200,74,192,57,72,76,136,83, +136,96,200,97,11,24,11,24,75,24,128,154,203,24,199,95,75,25,0,159,75,27,64, +148,75,27,128,156,75,27,192,148,11,28,0,148,139,60,139,60,233,223,71,94, +105,226,233,227,41,227,64,153,105,234,192,151,41,235,0,152,105,235,64,155, +41,236,0,167,169,236,64,161,233,236,128,167,105,236,234,212,233,240,169, +240,233,241,41,229,41,241,64,160,169,241,135,99,128,128,152,64,13,32,96, +224, +}; + +#if defined(DUK_USE_REGEXP_CANON_WORKAROUND) +/* + * Automatically generated by extract_caseconv.py, do not edit! + */ + +const duk_uint16_t duk_unicode_re_canon_lookup[65536] = { +0,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,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,123,124,125, +126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, +144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161, +162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179, +180,924,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197, +198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215, +216,217,218,219,220,221,222,223,192,193,194,195,196,197,198,199,200,201, +202,203,204,205,206,207,208,209,210,211,212,213,214,247,216,217,218,219, +220,221,222,376,256,256,258,258,260,260,262,262,264,264,266,266,268,268, +270,270,272,272,274,274,276,276,278,278,280,280,282,282,284,284,286,286, +288,288,290,290,292,292,294,294,296,296,298,298,300,300,302,302,304,305, +306,306,308,308,310,310,312,313,313,315,315,317,317,319,319,321,321,323, +323,325,325,327,327,329,330,330,332,332,334,334,336,336,338,338,340,340, +342,342,344,344,346,346,348,348,350,350,352,352,354,354,356,356,358,358, +360,360,362,362,364,364,366,366,368,368,370,370,372,372,374,374,376,377, +377,379,379,381,381,383,579,385,386,386,388,388,390,391,391,393,394,395, +395,397,398,399,400,401,401,403,404,502,406,407,408,408,573,411,412,413, +544,415,416,416,418,418,420,420,422,423,423,425,426,427,428,428,430,431, +431,433,434,435,435,437,437,439,440,440,442,443,444,444,446,503,448,449, +450,451,452,452,452,455,455,455,458,458,458,461,461,463,463,465,465,467, +467,469,469,471,471,473,473,475,475,398,478,478,480,480,482,482,484,484, +486,486,488,488,490,490,492,492,494,494,496,497,497,497,500,500,502,503, +504,504,506,506,508,508,510,510,512,512,514,514,516,516,518,518,520,520, +522,522,524,524,526,526,528,528,530,530,532,532,534,534,536,536,538,538, +540,540,542,542,544,545,546,546,548,548,550,550,552,552,554,554,556,556, +558,558,560,560,562,562,564,565,566,567,568,569,570,571,571,573,574,11390, +11391,577,577,579,580,581,582,582,584,584,586,586,588,588,590,590,11375, +11373,11376,385,390,597,393,394,600,399,602,400,42923L,605,606,607,403, +42924L,610,404,612,42893L,42922L,615,407,406,42926L,11362,42925L,621,622, +412,624,11374,413,627,628,415,630,631,632,633,634,635,636,11364,638,639, +422,641,42949L,425,644,645,646,42929L,430,580,433,434,581,653,654,655,656, +657,439,659,660,661,662,663,664,665,666,667,668,42930L,42928L,671,672,673, +674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691, +692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709, +710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727, +728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745, +746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763, +764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781, +782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799, +800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817, +818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835, +836,921,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853, +854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871, +872,873,874,875,876,877,878,879,880,880,882,882,884,885,886,886,888,889, +890,1021,1022,1023,894,895,896,897,898,899,900,901,902,903,904,905,906,907, +908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925, +926,927,928,929,930,931,932,933,934,935,936,937,938,939,902,904,905,906, +944,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929, +931,931,932,933,934,935,936,937,938,939,908,910,911,975,914,920,978,979, +980,934,928,975,984,984,986,986,988,988,990,990,992,992,994,994,996,996, +998,998,1000,1000,1002,1002,1004,1004,1006,1006,922,929,1017,895,1012,917, +1014,1015,1015,1017,1018,1018,1020,1021,1022,1023,1024,1025,1026,1027,1028, +1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043, +1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058, +1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1040,1041, +1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056, +1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071, +1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038, +1039,1120,1120,1122,1122,1124,1124,1126,1126,1128,1128,1130,1130,1132,1132, +1134,1134,1136,1136,1138,1138,1140,1140,1142,1142,1144,1144,1146,1146,1148, +1148,1150,1150,1152,1152,1154,1155,1156,1157,1158,1159,1160,1161,1162,1162, +1164,1164,1166,1166,1168,1168,1170,1170,1172,1172,1174,1174,1176,1176,1178, +1178,1180,1180,1182,1182,1184,1184,1186,1186,1188,1188,1190,1190,1192,1192, +1194,1194,1196,1196,1198,1198,1200,1200,1202,1202,1204,1204,1206,1206,1208, +1208,1210,1210,1212,1212,1214,1214,1216,1217,1217,1219,1219,1221,1221,1223, +1223,1225,1225,1227,1227,1229,1229,1216,1232,1232,1234,1234,1236,1236,1238, +1238,1240,1240,1242,1242,1244,1244,1246,1246,1248,1248,1250,1250,1252,1252, +1254,1254,1256,1256,1258,1258,1260,1260,1262,1262,1264,1264,1266,1266,1268, +1268,1270,1270,1272,1272,1274,1274,1276,1276,1278,1278,1280,1280,1282,1282, +1284,1284,1286,1286,1288,1288,1290,1290,1292,1292,1294,1294,1296,1296,1298, +1298,1300,1300,1302,1302,1304,1304,1306,1306,1308,1308,1310,1310,1312,1312, +1314,1314,1316,1316,1318,1318,1320,1320,1322,1322,1324,1324,1326,1326,1328, +1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343, +1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358, +1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373, +1374,1375,1376,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340, +1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355, +1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1415,1416,1417,1418, +1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433, +1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448, +1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463, +1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478, +1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493, +1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508, +1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523, +1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538, +1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553, +1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568, +1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583, +1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598, +1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613, +1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628, +1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643, +1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658, +1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673, +1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688, +1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703, +1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718, +1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733, +1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748, +1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763, +1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778, +1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793, +1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808, +1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823, +1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838, +1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853, +1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868, +1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883, +1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898, +1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913, +1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928, +1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943, +1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958, +1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973, +1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988, +1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003, +2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018, +2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033, +2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048, +2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063, +2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078, +2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093, +2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108, +2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123, +2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138, +2139,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153, +2154,2155,2156,2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168, +2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183, +2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198, +2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213, +2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228, +2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243, +2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258, +2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273, +2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288, +2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303, +2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318, +2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333, +2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348, +2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363, +2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378, +2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393, +2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408, +2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423, +2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438, +2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453, +2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468, +2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483, +2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498, +2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513, +2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528, +2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543, +2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558, +2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573, +2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588, +2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603, +2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618, +2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630,2631,2632,2633, +2634,2635,2636,2637,2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648, +2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663, +2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678, +2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693, +2694,2695,2696,2697,2698,2699,2700,2701,2702,2703,2704,2705,2706,2707,2708, +2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723, +2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736,2737,2738, +2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753, +2754,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768, +2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783, +2784,2785,2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798, +2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813, +2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828, +2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843, +2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858, +2859,2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873, +2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888, +2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903, +2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918, +2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933, +2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948, +2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963, +2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978, +2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993, +2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008, +3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023, +3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038, +3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053, +3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068, +3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083, +3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098, +3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113, +3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128, +3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143, +3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158, +3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173, +3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188, +3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203, +3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218, +3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233, +3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248, +3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263, +3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278, +3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293, +3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308, +3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323, +3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338, +3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353, +3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368, +3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383, +3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398, +3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413, +3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428, +3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443, +3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458, +3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473, +3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488, +3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503, +3504,3505,3506,3507,3508,3509,3510,3511,3512,3513,3514,3515,3516,3517,3518, +3519,3520,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533, +3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548, +3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,3563, +3564,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578, +3579,3580,3581,3582,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593, +3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608, +3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623, +3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638, +3639,3640,3641,3642,3643,3644,3645,3646,3647,3648,3649,3650,3651,3652,3653, +3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668, +3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683, +3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698, +3699,3700,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713, +3714,3715,3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728, +3729,3730,3731,3732,3733,3734,3735,3736,3737,3738,3739,3740,3741,3742,3743, +3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755,3756,3757,3758, +3759,3760,3761,3762,3763,3764,3765,3766,3767,3768,3769,3770,3771,3772,3773, +3774,3775,3776,3777,3778,3779,3780,3781,3782,3783,3784,3785,3786,3787,3788, +3789,3790,3791,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3802,3803, +3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818, +3819,3820,3821,3822,3823,3824,3825,3826,3827,3828,3829,3830,3831,3832,3833, +3834,3835,3836,3837,3838,3839,3840,3841,3842,3843,3844,3845,3846,3847,3848, +3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,3859,3860,3861,3862,3863, +3864,3865,3866,3867,3868,3869,3870,3871,3872,3873,3874,3875,3876,3877,3878, +3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893, +3894,3895,3896,3897,3898,3899,3900,3901,3902,3903,3904,3905,3906,3907,3908, +3909,3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923, +3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938, +3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3949,3950,3951,3952,3953, +3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968, +3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983, +3984,3985,3986,3987,3988,3989,3990,3991,3992,3993,3994,3995,3996,3997,3998, +3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013, +4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028, +4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043, +4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4057,4058, +4059,4060,4061,4062,4063,4064,4065,4066,4067,4068,4069,4070,4071,4072,4073, +4074,4075,4076,4077,4078,4079,4080,4081,4082,4083,4084,4085,4086,4087,4088, +4089,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,4101,4102,4103, +4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118, +4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133, +4134,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148, +4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163, +4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178, +4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193, +4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208, +4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223, +4224,4225,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238, +4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253, +4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268, +4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283, +4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4294,4295,4296,4297,4298, +4299,4300,4301,4302,4303,7312,7313,7314,7315,7316,7317,7318,7319,7320,7321, +7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336, +7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351, +7352,7353,7354,4347,4348,7357,7358,7359,4352,4353,4354,4355,4356,4357,4358, +4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373, +4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388, +4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403, +4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418, +4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433, +4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448, +4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463, +4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478, +4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493, +4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508, +4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523, +4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538, +4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553, +4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568, +4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583, +4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598, +4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613, +4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628, +4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643, +4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658, +4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673, +4674,4675,4676,4677,4678,4679,4680,4681,4682,4683,4684,4685,4686,4687,4688, +4689,4690,4691,4692,4693,4694,4695,4696,4697,4698,4699,4700,4701,4702,4703, +4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718, +4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733, +4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4745,4746,4747,4748, +4749,4750,4751,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763, +4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778, +4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,4790,4791,4792,4793, +4794,4795,4796,4797,4798,4799,4800,4801,4802,4803,4804,4805,4806,4807,4808, +4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4823, +4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838, +4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853, +4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868, +4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4881,4882,4883, +4884,4885,4886,4887,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898, +4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913, +4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928, +4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943, +4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4955,4956,4957,4958, +4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973, +4974,4975,4976,4977,4978,4979,4980,4981,4982,4983,4984,4985,4986,4987,4988, +4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003, +5004,5005,5006,5007,5008,5009,5010,5011,5012,5013,5014,5015,5016,5017,5018, +5019,5020,5021,5022,5023,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033, +5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048, +5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063, +5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078, +5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093, +5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108, +5109,5110,5111,5104,5105,5106,5107,5108,5109,5118,5119,5120,5121,5122,5123, +5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138, +5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153, +5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168, +5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183, +5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198, +5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213, +5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228, +5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243, +5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258, +5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273, +5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288, +5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303, +5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318, +5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333, +5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348, +5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, +5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378, +5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393, +5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, +5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423, +5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438, +5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453, +5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468, +5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483, +5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498, +5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513, +5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528, +5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543, +5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558, +5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573, +5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588, +5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603, +5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618, +5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633, +5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, +5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663, +5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678, +5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693, +5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708, +5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723, +5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738, +5739,5740,5741,5742,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753, +5754,5755,5756,5757,5758,5759,5760,5761,5762,5763,5764,5765,5766,5767,5768, +5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783, +5784,5785,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797,5798, +5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813, +5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828, +5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843, +5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858, +5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873, +5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, +5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903, +5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918, +5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933, +5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948, +5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963, +5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978, +5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993, +5994,5995,5996,5997,5998,5999,6000,6001,6002,6003,6004,6005,6006,6007,6008, +6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023, +6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038, +6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053, +6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068, +6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083, +6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098, +6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113, +6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128, +6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143, +6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158, +6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173, +6174,6175,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188, +6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203, +6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218, +6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233, +6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248, +6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263, +6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278, +6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293, +6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308, +6309,6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323, +6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338, +6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353, +6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368, +6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383, +6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397,6398, +6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413, +6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428, +6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443, +6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458, +6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473, +6474,6475,6476,6477,6478,6479,6480,6481,6482,6483,6484,6485,6486,6487,6488, +6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503, +6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518, +6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533, +6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548, +6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563, +6564,6565,6566,6567,6568,6569,6570,6571,6572,6573,6574,6575,6576,6577,6578, +6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593, +6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608, +6609,6610,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,6622,6623, +6624,6625,6626,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,6638, +6639,6640,6641,6642,6643,6644,6645,6646,6647,6648,6649,6650,6651,6652,6653, +6654,6655,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668, +6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6679,6680,6681,6682,6683, +6684,6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698, +6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713, +6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728, +6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6741,6742,6743, +6744,6745,6746,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,6758, +6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773, +6774,6775,6776,6777,6778,6779,6780,6781,6782,6783,6784,6785,6786,6787,6788, +6789,6790,6791,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803, +6804,6805,6806,6807,6808,6809,6810,6811,6812,6813,6814,6815,6816,6817,6818, +6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833, +6834,6835,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,6847,6848, +6849,6850,6851,6852,6853,6854,6855,6856,6857,6858,6859,6860,6861,6862,6863, +6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,6878, +6879,6880,6881,6882,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893, +6894,6895,6896,6897,6898,6899,6900,6901,6902,6903,6904,6905,6906,6907,6908, +6909,6910,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923, +6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938, +6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953, +6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968, +6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6981,6982,6983, +6984,6985,6986,6987,6988,6989,6990,6991,6992,6993,6994,6995,6996,6997,6998, +6999,7000,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013, +7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028, +7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042,7043, +7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058, +7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073, +7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7086,7087,7088, +7089,7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103, +7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118, +7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133, +7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7147,7148, +7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163, +7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178, +7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193, +7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208, +7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223, +7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238, +7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253, +7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268, +7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283, +7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,1042,1044,1054, +1057,1058,1058,1066,1122,42570L,7305,7306,7307,7308,7309,7310,7311,7312, +7313,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327, +7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342, +7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7355,7356,7357, +7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372, +7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387, +7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402, +7403,7404,7405,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417, +7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432, +7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447, +7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462, +7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477, +7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492, +7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507, +7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522, +7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537, +7538,7539,7540,7541,7542,7543,7544,42877L,7546,7547,7548,11363,7550,7551, +7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565, +42950L,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579, +7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594, +7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609, +7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7623,7624, +7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639, +7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654, +7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669, +7670,7671,7672,7673,7674,7675,7676,7677,7678,7679,7680,7680,7682,7682,7684, +7684,7686,7686,7688,7688,7690,7690,7692,7692,7694,7694,7696,7696,7698,7698, +7700,7700,7702,7702,7704,7704,7706,7706,7708,7708,7710,7710,7712,7712,7714, +7714,7716,7716,7718,7718,7720,7720,7722,7722,7724,7724,7726,7726,7728,7728, +7730,7730,7732,7732,7734,7734,7736,7736,7738,7738,7740,7740,7742,7742,7744, +7744,7746,7746,7748,7748,7750,7750,7752,7752,7754,7754,7756,7756,7758,7758, +7760,7760,7762,7762,7764,7764,7766,7766,7768,7768,7770,7770,7772,7772,7774, +7774,7776,7776,7778,7778,7780,7780,7782,7782,7784,7784,7786,7786,7788,7788, +7790,7790,7792,7792,7794,7794,7796,7796,7798,7798,7800,7800,7802,7802,7804, +7804,7806,7806,7808,7808,7810,7810,7812,7812,7814,7814,7816,7816,7818,7818, +7820,7820,7822,7822,7824,7824,7826,7826,7828,7828,7830,7831,7832,7833,7834, +7776,7836,7837,7838,7839,7840,7840,7842,7842,7844,7844,7846,7846,7848,7848, +7850,7850,7852,7852,7854,7854,7856,7856,7858,7858,7860,7860,7862,7862,7864, +7864,7866,7866,7868,7868,7870,7870,7872,7872,7874,7874,7876,7876,7878,7878, +7880,7880,7882,7882,7884,7884,7886,7886,7888,7888,7890,7890,7892,7892,7894, +7894,7896,7896,7898,7898,7900,7900,7902,7902,7904,7904,7906,7906,7908,7908, +7910,7910,7912,7912,7914,7914,7916,7916,7918,7918,7920,7920,7922,7922,7924, +7924,7926,7926,7928,7928,7930,7930,7932,7932,7934,7934,7944,7945,7946,7947, +7948,7949,7950,7951,7944,7945,7946,7947,7948,7949,7950,7951,7960,7961,7962, +7963,7964,7965,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7976,7977, +7978,7979,7980,7981,7982,7983,7976,7977,7978,7979,7980,7981,7982,7983,7992, +7993,7994,7995,7996,7997,7998,7999,7992,7993,7994,7995,7996,7997,7998,7999, +8008,8009,8010,8011,8012,8013,8006,8007,8008,8009,8010,8011,8012,8013,8014, +8015,8016,8025,8018,8027,8020,8029,8022,8031,8024,8025,8026,8027,8028,8029, +8030,8031,8040,8041,8042,8043,8044,8045,8046,8047,8040,8041,8042,8043,8044, +8045,8046,8047,8122,8123,8136,8137,8138,8139,8154,8155,8184,8185,8170,8171, +8186,8187,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074, +8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089, +8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104, +8105,8106,8107,8108,8109,8110,8111,8120,8121,8114,8115,8116,8117,8118,8119, +8120,8121,8122,8123,8124,8125,921,8127,8128,8129,8130,8131,8132,8133,8134, +8135,8136,8137,8138,8139,8140,8141,8142,8143,8152,8153,8146,8147,8148,8149, +8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8168,8169,8162,8163,8164, +8172,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179, +8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194, +8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209, +8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224, +8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239, +8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254, +8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269, +8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8283,8284, +8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299, +8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314, +8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329, +8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344, +8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359, +8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374, +8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389, +8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404, +8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419, +8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434, +8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449, +8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464, +8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479, +8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494, +8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509, +8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524, +8525,8498,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539, +8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554, +8555,8556,8557,8558,8559,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553, +8554,8555,8556,8557,8558,8559,8576,8577,8578,8579,8579,8581,8582,8583,8584, +8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599, +8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614, +8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629, +8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644, +8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659, +8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674, +8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,8686,8687,8688,8689, +8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704, +8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719, +8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734, +8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8746,8747,8748,8749, +8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8761,8762,8763,8764, +8765,8766,8767,8768,8769,8770,8771,8772,8773,8774,8775,8776,8777,8778,8779, +8780,8781,8782,8783,8784,8785,8786,8787,8788,8789,8790,8791,8792,8793,8794, +8795,8796,8797,8798,8799,8800,8801,8802,8803,8804,8805,8806,8807,8808,8809, +8810,8811,8812,8813,8814,8815,8816,8817,8818,8819,8820,8821,8822,8823,8824, +8825,8826,8827,8828,8829,8830,8831,8832,8833,8834,8835,8836,8837,8838,8839, +8840,8841,8842,8843,8844,8845,8846,8847,8848,8849,8850,8851,8852,8853,8854, +8855,8856,8857,8858,8859,8860,8861,8862,8863,8864,8865,8866,8867,8868,8869, +8870,8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8881,8882,8883,8884, +8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899, +8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8911,8912,8913,8914, +8915,8916,8917,8918,8919,8920,8921,8922,8923,8924,8925,8926,8927,8928,8929, +8930,8931,8932,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,8944, +8945,8946,8947,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959, +8960,8961,8962,8963,8964,8965,8966,8967,8968,8969,8970,8971,8972,8973,8974, +8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989, +8990,8991,8992,8993,8994,8995,8996,8997,8998,8999,9000,9001,9002,9003,9004, +9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019, +9020,9021,9022,9023,9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034, +9035,9036,9037,9038,9039,9040,9041,9042,9043,9044,9045,9046,9047,9048,9049, +9050,9051,9052,9053,9054,9055,9056,9057,9058,9059,9060,9061,9062,9063,9064, +9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,9078,9079, +9080,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094, +9095,9096,9097,9098,9099,9100,9101,9102,9103,9104,9105,9106,9107,9108,9109, +9110,9111,9112,9113,9114,9115,9116,9117,9118,9119,9120,9121,9122,9123,9124, +9125,9126,9127,9128,9129,9130,9131,9132,9133,9134,9135,9136,9137,9138,9139, +9140,9141,9142,9143,9144,9145,9146,9147,9148,9149,9150,9151,9152,9153,9154, +9155,9156,9157,9158,9159,9160,9161,9162,9163,9164,9165,9166,9167,9168,9169, +9170,9171,9172,9173,9174,9175,9176,9177,9178,9179,9180,9181,9182,9183,9184, +9185,9186,9187,9188,9189,9190,9191,9192,9193,9194,9195,9196,9197,9198,9199, +9200,9201,9202,9203,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9214, +9215,9216,9217,9218,9219,9220,9221,9222,9223,9224,9225,9226,9227,9228,9229, +9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244, +9245,9246,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,9259, +9260,9261,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274, +9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,9288,9289, +9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304, +9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9317,9318,9319, +9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,9332,9333,9334, +9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349, +9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364, +9365,9366,9367,9368,9369,9370,9371,9372,9373,9374,9375,9376,9377,9378,9379, +9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394, +9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,9407,9408,9409, +9410,9411,9412,9413,9414,9415,9416,9417,9418,9419,9420,9421,9422,9423,9398, +9399,9400,9401,9402,9403,9404,9405,9406,9407,9408,9409,9410,9411,9412,9413, +9414,9415,9416,9417,9418,9419,9420,9421,9422,9423,9450,9451,9452,9453,9454, +9455,9456,9457,9458,9459,9460,9461,9462,9463,9464,9465,9466,9467,9468,9469, +9470,9471,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,9482,9483,9484, +9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499, +9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514, +9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529, +9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544, +9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559, +9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574, +9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9588,9589, +9590,9591,9592,9593,9594,9595,9596,9597,9598,9599,9600,9601,9602,9603,9604, +9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9616,9617,9618,9619, +9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9631,9632,9633,9634, +9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9647,9648,9649, +9650,9651,9652,9653,9654,9655,9656,9657,9658,9659,9660,9661,9662,9663,9664, +9665,9666,9667,9668,9669,9670,9671,9672,9673,9674,9675,9676,9677,9678,9679, +9680,9681,9682,9683,9684,9685,9686,9687,9688,9689,9690,9691,9692,9693,9694, +9695,9696,9697,9698,9699,9700,9701,9702,9703,9704,9705,9706,9707,9708,9709, +9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9723,9724, +9725,9726,9727,9728,9729,9730,9731,9732,9733,9734,9735,9736,9737,9738,9739, +9740,9741,9742,9743,9744,9745,9746,9747,9748,9749,9750,9751,9752,9753,9754, +9755,9756,9757,9758,9759,9760,9761,9762,9763,9764,9765,9766,9767,9768,9769, +9770,9771,9772,9773,9774,9775,9776,9777,9778,9779,9780,9781,9782,9783,9784, +9785,9786,9787,9788,9789,9790,9791,9792,9793,9794,9795,9796,9797,9798,9799, +9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9812,9813,9814, +9815,9816,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829, +9830,9831,9832,9833,9834,9835,9836,9837,9838,9839,9840,9841,9842,9843,9844, +9845,9846,9847,9848,9849,9850,9851,9852,9853,9854,9855,9856,9857,9858,9859, +9860,9861,9862,9863,9864,9865,9866,9867,9868,9869,9870,9871,9872,9873,9874, +9875,9876,9877,9878,9879,9880,9881,9882,9883,9884,9885,9886,9887,9888,9889, +9890,9891,9892,9893,9894,9895,9896,9897,9898,9899,9900,9901,9902,9903,9904, +9905,9906,9907,9908,9909,9910,9911,9912,9913,9914,9915,9916,9917,9918,9919, +9920,9921,9922,9923,9924,9925,9926,9927,9928,9929,9930,9931,9932,9933,9934, +9935,9936,9937,9938,9939,9940,9941,9942,9943,9944,9945,9946,9947,9948,9949, +9950,9951,9952,9953,9954,9955,9956,9957,9958,9959,9960,9961,9962,9963,9964, +9965,9966,9967,9968,9969,9970,9971,9972,9973,9974,9975,9976,9977,9978,9979, +9980,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994, +9995,9996,9997,9998,9999,10000,10001,10002,10003,10004,10005,10006,10007, +10008,10009,10010,10011,10012,10013,10014,10015,10016,10017,10018,10019, +10020,10021,10022,10023,10024,10025,10026,10027,10028,10029,10030,10031, +10032,10033,10034,10035,10036,10037,10038,10039,10040,10041,10042,10043, +10044,10045,10046,10047,10048,10049,10050,10051,10052,10053,10054,10055, +10056,10057,10058,10059,10060,10061,10062,10063,10064,10065,10066,10067, +10068,10069,10070,10071,10072,10073,10074,10075,10076,10077,10078,10079, +10080,10081,10082,10083,10084,10085,10086,10087,10088,10089,10090,10091, +10092,10093,10094,10095,10096,10097,10098,10099,10100,10101,10102,10103, +10104,10105,10106,10107,10108,10109,10110,10111,10112,10113,10114,10115, +10116,10117,10118,10119,10120,10121,10122,10123,10124,10125,10126,10127, +10128,10129,10130,10131,10132,10133,10134,10135,10136,10137,10138,10139, +10140,10141,10142,10143,10144,10145,10146,10147,10148,10149,10150,10151, +10152,10153,10154,10155,10156,10157,10158,10159,10160,10161,10162,10163, +10164,10165,10166,10167,10168,10169,10170,10171,10172,10173,10174,10175, +10176,10177,10178,10179,10180,10181,10182,10183,10184,10185,10186,10187, +10188,10189,10190,10191,10192,10193,10194,10195,10196,10197,10198,10199, +10200,10201,10202,10203,10204,10205,10206,10207,10208,10209,10210,10211, +10212,10213,10214,10215,10216,10217,10218,10219,10220,10221,10222,10223, +10224,10225,10226,10227,10228,10229,10230,10231,10232,10233,10234,10235, +10236,10237,10238,10239,10240,10241,10242,10243,10244,10245,10246,10247, +10248,10249,10250,10251,10252,10253,10254,10255,10256,10257,10258,10259, +10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271, +10272,10273,10274,10275,10276,10277,10278,10279,10280,10281,10282,10283, +10284,10285,10286,10287,10288,10289,10290,10291,10292,10293,10294,10295, +10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,10306,10307, +10308,10309,10310,10311,10312,10313,10314,10315,10316,10317,10318,10319, +10320,10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,10331, +10332,10333,10334,10335,10336,10337,10338,10339,10340,10341,10342,10343, +10344,10345,10346,10347,10348,10349,10350,10351,10352,10353,10354,10355, +10356,10357,10358,10359,10360,10361,10362,10363,10364,10365,10366,10367, +10368,10369,10370,10371,10372,10373,10374,10375,10376,10377,10378,10379, +10380,10381,10382,10383,10384,10385,10386,10387,10388,10389,10390,10391, +10392,10393,10394,10395,10396,10397,10398,10399,10400,10401,10402,10403, +10404,10405,10406,10407,10408,10409,10410,10411,10412,10413,10414,10415, +10416,10417,10418,10419,10420,10421,10422,10423,10424,10425,10426,10427, +10428,10429,10430,10431,10432,10433,10434,10435,10436,10437,10438,10439, +10440,10441,10442,10443,10444,10445,10446,10447,10448,10449,10450,10451, +10452,10453,10454,10455,10456,10457,10458,10459,10460,10461,10462,10463, +10464,10465,10466,10467,10468,10469,10470,10471,10472,10473,10474,10475, +10476,10477,10478,10479,10480,10481,10482,10483,10484,10485,10486,10487, +10488,10489,10490,10491,10492,10493,10494,10495,10496,10497,10498,10499, +10500,10501,10502,10503,10504,10505,10506,10507,10508,10509,10510,10511, +10512,10513,10514,10515,10516,10517,10518,10519,10520,10521,10522,10523, +10524,10525,10526,10527,10528,10529,10530,10531,10532,10533,10534,10535, +10536,10537,10538,10539,10540,10541,10542,10543,10544,10545,10546,10547, +10548,10549,10550,10551,10552,10553,10554,10555,10556,10557,10558,10559, +10560,10561,10562,10563,10564,10565,10566,10567,10568,10569,10570,10571, +10572,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10583, +10584,10585,10586,10587,10588,10589,10590,10591,10592,10593,10594,10595, +10596,10597,10598,10599,10600,10601,10602,10603,10604,10605,10606,10607, +10608,10609,10610,10611,10612,10613,10614,10615,10616,10617,10618,10619, +10620,10621,10622,10623,10624,10625,10626,10627,10628,10629,10630,10631, +10632,10633,10634,10635,10636,10637,10638,10639,10640,10641,10642,10643, +10644,10645,10646,10647,10648,10649,10650,10651,10652,10653,10654,10655, +10656,10657,10658,10659,10660,10661,10662,10663,10664,10665,10666,10667, +10668,10669,10670,10671,10672,10673,10674,10675,10676,10677,10678,10679, +10680,10681,10682,10683,10684,10685,10686,10687,10688,10689,10690,10691, +10692,10693,10694,10695,10696,10697,10698,10699,10700,10701,10702,10703, +10704,10705,10706,10707,10708,10709,10710,10711,10712,10713,10714,10715, +10716,10717,10718,10719,10720,10721,10722,10723,10724,10725,10726,10727, +10728,10729,10730,10731,10732,10733,10734,10735,10736,10737,10738,10739, +10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10751, +10752,10753,10754,10755,10756,10757,10758,10759,10760,10761,10762,10763, +10764,10765,10766,10767,10768,10769,10770,10771,10772,10773,10774,10775, +10776,10777,10778,10779,10780,10781,10782,10783,10784,10785,10786,10787, +10788,10789,10790,10791,10792,10793,10794,10795,10796,10797,10798,10799, +10800,10801,10802,10803,10804,10805,10806,10807,10808,10809,10810,10811, +10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823, +10824,10825,10826,10827,10828,10829,10830,10831,10832,10833,10834,10835, +10836,10837,10838,10839,10840,10841,10842,10843,10844,10845,10846,10847, +10848,10849,10850,10851,10852,10853,10854,10855,10856,10857,10858,10859, +10860,10861,10862,10863,10864,10865,10866,10867,10868,10869,10870,10871, +10872,10873,10874,10875,10876,10877,10878,10879,10880,10881,10882,10883, +10884,10885,10886,10887,10888,10889,10890,10891,10892,10893,10894,10895, +10896,10897,10898,10899,10900,10901,10902,10903,10904,10905,10906,10907, +10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918,10919, +10920,10921,10922,10923,10924,10925,10926,10927,10928,10929,10930,10931, +10932,10933,10934,10935,10936,10937,10938,10939,10940,10941,10942,10943, +10944,10945,10946,10947,10948,10949,10950,10951,10952,10953,10954,10955, +10956,10957,10958,10959,10960,10961,10962,10963,10964,10965,10966,10967, +10968,10969,10970,10971,10972,10973,10974,10975,10976,10977,10978,10979, +10980,10981,10982,10983,10984,10985,10986,10987,10988,10989,10990,10991, +10992,10993,10994,10995,10996,10997,10998,10999,11000,11001,11002,11003, +11004,11005,11006,11007,11008,11009,11010,11011,11012,11013,11014,11015, +11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027, +11028,11029,11030,11031,11032,11033,11034,11035,11036,11037,11038,11039, +11040,11041,11042,11043,11044,11045,11046,11047,11048,11049,11050,11051, +11052,11053,11054,11055,11056,11057,11058,11059,11060,11061,11062,11063, +11064,11065,11066,11067,11068,11069,11070,11071,11072,11073,11074,11075, +11076,11077,11078,11079,11080,11081,11082,11083,11084,11085,11086,11087, +11088,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099, +11100,11101,11102,11103,11104,11105,11106,11107,11108,11109,11110,11111, +11112,11113,11114,11115,11116,11117,11118,11119,11120,11121,11122,11123, +11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,11135, +11136,11137,11138,11139,11140,11141,11142,11143,11144,11145,11146,11147, +11148,11149,11150,11151,11152,11153,11154,11155,11156,11157,11158,11159, +11160,11161,11162,11163,11164,11165,11166,11167,11168,11169,11170,11171, +11172,11173,11174,11175,11176,11177,11178,11179,11180,11181,11182,11183, +11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11195, +11196,11197,11198,11199,11200,11201,11202,11203,11204,11205,11206,11207, +11208,11209,11210,11211,11212,11213,11214,11215,11216,11217,11218,11219, +11220,11221,11222,11223,11224,11225,11226,11227,11228,11229,11230,11231, +11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11243, +11244,11245,11246,11247,11248,11249,11250,11251,11252,11253,11254,11255, +11256,11257,11258,11259,11260,11261,11262,11263,11264,11265,11266,11267, +11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279, +11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291, +11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303, +11304,11305,11306,11307,11308,11309,11310,11311,11264,11265,11266,11267, +11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279, +11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291, +11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303, +11304,11305,11306,11307,11308,11309,11310,11359,11360,11360,11362,11363, +11364,570,574,11367,11367,11369,11369,11371,11371,11373,11374,11375,11376, +11377,11378,11378,11380,11381,11381,11383,11384,11385,11386,11387,11388, +11389,11390,11391,11392,11392,11394,11394,11396,11396,11398,11398,11400, +11400,11402,11402,11404,11404,11406,11406,11408,11408,11410,11410,11412, +11412,11414,11414,11416,11416,11418,11418,11420,11420,11422,11422,11424, +11424,11426,11426,11428,11428,11430,11430,11432,11432,11434,11434,11436, +11436,11438,11438,11440,11440,11442,11442,11444,11444,11446,11446,11448, +11448,11450,11450,11452,11452,11454,11454,11456,11456,11458,11458,11460, +11460,11462,11462,11464,11464,11466,11466,11468,11468,11470,11470,11472, +11472,11474,11474,11476,11476,11478,11478,11480,11480,11482,11482,11484, +11484,11486,11486,11488,11488,11490,11490,11492,11493,11494,11495,11496, +11497,11498,11499,11499,11501,11501,11503,11504,11505,11506,11506,11508, +11509,11510,11511,11512,11513,11514,11515,11516,11517,11518,11519,4256, +4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271, +4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286, +4287,4288,4289,4290,4291,4292,4293,11558,4295,11560,11561,11562,11563, +11564,4301,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575, +11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587, +11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599, +11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611, +11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623, +11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11634,11635, +11636,11637,11638,11639,11640,11641,11642,11643,11644,11645,11646,11647, +11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659, +11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11671, +11672,11673,11674,11675,11676,11677,11678,11679,11680,11681,11682,11683, +11684,11685,11686,11687,11688,11689,11690,11691,11692,11693,11694,11695, +11696,11697,11698,11699,11700,11701,11702,11703,11704,11705,11706,11707, +11708,11709,11710,11711,11712,11713,11714,11715,11716,11717,11718,11719, +11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,11731, +11732,11733,11734,11735,11736,11737,11738,11739,11740,11741,11742,11743, +11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755, +11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767, +11768,11769,11770,11771,11772,11773,11774,11775,11776,11777,11778,11779, +11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,11791, +11792,11793,11794,11795,11796,11797,11798,11799,11800,11801,11802,11803, +11804,11805,11806,11807,11808,11809,11810,11811,11812,11813,11814,11815, +11816,11817,11818,11819,11820,11821,11822,11823,11824,11825,11826,11827, +11828,11829,11830,11831,11832,11833,11834,11835,11836,11837,11838,11839, +11840,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850,11851, +11852,11853,11854,11855,11856,11857,11858,11859,11860,11861,11862,11863, +11864,11865,11866,11867,11868,11869,11870,11871,11872,11873,11874,11875, +11876,11877,11878,11879,11880,11881,11882,11883,11884,11885,11886,11887, +11888,11889,11890,11891,11892,11893,11894,11895,11896,11897,11898,11899, +11900,11901,11902,11903,11904,11905,11906,11907,11908,11909,11910,11911, +11912,11913,11914,11915,11916,11917,11918,11919,11920,11921,11922,11923, +11924,11925,11926,11927,11928,11929,11930,11931,11932,11933,11934,11935, +11936,11937,11938,11939,11940,11941,11942,11943,11944,11945,11946,11947, +11948,11949,11950,11951,11952,11953,11954,11955,11956,11957,11958,11959, +11960,11961,11962,11963,11964,11965,11966,11967,11968,11969,11970,11971, +11972,11973,11974,11975,11976,11977,11978,11979,11980,11981,11982,11983, +11984,11985,11986,11987,11988,11989,11990,11991,11992,11993,11994,11995, +11996,11997,11998,11999,12000,12001,12002,12003,12004,12005,12006,12007, +12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019, +12020,12021,12022,12023,12024,12025,12026,12027,12028,12029,12030,12031, +12032,12033,12034,12035,12036,12037,12038,12039,12040,12041,12042,12043, +12044,12045,12046,12047,12048,12049,12050,12051,12052,12053,12054,12055, +12056,12057,12058,12059,12060,12061,12062,12063,12064,12065,12066,12067, +12068,12069,12070,12071,12072,12073,12074,12075,12076,12077,12078,12079, +12080,12081,12082,12083,12084,12085,12086,12087,12088,12089,12090,12091, +12092,12093,12094,12095,12096,12097,12098,12099,12100,12101,12102,12103, +12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115, +12116,12117,12118,12119,12120,12121,12122,12123,12124,12125,12126,12127, +12128,12129,12130,12131,12132,12133,12134,12135,12136,12137,12138,12139, +12140,12141,12142,12143,12144,12145,12146,12147,12148,12149,12150,12151, +12152,12153,12154,12155,12156,12157,12158,12159,12160,12161,12162,12163, +12164,12165,12166,12167,12168,12169,12170,12171,12172,12173,12174,12175, +12176,12177,12178,12179,12180,12181,12182,12183,12184,12185,12186,12187, +12188,12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199, +12200,12201,12202,12203,12204,12205,12206,12207,12208,12209,12210,12211, +12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,12222,12223, +12224,12225,12226,12227,12228,12229,12230,12231,12232,12233,12234,12235, +12236,12237,12238,12239,12240,12241,12242,12243,12244,12245,12246,12247, +12248,12249,12250,12251,12252,12253,12254,12255,12256,12257,12258,12259, +12260,12261,12262,12263,12264,12265,12266,12267,12268,12269,12270,12271, +12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283, +12284,12285,12286,12287,12288,12289,12290,12291,12292,12293,12294,12295, +12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,12306,12307, +12308,12309,12310,12311,12312,12313,12314,12315,12316,12317,12318,12319, +12320,12321,12322,12323,12324,12325,12326,12327,12328,12329,12330,12331, +12332,12333,12334,12335,12336,12337,12338,12339,12340,12341,12342,12343, +12344,12345,12346,12347,12348,12349,12350,12351,12352,12353,12354,12355, +12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367, +12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379, +12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391, +12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403, +12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415, +12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427, +12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12439, +12440,12441,12442,12443,12444,12445,12446,12447,12448,12449,12450,12451, +12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463, +12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475, +12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487, +12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499, +12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511, +12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523, +12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535, +12536,12537,12538,12539,12540,12541,12542,12543,12544,12545,12546,12547, +12548,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559, +12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571, +12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583, +12584,12585,12586,12587,12588,12589,12590,12591,12592,12593,12594,12595, +12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607, +12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619, +12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631, +12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643, +12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655, +12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667, +12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679, +12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691, +12692,12693,12694,12695,12696,12697,12698,12699,12700,12701,12702,12703, +12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715, +12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727, +12728,12729,12730,12731,12732,12733,12734,12735,12736,12737,12738,12739, +12740,12741,12742,12743,12744,12745,12746,12747,12748,12749,12750,12751, +12752,12753,12754,12755,12756,12757,12758,12759,12760,12761,12762,12763, +12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774,12775, +12776,12777,12778,12779,12780,12781,12782,12783,12784,12785,12786,12787, +12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799, +12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811, +12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823, +12824,12825,12826,12827,12828,12829,12830,12831,12832,12833,12834,12835, +12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847, +12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12858,12859, +12860,12861,12862,12863,12864,12865,12866,12867,12868,12869,12870,12871, +12872,12873,12874,12875,12876,12877,12878,12879,12880,12881,12882,12883, +12884,12885,12886,12887,12888,12889,12890,12891,12892,12893,12894,12895, +12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907, +12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919, +12920,12921,12922,12923,12924,12925,12926,12927,12928,12929,12930,12931, +12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943, +12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955, +12956,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967, +12968,12969,12970,12971,12972,12973,12974,12975,12976,12977,12978,12979, +12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990,12991, +12992,12993,12994,12995,12996,12997,12998,12999,13000,13001,13002,13003, +13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015, +13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027, +13028,13029,13030,13031,13032,13033,13034,13035,13036,13037,13038,13039, +13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051, +13052,13053,13054,13055,13056,13057,13058,13059,13060,13061,13062,13063, +13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075, +13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087, +13088,13089,13090,13091,13092,13093,13094,13095,13096,13097,13098,13099, +13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111, +13112,13113,13114,13115,13116,13117,13118,13119,13120,13121,13122,13123, +13124,13125,13126,13127,13128,13129,13130,13131,13132,13133,13134,13135, +13136,13137,13138,13139,13140,13141,13142,13143,13144,13145,13146,13147, +13148,13149,13150,13151,13152,13153,13154,13155,13156,13157,13158,13159, +13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170,13171, +13172,13173,13174,13175,13176,13177,13178,13179,13180,13181,13182,13183, +13184,13185,13186,13187,13188,13189,13190,13191,13192,13193,13194,13195, +13196,13197,13198,13199,13200,13201,13202,13203,13204,13205,13206,13207, +13208,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13219, +13220,13221,13222,13223,13224,13225,13226,13227,13228,13229,13230,13231, +13232,13233,13234,13235,13236,13237,13238,13239,13240,13241,13242,13243, +13244,13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255, +13256,13257,13258,13259,13260,13261,13262,13263,13264,13265,13266,13267, +13268,13269,13270,13271,13272,13273,13274,13275,13276,13277,13278,13279, +13280,13281,13282,13283,13284,13285,13286,13287,13288,13289,13290,13291, +13292,13293,13294,13295,13296,13297,13298,13299,13300,13301,13302,13303, +13304,13305,13306,13307,13308,13309,13310,13311,13312,13313,13314,13315, +13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327, +13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339, +13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351, +13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363, +13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375, +13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387, +13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399, +13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411, +13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423, +13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435, +13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447, +13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459, +13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471, +13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483, +13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495, +13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507, +13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519, +13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531, +13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543, +13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555, +13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567, +13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579, +13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591, +13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603, +13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615, +13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627, +13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639, +13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651, +13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663, +13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675, +13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687, +13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699, +13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711, +13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723, +13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735, +13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747, +13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759, +13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771, +13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783, +13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795, +13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807, +13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819, +13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831, +13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843, +13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855, +13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867, +13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879, +13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891, +13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903, +13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915, +13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927, +13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939, +13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951, +13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963, +13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975, +13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987, +13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999, +14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011, +14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023, +14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035, +14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047, +14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059, +14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071, +14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083, +14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095, +14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107, +14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119, +14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131, +14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143, +14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155, +14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167, +14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179, +14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191, +14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203, +14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215, +14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227, +14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239, +14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251, +14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263, +14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275, +14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287, +14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299, +14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311, +14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323, +14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335, +14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347, +14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359, +14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,14371, +14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383, +14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395, +14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407, +14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419, +14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431, +14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443, +14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455, +14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467, +14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479, +14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491, +14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503, +14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515, +14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527, +14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539, +14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551, +14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563, +14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575, +14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587, +14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599, +14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611, +14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623, +14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635, +14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647, +14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659, +14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671, +14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683, +14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695, +14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707, +14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719, +14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731, +14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743, +14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755, +14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767, +14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779, +14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791, +14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803, +14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815, +14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827, +14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839, +14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851, +14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863, +14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875, +14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887, +14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899, +14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911, +14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923, +14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935, +14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947, +14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959, +14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971, +14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983, +14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995, +14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007, +15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019, +15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031, +15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043, +15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055, +15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067, +15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079, +15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091, +15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103, +15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115, +15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127, +15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139, +15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151, +15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163, +15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175, +15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187, +15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199, +15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211, +15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223, +15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235, +15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247, +15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259, +15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271, +15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283, +15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295, +15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307, +15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319, +15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331, +15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343, +15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355, +15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367, +15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379, +15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391, +15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403, +15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415, +15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427, +15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439, +15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451, +15452,15453,15454,15455,15456,15457,15458,15459,15460,15461,15462,15463, +15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475, +15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487, +15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499, +15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511, +15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523, +15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535, +15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547, +15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559, +15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571, +15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583, +15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595, +15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607, +15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619, +15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631, +15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643, +15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655, +15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667, +15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679, +15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691, +15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703, +15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715, +15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727, +15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739, +15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751, +15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763, +15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775, +15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787, +15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799, +15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811, +15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823, +15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835, +15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847, +15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859, +15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871, +15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883, +15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895, +15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907, +15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919, +15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931, +15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943, +15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955, +15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967, +15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979, +15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991, +15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003, +16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015, +16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027, +16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039, +16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051, +16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063, +16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075, +16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087, +16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099, +16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111, +16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123, +16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135, +16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147, +16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159, +16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171, +16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183, +16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195, +16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207, +16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219, +16220,16221,16222,16223,16224,16225,16226,16227,16228,16229,16230,16231, +16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243, +16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255, +16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267, +16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279, +16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291, +16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303, +16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315, +16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327, +16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339, +16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351, +16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363, +16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375, +16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387, +16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399, +16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411, +16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423, +16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435, +16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447, +16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459, +16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471, +16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483, +16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495, +16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507, +16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519, +16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531, +16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543, +16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555, +16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567, +16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579, +16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591, +16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603, +16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615, +16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627, +16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639, +16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651, +16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663, +16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675, +16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687, +16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699, +16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711, +16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723, +16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735, +16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747, +16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759, +16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771, +16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783, +16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795, +16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807, +16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819, +16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831, +16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843, +16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855, +16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867, +16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879, +16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891, +16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903, +16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915, +16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,16926,16927, +16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939, +16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951, +16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963, +16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975, +16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987, +16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999, +17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011, +17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023, +17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035, +17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047, +17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059, +17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071, +17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083, +17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095, +17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107, +17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119, +17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131, +17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143, +17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155, +17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167, +17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179, +17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191, +17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203, +17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215, +17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227, +17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239, +17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251, +17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263, +17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275, +17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287, +17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299, +17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311, +17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323, +17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335, +17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347, +17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359, +17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371, +17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383, +17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395, +17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407, +17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419, +17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431, +17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443, +17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455, +17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467, +17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479, +17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491, +17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503, +17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515, +17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527, +17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539, +17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551, +17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563, +17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575, +17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587, +17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599, +17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611, +17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623, +17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635, +17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647, +17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659, +17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671, +17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683, +17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695, +17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707, +17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719, +17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731, +17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743, +17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755, +17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767, +17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779, +17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791, +17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803, +17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815, +17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827, +17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839, +17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851, +17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863, +17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875, +17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887, +17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899, +17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911, +17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923, +17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935, +17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947, +17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959, +17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971, +17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983, +17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995, +17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007, +18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019, +18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031, +18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043, +18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055, +18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067, +18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079, +18080,18081,18082,18083,18084,18085,18086,18087,18088,18089,18090,18091, +18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103, +18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115, +18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127, +18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139, +18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151, +18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163, +18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175, +18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187, +18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199, +18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211, +18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223, +18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235, +18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247, +18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259, +18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271, +18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283, +18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295, +18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307, +18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319, +18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331, +18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343, +18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355, +18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367, +18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379, +18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391, +18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403, +18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415, +18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427, +18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439, +18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451, +18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463, +18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475, +18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487, +18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499, +18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511, +18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523, +18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535, +18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547, +18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559, +18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571, +18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583, +18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595, +18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607, +18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619, +18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631, +18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643, +18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655, +18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667, +18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679, +18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691, +18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703, +18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715, +18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727, +18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739, +18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751, +18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763, +18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775, +18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787, +18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799, +18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811, +18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823, +18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835, +18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847, +18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859, +18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871, +18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883, +18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895, +18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907, +18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919, +18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931, +18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943, +18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955, +18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967, +18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979, +18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991, +18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003, +19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015, +19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027, +19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039, +19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051, +19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063, +19064,19065,19066,19067,19068,19069,19070,19071,19072,19073,19074,19075, +19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087, +19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099, +19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111, +19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123, +19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135, +19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147, +19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159, +19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171, +19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183, +19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195, +19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207, +19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219, +19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231, +19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243, +19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255, +19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267, +19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279, +19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291, +19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303, +19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315, +19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327, +19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339, +19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351, +19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363, +19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375, +19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387, +19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399, +19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411, +19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423, +19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435, +19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447, +19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459, +19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471, +19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483, +19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495, +19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507, +19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519, +19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531, +19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543, +19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555, +19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567, +19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579, +19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591, +19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603, +19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615, +19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627, +19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639, +19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651, +19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663, +19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675, +19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687, +19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699, +19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711, +19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723, +19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735, +19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747, +19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759, +19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771, +19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783, +19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795, +19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807, +19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819, +19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831, +19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843, +19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855, +19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867, +19868,19869,19870,19871,19872,19873,19874,19875,19876,19877,19878,19879, +19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891, +19892,19893,19894,19895,19896,19897,19898,19899,19900,19901,19902,19903, +19904,19905,19906,19907,19908,19909,19910,19911,19912,19913,19914,19915, +19916,19917,19918,19919,19920,19921,19922,19923,19924,19925,19926,19927, +19928,19929,19930,19931,19932,19933,19934,19935,19936,19937,19938,19939, +19940,19941,19942,19943,19944,19945,19946,19947,19948,19949,19950,19951, +19952,19953,19954,19955,19956,19957,19958,19959,19960,19961,19962,19963, +19964,19965,19966,19967,19968,19969,19970,19971,19972,19973,19974,19975, +19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987, +19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999, +20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011, +20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023, +20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035, +20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047, +20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059, +20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071, +20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083, +20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095, +20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107, +20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119, +20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131, +20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143, +20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155, +20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167, +20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179, +20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191, +20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203, +20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215, +20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227, +20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239, +20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251, +20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263, +20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275, +20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287, +20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299, +20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311, +20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323, +20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335, +20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347, +20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359, +20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371, +20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383, +20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395, +20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407, +20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419, +20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431, +20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443, +20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455, +20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467, +20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479, +20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491, +20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503, +20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515, +20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527, +20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539, +20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551, +20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563, +20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575, +20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587, +20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599, +20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611, +20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623, +20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635, +20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647, +20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659, +20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671, +20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683, +20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695, +20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707, +20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719, +20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731, +20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743, +20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755, +20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767, +20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779, +20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791, +20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803, +20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815, +20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827, +20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839, +20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851, +20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863, +20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875, +20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887, +20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899, +20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911, +20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923, +20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935, +20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947, +20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959, +20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971, +20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983, +20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995, +20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007, +21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019, +21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031, +21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043, +21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055, +21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067, +21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079, +21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091, +21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103, +21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115, +21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127, +21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139, +21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151, +21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163, +21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175, +21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187, +21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199, +21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211, +21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223, +21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235, +21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247, +21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259, +21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271, +21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283, +21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295, +21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307, +21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319, +21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331, +21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343, +21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355, +21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367, +21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379, +21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391, +21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403, +21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415, +21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427, +21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439, +21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451, +21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463, +21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475, +21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487, +21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499, +21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511, +21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523, +21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535, +21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547, +21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559, +21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571, +21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583, +21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595, +21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607, +21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619, +21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631, +21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643, +21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655, +21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667, +21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679, +21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691, +21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703, +21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715, +21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727, +21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739, +21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751, +21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763, +21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775, +21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787, +21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799, +21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811, +21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823, +21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835, +21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847, +21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859, +21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871, +21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883, +21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895, +21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907, +21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919, +21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931, +21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943, +21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955, +21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967, +21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979, +21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991, +21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003, +22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015, +22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027, +22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039, +22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051, +22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063, +22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075, +22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087, +22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099, +22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111, +22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123, +22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135, +22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147, +22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159, +22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171, +22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183, +22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195, +22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207, +22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219, +22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231, +22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243, +22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255, +22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267, +22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279, +22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291, +22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303, +22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315, +22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327, +22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339, +22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351, +22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363, +22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375, +22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387, +22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399, +22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411, +22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423, +22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435, +22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447, +22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459, +22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471, +22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483, +22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495, +22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507, +22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519, +22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531, +22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543, +22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555, +22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567, +22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579, +22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591, +22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603, +22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615, +22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,22626,22627, +22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639, +22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651, +22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663, +22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675, +22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687, +22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699, +22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711, +22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723, +22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735, +22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747, +22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759, +22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771, +22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783, +22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795, +22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807, +22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819, +22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831, +22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843, +22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855, +22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867, +22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879, +22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891, +22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903, +22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915, +22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927, +22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939, +22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951, +22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963, +22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975, +22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987, +22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999, +23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011, +23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023, +23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035, +23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047, +23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059, +23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071, +23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083, +23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095, +23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107, +23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119, +23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131, +23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143, +23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155, +23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167, +23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179, +23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191, +23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203, +23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215, +23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227, +23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239, +23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251, +23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263, +23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275, +23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287, +23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299, +23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311, +23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323, +23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335, +23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347, +23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359, +23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371, +23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383, +23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395, +23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407, +23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419, +23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431, +23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443, +23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455, +23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467, +23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479, +23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491, +23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503, +23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515, +23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527, +23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539, +23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551, +23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563, +23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575, +23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587, +23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599, +23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611, +23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623, +23624,23625,23626,23627,23628,23629,23630,23631,23632,23633,23634,23635, +23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647, +23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659, +23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671, +23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683, +23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695, +23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707, +23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719, +23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731, +23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743, +23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755, +23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767, +23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779, +23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791, +23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803, +23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815, +23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827, +23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839, +23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851, +23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863, +23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875, +23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887, +23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899, +23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911, +23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923, +23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935, +23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947, +23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959, +23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971, +23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983, +23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995, +23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007, +24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019, +24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031, +24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043, +24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055, +24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067, +24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079, +24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091, +24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103, +24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115, +24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127, +24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139, +24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151, +24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163, +24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175, +24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187, +24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199, +24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211, +24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223, +24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235, +24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247, +24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259, +24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271, +24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283, +24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295, +24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307, +24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319, +24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331, +24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343, +24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355, +24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367, +24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379, +24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391, +24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403, +24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415, +24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427, +24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439, +24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451, +24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463, +24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475, +24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487, +24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499, +24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511, +24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523, +24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535, +24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547, +24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559, +24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571, +24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583, +24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595, +24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607, +24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619, +24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631, +24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643, +24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655, +24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667, +24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679, +24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691, +24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703, +24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715, +24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727, +24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739, +24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751, +24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763, +24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775, +24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787, +24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799, +24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811, +24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823, +24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835, +24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847, +24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859, +24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871, +24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883, +24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895, +24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907, +24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919, +24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931, +24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943, +24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955, +24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967, +24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979, +24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991, +24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003, +25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015, +25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027, +25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039, +25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051, +25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063, +25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075, +25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087, +25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099, +25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111, +25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123, +25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135, +25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147, +25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159, +25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171, +25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183, +25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195, +25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207, +25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219, +25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231, +25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243, +25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255, +25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267, +25268,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279, +25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291, +25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303, +25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315, +25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327, +25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339, +25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351, +25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363, +25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375, +25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387, +25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399, +25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411, +25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423, +25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435, +25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447, +25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459, +25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471, +25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483, +25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495, +25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507, +25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519, +25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531, +25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543, +25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555, +25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567, +25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579, +25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591, +25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603, +25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615, +25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627, +25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639, +25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651, +25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663, +25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675, +25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687, +25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699, +25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711, +25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723, +25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735, +25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747, +25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759, +25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771, +25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783, +25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795, +25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807, +25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819, +25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831, +25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843, +25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855, +25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867, +25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879, +25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891, +25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903, +25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915, +25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927, +25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939, +25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951, +25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963, +25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975, +25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987, +25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999, +26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011, +26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023, +26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035, +26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047, +26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059, +26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071, +26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083, +26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095, +26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107, +26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119, +26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131, +26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143, +26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155, +26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167, +26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179, +26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191, +26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203, +26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215, +26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227, +26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239, +26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251, +26252,26253,26254,26255,26256,26257,26258,26259,26260,26261,26262,26263, +26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275, +26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287, +26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299, +26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311, +26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323, +26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335, +26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347, +26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359, +26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371, +26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383, +26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395, +26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407, +26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419, +26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431, +26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443, +26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455, +26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467, +26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479, +26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491, +26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503, +26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515, +26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527, +26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539, +26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551, +26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563, +26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575, +26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587, +26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599, +26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611, +26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623, +26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635, +26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647, +26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659, +26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671, +26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683, +26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695, +26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707, +26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719, +26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731, +26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743, +26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755, +26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767, +26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779, +26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791, +26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803, +26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815, +26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827, +26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839, +26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851, +26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863, +26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875, +26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887, +26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899, +26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911, +26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923, +26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935, +26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947, +26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959, +26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971, +26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983, +26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995, +26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007, +27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019, +27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031, +27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043, +27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055, +27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067, +27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079, +27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091, +27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103, +27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115, +27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127, +27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139, +27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151, +27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163, +27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175, +27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187, +27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199, +27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211, +27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223, +27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235, +27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247, +27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259, +27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271, +27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283, +27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295, +27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307, +27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319, +27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331, +27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343, +27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355, +27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367, +27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379, +27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391, +27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403, +27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415, +27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427, +27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439, +27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451, +27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463, +27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475, +27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487, +27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499, +27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511, +27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523, +27524,27525,27526,27527,27528,27529,27530,27531,27532,27533,27534,27535, +27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547, +27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559, +27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571, +27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583, +27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595, +27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607, +27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619, +27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631, +27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643, +27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655, +27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667, +27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679, +27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691, +27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703, +27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715, +27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727, +27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739, +27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751, +27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763, +27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775, +27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787, +27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799, +27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811, +27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823, +27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835, +27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847, +27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859, +27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871, +27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883, +27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895, +27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907, +27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919, +27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931, +27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943, +27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955, +27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967, +27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979, +27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991, +27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003, +28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015, +28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027, +28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039, +28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051, +28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063, +28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075, +28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087, +28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099, +28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111, +28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123, +28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135, +28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147, +28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159, +28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171, +28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183, +28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195, +28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207, +28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219, +28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231, +28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243, +28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255, +28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267, +28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279, +28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291, +28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303, +28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315, +28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327, +28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339, +28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351, +28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363, +28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375, +28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387, +28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399, +28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411, +28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423, +28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435, +28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447, +28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459, +28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471, +28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483, +28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495, +28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507, +28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519, +28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531, +28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543, +28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555, +28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567, +28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579, +28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591, +28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28602,28603, +28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615, +28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627, +28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639, +28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651, +28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663, +28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675, +28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687, +28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699, +28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711, +28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723, +28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735, +28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747, +28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759, +28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771, +28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783, +28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795, +28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807, +28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819, +28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831, +28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843, +28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855, +28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867, +28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879, +28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891, +28892,28893,28894,28895,28896,28897,28898,28899,28900,28901,28902,28903, +28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915, +28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927, +28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939, +28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951, +28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963, +28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975, +28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987, +28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999, +29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011, +29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023, +29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035, +29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047, +29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059, +29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071, +29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083, +29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095, +29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107, +29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119, +29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131, +29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143, +29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155, +29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167, +29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179, +29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191, +29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203, +29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215, +29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227, +29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239, +29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251, +29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263, +29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275, +29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287, +29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299, +29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311, +29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323, +29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335, +29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347, +29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359, +29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371, +29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383, +29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395, +29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407, +29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419, +29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431, +29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443, +29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455, +29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467, +29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479, +29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491, +29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503, +29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515, +29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527, +29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539, +29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551, +29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563, +29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575, +29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587, +29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599, +29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611, +29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623, +29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635, +29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647, +29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659, +29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671, +29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683, +29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695, +29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707, +29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719, +29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731, +29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743, +29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755, +29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767, +29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779, +29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791, +29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803, +29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815, +29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827, +29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839, +29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851, +29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863, +29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875, +29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887, +29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899, +29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911, +29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923, +29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935, +29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947, +29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959, +29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971, +29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983, +29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995, +29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007, +30008,30009,30010,30011,30012,30013,30014,30015,30016,30017,30018,30019, +30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031, +30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043, +30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055, +30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067, +30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079, +30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091, +30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103, +30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115, +30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127, +30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139, +30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151, +30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163, +30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175, +30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187, +30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199, +30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211, +30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223, +30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235, +30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247, +30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259, +30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271, +30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283, +30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295, +30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307, +30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319, +30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331, +30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343, +30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355, +30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367, +30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379, +30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391, +30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403, +30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415, +30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427, +30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439, +30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451, +30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463, +30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475, +30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487, +30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499, +30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511, +30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523, +30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535, +30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547, +30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559, +30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571, +30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583, +30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595, +30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607, +30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619, +30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631, +30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643, +30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655, +30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667, +30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679, +30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691, +30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703, +30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715, +30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727, +30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739, +30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751, +30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763, +30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,30774,30775, +30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787, +30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799, +30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811, +30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823, +30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835, +30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847, +30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859, +30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871, +30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883, +30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895, +30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907, +30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919, +30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931, +30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943, +30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955, +30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967, +30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979, +30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991, +30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003, +31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015, +31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027, +31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039, +31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051, +31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063, +31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075, +31076,31077,31078,31079,31080,31081,31082,31083,31084,31085,31086,31087, +31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099, +31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111, +31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123, +31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135, +31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147, +31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159, +31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171, +31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183, +31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195, +31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207, +31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219, +31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231, +31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243, +31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255, +31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267, +31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279, +31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291, +31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303, +31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315, +31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327, +31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339, +31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351, +31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363, +31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375, +31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387, +31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399, +31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411, +31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423, +31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435, +31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447, +31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459, +31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471, +31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483, +31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495, +31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507, +31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519, +31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531, +31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543, +31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555, +31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567, +31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579, +31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591, +31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603, +31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615, +31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627, +31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639, +31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651, +31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663, +31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675, +31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687, +31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699, +31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711, +31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723, +31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735, +31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747, +31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759, +31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771, +31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783, +31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795, +31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807, +31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819, +31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831, +31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843, +31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855, +31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867, +31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879, +31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891, +31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903, +31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915, +31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927, +31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939, +31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951, +31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963, +31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975, +31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987, +31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999, +32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011, +32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023, +32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035, +32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047, +32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059, +32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071, +32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083, +32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095, +32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107, +32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119, +32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131, +32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143, +32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155, +32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167, +32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179, +32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191, +32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203, +32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215, +32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227, +32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239, +32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251, +32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263, +32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275, +32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287, +32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299, +32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311, +32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323, +32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335, +32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347, +32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359, +32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371, +32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383, +32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395, +32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407, +32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419, +32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431, +32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443, +32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455, +32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467, +32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479, +32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491, +32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503, +32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515, +32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527, +32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539, +32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551, +32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563, +32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575, +32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587, +32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599, +32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611, +32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623, +32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635, +32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647, +32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659, +32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671, +32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683, +32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695, +32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707, +32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719, +32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731, +32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743, +32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755, +32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767, +32768L,32769L,32770L,32771L,32772L,32773L,32774L,32775L,32776L,32777L, +32778L,32779L,32780L,32781L,32782L,32783L,32784L,32785L,32786L,32787L, +32788L,32789L,32790L,32791L,32792L,32793L,32794L,32795L,32796L,32797L, +32798L,32799L,32800L,32801L,32802L,32803L,32804L,32805L,32806L,32807L, +32808L,32809L,32810L,32811L,32812L,32813L,32814L,32815L,32816L,32817L, +32818L,32819L,32820L,32821L,32822L,32823L,32824L,32825L,32826L,32827L, +32828L,32829L,32830L,32831L,32832L,32833L,32834L,32835L,32836L,32837L, +32838L,32839L,32840L,32841L,32842L,32843L,32844L,32845L,32846L,32847L, +32848L,32849L,32850L,32851L,32852L,32853L,32854L,32855L,32856L,32857L, +32858L,32859L,32860L,32861L,32862L,32863L,32864L,32865L,32866L,32867L, +32868L,32869L,32870L,32871L,32872L,32873L,32874L,32875L,32876L,32877L, +32878L,32879L,32880L,32881L,32882L,32883L,32884L,32885L,32886L,32887L, +32888L,32889L,32890L,32891L,32892L,32893L,32894L,32895L,32896L,32897L, +32898L,32899L,32900L,32901L,32902L,32903L,32904L,32905L,32906L,32907L, +32908L,32909L,32910L,32911L,32912L,32913L,32914L,32915L,32916L,32917L, +32918L,32919L,32920L,32921L,32922L,32923L,32924L,32925L,32926L,32927L, +32928L,32929L,32930L,32931L,32932L,32933L,32934L,32935L,32936L,32937L, +32938L,32939L,32940L,32941L,32942L,32943L,32944L,32945L,32946L,32947L, +32948L,32949L,32950L,32951L,32952L,32953L,32954L,32955L,32956L,32957L, +32958L,32959L,32960L,32961L,32962L,32963L,32964L,32965L,32966L,32967L, +32968L,32969L,32970L,32971L,32972L,32973L,32974L,32975L,32976L,32977L, +32978L,32979L,32980L,32981L,32982L,32983L,32984L,32985L,32986L,32987L, +32988L,32989L,32990L,32991L,32992L,32993L,32994L,32995L,32996L,32997L, +32998L,32999L,33000L,33001L,33002L,33003L,33004L,33005L,33006L,33007L, +33008L,33009L,33010L,33011L,33012L,33013L,33014L,33015L,33016L,33017L, +33018L,33019L,33020L,33021L,33022L,33023L,33024L,33025L,33026L,33027L, +33028L,33029L,33030L,33031L,33032L,33033L,33034L,33035L,33036L,33037L, +33038L,33039L,33040L,33041L,33042L,33043L,33044L,33045L,33046L,33047L, +33048L,33049L,33050L,33051L,33052L,33053L,33054L,33055L,33056L,33057L, +33058L,33059L,33060L,33061L,33062L,33063L,33064L,33065L,33066L,33067L, +33068L,33069L,33070L,33071L,33072L,33073L,33074L,33075L,33076L,33077L, +33078L,33079L,33080L,33081L,33082L,33083L,33084L,33085L,33086L,33087L, +33088L,33089L,33090L,33091L,33092L,33093L,33094L,33095L,33096L,33097L, +33098L,33099L,33100L,33101L,33102L,33103L,33104L,33105L,33106L,33107L, +33108L,33109L,33110L,33111L,33112L,33113L,33114L,33115L,33116L,33117L, +33118L,33119L,33120L,33121L,33122L,33123L,33124L,33125L,33126L,33127L, +33128L,33129L,33130L,33131L,33132L,33133L,33134L,33135L,33136L,33137L, +33138L,33139L,33140L,33141L,33142L,33143L,33144L,33145L,33146L,33147L, +33148L,33149L,33150L,33151L,33152L,33153L,33154L,33155L,33156L,33157L, +33158L,33159L,33160L,33161L,33162L,33163L,33164L,33165L,33166L,33167L, +33168L,33169L,33170L,33171L,33172L,33173L,33174L,33175L,33176L,33177L, +33178L,33179L,33180L,33181L,33182L,33183L,33184L,33185L,33186L,33187L, +33188L,33189L,33190L,33191L,33192L,33193L,33194L,33195L,33196L,33197L, +33198L,33199L,33200L,33201L,33202L,33203L,33204L,33205L,33206L,33207L, +33208L,33209L,33210L,33211L,33212L,33213L,33214L,33215L,33216L,33217L, +33218L,33219L,33220L,33221L,33222L,33223L,33224L,33225L,33226L,33227L, +33228L,33229L,33230L,33231L,33232L,33233L,33234L,33235L,33236L,33237L, +33238L,33239L,33240L,33241L,33242L,33243L,33244L,33245L,33246L,33247L, +33248L,33249L,33250L,33251L,33252L,33253L,33254L,33255L,33256L,33257L, +33258L,33259L,33260L,33261L,33262L,33263L,33264L,33265L,33266L,33267L, +33268L,33269L,33270L,33271L,33272L,33273L,33274L,33275L,33276L,33277L, +33278L,33279L,33280L,33281L,33282L,33283L,33284L,33285L,33286L,33287L, +33288L,33289L,33290L,33291L,33292L,33293L,33294L,33295L,33296L,33297L, +33298L,33299L,33300L,33301L,33302L,33303L,33304L,33305L,33306L,33307L, +33308L,33309L,33310L,33311L,33312L,33313L,33314L,33315L,33316L,33317L, +33318L,33319L,33320L,33321L,33322L,33323L,33324L,33325L,33326L,33327L, +33328L,33329L,33330L,33331L,33332L,33333L,33334L,33335L,33336L,33337L, +33338L,33339L,33340L,33341L,33342L,33343L,33344L,33345L,33346L,33347L, +33348L,33349L,33350L,33351L,33352L,33353L,33354L,33355L,33356L,33357L, +33358L,33359L,33360L,33361L,33362L,33363L,33364L,33365L,33366L,33367L, +33368L,33369L,33370L,33371L,33372L,33373L,33374L,33375L,33376L,33377L, +33378L,33379L,33380L,33381L,33382L,33383L,33384L,33385L,33386L,33387L, +33388L,33389L,33390L,33391L,33392L,33393L,33394L,33395L,33396L,33397L, +33398L,33399L,33400L,33401L,33402L,33403L,33404L,33405L,33406L,33407L, +33408L,33409L,33410L,33411L,33412L,33413L,33414L,33415L,33416L,33417L, +33418L,33419L,33420L,33421L,33422L,33423L,33424L,33425L,33426L,33427L, +33428L,33429L,33430L,33431L,33432L,33433L,33434L,33435L,33436L,33437L, +33438L,33439L,33440L,33441L,33442L,33443L,33444L,33445L,33446L,33447L, +33448L,33449L,33450L,33451L,33452L,33453L,33454L,33455L,33456L,33457L, +33458L,33459L,33460L,33461L,33462L,33463L,33464L,33465L,33466L,33467L, +33468L,33469L,33470L,33471L,33472L,33473L,33474L,33475L,33476L,33477L, +33478L,33479L,33480L,33481L,33482L,33483L,33484L,33485L,33486L,33487L, +33488L,33489L,33490L,33491L,33492L,33493L,33494L,33495L,33496L,33497L, +33498L,33499L,33500L,33501L,33502L,33503L,33504L,33505L,33506L,33507L, +33508L,33509L,33510L,33511L,33512L,33513L,33514L,33515L,33516L,33517L, +33518L,33519L,33520L,33521L,33522L,33523L,33524L,33525L,33526L,33527L, +33528L,33529L,33530L,33531L,33532L,33533L,33534L,33535L,33536L,33537L, +33538L,33539L,33540L,33541L,33542L,33543L,33544L,33545L,33546L,33547L, +33548L,33549L,33550L,33551L,33552L,33553L,33554L,33555L,33556L,33557L, +33558L,33559L,33560L,33561L,33562L,33563L,33564L,33565L,33566L,33567L, +33568L,33569L,33570L,33571L,33572L,33573L,33574L,33575L,33576L,33577L, +33578L,33579L,33580L,33581L,33582L,33583L,33584L,33585L,33586L,33587L, +33588L,33589L,33590L,33591L,33592L,33593L,33594L,33595L,33596L,33597L, +33598L,33599L,33600L,33601L,33602L,33603L,33604L,33605L,33606L,33607L, +33608L,33609L,33610L,33611L,33612L,33613L,33614L,33615L,33616L,33617L, +33618L,33619L,33620L,33621L,33622L,33623L,33624L,33625L,33626L,33627L, +33628L,33629L,33630L,33631L,33632L,33633L,33634L,33635L,33636L,33637L, +33638L,33639L,33640L,33641L,33642L,33643L,33644L,33645L,33646L,33647L, +33648L,33649L,33650L,33651L,33652L,33653L,33654L,33655L,33656L,33657L, +33658L,33659L,33660L,33661L,33662L,33663L,33664L,33665L,33666L,33667L, +33668L,33669L,33670L,33671L,33672L,33673L,33674L,33675L,33676L,33677L, +33678L,33679L,33680L,33681L,33682L,33683L,33684L,33685L,33686L,33687L, +33688L,33689L,33690L,33691L,33692L,33693L,33694L,33695L,33696L,33697L, +33698L,33699L,33700L,33701L,33702L,33703L,33704L,33705L,33706L,33707L, +33708L,33709L,33710L,33711L,33712L,33713L,33714L,33715L,33716L,33717L, +33718L,33719L,33720L,33721L,33722L,33723L,33724L,33725L,33726L,33727L, +33728L,33729L,33730L,33731L,33732L,33733L,33734L,33735L,33736L,33737L, +33738L,33739L,33740L,33741L,33742L,33743L,33744L,33745L,33746L,33747L, +33748L,33749L,33750L,33751L,33752L,33753L,33754L,33755L,33756L,33757L, +33758L,33759L,33760L,33761L,33762L,33763L,33764L,33765L,33766L,33767L, +33768L,33769L,33770L,33771L,33772L,33773L,33774L,33775L,33776L,33777L, +33778L,33779L,33780L,33781L,33782L,33783L,33784L,33785L,33786L,33787L, +33788L,33789L,33790L,33791L,33792L,33793L,33794L,33795L,33796L,33797L, +33798L,33799L,33800L,33801L,33802L,33803L,33804L,33805L,33806L,33807L, +33808L,33809L,33810L,33811L,33812L,33813L,33814L,33815L,33816L,33817L, +33818L,33819L,33820L,33821L,33822L,33823L,33824L,33825L,33826L,33827L, +33828L,33829L,33830L,33831L,33832L,33833L,33834L,33835L,33836L,33837L, +33838L,33839L,33840L,33841L,33842L,33843L,33844L,33845L,33846L,33847L, +33848L,33849L,33850L,33851L,33852L,33853L,33854L,33855L,33856L,33857L, +33858L,33859L,33860L,33861L,33862L,33863L,33864L,33865L,33866L,33867L, +33868L,33869L,33870L,33871L,33872L,33873L,33874L,33875L,33876L,33877L, +33878L,33879L,33880L,33881L,33882L,33883L,33884L,33885L,33886L,33887L, +33888L,33889L,33890L,33891L,33892L,33893L,33894L,33895L,33896L,33897L, +33898L,33899L,33900L,33901L,33902L,33903L,33904L,33905L,33906L,33907L, +33908L,33909L,33910L,33911L,33912L,33913L,33914L,33915L,33916L,33917L, +33918L,33919L,33920L,33921L,33922L,33923L,33924L,33925L,33926L,33927L, +33928L,33929L,33930L,33931L,33932L,33933L,33934L,33935L,33936L,33937L, +33938L,33939L,33940L,33941L,33942L,33943L,33944L,33945L,33946L,33947L, +33948L,33949L,33950L,33951L,33952L,33953L,33954L,33955L,33956L,33957L, +33958L,33959L,33960L,33961L,33962L,33963L,33964L,33965L,33966L,33967L, +33968L,33969L,33970L,33971L,33972L,33973L,33974L,33975L,33976L,33977L, +33978L,33979L,33980L,33981L,33982L,33983L,33984L,33985L,33986L,33987L, +33988L,33989L,33990L,33991L,33992L,33993L,33994L,33995L,33996L,33997L, +33998L,33999L,34000L,34001L,34002L,34003L,34004L,34005L,34006L,34007L, +34008L,34009L,34010L,34011L,34012L,34013L,34014L,34015L,34016L,34017L, +34018L,34019L,34020L,34021L,34022L,34023L,34024L,34025L,34026L,34027L, +34028L,34029L,34030L,34031L,34032L,34033L,34034L,34035L,34036L,34037L, +34038L,34039L,34040L,34041L,34042L,34043L,34044L,34045L,34046L,34047L, +34048L,34049L,34050L,34051L,34052L,34053L,34054L,34055L,34056L,34057L, +34058L,34059L,34060L,34061L,34062L,34063L,34064L,34065L,34066L,34067L, +34068L,34069L,34070L,34071L,34072L,34073L,34074L,34075L,34076L,34077L, +34078L,34079L,34080L,34081L,34082L,34083L,34084L,34085L,34086L,34087L, +34088L,34089L,34090L,34091L,34092L,34093L,34094L,34095L,34096L,34097L, +34098L,34099L,34100L,34101L,34102L,34103L,34104L,34105L,34106L,34107L, +34108L,34109L,34110L,34111L,34112L,34113L,34114L,34115L,34116L,34117L, +34118L,34119L,34120L,34121L,34122L,34123L,34124L,34125L,34126L,34127L, +34128L,34129L,34130L,34131L,34132L,34133L,34134L,34135L,34136L,34137L, +34138L,34139L,34140L,34141L,34142L,34143L,34144L,34145L,34146L,34147L, +34148L,34149L,34150L,34151L,34152L,34153L,34154L,34155L,34156L,34157L, +34158L,34159L,34160L,34161L,34162L,34163L,34164L,34165L,34166L,34167L, +34168L,34169L,34170L,34171L,34172L,34173L,34174L,34175L,34176L,34177L, +34178L,34179L,34180L,34181L,34182L,34183L,34184L,34185L,34186L,34187L, +34188L,34189L,34190L,34191L,34192L,34193L,34194L,34195L,34196L,34197L, +34198L,34199L,34200L,34201L,34202L,34203L,34204L,34205L,34206L,34207L, +34208L,34209L,34210L,34211L,34212L,34213L,34214L,34215L,34216L,34217L, +34218L,34219L,34220L,34221L,34222L,34223L,34224L,34225L,34226L,34227L, +34228L,34229L,34230L,34231L,34232L,34233L,34234L,34235L,34236L,34237L, +34238L,34239L,34240L,34241L,34242L,34243L,34244L,34245L,34246L,34247L, +34248L,34249L,34250L,34251L,34252L,34253L,34254L,34255L,34256L,34257L, +34258L,34259L,34260L,34261L,34262L,34263L,34264L,34265L,34266L,34267L, +34268L,34269L,34270L,34271L,34272L,34273L,34274L,34275L,34276L,34277L, +34278L,34279L,34280L,34281L,34282L,34283L,34284L,34285L,34286L,34287L, +34288L,34289L,34290L,34291L,34292L,34293L,34294L,34295L,34296L,34297L, +34298L,34299L,34300L,34301L,34302L,34303L,34304L,34305L,34306L,34307L, +34308L,34309L,34310L,34311L,34312L,34313L,34314L,34315L,34316L,34317L, +34318L,34319L,34320L,34321L,34322L,34323L,34324L,34325L,34326L,34327L, +34328L,34329L,34330L,34331L,34332L,34333L,34334L,34335L,34336L,34337L, +34338L,34339L,34340L,34341L,34342L,34343L,34344L,34345L,34346L,34347L, +34348L,34349L,34350L,34351L,34352L,34353L,34354L,34355L,34356L,34357L, +34358L,34359L,34360L,34361L,34362L,34363L,34364L,34365L,34366L,34367L, +34368L,34369L,34370L,34371L,34372L,34373L,34374L,34375L,34376L,34377L, +34378L,34379L,34380L,34381L,34382L,34383L,34384L,34385L,34386L,34387L, +34388L,34389L,34390L,34391L,34392L,34393L,34394L,34395L,34396L,34397L, +34398L,34399L,34400L,34401L,34402L,34403L,34404L,34405L,34406L,34407L, +34408L,34409L,34410L,34411L,34412L,34413L,34414L,34415L,34416L,34417L, +34418L,34419L,34420L,34421L,34422L,34423L,34424L,34425L,34426L,34427L, +34428L,34429L,34430L,34431L,34432L,34433L,34434L,34435L,34436L,34437L, +34438L,34439L,34440L,34441L,34442L,34443L,34444L,34445L,34446L,34447L, +34448L,34449L,34450L,34451L,34452L,34453L,34454L,34455L,34456L,34457L, +34458L,34459L,34460L,34461L,34462L,34463L,34464L,34465L,34466L,34467L, +34468L,34469L,34470L,34471L,34472L,34473L,34474L,34475L,34476L,34477L, +34478L,34479L,34480L,34481L,34482L,34483L,34484L,34485L,34486L,34487L, +34488L,34489L,34490L,34491L,34492L,34493L,34494L,34495L,34496L,34497L, +34498L,34499L,34500L,34501L,34502L,34503L,34504L,34505L,34506L,34507L, +34508L,34509L,34510L,34511L,34512L,34513L,34514L,34515L,34516L,34517L, +34518L,34519L,34520L,34521L,34522L,34523L,34524L,34525L,34526L,34527L, +34528L,34529L,34530L,34531L,34532L,34533L,34534L,34535L,34536L,34537L, +34538L,34539L,34540L,34541L,34542L,34543L,34544L,34545L,34546L,34547L, +34548L,34549L,34550L,34551L,34552L,34553L,34554L,34555L,34556L,34557L, +34558L,34559L,34560L,34561L,34562L,34563L,34564L,34565L,34566L,34567L, +34568L,34569L,34570L,34571L,34572L,34573L,34574L,34575L,34576L,34577L, +34578L,34579L,34580L,34581L,34582L,34583L,34584L,34585L,34586L,34587L, +34588L,34589L,34590L,34591L,34592L,34593L,34594L,34595L,34596L,34597L, +34598L,34599L,34600L,34601L,34602L,34603L,34604L,34605L,34606L,34607L, +34608L,34609L,34610L,34611L,34612L,34613L,34614L,34615L,34616L,34617L, +34618L,34619L,34620L,34621L,34622L,34623L,34624L,34625L,34626L,34627L, +34628L,34629L,34630L,34631L,34632L,34633L,34634L,34635L,34636L,34637L, +34638L,34639L,34640L,34641L,34642L,34643L,34644L,34645L,34646L,34647L, +34648L,34649L,34650L,34651L,34652L,34653L,34654L,34655L,34656L,34657L, +34658L,34659L,34660L,34661L,34662L,34663L,34664L,34665L,34666L,34667L, +34668L,34669L,34670L,34671L,34672L,34673L,34674L,34675L,34676L,34677L, +34678L,34679L,34680L,34681L,34682L,34683L,34684L,34685L,34686L,34687L, +34688L,34689L,34690L,34691L,34692L,34693L,34694L,34695L,34696L,34697L, +34698L,34699L,34700L,34701L,34702L,34703L,34704L,34705L,34706L,34707L, +34708L,34709L,34710L,34711L,34712L,34713L,34714L,34715L,34716L,34717L, +34718L,34719L,34720L,34721L,34722L,34723L,34724L,34725L,34726L,34727L, +34728L,34729L,34730L,34731L,34732L,34733L,34734L,34735L,34736L,34737L, +34738L,34739L,34740L,34741L,34742L,34743L,34744L,34745L,34746L,34747L, +34748L,34749L,34750L,34751L,34752L,34753L,34754L,34755L,34756L,34757L, +34758L,34759L,34760L,34761L,34762L,34763L,34764L,34765L,34766L,34767L, +34768L,34769L,34770L,34771L,34772L,34773L,34774L,34775L,34776L,34777L, +34778L,34779L,34780L,34781L,34782L,34783L,34784L,34785L,34786L,34787L, +34788L,34789L,34790L,34791L,34792L,34793L,34794L,34795L,34796L,34797L, +34798L,34799L,34800L,34801L,34802L,34803L,34804L,34805L,34806L,34807L, +34808L,34809L,34810L,34811L,34812L,34813L,34814L,34815L,34816L,34817L, +34818L,34819L,34820L,34821L,34822L,34823L,34824L,34825L,34826L,34827L, +34828L,34829L,34830L,34831L,34832L,34833L,34834L,34835L,34836L,34837L, +34838L,34839L,34840L,34841L,34842L,34843L,34844L,34845L,34846L,34847L, +34848L,34849L,34850L,34851L,34852L,34853L,34854L,34855L,34856L,34857L, +34858L,34859L,34860L,34861L,34862L,34863L,34864L,34865L,34866L,34867L, +34868L,34869L,34870L,34871L,34872L,34873L,34874L,34875L,34876L,34877L, +34878L,34879L,34880L,34881L,34882L,34883L,34884L,34885L,34886L,34887L, +34888L,34889L,34890L,34891L,34892L,34893L,34894L,34895L,34896L,34897L, +34898L,34899L,34900L,34901L,34902L,34903L,34904L,34905L,34906L,34907L, +34908L,34909L,34910L,34911L,34912L,34913L,34914L,34915L,34916L,34917L, +34918L,34919L,34920L,34921L,34922L,34923L,34924L,34925L,34926L,34927L, +34928L,34929L,34930L,34931L,34932L,34933L,34934L,34935L,34936L,34937L, +34938L,34939L,34940L,34941L,34942L,34943L,34944L,34945L,34946L,34947L, +34948L,34949L,34950L,34951L,34952L,34953L,34954L,34955L,34956L,34957L, +34958L,34959L,34960L,34961L,34962L,34963L,34964L,34965L,34966L,34967L, +34968L,34969L,34970L,34971L,34972L,34973L,34974L,34975L,34976L,34977L, +34978L,34979L,34980L,34981L,34982L,34983L,34984L,34985L,34986L,34987L, +34988L,34989L,34990L,34991L,34992L,34993L,34994L,34995L,34996L,34997L, +34998L,34999L,35000L,35001L,35002L,35003L,35004L,35005L,35006L,35007L, +35008L,35009L,35010L,35011L,35012L,35013L,35014L,35015L,35016L,35017L, +35018L,35019L,35020L,35021L,35022L,35023L,35024L,35025L,35026L,35027L, +35028L,35029L,35030L,35031L,35032L,35033L,35034L,35035L,35036L,35037L, +35038L,35039L,35040L,35041L,35042L,35043L,35044L,35045L,35046L,35047L, +35048L,35049L,35050L,35051L,35052L,35053L,35054L,35055L,35056L,35057L, +35058L,35059L,35060L,35061L,35062L,35063L,35064L,35065L,35066L,35067L, +35068L,35069L,35070L,35071L,35072L,35073L,35074L,35075L,35076L,35077L, +35078L,35079L,35080L,35081L,35082L,35083L,35084L,35085L,35086L,35087L, +35088L,35089L,35090L,35091L,35092L,35093L,35094L,35095L,35096L,35097L, +35098L,35099L,35100L,35101L,35102L,35103L,35104L,35105L,35106L,35107L, +35108L,35109L,35110L,35111L,35112L,35113L,35114L,35115L,35116L,35117L, +35118L,35119L,35120L,35121L,35122L,35123L,35124L,35125L,35126L,35127L, +35128L,35129L,35130L,35131L,35132L,35133L,35134L,35135L,35136L,35137L, +35138L,35139L,35140L,35141L,35142L,35143L,35144L,35145L,35146L,35147L, +35148L,35149L,35150L,35151L,35152L,35153L,35154L,35155L,35156L,35157L, +35158L,35159L,35160L,35161L,35162L,35163L,35164L,35165L,35166L,35167L, +35168L,35169L,35170L,35171L,35172L,35173L,35174L,35175L,35176L,35177L, +35178L,35179L,35180L,35181L,35182L,35183L,35184L,35185L,35186L,35187L, +35188L,35189L,35190L,35191L,35192L,35193L,35194L,35195L,35196L,35197L, +35198L,35199L,35200L,35201L,35202L,35203L,35204L,35205L,35206L,35207L, +35208L,35209L,35210L,35211L,35212L,35213L,35214L,35215L,35216L,35217L, +35218L,35219L,35220L,35221L,35222L,35223L,35224L,35225L,35226L,35227L, +35228L,35229L,35230L,35231L,35232L,35233L,35234L,35235L,35236L,35237L, +35238L,35239L,35240L,35241L,35242L,35243L,35244L,35245L,35246L,35247L, +35248L,35249L,35250L,35251L,35252L,35253L,35254L,35255L,35256L,35257L, +35258L,35259L,35260L,35261L,35262L,35263L,35264L,35265L,35266L,35267L, +35268L,35269L,35270L,35271L,35272L,35273L,35274L,35275L,35276L,35277L, +35278L,35279L,35280L,35281L,35282L,35283L,35284L,35285L,35286L,35287L, +35288L,35289L,35290L,35291L,35292L,35293L,35294L,35295L,35296L,35297L, +35298L,35299L,35300L,35301L,35302L,35303L,35304L,35305L,35306L,35307L, +35308L,35309L,35310L,35311L,35312L,35313L,35314L,35315L,35316L,35317L, +35318L,35319L,35320L,35321L,35322L,35323L,35324L,35325L,35326L,35327L, +35328L,35329L,35330L,35331L,35332L,35333L,35334L,35335L,35336L,35337L, +35338L,35339L,35340L,35341L,35342L,35343L,35344L,35345L,35346L,35347L, +35348L,35349L,35350L,35351L,35352L,35353L,35354L,35355L,35356L,35357L, +35358L,35359L,35360L,35361L,35362L,35363L,35364L,35365L,35366L,35367L, +35368L,35369L,35370L,35371L,35372L,35373L,35374L,35375L,35376L,35377L, +35378L,35379L,35380L,35381L,35382L,35383L,35384L,35385L,35386L,35387L, +35388L,35389L,35390L,35391L,35392L,35393L,35394L,35395L,35396L,35397L, +35398L,35399L,35400L,35401L,35402L,35403L,35404L,35405L,35406L,35407L, +35408L,35409L,35410L,35411L,35412L,35413L,35414L,35415L,35416L,35417L, +35418L,35419L,35420L,35421L,35422L,35423L,35424L,35425L,35426L,35427L, +35428L,35429L,35430L,35431L,35432L,35433L,35434L,35435L,35436L,35437L, +35438L,35439L,35440L,35441L,35442L,35443L,35444L,35445L,35446L,35447L, +35448L,35449L,35450L,35451L,35452L,35453L,35454L,35455L,35456L,35457L, +35458L,35459L,35460L,35461L,35462L,35463L,35464L,35465L,35466L,35467L, +35468L,35469L,35470L,35471L,35472L,35473L,35474L,35475L,35476L,35477L, +35478L,35479L,35480L,35481L,35482L,35483L,35484L,35485L,35486L,35487L, +35488L,35489L,35490L,35491L,35492L,35493L,35494L,35495L,35496L,35497L, +35498L,35499L,35500L,35501L,35502L,35503L,35504L,35505L,35506L,35507L, +35508L,35509L,35510L,35511L,35512L,35513L,35514L,35515L,35516L,35517L, +35518L,35519L,35520L,35521L,35522L,35523L,35524L,35525L,35526L,35527L, +35528L,35529L,35530L,35531L,35532L,35533L,35534L,35535L,35536L,35537L, +35538L,35539L,35540L,35541L,35542L,35543L,35544L,35545L,35546L,35547L, +35548L,35549L,35550L,35551L,35552L,35553L,35554L,35555L,35556L,35557L, +35558L,35559L,35560L,35561L,35562L,35563L,35564L,35565L,35566L,35567L, +35568L,35569L,35570L,35571L,35572L,35573L,35574L,35575L,35576L,35577L, +35578L,35579L,35580L,35581L,35582L,35583L,35584L,35585L,35586L,35587L, +35588L,35589L,35590L,35591L,35592L,35593L,35594L,35595L,35596L,35597L, +35598L,35599L,35600L,35601L,35602L,35603L,35604L,35605L,35606L,35607L, +35608L,35609L,35610L,35611L,35612L,35613L,35614L,35615L,35616L,35617L, +35618L,35619L,35620L,35621L,35622L,35623L,35624L,35625L,35626L,35627L, +35628L,35629L,35630L,35631L,35632L,35633L,35634L,35635L,35636L,35637L, +35638L,35639L,35640L,35641L,35642L,35643L,35644L,35645L,35646L,35647L, +35648L,35649L,35650L,35651L,35652L,35653L,35654L,35655L,35656L,35657L, +35658L,35659L,35660L,35661L,35662L,35663L,35664L,35665L,35666L,35667L, +35668L,35669L,35670L,35671L,35672L,35673L,35674L,35675L,35676L,35677L, +35678L,35679L,35680L,35681L,35682L,35683L,35684L,35685L,35686L,35687L, +35688L,35689L,35690L,35691L,35692L,35693L,35694L,35695L,35696L,35697L, +35698L,35699L,35700L,35701L,35702L,35703L,35704L,35705L,35706L,35707L, +35708L,35709L,35710L,35711L,35712L,35713L,35714L,35715L,35716L,35717L, +35718L,35719L,35720L,35721L,35722L,35723L,35724L,35725L,35726L,35727L, +35728L,35729L,35730L,35731L,35732L,35733L,35734L,35735L,35736L,35737L, +35738L,35739L,35740L,35741L,35742L,35743L,35744L,35745L,35746L,35747L, +35748L,35749L,35750L,35751L,35752L,35753L,35754L,35755L,35756L,35757L, +35758L,35759L,35760L,35761L,35762L,35763L,35764L,35765L,35766L,35767L, +35768L,35769L,35770L,35771L,35772L,35773L,35774L,35775L,35776L,35777L, +35778L,35779L,35780L,35781L,35782L,35783L,35784L,35785L,35786L,35787L, +35788L,35789L,35790L,35791L,35792L,35793L,35794L,35795L,35796L,35797L, +35798L,35799L,35800L,35801L,35802L,35803L,35804L,35805L,35806L,35807L, +35808L,35809L,35810L,35811L,35812L,35813L,35814L,35815L,35816L,35817L, +35818L,35819L,35820L,35821L,35822L,35823L,35824L,35825L,35826L,35827L, +35828L,35829L,35830L,35831L,35832L,35833L,35834L,35835L,35836L,35837L, +35838L,35839L,35840L,35841L,35842L,35843L,35844L,35845L,35846L,35847L, +35848L,35849L,35850L,35851L,35852L,35853L,35854L,35855L,35856L,35857L, +35858L,35859L,35860L,35861L,35862L,35863L,35864L,35865L,35866L,35867L, +35868L,35869L,35870L,35871L,35872L,35873L,35874L,35875L,35876L,35877L, +35878L,35879L,35880L,35881L,35882L,35883L,35884L,35885L,35886L,35887L, +35888L,35889L,35890L,35891L,35892L,35893L,35894L,35895L,35896L,35897L, +35898L,35899L,35900L,35901L,35902L,35903L,35904L,35905L,35906L,35907L, +35908L,35909L,35910L,35911L,35912L,35913L,35914L,35915L,35916L,35917L, +35918L,35919L,35920L,35921L,35922L,35923L,35924L,35925L,35926L,35927L, +35928L,35929L,35930L,35931L,35932L,35933L,35934L,35935L,35936L,35937L, +35938L,35939L,35940L,35941L,35942L,35943L,35944L,35945L,35946L,35947L, +35948L,35949L,35950L,35951L,35952L,35953L,35954L,35955L,35956L,35957L, +35958L,35959L,35960L,35961L,35962L,35963L,35964L,35965L,35966L,35967L, +35968L,35969L,35970L,35971L,35972L,35973L,35974L,35975L,35976L,35977L, +35978L,35979L,35980L,35981L,35982L,35983L,35984L,35985L,35986L,35987L, +35988L,35989L,35990L,35991L,35992L,35993L,35994L,35995L,35996L,35997L, +35998L,35999L,36000L,36001L,36002L,36003L,36004L,36005L,36006L,36007L, +36008L,36009L,36010L,36011L,36012L,36013L,36014L,36015L,36016L,36017L, +36018L,36019L,36020L,36021L,36022L,36023L,36024L,36025L,36026L,36027L, +36028L,36029L,36030L,36031L,36032L,36033L,36034L,36035L,36036L,36037L, +36038L,36039L,36040L,36041L,36042L,36043L,36044L,36045L,36046L,36047L, +36048L,36049L,36050L,36051L,36052L,36053L,36054L,36055L,36056L,36057L, +36058L,36059L,36060L,36061L,36062L,36063L,36064L,36065L,36066L,36067L, +36068L,36069L,36070L,36071L,36072L,36073L,36074L,36075L,36076L,36077L, +36078L,36079L,36080L,36081L,36082L,36083L,36084L,36085L,36086L,36087L, +36088L,36089L,36090L,36091L,36092L,36093L,36094L,36095L,36096L,36097L, +36098L,36099L,36100L,36101L,36102L,36103L,36104L,36105L,36106L,36107L, +36108L,36109L,36110L,36111L,36112L,36113L,36114L,36115L,36116L,36117L, +36118L,36119L,36120L,36121L,36122L,36123L,36124L,36125L,36126L,36127L, +36128L,36129L,36130L,36131L,36132L,36133L,36134L,36135L,36136L,36137L, +36138L,36139L,36140L,36141L,36142L,36143L,36144L,36145L,36146L,36147L, +36148L,36149L,36150L,36151L,36152L,36153L,36154L,36155L,36156L,36157L, +36158L,36159L,36160L,36161L,36162L,36163L,36164L,36165L,36166L,36167L, +36168L,36169L,36170L,36171L,36172L,36173L,36174L,36175L,36176L,36177L, +36178L,36179L,36180L,36181L,36182L,36183L,36184L,36185L,36186L,36187L, +36188L,36189L,36190L,36191L,36192L,36193L,36194L,36195L,36196L,36197L, +36198L,36199L,36200L,36201L,36202L,36203L,36204L,36205L,36206L,36207L, +36208L,36209L,36210L,36211L,36212L,36213L,36214L,36215L,36216L,36217L, +36218L,36219L,36220L,36221L,36222L,36223L,36224L,36225L,36226L,36227L, +36228L,36229L,36230L,36231L,36232L,36233L,36234L,36235L,36236L,36237L, +36238L,36239L,36240L,36241L,36242L,36243L,36244L,36245L,36246L,36247L, +36248L,36249L,36250L,36251L,36252L,36253L,36254L,36255L,36256L,36257L, +36258L,36259L,36260L,36261L,36262L,36263L,36264L,36265L,36266L,36267L, +36268L,36269L,36270L,36271L,36272L,36273L,36274L,36275L,36276L,36277L, +36278L,36279L,36280L,36281L,36282L,36283L,36284L,36285L,36286L,36287L, +36288L,36289L,36290L,36291L,36292L,36293L,36294L,36295L,36296L,36297L, +36298L,36299L,36300L,36301L,36302L,36303L,36304L,36305L,36306L,36307L, +36308L,36309L,36310L,36311L,36312L,36313L,36314L,36315L,36316L,36317L, +36318L,36319L,36320L,36321L,36322L,36323L,36324L,36325L,36326L,36327L, +36328L,36329L,36330L,36331L,36332L,36333L,36334L,36335L,36336L,36337L, +36338L,36339L,36340L,36341L,36342L,36343L,36344L,36345L,36346L,36347L, +36348L,36349L,36350L,36351L,36352L,36353L,36354L,36355L,36356L,36357L, +36358L,36359L,36360L,36361L,36362L,36363L,36364L,36365L,36366L,36367L, +36368L,36369L,36370L,36371L,36372L,36373L,36374L,36375L,36376L,36377L, +36378L,36379L,36380L,36381L,36382L,36383L,36384L,36385L,36386L,36387L, +36388L,36389L,36390L,36391L,36392L,36393L,36394L,36395L,36396L,36397L, +36398L,36399L,36400L,36401L,36402L,36403L,36404L,36405L,36406L,36407L, +36408L,36409L,36410L,36411L,36412L,36413L,36414L,36415L,36416L,36417L, +36418L,36419L,36420L,36421L,36422L,36423L,36424L,36425L,36426L,36427L, +36428L,36429L,36430L,36431L,36432L,36433L,36434L,36435L,36436L,36437L, +36438L,36439L,36440L,36441L,36442L,36443L,36444L,36445L,36446L,36447L, +36448L,36449L,36450L,36451L,36452L,36453L,36454L,36455L,36456L,36457L, +36458L,36459L,36460L,36461L,36462L,36463L,36464L,36465L,36466L,36467L, +36468L,36469L,36470L,36471L,36472L,36473L,36474L,36475L,36476L,36477L, +36478L,36479L,36480L,36481L,36482L,36483L,36484L,36485L,36486L,36487L, +36488L,36489L,36490L,36491L,36492L,36493L,36494L,36495L,36496L,36497L, +36498L,36499L,36500L,36501L,36502L,36503L,36504L,36505L,36506L,36507L, +36508L,36509L,36510L,36511L,36512L,36513L,36514L,36515L,36516L,36517L, +36518L,36519L,36520L,36521L,36522L,36523L,36524L,36525L,36526L,36527L, +36528L,36529L,36530L,36531L,36532L,36533L,36534L,36535L,36536L,36537L, +36538L,36539L,36540L,36541L,36542L,36543L,36544L,36545L,36546L,36547L, +36548L,36549L,36550L,36551L,36552L,36553L,36554L,36555L,36556L,36557L, +36558L,36559L,36560L,36561L,36562L,36563L,36564L,36565L,36566L,36567L, +36568L,36569L,36570L,36571L,36572L,36573L,36574L,36575L,36576L,36577L, +36578L,36579L,36580L,36581L,36582L,36583L,36584L,36585L,36586L,36587L, +36588L,36589L,36590L,36591L,36592L,36593L,36594L,36595L,36596L,36597L, +36598L,36599L,36600L,36601L,36602L,36603L,36604L,36605L,36606L,36607L, +36608L,36609L,36610L,36611L,36612L,36613L,36614L,36615L,36616L,36617L, +36618L,36619L,36620L,36621L,36622L,36623L,36624L,36625L,36626L,36627L, +36628L,36629L,36630L,36631L,36632L,36633L,36634L,36635L,36636L,36637L, +36638L,36639L,36640L,36641L,36642L,36643L,36644L,36645L,36646L,36647L, +36648L,36649L,36650L,36651L,36652L,36653L,36654L,36655L,36656L,36657L, +36658L,36659L,36660L,36661L,36662L,36663L,36664L,36665L,36666L,36667L, +36668L,36669L,36670L,36671L,36672L,36673L,36674L,36675L,36676L,36677L, +36678L,36679L,36680L,36681L,36682L,36683L,36684L,36685L,36686L,36687L, +36688L,36689L,36690L,36691L,36692L,36693L,36694L,36695L,36696L,36697L, +36698L,36699L,36700L,36701L,36702L,36703L,36704L,36705L,36706L,36707L, +36708L,36709L,36710L,36711L,36712L,36713L,36714L,36715L,36716L,36717L, +36718L,36719L,36720L,36721L,36722L,36723L,36724L,36725L,36726L,36727L, +36728L,36729L,36730L,36731L,36732L,36733L,36734L,36735L,36736L,36737L, +36738L,36739L,36740L,36741L,36742L,36743L,36744L,36745L,36746L,36747L, +36748L,36749L,36750L,36751L,36752L,36753L,36754L,36755L,36756L,36757L, +36758L,36759L,36760L,36761L,36762L,36763L,36764L,36765L,36766L,36767L, +36768L,36769L,36770L,36771L,36772L,36773L,36774L,36775L,36776L,36777L, +36778L,36779L,36780L,36781L,36782L,36783L,36784L,36785L,36786L,36787L, +36788L,36789L,36790L,36791L,36792L,36793L,36794L,36795L,36796L,36797L, +36798L,36799L,36800L,36801L,36802L,36803L,36804L,36805L,36806L,36807L, +36808L,36809L,36810L,36811L,36812L,36813L,36814L,36815L,36816L,36817L, +36818L,36819L,36820L,36821L,36822L,36823L,36824L,36825L,36826L,36827L, +36828L,36829L,36830L,36831L,36832L,36833L,36834L,36835L,36836L,36837L, +36838L,36839L,36840L,36841L,36842L,36843L,36844L,36845L,36846L,36847L, +36848L,36849L,36850L,36851L,36852L,36853L,36854L,36855L,36856L,36857L, +36858L,36859L,36860L,36861L,36862L,36863L,36864L,36865L,36866L,36867L, +36868L,36869L,36870L,36871L,36872L,36873L,36874L,36875L,36876L,36877L, +36878L,36879L,36880L,36881L,36882L,36883L,36884L,36885L,36886L,36887L, +36888L,36889L,36890L,36891L,36892L,36893L,36894L,36895L,36896L,36897L, +36898L,36899L,36900L,36901L,36902L,36903L,36904L,36905L,36906L,36907L, +36908L,36909L,36910L,36911L,36912L,36913L,36914L,36915L,36916L,36917L, +36918L,36919L,36920L,36921L,36922L,36923L,36924L,36925L,36926L,36927L, +36928L,36929L,36930L,36931L,36932L,36933L,36934L,36935L,36936L,36937L, +36938L,36939L,36940L,36941L,36942L,36943L,36944L,36945L,36946L,36947L, +36948L,36949L,36950L,36951L,36952L,36953L,36954L,36955L,36956L,36957L, +36958L,36959L,36960L,36961L,36962L,36963L,36964L,36965L,36966L,36967L, +36968L,36969L,36970L,36971L,36972L,36973L,36974L,36975L,36976L,36977L, +36978L,36979L,36980L,36981L,36982L,36983L,36984L,36985L,36986L,36987L, +36988L,36989L,36990L,36991L,36992L,36993L,36994L,36995L,36996L,36997L, +36998L,36999L,37000L,37001L,37002L,37003L,37004L,37005L,37006L,37007L, +37008L,37009L,37010L,37011L,37012L,37013L,37014L,37015L,37016L,37017L, +37018L,37019L,37020L,37021L,37022L,37023L,37024L,37025L,37026L,37027L, +37028L,37029L,37030L,37031L,37032L,37033L,37034L,37035L,37036L,37037L, +37038L,37039L,37040L,37041L,37042L,37043L,37044L,37045L,37046L,37047L, +37048L,37049L,37050L,37051L,37052L,37053L,37054L,37055L,37056L,37057L, +37058L,37059L,37060L,37061L,37062L,37063L,37064L,37065L,37066L,37067L, +37068L,37069L,37070L,37071L,37072L,37073L,37074L,37075L,37076L,37077L, +37078L,37079L,37080L,37081L,37082L,37083L,37084L,37085L,37086L,37087L, +37088L,37089L,37090L,37091L,37092L,37093L,37094L,37095L,37096L,37097L, +37098L,37099L,37100L,37101L,37102L,37103L,37104L,37105L,37106L,37107L, +37108L,37109L,37110L,37111L,37112L,37113L,37114L,37115L,37116L,37117L, +37118L,37119L,37120L,37121L,37122L,37123L,37124L,37125L,37126L,37127L, +37128L,37129L,37130L,37131L,37132L,37133L,37134L,37135L,37136L,37137L, +37138L,37139L,37140L,37141L,37142L,37143L,37144L,37145L,37146L,37147L, +37148L,37149L,37150L,37151L,37152L,37153L,37154L,37155L,37156L,37157L, +37158L,37159L,37160L,37161L,37162L,37163L,37164L,37165L,37166L,37167L, +37168L,37169L,37170L,37171L,37172L,37173L,37174L,37175L,37176L,37177L, +37178L,37179L,37180L,37181L,37182L,37183L,37184L,37185L,37186L,37187L, +37188L,37189L,37190L,37191L,37192L,37193L,37194L,37195L,37196L,37197L, +37198L,37199L,37200L,37201L,37202L,37203L,37204L,37205L,37206L,37207L, +37208L,37209L,37210L,37211L,37212L,37213L,37214L,37215L,37216L,37217L, +37218L,37219L,37220L,37221L,37222L,37223L,37224L,37225L,37226L,37227L, +37228L,37229L,37230L,37231L,37232L,37233L,37234L,37235L,37236L,37237L, +37238L,37239L,37240L,37241L,37242L,37243L,37244L,37245L,37246L,37247L, +37248L,37249L,37250L,37251L,37252L,37253L,37254L,37255L,37256L,37257L, +37258L,37259L,37260L,37261L,37262L,37263L,37264L,37265L,37266L,37267L, +37268L,37269L,37270L,37271L,37272L,37273L,37274L,37275L,37276L,37277L, +37278L,37279L,37280L,37281L,37282L,37283L,37284L,37285L,37286L,37287L, +37288L,37289L,37290L,37291L,37292L,37293L,37294L,37295L,37296L,37297L, +37298L,37299L,37300L,37301L,37302L,37303L,37304L,37305L,37306L,37307L, +37308L,37309L,37310L,37311L,37312L,37313L,37314L,37315L,37316L,37317L, +37318L,37319L,37320L,37321L,37322L,37323L,37324L,37325L,37326L,37327L, +37328L,37329L,37330L,37331L,37332L,37333L,37334L,37335L,37336L,37337L, +37338L,37339L,37340L,37341L,37342L,37343L,37344L,37345L,37346L,37347L, +37348L,37349L,37350L,37351L,37352L,37353L,37354L,37355L,37356L,37357L, +37358L,37359L,37360L,37361L,37362L,37363L,37364L,37365L,37366L,37367L, +37368L,37369L,37370L,37371L,37372L,37373L,37374L,37375L,37376L,37377L, +37378L,37379L,37380L,37381L,37382L,37383L,37384L,37385L,37386L,37387L, +37388L,37389L,37390L,37391L,37392L,37393L,37394L,37395L,37396L,37397L, +37398L,37399L,37400L,37401L,37402L,37403L,37404L,37405L,37406L,37407L, +37408L,37409L,37410L,37411L,37412L,37413L,37414L,37415L,37416L,37417L, +37418L,37419L,37420L,37421L,37422L,37423L,37424L,37425L,37426L,37427L, +37428L,37429L,37430L,37431L,37432L,37433L,37434L,37435L,37436L,37437L, +37438L,37439L,37440L,37441L,37442L,37443L,37444L,37445L,37446L,37447L, +37448L,37449L,37450L,37451L,37452L,37453L,37454L,37455L,37456L,37457L, +37458L,37459L,37460L,37461L,37462L,37463L,37464L,37465L,37466L,37467L, +37468L,37469L,37470L,37471L,37472L,37473L,37474L,37475L,37476L,37477L, +37478L,37479L,37480L,37481L,37482L,37483L,37484L,37485L,37486L,37487L, +37488L,37489L,37490L,37491L,37492L,37493L,37494L,37495L,37496L,37497L, +37498L,37499L,37500L,37501L,37502L,37503L,37504L,37505L,37506L,37507L, +37508L,37509L,37510L,37511L,37512L,37513L,37514L,37515L,37516L,37517L, +37518L,37519L,37520L,37521L,37522L,37523L,37524L,37525L,37526L,37527L, +37528L,37529L,37530L,37531L,37532L,37533L,37534L,37535L,37536L,37537L, +37538L,37539L,37540L,37541L,37542L,37543L,37544L,37545L,37546L,37547L, +37548L,37549L,37550L,37551L,37552L,37553L,37554L,37555L,37556L,37557L, +37558L,37559L,37560L,37561L,37562L,37563L,37564L,37565L,37566L,37567L, +37568L,37569L,37570L,37571L,37572L,37573L,37574L,37575L,37576L,37577L, +37578L,37579L,37580L,37581L,37582L,37583L,37584L,37585L,37586L,37587L, +37588L,37589L,37590L,37591L,37592L,37593L,37594L,37595L,37596L,37597L, +37598L,37599L,37600L,37601L,37602L,37603L,37604L,37605L,37606L,37607L, +37608L,37609L,37610L,37611L,37612L,37613L,37614L,37615L,37616L,37617L, +37618L,37619L,37620L,37621L,37622L,37623L,37624L,37625L,37626L,37627L, +37628L,37629L,37630L,37631L,37632L,37633L,37634L,37635L,37636L,37637L, +37638L,37639L,37640L,37641L,37642L,37643L,37644L,37645L,37646L,37647L, +37648L,37649L,37650L,37651L,37652L,37653L,37654L,37655L,37656L,37657L, +37658L,37659L,37660L,37661L,37662L,37663L,37664L,37665L,37666L,37667L, +37668L,37669L,37670L,37671L,37672L,37673L,37674L,37675L,37676L,37677L, +37678L,37679L,37680L,37681L,37682L,37683L,37684L,37685L,37686L,37687L, +37688L,37689L,37690L,37691L,37692L,37693L,37694L,37695L,37696L,37697L, +37698L,37699L,37700L,37701L,37702L,37703L,37704L,37705L,37706L,37707L, +37708L,37709L,37710L,37711L,37712L,37713L,37714L,37715L,37716L,37717L, +37718L,37719L,37720L,37721L,37722L,37723L,37724L,37725L,37726L,37727L, +37728L,37729L,37730L,37731L,37732L,37733L,37734L,37735L,37736L,37737L, +37738L,37739L,37740L,37741L,37742L,37743L,37744L,37745L,37746L,37747L, +37748L,37749L,37750L,37751L,37752L,37753L,37754L,37755L,37756L,37757L, +37758L,37759L,37760L,37761L,37762L,37763L,37764L,37765L,37766L,37767L, +37768L,37769L,37770L,37771L,37772L,37773L,37774L,37775L,37776L,37777L, +37778L,37779L,37780L,37781L,37782L,37783L,37784L,37785L,37786L,37787L, +37788L,37789L,37790L,37791L,37792L,37793L,37794L,37795L,37796L,37797L, +37798L,37799L,37800L,37801L,37802L,37803L,37804L,37805L,37806L,37807L, +37808L,37809L,37810L,37811L,37812L,37813L,37814L,37815L,37816L,37817L, +37818L,37819L,37820L,37821L,37822L,37823L,37824L,37825L,37826L,37827L, +37828L,37829L,37830L,37831L,37832L,37833L,37834L,37835L,37836L,37837L, +37838L,37839L,37840L,37841L,37842L,37843L,37844L,37845L,37846L,37847L, +37848L,37849L,37850L,37851L,37852L,37853L,37854L,37855L,37856L,37857L, +37858L,37859L,37860L,37861L,37862L,37863L,37864L,37865L,37866L,37867L, +37868L,37869L,37870L,37871L,37872L,37873L,37874L,37875L,37876L,37877L, +37878L,37879L,37880L,37881L,37882L,37883L,37884L,37885L,37886L,37887L, +37888L,37889L,37890L,37891L,37892L,37893L,37894L,37895L,37896L,37897L, +37898L,37899L,37900L,37901L,37902L,37903L,37904L,37905L,37906L,37907L, +37908L,37909L,37910L,37911L,37912L,37913L,37914L,37915L,37916L,37917L, +37918L,37919L,37920L,37921L,37922L,37923L,37924L,37925L,37926L,37927L, +37928L,37929L,37930L,37931L,37932L,37933L,37934L,37935L,37936L,37937L, +37938L,37939L,37940L,37941L,37942L,37943L,37944L,37945L,37946L,37947L, +37948L,37949L,37950L,37951L,37952L,37953L,37954L,37955L,37956L,37957L, +37958L,37959L,37960L,37961L,37962L,37963L,37964L,37965L,37966L,37967L, +37968L,37969L,37970L,37971L,37972L,37973L,37974L,37975L,37976L,37977L, +37978L,37979L,37980L,37981L,37982L,37983L,37984L,37985L,37986L,37987L, +37988L,37989L,37990L,37991L,37992L,37993L,37994L,37995L,37996L,37997L, +37998L,37999L,38000L,38001L,38002L,38003L,38004L,38005L,38006L,38007L, +38008L,38009L,38010L,38011L,38012L,38013L,38014L,38015L,38016L,38017L, +38018L,38019L,38020L,38021L,38022L,38023L,38024L,38025L,38026L,38027L, +38028L,38029L,38030L,38031L,38032L,38033L,38034L,38035L,38036L,38037L, +38038L,38039L,38040L,38041L,38042L,38043L,38044L,38045L,38046L,38047L, +38048L,38049L,38050L,38051L,38052L,38053L,38054L,38055L,38056L,38057L, +38058L,38059L,38060L,38061L,38062L,38063L,38064L,38065L,38066L,38067L, +38068L,38069L,38070L,38071L,38072L,38073L,38074L,38075L,38076L,38077L, +38078L,38079L,38080L,38081L,38082L,38083L,38084L,38085L,38086L,38087L, +38088L,38089L,38090L,38091L,38092L,38093L,38094L,38095L,38096L,38097L, +38098L,38099L,38100L,38101L,38102L,38103L,38104L,38105L,38106L,38107L, +38108L,38109L,38110L,38111L,38112L,38113L,38114L,38115L,38116L,38117L, +38118L,38119L,38120L,38121L,38122L,38123L,38124L,38125L,38126L,38127L, +38128L,38129L,38130L,38131L,38132L,38133L,38134L,38135L,38136L,38137L, +38138L,38139L,38140L,38141L,38142L,38143L,38144L,38145L,38146L,38147L, +38148L,38149L,38150L,38151L,38152L,38153L,38154L,38155L,38156L,38157L, +38158L,38159L,38160L,38161L,38162L,38163L,38164L,38165L,38166L,38167L, +38168L,38169L,38170L,38171L,38172L,38173L,38174L,38175L,38176L,38177L, +38178L,38179L,38180L,38181L,38182L,38183L,38184L,38185L,38186L,38187L, +38188L,38189L,38190L,38191L,38192L,38193L,38194L,38195L,38196L,38197L, +38198L,38199L,38200L,38201L,38202L,38203L,38204L,38205L,38206L,38207L, +38208L,38209L,38210L,38211L,38212L,38213L,38214L,38215L,38216L,38217L, +38218L,38219L,38220L,38221L,38222L,38223L,38224L,38225L,38226L,38227L, +38228L,38229L,38230L,38231L,38232L,38233L,38234L,38235L,38236L,38237L, +38238L,38239L,38240L,38241L,38242L,38243L,38244L,38245L,38246L,38247L, +38248L,38249L,38250L,38251L,38252L,38253L,38254L,38255L,38256L,38257L, +38258L,38259L,38260L,38261L,38262L,38263L,38264L,38265L,38266L,38267L, +38268L,38269L,38270L,38271L,38272L,38273L,38274L,38275L,38276L,38277L, +38278L,38279L,38280L,38281L,38282L,38283L,38284L,38285L,38286L,38287L, +38288L,38289L,38290L,38291L,38292L,38293L,38294L,38295L,38296L,38297L, +38298L,38299L,38300L,38301L,38302L,38303L,38304L,38305L,38306L,38307L, +38308L,38309L,38310L,38311L,38312L,38313L,38314L,38315L,38316L,38317L, +38318L,38319L,38320L,38321L,38322L,38323L,38324L,38325L,38326L,38327L, +38328L,38329L,38330L,38331L,38332L,38333L,38334L,38335L,38336L,38337L, +38338L,38339L,38340L,38341L,38342L,38343L,38344L,38345L,38346L,38347L, +38348L,38349L,38350L,38351L,38352L,38353L,38354L,38355L,38356L,38357L, +38358L,38359L,38360L,38361L,38362L,38363L,38364L,38365L,38366L,38367L, +38368L,38369L,38370L,38371L,38372L,38373L,38374L,38375L,38376L,38377L, +38378L,38379L,38380L,38381L,38382L,38383L,38384L,38385L,38386L,38387L, +38388L,38389L,38390L,38391L,38392L,38393L,38394L,38395L,38396L,38397L, +38398L,38399L,38400L,38401L,38402L,38403L,38404L,38405L,38406L,38407L, +38408L,38409L,38410L,38411L,38412L,38413L,38414L,38415L,38416L,38417L, +38418L,38419L,38420L,38421L,38422L,38423L,38424L,38425L,38426L,38427L, +38428L,38429L,38430L,38431L,38432L,38433L,38434L,38435L,38436L,38437L, +38438L,38439L,38440L,38441L,38442L,38443L,38444L,38445L,38446L,38447L, +38448L,38449L,38450L,38451L,38452L,38453L,38454L,38455L,38456L,38457L, +38458L,38459L,38460L,38461L,38462L,38463L,38464L,38465L,38466L,38467L, +38468L,38469L,38470L,38471L,38472L,38473L,38474L,38475L,38476L,38477L, +38478L,38479L,38480L,38481L,38482L,38483L,38484L,38485L,38486L,38487L, +38488L,38489L,38490L,38491L,38492L,38493L,38494L,38495L,38496L,38497L, +38498L,38499L,38500L,38501L,38502L,38503L,38504L,38505L,38506L,38507L, +38508L,38509L,38510L,38511L,38512L,38513L,38514L,38515L,38516L,38517L, +38518L,38519L,38520L,38521L,38522L,38523L,38524L,38525L,38526L,38527L, +38528L,38529L,38530L,38531L,38532L,38533L,38534L,38535L,38536L,38537L, +38538L,38539L,38540L,38541L,38542L,38543L,38544L,38545L,38546L,38547L, +38548L,38549L,38550L,38551L,38552L,38553L,38554L,38555L,38556L,38557L, +38558L,38559L,38560L,38561L,38562L,38563L,38564L,38565L,38566L,38567L, +38568L,38569L,38570L,38571L,38572L,38573L,38574L,38575L,38576L,38577L, +38578L,38579L,38580L,38581L,38582L,38583L,38584L,38585L,38586L,38587L, +38588L,38589L,38590L,38591L,38592L,38593L,38594L,38595L,38596L,38597L, +38598L,38599L,38600L,38601L,38602L,38603L,38604L,38605L,38606L,38607L, +38608L,38609L,38610L,38611L,38612L,38613L,38614L,38615L,38616L,38617L, +38618L,38619L,38620L,38621L,38622L,38623L,38624L,38625L,38626L,38627L, +38628L,38629L,38630L,38631L,38632L,38633L,38634L,38635L,38636L,38637L, +38638L,38639L,38640L,38641L,38642L,38643L,38644L,38645L,38646L,38647L, +38648L,38649L,38650L,38651L,38652L,38653L,38654L,38655L,38656L,38657L, +38658L,38659L,38660L,38661L,38662L,38663L,38664L,38665L,38666L,38667L, +38668L,38669L,38670L,38671L,38672L,38673L,38674L,38675L,38676L,38677L, +38678L,38679L,38680L,38681L,38682L,38683L,38684L,38685L,38686L,38687L, +38688L,38689L,38690L,38691L,38692L,38693L,38694L,38695L,38696L,38697L, +38698L,38699L,38700L,38701L,38702L,38703L,38704L,38705L,38706L,38707L, +38708L,38709L,38710L,38711L,38712L,38713L,38714L,38715L,38716L,38717L, +38718L,38719L,38720L,38721L,38722L,38723L,38724L,38725L,38726L,38727L, +38728L,38729L,38730L,38731L,38732L,38733L,38734L,38735L,38736L,38737L, +38738L,38739L,38740L,38741L,38742L,38743L,38744L,38745L,38746L,38747L, +38748L,38749L,38750L,38751L,38752L,38753L,38754L,38755L,38756L,38757L, +38758L,38759L,38760L,38761L,38762L,38763L,38764L,38765L,38766L,38767L, +38768L,38769L,38770L,38771L,38772L,38773L,38774L,38775L,38776L,38777L, +38778L,38779L,38780L,38781L,38782L,38783L,38784L,38785L,38786L,38787L, +38788L,38789L,38790L,38791L,38792L,38793L,38794L,38795L,38796L,38797L, +38798L,38799L,38800L,38801L,38802L,38803L,38804L,38805L,38806L,38807L, +38808L,38809L,38810L,38811L,38812L,38813L,38814L,38815L,38816L,38817L, +38818L,38819L,38820L,38821L,38822L,38823L,38824L,38825L,38826L,38827L, +38828L,38829L,38830L,38831L,38832L,38833L,38834L,38835L,38836L,38837L, +38838L,38839L,38840L,38841L,38842L,38843L,38844L,38845L,38846L,38847L, +38848L,38849L,38850L,38851L,38852L,38853L,38854L,38855L,38856L,38857L, +38858L,38859L,38860L,38861L,38862L,38863L,38864L,38865L,38866L,38867L, +38868L,38869L,38870L,38871L,38872L,38873L,38874L,38875L,38876L,38877L, +38878L,38879L,38880L,38881L,38882L,38883L,38884L,38885L,38886L,38887L, +38888L,38889L,38890L,38891L,38892L,38893L,38894L,38895L,38896L,38897L, +38898L,38899L,38900L,38901L,38902L,38903L,38904L,38905L,38906L,38907L, +38908L,38909L,38910L,38911L,38912L,38913L,38914L,38915L,38916L,38917L, +38918L,38919L,38920L,38921L,38922L,38923L,38924L,38925L,38926L,38927L, +38928L,38929L,38930L,38931L,38932L,38933L,38934L,38935L,38936L,38937L, +38938L,38939L,38940L,38941L,38942L,38943L,38944L,38945L,38946L,38947L, +38948L,38949L,38950L,38951L,38952L,38953L,38954L,38955L,38956L,38957L, +38958L,38959L,38960L,38961L,38962L,38963L,38964L,38965L,38966L,38967L, +38968L,38969L,38970L,38971L,38972L,38973L,38974L,38975L,38976L,38977L, +38978L,38979L,38980L,38981L,38982L,38983L,38984L,38985L,38986L,38987L, +38988L,38989L,38990L,38991L,38992L,38993L,38994L,38995L,38996L,38997L, +38998L,38999L,39000L,39001L,39002L,39003L,39004L,39005L,39006L,39007L, +39008L,39009L,39010L,39011L,39012L,39013L,39014L,39015L,39016L,39017L, +39018L,39019L,39020L,39021L,39022L,39023L,39024L,39025L,39026L,39027L, +39028L,39029L,39030L,39031L,39032L,39033L,39034L,39035L,39036L,39037L, +39038L,39039L,39040L,39041L,39042L,39043L,39044L,39045L,39046L,39047L, +39048L,39049L,39050L,39051L,39052L,39053L,39054L,39055L,39056L,39057L, +39058L,39059L,39060L,39061L,39062L,39063L,39064L,39065L,39066L,39067L, +39068L,39069L,39070L,39071L,39072L,39073L,39074L,39075L,39076L,39077L, +39078L,39079L,39080L,39081L,39082L,39083L,39084L,39085L,39086L,39087L, +39088L,39089L,39090L,39091L,39092L,39093L,39094L,39095L,39096L,39097L, +39098L,39099L,39100L,39101L,39102L,39103L,39104L,39105L,39106L,39107L, +39108L,39109L,39110L,39111L,39112L,39113L,39114L,39115L,39116L,39117L, +39118L,39119L,39120L,39121L,39122L,39123L,39124L,39125L,39126L,39127L, +39128L,39129L,39130L,39131L,39132L,39133L,39134L,39135L,39136L,39137L, +39138L,39139L,39140L,39141L,39142L,39143L,39144L,39145L,39146L,39147L, +39148L,39149L,39150L,39151L,39152L,39153L,39154L,39155L,39156L,39157L, +39158L,39159L,39160L,39161L,39162L,39163L,39164L,39165L,39166L,39167L, +39168L,39169L,39170L,39171L,39172L,39173L,39174L,39175L,39176L,39177L, +39178L,39179L,39180L,39181L,39182L,39183L,39184L,39185L,39186L,39187L, +39188L,39189L,39190L,39191L,39192L,39193L,39194L,39195L,39196L,39197L, +39198L,39199L,39200L,39201L,39202L,39203L,39204L,39205L,39206L,39207L, +39208L,39209L,39210L,39211L,39212L,39213L,39214L,39215L,39216L,39217L, +39218L,39219L,39220L,39221L,39222L,39223L,39224L,39225L,39226L,39227L, +39228L,39229L,39230L,39231L,39232L,39233L,39234L,39235L,39236L,39237L, +39238L,39239L,39240L,39241L,39242L,39243L,39244L,39245L,39246L,39247L, +39248L,39249L,39250L,39251L,39252L,39253L,39254L,39255L,39256L,39257L, +39258L,39259L,39260L,39261L,39262L,39263L,39264L,39265L,39266L,39267L, +39268L,39269L,39270L,39271L,39272L,39273L,39274L,39275L,39276L,39277L, +39278L,39279L,39280L,39281L,39282L,39283L,39284L,39285L,39286L,39287L, +39288L,39289L,39290L,39291L,39292L,39293L,39294L,39295L,39296L,39297L, +39298L,39299L,39300L,39301L,39302L,39303L,39304L,39305L,39306L,39307L, +39308L,39309L,39310L,39311L,39312L,39313L,39314L,39315L,39316L,39317L, +39318L,39319L,39320L,39321L,39322L,39323L,39324L,39325L,39326L,39327L, +39328L,39329L,39330L,39331L,39332L,39333L,39334L,39335L,39336L,39337L, +39338L,39339L,39340L,39341L,39342L,39343L,39344L,39345L,39346L,39347L, +39348L,39349L,39350L,39351L,39352L,39353L,39354L,39355L,39356L,39357L, +39358L,39359L,39360L,39361L,39362L,39363L,39364L,39365L,39366L,39367L, +39368L,39369L,39370L,39371L,39372L,39373L,39374L,39375L,39376L,39377L, +39378L,39379L,39380L,39381L,39382L,39383L,39384L,39385L,39386L,39387L, +39388L,39389L,39390L,39391L,39392L,39393L,39394L,39395L,39396L,39397L, +39398L,39399L,39400L,39401L,39402L,39403L,39404L,39405L,39406L,39407L, +39408L,39409L,39410L,39411L,39412L,39413L,39414L,39415L,39416L,39417L, +39418L,39419L,39420L,39421L,39422L,39423L,39424L,39425L,39426L,39427L, +39428L,39429L,39430L,39431L,39432L,39433L,39434L,39435L,39436L,39437L, +39438L,39439L,39440L,39441L,39442L,39443L,39444L,39445L,39446L,39447L, +39448L,39449L,39450L,39451L,39452L,39453L,39454L,39455L,39456L,39457L, +39458L,39459L,39460L,39461L,39462L,39463L,39464L,39465L,39466L,39467L, +39468L,39469L,39470L,39471L,39472L,39473L,39474L,39475L,39476L,39477L, +39478L,39479L,39480L,39481L,39482L,39483L,39484L,39485L,39486L,39487L, +39488L,39489L,39490L,39491L,39492L,39493L,39494L,39495L,39496L,39497L, +39498L,39499L,39500L,39501L,39502L,39503L,39504L,39505L,39506L,39507L, +39508L,39509L,39510L,39511L,39512L,39513L,39514L,39515L,39516L,39517L, +39518L,39519L,39520L,39521L,39522L,39523L,39524L,39525L,39526L,39527L, +39528L,39529L,39530L,39531L,39532L,39533L,39534L,39535L,39536L,39537L, +39538L,39539L,39540L,39541L,39542L,39543L,39544L,39545L,39546L,39547L, +39548L,39549L,39550L,39551L,39552L,39553L,39554L,39555L,39556L,39557L, +39558L,39559L,39560L,39561L,39562L,39563L,39564L,39565L,39566L,39567L, +39568L,39569L,39570L,39571L,39572L,39573L,39574L,39575L,39576L,39577L, +39578L,39579L,39580L,39581L,39582L,39583L,39584L,39585L,39586L,39587L, +39588L,39589L,39590L,39591L,39592L,39593L,39594L,39595L,39596L,39597L, +39598L,39599L,39600L,39601L,39602L,39603L,39604L,39605L,39606L,39607L, +39608L,39609L,39610L,39611L,39612L,39613L,39614L,39615L,39616L,39617L, +39618L,39619L,39620L,39621L,39622L,39623L,39624L,39625L,39626L,39627L, +39628L,39629L,39630L,39631L,39632L,39633L,39634L,39635L,39636L,39637L, +39638L,39639L,39640L,39641L,39642L,39643L,39644L,39645L,39646L,39647L, +39648L,39649L,39650L,39651L,39652L,39653L,39654L,39655L,39656L,39657L, +39658L,39659L,39660L,39661L,39662L,39663L,39664L,39665L,39666L,39667L, +39668L,39669L,39670L,39671L,39672L,39673L,39674L,39675L,39676L,39677L, +39678L,39679L,39680L,39681L,39682L,39683L,39684L,39685L,39686L,39687L, +39688L,39689L,39690L,39691L,39692L,39693L,39694L,39695L,39696L,39697L, +39698L,39699L,39700L,39701L,39702L,39703L,39704L,39705L,39706L,39707L, +39708L,39709L,39710L,39711L,39712L,39713L,39714L,39715L,39716L,39717L, +39718L,39719L,39720L,39721L,39722L,39723L,39724L,39725L,39726L,39727L, +39728L,39729L,39730L,39731L,39732L,39733L,39734L,39735L,39736L,39737L, +39738L,39739L,39740L,39741L,39742L,39743L,39744L,39745L,39746L,39747L, +39748L,39749L,39750L,39751L,39752L,39753L,39754L,39755L,39756L,39757L, +39758L,39759L,39760L,39761L,39762L,39763L,39764L,39765L,39766L,39767L, +39768L,39769L,39770L,39771L,39772L,39773L,39774L,39775L,39776L,39777L, +39778L,39779L,39780L,39781L,39782L,39783L,39784L,39785L,39786L,39787L, +39788L,39789L,39790L,39791L,39792L,39793L,39794L,39795L,39796L,39797L, +39798L,39799L,39800L,39801L,39802L,39803L,39804L,39805L,39806L,39807L, +39808L,39809L,39810L,39811L,39812L,39813L,39814L,39815L,39816L,39817L, +39818L,39819L,39820L,39821L,39822L,39823L,39824L,39825L,39826L,39827L, +39828L,39829L,39830L,39831L,39832L,39833L,39834L,39835L,39836L,39837L, +39838L,39839L,39840L,39841L,39842L,39843L,39844L,39845L,39846L,39847L, +39848L,39849L,39850L,39851L,39852L,39853L,39854L,39855L,39856L,39857L, +39858L,39859L,39860L,39861L,39862L,39863L,39864L,39865L,39866L,39867L, +39868L,39869L,39870L,39871L,39872L,39873L,39874L,39875L,39876L,39877L, +39878L,39879L,39880L,39881L,39882L,39883L,39884L,39885L,39886L,39887L, +39888L,39889L,39890L,39891L,39892L,39893L,39894L,39895L,39896L,39897L, +39898L,39899L,39900L,39901L,39902L,39903L,39904L,39905L,39906L,39907L, +39908L,39909L,39910L,39911L,39912L,39913L,39914L,39915L,39916L,39917L, +39918L,39919L,39920L,39921L,39922L,39923L,39924L,39925L,39926L,39927L, +39928L,39929L,39930L,39931L,39932L,39933L,39934L,39935L,39936L,39937L, +39938L,39939L,39940L,39941L,39942L,39943L,39944L,39945L,39946L,39947L, +39948L,39949L,39950L,39951L,39952L,39953L,39954L,39955L,39956L,39957L, +39958L,39959L,39960L,39961L,39962L,39963L,39964L,39965L,39966L,39967L, +39968L,39969L,39970L,39971L,39972L,39973L,39974L,39975L,39976L,39977L, +39978L,39979L,39980L,39981L,39982L,39983L,39984L,39985L,39986L,39987L, +39988L,39989L,39990L,39991L,39992L,39993L,39994L,39995L,39996L,39997L, +39998L,39999L,40000L,40001L,40002L,40003L,40004L,40005L,40006L,40007L, +40008L,40009L,40010L,40011L,40012L,40013L,40014L,40015L,40016L,40017L, +40018L,40019L,40020L,40021L,40022L,40023L,40024L,40025L,40026L,40027L, +40028L,40029L,40030L,40031L,40032L,40033L,40034L,40035L,40036L,40037L, +40038L,40039L,40040L,40041L,40042L,40043L,40044L,40045L,40046L,40047L, +40048L,40049L,40050L,40051L,40052L,40053L,40054L,40055L,40056L,40057L, +40058L,40059L,40060L,40061L,40062L,40063L,40064L,40065L,40066L,40067L, +40068L,40069L,40070L,40071L,40072L,40073L,40074L,40075L,40076L,40077L, +40078L,40079L,40080L,40081L,40082L,40083L,40084L,40085L,40086L,40087L, +40088L,40089L,40090L,40091L,40092L,40093L,40094L,40095L,40096L,40097L, +40098L,40099L,40100L,40101L,40102L,40103L,40104L,40105L,40106L,40107L, +40108L,40109L,40110L,40111L,40112L,40113L,40114L,40115L,40116L,40117L, +40118L,40119L,40120L,40121L,40122L,40123L,40124L,40125L,40126L,40127L, +40128L,40129L,40130L,40131L,40132L,40133L,40134L,40135L,40136L,40137L, +40138L,40139L,40140L,40141L,40142L,40143L,40144L,40145L,40146L,40147L, +40148L,40149L,40150L,40151L,40152L,40153L,40154L,40155L,40156L,40157L, +40158L,40159L,40160L,40161L,40162L,40163L,40164L,40165L,40166L,40167L, +40168L,40169L,40170L,40171L,40172L,40173L,40174L,40175L,40176L,40177L, +40178L,40179L,40180L,40181L,40182L,40183L,40184L,40185L,40186L,40187L, +40188L,40189L,40190L,40191L,40192L,40193L,40194L,40195L,40196L,40197L, +40198L,40199L,40200L,40201L,40202L,40203L,40204L,40205L,40206L,40207L, +40208L,40209L,40210L,40211L,40212L,40213L,40214L,40215L,40216L,40217L, +40218L,40219L,40220L,40221L,40222L,40223L,40224L,40225L,40226L,40227L, +40228L,40229L,40230L,40231L,40232L,40233L,40234L,40235L,40236L,40237L, +40238L,40239L,40240L,40241L,40242L,40243L,40244L,40245L,40246L,40247L, +40248L,40249L,40250L,40251L,40252L,40253L,40254L,40255L,40256L,40257L, +40258L,40259L,40260L,40261L,40262L,40263L,40264L,40265L,40266L,40267L, +40268L,40269L,40270L,40271L,40272L,40273L,40274L,40275L,40276L,40277L, +40278L,40279L,40280L,40281L,40282L,40283L,40284L,40285L,40286L,40287L, +40288L,40289L,40290L,40291L,40292L,40293L,40294L,40295L,40296L,40297L, +40298L,40299L,40300L,40301L,40302L,40303L,40304L,40305L,40306L,40307L, +40308L,40309L,40310L,40311L,40312L,40313L,40314L,40315L,40316L,40317L, +40318L,40319L,40320L,40321L,40322L,40323L,40324L,40325L,40326L,40327L, +40328L,40329L,40330L,40331L,40332L,40333L,40334L,40335L,40336L,40337L, +40338L,40339L,40340L,40341L,40342L,40343L,40344L,40345L,40346L,40347L, +40348L,40349L,40350L,40351L,40352L,40353L,40354L,40355L,40356L,40357L, +40358L,40359L,40360L,40361L,40362L,40363L,40364L,40365L,40366L,40367L, +40368L,40369L,40370L,40371L,40372L,40373L,40374L,40375L,40376L,40377L, +40378L,40379L,40380L,40381L,40382L,40383L,40384L,40385L,40386L,40387L, +40388L,40389L,40390L,40391L,40392L,40393L,40394L,40395L,40396L,40397L, +40398L,40399L,40400L,40401L,40402L,40403L,40404L,40405L,40406L,40407L, +40408L,40409L,40410L,40411L,40412L,40413L,40414L,40415L,40416L,40417L, +40418L,40419L,40420L,40421L,40422L,40423L,40424L,40425L,40426L,40427L, +40428L,40429L,40430L,40431L,40432L,40433L,40434L,40435L,40436L,40437L, +40438L,40439L,40440L,40441L,40442L,40443L,40444L,40445L,40446L,40447L, +40448L,40449L,40450L,40451L,40452L,40453L,40454L,40455L,40456L,40457L, +40458L,40459L,40460L,40461L,40462L,40463L,40464L,40465L,40466L,40467L, +40468L,40469L,40470L,40471L,40472L,40473L,40474L,40475L,40476L,40477L, +40478L,40479L,40480L,40481L,40482L,40483L,40484L,40485L,40486L,40487L, +40488L,40489L,40490L,40491L,40492L,40493L,40494L,40495L,40496L,40497L, +40498L,40499L,40500L,40501L,40502L,40503L,40504L,40505L,40506L,40507L, +40508L,40509L,40510L,40511L,40512L,40513L,40514L,40515L,40516L,40517L, +40518L,40519L,40520L,40521L,40522L,40523L,40524L,40525L,40526L,40527L, +40528L,40529L,40530L,40531L,40532L,40533L,40534L,40535L,40536L,40537L, +40538L,40539L,40540L,40541L,40542L,40543L,40544L,40545L,40546L,40547L, +40548L,40549L,40550L,40551L,40552L,40553L,40554L,40555L,40556L,40557L, +40558L,40559L,40560L,40561L,40562L,40563L,40564L,40565L,40566L,40567L, +40568L,40569L,40570L,40571L,40572L,40573L,40574L,40575L,40576L,40577L, +40578L,40579L,40580L,40581L,40582L,40583L,40584L,40585L,40586L,40587L, +40588L,40589L,40590L,40591L,40592L,40593L,40594L,40595L,40596L,40597L, +40598L,40599L,40600L,40601L,40602L,40603L,40604L,40605L,40606L,40607L, +40608L,40609L,40610L,40611L,40612L,40613L,40614L,40615L,40616L,40617L, +40618L,40619L,40620L,40621L,40622L,40623L,40624L,40625L,40626L,40627L, +40628L,40629L,40630L,40631L,40632L,40633L,40634L,40635L,40636L,40637L, +40638L,40639L,40640L,40641L,40642L,40643L,40644L,40645L,40646L,40647L, +40648L,40649L,40650L,40651L,40652L,40653L,40654L,40655L,40656L,40657L, +40658L,40659L,40660L,40661L,40662L,40663L,40664L,40665L,40666L,40667L, +40668L,40669L,40670L,40671L,40672L,40673L,40674L,40675L,40676L,40677L, +40678L,40679L,40680L,40681L,40682L,40683L,40684L,40685L,40686L,40687L, +40688L,40689L,40690L,40691L,40692L,40693L,40694L,40695L,40696L,40697L, +40698L,40699L,40700L,40701L,40702L,40703L,40704L,40705L,40706L,40707L, +40708L,40709L,40710L,40711L,40712L,40713L,40714L,40715L,40716L,40717L, +40718L,40719L,40720L,40721L,40722L,40723L,40724L,40725L,40726L,40727L, +40728L,40729L,40730L,40731L,40732L,40733L,40734L,40735L,40736L,40737L, +40738L,40739L,40740L,40741L,40742L,40743L,40744L,40745L,40746L,40747L, +40748L,40749L,40750L,40751L,40752L,40753L,40754L,40755L,40756L,40757L, +40758L,40759L,40760L,40761L,40762L,40763L,40764L,40765L,40766L,40767L, +40768L,40769L,40770L,40771L,40772L,40773L,40774L,40775L,40776L,40777L, +40778L,40779L,40780L,40781L,40782L,40783L,40784L,40785L,40786L,40787L, +40788L,40789L,40790L,40791L,40792L,40793L,40794L,40795L,40796L,40797L, +40798L,40799L,40800L,40801L,40802L,40803L,40804L,40805L,40806L,40807L, +40808L,40809L,40810L,40811L,40812L,40813L,40814L,40815L,40816L,40817L, +40818L,40819L,40820L,40821L,40822L,40823L,40824L,40825L,40826L,40827L, +40828L,40829L,40830L,40831L,40832L,40833L,40834L,40835L,40836L,40837L, +40838L,40839L,40840L,40841L,40842L,40843L,40844L,40845L,40846L,40847L, +40848L,40849L,40850L,40851L,40852L,40853L,40854L,40855L,40856L,40857L, +40858L,40859L,40860L,40861L,40862L,40863L,40864L,40865L,40866L,40867L, +40868L,40869L,40870L,40871L,40872L,40873L,40874L,40875L,40876L,40877L, +40878L,40879L,40880L,40881L,40882L,40883L,40884L,40885L,40886L,40887L, +40888L,40889L,40890L,40891L,40892L,40893L,40894L,40895L,40896L,40897L, +40898L,40899L,40900L,40901L,40902L,40903L,40904L,40905L,40906L,40907L, +40908L,40909L,40910L,40911L,40912L,40913L,40914L,40915L,40916L,40917L, +40918L,40919L,40920L,40921L,40922L,40923L,40924L,40925L,40926L,40927L, +40928L,40929L,40930L,40931L,40932L,40933L,40934L,40935L,40936L,40937L, +40938L,40939L,40940L,40941L,40942L,40943L,40944L,40945L,40946L,40947L, +40948L,40949L,40950L,40951L,40952L,40953L,40954L,40955L,40956L,40957L, +40958L,40959L,40960L,40961L,40962L,40963L,40964L,40965L,40966L,40967L, +40968L,40969L,40970L,40971L,40972L,40973L,40974L,40975L,40976L,40977L, +40978L,40979L,40980L,40981L,40982L,40983L,40984L,40985L,40986L,40987L, +40988L,40989L,40990L,40991L,40992L,40993L,40994L,40995L,40996L,40997L, +40998L,40999L,41000L,41001L,41002L,41003L,41004L,41005L,41006L,41007L, +41008L,41009L,41010L,41011L,41012L,41013L,41014L,41015L,41016L,41017L, +41018L,41019L,41020L,41021L,41022L,41023L,41024L,41025L,41026L,41027L, +41028L,41029L,41030L,41031L,41032L,41033L,41034L,41035L,41036L,41037L, +41038L,41039L,41040L,41041L,41042L,41043L,41044L,41045L,41046L,41047L, +41048L,41049L,41050L,41051L,41052L,41053L,41054L,41055L,41056L,41057L, +41058L,41059L,41060L,41061L,41062L,41063L,41064L,41065L,41066L,41067L, +41068L,41069L,41070L,41071L,41072L,41073L,41074L,41075L,41076L,41077L, +41078L,41079L,41080L,41081L,41082L,41083L,41084L,41085L,41086L,41087L, +41088L,41089L,41090L,41091L,41092L,41093L,41094L,41095L,41096L,41097L, +41098L,41099L,41100L,41101L,41102L,41103L,41104L,41105L,41106L,41107L, +41108L,41109L,41110L,41111L,41112L,41113L,41114L,41115L,41116L,41117L, +41118L,41119L,41120L,41121L,41122L,41123L,41124L,41125L,41126L,41127L, +41128L,41129L,41130L,41131L,41132L,41133L,41134L,41135L,41136L,41137L, +41138L,41139L,41140L,41141L,41142L,41143L,41144L,41145L,41146L,41147L, +41148L,41149L,41150L,41151L,41152L,41153L,41154L,41155L,41156L,41157L, +41158L,41159L,41160L,41161L,41162L,41163L,41164L,41165L,41166L,41167L, +41168L,41169L,41170L,41171L,41172L,41173L,41174L,41175L,41176L,41177L, +41178L,41179L,41180L,41181L,41182L,41183L,41184L,41185L,41186L,41187L, +41188L,41189L,41190L,41191L,41192L,41193L,41194L,41195L,41196L,41197L, +41198L,41199L,41200L,41201L,41202L,41203L,41204L,41205L,41206L,41207L, +41208L,41209L,41210L,41211L,41212L,41213L,41214L,41215L,41216L,41217L, +41218L,41219L,41220L,41221L,41222L,41223L,41224L,41225L,41226L,41227L, +41228L,41229L,41230L,41231L,41232L,41233L,41234L,41235L,41236L,41237L, +41238L,41239L,41240L,41241L,41242L,41243L,41244L,41245L,41246L,41247L, +41248L,41249L,41250L,41251L,41252L,41253L,41254L,41255L,41256L,41257L, +41258L,41259L,41260L,41261L,41262L,41263L,41264L,41265L,41266L,41267L, +41268L,41269L,41270L,41271L,41272L,41273L,41274L,41275L,41276L,41277L, +41278L,41279L,41280L,41281L,41282L,41283L,41284L,41285L,41286L,41287L, +41288L,41289L,41290L,41291L,41292L,41293L,41294L,41295L,41296L,41297L, +41298L,41299L,41300L,41301L,41302L,41303L,41304L,41305L,41306L,41307L, +41308L,41309L,41310L,41311L,41312L,41313L,41314L,41315L,41316L,41317L, +41318L,41319L,41320L,41321L,41322L,41323L,41324L,41325L,41326L,41327L, +41328L,41329L,41330L,41331L,41332L,41333L,41334L,41335L,41336L,41337L, +41338L,41339L,41340L,41341L,41342L,41343L,41344L,41345L,41346L,41347L, +41348L,41349L,41350L,41351L,41352L,41353L,41354L,41355L,41356L,41357L, +41358L,41359L,41360L,41361L,41362L,41363L,41364L,41365L,41366L,41367L, +41368L,41369L,41370L,41371L,41372L,41373L,41374L,41375L,41376L,41377L, +41378L,41379L,41380L,41381L,41382L,41383L,41384L,41385L,41386L,41387L, +41388L,41389L,41390L,41391L,41392L,41393L,41394L,41395L,41396L,41397L, +41398L,41399L,41400L,41401L,41402L,41403L,41404L,41405L,41406L,41407L, +41408L,41409L,41410L,41411L,41412L,41413L,41414L,41415L,41416L,41417L, +41418L,41419L,41420L,41421L,41422L,41423L,41424L,41425L,41426L,41427L, +41428L,41429L,41430L,41431L,41432L,41433L,41434L,41435L,41436L,41437L, +41438L,41439L,41440L,41441L,41442L,41443L,41444L,41445L,41446L,41447L, +41448L,41449L,41450L,41451L,41452L,41453L,41454L,41455L,41456L,41457L, +41458L,41459L,41460L,41461L,41462L,41463L,41464L,41465L,41466L,41467L, +41468L,41469L,41470L,41471L,41472L,41473L,41474L,41475L,41476L,41477L, +41478L,41479L,41480L,41481L,41482L,41483L,41484L,41485L,41486L,41487L, +41488L,41489L,41490L,41491L,41492L,41493L,41494L,41495L,41496L,41497L, +41498L,41499L,41500L,41501L,41502L,41503L,41504L,41505L,41506L,41507L, +41508L,41509L,41510L,41511L,41512L,41513L,41514L,41515L,41516L,41517L, +41518L,41519L,41520L,41521L,41522L,41523L,41524L,41525L,41526L,41527L, +41528L,41529L,41530L,41531L,41532L,41533L,41534L,41535L,41536L,41537L, +41538L,41539L,41540L,41541L,41542L,41543L,41544L,41545L,41546L,41547L, +41548L,41549L,41550L,41551L,41552L,41553L,41554L,41555L,41556L,41557L, +41558L,41559L,41560L,41561L,41562L,41563L,41564L,41565L,41566L,41567L, +41568L,41569L,41570L,41571L,41572L,41573L,41574L,41575L,41576L,41577L, +41578L,41579L,41580L,41581L,41582L,41583L,41584L,41585L,41586L,41587L, +41588L,41589L,41590L,41591L,41592L,41593L,41594L,41595L,41596L,41597L, +41598L,41599L,41600L,41601L,41602L,41603L,41604L,41605L,41606L,41607L, +41608L,41609L,41610L,41611L,41612L,41613L,41614L,41615L,41616L,41617L, +41618L,41619L,41620L,41621L,41622L,41623L,41624L,41625L,41626L,41627L, +41628L,41629L,41630L,41631L,41632L,41633L,41634L,41635L,41636L,41637L, +41638L,41639L,41640L,41641L,41642L,41643L,41644L,41645L,41646L,41647L, +41648L,41649L,41650L,41651L,41652L,41653L,41654L,41655L,41656L,41657L, +41658L,41659L,41660L,41661L,41662L,41663L,41664L,41665L,41666L,41667L, +41668L,41669L,41670L,41671L,41672L,41673L,41674L,41675L,41676L,41677L, +41678L,41679L,41680L,41681L,41682L,41683L,41684L,41685L,41686L,41687L, +41688L,41689L,41690L,41691L,41692L,41693L,41694L,41695L,41696L,41697L, +41698L,41699L,41700L,41701L,41702L,41703L,41704L,41705L,41706L,41707L, +41708L,41709L,41710L,41711L,41712L,41713L,41714L,41715L,41716L,41717L, +41718L,41719L,41720L,41721L,41722L,41723L,41724L,41725L,41726L,41727L, +41728L,41729L,41730L,41731L,41732L,41733L,41734L,41735L,41736L,41737L, +41738L,41739L,41740L,41741L,41742L,41743L,41744L,41745L,41746L,41747L, +41748L,41749L,41750L,41751L,41752L,41753L,41754L,41755L,41756L,41757L, +41758L,41759L,41760L,41761L,41762L,41763L,41764L,41765L,41766L,41767L, +41768L,41769L,41770L,41771L,41772L,41773L,41774L,41775L,41776L,41777L, +41778L,41779L,41780L,41781L,41782L,41783L,41784L,41785L,41786L,41787L, +41788L,41789L,41790L,41791L,41792L,41793L,41794L,41795L,41796L,41797L, +41798L,41799L,41800L,41801L,41802L,41803L,41804L,41805L,41806L,41807L, +41808L,41809L,41810L,41811L,41812L,41813L,41814L,41815L,41816L,41817L, +41818L,41819L,41820L,41821L,41822L,41823L,41824L,41825L,41826L,41827L, +41828L,41829L,41830L,41831L,41832L,41833L,41834L,41835L,41836L,41837L, +41838L,41839L,41840L,41841L,41842L,41843L,41844L,41845L,41846L,41847L, +41848L,41849L,41850L,41851L,41852L,41853L,41854L,41855L,41856L,41857L, +41858L,41859L,41860L,41861L,41862L,41863L,41864L,41865L,41866L,41867L, +41868L,41869L,41870L,41871L,41872L,41873L,41874L,41875L,41876L,41877L, +41878L,41879L,41880L,41881L,41882L,41883L,41884L,41885L,41886L,41887L, +41888L,41889L,41890L,41891L,41892L,41893L,41894L,41895L,41896L,41897L, +41898L,41899L,41900L,41901L,41902L,41903L,41904L,41905L,41906L,41907L, +41908L,41909L,41910L,41911L,41912L,41913L,41914L,41915L,41916L,41917L, +41918L,41919L,41920L,41921L,41922L,41923L,41924L,41925L,41926L,41927L, +41928L,41929L,41930L,41931L,41932L,41933L,41934L,41935L,41936L,41937L, +41938L,41939L,41940L,41941L,41942L,41943L,41944L,41945L,41946L,41947L, +41948L,41949L,41950L,41951L,41952L,41953L,41954L,41955L,41956L,41957L, +41958L,41959L,41960L,41961L,41962L,41963L,41964L,41965L,41966L,41967L, +41968L,41969L,41970L,41971L,41972L,41973L,41974L,41975L,41976L,41977L, +41978L,41979L,41980L,41981L,41982L,41983L,41984L,41985L,41986L,41987L, +41988L,41989L,41990L,41991L,41992L,41993L,41994L,41995L,41996L,41997L, +41998L,41999L,42000L,42001L,42002L,42003L,42004L,42005L,42006L,42007L, +42008L,42009L,42010L,42011L,42012L,42013L,42014L,42015L,42016L,42017L, +42018L,42019L,42020L,42021L,42022L,42023L,42024L,42025L,42026L,42027L, +42028L,42029L,42030L,42031L,42032L,42033L,42034L,42035L,42036L,42037L, +42038L,42039L,42040L,42041L,42042L,42043L,42044L,42045L,42046L,42047L, +42048L,42049L,42050L,42051L,42052L,42053L,42054L,42055L,42056L,42057L, +42058L,42059L,42060L,42061L,42062L,42063L,42064L,42065L,42066L,42067L, +42068L,42069L,42070L,42071L,42072L,42073L,42074L,42075L,42076L,42077L, +42078L,42079L,42080L,42081L,42082L,42083L,42084L,42085L,42086L,42087L, +42088L,42089L,42090L,42091L,42092L,42093L,42094L,42095L,42096L,42097L, +42098L,42099L,42100L,42101L,42102L,42103L,42104L,42105L,42106L,42107L, +42108L,42109L,42110L,42111L,42112L,42113L,42114L,42115L,42116L,42117L, +42118L,42119L,42120L,42121L,42122L,42123L,42124L,42125L,42126L,42127L, +42128L,42129L,42130L,42131L,42132L,42133L,42134L,42135L,42136L,42137L, +42138L,42139L,42140L,42141L,42142L,42143L,42144L,42145L,42146L,42147L, +42148L,42149L,42150L,42151L,42152L,42153L,42154L,42155L,42156L,42157L, +42158L,42159L,42160L,42161L,42162L,42163L,42164L,42165L,42166L,42167L, +42168L,42169L,42170L,42171L,42172L,42173L,42174L,42175L,42176L,42177L, +42178L,42179L,42180L,42181L,42182L,42183L,42184L,42185L,42186L,42187L, +42188L,42189L,42190L,42191L,42192L,42193L,42194L,42195L,42196L,42197L, +42198L,42199L,42200L,42201L,42202L,42203L,42204L,42205L,42206L,42207L, +42208L,42209L,42210L,42211L,42212L,42213L,42214L,42215L,42216L,42217L, +42218L,42219L,42220L,42221L,42222L,42223L,42224L,42225L,42226L,42227L, +42228L,42229L,42230L,42231L,42232L,42233L,42234L,42235L,42236L,42237L, +42238L,42239L,42240L,42241L,42242L,42243L,42244L,42245L,42246L,42247L, +42248L,42249L,42250L,42251L,42252L,42253L,42254L,42255L,42256L,42257L, +42258L,42259L,42260L,42261L,42262L,42263L,42264L,42265L,42266L,42267L, +42268L,42269L,42270L,42271L,42272L,42273L,42274L,42275L,42276L,42277L, +42278L,42279L,42280L,42281L,42282L,42283L,42284L,42285L,42286L,42287L, +42288L,42289L,42290L,42291L,42292L,42293L,42294L,42295L,42296L,42297L, +42298L,42299L,42300L,42301L,42302L,42303L,42304L,42305L,42306L,42307L, +42308L,42309L,42310L,42311L,42312L,42313L,42314L,42315L,42316L,42317L, +42318L,42319L,42320L,42321L,42322L,42323L,42324L,42325L,42326L,42327L, +42328L,42329L,42330L,42331L,42332L,42333L,42334L,42335L,42336L,42337L, +42338L,42339L,42340L,42341L,42342L,42343L,42344L,42345L,42346L,42347L, +42348L,42349L,42350L,42351L,42352L,42353L,42354L,42355L,42356L,42357L, +42358L,42359L,42360L,42361L,42362L,42363L,42364L,42365L,42366L,42367L, +42368L,42369L,42370L,42371L,42372L,42373L,42374L,42375L,42376L,42377L, +42378L,42379L,42380L,42381L,42382L,42383L,42384L,42385L,42386L,42387L, +42388L,42389L,42390L,42391L,42392L,42393L,42394L,42395L,42396L,42397L, +42398L,42399L,42400L,42401L,42402L,42403L,42404L,42405L,42406L,42407L, +42408L,42409L,42410L,42411L,42412L,42413L,42414L,42415L,42416L,42417L, +42418L,42419L,42420L,42421L,42422L,42423L,42424L,42425L,42426L,42427L, +42428L,42429L,42430L,42431L,42432L,42433L,42434L,42435L,42436L,42437L, +42438L,42439L,42440L,42441L,42442L,42443L,42444L,42445L,42446L,42447L, +42448L,42449L,42450L,42451L,42452L,42453L,42454L,42455L,42456L,42457L, +42458L,42459L,42460L,42461L,42462L,42463L,42464L,42465L,42466L,42467L, +42468L,42469L,42470L,42471L,42472L,42473L,42474L,42475L,42476L,42477L, +42478L,42479L,42480L,42481L,42482L,42483L,42484L,42485L,42486L,42487L, +42488L,42489L,42490L,42491L,42492L,42493L,42494L,42495L,42496L,42497L, +42498L,42499L,42500L,42501L,42502L,42503L,42504L,42505L,42506L,42507L, +42508L,42509L,42510L,42511L,42512L,42513L,42514L,42515L,42516L,42517L, +42518L,42519L,42520L,42521L,42522L,42523L,42524L,42525L,42526L,42527L, +42528L,42529L,42530L,42531L,42532L,42533L,42534L,42535L,42536L,42537L, +42538L,42539L,42540L,42541L,42542L,42543L,42544L,42545L,42546L,42547L, +42548L,42549L,42550L,42551L,42552L,42553L,42554L,42555L,42556L,42557L, +42558L,42559L,42560L,42560L,42562L,42562L,42564L,42564L,42566L,42566L, +42568L,42568L,42570L,42570L,42572L,42572L,42574L,42574L,42576L,42576L, +42578L,42578L,42580L,42580L,42582L,42582L,42584L,42584L,42586L,42586L, +42588L,42588L,42590L,42590L,42592L,42592L,42594L,42594L,42596L,42596L, +42598L,42598L,42600L,42600L,42602L,42602L,42604L,42604L,42606L,42607L, +42608L,42609L,42610L,42611L,42612L,42613L,42614L,42615L,42616L,42617L, +42618L,42619L,42620L,42621L,42622L,42623L,42624L,42624L,42626L,42626L, +42628L,42628L,42630L,42630L,42632L,42632L,42634L,42634L,42636L,42636L, +42638L,42638L,42640L,42640L,42642L,42642L,42644L,42644L,42646L,42646L, +42648L,42648L,42650L,42650L,42652L,42653L,42654L,42655L,42656L,42657L, +42658L,42659L,42660L,42661L,42662L,42663L,42664L,42665L,42666L,42667L, +42668L,42669L,42670L,42671L,42672L,42673L,42674L,42675L,42676L,42677L, +42678L,42679L,42680L,42681L,42682L,42683L,42684L,42685L,42686L,42687L, +42688L,42689L,42690L,42691L,42692L,42693L,42694L,42695L,42696L,42697L, +42698L,42699L,42700L,42701L,42702L,42703L,42704L,42705L,42706L,42707L, +42708L,42709L,42710L,42711L,42712L,42713L,42714L,42715L,42716L,42717L, +42718L,42719L,42720L,42721L,42722L,42723L,42724L,42725L,42726L,42727L, +42728L,42729L,42730L,42731L,42732L,42733L,42734L,42735L,42736L,42737L, +42738L,42739L,42740L,42741L,42742L,42743L,42744L,42745L,42746L,42747L, +42748L,42749L,42750L,42751L,42752L,42753L,42754L,42755L,42756L,42757L, +42758L,42759L,42760L,42761L,42762L,42763L,42764L,42765L,42766L,42767L, +42768L,42769L,42770L,42771L,42772L,42773L,42774L,42775L,42776L,42777L, +42778L,42779L,42780L,42781L,42782L,42783L,42784L,42785L,42786L,42786L, +42788L,42788L,42790L,42790L,42792L,42792L,42794L,42794L,42796L,42796L, +42798L,42798L,42800L,42801L,42802L,42802L,42804L,42804L,42806L,42806L, +42808L,42808L,42810L,42810L,42812L,42812L,42814L,42814L,42816L,42816L, +42818L,42818L,42820L,42820L,42822L,42822L,42824L,42824L,42826L,42826L, +42828L,42828L,42830L,42830L,42832L,42832L,42834L,42834L,42836L,42836L, +42838L,42838L,42840L,42840L,42842L,42842L,42844L,42844L,42846L,42846L, +42848L,42848L,42850L,42850L,42852L,42852L,42854L,42854L,42856L,42856L, +42858L,42858L,42860L,42860L,42862L,42862L,42864L,42865L,42866L,42867L, +42868L,42869L,42870L,42871L,42872L,42873L,42873L,42875L,42875L,42877L, +42878L,42878L,42880L,42880L,42882L,42882L,42884L,42884L,42886L,42886L, +42888L,42889L,42890L,42891L,42891L,42893L,42894L,42895L,42896L,42896L, +42898L,42898L,42948L,42901L,42902L,42902L,42904L,42904L,42906L,42906L, +42908L,42908L,42910L,42910L,42912L,42912L,42914L,42914L,42916L,42916L, +42918L,42918L,42920L,42920L,42922L,42923L,42924L,42925L,42926L,42927L, +42928L,42929L,42930L,42931L,42932L,42932L,42934L,42934L,42936L,42936L, +42938L,42938L,42940L,42940L,42942L,42942L,42944L,42945L,42946L,42946L, +42948L,42949L,42950L,42951L,42952L,42953L,42954L,42955L,42956L,42957L, +42958L,42959L,42960L,42961L,42962L,42963L,42964L,42965L,42966L,42967L, +42968L,42969L,42970L,42971L,42972L,42973L,42974L,42975L,42976L,42977L, +42978L,42979L,42980L,42981L,42982L,42983L,42984L,42985L,42986L,42987L, +42988L,42989L,42990L,42991L,42992L,42993L,42994L,42995L,42996L,42997L, +42998L,42999L,43000L,43001L,43002L,43003L,43004L,43005L,43006L,43007L, +43008L,43009L,43010L,43011L,43012L,43013L,43014L,43015L,43016L,43017L, +43018L,43019L,43020L,43021L,43022L,43023L,43024L,43025L,43026L,43027L, +43028L,43029L,43030L,43031L,43032L,43033L,43034L,43035L,43036L,43037L, +43038L,43039L,43040L,43041L,43042L,43043L,43044L,43045L,43046L,43047L, +43048L,43049L,43050L,43051L,43052L,43053L,43054L,43055L,43056L,43057L, +43058L,43059L,43060L,43061L,43062L,43063L,43064L,43065L,43066L,43067L, +43068L,43069L,43070L,43071L,43072L,43073L,43074L,43075L,43076L,43077L, +43078L,43079L,43080L,43081L,43082L,43083L,43084L,43085L,43086L,43087L, +43088L,43089L,43090L,43091L,43092L,43093L,43094L,43095L,43096L,43097L, +43098L,43099L,43100L,43101L,43102L,43103L,43104L,43105L,43106L,43107L, +43108L,43109L,43110L,43111L,43112L,43113L,43114L,43115L,43116L,43117L, +43118L,43119L,43120L,43121L,43122L,43123L,43124L,43125L,43126L,43127L, +43128L,43129L,43130L,43131L,43132L,43133L,43134L,43135L,43136L,43137L, +43138L,43139L,43140L,43141L,43142L,43143L,43144L,43145L,43146L,43147L, +43148L,43149L,43150L,43151L,43152L,43153L,43154L,43155L,43156L,43157L, +43158L,43159L,43160L,43161L,43162L,43163L,43164L,43165L,43166L,43167L, +43168L,43169L,43170L,43171L,43172L,43173L,43174L,43175L,43176L,43177L, +43178L,43179L,43180L,43181L,43182L,43183L,43184L,43185L,43186L,43187L, +43188L,43189L,43190L,43191L,43192L,43193L,43194L,43195L,43196L,43197L, +43198L,43199L,43200L,43201L,43202L,43203L,43204L,43205L,43206L,43207L, +43208L,43209L,43210L,43211L,43212L,43213L,43214L,43215L,43216L,43217L, +43218L,43219L,43220L,43221L,43222L,43223L,43224L,43225L,43226L,43227L, +43228L,43229L,43230L,43231L,43232L,43233L,43234L,43235L,43236L,43237L, +43238L,43239L,43240L,43241L,43242L,43243L,43244L,43245L,43246L,43247L, +43248L,43249L,43250L,43251L,43252L,43253L,43254L,43255L,43256L,43257L, +43258L,43259L,43260L,43261L,43262L,43263L,43264L,43265L,43266L,43267L, +43268L,43269L,43270L,43271L,43272L,43273L,43274L,43275L,43276L,43277L, +43278L,43279L,43280L,43281L,43282L,43283L,43284L,43285L,43286L,43287L, +43288L,43289L,43290L,43291L,43292L,43293L,43294L,43295L,43296L,43297L, +43298L,43299L,43300L,43301L,43302L,43303L,43304L,43305L,43306L,43307L, +43308L,43309L,43310L,43311L,43312L,43313L,43314L,43315L,43316L,43317L, +43318L,43319L,43320L,43321L,43322L,43323L,43324L,43325L,43326L,43327L, +43328L,43329L,43330L,43331L,43332L,43333L,43334L,43335L,43336L,43337L, +43338L,43339L,43340L,43341L,43342L,43343L,43344L,43345L,43346L,43347L, +43348L,43349L,43350L,43351L,43352L,43353L,43354L,43355L,43356L,43357L, +43358L,43359L,43360L,43361L,43362L,43363L,43364L,43365L,43366L,43367L, +43368L,43369L,43370L,43371L,43372L,43373L,43374L,43375L,43376L,43377L, +43378L,43379L,43380L,43381L,43382L,43383L,43384L,43385L,43386L,43387L, +43388L,43389L,43390L,43391L,43392L,43393L,43394L,43395L,43396L,43397L, +43398L,43399L,43400L,43401L,43402L,43403L,43404L,43405L,43406L,43407L, +43408L,43409L,43410L,43411L,43412L,43413L,43414L,43415L,43416L,43417L, +43418L,43419L,43420L,43421L,43422L,43423L,43424L,43425L,43426L,43427L, +43428L,43429L,43430L,43431L,43432L,43433L,43434L,43435L,43436L,43437L, +43438L,43439L,43440L,43441L,43442L,43443L,43444L,43445L,43446L,43447L, +43448L,43449L,43450L,43451L,43452L,43453L,43454L,43455L,43456L,43457L, +43458L,43459L,43460L,43461L,43462L,43463L,43464L,43465L,43466L,43467L, +43468L,43469L,43470L,43471L,43472L,43473L,43474L,43475L,43476L,43477L, +43478L,43479L,43480L,43481L,43482L,43483L,43484L,43485L,43486L,43487L, +43488L,43489L,43490L,43491L,43492L,43493L,43494L,43495L,43496L,43497L, +43498L,43499L,43500L,43501L,43502L,43503L,43504L,43505L,43506L,43507L, +43508L,43509L,43510L,43511L,43512L,43513L,43514L,43515L,43516L,43517L, +43518L,43519L,43520L,43521L,43522L,43523L,43524L,43525L,43526L,43527L, +43528L,43529L,43530L,43531L,43532L,43533L,43534L,43535L,43536L,43537L, +43538L,43539L,43540L,43541L,43542L,43543L,43544L,43545L,43546L,43547L, +43548L,43549L,43550L,43551L,43552L,43553L,43554L,43555L,43556L,43557L, +43558L,43559L,43560L,43561L,43562L,43563L,43564L,43565L,43566L,43567L, +43568L,43569L,43570L,43571L,43572L,43573L,43574L,43575L,43576L,43577L, +43578L,43579L,43580L,43581L,43582L,43583L,43584L,43585L,43586L,43587L, +43588L,43589L,43590L,43591L,43592L,43593L,43594L,43595L,43596L,43597L, +43598L,43599L,43600L,43601L,43602L,43603L,43604L,43605L,43606L,43607L, +43608L,43609L,43610L,43611L,43612L,43613L,43614L,43615L,43616L,43617L, +43618L,43619L,43620L,43621L,43622L,43623L,43624L,43625L,43626L,43627L, +43628L,43629L,43630L,43631L,43632L,43633L,43634L,43635L,43636L,43637L, +43638L,43639L,43640L,43641L,43642L,43643L,43644L,43645L,43646L,43647L, +43648L,43649L,43650L,43651L,43652L,43653L,43654L,43655L,43656L,43657L, +43658L,43659L,43660L,43661L,43662L,43663L,43664L,43665L,43666L,43667L, +43668L,43669L,43670L,43671L,43672L,43673L,43674L,43675L,43676L,43677L, +43678L,43679L,43680L,43681L,43682L,43683L,43684L,43685L,43686L,43687L, +43688L,43689L,43690L,43691L,43692L,43693L,43694L,43695L,43696L,43697L, +43698L,43699L,43700L,43701L,43702L,43703L,43704L,43705L,43706L,43707L, +43708L,43709L,43710L,43711L,43712L,43713L,43714L,43715L,43716L,43717L, +43718L,43719L,43720L,43721L,43722L,43723L,43724L,43725L,43726L,43727L, +43728L,43729L,43730L,43731L,43732L,43733L,43734L,43735L,43736L,43737L, +43738L,43739L,43740L,43741L,43742L,43743L,43744L,43745L,43746L,43747L, +43748L,43749L,43750L,43751L,43752L,43753L,43754L,43755L,43756L,43757L, +43758L,43759L,43760L,43761L,43762L,43763L,43764L,43765L,43766L,43767L, +43768L,43769L,43770L,43771L,43772L,43773L,43774L,43775L,43776L,43777L, +43778L,43779L,43780L,43781L,43782L,43783L,43784L,43785L,43786L,43787L, +43788L,43789L,43790L,43791L,43792L,43793L,43794L,43795L,43796L,43797L, +43798L,43799L,43800L,43801L,43802L,43803L,43804L,43805L,43806L,43807L, +43808L,43809L,43810L,43811L,43812L,43813L,43814L,43815L,43816L,43817L, +43818L,43819L,43820L,43821L,43822L,43823L,43824L,43825L,43826L,43827L, +43828L,43829L,43830L,43831L,43832L,43833L,43834L,43835L,43836L,43837L, +43838L,43839L,43840L,43841L,43842L,43843L,43844L,43845L,43846L,43847L, +43848L,43849L,43850L,43851L,43852L,43853L,43854L,43855L,43856L,43857L, +43858L,42931L,43860L,43861L,43862L,43863L,43864L,43865L,43866L,43867L, +43868L,43869L,43870L,43871L,43872L,43873L,43874L,43875L,43876L,43877L, +43878L,43879L,43880L,43881L,43882L,43883L,43884L,43885L,43886L,43887L,5024, +5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039, +5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054, +5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069, +5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084, +5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099, +5100,5101,5102,5103,43968L,43969L,43970L,43971L,43972L,43973L,43974L, +43975L,43976L,43977L,43978L,43979L,43980L,43981L,43982L,43983L,43984L, +43985L,43986L,43987L,43988L,43989L,43990L,43991L,43992L,43993L,43994L, +43995L,43996L,43997L,43998L,43999L,44000L,44001L,44002L,44003L,44004L, +44005L,44006L,44007L,44008L,44009L,44010L,44011L,44012L,44013L,44014L, +44015L,44016L,44017L,44018L,44019L,44020L,44021L,44022L,44023L,44024L, +44025L,44026L,44027L,44028L,44029L,44030L,44031L,44032L,44033L,44034L, +44035L,44036L,44037L,44038L,44039L,44040L,44041L,44042L,44043L,44044L, +44045L,44046L,44047L,44048L,44049L,44050L,44051L,44052L,44053L,44054L, +44055L,44056L,44057L,44058L,44059L,44060L,44061L,44062L,44063L,44064L, +44065L,44066L,44067L,44068L,44069L,44070L,44071L,44072L,44073L,44074L, +44075L,44076L,44077L,44078L,44079L,44080L,44081L,44082L,44083L,44084L, +44085L,44086L,44087L,44088L,44089L,44090L,44091L,44092L,44093L,44094L, +44095L,44096L,44097L,44098L,44099L,44100L,44101L,44102L,44103L,44104L, +44105L,44106L,44107L,44108L,44109L,44110L,44111L,44112L,44113L,44114L, +44115L,44116L,44117L,44118L,44119L,44120L,44121L,44122L,44123L,44124L, +44125L,44126L,44127L,44128L,44129L,44130L,44131L,44132L,44133L,44134L, +44135L,44136L,44137L,44138L,44139L,44140L,44141L,44142L,44143L,44144L, +44145L,44146L,44147L,44148L,44149L,44150L,44151L,44152L,44153L,44154L, +44155L,44156L,44157L,44158L,44159L,44160L,44161L,44162L,44163L,44164L, +44165L,44166L,44167L,44168L,44169L,44170L,44171L,44172L,44173L,44174L, +44175L,44176L,44177L,44178L,44179L,44180L,44181L,44182L,44183L,44184L, +44185L,44186L,44187L,44188L,44189L,44190L,44191L,44192L,44193L,44194L, +44195L,44196L,44197L,44198L,44199L,44200L,44201L,44202L,44203L,44204L, +44205L,44206L,44207L,44208L,44209L,44210L,44211L,44212L,44213L,44214L, +44215L,44216L,44217L,44218L,44219L,44220L,44221L,44222L,44223L,44224L, +44225L,44226L,44227L,44228L,44229L,44230L,44231L,44232L,44233L,44234L, +44235L,44236L,44237L,44238L,44239L,44240L,44241L,44242L,44243L,44244L, +44245L,44246L,44247L,44248L,44249L,44250L,44251L,44252L,44253L,44254L, +44255L,44256L,44257L,44258L,44259L,44260L,44261L,44262L,44263L,44264L, +44265L,44266L,44267L,44268L,44269L,44270L,44271L,44272L,44273L,44274L, +44275L,44276L,44277L,44278L,44279L,44280L,44281L,44282L,44283L,44284L, +44285L,44286L,44287L,44288L,44289L,44290L,44291L,44292L,44293L,44294L, +44295L,44296L,44297L,44298L,44299L,44300L,44301L,44302L,44303L,44304L, +44305L,44306L,44307L,44308L,44309L,44310L,44311L,44312L,44313L,44314L, +44315L,44316L,44317L,44318L,44319L,44320L,44321L,44322L,44323L,44324L, +44325L,44326L,44327L,44328L,44329L,44330L,44331L,44332L,44333L,44334L, +44335L,44336L,44337L,44338L,44339L,44340L,44341L,44342L,44343L,44344L, +44345L,44346L,44347L,44348L,44349L,44350L,44351L,44352L,44353L,44354L, +44355L,44356L,44357L,44358L,44359L,44360L,44361L,44362L,44363L,44364L, +44365L,44366L,44367L,44368L,44369L,44370L,44371L,44372L,44373L,44374L, +44375L,44376L,44377L,44378L,44379L,44380L,44381L,44382L,44383L,44384L, +44385L,44386L,44387L,44388L,44389L,44390L,44391L,44392L,44393L,44394L, +44395L,44396L,44397L,44398L,44399L,44400L,44401L,44402L,44403L,44404L, +44405L,44406L,44407L,44408L,44409L,44410L,44411L,44412L,44413L,44414L, +44415L,44416L,44417L,44418L,44419L,44420L,44421L,44422L,44423L,44424L, +44425L,44426L,44427L,44428L,44429L,44430L,44431L,44432L,44433L,44434L, +44435L,44436L,44437L,44438L,44439L,44440L,44441L,44442L,44443L,44444L, +44445L,44446L,44447L,44448L,44449L,44450L,44451L,44452L,44453L,44454L, +44455L,44456L,44457L,44458L,44459L,44460L,44461L,44462L,44463L,44464L, +44465L,44466L,44467L,44468L,44469L,44470L,44471L,44472L,44473L,44474L, +44475L,44476L,44477L,44478L,44479L,44480L,44481L,44482L,44483L,44484L, +44485L,44486L,44487L,44488L,44489L,44490L,44491L,44492L,44493L,44494L, +44495L,44496L,44497L,44498L,44499L,44500L,44501L,44502L,44503L,44504L, +44505L,44506L,44507L,44508L,44509L,44510L,44511L,44512L,44513L,44514L, +44515L,44516L,44517L,44518L,44519L,44520L,44521L,44522L,44523L,44524L, +44525L,44526L,44527L,44528L,44529L,44530L,44531L,44532L,44533L,44534L, +44535L,44536L,44537L,44538L,44539L,44540L,44541L,44542L,44543L,44544L, +44545L,44546L,44547L,44548L,44549L,44550L,44551L,44552L,44553L,44554L, +44555L,44556L,44557L,44558L,44559L,44560L,44561L,44562L,44563L,44564L, +44565L,44566L,44567L,44568L,44569L,44570L,44571L,44572L,44573L,44574L, +44575L,44576L,44577L,44578L,44579L,44580L,44581L,44582L,44583L,44584L, +44585L,44586L,44587L,44588L,44589L,44590L,44591L,44592L,44593L,44594L, +44595L,44596L,44597L,44598L,44599L,44600L,44601L,44602L,44603L,44604L, +44605L,44606L,44607L,44608L,44609L,44610L,44611L,44612L,44613L,44614L, +44615L,44616L,44617L,44618L,44619L,44620L,44621L,44622L,44623L,44624L, +44625L,44626L,44627L,44628L,44629L,44630L,44631L,44632L,44633L,44634L, +44635L,44636L,44637L,44638L,44639L,44640L,44641L,44642L,44643L,44644L, +44645L,44646L,44647L,44648L,44649L,44650L,44651L,44652L,44653L,44654L, +44655L,44656L,44657L,44658L,44659L,44660L,44661L,44662L,44663L,44664L, +44665L,44666L,44667L,44668L,44669L,44670L,44671L,44672L,44673L,44674L, +44675L,44676L,44677L,44678L,44679L,44680L,44681L,44682L,44683L,44684L, +44685L,44686L,44687L,44688L,44689L,44690L,44691L,44692L,44693L,44694L, +44695L,44696L,44697L,44698L,44699L,44700L,44701L,44702L,44703L,44704L, +44705L,44706L,44707L,44708L,44709L,44710L,44711L,44712L,44713L,44714L, +44715L,44716L,44717L,44718L,44719L,44720L,44721L,44722L,44723L,44724L, +44725L,44726L,44727L,44728L,44729L,44730L,44731L,44732L,44733L,44734L, +44735L,44736L,44737L,44738L,44739L,44740L,44741L,44742L,44743L,44744L, +44745L,44746L,44747L,44748L,44749L,44750L,44751L,44752L,44753L,44754L, +44755L,44756L,44757L,44758L,44759L,44760L,44761L,44762L,44763L,44764L, +44765L,44766L,44767L,44768L,44769L,44770L,44771L,44772L,44773L,44774L, +44775L,44776L,44777L,44778L,44779L,44780L,44781L,44782L,44783L,44784L, +44785L,44786L,44787L,44788L,44789L,44790L,44791L,44792L,44793L,44794L, +44795L,44796L,44797L,44798L,44799L,44800L,44801L,44802L,44803L,44804L, +44805L,44806L,44807L,44808L,44809L,44810L,44811L,44812L,44813L,44814L, +44815L,44816L,44817L,44818L,44819L,44820L,44821L,44822L,44823L,44824L, +44825L,44826L,44827L,44828L,44829L,44830L,44831L,44832L,44833L,44834L, +44835L,44836L,44837L,44838L,44839L,44840L,44841L,44842L,44843L,44844L, +44845L,44846L,44847L,44848L,44849L,44850L,44851L,44852L,44853L,44854L, +44855L,44856L,44857L,44858L,44859L,44860L,44861L,44862L,44863L,44864L, +44865L,44866L,44867L,44868L,44869L,44870L,44871L,44872L,44873L,44874L, +44875L,44876L,44877L,44878L,44879L,44880L,44881L,44882L,44883L,44884L, +44885L,44886L,44887L,44888L,44889L,44890L,44891L,44892L,44893L,44894L, +44895L,44896L,44897L,44898L,44899L,44900L,44901L,44902L,44903L,44904L, +44905L,44906L,44907L,44908L,44909L,44910L,44911L,44912L,44913L,44914L, +44915L,44916L,44917L,44918L,44919L,44920L,44921L,44922L,44923L,44924L, +44925L,44926L,44927L,44928L,44929L,44930L,44931L,44932L,44933L,44934L, +44935L,44936L,44937L,44938L,44939L,44940L,44941L,44942L,44943L,44944L, +44945L,44946L,44947L,44948L,44949L,44950L,44951L,44952L,44953L,44954L, +44955L,44956L,44957L,44958L,44959L,44960L,44961L,44962L,44963L,44964L, +44965L,44966L,44967L,44968L,44969L,44970L,44971L,44972L,44973L,44974L, +44975L,44976L,44977L,44978L,44979L,44980L,44981L,44982L,44983L,44984L, +44985L,44986L,44987L,44988L,44989L,44990L,44991L,44992L,44993L,44994L, +44995L,44996L,44997L,44998L,44999L,45000L,45001L,45002L,45003L,45004L, +45005L,45006L,45007L,45008L,45009L,45010L,45011L,45012L,45013L,45014L, +45015L,45016L,45017L,45018L,45019L,45020L,45021L,45022L,45023L,45024L, +45025L,45026L,45027L,45028L,45029L,45030L,45031L,45032L,45033L,45034L, +45035L,45036L,45037L,45038L,45039L,45040L,45041L,45042L,45043L,45044L, +45045L,45046L,45047L,45048L,45049L,45050L,45051L,45052L,45053L,45054L, +45055L,45056L,45057L,45058L,45059L,45060L,45061L,45062L,45063L,45064L, +45065L,45066L,45067L,45068L,45069L,45070L,45071L,45072L,45073L,45074L, +45075L,45076L,45077L,45078L,45079L,45080L,45081L,45082L,45083L,45084L, +45085L,45086L,45087L,45088L,45089L,45090L,45091L,45092L,45093L,45094L, +45095L,45096L,45097L,45098L,45099L,45100L,45101L,45102L,45103L,45104L, +45105L,45106L,45107L,45108L,45109L,45110L,45111L,45112L,45113L,45114L, +45115L,45116L,45117L,45118L,45119L,45120L,45121L,45122L,45123L,45124L, +45125L,45126L,45127L,45128L,45129L,45130L,45131L,45132L,45133L,45134L, +45135L,45136L,45137L,45138L,45139L,45140L,45141L,45142L,45143L,45144L, +45145L,45146L,45147L,45148L,45149L,45150L,45151L,45152L,45153L,45154L, +45155L,45156L,45157L,45158L,45159L,45160L,45161L,45162L,45163L,45164L, +45165L,45166L,45167L,45168L,45169L,45170L,45171L,45172L,45173L,45174L, +45175L,45176L,45177L,45178L,45179L,45180L,45181L,45182L,45183L,45184L, +45185L,45186L,45187L,45188L,45189L,45190L,45191L,45192L,45193L,45194L, +45195L,45196L,45197L,45198L,45199L,45200L,45201L,45202L,45203L,45204L, +45205L,45206L,45207L,45208L,45209L,45210L,45211L,45212L,45213L,45214L, +45215L,45216L,45217L,45218L,45219L,45220L,45221L,45222L,45223L,45224L, +45225L,45226L,45227L,45228L,45229L,45230L,45231L,45232L,45233L,45234L, +45235L,45236L,45237L,45238L,45239L,45240L,45241L,45242L,45243L,45244L, +45245L,45246L,45247L,45248L,45249L,45250L,45251L,45252L,45253L,45254L, +45255L,45256L,45257L,45258L,45259L,45260L,45261L,45262L,45263L,45264L, +45265L,45266L,45267L,45268L,45269L,45270L,45271L,45272L,45273L,45274L, +45275L,45276L,45277L,45278L,45279L,45280L,45281L,45282L,45283L,45284L, +45285L,45286L,45287L,45288L,45289L,45290L,45291L,45292L,45293L,45294L, +45295L,45296L,45297L,45298L,45299L,45300L,45301L,45302L,45303L,45304L, +45305L,45306L,45307L,45308L,45309L,45310L,45311L,45312L,45313L,45314L, +45315L,45316L,45317L,45318L,45319L,45320L,45321L,45322L,45323L,45324L, +45325L,45326L,45327L,45328L,45329L,45330L,45331L,45332L,45333L,45334L, +45335L,45336L,45337L,45338L,45339L,45340L,45341L,45342L,45343L,45344L, +45345L,45346L,45347L,45348L,45349L,45350L,45351L,45352L,45353L,45354L, +45355L,45356L,45357L,45358L,45359L,45360L,45361L,45362L,45363L,45364L, +45365L,45366L,45367L,45368L,45369L,45370L,45371L,45372L,45373L,45374L, +45375L,45376L,45377L,45378L,45379L,45380L,45381L,45382L,45383L,45384L, +45385L,45386L,45387L,45388L,45389L,45390L,45391L,45392L,45393L,45394L, +45395L,45396L,45397L,45398L,45399L,45400L,45401L,45402L,45403L,45404L, +45405L,45406L,45407L,45408L,45409L,45410L,45411L,45412L,45413L,45414L, +45415L,45416L,45417L,45418L,45419L,45420L,45421L,45422L,45423L,45424L, +45425L,45426L,45427L,45428L,45429L,45430L,45431L,45432L,45433L,45434L, +45435L,45436L,45437L,45438L,45439L,45440L,45441L,45442L,45443L,45444L, +45445L,45446L,45447L,45448L,45449L,45450L,45451L,45452L,45453L,45454L, +45455L,45456L,45457L,45458L,45459L,45460L,45461L,45462L,45463L,45464L, +45465L,45466L,45467L,45468L,45469L,45470L,45471L,45472L,45473L,45474L, +45475L,45476L,45477L,45478L,45479L,45480L,45481L,45482L,45483L,45484L, +45485L,45486L,45487L,45488L,45489L,45490L,45491L,45492L,45493L,45494L, +45495L,45496L,45497L,45498L,45499L,45500L,45501L,45502L,45503L,45504L, +45505L,45506L,45507L,45508L,45509L,45510L,45511L,45512L,45513L,45514L, +45515L,45516L,45517L,45518L,45519L,45520L,45521L,45522L,45523L,45524L, +45525L,45526L,45527L,45528L,45529L,45530L,45531L,45532L,45533L,45534L, +45535L,45536L,45537L,45538L,45539L,45540L,45541L,45542L,45543L,45544L, +45545L,45546L,45547L,45548L,45549L,45550L,45551L,45552L,45553L,45554L, +45555L,45556L,45557L,45558L,45559L,45560L,45561L,45562L,45563L,45564L, +45565L,45566L,45567L,45568L,45569L,45570L,45571L,45572L,45573L,45574L, +45575L,45576L,45577L,45578L,45579L,45580L,45581L,45582L,45583L,45584L, +45585L,45586L,45587L,45588L,45589L,45590L,45591L,45592L,45593L,45594L, +45595L,45596L,45597L,45598L,45599L,45600L,45601L,45602L,45603L,45604L, +45605L,45606L,45607L,45608L,45609L,45610L,45611L,45612L,45613L,45614L, +45615L,45616L,45617L,45618L,45619L,45620L,45621L,45622L,45623L,45624L, +45625L,45626L,45627L,45628L,45629L,45630L,45631L,45632L,45633L,45634L, +45635L,45636L,45637L,45638L,45639L,45640L,45641L,45642L,45643L,45644L, +45645L,45646L,45647L,45648L,45649L,45650L,45651L,45652L,45653L,45654L, +45655L,45656L,45657L,45658L,45659L,45660L,45661L,45662L,45663L,45664L, +45665L,45666L,45667L,45668L,45669L,45670L,45671L,45672L,45673L,45674L, +45675L,45676L,45677L,45678L,45679L,45680L,45681L,45682L,45683L,45684L, +45685L,45686L,45687L,45688L,45689L,45690L,45691L,45692L,45693L,45694L, +45695L,45696L,45697L,45698L,45699L,45700L,45701L,45702L,45703L,45704L, +45705L,45706L,45707L,45708L,45709L,45710L,45711L,45712L,45713L,45714L, +45715L,45716L,45717L,45718L,45719L,45720L,45721L,45722L,45723L,45724L, +45725L,45726L,45727L,45728L,45729L,45730L,45731L,45732L,45733L,45734L, +45735L,45736L,45737L,45738L,45739L,45740L,45741L,45742L,45743L,45744L, +45745L,45746L,45747L,45748L,45749L,45750L,45751L,45752L,45753L,45754L, +45755L,45756L,45757L,45758L,45759L,45760L,45761L,45762L,45763L,45764L, +45765L,45766L,45767L,45768L,45769L,45770L,45771L,45772L,45773L,45774L, +45775L,45776L,45777L,45778L,45779L,45780L,45781L,45782L,45783L,45784L, +45785L,45786L,45787L,45788L,45789L,45790L,45791L,45792L,45793L,45794L, +45795L,45796L,45797L,45798L,45799L,45800L,45801L,45802L,45803L,45804L, +45805L,45806L,45807L,45808L,45809L,45810L,45811L,45812L,45813L,45814L, +45815L,45816L,45817L,45818L,45819L,45820L,45821L,45822L,45823L,45824L, +45825L,45826L,45827L,45828L,45829L,45830L,45831L,45832L,45833L,45834L, +45835L,45836L,45837L,45838L,45839L,45840L,45841L,45842L,45843L,45844L, +45845L,45846L,45847L,45848L,45849L,45850L,45851L,45852L,45853L,45854L, +45855L,45856L,45857L,45858L,45859L,45860L,45861L,45862L,45863L,45864L, +45865L,45866L,45867L,45868L,45869L,45870L,45871L,45872L,45873L,45874L, +45875L,45876L,45877L,45878L,45879L,45880L,45881L,45882L,45883L,45884L, +45885L,45886L,45887L,45888L,45889L,45890L,45891L,45892L,45893L,45894L, +45895L,45896L,45897L,45898L,45899L,45900L,45901L,45902L,45903L,45904L, +45905L,45906L,45907L,45908L,45909L,45910L,45911L,45912L,45913L,45914L, +45915L,45916L,45917L,45918L,45919L,45920L,45921L,45922L,45923L,45924L, +45925L,45926L,45927L,45928L,45929L,45930L,45931L,45932L,45933L,45934L, +45935L,45936L,45937L,45938L,45939L,45940L,45941L,45942L,45943L,45944L, +45945L,45946L,45947L,45948L,45949L,45950L,45951L,45952L,45953L,45954L, +45955L,45956L,45957L,45958L,45959L,45960L,45961L,45962L,45963L,45964L, +45965L,45966L,45967L,45968L,45969L,45970L,45971L,45972L,45973L,45974L, +45975L,45976L,45977L,45978L,45979L,45980L,45981L,45982L,45983L,45984L, +45985L,45986L,45987L,45988L,45989L,45990L,45991L,45992L,45993L,45994L, +45995L,45996L,45997L,45998L,45999L,46000L,46001L,46002L,46003L,46004L, +46005L,46006L,46007L,46008L,46009L,46010L,46011L,46012L,46013L,46014L, +46015L,46016L,46017L,46018L,46019L,46020L,46021L,46022L,46023L,46024L, +46025L,46026L,46027L,46028L,46029L,46030L,46031L,46032L,46033L,46034L, +46035L,46036L,46037L,46038L,46039L,46040L,46041L,46042L,46043L,46044L, +46045L,46046L,46047L,46048L,46049L,46050L,46051L,46052L,46053L,46054L, +46055L,46056L,46057L,46058L,46059L,46060L,46061L,46062L,46063L,46064L, +46065L,46066L,46067L,46068L,46069L,46070L,46071L,46072L,46073L,46074L, +46075L,46076L,46077L,46078L,46079L,46080L,46081L,46082L,46083L,46084L, +46085L,46086L,46087L,46088L,46089L,46090L,46091L,46092L,46093L,46094L, +46095L,46096L,46097L,46098L,46099L,46100L,46101L,46102L,46103L,46104L, +46105L,46106L,46107L,46108L,46109L,46110L,46111L,46112L,46113L,46114L, +46115L,46116L,46117L,46118L,46119L,46120L,46121L,46122L,46123L,46124L, +46125L,46126L,46127L,46128L,46129L,46130L,46131L,46132L,46133L,46134L, +46135L,46136L,46137L,46138L,46139L,46140L,46141L,46142L,46143L,46144L, +46145L,46146L,46147L,46148L,46149L,46150L,46151L,46152L,46153L,46154L, +46155L,46156L,46157L,46158L,46159L,46160L,46161L,46162L,46163L,46164L, +46165L,46166L,46167L,46168L,46169L,46170L,46171L,46172L,46173L,46174L, +46175L,46176L,46177L,46178L,46179L,46180L,46181L,46182L,46183L,46184L, +46185L,46186L,46187L,46188L,46189L,46190L,46191L,46192L,46193L,46194L, +46195L,46196L,46197L,46198L,46199L,46200L,46201L,46202L,46203L,46204L, +46205L,46206L,46207L,46208L,46209L,46210L,46211L,46212L,46213L,46214L, +46215L,46216L,46217L,46218L,46219L,46220L,46221L,46222L,46223L,46224L, +46225L,46226L,46227L,46228L,46229L,46230L,46231L,46232L,46233L,46234L, +46235L,46236L,46237L,46238L,46239L,46240L,46241L,46242L,46243L,46244L, +46245L,46246L,46247L,46248L,46249L,46250L,46251L,46252L,46253L,46254L, +46255L,46256L,46257L,46258L,46259L,46260L,46261L,46262L,46263L,46264L, +46265L,46266L,46267L,46268L,46269L,46270L,46271L,46272L,46273L,46274L, +46275L,46276L,46277L,46278L,46279L,46280L,46281L,46282L,46283L,46284L, +46285L,46286L,46287L,46288L,46289L,46290L,46291L,46292L,46293L,46294L, +46295L,46296L,46297L,46298L,46299L,46300L,46301L,46302L,46303L,46304L, +46305L,46306L,46307L,46308L,46309L,46310L,46311L,46312L,46313L,46314L, +46315L,46316L,46317L,46318L,46319L,46320L,46321L,46322L,46323L,46324L, +46325L,46326L,46327L,46328L,46329L,46330L,46331L,46332L,46333L,46334L, +46335L,46336L,46337L,46338L,46339L,46340L,46341L,46342L,46343L,46344L, +46345L,46346L,46347L,46348L,46349L,46350L,46351L,46352L,46353L,46354L, +46355L,46356L,46357L,46358L,46359L,46360L,46361L,46362L,46363L,46364L, +46365L,46366L,46367L,46368L,46369L,46370L,46371L,46372L,46373L,46374L, +46375L,46376L,46377L,46378L,46379L,46380L,46381L,46382L,46383L,46384L, +46385L,46386L,46387L,46388L,46389L,46390L,46391L,46392L,46393L,46394L, +46395L,46396L,46397L,46398L,46399L,46400L,46401L,46402L,46403L,46404L, +46405L,46406L,46407L,46408L,46409L,46410L,46411L,46412L,46413L,46414L, +46415L,46416L,46417L,46418L,46419L,46420L,46421L,46422L,46423L,46424L, +46425L,46426L,46427L,46428L,46429L,46430L,46431L,46432L,46433L,46434L, +46435L,46436L,46437L,46438L,46439L,46440L,46441L,46442L,46443L,46444L, +46445L,46446L,46447L,46448L,46449L,46450L,46451L,46452L,46453L,46454L, +46455L,46456L,46457L,46458L,46459L,46460L,46461L,46462L,46463L,46464L, +46465L,46466L,46467L,46468L,46469L,46470L,46471L,46472L,46473L,46474L, +46475L,46476L,46477L,46478L,46479L,46480L,46481L,46482L,46483L,46484L, +46485L,46486L,46487L,46488L,46489L,46490L,46491L,46492L,46493L,46494L, +46495L,46496L,46497L,46498L,46499L,46500L,46501L,46502L,46503L,46504L, +46505L,46506L,46507L,46508L,46509L,46510L,46511L,46512L,46513L,46514L, +46515L,46516L,46517L,46518L,46519L,46520L,46521L,46522L,46523L,46524L, +46525L,46526L,46527L,46528L,46529L,46530L,46531L,46532L,46533L,46534L, +46535L,46536L,46537L,46538L,46539L,46540L,46541L,46542L,46543L,46544L, +46545L,46546L,46547L,46548L,46549L,46550L,46551L,46552L,46553L,46554L, +46555L,46556L,46557L,46558L,46559L,46560L,46561L,46562L,46563L,46564L, +46565L,46566L,46567L,46568L,46569L,46570L,46571L,46572L,46573L,46574L, +46575L,46576L,46577L,46578L,46579L,46580L,46581L,46582L,46583L,46584L, +46585L,46586L,46587L,46588L,46589L,46590L,46591L,46592L,46593L,46594L, +46595L,46596L,46597L,46598L,46599L,46600L,46601L,46602L,46603L,46604L, +46605L,46606L,46607L,46608L,46609L,46610L,46611L,46612L,46613L,46614L, +46615L,46616L,46617L,46618L,46619L,46620L,46621L,46622L,46623L,46624L, +46625L,46626L,46627L,46628L,46629L,46630L,46631L,46632L,46633L,46634L, +46635L,46636L,46637L,46638L,46639L,46640L,46641L,46642L,46643L,46644L, +46645L,46646L,46647L,46648L,46649L,46650L,46651L,46652L,46653L,46654L, +46655L,46656L,46657L,46658L,46659L,46660L,46661L,46662L,46663L,46664L, +46665L,46666L,46667L,46668L,46669L,46670L,46671L,46672L,46673L,46674L, +46675L,46676L,46677L,46678L,46679L,46680L,46681L,46682L,46683L,46684L, +46685L,46686L,46687L,46688L,46689L,46690L,46691L,46692L,46693L,46694L, +46695L,46696L,46697L,46698L,46699L,46700L,46701L,46702L,46703L,46704L, +46705L,46706L,46707L,46708L,46709L,46710L,46711L,46712L,46713L,46714L, +46715L,46716L,46717L,46718L,46719L,46720L,46721L,46722L,46723L,46724L, +46725L,46726L,46727L,46728L,46729L,46730L,46731L,46732L,46733L,46734L, +46735L,46736L,46737L,46738L,46739L,46740L,46741L,46742L,46743L,46744L, +46745L,46746L,46747L,46748L,46749L,46750L,46751L,46752L,46753L,46754L, +46755L,46756L,46757L,46758L,46759L,46760L,46761L,46762L,46763L,46764L, +46765L,46766L,46767L,46768L,46769L,46770L,46771L,46772L,46773L,46774L, +46775L,46776L,46777L,46778L,46779L,46780L,46781L,46782L,46783L,46784L, +46785L,46786L,46787L,46788L,46789L,46790L,46791L,46792L,46793L,46794L, +46795L,46796L,46797L,46798L,46799L,46800L,46801L,46802L,46803L,46804L, +46805L,46806L,46807L,46808L,46809L,46810L,46811L,46812L,46813L,46814L, +46815L,46816L,46817L,46818L,46819L,46820L,46821L,46822L,46823L,46824L, +46825L,46826L,46827L,46828L,46829L,46830L,46831L,46832L,46833L,46834L, +46835L,46836L,46837L,46838L,46839L,46840L,46841L,46842L,46843L,46844L, +46845L,46846L,46847L,46848L,46849L,46850L,46851L,46852L,46853L,46854L, +46855L,46856L,46857L,46858L,46859L,46860L,46861L,46862L,46863L,46864L, +46865L,46866L,46867L,46868L,46869L,46870L,46871L,46872L,46873L,46874L, +46875L,46876L,46877L,46878L,46879L,46880L,46881L,46882L,46883L,46884L, +46885L,46886L,46887L,46888L,46889L,46890L,46891L,46892L,46893L,46894L, +46895L,46896L,46897L,46898L,46899L,46900L,46901L,46902L,46903L,46904L, +46905L,46906L,46907L,46908L,46909L,46910L,46911L,46912L,46913L,46914L, +46915L,46916L,46917L,46918L,46919L,46920L,46921L,46922L,46923L,46924L, +46925L,46926L,46927L,46928L,46929L,46930L,46931L,46932L,46933L,46934L, +46935L,46936L,46937L,46938L,46939L,46940L,46941L,46942L,46943L,46944L, +46945L,46946L,46947L,46948L,46949L,46950L,46951L,46952L,46953L,46954L, +46955L,46956L,46957L,46958L,46959L,46960L,46961L,46962L,46963L,46964L, +46965L,46966L,46967L,46968L,46969L,46970L,46971L,46972L,46973L,46974L, +46975L,46976L,46977L,46978L,46979L,46980L,46981L,46982L,46983L,46984L, +46985L,46986L,46987L,46988L,46989L,46990L,46991L,46992L,46993L,46994L, +46995L,46996L,46997L,46998L,46999L,47000L,47001L,47002L,47003L,47004L, +47005L,47006L,47007L,47008L,47009L,47010L,47011L,47012L,47013L,47014L, +47015L,47016L,47017L,47018L,47019L,47020L,47021L,47022L,47023L,47024L, +47025L,47026L,47027L,47028L,47029L,47030L,47031L,47032L,47033L,47034L, +47035L,47036L,47037L,47038L,47039L,47040L,47041L,47042L,47043L,47044L, +47045L,47046L,47047L,47048L,47049L,47050L,47051L,47052L,47053L,47054L, +47055L,47056L,47057L,47058L,47059L,47060L,47061L,47062L,47063L,47064L, +47065L,47066L,47067L,47068L,47069L,47070L,47071L,47072L,47073L,47074L, +47075L,47076L,47077L,47078L,47079L,47080L,47081L,47082L,47083L,47084L, +47085L,47086L,47087L,47088L,47089L,47090L,47091L,47092L,47093L,47094L, +47095L,47096L,47097L,47098L,47099L,47100L,47101L,47102L,47103L,47104L, +47105L,47106L,47107L,47108L,47109L,47110L,47111L,47112L,47113L,47114L, +47115L,47116L,47117L,47118L,47119L,47120L,47121L,47122L,47123L,47124L, +47125L,47126L,47127L,47128L,47129L,47130L,47131L,47132L,47133L,47134L, +47135L,47136L,47137L,47138L,47139L,47140L,47141L,47142L,47143L,47144L, +47145L,47146L,47147L,47148L,47149L,47150L,47151L,47152L,47153L,47154L, +47155L,47156L,47157L,47158L,47159L,47160L,47161L,47162L,47163L,47164L, +47165L,47166L,47167L,47168L,47169L,47170L,47171L,47172L,47173L,47174L, +47175L,47176L,47177L,47178L,47179L,47180L,47181L,47182L,47183L,47184L, +47185L,47186L,47187L,47188L,47189L,47190L,47191L,47192L,47193L,47194L, +47195L,47196L,47197L,47198L,47199L,47200L,47201L,47202L,47203L,47204L, +47205L,47206L,47207L,47208L,47209L,47210L,47211L,47212L,47213L,47214L, +47215L,47216L,47217L,47218L,47219L,47220L,47221L,47222L,47223L,47224L, +47225L,47226L,47227L,47228L,47229L,47230L,47231L,47232L,47233L,47234L, +47235L,47236L,47237L,47238L,47239L,47240L,47241L,47242L,47243L,47244L, +47245L,47246L,47247L,47248L,47249L,47250L,47251L,47252L,47253L,47254L, +47255L,47256L,47257L,47258L,47259L,47260L,47261L,47262L,47263L,47264L, +47265L,47266L,47267L,47268L,47269L,47270L,47271L,47272L,47273L,47274L, +47275L,47276L,47277L,47278L,47279L,47280L,47281L,47282L,47283L,47284L, +47285L,47286L,47287L,47288L,47289L,47290L,47291L,47292L,47293L,47294L, +47295L,47296L,47297L,47298L,47299L,47300L,47301L,47302L,47303L,47304L, +47305L,47306L,47307L,47308L,47309L,47310L,47311L,47312L,47313L,47314L, +47315L,47316L,47317L,47318L,47319L,47320L,47321L,47322L,47323L,47324L, +47325L,47326L,47327L,47328L,47329L,47330L,47331L,47332L,47333L,47334L, +47335L,47336L,47337L,47338L,47339L,47340L,47341L,47342L,47343L,47344L, +47345L,47346L,47347L,47348L,47349L,47350L,47351L,47352L,47353L,47354L, +47355L,47356L,47357L,47358L,47359L,47360L,47361L,47362L,47363L,47364L, +47365L,47366L,47367L,47368L,47369L,47370L,47371L,47372L,47373L,47374L, +47375L,47376L,47377L,47378L,47379L,47380L,47381L,47382L,47383L,47384L, +47385L,47386L,47387L,47388L,47389L,47390L,47391L,47392L,47393L,47394L, +47395L,47396L,47397L,47398L,47399L,47400L,47401L,47402L,47403L,47404L, +47405L,47406L,47407L,47408L,47409L,47410L,47411L,47412L,47413L,47414L, +47415L,47416L,47417L,47418L,47419L,47420L,47421L,47422L,47423L,47424L, +47425L,47426L,47427L,47428L,47429L,47430L,47431L,47432L,47433L,47434L, +47435L,47436L,47437L,47438L,47439L,47440L,47441L,47442L,47443L,47444L, +47445L,47446L,47447L,47448L,47449L,47450L,47451L,47452L,47453L,47454L, +47455L,47456L,47457L,47458L,47459L,47460L,47461L,47462L,47463L,47464L, +47465L,47466L,47467L,47468L,47469L,47470L,47471L,47472L,47473L,47474L, +47475L,47476L,47477L,47478L,47479L,47480L,47481L,47482L,47483L,47484L, +47485L,47486L,47487L,47488L,47489L,47490L,47491L,47492L,47493L,47494L, +47495L,47496L,47497L,47498L,47499L,47500L,47501L,47502L,47503L,47504L, +47505L,47506L,47507L,47508L,47509L,47510L,47511L,47512L,47513L,47514L, +47515L,47516L,47517L,47518L,47519L,47520L,47521L,47522L,47523L,47524L, +47525L,47526L,47527L,47528L,47529L,47530L,47531L,47532L,47533L,47534L, +47535L,47536L,47537L,47538L,47539L,47540L,47541L,47542L,47543L,47544L, +47545L,47546L,47547L,47548L,47549L,47550L,47551L,47552L,47553L,47554L, +47555L,47556L,47557L,47558L,47559L,47560L,47561L,47562L,47563L,47564L, +47565L,47566L,47567L,47568L,47569L,47570L,47571L,47572L,47573L,47574L, +47575L,47576L,47577L,47578L,47579L,47580L,47581L,47582L,47583L,47584L, +47585L,47586L,47587L,47588L,47589L,47590L,47591L,47592L,47593L,47594L, +47595L,47596L,47597L,47598L,47599L,47600L,47601L,47602L,47603L,47604L, +47605L,47606L,47607L,47608L,47609L,47610L,47611L,47612L,47613L,47614L, +47615L,47616L,47617L,47618L,47619L,47620L,47621L,47622L,47623L,47624L, +47625L,47626L,47627L,47628L,47629L,47630L,47631L,47632L,47633L,47634L, +47635L,47636L,47637L,47638L,47639L,47640L,47641L,47642L,47643L,47644L, +47645L,47646L,47647L,47648L,47649L,47650L,47651L,47652L,47653L,47654L, +47655L,47656L,47657L,47658L,47659L,47660L,47661L,47662L,47663L,47664L, +47665L,47666L,47667L,47668L,47669L,47670L,47671L,47672L,47673L,47674L, +47675L,47676L,47677L,47678L,47679L,47680L,47681L,47682L,47683L,47684L, +47685L,47686L,47687L,47688L,47689L,47690L,47691L,47692L,47693L,47694L, +47695L,47696L,47697L,47698L,47699L,47700L,47701L,47702L,47703L,47704L, +47705L,47706L,47707L,47708L,47709L,47710L,47711L,47712L,47713L,47714L, +47715L,47716L,47717L,47718L,47719L,47720L,47721L,47722L,47723L,47724L, +47725L,47726L,47727L,47728L,47729L,47730L,47731L,47732L,47733L,47734L, +47735L,47736L,47737L,47738L,47739L,47740L,47741L,47742L,47743L,47744L, +47745L,47746L,47747L,47748L,47749L,47750L,47751L,47752L,47753L,47754L, +47755L,47756L,47757L,47758L,47759L,47760L,47761L,47762L,47763L,47764L, +47765L,47766L,47767L,47768L,47769L,47770L,47771L,47772L,47773L,47774L, +47775L,47776L,47777L,47778L,47779L,47780L,47781L,47782L,47783L,47784L, +47785L,47786L,47787L,47788L,47789L,47790L,47791L,47792L,47793L,47794L, +47795L,47796L,47797L,47798L,47799L,47800L,47801L,47802L,47803L,47804L, +47805L,47806L,47807L,47808L,47809L,47810L,47811L,47812L,47813L,47814L, +47815L,47816L,47817L,47818L,47819L,47820L,47821L,47822L,47823L,47824L, +47825L,47826L,47827L,47828L,47829L,47830L,47831L,47832L,47833L,47834L, +47835L,47836L,47837L,47838L,47839L,47840L,47841L,47842L,47843L,47844L, +47845L,47846L,47847L,47848L,47849L,47850L,47851L,47852L,47853L,47854L, +47855L,47856L,47857L,47858L,47859L,47860L,47861L,47862L,47863L,47864L, +47865L,47866L,47867L,47868L,47869L,47870L,47871L,47872L,47873L,47874L, +47875L,47876L,47877L,47878L,47879L,47880L,47881L,47882L,47883L,47884L, +47885L,47886L,47887L,47888L,47889L,47890L,47891L,47892L,47893L,47894L, +47895L,47896L,47897L,47898L,47899L,47900L,47901L,47902L,47903L,47904L, +47905L,47906L,47907L,47908L,47909L,47910L,47911L,47912L,47913L,47914L, +47915L,47916L,47917L,47918L,47919L,47920L,47921L,47922L,47923L,47924L, +47925L,47926L,47927L,47928L,47929L,47930L,47931L,47932L,47933L,47934L, +47935L,47936L,47937L,47938L,47939L,47940L,47941L,47942L,47943L,47944L, +47945L,47946L,47947L,47948L,47949L,47950L,47951L,47952L,47953L,47954L, +47955L,47956L,47957L,47958L,47959L,47960L,47961L,47962L,47963L,47964L, +47965L,47966L,47967L,47968L,47969L,47970L,47971L,47972L,47973L,47974L, +47975L,47976L,47977L,47978L,47979L,47980L,47981L,47982L,47983L,47984L, +47985L,47986L,47987L,47988L,47989L,47990L,47991L,47992L,47993L,47994L, +47995L,47996L,47997L,47998L,47999L,48000L,48001L,48002L,48003L,48004L, +48005L,48006L,48007L,48008L,48009L,48010L,48011L,48012L,48013L,48014L, +48015L,48016L,48017L,48018L,48019L,48020L,48021L,48022L,48023L,48024L, +48025L,48026L,48027L,48028L,48029L,48030L,48031L,48032L,48033L,48034L, +48035L,48036L,48037L,48038L,48039L,48040L,48041L,48042L,48043L,48044L, +48045L,48046L,48047L,48048L,48049L,48050L,48051L,48052L,48053L,48054L, +48055L,48056L,48057L,48058L,48059L,48060L,48061L,48062L,48063L,48064L, +48065L,48066L,48067L,48068L,48069L,48070L,48071L,48072L,48073L,48074L, +48075L,48076L,48077L,48078L,48079L,48080L,48081L,48082L,48083L,48084L, +48085L,48086L,48087L,48088L,48089L,48090L,48091L,48092L,48093L,48094L, +48095L,48096L,48097L,48098L,48099L,48100L,48101L,48102L,48103L,48104L, +48105L,48106L,48107L,48108L,48109L,48110L,48111L,48112L,48113L,48114L, +48115L,48116L,48117L,48118L,48119L,48120L,48121L,48122L,48123L,48124L, +48125L,48126L,48127L,48128L,48129L,48130L,48131L,48132L,48133L,48134L, +48135L,48136L,48137L,48138L,48139L,48140L,48141L,48142L,48143L,48144L, +48145L,48146L,48147L,48148L,48149L,48150L,48151L,48152L,48153L,48154L, +48155L,48156L,48157L,48158L,48159L,48160L,48161L,48162L,48163L,48164L, +48165L,48166L,48167L,48168L,48169L,48170L,48171L,48172L,48173L,48174L, +48175L,48176L,48177L,48178L,48179L,48180L,48181L,48182L,48183L,48184L, +48185L,48186L,48187L,48188L,48189L,48190L,48191L,48192L,48193L,48194L, +48195L,48196L,48197L,48198L,48199L,48200L,48201L,48202L,48203L,48204L, +48205L,48206L,48207L,48208L,48209L,48210L,48211L,48212L,48213L,48214L, +48215L,48216L,48217L,48218L,48219L,48220L,48221L,48222L,48223L,48224L, +48225L,48226L,48227L,48228L,48229L,48230L,48231L,48232L,48233L,48234L, +48235L,48236L,48237L,48238L,48239L,48240L,48241L,48242L,48243L,48244L, +48245L,48246L,48247L,48248L,48249L,48250L,48251L,48252L,48253L,48254L, +48255L,48256L,48257L,48258L,48259L,48260L,48261L,48262L,48263L,48264L, +48265L,48266L,48267L,48268L,48269L,48270L,48271L,48272L,48273L,48274L, +48275L,48276L,48277L,48278L,48279L,48280L,48281L,48282L,48283L,48284L, +48285L,48286L,48287L,48288L,48289L,48290L,48291L,48292L,48293L,48294L, +48295L,48296L,48297L,48298L,48299L,48300L,48301L,48302L,48303L,48304L, +48305L,48306L,48307L,48308L,48309L,48310L,48311L,48312L,48313L,48314L, +48315L,48316L,48317L,48318L,48319L,48320L,48321L,48322L,48323L,48324L, +48325L,48326L,48327L,48328L,48329L,48330L,48331L,48332L,48333L,48334L, +48335L,48336L,48337L,48338L,48339L,48340L,48341L,48342L,48343L,48344L, +48345L,48346L,48347L,48348L,48349L,48350L,48351L,48352L,48353L,48354L, +48355L,48356L,48357L,48358L,48359L,48360L,48361L,48362L,48363L,48364L, +48365L,48366L,48367L,48368L,48369L,48370L,48371L,48372L,48373L,48374L, +48375L,48376L,48377L,48378L,48379L,48380L,48381L,48382L,48383L,48384L, +48385L,48386L,48387L,48388L,48389L,48390L,48391L,48392L,48393L,48394L, +48395L,48396L,48397L,48398L,48399L,48400L,48401L,48402L,48403L,48404L, +48405L,48406L,48407L,48408L,48409L,48410L,48411L,48412L,48413L,48414L, +48415L,48416L,48417L,48418L,48419L,48420L,48421L,48422L,48423L,48424L, +48425L,48426L,48427L,48428L,48429L,48430L,48431L,48432L,48433L,48434L, +48435L,48436L,48437L,48438L,48439L,48440L,48441L,48442L,48443L,48444L, +48445L,48446L,48447L,48448L,48449L,48450L,48451L,48452L,48453L,48454L, +48455L,48456L,48457L,48458L,48459L,48460L,48461L,48462L,48463L,48464L, +48465L,48466L,48467L,48468L,48469L,48470L,48471L,48472L,48473L,48474L, +48475L,48476L,48477L,48478L,48479L,48480L,48481L,48482L,48483L,48484L, +48485L,48486L,48487L,48488L,48489L,48490L,48491L,48492L,48493L,48494L, +48495L,48496L,48497L,48498L,48499L,48500L,48501L,48502L,48503L,48504L, +48505L,48506L,48507L,48508L,48509L,48510L,48511L,48512L,48513L,48514L, +48515L,48516L,48517L,48518L,48519L,48520L,48521L,48522L,48523L,48524L, +48525L,48526L,48527L,48528L,48529L,48530L,48531L,48532L,48533L,48534L, +48535L,48536L,48537L,48538L,48539L,48540L,48541L,48542L,48543L,48544L, +48545L,48546L,48547L,48548L,48549L,48550L,48551L,48552L,48553L,48554L, +48555L,48556L,48557L,48558L,48559L,48560L,48561L,48562L,48563L,48564L, +48565L,48566L,48567L,48568L,48569L,48570L,48571L,48572L,48573L,48574L, +48575L,48576L,48577L,48578L,48579L,48580L,48581L,48582L,48583L,48584L, +48585L,48586L,48587L,48588L,48589L,48590L,48591L,48592L,48593L,48594L, +48595L,48596L,48597L,48598L,48599L,48600L,48601L,48602L,48603L,48604L, +48605L,48606L,48607L,48608L,48609L,48610L,48611L,48612L,48613L,48614L, +48615L,48616L,48617L,48618L,48619L,48620L,48621L,48622L,48623L,48624L, +48625L,48626L,48627L,48628L,48629L,48630L,48631L,48632L,48633L,48634L, +48635L,48636L,48637L,48638L,48639L,48640L,48641L,48642L,48643L,48644L, +48645L,48646L,48647L,48648L,48649L,48650L,48651L,48652L,48653L,48654L, +48655L,48656L,48657L,48658L,48659L,48660L,48661L,48662L,48663L,48664L, +48665L,48666L,48667L,48668L,48669L,48670L,48671L,48672L,48673L,48674L, +48675L,48676L,48677L,48678L,48679L,48680L,48681L,48682L,48683L,48684L, +48685L,48686L,48687L,48688L,48689L,48690L,48691L,48692L,48693L,48694L, +48695L,48696L,48697L,48698L,48699L,48700L,48701L,48702L,48703L,48704L, +48705L,48706L,48707L,48708L,48709L,48710L,48711L,48712L,48713L,48714L, +48715L,48716L,48717L,48718L,48719L,48720L,48721L,48722L,48723L,48724L, +48725L,48726L,48727L,48728L,48729L,48730L,48731L,48732L,48733L,48734L, +48735L,48736L,48737L,48738L,48739L,48740L,48741L,48742L,48743L,48744L, +48745L,48746L,48747L,48748L,48749L,48750L,48751L,48752L,48753L,48754L, +48755L,48756L,48757L,48758L,48759L,48760L,48761L,48762L,48763L,48764L, +48765L,48766L,48767L,48768L,48769L,48770L,48771L,48772L,48773L,48774L, +48775L,48776L,48777L,48778L,48779L,48780L,48781L,48782L,48783L,48784L, +48785L,48786L,48787L,48788L,48789L,48790L,48791L,48792L,48793L,48794L, +48795L,48796L,48797L,48798L,48799L,48800L,48801L,48802L,48803L,48804L, +48805L,48806L,48807L,48808L,48809L,48810L,48811L,48812L,48813L,48814L, +48815L,48816L,48817L,48818L,48819L,48820L,48821L,48822L,48823L,48824L, +48825L,48826L,48827L,48828L,48829L,48830L,48831L,48832L,48833L,48834L, +48835L,48836L,48837L,48838L,48839L,48840L,48841L,48842L,48843L,48844L, +48845L,48846L,48847L,48848L,48849L,48850L,48851L,48852L,48853L,48854L, +48855L,48856L,48857L,48858L,48859L,48860L,48861L,48862L,48863L,48864L, +48865L,48866L,48867L,48868L,48869L,48870L,48871L,48872L,48873L,48874L, +48875L,48876L,48877L,48878L,48879L,48880L,48881L,48882L,48883L,48884L, +48885L,48886L,48887L,48888L,48889L,48890L,48891L,48892L,48893L,48894L, +48895L,48896L,48897L,48898L,48899L,48900L,48901L,48902L,48903L,48904L, +48905L,48906L,48907L,48908L,48909L,48910L,48911L,48912L,48913L,48914L, +48915L,48916L,48917L,48918L,48919L,48920L,48921L,48922L,48923L,48924L, +48925L,48926L,48927L,48928L,48929L,48930L,48931L,48932L,48933L,48934L, +48935L,48936L,48937L,48938L,48939L,48940L,48941L,48942L,48943L,48944L, +48945L,48946L,48947L,48948L,48949L,48950L,48951L,48952L,48953L,48954L, +48955L,48956L,48957L,48958L,48959L,48960L,48961L,48962L,48963L,48964L, +48965L,48966L,48967L,48968L,48969L,48970L,48971L,48972L,48973L,48974L, +48975L,48976L,48977L,48978L,48979L,48980L,48981L,48982L,48983L,48984L, +48985L,48986L,48987L,48988L,48989L,48990L,48991L,48992L,48993L,48994L, +48995L,48996L,48997L,48998L,48999L,49000L,49001L,49002L,49003L,49004L, +49005L,49006L,49007L,49008L,49009L,49010L,49011L,49012L,49013L,49014L, +49015L,49016L,49017L,49018L,49019L,49020L,49021L,49022L,49023L,49024L, +49025L,49026L,49027L,49028L,49029L,49030L,49031L,49032L,49033L,49034L, +49035L,49036L,49037L,49038L,49039L,49040L,49041L,49042L,49043L,49044L, +49045L,49046L,49047L,49048L,49049L,49050L,49051L,49052L,49053L,49054L, +49055L,49056L,49057L,49058L,49059L,49060L,49061L,49062L,49063L,49064L, +49065L,49066L,49067L,49068L,49069L,49070L,49071L,49072L,49073L,49074L, +49075L,49076L,49077L,49078L,49079L,49080L,49081L,49082L,49083L,49084L, +49085L,49086L,49087L,49088L,49089L,49090L,49091L,49092L,49093L,49094L, +49095L,49096L,49097L,49098L,49099L,49100L,49101L,49102L,49103L,49104L, +49105L,49106L,49107L,49108L,49109L,49110L,49111L,49112L,49113L,49114L, +49115L,49116L,49117L,49118L,49119L,49120L,49121L,49122L,49123L,49124L, +49125L,49126L,49127L,49128L,49129L,49130L,49131L,49132L,49133L,49134L, +49135L,49136L,49137L,49138L,49139L,49140L,49141L,49142L,49143L,49144L, +49145L,49146L,49147L,49148L,49149L,49150L,49151L,49152L,49153L,49154L, +49155L,49156L,49157L,49158L,49159L,49160L,49161L,49162L,49163L,49164L, +49165L,49166L,49167L,49168L,49169L,49170L,49171L,49172L,49173L,49174L, +49175L,49176L,49177L,49178L,49179L,49180L,49181L,49182L,49183L,49184L, +49185L,49186L,49187L,49188L,49189L,49190L,49191L,49192L,49193L,49194L, +49195L,49196L,49197L,49198L,49199L,49200L,49201L,49202L,49203L,49204L, +49205L,49206L,49207L,49208L,49209L,49210L,49211L,49212L,49213L,49214L, +49215L,49216L,49217L,49218L,49219L,49220L,49221L,49222L,49223L,49224L, +49225L,49226L,49227L,49228L,49229L,49230L,49231L,49232L,49233L,49234L, +49235L,49236L,49237L,49238L,49239L,49240L,49241L,49242L,49243L,49244L, +49245L,49246L,49247L,49248L,49249L,49250L,49251L,49252L,49253L,49254L, +49255L,49256L,49257L,49258L,49259L,49260L,49261L,49262L,49263L,49264L, +49265L,49266L,49267L,49268L,49269L,49270L,49271L,49272L,49273L,49274L, +49275L,49276L,49277L,49278L,49279L,49280L,49281L,49282L,49283L,49284L, +49285L,49286L,49287L,49288L,49289L,49290L,49291L,49292L,49293L,49294L, +49295L,49296L,49297L,49298L,49299L,49300L,49301L,49302L,49303L,49304L, +49305L,49306L,49307L,49308L,49309L,49310L,49311L,49312L,49313L,49314L, +49315L,49316L,49317L,49318L,49319L,49320L,49321L,49322L,49323L,49324L, +49325L,49326L,49327L,49328L,49329L,49330L,49331L,49332L,49333L,49334L, +49335L,49336L,49337L,49338L,49339L,49340L,49341L,49342L,49343L,49344L, +49345L,49346L,49347L,49348L,49349L,49350L,49351L,49352L,49353L,49354L, +49355L,49356L,49357L,49358L,49359L,49360L,49361L,49362L,49363L,49364L, +49365L,49366L,49367L,49368L,49369L,49370L,49371L,49372L,49373L,49374L, +49375L,49376L,49377L,49378L,49379L,49380L,49381L,49382L,49383L,49384L, +49385L,49386L,49387L,49388L,49389L,49390L,49391L,49392L,49393L,49394L, +49395L,49396L,49397L,49398L,49399L,49400L,49401L,49402L,49403L,49404L, +49405L,49406L,49407L,49408L,49409L,49410L,49411L,49412L,49413L,49414L, +49415L,49416L,49417L,49418L,49419L,49420L,49421L,49422L,49423L,49424L, +49425L,49426L,49427L,49428L,49429L,49430L,49431L,49432L,49433L,49434L, +49435L,49436L,49437L,49438L,49439L,49440L,49441L,49442L,49443L,49444L, +49445L,49446L,49447L,49448L,49449L,49450L,49451L,49452L,49453L,49454L, +49455L,49456L,49457L,49458L,49459L,49460L,49461L,49462L,49463L,49464L, +49465L,49466L,49467L,49468L,49469L,49470L,49471L,49472L,49473L,49474L, +49475L,49476L,49477L,49478L,49479L,49480L,49481L,49482L,49483L,49484L, +49485L,49486L,49487L,49488L,49489L,49490L,49491L,49492L,49493L,49494L, +49495L,49496L,49497L,49498L,49499L,49500L,49501L,49502L,49503L,49504L, +49505L,49506L,49507L,49508L,49509L,49510L,49511L,49512L,49513L,49514L, +49515L,49516L,49517L,49518L,49519L,49520L,49521L,49522L,49523L,49524L, +49525L,49526L,49527L,49528L,49529L,49530L,49531L,49532L,49533L,49534L, +49535L,49536L,49537L,49538L,49539L,49540L,49541L,49542L,49543L,49544L, +49545L,49546L,49547L,49548L,49549L,49550L,49551L,49552L,49553L,49554L, +49555L,49556L,49557L,49558L,49559L,49560L,49561L,49562L,49563L,49564L, +49565L,49566L,49567L,49568L,49569L,49570L,49571L,49572L,49573L,49574L, +49575L,49576L,49577L,49578L,49579L,49580L,49581L,49582L,49583L,49584L, +49585L,49586L,49587L,49588L,49589L,49590L,49591L,49592L,49593L,49594L, +49595L,49596L,49597L,49598L,49599L,49600L,49601L,49602L,49603L,49604L, +49605L,49606L,49607L,49608L,49609L,49610L,49611L,49612L,49613L,49614L, +49615L,49616L,49617L,49618L,49619L,49620L,49621L,49622L,49623L,49624L, +49625L,49626L,49627L,49628L,49629L,49630L,49631L,49632L,49633L,49634L, +49635L,49636L,49637L,49638L,49639L,49640L,49641L,49642L,49643L,49644L, +49645L,49646L,49647L,49648L,49649L,49650L,49651L,49652L,49653L,49654L, +49655L,49656L,49657L,49658L,49659L,49660L,49661L,49662L,49663L,49664L, +49665L,49666L,49667L,49668L,49669L,49670L,49671L,49672L,49673L,49674L, +49675L,49676L,49677L,49678L,49679L,49680L,49681L,49682L,49683L,49684L, +49685L,49686L,49687L,49688L,49689L,49690L,49691L,49692L,49693L,49694L, +49695L,49696L,49697L,49698L,49699L,49700L,49701L,49702L,49703L,49704L, +49705L,49706L,49707L,49708L,49709L,49710L,49711L,49712L,49713L,49714L, +49715L,49716L,49717L,49718L,49719L,49720L,49721L,49722L,49723L,49724L, +49725L,49726L,49727L,49728L,49729L,49730L,49731L,49732L,49733L,49734L, +49735L,49736L,49737L,49738L,49739L,49740L,49741L,49742L,49743L,49744L, +49745L,49746L,49747L,49748L,49749L,49750L,49751L,49752L,49753L,49754L, +49755L,49756L,49757L,49758L,49759L,49760L,49761L,49762L,49763L,49764L, +49765L,49766L,49767L,49768L,49769L,49770L,49771L,49772L,49773L,49774L, +49775L,49776L,49777L,49778L,49779L,49780L,49781L,49782L,49783L,49784L, +49785L,49786L,49787L,49788L,49789L,49790L,49791L,49792L,49793L,49794L, +49795L,49796L,49797L,49798L,49799L,49800L,49801L,49802L,49803L,49804L, +49805L,49806L,49807L,49808L,49809L,49810L,49811L,49812L,49813L,49814L, +49815L,49816L,49817L,49818L,49819L,49820L,49821L,49822L,49823L,49824L, +49825L,49826L,49827L,49828L,49829L,49830L,49831L,49832L,49833L,49834L, +49835L,49836L,49837L,49838L,49839L,49840L,49841L,49842L,49843L,49844L, +49845L,49846L,49847L,49848L,49849L,49850L,49851L,49852L,49853L,49854L, +49855L,49856L,49857L,49858L,49859L,49860L,49861L,49862L,49863L,49864L, +49865L,49866L,49867L,49868L,49869L,49870L,49871L,49872L,49873L,49874L, +49875L,49876L,49877L,49878L,49879L,49880L,49881L,49882L,49883L,49884L, +49885L,49886L,49887L,49888L,49889L,49890L,49891L,49892L,49893L,49894L, +49895L,49896L,49897L,49898L,49899L,49900L,49901L,49902L,49903L,49904L, +49905L,49906L,49907L,49908L,49909L,49910L,49911L,49912L,49913L,49914L, +49915L,49916L,49917L,49918L,49919L,49920L,49921L,49922L,49923L,49924L, +49925L,49926L,49927L,49928L,49929L,49930L,49931L,49932L,49933L,49934L, +49935L,49936L,49937L,49938L,49939L,49940L,49941L,49942L,49943L,49944L, +49945L,49946L,49947L,49948L,49949L,49950L,49951L,49952L,49953L,49954L, +49955L,49956L,49957L,49958L,49959L,49960L,49961L,49962L,49963L,49964L, +49965L,49966L,49967L,49968L,49969L,49970L,49971L,49972L,49973L,49974L, +49975L,49976L,49977L,49978L,49979L,49980L,49981L,49982L,49983L,49984L, +49985L,49986L,49987L,49988L,49989L,49990L,49991L,49992L,49993L,49994L, +49995L,49996L,49997L,49998L,49999L,50000L,50001L,50002L,50003L,50004L, +50005L,50006L,50007L,50008L,50009L,50010L,50011L,50012L,50013L,50014L, +50015L,50016L,50017L,50018L,50019L,50020L,50021L,50022L,50023L,50024L, +50025L,50026L,50027L,50028L,50029L,50030L,50031L,50032L,50033L,50034L, +50035L,50036L,50037L,50038L,50039L,50040L,50041L,50042L,50043L,50044L, +50045L,50046L,50047L,50048L,50049L,50050L,50051L,50052L,50053L,50054L, +50055L,50056L,50057L,50058L,50059L,50060L,50061L,50062L,50063L,50064L, +50065L,50066L,50067L,50068L,50069L,50070L,50071L,50072L,50073L,50074L, +50075L,50076L,50077L,50078L,50079L,50080L,50081L,50082L,50083L,50084L, +50085L,50086L,50087L,50088L,50089L,50090L,50091L,50092L,50093L,50094L, +50095L,50096L,50097L,50098L,50099L,50100L,50101L,50102L,50103L,50104L, +50105L,50106L,50107L,50108L,50109L,50110L,50111L,50112L,50113L,50114L, +50115L,50116L,50117L,50118L,50119L,50120L,50121L,50122L,50123L,50124L, +50125L,50126L,50127L,50128L,50129L,50130L,50131L,50132L,50133L,50134L, +50135L,50136L,50137L,50138L,50139L,50140L,50141L,50142L,50143L,50144L, +50145L,50146L,50147L,50148L,50149L,50150L,50151L,50152L,50153L,50154L, +50155L,50156L,50157L,50158L,50159L,50160L,50161L,50162L,50163L,50164L, +50165L,50166L,50167L,50168L,50169L,50170L,50171L,50172L,50173L,50174L, +50175L,50176L,50177L,50178L,50179L,50180L,50181L,50182L,50183L,50184L, +50185L,50186L,50187L,50188L,50189L,50190L,50191L,50192L,50193L,50194L, +50195L,50196L,50197L,50198L,50199L,50200L,50201L,50202L,50203L,50204L, +50205L,50206L,50207L,50208L,50209L,50210L,50211L,50212L,50213L,50214L, +50215L,50216L,50217L,50218L,50219L,50220L,50221L,50222L,50223L,50224L, +50225L,50226L,50227L,50228L,50229L,50230L,50231L,50232L,50233L,50234L, +50235L,50236L,50237L,50238L,50239L,50240L,50241L,50242L,50243L,50244L, +50245L,50246L,50247L,50248L,50249L,50250L,50251L,50252L,50253L,50254L, +50255L,50256L,50257L,50258L,50259L,50260L,50261L,50262L,50263L,50264L, +50265L,50266L,50267L,50268L,50269L,50270L,50271L,50272L,50273L,50274L, +50275L,50276L,50277L,50278L,50279L,50280L,50281L,50282L,50283L,50284L, +50285L,50286L,50287L,50288L,50289L,50290L,50291L,50292L,50293L,50294L, +50295L,50296L,50297L,50298L,50299L,50300L,50301L,50302L,50303L,50304L, +50305L,50306L,50307L,50308L,50309L,50310L,50311L,50312L,50313L,50314L, +50315L,50316L,50317L,50318L,50319L,50320L,50321L,50322L,50323L,50324L, +50325L,50326L,50327L,50328L,50329L,50330L,50331L,50332L,50333L,50334L, +50335L,50336L,50337L,50338L,50339L,50340L,50341L,50342L,50343L,50344L, +50345L,50346L,50347L,50348L,50349L,50350L,50351L,50352L,50353L,50354L, +50355L,50356L,50357L,50358L,50359L,50360L,50361L,50362L,50363L,50364L, +50365L,50366L,50367L,50368L,50369L,50370L,50371L,50372L,50373L,50374L, +50375L,50376L,50377L,50378L,50379L,50380L,50381L,50382L,50383L,50384L, +50385L,50386L,50387L,50388L,50389L,50390L,50391L,50392L,50393L,50394L, +50395L,50396L,50397L,50398L,50399L,50400L,50401L,50402L,50403L,50404L, +50405L,50406L,50407L,50408L,50409L,50410L,50411L,50412L,50413L,50414L, +50415L,50416L,50417L,50418L,50419L,50420L,50421L,50422L,50423L,50424L, +50425L,50426L,50427L,50428L,50429L,50430L,50431L,50432L,50433L,50434L, +50435L,50436L,50437L,50438L,50439L,50440L,50441L,50442L,50443L,50444L, +50445L,50446L,50447L,50448L,50449L,50450L,50451L,50452L,50453L,50454L, +50455L,50456L,50457L,50458L,50459L,50460L,50461L,50462L,50463L,50464L, +50465L,50466L,50467L,50468L,50469L,50470L,50471L,50472L,50473L,50474L, +50475L,50476L,50477L,50478L,50479L,50480L,50481L,50482L,50483L,50484L, +50485L,50486L,50487L,50488L,50489L,50490L,50491L,50492L,50493L,50494L, +50495L,50496L,50497L,50498L,50499L,50500L,50501L,50502L,50503L,50504L, +50505L,50506L,50507L,50508L,50509L,50510L,50511L,50512L,50513L,50514L, +50515L,50516L,50517L,50518L,50519L,50520L,50521L,50522L,50523L,50524L, +50525L,50526L,50527L,50528L,50529L,50530L,50531L,50532L,50533L,50534L, +50535L,50536L,50537L,50538L,50539L,50540L,50541L,50542L,50543L,50544L, +50545L,50546L,50547L,50548L,50549L,50550L,50551L,50552L,50553L,50554L, +50555L,50556L,50557L,50558L,50559L,50560L,50561L,50562L,50563L,50564L, +50565L,50566L,50567L,50568L,50569L,50570L,50571L,50572L,50573L,50574L, +50575L,50576L,50577L,50578L,50579L,50580L,50581L,50582L,50583L,50584L, +50585L,50586L,50587L,50588L,50589L,50590L,50591L,50592L,50593L,50594L, +50595L,50596L,50597L,50598L,50599L,50600L,50601L,50602L,50603L,50604L, +50605L,50606L,50607L,50608L,50609L,50610L,50611L,50612L,50613L,50614L, +50615L,50616L,50617L,50618L,50619L,50620L,50621L,50622L,50623L,50624L, +50625L,50626L,50627L,50628L,50629L,50630L,50631L,50632L,50633L,50634L, +50635L,50636L,50637L,50638L,50639L,50640L,50641L,50642L,50643L,50644L, +50645L,50646L,50647L,50648L,50649L,50650L,50651L,50652L,50653L,50654L, +50655L,50656L,50657L,50658L,50659L,50660L,50661L,50662L,50663L,50664L, +50665L,50666L,50667L,50668L,50669L,50670L,50671L,50672L,50673L,50674L, +50675L,50676L,50677L,50678L,50679L,50680L,50681L,50682L,50683L,50684L, +50685L,50686L,50687L,50688L,50689L,50690L,50691L,50692L,50693L,50694L, +50695L,50696L,50697L,50698L,50699L,50700L,50701L,50702L,50703L,50704L, +50705L,50706L,50707L,50708L,50709L,50710L,50711L,50712L,50713L,50714L, +50715L,50716L,50717L,50718L,50719L,50720L,50721L,50722L,50723L,50724L, +50725L,50726L,50727L,50728L,50729L,50730L,50731L,50732L,50733L,50734L, +50735L,50736L,50737L,50738L,50739L,50740L,50741L,50742L,50743L,50744L, +50745L,50746L,50747L,50748L,50749L,50750L,50751L,50752L,50753L,50754L, +50755L,50756L,50757L,50758L,50759L,50760L,50761L,50762L,50763L,50764L, +50765L,50766L,50767L,50768L,50769L,50770L,50771L,50772L,50773L,50774L, +50775L,50776L,50777L,50778L,50779L,50780L,50781L,50782L,50783L,50784L, +50785L,50786L,50787L,50788L,50789L,50790L,50791L,50792L,50793L,50794L, +50795L,50796L,50797L,50798L,50799L,50800L,50801L,50802L,50803L,50804L, +50805L,50806L,50807L,50808L,50809L,50810L,50811L,50812L,50813L,50814L, +50815L,50816L,50817L,50818L,50819L,50820L,50821L,50822L,50823L,50824L, +50825L,50826L,50827L,50828L,50829L,50830L,50831L,50832L,50833L,50834L, +50835L,50836L,50837L,50838L,50839L,50840L,50841L,50842L,50843L,50844L, +50845L,50846L,50847L,50848L,50849L,50850L,50851L,50852L,50853L,50854L, +50855L,50856L,50857L,50858L,50859L,50860L,50861L,50862L,50863L,50864L, +50865L,50866L,50867L,50868L,50869L,50870L,50871L,50872L,50873L,50874L, +50875L,50876L,50877L,50878L,50879L,50880L,50881L,50882L,50883L,50884L, +50885L,50886L,50887L,50888L,50889L,50890L,50891L,50892L,50893L,50894L, +50895L,50896L,50897L,50898L,50899L,50900L,50901L,50902L,50903L,50904L, +50905L,50906L,50907L,50908L,50909L,50910L,50911L,50912L,50913L,50914L, +50915L,50916L,50917L,50918L,50919L,50920L,50921L,50922L,50923L,50924L, +50925L,50926L,50927L,50928L,50929L,50930L,50931L,50932L,50933L,50934L, +50935L,50936L,50937L,50938L,50939L,50940L,50941L,50942L,50943L,50944L, +50945L,50946L,50947L,50948L,50949L,50950L,50951L,50952L,50953L,50954L, +50955L,50956L,50957L,50958L,50959L,50960L,50961L,50962L,50963L,50964L, +50965L,50966L,50967L,50968L,50969L,50970L,50971L,50972L,50973L,50974L, +50975L,50976L,50977L,50978L,50979L,50980L,50981L,50982L,50983L,50984L, +50985L,50986L,50987L,50988L,50989L,50990L,50991L,50992L,50993L,50994L, +50995L,50996L,50997L,50998L,50999L,51000L,51001L,51002L,51003L,51004L, +51005L,51006L,51007L,51008L,51009L,51010L,51011L,51012L,51013L,51014L, +51015L,51016L,51017L,51018L,51019L,51020L,51021L,51022L,51023L,51024L, +51025L,51026L,51027L,51028L,51029L,51030L,51031L,51032L,51033L,51034L, +51035L,51036L,51037L,51038L,51039L,51040L,51041L,51042L,51043L,51044L, +51045L,51046L,51047L,51048L,51049L,51050L,51051L,51052L,51053L,51054L, +51055L,51056L,51057L,51058L,51059L,51060L,51061L,51062L,51063L,51064L, +51065L,51066L,51067L,51068L,51069L,51070L,51071L,51072L,51073L,51074L, +51075L,51076L,51077L,51078L,51079L,51080L,51081L,51082L,51083L,51084L, +51085L,51086L,51087L,51088L,51089L,51090L,51091L,51092L,51093L,51094L, +51095L,51096L,51097L,51098L,51099L,51100L,51101L,51102L,51103L,51104L, +51105L,51106L,51107L,51108L,51109L,51110L,51111L,51112L,51113L,51114L, +51115L,51116L,51117L,51118L,51119L,51120L,51121L,51122L,51123L,51124L, +51125L,51126L,51127L,51128L,51129L,51130L,51131L,51132L,51133L,51134L, +51135L,51136L,51137L,51138L,51139L,51140L,51141L,51142L,51143L,51144L, +51145L,51146L,51147L,51148L,51149L,51150L,51151L,51152L,51153L,51154L, +51155L,51156L,51157L,51158L,51159L,51160L,51161L,51162L,51163L,51164L, +51165L,51166L,51167L,51168L,51169L,51170L,51171L,51172L,51173L,51174L, +51175L,51176L,51177L,51178L,51179L,51180L,51181L,51182L,51183L,51184L, +51185L,51186L,51187L,51188L,51189L,51190L,51191L,51192L,51193L,51194L, +51195L,51196L,51197L,51198L,51199L,51200L,51201L,51202L,51203L,51204L, +51205L,51206L,51207L,51208L,51209L,51210L,51211L,51212L,51213L,51214L, +51215L,51216L,51217L,51218L,51219L,51220L,51221L,51222L,51223L,51224L, +51225L,51226L,51227L,51228L,51229L,51230L,51231L,51232L,51233L,51234L, +51235L,51236L,51237L,51238L,51239L,51240L,51241L,51242L,51243L,51244L, +51245L,51246L,51247L,51248L,51249L,51250L,51251L,51252L,51253L,51254L, +51255L,51256L,51257L,51258L,51259L,51260L,51261L,51262L,51263L,51264L, +51265L,51266L,51267L,51268L,51269L,51270L,51271L,51272L,51273L,51274L, +51275L,51276L,51277L,51278L,51279L,51280L,51281L,51282L,51283L,51284L, +51285L,51286L,51287L,51288L,51289L,51290L,51291L,51292L,51293L,51294L, +51295L,51296L,51297L,51298L,51299L,51300L,51301L,51302L,51303L,51304L, +51305L,51306L,51307L,51308L,51309L,51310L,51311L,51312L,51313L,51314L, +51315L,51316L,51317L,51318L,51319L,51320L,51321L,51322L,51323L,51324L, +51325L,51326L,51327L,51328L,51329L,51330L,51331L,51332L,51333L,51334L, +51335L,51336L,51337L,51338L,51339L,51340L,51341L,51342L,51343L,51344L, +51345L,51346L,51347L,51348L,51349L,51350L,51351L,51352L,51353L,51354L, +51355L,51356L,51357L,51358L,51359L,51360L,51361L,51362L,51363L,51364L, +51365L,51366L,51367L,51368L,51369L,51370L,51371L,51372L,51373L,51374L, +51375L,51376L,51377L,51378L,51379L,51380L,51381L,51382L,51383L,51384L, +51385L,51386L,51387L,51388L,51389L,51390L,51391L,51392L,51393L,51394L, +51395L,51396L,51397L,51398L,51399L,51400L,51401L,51402L,51403L,51404L, +51405L,51406L,51407L,51408L,51409L,51410L,51411L,51412L,51413L,51414L, +51415L,51416L,51417L,51418L,51419L,51420L,51421L,51422L,51423L,51424L, +51425L,51426L,51427L,51428L,51429L,51430L,51431L,51432L,51433L,51434L, +51435L,51436L,51437L,51438L,51439L,51440L,51441L,51442L,51443L,51444L, +51445L,51446L,51447L,51448L,51449L,51450L,51451L,51452L,51453L,51454L, +51455L,51456L,51457L,51458L,51459L,51460L,51461L,51462L,51463L,51464L, +51465L,51466L,51467L,51468L,51469L,51470L,51471L,51472L,51473L,51474L, +51475L,51476L,51477L,51478L,51479L,51480L,51481L,51482L,51483L,51484L, +51485L,51486L,51487L,51488L,51489L,51490L,51491L,51492L,51493L,51494L, +51495L,51496L,51497L,51498L,51499L,51500L,51501L,51502L,51503L,51504L, +51505L,51506L,51507L,51508L,51509L,51510L,51511L,51512L,51513L,51514L, +51515L,51516L,51517L,51518L,51519L,51520L,51521L,51522L,51523L,51524L, +51525L,51526L,51527L,51528L,51529L,51530L,51531L,51532L,51533L,51534L, +51535L,51536L,51537L,51538L,51539L,51540L,51541L,51542L,51543L,51544L, +51545L,51546L,51547L,51548L,51549L,51550L,51551L,51552L,51553L,51554L, +51555L,51556L,51557L,51558L,51559L,51560L,51561L,51562L,51563L,51564L, +51565L,51566L,51567L,51568L,51569L,51570L,51571L,51572L,51573L,51574L, +51575L,51576L,51577L,51578L,51579L,51580L,51581L,51582L,51583L,51584L, +51585L,51586L,51587L,51588L,51589L,51590L,51591L,51592L,51593L,51594L, +51595L,51596L,51597L,51598L,51599L,51600L,51601L,51602L,51603L,51604L, +51605L,51606L,51607L,51608L,51609L,51610L,51611L,51612L,51613L,51614L, +51615L,51616L,51617L,51618L,51619L,51620L,51621L,51622L,51623L,51624L, +51625L,51626L,51627L,51628L,51629L,51630L,51631L,51632L,51633L,51634L, +51635L,51636L,51637L,51638L,51639L,51640L,51641L,51642L,51643L,51644L, +51645L,51646L,51647L,51648L,51649L,51650L,51651L,51652L,51653L,51654L, +51655L,51656L,51657L,51658L,51659L,51660L,51661L,51662L,51663L,51664L, +51665L,51666L,51667L,51668L,51669L,51670L,51671L,51672L,51673L,51674L, +51675L,51676L,51677L,51678L,51679L,51680L,51681L,51682L,51683L,51684L, +51685L,51686L,51687L,51688L,51689L,51690L,51691L,51692L,51693L,51694L, +51695L,51696L,51697L,51698L,51699L,51700L,51701L,51702L,51703L,51704L, +51705L,51706L,51707L,51708L,51709L,51710L,51711L,51712L,51713L,51714L, +51715L,51716L,51717L,51718L,51719L,51720L,51721L,51722L,51723L,51724L, +51725L,51726L,51727L,51728L,51729L,51730L,51731L,51732L,51733L,51734L, +51735L,51736L,51737L,51738L,51739L,51740L,51741L,51742L,51743L,51744L, +51745L,51746L,51747L,51748L,51749L,51750L,51751L,51752L,51753L,51754L, +51755L,51756L,51757L,51758L,51759L,51760L,51761L,51762L,51763L,51764L, +51765L,51766L,51767L,51768L,51769L,51770L,51771L,51772L,51773L,51774L, +51775L,51776L,51777L,51778L,51779L,51780L,51781L,51782L,51783L,51784L, +51785L,51786L,51787L,51788L,51789L,51790L,51791L,51792L,51793L,51794L, +51795L,51796L,51797L,51798L,51799L,51800L,51801L,51802L,51803L,51804L, +51805L,51806L,51807L,51808L,51809L,51810L,51811L,51812L,51813L,51814L, +51815L,51816L,51817L,51818L,51819L,51820L,51821L,51822L,51823L,51824L, +51825L,51826L,51827L,51828L,51829L,51830L,51831L,51832L,51833L,51834L, +51835L,51836L,51837L,51838L,51839L,51840L,51841L,51842L,51843L,51844L, +51845L,51846L,51847L,51848L,51849L,51850L,51851L,51852L,51853L,51854L, +51855L,51856L,51857L,51858L,51859L,51860L,51861L,51862L,51863L,51864L, +51865L,51866L,51867L,51868L,51869L,51870L,51871L,51872L,51873L,51874L, +51875L,51876L,51877L,51878L,51879L,51880L,51881L,51882L,51883L,51884L, +51885L,51886L,51887L,51888L,51889L,51890L,51891L,51892L,51893L,51894L, +51895L,51896L,51897L,51898L,51899L,51900L,51901L,51902L,51903L,51904L, +51905L,51906L,51907L,51908L,51909L,51910L,51911L,51912L,51913L,51914L, +51915L,51916L,51917L,51918L,51919L,51920L,51921L,51922L,51923L,51924L, +51925L,51926L,51927L,51928L,51929L,51930L,51931L,51932L,51933L,51934L, +51935L,51936L,51937L,51938L,51939L,51940L,51941L,51942L,51943L,51944L, +51945L,51946L,51947L,51948L,51949L,51950L,51951L,51952L,51953L,51954L, +51955L,51956L,51957L,51958L,51959L,51960L,51961L,51962L,51963L,51964L, +51965L,51966L,51967L,51968L,51969L,51970L,51971L,51972L,51973L,51974L, +51975L,51976L,51977L,51978L,51979L,51980L,51981L,51982L,51983L,51984L, +51985L,51986L,51987L,51988L,51989L,51990L,51991L,51992L,51993L,51994L, +51995L,51996L,51997L,51998L,51999L,52000L,52001L,52002L,52003L,52004L, +52005L,52006L,52007L,52008L,52009L,52010L,52011L,52012L,52013L,52014L, +52015L,52016L,52017L,52018L,52019L,52020L,52021L,52022L,52023L,52024L, +52025L,52026L,52027L,52028L,52029L,52030L,52031L,52032L,52033L,52034L, +52035L,52036L,52037L,52038L,52039L,52040L,52041L,52042L,52043L,52044L, +52045L,52046L,52047L,52048L,52049L,52050L,52051L,52052L,52053L,52054L, +52055L,52056L,52057L,52058L,52059L,52060L,52061L,52062L,52063L,52064L, +52065L,52066L,52067L,52068L,52069L,52070L,52071L,52072L,52073L,52074L, +52075L,52076L,52077L,52078L,52079L,52080L,52081L,52082L,52083L,52084L, +52085L,52086L,52087L,52088L,52089L,52090L,52091L,52092L,52093L,52094L, +52095L,52096L,52097L,52098L,52099L,52100L,52101L,52102L,52103L,52104L, +52105L,52106L,52107L,52108L,52109L,52110L,52111L,52112L,52113L,52114L, +52115L,52116L,52117L,52118L,52119L,52120L,52121L,52122L,52123L,52124L, +52125L,52126L,52127L,52128L,52129L,52130L,52131L,52132L,52133L,52134L, +52135L,52136L,52137L,52138L,52139L,52140L,52141L,52142L,52143L,52144L, +52145L,52146L,52147L,52148L,52149L,52150L,52151L,52152L,52153L,52154L, +52155L,52156L,52157L,52158L,52159L,52160L,52161L,52162L,52163L,52164L, +52165L,52166L,52167L,52168L,52169L,52170L,52171L,52172L,52173L,52174L, +52175L,52176L,52177L,52178L,52179L,52180L,52181L,52182L,52183L,52184L, +52185L,52186L,52187L,52188L,52189L,52190L,52191L,52192L,52193L,52194L, +52195L,52196L,52197L,52198L,52199L,52200L,52201L,52202L,52203L,52204L, +52205L,52206L,52207L,52208L,52209L,52210L,52211L,52212L,52213L,52214L, +52215L,52216L,52217L,52218L,52219L,52220L,52221L,52222L,52223L,52224L, +52225L,52226L,52227L,52228L,52229L,52230L,52231L,52232L,52233L,52234L, +52235L,52236L,52237L,52238L,52239L,52240L,52241L,52242L,52243L,52244L, +52245L,52246L,52247L,52248L,52249L,52250L,52251L,52252L,52253L,52254L, +52255L,52256L,52257L,52258L,52259L,52260L,52261L,52262L,52263L,52264L, +52265L,52266L,52267L,52268L,52269L,52270L,52271L,52272L,52273L,52274L, +52275L,52276L,52277L,52278L,52279L,52280L,52281L,52282L,52283L,52284L, +52285L,52286L,52287L,52288L,52289L,52290L,52291L,52292L,52293L,52294L, +52295L,52296L,52297L,52298L,52299L,52300L,52301L,52302L,52303L,52304L, +52305L,52306L,52307L,52308L,52309L,52310L,52311L,52312L,52313L,52314L, +52315L,52316L,52317L,52318L,52319L,52320L,52321L,52322L,52323L,52324L, +52325L,52326L,52327L,52328L,52329L,52330L,52331L,52332L,52333L,52334L, +52335L,52336L,52337L,52338L,52339L,52340L,52341L,52342L,52343L,52344L, +52345L,52346L,52347L,52348L,52349L,52350L,52351L,52352L,52353L,52354L, +52355L,52356L,52357L,52358L,52359L,52360L,52361L,52362L,52363L,52364L, +52365L,52366L,52367L,52368L,52369L,52370L,52371L,52372L,52373L,52374L, +52375L,52376L,52377L,52378L,52379L,52380L,52381L,52382L,52383L,52384L, +52385L,52386L,52387L,52388L,52389L,52390L,52391L,52392L,52393L,52394L, +52395L,52396L,52397L,52398L,52399L,52400L,52401L,52402L,52403L,52404L, +52405L,52406L,52407L,52408L,52409L,52410L,52411L,52412L,52413L,52414L, +52415L,52416L,52417L,52418L,52419L,52420L,52421L,52422L,52423L,52424L, +52425L,52426L,52427L,52428L,52429L,52430L,52431L,52432L,52433L,52434L, +52435L,52436L,52437L,52438L,52439L,52440L,52441L,52442L,52443L,52444L, +52445L,52446L,52447L,52448L,52449L,52450L,52451L,52452L,52453L,52454L, +52455L,52456L,52457L,52458L,52459L,52460L,52461L,52462L,52463L,52464L, +52465L,52466L,52467L,52468L,52469L,52470L,52471L,52472L,52473L,52474L, +52475L,52476L,52477L,52478L,52479L,52480L,52481L,52482L,52483L,52484L, +52485L,52486L,52487L,52488L,52489L,52490L,52491L,52492L,52493L,52494L, +52495L,52496L,52497L,52498L,52499L,52500L,52501L,52502L,52503L,52504L, +52505L,52506L,52507L,52508L,52509L,52510L,52511L,52512L,52513L,52514L, +52515L,52516L,52517L,52518L,52519L,52520L,52521L,52522L,52523L,52524L, +52525L,52526L,52527L,52528L,52529L,52530L,52531L,52532L,52533L,52534L, +52535L,52536L,52537L,52538L,52539L,52540L,52541L,52542L,52543L,52544L, +52545L,52546L,52547L,52548L,52549L,52550L,52551L,52552L,52553L,52554L, +52555L,52556L,52557L,52558L,52559L,52560L,52561L,52562L,52563L,52564L, +52565L,52566L,52567L,52568L,52569L,52570L,52571L,52572L,52573L,52574L, +52575L,52576L,52577L,52578L,52579L,52580L,52581L,52582L,52583L,52584L, +52585L,52586L,52587L,52588L,52589L,52590L,52591L,52592L,52593L,52594L, +52595L,52596L,52597L,52598L,52599L,52600L,52601L,52602L,52603L,52604L, +52605L,52606L,52607L,52608L,52609L,52610L,52611L,52612L,52613L,52614L, +52615L,52616L,52617L,52618L,52619L,52620L,52621L,52622L,52623L,52624L, +52625L,52626L,52627L,52628L,52629L,52630L,52631L,52632L,52633L,52634L, +52635L,52636L,52637L,52638L,52639L,52640L,52641L,52642L,52643L,52644L, +52645L,52646L,52647L,52648L,52649L,52650L,52651L,52652L,52653L,52654L, +52655L,52656L,52657L,52658L,52659L,52660L,52661L,52662L,52663L,52664L, +52665L,52666L,52667L,52668L,52669L,52670L,52671L,52672L,52673L,52674L, +52675L,52676L,52677L,52678L,52679L,52680L,52681L,52682L,52683L,52684L, +52685L,52686L,52687L,52688L,52689L,52690L,52691L,52692L,52693L,52694L, +52695L,52696L,52697L,52698L,52699L,52700L,52701L,52702L,52703L,52704L, +52705L,52706L,52707L,52708L,52709L,52710L,52711L,52712L,52713L,52714L, +52715L,52716L,52717L,52718L,52719L,52720L,52721L,52722L,52723L,52724L, +52725L,52726L,52727L,52728L,52729L,52730L,52731L,52732L,52733L,52734L, +52735L,52736L,52737L,52738L,52739L,52740L,52741L,52742L,52743L,52744L, +52745L,52746L,52747L,52748L,52749L,52750L,52751L,52752L,52753L,52754L, +52755L,52756L,52757L,52758L,52759L,52760L,52761L,52762L,52763L,52764L, +52765L,52766L,52767L,52768L,52769L,52770L,52771L,52772L,52773L,52774L, +52775L,52776L,52777L,52778L,52779L,52780L,52781L,52782L,52783L,52784L, +52785L,52786L,52787L,52788L,52789L,52790L,52791L,52792L,52793L,52794L, +52795L,52796L,52797L,52798L,52799L,52800L,52801L,52802L,52803L,52804L, +52805L,52806L,52807L,52808L,52809L,52810L,52811L,52812L,52813L,52814L, +52815L,52816L,52817L,52818L,52819L,52820L,52821L,52822L,52823L,52824L, +52825L,52826L,52827L,52828L,52829L,52830L,52831L,52832L,52833L,52834L, +52835L,52836L,52837L,52838L,52839L,52840L,52841L,52842L,52843L,52844L, +52845L,52846L,52847L,52848L,52849L,52850L,52851L,52852L,52853L,52854L, +52855L,52856L,52857L,52858L,52859L,52860L,52861L,52862L,52863L,52864L, +52865L,52866L,52867L,52868L,52869L,52870L,52871L,52872L,52873L,52874L, +52875L,52876L,52877L,52878L,52879L,52880L,52881L,52882L,52883L,52884L, +52885L,52886L,52887L,52888L,52889L,52890L,52891L,52892L,52893L,52894L, +52895L,52896L,52897L,52898L,52899L,52900L,52901L,52902L,52903L,52904L, +52905L,52906L,52907L,52908L,52909L,52910L,52911L,52912L,52913L,52914L, +52915L,52916L,52917L,52918L,52919L,52920L,52921L,52922L,52923L,52924L, +52925L,52926L,52927L,52928L,52929L,52930L,52931L,52932L,52933L,52934L, +52935L,52936L,52937L,52938L,52939L,52940L,52941L,52942L,52943L,52944L, +52945L,52946L,52947L,52948L,52949L,52950L,52951L,52952L,52953L,52954L, +52955L,52956L,52957L,52958L,52959L,52960L,52961L,52962L,52963L,52964L, +52965L,52966L,52967L,52968L,52969L,52970L,52971L,52972L,52973L,52974L, +52975L,52976L,52977L,52978L,52979L,52980L,52981L,52982L,52983L,52984L, +52985L,52986L,52987L,52988L,52989L,52990L,52991L,52992L,52993L,52994L, +52995L,52996L,52997L,52998L,52999L,53000L,53001L,53002L,53003L,53004L, +53005L,53006L,53007L,53008L,53009L,53010L,53011L,53012L,53013L,53014L, +53015L,53016L,53017L,53018L,53019L,53020L,53021L,53022L,53023L,53024L, +53025L,53026L,53027L,53028L,53029L,53030L,53031L,53032L,53033L,53034L, +53035L,53036L,53037L,53038L,53039L,53040L,53041L,53042L,53043L,53044L, +53045L,53046L,53047L,53048L,53049L,53050L,53051L,53052L,53053L,53054L, +53055L,53056L,53057L,53058L,53059L,53060L,53061L,53062L,53063L,53064L, +53065L,53066L,53067L,53068L,53069L,53070L,53071L,53072L,53073L,53074L, +53075L,53076L,53077L,53078L,53079L,53080L,53081L,53082L,53083L,53084L, +53085L,53086L,53087L,53088L,53089L,53090L,53091L,53092L,53093L,53094L, +53095L,53096L,53097L,53098L,53099L,53100L,53101L,53102L,53103L,53104L, +53105L,53106L,53107L,53108L,53109L,53110L,53111L,53112L,53113L,53114L, +53115L,53116L,53117L,53118L,53119L,53120L,53121L,53122L,53123L,53124L, +53125L,53126L,53127L,53128L,53129L,53130L,53131L,53132L,53133L,53134L, +53135L,53136L,53137L,53138L,53139L,53140L,53141L,53142L,53143L,53144L, +53145L,53146L,53147L,53148L,53149L,53150L,53151L,53152L,53153L,53154L, +53155L,53156L,53157L,53158L,53159L,53160L,53161L,53162L,53163L,53164L, +53165L,53166L,53167L,53168L,53169L,53170L,53171L,53172L,53173L,53174L, +53175L,53176L,53177L,53178L,53179L,53180L,53181L,53182L,53183L,53184L, +53185L,53186L,53187L,53188L,53189L,53190L,53191L,53192L,53193L,53194L, +53195L,53196L,53197L,53198L,53199L,53200L,53201L,53202L,53203L,53204L, +53205L,53206L,53207L,53208L,53209L,53210L,53211L,53212L,53213L,53214L, +53215L,53216L,53217L,53218L,53219L,53220L,53221L,53222L,53223L,53224L, +53225L,53226L,53227L,53228L,53229L,53230L,53231L,53232L,53233L,53234L, +53235L,53236L,53237L,53238L,53239L,53240L,53241L,53242L,53243L,53244L, +53245L,53246L,53247L,53248L,53249L,53250L,53251L,53252L,53253L,53254L, +53255L,53256L,53257L,53258L,53259L,53260L,53261L,53262L,53263L,53264L, +53265L,53266L,53267L,53268L,53269L,53270L,53271L,53272L,53273L,53274L, +53275L,53276L,53277L,53278L,53279L,53280L,53281L,53282L,53283L,53284L, +53285L,53286L,53287L,53288L,53289L,53290L,53291L,53292L,53293L,53294L, +53295L,53296L,53297L,53298L,53299L,53300L,53301L,53302L,53303L,53304L, +53305L,53306L,53307L,53308L,53309L,53310L,53311L,53312L,53313L,53314L, +53315L,53316L,53317L,53318L,53319L,53320L,53321L,53322L,53323L,53324L, +53325L,53326L,53327L,53328L,53329L,53330L,53331L,53332L,53333L,53334L, +53335L,53336L,53337L,53338L,53339L,53340L,53341L,53342L,53343L,53344L, +53345L,53346L,53347L,53348L,53349L,53350L,53351L,53352L,53353L,53354L, +53355L,53356L,53357L,53358L,53359L,53360L,53361L,53362L,53363L,53364L, +53365L,53366L,53367L,53368L,53369L,53370L,53371L,53372L,53373L,53374L, +53375L,53376L,53377L,53378L,53379L,53380L,53381L,53382L,53383L,53384L, +53385L,53386L,53387L,53388L,53389L,53390L,53391L,53392L,53393L,53394L, +53395L,53396L,53397L,53398L,53399L,53400L,53401L,53402L,53403L,53404L, +53405L,53406L,53407L,53408L,53409L,53410L,53411L,53412L,53413L,53414L, +53415L,53416L,53417L,53418L,53419L,53420L,53421L,53422L,53423L,53424L, +53425L,53426L,53427L,53428L,53429L,53430L,53431L,53432L,53433L,53434L, +53435L,53436L,53437L,53438L,53439L,53440L,53441L,53442L,53443L,53444L, +53445L,53446L,53447L,53448L,53449L,53450L,53451L,53452L,53453L,53454L, +53455L,53456L,53457L,53458L,53459L,53460L,53461L,53462L,53463L,53464L, +53465L,53466L,53467L,53468L,53469L,53470L,53471L,53472L,53473L,53474L, +53475L,53476L,53477L,53478L,53479L,53480L,53481L,53482L,53483L,53484L, +53485L,53486L,53487L,53488L,53489L,53490L,53491L,53492L,53493L,53494L, +53495L,53496L,53497L,53498L,53499L,53500L,53501L,53502L,53503L,53504L, +53505L,53506L,53507L,53508L,53509L,53510L,53511L,53512L,53513L,53514L, +53515L,53516L,53517L,53518L,53519L,53520L,53521L,53522L,53523L,53524L, +53525L,53526L,53527L,53528L,53529L,53530L,53531L,53532L,53533L,53534L, +53535L,53536L,53537L,53538L,53539L,53540L,53541L,53542L,53543L,53544L, +53545L,53546L,53547L,53548L,53549L,53550L,53551L,53552L,53553L,53554L, +53555L,53556L,53557L,53558L,53559L,53560L,53561L,53562L,53563L,53564L, +53565L,53566L,53567L,53568L,53569L,53570L,53571L,53572L,53573L,53574L, +53575L,53576L,53577L,53578L,53579L,53580L,53581L,53582L,53583L,53584L, +53585L,53586L,53587L,53588L,53589L,53590L,53591L,53592L,53593L,53594L, +53595L,53596L,53597L,53598L,53599L,53600L,53601L,53602L,53603L,53604L, +53605L,53606L,53607L,53608L,53609L,53610L,53611L,53612L,53613L,53614L, +53615L,53616L,53617L,53618L,53619L,53620L,53621L,53622L,53623L,53624L, +53625L,53626L,53627L,53628L,53629L,53630L,53631L,53632L,53633L,53634L, +53635L,53636L,53637L,53638L,53639L,53640L,53641L,53642L,53643L,53644L, +53645L,53646L,53647L,53648L,53649L,53650L,53651L,53652L,53653L,53654L, +53655L,53656L,53657L,53658L,53659L,53660L,53661L,53662L,53663L,53664L, +53665L,53666L,53667L,53668L,53669L,53670L,53671L,53672L,53673L,53674L, +53675L,53676L,53677L,53678L,53679L,53680L,53681L,53682L,53683L,53684L, +53685L,53686L,53687L,53688L,53689L,53690L,53691L,53692L,53693L,53694L, +53695L,53696L,53697L,53698L,53699L,53700L,53701L,53702L,53703L,53704L, +53705L,53706L,53707L,53708L,53709L,53710L,53711L,53712L,53713L,53714L, +53715L,53716L,53717L,53718L,53719L,53720L,53721L,53722L,53723L,53724L, +53725L,53726L,53727L,53728L,53729L,53730L,53731L,53732L,53733L,53734L, +53735L,53736L,53737L,53738L,53739L,53740L,53741L,53742L,53743L,53744L, +53745L,53746L,53747L,53748L,53749L,53750L,53751L,53752L,53753L,53754L, +53755L,53756L,53757L,53758L,53759L,53760L,53761L,53762L,53763L,53764L, +53765L,53766L,53767L,53768L,53769L,53770L,53771L,53772L,53773L,53774L, +53775L,53776L,53777L,53778L,53779L,53780L,53781L,53782L,53783L,53784L, +53785L,53786L,53787L,53788L,53789L,53790L,53791L,53792L,53793L,53794L, +53795L,53796L,53797L,53798L,53799L,53800L,53801L,53802L,53803L,53804L, +53805L,53806L,53807L,53808L,53809L,53810L,53811L,53812L,53813L,53814L, +53815L,53816L,53817L,53818L,53819L,53820L,53821L,53822L,53823L,53824L, +53825L,53826L,53827L,53828L,53829L,53830L,53831L,53832L,53833L,53834L, +53835L,53836L,53837L,53838L,53839L,53840L,53841L,53842L,53843L,53844L, +53845L,53846L,53847L,53848L,53849L,53850L,53851L,53852L,53853L,53854L, +53855L,53856L,53857L,53858L,53859L,53860L,53861L,53862L,53863L,53864L, +53865L,53866L,53867L,53868L,53869L,53870L,53871L,53872L,53873L,53874L, +53875L,53876L,53877L,53878L,53879L,53880L,53881L,53882L,53883L,53884L, +53885L,53886L,53887L,53888L,53889L,53890L,53891L,53892L,53893L,53894L, +53895L,53896L,53897L,53898L,53899L,53900L,53901L,53902L,53903L,53904L, +53905L,53906L,53907L,53908L,53909L,53910L,53911L,53912L,53913L,53914L, +53915L,53916L,53917L,53918L,53919L,53920L,53921L,53922L,53923L,53924L, +53925L,53926L,53927L,53928L,53929L,53930L,53931L,53932L,53933L,53934L, +53935L,53936L,53937L,53938L,53939L,53940L,53941L,53942L,53943L,53944L, +53945L,53946L,53947L,53948L,53949L,53950L,53951L,53952L,53953L,53954L, +53955L,53956L,53957L,53958L,53959L,53960L,53961L,53962L,53963L,53964L, +53965L,53966L,53967L,53968L,53969L,53970L,53971L,53972L,53973L,53974L, +53975L,53976L,53977L,53978L,53979L,53980L,53981L,53982L,53983L,53984L, +53985L,53986L,53987L,53988L,53989L,53990L,53991L,53992L,53993L,53994L, +53995L,53996L,53997L,53998L,53999L,54000L,54001L,54002L,54003L,54004L, +54005L,54006L,54007L,54008L,54009L,54010L,54011L,54012L,54013L,54014L, +54015L,54016L,54017L,54018L,54019L,54020L,54021L,54022L,54023L,54024L, +54025L,54026L,54027L,54028L,54029L,54030L,54031L,54032L,54033L,54034L, +54035L,54036L,54037L,54038L,54039L,54040L,54041L,54042L,54043L,54044L, +54045L,54046L,54047L,54048L,54049L,54050L,54051L,54052L,54053L,54054L, +54055L,54056L,54057L,54058L,54059L,54060L,54061L,54062L,54063L,54064L, +54065L,54066L,54067L,54068L,54069L,54070L,54071L,54072L,54073L,54074L, +54075L,54076L,54077L,54078L,54079L,54080L,54081L,54082L,54083L,54084L, +54085L,54086L,54087L,54088L,54089L,54090L,54091L,54092L,54093L,54094L, +54095L,54096L,54097L,54098L,54099L,54100L,54101L,54102L,54103L,54104L, +54105L,54106L,54107L,54108L,54109L,54110L,54111L,54112L,54113L,54114L, +54115L,54116L,54117L,54118L,54119L,54120L,54121L,54122L,54123L,54124L, +54125L,54126L,54127L,54128L,54129L,54130L,54131L,54132L,54133L,54134L, +54135L,54136L,54137L,54138L,54139L,54140L,54141L,54142L,54143L,54144L, +54145L,54146L,54147L,54148L,54149L,54150L,54151L,54152L,54153L,54154L, +54155L,54156L,54157L,54158L,54159L,54160L,54161L,54162L,54163L,54164L, +54165L,54166L,54167L,54168L,54169L,54170L,54171L,54172L,54173L,54174L, +54175L,54176L,54177L,54178L,54179L,54180L,54181L,54182L,54183L,54184L, +54185L,54186L,54187L,54188L,54189L,54190L,54191L,54192L,54193L,54194L, +54195L,54196L,54197L,54198L,54199L,54200L,54201L,54202L,54203L,54204L, +54205L,54206L,54207L,54208L,54209L,54210L,54211L,54212L,54213L,54214L, +54215L,54216L,54217L,54218L,54219L,54220L,54221L,54222L,54223L,54224L, +54225L,54226L,54227L,54228L,54229L,54230L,54231L,54232L,54233L,54234L, +54235L,54236L,54237L,54238L,54239L,54240L,54241L,54242L,54243L,54244L, +54245L,54246L,54247L,54248L,54249L,54250L,54251L,54252L,54253L,54254L, +54255L,54256L,54257L,54258L,54259L,54260L,54261L,54262L,54263L,54264L, +54265L,54266L,54267L,54268L,54269L,54270L,54271L,54272L,54273L,54274L, +54275L,54276L,54277L,54278L,54279L,54280L,54281L,54282L,54283L,54284L, +54285L,54286L,54287L,54288L,54289L,54290L,54291L,54292L,54293L,54294L, +54295L,54296L,54297L,54298L,54299L,54300L,54301L,54302L,54303L,54304L, +54305L,54306L,54307L,54308L,54309L,54310L,54311L,54312L,54313L,54314L, +54315L,54316L,54317L,54318L,54319L,54320L,54321L,54322L,54323L,54324L, +54325L,54326L,54327L,54328L,54329L,54330L,54331L,54332L,54333L,54334L, +54335L,54336L,54337L,54338L,54339L,54340L,54341L,54342L,54343L,54344L, +54345L,54346L,54347L,54348L,54349L,54350L,54351L,54352L,54353L,54354L, +54355L,54356L,54357L,54358L,54359L,54360L,54361L,54362L,54363L,54364L, +54365L,54366L,54367L,54368L,54369L,54370L,54371L,54372L,54373L,54374L, +54375L,54376L,54377L,54378L,54379L,54380L,54381L,54382L,54383L,54384L, +54385L,54386L,54387L,54388L,54389L,54390L,54391L,54392L,54393L,54394L, +54395L,54396L,54397L,54398L,54399L,54400L,54401L,54402L,54403L,54404L, +54405L,54406L,54407L,54408L,54409L,54410L,54411L,54412L,54413L,54414L, +54415L,54416L,54417L,54418L,54419L,54420L,54421L,54422L,54423L,54424L, +54425L,54426L,54427L,54428L,54429L,54430L,54431L,54432L,54433L,54434L, +54435L,54436L,54437L,54438L,54439L,54440L,54441L,54442L,54443L,54444L, +54445L,54446L,54447L,54448L,54449L,54450L,54451L,54452L,54453L,54454L, +54455L,54456L,54457L,54458L,54459L,54460L,54461L,54462L,54463L,54464L, +54465L,54466L,54467L,54468L,54469L,54470L,54471L,54472L,54473L,54474L, +54475L,54476L,54477L,54478L,54479L,54480L,54481L,54482L,54483L,54484L, +54485L,54486L,54487L,54488L,54489L,54490L,54491L,54492L,54493L,54494L, +54495L,54496L,54497L,54498L,54499L,54500L,54501L,54502L,54503L,54504L, +54505L,54506L,54507L,54508L,54509L,54510L,54511L,54512L,54513L,54514L, +54515L,54516L,54517L,54518L,54519L,54520L,54521L,54522L,54523L,54524L, +54525L,54526L,54527L,54528L,54529L,54530L,54531L,54532L,54533L,54534L, +54535L,54536L,54537L,54538L,54539L,54540L,54541L,54542L,54543L,54544L, +54545L,54546L,54547L,54548L,54549L,54550L,54551L,54552L,54553L,54554L, +54555L,54556L,54557L,54558L,54559L,54560L,54561L,54562L,54563L,54564L, +54565L,54566L,54567L,54568L,54569L,54570L,54571L,54572L,54573L,54574L, +54575L,54576L,54577L,54578L,54579L,54580L,54581L,54582L,54583L,54584L, +54585L,54586L,54587L,54588L,54589L,54590L,54591L,54592L,54593L,54594L, +54595L,54596L,54597L,54598L,54599L,54600L,54601L,54602L,54603L,54604L, +54605L,54606L,54607L,54608L,54609L,54610L,54611L,54612L,54613L,54614L, +54615L,54616L,54617L,54618L,54619L,54620L,54621L,54622L,54623L,54624L, +54625L,54626L,54627L,54628L,54629L,54630L,54631L,54632L,54633L,54634L, +54635L,54636L,54637L,54638L,54639L,54640L,54641L,54642L,54643L,54644L, +54645L,54646L,54647L,54648L,54649L,54650L,54651L,54652L,54653L,54654L, +54655L,54656L,54657L,54658L,54659L,54660L,54661L,54662L,54663L,54664L, +54665L,54666L,54667L,54668L,54669L,54670L,54671L,54672L,54673L,54674L, +54675L,54676L,54677L,54678L,54679L,54680L,54681L,54682L,54683L,54684L, +54685L,54686L,54687L,54688L,54689L,54690L,54691L,54692L,54693L,54694L, +54695L,54696L,54697L,54698L,54699L,54700L,54701L,54702L,54703L,54704L, +54705L,54706L,54707L,54708L,54709L,54710L,54711L,54712L,54713L,54714L, +54715L,54716L,54717L,54718L,54719L,54720L,54721L,54722L,54723L,54724L, +54725L,54726L,54727L,54728L,54729L,54730L,54731L,54732L,54733L,54734L, +54735L,54736L,54737L,54738L,54739L,54740L,54741L,54742L,54743L,54744L, +54745L,54746L,54747L,54748L,54749L,54750L,54751L,54752L,54753L,54754L, +54755L,54756L,54757L,54758L,54759L,54760L,54761L,54762L,54763L,54764L, +54765L,54766L,54767L,54768L,54769L,54770L,54771L,54772L,54773L,54774L, +54775L,54776L,54777L,54778L,54779L,54780L,54781L,54782L,54783L,54784L, +54785L,54786L,54787L,54788L,54789L,54790L,54791L,54792L,54793L,54794L, +54795L,54796L,54797L,54798L,54799L,54800L,54801L,54802L,54803L,54804L, +54805L,54806L,54807L,54808L,54809L,54810L,54811L,54812L,54813L,54814L, +54815L,54816L,54817L,54818L,54819L,54820L,54821L,54822L,54823L,54824L, +54825L,54826L,54827L,54828L,54829L,54830L,54831L,54832L,54833L,54834L, +54835L,54836L,54837L,54838L,54839L,54840L,54841L,54842L,54843L,54844L, +54845L,54846L,54847L,54848L,54849L,54850L,54851L,54852L,54853L,54854L, +54855L,54856L,54857L,54858L,54859L,54860L,54861L,54862L,54863L,54864L, +54865L,54866L,54867L,54868L,54869L,54870L,54871L,54872L,54873L,54874L, +54875L,54876L,54877L,54878L,54879L,54880L,54881L,54882L,54883L,54884L, +54885L,54886L,54887L,54888L,54889L,54890L,54891L,54892L,54893L,54894L, +54895L,54896L,54897L,54898L,54899L,54900L,54901L,54902L,54903L,54904L, +54905L,54906L,54907L,54908L,54909L,54910L,54911L,54912L,54913L,54914L, +54915L,54916L,54917L,54918L,54919L,54920L,54921L,54922L,54923L,54924L, +54925L,54926L,54927L,54928L,54929L,54930L,54931L,54932L,54933L,54934L, +54935L,54936L,54937L,54938L,54939L,54940L,54941L,54942L,54943L,54944L, +54945L,54946L,54947L,54948L,54949L,54950L,54951L,54952L,54953L,54954L, +54955L,54956L,54957L,54958L,54959L,54960L,54961L,54962L,54963L,54964L, +54965L,54966L,54967L,54968L,54969L,54970L,54971L,54972L,54973L,54974L, +54975L,54976L,54977L,54978L,54979L,54980L,54981L,54982L,54983L,54984L, +54985L,54986L,54987L,54988L,54989L,54990L,54991L,54992L,54993L,54994L, +54995L,54996L,54997L,54998L,54999L,55000L,55001L,55002L,55003L,55004L, +55005L,55006L,55007L,55008L,55009L,55010L,55011L,55012L,55013L,55014L, +55015L,55016L,55017L,55018L,55019L,55020L,55021L,55022L,55023L,55024L, +55025L,55026L,55027L,55028L,55029L,55030L,55031L,55032L,55033L,55034L, +55035L,55036L,55037L,55038L,55039L,55040L,55041L,55042L,55043L,55044L, +55045L,55046L,55047L,55048L,55049L,55050L,55051L,55052L,55053L,55054L, +55055L,55056L,55057L,55058L,55059L,55060L,55061L,55062L,55063L,55064L, +55065L,55066L,55067L,55068L,55069L,55070L,55071L,55072L,55073L,55074L, +55075L,55076L,55077L,55078L,55079L,55080L,55081L,55082L,55083L,55084L, +55085L,55086L,55087L,55088L,55089L,55090L,55091L,55092L,55093L,55094L, +55095L,55096L,55097L,55098L,55099L,55100L,55101L,55102L,55103L,55104L, +55105L,55106L,55107L,55108L,55109L,55110L,55111L,55112L,55113L,55114L, +55115L,55116L,55117L,55118L,55119L,55120L,55121L,55122L,55123L,55124L, +55125L,55126L,55127L,55128L,55129L,55130L,55131L,55132L,55133L,55134L, +55135L,55136L,55137L,55138L,55139L,55140L,55141L,55142L,55143L,55144L, +55145L,55146L,55147L,55148L,55149L,55150L,55151L,55152L,55153L,55154L, +55155L,55156L,55157L,55158L,55159L,55160L,55161L,55162L,55163L,55164L, +55165L,55166L,55167L,55168L,55169L,55170L,55171L,55172L,55173L,55174L, +55175L,55176L,55177L,55178L,55179L,55180L,55181L,55182L,55183L,55184L, +55185L,55186L,55187L,55188L,55189L,55190L,55191L,55192L,55193L,55194L, +55195L,55196L,55197L,55198L,55199L,55200L,55201L,55202L,55203L,55204L, +55205L,55206L,55207L,55208L,55209L,55210L,55211L,55212L,55213L,55214L, +55215L,55216L,55217L,55218L,55219L,55220L,55221L,55222L,55223L,55224L, +55225L,55226L,55227L,55228L,55229L,55230L,55231L,55232L,55233L,55234L, +55235L,55236L,55237L,55238L,55239L,55240L,55241L,55242L,55243L,55244L, +55245L,55246L,55247L,55248L,55249L,55250L,55251L,55252L,55253L,55254L, +55255L,55256L,55257L,55258L,55259L,55260L,55261L,55262L,55263L,55264L, +55265L,55266L,55267L,55268L,55269L,55270L,55271L,55272L,55273L,55274L, +55275L,55276L,55277L,55278L,55279L,55280L,55281L,55282L,55283L,55284L, +55285L,55286L,55287L,55288L,55289L,55290L,55291L,55292L,55293L,55294L, +55295L,55296L,55297L,55298L,55299L,55300L,55301L,55302L,55303L,55304L, +55305L,55306L,55307L,55308L,55309L,55310L,55311L,55312L,55313L,55314L, +55315L,55316L,55317L,55318L,55319L,55320L,55321L,55322L,55323L,55324L, +55325L,55326L,55327L,55328L,55329L,55330L,55331L,55332L,55333L,55334L, +55335L,55336L,55337L,55338L,55339L,55340L,55341L,55342L,55343L,55344L, +55345L,55346L,55347L,55348L,55349L,55350L,55351L,55352L,55353L,55354L, +55355L,55356L,55357L,55358L,55359L,55360L,55361L,55362L,55363L,55364L, +55365L,55366L,55367L,55368L,55369L,55370L,55371L,55372L,55373L,55374L, +55375L,55376L,55377L,55378L,55379L,55380L,55381L,55382L,55383L,55384L, +55385L,55386L,55387L,55388L,55389L,55390L,55391L,55392L,55393L,55394L, +55395L,55396L,55397L,55398L,55399L,55400L,55401L,55402L,55403L,55404L, +55405L,55406L,55407L,55408L,55409L,55410L,55411L,55412L,55413L,55414L, +55415L,55416L,55417L,55418L,55419L,55420L,55421L,55422L,55423L,55424L, +55425L,55426L,55427L,55428L,55429L,55430L,55431L,55432L,55433L,55434L, +55435L,55436L,55437L,55438L,55439L,55440L,55441L,55442L,55443L,55444L, +55445L,55446L,55447L,55448L,55449L,55450L,55451L,55452L,55453L,55454L, +55455L,55456L,55457L,55458L,55459L,55460L,55461L,55462L,55463L,55464L, +55465L,55466L,55467L,55468L,55469L,55470L,55471L,55472L,55473L,55474L, +55475L,55476L,55477L,55478L,55479L,55480L,55481L,55482L,55483L,55484L, +55485L,55486L,55487L,55488L,55489L,55490L,55491L,55492L,55493L,55494L, +55495L,55496L,55497L,55498L,55499L,55500L,55501L,55502L,55503L,55504L, +55505L,55506L,55507L,55508L,55509L,55510L,55511L,55512L,55513L,55514L, +55515L,55516L,55517L,55518L,55519L,55520L,55521L,55522L,55523L,55524L, +55525L,55526L,55527L,55528L,55529L,55530L,55531L,55532L,55533L,55534L, +55535L,55536L,55537L,55538L,55539L,55540L,55541L,55542L,55543L,55544L, +55545L,55546L,55547L,55548L,55549L,55550L,55551L,55552L,55553L,55554L, +55555L,55556L,55557L,55558L,55559L,55560L,55561L,55562L,55563L,55564L, +55565L,55566L,55567L,55568L,55569L,55570L,55571L,55572L,55573L,55574L, +55575L,55576L,55577L,55578L,55579L,55580L,55581L,55582L,55583L,55584L, +55585L,55586L,55587L,55588L,55589L,55590L,55591L,55592L,55593L,55594L, +55595L,55596L,55597L,55598L,55599L,55600L,55601L,55602L,55603L,55604L, +55605L,55606L,55607L,55608L,55609L,55610L,55611L,55612L,55613L,55614L, +55615L,55616L,55617L,55618L,55619L,55620L,55621L,55622L,55623L,55624L, +55625L,55626L,55627L,55628L,55629L,55630L,55631L,55632L,55633L,55634L, +55635L,55636L,55637L,55638L,55639L,55640L,55641L,55642L,55643L,55644L, +55645L,55646L,55647L,55648L,55649L,55650L,55651L,55652L,55653L,55654L, +55655L,55656L,55657L,55658L,55659L,55660L,55661L,55662L,55663L,55664L, +55665L,55666L,55667L,55668L,55669L,55670L,55671L,55672L,55673L,55674L, +55675L,55676L,55677L,55678L,55679L,55680L,55681L,55682L,55683L,55684L, +55685L,55686L,55687L,55688L,55689L,55690L,55691L,55692L,55693L,55694L, +55695L,55696L,55697L,55698L,55699L,55700L,55701L,55702L,55703L,55704L, +55705L,55706L,55707L,55708L,55709L,55710L,55711L,55712L,55713L,55714L, +55715L,55716L,55717L,55718L,55719L,55720L,55721L,55722L,55723L,55724L, +55725L,55726L,55727L,55728L,55729L,55730L,55731L,55732L,55733L,55734L, +55735L,55736L,55737L,55738L,55739L,55740L,55741L,55742L,55743L,55744L, +55745L,55746L,55747L,55748L,55749L,55750L,55751L,55752L,55753L,55754L, +55755L,55756L,55757L,55758L,55759L,55760L,55761L,55762L,55763L,55764L, +55765L,55766L,55767L,55768L,55769L,55770L,55771L,55772L,55773L,55774L, +55775L,55776L,55777L,55778L,55779L,55780L,55781L,55782L,55783L,55784L, +55785L,55786L,55787L,55788L,55789L,55790L,55791L,55792L,55793L,55794L, +55795L,55796L,55797L,55798L,55799L,55800L,55801L,55802L,55803L,55804L, +55805L,55806L,55807L,55808L,55809L,55810L,55811L,55812L,55813L,55814L, +55815L,55816L,55817L,55818L,55819L,55820L,55821L,55822L,55823L,55824L, +55825L,55826L,55827L,55828L,55829L,55830L,55831L,55832L,55833L,55834L, +55835L,55836L,55837L,55838L,55839L,55840L,55841L,55842L,55843L,55844L, +55845L,55846L,55847L,55848L,55849L,55850L,55851L,55852L,55853L,55854L, +55855L,55856L,55857L,55858L,55859L,55860L,55861L,55862L,55863L,55864L, +55865L,55866L,55867L,55868L,55869L,55870L,55871L,55872L,55873L,55874L, +55875L,55876L,55877L,55878L,55879L,55880L,55881L,55882L,55883L,55884L, +55885L,55886L,55887L,55888L,55889L,55890L,55891L,55892L,55893L,55894L, +55895L,55896L,55897L,55898L,55899L,55900L,55901L,55902L,55903L,55904L, +55905L,55906L,55907L,55908L,55909L,55910L,55911L,55912L,55913L,55914L, +55915L,55916L,55917L,55918L,55919L,55920L,55921L,55922L,55923L,55924L, +55925L,55926L,55927L,55928L,55929L,55930L,55931L,55932L,55933L,55934L, +55935L,55936L,55937L,55938L,55939L,55940L,55941L,55942L,55943L,55944L, +55945L,55946L,55947L,55948L,55949L,55950L,55951L,55952L,55953L,55954L, +55955L,55956L,55957L,55958L,55959L,55960L,55961L,55962L,55963L,55964L, +55965L,55966L,55967L,55968L,55969L,55970L,55971L,55972L,55973L,55974L, +55975L,55976L,55977L,55978L,55979L,55980L,55981L,55982L,55983L,55984L, +55985L,55986L,55987L,55988L,55989L,55990L,55991L,55992L,55993L,55994L, +55995L,55996L,55997L,55998L,55999L,56000L,56001L,56002L,56003L,56004L, +56005L,56006L,56007L,56008L,56009L,56010L,56011L,56012L,56013L,56014L, +56015L,56016L,56017L,56018L,56019L,56020L,56021L,56022L,56023L,56024L, +56025L,56026L,56027L,56028L,56029L,56030L,56031L,56032L,56033L,56034L, +56035L,56036L,56037L,56038L,56039L,56040L,56041L,56042L,56043L,56044L, +56045L,56046L,56047L,56048L,56049L,56050L,56051L,56052L,56053L,56054L, +56055L,56056L,56057L,56058L,56059L,56060L,56061L,56062L,56063L,56064L, +56065L,56066L,56067L,56068L,56069L,56070L,56071L,56072L,56073L,56074L, +56075L,56076L,56077L,56078L,56079L,56080L,56081L,56082L,56083L,56084L, +56085L,56086L,56087L,56088L,56089L,56090L,56091L,56092L,56093L,56094L, +56095L,56096L,56097L,56098L,56099L,56100L,56101L,56102L,56103L,56104L, +56105L,56106L,56107L,56108L,56109L,56110L,56111L,56112L,56113L,56114L, +56115L,56116L,56117L,56118L,56119L,56120L,56121L,56122L,56123L,56124L, +56125L,56126L,56127L,56128L,56129L,56130L,56131L,56132L,56133L,56134L, +56135L,56136L,56137L,56138L,56139L,56140L,56141L,56142L,56143L,56144L, +56145L,56146L,56147L,56148L,56149L,56150L,56151L,56152L,56153L,56154L, +56155L,56156L,56157L,56158L,56159L,56160L,56161L,56162L,56163L,56164L, +56165L,56166L,56167L,56168L,56169L,56170L,56171L,56172L,56173L,56174L, +56175L,56176L,56177L,56178L,56179L,56180L,56181L,56182L,56183L,56184L, +56185L,56186L,56187L,56188L,56189L,56190L,56191L,56192L,56193L,56194L, +56195L,56196L,56197L,56198L,56199L,56200L,56201L,56202L,56203L,56204L, +56205L,56206L,56207L,56208L,56209L,56210L,56211L,56212L,56213L,56214L, +56215L,56216L,56217L,56218L,56219L,56220L,56221L,56222L,56223L,56224L, +56225L,56226L,56227L,56228L,56229L,56230L,56231L,56232L,56233L,56234L, +56235L,56236L,56237L,56238L,56239L,56240L,56241L,56242L,56243L,56244L, +56245L,56246L,56247L,56248L,56249L,56250L,56251L,56252L,56253L,56254L, +56255L,56256L,56257L,56258L,56259L,56260L,56261L,56262L,56263L,56264L, +56265L,56266L,56267L,56268L,56269L,56270L,56271L,56272L,56273L,56274L, +56275L,56276L,56277L,56278L,56279L,56280L,56281L,56282L,56283L,56284L, +56285L,56286L,56287L,56288L,56289L,56290L,56291L,56292L,56293L,56294L, +56295L,56296L,56297L,56298L,56299L,56300L,56301L,56302L,56303L,56304L, +56305L,56306L,56307L,56308L,56309L,56310L,56311L,56312L,56313L,56314L, +56315L,56316L,56317L,56318L,56319L,56320L,56321L,56322L,56323L,56324L, +56325L,56326L,56327L,56328L,56329L,56330L,56331L,56332L,56333L,56334L, +56335L,56336L,56337L,56338L,56339L,56340L,56341L,56342L,56343L,56344L, +56345L,56346L,56347L,56348L,56349L,56350L,56351L,56352L,56353L,56354L, +56355L,56356L,56357L,56358L,56359L,56360L,56361L,56362L,56363L,56364L, +56365L,56366L,56367L,56368L,56369L,56370L,56371L,56372L,56373L,56374L, +56375L,56376L,56377L,56378L,56379L,56380L,56381L,56382L,56383L,56384L, +56385L,56386L,56387L,56388L,56389L,56390L,56391L,56392L,56393L,56394L, +56395L,56396L,56397L,56398L,56399L,56400L,56401L,56402L,56403L,56404L, +56405L,56406L,56407L,56408L,56409L,56410L,56411L,56412L,56413L,56414L, +56415L,56416L,56417L,56418L,56419L,56420L,56421L,56422L,56423L,56424L, +56425L,56426L,56427L,56428L,56429L,56430L,56431L,56432L,56433L,56434L, +56435L,56436L,56437L,56438L,56439L,56440L,56441L,56442L,56443L,56444L, +56445L,56446L,56447L,56448L,56449L,56450L,56451L,56452L,56453L,56454L, +56455L,56456L,56457L,56458L,56459L,56460L,56461L,56462L,56463L,56464L, +56465L,56466L,56467L,56468L,56469L,56470L,56471L,56472L,56473L,56474L, +56475L,56476L,56477L,56478L,56479L,56480L,56481L,56482L,56483L,56484L, +56485L,56486L,56487L,56488L,56489L,56490L,56491L,56492L,56493L,56494L, +56495L,56496L,56497L,56498L,56499L,56500L,56501L,56502L,56503L,56504L, +56505L,56506L,56507L,56508L,56509L,56510L,56511L,56512L,56513L,56514L, +56515L,56516L,56517L,56518L,56519L,56520L,56521L,56522L,56523L,56524L, +56525L,56526L,56527L,56528L,56529L,56530L,56531L,56532L,56533L,56534L, +56535L,56536L,56537L,56538L,56539L,56540L,56541L,56542L,56543L,56544L, +56545L,56546L,56547L,56548L,56549L,56550L,56551L,56552L,56553L,56554L, +56555L,56556L,56557L,56558L,56559L,56560L,56561L,56562L,56563L,56564L, +56565L,56566L,56567L,56568L,56569L,56570L,56571L,56572L,56573L,56574L, +56575L,56576L,56577L,56578L,56579L,56580L,56581L,56582L,56583L,56584L, +56585L,56586L,56587L,56588L,56589L,56590L,56591L,56592L,56593L,56594L, +56595L,56596L,56597L,56598L,56599L,56600L,56601L,56602L,56603L,56604L, +56605L,56606L,56607L,56608L,56609L,56610L,56611L,56612L,56613L,56614L, +56615L,56616L,56617L,56618L,56619L,56620L,56621L,56622L,56623L,56624L, +56625L,56626L,56627L,56628L,56629L,56630L,56631L,56632L,56633L,56634L, +56635L,56636L,56637L,56638L,56639L,56640L,56641L,56642L,56643L,56644L, +56645L,56646L,56647L,56648L,56649L,56650L,56651L,56652L,56653L,56654L, +56655L,56656L,56657L,56658L,56659L,56660L,56661L,56662L,56663L,56664L, +56665L,56666L,56667L,56668L,56669L,56670L,56671L,56672L,56673L,56674L, +56675L,56676L,56677L,56678L,56679L,56680L,56681L,56682L,56683L,56684L, +56685L,56686L,56687L,56688L,56689L,56690L,56691L,56692L,56693L,56694L, +56695L,56696L,56697L,56698L,56699L,56700L,56701L,56702L,56703L,56704L, +56705L,56706L,56707L,56708L,56709L,56710L,56711L,56712L,56713L,56714L, +56715L,56716L,56717L,56718L,56719L,56720L,56721L,56722L,56723L,56724L, +56725L,56726L,56727L,56728L,56729L,56730L,56731L,56732L,56733L,56734L, +56735L,56736L,56737L,56738L,56739L,56740L,56741L,56742L,56743L,56744L, +56745L,56746L,56747L,56748L,56749L,56750L,56751L,56752L,56753L,56754L, +56755L,56756L,56757L,56758L,56759L,56760L,56761L,56762L,56763L,56764L, +56765L,56766L,56767L,56768L,56769L,56770L,56771L,56772L,56773L,56774L, +56775L,56776L,56777L,56778L,56779L,56780L,56781L,56782L,56783L,56784L, +56785L,56786L,56787L,56788L,56789L,56790L,56791L,56792L,56793L,56794L, +56795L,56796L,56797L,56798L,56799L,56800L,56801L,56802L,56803L,56804L, +56805L,56806L,56807L,56808L,56809L,56810L,56811L,56812L,56813L,56814L, +56815L,56816L,56817L,56818L,56819L,56820L,56821L,56822L,56823L,56824L, +56825L,56826L,56827L,56828L,56829L,56830L,56831L,56832L,56833L,56834L, +56835L,56836L,56837L,56838L,56839L,56840L,56841L,56842L,56843L,56844L, +56845L,56846L,56847L,56848L,56849L,56850L,56851L,56852L,56853L,56854L, +56855L,56856L,56857L,56858L,56859L,56860L,56861L,56862L,56863L,56864L, +56865L,56866L,56867L,56868L,56869L,56870L,56871L,56872L,56873L,56874L, +56875L,56876L,56877L,56878L,56879L,56880L,56881L,56882L,56883L,56884L, +56885L,56886L,56887L,56888L,56889L,56890L,56891L,56892L,56893L,56894L, +56895L,56896L,56897L,56898L,56899L,56900L,56901L,56902L,56903L,56904L, +56905L,56906L,56907L,56908L,56909L,56910L,56911L,56912L,56913L,56914L, +56915L,56916L,56917L,56918L,56919L,56920L,56921L,56922L,56923L,56924L, +56925L,56926L,56927L,56928L,56929L,56930L,56931L,56932L,56933L,56934L, +56935L,56936L,56937L,56938L,56939L,56940L,56941L,56942L,56943L,56944L, +56945L,56946L,56947L,56948L,56949L,56950L,56951L,56952L,56953L,56954L, +56955L,56956L,56957L,56958L,56959L,56960L,56961L,56962L,56963L,56964L, +56965L,56966L,56967L,56968L,56969L,56970L,56971L,56972L,56973L,56974L, +56975L,56976L,56977L,56978L,56979L,56980L,56981L,56982L,56983L,56984L, +56985L,56986L,56987L,56988L,56989L,56990L,56991L,56992L,56993L,56994L, +56995L,56996L,56997L,56998L,56999L,57000L,57001L,57002L,57003L,57004L, +57005L,57006L,57007L,57008L,57009L,57010L,57011L,57012L,57013L,57014L, +57015L,57016L,57017L,57018L,57019L,57020L,57021L,57022L,57023L,57024L, +57025L,57026L,57027L,57028L,57029L,57030L,57031L,57032L,57033L,57034L, +57035L,57036L,57037L,57038L,57039L,57040L,57041L,57042L,57043L,57044L, +57045L,57046L,57047L,57048L,57049L,57050L,57051L,57052L,57053L,57054L, +57055L,57056L,57057L,57058L,57059L,57060L,57061L,57062L,57063L,57064L, +57065L,57066L,57067L,57068L,57069L,57070L,57071L,57072L,57073L,57074L, +57075L,57076L,57077L,57078L,57079L,57080L,57081L,57082L,57083L,57084L, +57085L,57086L,57087L,57088L,57089L,57090L,57091L,57092L,57093L,57094L, +57095L,57096L,57097L,57098L,57099L,57100L,57101L,57102L,57103L,57104L, +57105L,57106L,57107L,57108L,57109L,57110L,57111L,57112L,57113L,57114L, +57115L,57116L,57117L,57118L,57119L,57120L,57121L,57122L,57123L,57124L, +57125L,57126L,57127L,57128L,57129L,57130L,57131L,57132L,57133L,57134L, +57135L,57136L,57137L,57138L,57139L,57140L,57141L,57142L,57143L,57144L, +57145L,57146L,57147L,57148L,57149L,57150L,57151L,57152L,57153L,57154L, +57155L,57156L,57157L,57158L,57159L,57160L,57161L,57162L,57163L,57164L, +57165L,57166L,57167L,57168L,57169L,57170L,57171L,57172L,57173L,57174L, +57175L,57176L,57177L,57178L,57179L,57180L,57181L,57182L,57183L,57184L, +57185L,57186L,57187L,57188L,57189L,57190L,57191L,57192L,57193L,57194L, +57195L,57196L,57197L,57198L,57199L,57200L,57201L,57202L,57203L,57204L, +57205L,57206L,57207L,57208L,57209L,57210L,57211L,57212L,57213L,57214L, +57215L,57216L,57217L,57218L,57219L,57220L,57221L,57222L,57223L,57224L, +57225L,57226L,57227L,57228L,57229L,57230L,57231L,57232L,57233L,57234L, +57235L,57236L,57237L,57238L,57239L,57240L,57241L,57242L,57243L,57244L, +57245L,57246L,57247L,57248L,57249L,57250L,57251L,57252L,57253L,57254L, +57255L,57256L,57257L,57258L,57259L,57260L,57261L,57262L,57263L,57264L, +57265L,57266L,57267L,57268L,57269L,57270L,57271L,57272L,57273L,57274L, +57275L,57276L,57277L,57278L,57279L,57280L,57281L,57282L,57283L,57284L, +57285L,57286L,57287L,57288L,57289L,57290L,57291L,57292L,57293L,57294L, +57295L,57296L,57297L,57298L,57299L,57300L,57301L,57302L,57303L,57304L, +57305L,57306L,57307L,57308L,57309L,57310L,57311L,57312L,57313L,57314L, +57315L,57316L,57317L,57318L,57319L,57320L,57321L,57322L,57323L,57324L, +57325L,57326L,57327L,57328L,57329L,57330L,57331L,57332L,57333L,57334L, +57335L,57336L,57337L,57338L,57339L,57340L,57341L,57342L,57343L,57344L, +57345L,57346L,57347L,57348L,57349L,57350L,57351L,57352L,57353L,57354L, +57355L,57356L,57357L,57358L,57359L,57360L,57361L,57362L,57363L,57364L, +57365L,57366L,57367L,57368L,57369L,57370L,57371L,57372L,57373L,57374L, +57375L,57376L,57377L,57378L,57379L,57380L,57381L,57382L,57383L,57384L, +57385L,57386L,57387L,57388L,57389L,57390L,57391L,57392L,57393L,57394L, +57395L,57396L,57397L,57398L,57399L,57400L,57401L,57402L,57403L,57404L, +57405L,57406L,57407L,57408L,57409L,57410L,57411L,57412L,57413L,57414L, +57415L,57416L,57417L,57418L,57419L,57420L,57421L,57422L,57423L,57424L, +57425L,57426L,57427L,57428L,57429L,57430L,57431L,57432L,57433L,57434L, +57435L,57436L,57437L,57438L,57439L,57440L,57441L,57442L,57443L,57444L, +57445L,57446L,57447L,57448L,57449L,57450L,57451L,57452L,57453L,57454L, +57455L,57456L,57457L,57458L,57459L,57460L,57461L,57462L,57463L,57464L, +57465L,57466L,57467L,57468L,57469L,57470L,57471L,57472L,57473L,57474L, +57475L,57476L,57477L,57478L,57479L,57480L,57481L,57482L,57483L,57484L, +57485L,57486L,57487L,57488L,57489L,57490L,57491L,57492L,57493L,57494L, +57495L,57496L,57497L,57498L,57499L,57500L,57501L,57502L,57503L,57504L, +57505L,57506L,57507L,57508L,57509L,57510L,57511L,57512L,57513L,57514L, +57515L,57516L,57517L,57518L,57519L,57520L,57521L,57522L,57523L,57524L, +57525L,57526L,57527L,57528L,57529L,57530L,57531L,57532L,57533L,57534L, +57535L,57536L,57537L,57538L,57539L,57540L,57541L,57542L,57543L,57544L, +57545L,57546L,57547L,57548L,57549L,57550L,57551L,57552L,57553L,57554L, +57555L,57556L,57557L,57558L,57559L,57560L,57561L,57562L,57563L,57564L, +57565L,57566L,57567L,57568L,57569L,57570L,57571L,57572L,57573L,57574L, +57575L,57576L,57577L,57578L,57579L,57580L,57581L,57582L,57583L,57584L, +57585L,57586L,57587L,57588L,57589L,57590L,57591L,57592L,57593L,57594L, +57595L,57596L,57597L,57598L,57599L,57600L,57601L,57602L,57603L,57604L, +57605L,57606L,57607L,57608L,57609L,57610L,57611L,57612L,57613L,57614L, +57615L,57616L,57617L,57618L,57619L,57620L,57621L,57622L,57623L,57624L, +57625L,57626L,57627L,57628L,57629L,57630L,57631L,57632L,57633L,57634L, +57635L,57636L,57637L,57638L,57639L,57640L,57641L,57642L,57643L,57644L, +57645L,57646L,57647L,57648L,57649L,57650L,57651L,57652L,57653L,57654L, +57655L,57656L,57657L,57658L,57659L,57660L,57661L,57662L,57663L,57664L, +57665L,57666L,57667L,57668L,57669L,57670L,57671L,57672L,57673L,57674L, +57675L,57676L,57677L,57678L,57679L,57680L,57681L,57682L,57683L,57684L, +57685L,57686L,57687L,57688L,57689L,57690L,57691L,57692L,57693L,57694L, +57695L,57696L,57697L,57698L,57699L,57700L,57701L,57702L,57703L,57704L, +57705L,57706L,57707L,57708L,57709L,57710L,57711L,57712L,57713L,57714L, +57715L,57716L,57717L,57718L,57719L,57720L,57721L,57722L,57723L,57724L, +57725L,57726L,57727L,57728L,57729L,57730L,57731L,57732L,57733L,57734L, +57735L,57736L,57737L,57738L,57739L,57740L,57741L,57742L,57743L,57744L, +57745L,57746L,57747L,57748L,57749L,57750L,57751L,57752L,57753L,57754L, +57755L,57756L,57757L,57758L,57759L,57760L,57761L,57762L,57763L,57764L, +57765L,57766L,57767L,57768L,57769L,57770L,57771L,57772L,57773L,57774L, +57775L,57776L,57777L,57778L,57779L,57780L,57781L,57782L,57783L,57784L, +57785L,57786L,57787L,57788L,57789L,57790L,57791L,57792L,57793L,57794L, +57795L,57796L,57797L,57798L,57799L,57800L,57801L,57802L,57803L,57804L, +57805L,57806L,57807L,57808L,57809L,57810L,57811L,57812L,57813L,57814L, +57815L,57816L,57817L,57818L,57819L,57820L,57821L,57822L,57823L,57824L, +57825L,57826L,57827L,57828L,57829L,57830L,57831L,57832L,57833L,57834L, +57835L,57836L,57837L,57838L,57839L,57840L,57841L,57842L,57843L,57844L, +57845L,57846L,57847L,57848L,57849L,57850L,57851L,57852L,57853L,57854L, +57855L,57856L,57857L,57858L,57859L,57860L,57861L,57862L,57863L,57864L, +57865L,57866L,57867L,57868L,57869L,57870L,57871L,57872L,57873L,57874L, +57875L,57876L,57877L,57878L,57879L,57880L,57881L,57882L,57883L,57884L, +57885L,57886L,57887L,57888L,57889L,57890L,57891L,57892L,57893L,57894L, +57895L,57896L,57897L,57898L,57899L,57900L,57901L,57902L,57903L,57904L, +57905L,57906L,57907L,57908L,57909L,57910L,57911L,57912L,57913L,57914L, +57915L,57916L,57917L,57918L,57919L,57920L,57921L,57922L,57923L,57924L, +57925L,57926L,57927L,57928L,57929L,57930L,57931L,57932L,57933L,57934L, +57935L,57936L,57937L,57938L,57939L,57940L,57941L,57942L,57943L,57944L, +57945L,57946L,57947L,57948L,57949L,57950L,57951L,57952L,57953L,57954L, +57955L,57956L,57957L,57958L,57959L,57960L,57961L,57962L,57963L,57964L, +57965L,57966L,57967L,57968L,57969L,57970L,57971L,57972L,57973L,57974L, +57975L,57976L,57977L,57978L,57979L,57980L,57981L,57982L,57983L,57984L, +57985L,57986L,57987L,57988L,57989L,57990L,57991L,57992L,57993L,57994L, +57995L,57996L,57997L,57998L,57999L,58000L,58001L,58002L,58003L,58004L, +58005L,58006L,58007L,58008L,58009L,58010L,58011L,58012L,58013L,58014L, +58015L,58016L,58017L,58018L,58019L,58020L,58021L,58022L,58023L,58024L, +58025L,58026L,58027L,58028L,58029L,58030L,58031L,58032L,58033L,58034L, +58035L,58036L,58037L,58038L,58039L,58040L,58041L,58042L,58043L,58044L, +58045L,58046L,58047L,58048L,58049L,58050L,58051L,58052L,58053L,58054L, +58055L,58056L,58057L,58058L,58059L,58060L,58061L,58062L,58063L,58064L, +58065L,58066L,58067L,58068L,58069L,58070L,58071L,58072L,58073L,58074L, +58075L,58076L,58077L,58078L,58079L,58080L,58081L,58082L,58083L,58084L, +58085L,58086L,58087L,58088L,58089L,58090L,58091L,58092L,58093L,58094L, +58095L,58096L,58097L,58098L,58099L,58100L,58101L,58102L,58103L,58104L, +58105L,58106L,58107L,58108L,58109L,58110L,58111L,58112L,58113L,58114L, +58115L,58116L,58117L,58118L,58119L,58120L,58121L,58122L,58123L,58124L, +58125L,58126L,58127L,58128L,58129L,58130L,58131L,58132L,58133L,58134L, +58135L,58136L,58137L,58138L,58139L,58140L,58141L,58142L,58143L,58144L, +58145L,58146L,58147L,58148L,58149L,58150L,58151L,58152L,58153L,58154L, +58155L,58156L,58157L,58158L,58159L,58160L,58161L,58162L,58163L,58164L, +58165L,58166L,58167L,58168L,58169L,58170L,58171L,58172L,58173L,58174L, +58175L,58176L,58177L,58178L,58179L,58180L,58181L,58182L,58183L,58184L, +58185L,58186L,58187L,58188L,58189L,58190L,58191L,58192L,58193L,58194L, +58195L,58196L,58197L,58198L,58199L,58200L,58201L,58202L,58203L,58204L, +58205L,58206L,58207L,58208L,58209L,58210L,58211L,58212L,58213L,58214L, +58215L,58216L,58217L,58218L,58219L,58220L,58221L,58222L,58223L,58224L, +58225L,58226L,58227L,58228L,58229L,58230L,58231L,58232L,58233L,58234L, +58235L,58236L,58237L,58238L,58239L,58240L,58241L,58242L,58243L,58244L, +58245L,58246L,58247L,58248L,58249L,58250L,58251L,58252L,58253L,58254L, +58255L,58256L,58257L,58258L,58259L,58260L,58261L,58262L,58263L,58264L, +58265L,58266L,58267L,58268L,58269L,58270L,58271L,58272L,58273L,58274L, +58275L,58276L,58277L,58278L,58279L,58280L,58281L,58282L,58283L,58284L, +58285L,58286L,58287L,58288L,58289L,58290L,58291L,58292L,58293L,58294L, +58295L,58296L,58297L,58298L,58299L,58300L,58301L,58302L,58303L,58304L, +58305L,58306L,58307L,58308L,58309L,58310L,58311L,58312L,58313L,58314L, +58315L,58316L,58317L,58318L,58319L,58320L,58321L,58322L,58323L,58324L, +58325L,58326L,58327L,58328L,58329L,58330L,58331L,58332L,58333L,58334L, +58335L,58336L,58337L,58338L,58339L,58340L,58341L,58342L,58343L,58344L, +58345L,58346L,58347L,58348L,58349L,58350L,58351L,58352L,58353L,58354L, +58355L,58356L,58357L,58358L,58359L,58360L,58361L,58362L,58363L,58364L, +58365L,58366L,58367L,58368L,58369L,58370L,58371L,58372L,58373L,58374L, +58375L,58376L,58377L,58378L,58379L,58380L,58381L,58382L,58383L,58384L, +58385L,58386L,58387L,58388L,58389L,58390L,58391L,58392L,58393L,58394L, +58395L,58396L,58397L,58398L,58399L,58400L,58401L,58402L,58403L,58404L, +58405L,58406L,58407L,58408L,58409L,58410L,58411L,58412L,58413L,58414L, +58415L,58416L,58417L,58418L,58419L,58420L,58421L,58422L,58423L,58424L, +58425L,58426L,58427L,58428L,58429L,58430L,58431L,58432L,58433L,58434L, +58435L,58436L,58437L,58438L,58439L,58440L,58441L,58442L,58443L,58444L, +58445L,58446L,58447L,58448L,58449L,58450L,58451L,58452L,58453L,58454L, +58455L,58456L,58457L,58458L,58459L,58460L,58461L,58462L,58463L,58464L, +58465L,58466L,58467L,58468L,58469L,58470L,58471L,58472L,58473L,58474L, +58475L,58476L,58477L,58478L,58479L,58480L,58481L,58482L,58483L,58484L, +58485L,58486L,58487L,58488L,58489L,58490L,58491L,58492L,58493L,58494L, +58495L,58496L,58497L,58498L,58499L,58500L,58501L,58502L,58503L,58504L, +58505L,58506L,58507L,58508L,58509L,58510L,58511L,58512L,58513L,58514L, +58515L,58516L,58517L,58518L,58519L,58520L,58521L,58522L,58523L,58524L, +58525L,58526L,58527L,58528L,58529L,58530L,58531L,58532L,58533L,58534L, +58535L,58536L,58537L,58538L,58539L,58540L,58541L,58542L,58543L,58544L, +58545L,58546L,58547L,58548L,58549L,58550L,58551L,58552L,58553L,58554L, +58555L,58556L,58557L,58558L,58559L,58560L,58561L,58562L,58563L,58564L, +58565L,58566L,58567L,58568L,58569L,58570L,58571L,58572L,58573L,58574L, +58575L,58576L,58577L,58578L,58579L,58580L,58581L,58582L,58583L,58584L, +58585L,58586L,58587L,58588L,58589L,58590L,58591L,58592L,58593L,58594L, +58595L,58596L,58597L,58598L,58599L,58600L,58601L,58602L,58603L,58604L, +58605L,58606L,58607L,58608L,58609L,58610L,58611L,58612L,58613L,58614L, +58615L,58616L,58617L,58618L,58619L,58620L,58621L,58622L,58623L,58624L, +58625L,58626L,58627L,58628L,58629L,58630L,58631L,58632L,58633L,58634L, +58635L,58636L,58637L,58638L,58639L,58640L,58641L,58642L,58643L,58644L, +58645L,58646L,58647L,58648L,58649L,58650L,58651L,58652L,58653L,58654L, +58655L,58656L,58657L,58658L,58659L,58660L,58661L,58662L,58663L,58664L, +58665L,58666L,58667L,58668L,58669L,58670L,58671L,58672L,58673L,58674L, +58675L,58676L,58677L,58678L,58679L,58680L,58681L,58682L,58683L,58684L, +58685L,58686L,58687L,58688L,58689L,58690L,58691L,58692L,58693L,58694L, +58695L,58696L,58697L,58698L,58699L,58700L,58701L,58702L,58703L,58704L, +58705L,58706L,58707L,58708L,58709L,58710L,58711L,58712L,58713L,58714L, +58715L,58716L,58717L,58718L,58719L,58720L,58721L,58722L,58723L,58724L, +58725L,58726L,58727L,58728L,58729L,58730L,58731L,58732L,58733L,58734L, +58735L,58736L,58737L,58738L,58739L,58740L,58741L,58742L,58743L,58744L, +58745L,58746L,58747L,58748L,58749L,58750L,58751L,58752L,58753L,58754L, +58755L,58756L,58757L,58758L,58759L,58760L,58761L,58762L,58763L,58764L, +58765L,58766L,58767L,58768L,58769L,58770L,58771L,58772L,58773L,58774L, +58775L,58776L,58777L,58778L,58779L,58780L,58781L,58782L,58783L,58784L, +58785L,58786L,58787L,58788L,58789L,58790L,58791L,58792L,58793L,58794L, +58795L,58796L,58797L,58798L,58799L,58800L,58801L,58802L,58803L,58804L, +58805L,58806L,58807L,58808L,58809L,58810L,58811L,58812L,58813L,58814L, +58815L,58816L,58817L,58818L,58819L,58820L,58821L,58822L,58823L,58824L, +58825L,58826L,58827L,58828L,58829L,58830L,58831L,58832L,58833L,58834L, +58835L,58836L,58837L,58838L,58839L,58840L,58841L,58842L,58843L,58844L, +58845L,58846L,58847L,58848L,58849L,58850L,58851L,58852L,58853L,58854L, +58855L,58856L,58857L,58858L,58859L,58860L,58861L,58862L,58863L,58864L, +58865L,58866L,58867L,58868L,58869L,58870L,58871L,58872L,58873L,58874L, +58875L,58876L,58877L,58878L,58879L,58880L,58881L,58882L,58883L,58884L, +58885L,58886L,58887L,58888L,58889L,58890L,58891L,58892L,58893L,58894L, +58895L,58896L,58897L,58898L,58899L,58900L,58901L,58902L,58903L,58904L, +58905L,58906L,58907L,58908L,58909L,58910L,58911L,58912L,58913L,58914L, +58915L,58916L,58917L,58918L,58919L,58920L,58921L,58922L,58923L,58924L, +58925L,58926L,58927L,58928L,58929L,58930L,58931L,58932L,58933L,58934L, +58935L,58936L,58937L,58938L,58939L,58940L,58941L,58942L,58943L,58944L, +58945L,58946L,58947L,58948L,58949L,58950L,58951L,58952L,58953L,58954L, +58955L,58956L,58957L,58958L,58959L,58960L,58961L,58962L,58963L,58964L, +58965L,58966L,58967L,58968L,58969L,58970L,58971L,58972L,58973L,58974L, +58975L,58976L,58977L,58978L,58979L,58980L,58981L,58982L,58983L,58984L, +58985L,58986L,58987L,58988L,58989L,58990L,58991L,58992L,58993L,58994L, +58995L,58996L,58997L,58998L,58999L,59000L,59001L,59002L,59003L,59004L, +59005L,59006L,59007L,59008L,59009L,59010L,59011L,59012L,59013L,59014L, +59015L,59016L,59017L,59018L,59019L,59020L,59021L,59022L,59023L,59024L, +59025L,59026L,59027L,59028L,59029L,59030L,59031L,59032L,59033L,59034L, +59035L,59036L,59037L,59038L,59039L,59040L,59041L,59042L,59043L,59044L, +59045L,59046L,59047L,59048L,59049L,59050L,59051L,59052L,59053L,59054L, +59055L,59056L,59057L,59058L,59059L,59060L,59061L,59062L,59063L,59064L, +59065L,59066L,59067L,59068L,59069L,59070L,59071L,59072L,59073L,59074L, +59075L,59076L,59077L,59078L,59079L,59080L,59081L,59082L,59083L,59084L, +59085L,59086L,59087L,59088L,59089L,59090L,59091L,59092L,59093L,59094L, +59095L,59096L,59097L,59098L,59099L,59100L,59101L,59102L,59103L,59104L, +59105L,59106L,59107L,59108L,59109L,59110L,59111L,59112L,59113L,59114L, +59115L,59116L,59117L,59118L,59119L,59120L,59121L,59122L,59123L,59124L, +59125L,59126L,59127L,59128L,59129L,59130L,59131L,59132L,59133L,59134L, +59135L,59136L,59137L,59138L,59139L,59140L,59141L,59142L,59143L,59144L, +59145L,59146L,59147L,59148L,59149L,59150L,59151L,59152L,59153L,59154L, +59155L,59156L,59157L,59158L,59159L,59160L,59161L,59162L,59163L,59164L, +59165L,59166L,59167L,59168L,59169L,59170L,59171L,59172L,59173L,59174L, +59175L,59176L,59177L,59178L,59179L,59180L,59181L,59182L,59183L,59184L, +59185L,59186L,59187L,59188L,59189L,59190L,59191L,59192L,59193L,59194L, +59195L,59196L,59197L,59198L,59199L,59200L,59201L,59202L,59203L,59204L, +59205L,59206L,59207L,59208L,59209L,59210L,59211L,59212L,59213L,59214L, +59215L,59216L,59217L,59218L,59219L,59220L,59221L,59222L,59223L,59224L, +59225L,59226L,59227L,59228L,59229L,59230L,59231L,59232L,59233L,59234L, +59235L,59236L,59237L,59238L,59239L,59240L,59241L,59242L,59243L,59244L, +59245L,59246L,59247L,59248L,59249L,59250L,59251L,59252L,59253L,59254L, +59255L,59256L,59257L,59258L,59259L,59260L,59261L,59262L,59263L,59264L, +59265L,59266L,59267L,59268L,59269L,59270L,59271L,59272L,59273L,59274L, +59275L,59276L,59277L,59278L,59279L,59280L,59281L,59282L,59283L,59284L, +59285L,59286L,59287L,59288L,59289L,59290L,59291L,59292L,59293L,59294L, +59295L,59296L,59297L,59298L,59299L,59300L,59301L,59302L,59303L,59304L, +59305L,59306L,59307L,59308L,59309L,59310L,59311L,59312L,59313L,59314L, +59315L,59316L,59317L,59318L,59319L,59320L,59321L,59322L,59323L,59324L, +59325L,59326L,59327L,59328L,59329L,59330L,59331L,59332L,59333L,59334L, +59335L,59336L,59337L,59338L,59339L,59340L,59341L,59342L,59343L,59344L, +59345L,59346L,59347L,59348L,59349L,59350L,59351L,59352L,59353L,59354L, +59355L,59356L,59357L,59358L,59359L,59360L,59361L,59362L,59363L,59364L, +59365L,59366L,59367L,59368L,59369L,59370L,59371L,59372L,59373L,59374L, +59375L,59376L,59377L,59378L,59379L,59380L,59381L,59382L,59383L,59384L, +59385L,59386L,59387L,59388L,59389L,59390L,59391L,59392L,59393L,59394L, +59395L,59396L,59397L,59398L,59399L,59400L,59401L,59402L,59403L,59404L, +59405L,59406L,59407L,59408L,59409L,59410L,59411L,59412L,59413L,59414L, +59415L,59416L,59417L,59418L,59419L,59420L,59421L,59422L,59423L,59424L, +59425L,59426L,59427L,59428L,59429L,59430L,59431L,59432L,59433L,59434L, +59435L,59436L,59437L,59438L,59439L,59440L,59441L,59442L,59443L,59444L, +59445L,59446L,59447L,59448L,59449L,59450L,59451L,59452L,59453L,59454L, +59455L,59456L,59457L,59458L,59459L,59460L,59461L,59462L,59463L,59464L, +59465L,59466L,59467L,59468L,59469L,59470L,59471L,59472L,59473L,59474L, +59475L,59476L,59477L,59478L,59479L,59480L,59481L,59482L,59483L,59484L, +59485L,59486L,59487L,59488L,59489L,59490L,59491L,59492L,59493L,59494L, +59495L,59496L,59497L,59498L,59499L,59500L,59501L,59502L,59503L,59504L, +59505L,59506L,59507L,59508L,59509L,59510L,59511L,59512L,59513L,59514L, +59515L,59516L,59517L,59518L,59519L,59520L,59521L,59522L,59523L,59524L, +59525L,59526L,59527L,59528L,59529L,59530L,59531L,59532L,59533L,59534L, +59535L,59536L,59537L,59538L,59539L,59540L,59541L,59542L,59543L,59544L, +59545L,59546L,59547L,59548L,59549L,59550L,59551L,59552L,59553L,59554L, +59555L,59556L,59557L,59558L,59559L,59560L,59561L,59562L,59563L,59564L, +59565L,59566L,59567L,59568L,59569L,59570L,59571L,59572L,59573L,59574L, +59575L,59576L,59577L,59578L,59579L,59580L,59581L,59582L,59583L,59584L, +59585L,59586L,59587L,59588L,59589L,59590L,59591L,59592L,59593L,59594L, +59595L,59596L,59597L,59598L,59599L,59600L,59601L,59602L,59603L,59604L, +59605L,59606L,59607L,59608L,59609L,59610L,59611L,59612L,59613L,59614L, +59615L,59616L,59617L,59618L,59619L,59620L,59621L,59622L,59623L,59624L, +59625L,59626L,59627L,59628L,59629L,59630L,59631L,59632L,59633L,59634L, +59635L,59636L,59637L,59638L,59639L,59640L,59641L,59642L,59643L,59644L, +59645L,59646L,59647L,59648L,59649L,59650L,59651L,59652L,59653L,59654L, +59655L,59656L,59657L,59658L,59659L,59660L,59661L,59662L,59663L,59664L, +59665L,59666L,59667L,59668L,59669L,59670L,59671L,59672L,59673L,59674L, +59675L,59676L,59677L,59678L,59679L,59680L,59681L,59682L,59683L,59684L, +59685L,59686L,59687L,59688L,59689L,59690L,59691L,59692L,59693L,59694L, +59695L,59696L,59697L,59698L,59699L,59700L,59701L,59702L,59703L,59704L, +59705L,59706L,59707L,59708L,59709L,59710L,59711L,59712L,59713L,59714L, +59715L,59716L,59717L,59718L,59719L,59720L,59721L,59722L,59723L,59724L, +59725L,59726L,59727L,59728L,59729L,59730L,59731L,59732L,59733L,59734L, +59735L,59736L,59737L,59738L,59739L,59740L,59741L,59742L,59743L,59744L, +59745L,59746L,59747L,59748L,59749L,59750L,59751L,59752L,59753L,59754L, +59755L,59756L,59757L,59758L,59759L,59760L,59761L,59762L,59763L,59764L, +59765L,59766L,59767L,59768L,59769L,59770L,59771L,59772L,59773L,59774L, +59775L,59776L,59777L,59778L,59779L,59780L,59781L,59782L,59783L,59784L, +59785L,59786L,59787L,59788L,59789L,59790L,59791L,59792L,59793L,59794L, +59795L,59796L,59797L,59798L,59799L,59800L,59801L,59802L,59803L,59804L, +59805L,59806L,59807L,59808L,59809L,59810L,59811L,59812L,59813L,59814L, +59815L,59816L,59817L,59818L,59819L,59820L,59821L,59822L,59823L,59824L, +59825L,59826L,59827L,59828L,59829L,59830L,59831L,59832L,59833L,59834L, +59835L,59836L,59837L,59838L,59839L,59840L,59841L,59842L,59843L,59844L, +59845L,59846L,59847L,59848L,59849L,59850L,59851L,59852L,59853L,59854L, +59855L,59856L,59857L,59858L,59859L,59860L,59861L,59862L,59863L,59864L, +59865L,59866L,59867L,59868L,59869L,59870L,59871L,59872L,59873L,59874L, +59875L,59876L,59877L,59878L,59879L,59880L,59881L,59882L,59883L,59884L, +59885L,59886L,59887L,59888L,59889L,59890L,59891L,59892L,59893L,59894L, +59895L,59896L,59897L,59898L,59899L,59900L,59901L,59902L,59903L,59904L, +59905L,59906L,59907L,59908L,59909L,59910L,59911L,59912L,59913L,59914L, +59915L,59916L,59917L,59918L,59919L,59920L,59921L,59922L,59923L,59924L, +59925L,59926L,59927L,59928L,59929L,59930L,59931L,59932L,59933L,59934L, +59935L,59936L,59937L,59938L,59939L,59940L,59941L,59942L,59943L,59944L, +59945L,59946L,59947L,59948L,59949L,59950L,59951L,59952L,59953L,59954L, +59955L,59956L,59957L,59958L,59959L,59960L,59961L,59962L,59963L,59964L, +59965L,59966L,59967L,59968L,59969L,59970L,59971L,59972L,59973L,59974L, +59975L,59976L,59977L,59978L,59979L,59980L,59981L,59982L,59983L,59984L, +59985L,59986L,59987L,59988L,59989L,59990L,59991L,59992L,59993L,59994L, +59995L,59996L,59997L,59998L,59999L,60000L,60001L,60002L,60003L,60004L, +60005L,60006L,60007L,60008L,60009L,60010L,60011L,60012L,60013L,60014L, +60015L,60016L,60017L,60018L,60019L,60020L,60021L,60022L,60023L,60024L, +60025L,60026L,60027L,60028L,60029L,60030L,60031L,60032L,60033L,60034L, +60035L,60036L,60037L,60038L,60039L,60040L,60041L,60042L,60043L,60044L, +60045L,60046L,60047L,60048L,60049L,60050L,60051L,60052L,60053L,60054L, +60055L,60056L,60057L,60058L,60059L,60060L,60061L,60062L,60063L,60064L, +60065L,60066L,60067L,60068L,60069L,60070L,60071L,60072L,60073L,60074L, +60075L,60076L,60077L,60078L,60079L,60080L,60081L,60082L,60083L,60084L, +60085L,60086L,60087L,60088L,60089L,60090L,60091L,60092L,60093L,60094L, +60095L,60096L,60097L,60098L,60099L,60100L,60101L,60102L,60103L,60104L, +60105L,60106L,60107L,60108L,60109L,60110L,60111L,60112L,60113L,60114L, +60115L,60116L,60117L,60118L,60119L,60120L,60121L,60122L,60123L,60124L, +60125L,60126L,60127L,60128L,60129L,60130L,60131L,60132L,60133L,60134L, +60135L,60136L,60137L,60138L,60139L,60140L,60141L,60142L,60143L,60144L, +60145L,60146L,60147L,60148L,60149L,60150L,60151L,60152L,60153L,60154L, +60155L,60156L,60157L,60158L,60159L,60160L,60161L,60162L,60163L,60164L, +60165L,60166L,60167L,60168L,60169L,60170L,60171L,60172L,60173L,60174L, +60175L,60176L,60177L,60178L,60179L,60180L,60181L,60182L,60183L,60184L, +60185L,60186L,60187L,60188L,60189L,60190L,60191L,60192L,60193L,60194L, +60195L,60196L,60197L,60198L,60199L,60200L,60201L,60202L,60203L,60204L, +60205L,60206L,60207L,60208L,60209L,60210L,60211L,60212L,60213L,60214L, +60215L,60216L,60217L,60218L,60219L,60220L,60221L,60222L,60223L,60224L, +60225L,60226L,60227L,60228L,60229L,60230L,60231L,60232L,60233L,60234L, +60235L,60236L,60237L,60238L,60239L,60240L,60241L,60242L,60243L,60244L, +60245L,60246L,60247L,60248L,60249L,60250L,60251L,60252L,60253L,60254L, +60255L,60256L,60257L,60258L,60259L,60260L,60261L,60262L,60263L,60264L, +60265L,60266L,60267L,60268L,60269L,60270L,60271L,60272L,60273L,60274L, +60275L,60276L,60277L,60278L,60279L,60280L,60281L,60282L,60283L,60284L, +60285L,60286L,60287L,60288L,60289L,60290L,60291L,60292L,60293L,60294L, +60295L,60296L,60297L,60298L,60299L,60300L,60301L,60302L,60303L,60304L, +60305L,60306L,60307L,60308L,60309L,60310L,60311L,60312L,60313L,60314L, +60315L,60316L,60317L,60318L,60319L,60320L,60321L,60322L,60323L,60324L, +60325L,60326L,60327L,60328L,60329L,60330L,60331L,60332L,60333L,60334L, +60335L,60336L,60337L,60338L,60339L,60340L,60341L,60342L,60343L,60344L, +60345L,60346L,60347L,60348L,60349L,60350L,60351L,60352L,60353L,60354L, +60355L,60356L,60357L,60358L,60359L,60360L,60361L,60362L,60363L,60364L, +60365L,60366L,60367L,60368L,60369L,60370L,60371L,60372L,60373L,60374L, +60375L,60376L,60377L,60378L,60379L,60380L,60381L,60382L,60383L,60384L, +60385L,60386L,60387L,60388L,60389L,60390L,60391L,60392L,60393L,60394L, +60395L,60396L,60397L,60398L,60399L,60400L,60401L,60402L,60403L,60404L, +60405L,60406L,60407L,60408L,60409L,60410L,60411L,60412L,60413L,60414L, +60415L,60416L,60417L,60418L,60419L,60420L,60421L,60422L,60423L,60424L, +60425L,60426L,60427L,60428L,60429L,60430L,60431L,60432L,60433L,60434L, +60435L,60436L,60437L,60438L,60439L,60440L,60441L,60442L,60443L,60444L, +60445L,60446L,60447L,60448L,60449L,60450L,60451L,60452L,60453L,60454L, +60455L,60456L,60457L,60458L,60459L,60460L,60461L,60462L,60463L,60464L, +60465L,60466L,60467L,60468L,60469L,60470L,60471L,60472L,60473L,60474L, +60475L,60476L,60477L,60478L,60479L,60480L,60481L,60482L,60483L,60484L, +60485L,60486L,60487L,60488L,60489L,60490L,60491L,60492L,60493L,60494L, +60495L,60496L,60497L,60498L,60499L,60500L,60501L,60502L,60503L,60504L, +60505L,60506L,60507L,60508L,60509L,60510L,60511L,60512L,60513L,60514L, +60515L,60516L,60517L,60518L,60519L,60520L,60521L,60522L,60523L,60524L, +60525L,60526L,60527L,60528L,60529L,60530L,60531L,60532L,60533L,60534L, +60535L,60536L,60537L,60538L,60539L,60540L,60541L,60542L,60543L,60544L, +60545L,60546L,60547L,60548L,60549L,60550L,60551L,60552L,60553L,60554L, +60555L,60556L,60557L,60558L,60559L,60560L,60561L,60562L,60563L,60564L, +60565L,60566L,60567L,60568L,60569L,60570L,60571L,60572L,60573L,60574L, +60575L,60576L,60577L,60578L,60579L,60580L,60581L,60582L,60583L,60584L, +60585L,60586L,60587L,60588L,60589L,60590L,60591L,60592L,60593L,60594L, +60595L,60596L,60597L,60598L,60599L,60600L,60601L,60602L,60603L,60604L, +60605L,60606L,60607L,60608L,60609L,60610L,60611L,60612L,60613L,60614L, +60615L,60616L,60617L,60618L,60619L,60620L,60621L,60622L,60623L,60624L, +60625L,60626L,60627L,60628L,60629L,60630L,60631L,60632L,60633L,60634L, +60635L,60636L,60637L,60638L,60639L,60640L,60641L,60642L,60643L,60644L, +60645L,60646L,60647L,60648L,60649L,60650L,60651L,60652L,60653L,60654L, +60655L,60656L,60657L,60658L,60659L,60660L,60661L,60662L,60663L,60664L, +60665L,60666L,60667L,60668L,60669L,60670L,60671L,60672L,60673L,60674L, +60675L,60676L,60677L,60678L,60679L,60680L,60681L,60682L,60683L,60684L, +60685L,60686L,60687L,60688L,60689L,60690L,60691L,60692L,60693L,60694L, +60695L,60696L,60697L,60698L,60699L,60700L,60701L,60702L,60703L,60704L, +60705L,60706L,60707L,60708L,60709L,60710L,60711L,60712L,60713L,60714L, +60715L,60716L,60717L,60718L,60719L,60720L,60721L,60722L,60723L,60724L, +60725L,60726L,60727L,60728L,60729L,60730L,60731L,60732L,60733L,60734L, +60735L,60736L,60737L,60738L,60739L,60740L,60741L,60742L,60743L,60744L, +60745L,60746L,60747L,60748L,60749L,60750L,60751L,60752L,60753L,60754L, +60755L,60756L,60757L,60758L,60759L,60760L,60761L,60762L,60763L,60764L, +60765L,60766L,60767L,60768L,60769L,60770L,60771L,60772L,60773L,60774L, +60775L,60776L,60777L,60778L,60779L,60780L,60781L,60782L,60783L,60784L, +60785L,60786L,60787L,60788L,60789L,60790L,60791L,60792L,60793L,60794L, +60795L,60796L,60797L,60798L,60799L,60800L,60801L,60802L,60803L,60804L, +60805L,60806L,60807L,60808L,60809L,60810L,60811L,60812L,60813L,60814L, +60815L,60816L,60817L,60818L,60819L,60820L,60821L,60822L,60823L,60824L, +60825L,60826L,60827L,60828L,60829L,60830L,60831L,60832L,60833L,60834L, +60835L,60836L,60837L,60838L,60839L,60840L,60841L,60842L,60843L,60844L, +60845L,60846L,60847L,60848L,60849L,60850L,60851L,60852L,60853L,60854L, +60855L,60856L,60857L,60858L,60859L,60860L,60861L,60862L,60863L,60864L, +60865L,60866L,60867L,60868L,60869L,60870L,60871L,60872L,60873L,60874L, +60875L,60876L,60877L,60878L,60879L,60880L,60881L,60882L,60883L,60884L, +60885L,60886L,60887L,60888L,60889L,60890L,60891L,60892L,60893L,60894L, +60895L,60896L,60897L,60898L,60899L,60900L,60901L,60902L,60903L,60904L, +60905L,60906L,60907L,60908L,60909L,60910L,60911L,60912L,60913L,60914L, +60915L,60916L,60917L,60918L,60919L,60920L,60921L,60922L,60923L,60924L, +60925L,60926L,60927L,60928L,60929L,60930L,60931L,60932L,60933L,60934L, +60935L,60936L,60937L,60938L,60939L,60940L,60941L,60942L,60943L,60944L, +60945L,60946L,60947L,60948L,60949L,60950L,60951L,60952L,60953L,60954L, +60955L,60956L,60957L,60958L,60959L,60960L,60961L,60962L,60963L,60964L, +60965L,60966L,60967L,60968L,60969L,60970L,60971L,60972L,60973L,60974L, +60975L,60976L,60977L,60978L,60979L,60980L,60981L,60982L,60983L,60984L, +60985L,60986L,60987L,60988L,60989L,60990L,60991L,60992L,60993L,60994L, +60995L,60996L,60997L,60998L,60999L,61000L,61001L,61002L,61003L,61004L, +61005L,61006L,61007L,61008L,61009L,61010L,61011L,61012L,61013L,61014L, +61015L,61016L,61017L,61018L,61019L,61020L,61021L,61022L,61023L,61024L, +61025L,61026L,61027L,61028L,61029L,61030L,61031L,61032L,61033L,61034L, +61035L,61036L,61037L,61038L,61039L,61040L,61041L,61042L,61043L,61044L, +61045L,61046L,61047L,61048L,61049L,61050L,61051L,61052L,61053L,61054L, +61055L,61056L,61057L,61058L,61059L,61060L,61061L,61062L,61063L,61064L, +61065L,61066L,61067L,61068L,61069L,61070L,61071L,61072L,61073L,61074L, +61075L,61076L,61077L,61078L,61079L,61080L,61081L,61082L,61083L,61084L, +61085L,61086L,61087L,61088L,61089L,61090L,61091L,61092L,61093L,61094L, +61095L,61096L,61097L,61098L,61099L,61100L,61101L,61102L,61103L,61104L, +61105L,61106L,61107L,61108L,61109L,61110L,61111L,61112L,61113L,61114L, +61115L,61116L,61117L,61118L,61119L,61120L,61121L,61122L,61123L,61124L, +61125L,61126L,61127L,61128L,61129L,61130L,61131L,61132L,61133L,61134L, +61135L,61136L,61137L,61138L,61139L,61140L,61141L,61142L,61143L,61144L, +61145L,61146L,61147L,61148L,61149L,61150L,61151L,61152L,61153L,61154L, +61155L,61156L,61157L,61158L,61159L,61160L,61161L,61162L,61163L,61164L, +61165L,61166L,61167L,61168L,61169L,61170L,61171L,61172L,61173L,61174L, +61175L,61176L,61177L,61178L,61179L,61180L,61181L,61182L,61183L,61184L, +61185L,61186L,61187L,61188L,61189L,61190L,61191L,61192L,61193L,61194L, +61195L,61196L,61197L,61198L,61199L,61200L,61201L,61202L,61203L,61204L, +61205L,61206L,61207L,61208L,61209L,61210L,61211L,61212L,61213L,61214L, +61215L,61216L,61217L,61218L,61219L,61220L,61221L,61222L,61223L,61224L, +61225L,61226L,61227L,61228L,61229L,61230L,61231L,61232L,61233L,61234L, +61235L,61236L,61237L,61238L,61239L,61240L,61241L,61242L,61243L,61244L, +61245L,61246L,61247L,61248L,61249L,61250L,61251L,61252L,61253L,61254L, +61255L,61256L,61257L,61258L,61259L,61260L,61261L,61262L,61263L,61264L, +61265L,61266L,61267L,61268L,61269L,61270L,61271L,61272L,61273L,61274L, +61275L,61276L,61277L,61278L,61279L,61280L,61281L,61282L,61283L,61284L, +61285L,61286L,61287L,61288L,61289L,61290L,61291L,61292L,61293L,61294L, +61295L,61296L,61297L,61298L,61299L,61300L,61301L,61302L,61303L,61304L, +61305L,61306L,61307L,61308L,61309L,61310L,61311L,61312L,61313L,61314L, +61315L,61316L,61317L,61318L,61319L,61320L,61321L,61322L,61323L,61324L, +61325L,61326L,61327L,61328L,61329L,61330L,61331L,61332L,61333L,61334L, +61335L,61336L,61337L,61338L,61339L,61340L,61341L,61342L,61343L,61344L, +61345L,61346L,61347L,61348L,61349L,61350L,61351L,61352L,61353L,61354L, +61355L,61356L,61357L,61358L,61359L,61360L,61361L,61362L,61363L,61364L, +61365L,61366L,61367L,61368L,61369L,61370L,61371L,61372L,61373L,61374L, +61375L,61376L,61377L,61378L,61379L,61380L,61381L,61382L,61383L,61384L, +61385L,61386L,61387L,61388L,61389L,61390L,61391L,61392L,61393L,61394L, +61395L,61396L,61397L,61398L,61399L,61400L,61401L,61402L,61403L,61404L, +61405L,61406L,61407L,61408L,61409L,61410L,61411L,61412L,61413L,61414L, +61415L,61416L,61417L,61418L,61419L,61420L,61421L,61422L,61423L,61424L, +61425L,61426L,61427L,61428L,61429L,61430L,61431L,61432L,61433L,61434L, +61435L,61436L,61437L,61438L,61439L,61440L,61441L,61442L,61443L,61444L, +61445L,61446L,61447L,61448L,61449L,61450L,61451L,61452L,61453L,61454L, +61455L,61456L,61457L,61458L,61459L,61460L,61461L,61462L,61463L,61464L, +61465L,61466L,61467L,61468L,61469L,61470L,61471L,61472L,61473L,61474L, +61475L,61476L,61477L,61478L,61479L,61480L,61481L,61482L,61483L,61484L, +61485L,61486L,61487L,61488L,61489L,61490L,61491L,61492L,61493L,61494L, +61495L,61496L,61497L,61498L,61499L,61500L,61501L,61502L,61503L,61504L, +61505L,61506L,61507L,61508L,61509L,61510L,61511L,61512L,61513L,61514L, +61515L,61516L,61517L,61518L,61519L,61520L,61521L,61522L,61523L,61524L, +61525L,61526L,61527L,61528L,61529L,61530L,61531L,61532L,61533L,61534L, +61535L,61536L,61537L,61538L,61539L,61540L,61541L,61542L,61543L,61544L, +61545L,61546L,61547L,61548L,61549L,61550L,61551L,61552L,61553L,61554L, +61555L,61556L,61557L,61558L,61559L,61560L,61561L,61562L,61563L,61564L, +61565L,61566L,61567L,61568L,61569L,61570L,61571L,61572L,61573L,61574L, +61575L,61576L,61577L,61578L,61579L,61580L,61581L,61582L,61583L,61584L, +61585L,61586L,61587L,61588L,61589L,61590L,61591L,61592L,61593L,61594L, +61595L,61596L,61597L,61598L,61599L,61600L,61601L,61602L,61603L,61604L, +61605L,61606L,61607L,61608L,61609L,61610L,61611L,61612L,61613L,61614L, +61615L,61616L,61617L,61618L,61619L,61620L,61621L,61622L,61623L,61624L, +61625L,61626L,61627L,61628L,61629L,61630L,61631L,61632L,61633L,61634L, +61635L,61636L,61637L,61638L,61639L,61640L,61641L,61642L,61643L,61644L, +61645L,61646L,61647L,61648L,61649L,61650L,61651L,61652L,61653L,61654L, +61655L,61656L,61657L,61658L,61659L,61660L,61661L,61662L,61663L,61664L, +61665L,61666L,61667L,61668L,61669L,61670L,61671L,61672L,61673L,61674L, +61675L,61676L,61677L,61678L,61679L,61680L,61681L,61682L,61683L,61684L, +61685L,61686L,61687L,61688L,61689L,61690L,61691L,61692L,61693L,61694L, +61695L,61696L,61697L,61698L,61699L,61700L,61701L,61702L,61703L,61704L, +61705L,61706L,61707L,61708L,61709L,61710L,61711L,61712L,61713L,61714L, +61715L,61716L,61717L,61718L,61719L,61720L,61721L,61722L,61723L,61724L, +61725L,61726L,61727L,61728L,61729L,61730L,61731L,61732L,61733L,61734L, +61735L,61736L,61737L,61738L,61739L,61740L,61741L,61742L,61743L,61744L, +61745L,61746L,61747L,61748L,61749L,61750L,61751L,61752L,61753L,61754L, +61755L,61756L,61757L,61758L,61759L,61760L,61761L,61762L,61763L,61764L, +61765L,61766L,61767L,61768L,61769L,61770L,61771L,61772L,61773L,61774L, +61775L,61776L,61777L,61778L,61779L,61780L,61781L,61782L,61783L,61784L, +61785L,61786L,61787L,61788L,61789L,61790L,61791L,61792L,61793L,61794L, +61795L,61796L,61797L,61798L,61799L,61800L,61801L,61802L,61803L,61804L, +61805L,61806L,61807L,61808L,61809L,61810L,61811L,61812L,61813L,61814L, +61815L,61816L,61817L,61818L,61819L,61820L,61821L,61822L,61823L,61824L, +61825L,61826L,61827L,61828L,61829L,61830L,61831L,61832L,61833L,61834L, +61835L,61836L,61837L,61838L,61839L,61840L,61841L,61842L,61843L,61844L, +61845L,61846L,61847L,61848L,61849L,61850L,61851L,61852L,61853L,61854L, +61855L,61856L,61857L,61858L,61859L,61860L,61861L,61862L,61863L,61864L, +61865L,61866L,61867L,61868L,61869L,61870L,61871L,61872L,61873L,61874L, +61875L,61876L,61877L,61878L,61879L,61880L,61881L,61882L,61883L,61884L, +61885L,61886L,61887L,61888L,61889L,61890L,61891L,61892L,61893L,61894L, +61895L,61896L,61897L,61898L,61899L,61900L,61901L,61902L,61903L,61904L, +61905L,61906L,61907L,61908L,61909L,61910L,61911L,61912L,61913L,61914L, +61915L,61916L,61917L,61918L,61919L,61920L,61921L,61922L,61923L,61924L, +61925L,61926L,61927L,61928L,61929L,61930L,61931L,61932L,61933L,61934L, +61935L,61936L,61937L,61938L,61939L,61940L,61941L,61942L,61943L,61944L, +61945L,61946L,61947L,61948L,61949L,61950L,61951L,61952L,61953L,61954L, +61955L,61956L,61957L,61958L,61959L,61960L,61961L,61962L,61963L,61964L, +61965L,61966L,61967L,61968L,61969L,61970L,61971L,61972L,61973L,61974L, +61975L,61976L,61977L,61978L,61979L,61980L,61981L,61982L,61983L,61984L, +61985L,61986L,61987L,61988L,61989L,61990L,61991L,61992L,61993L,61994L, +61995L,61996L,61997L,61998L,61999L,62000L,62001L,62002L,62003L,62004L, +62005L,62006L,62007L,62008L,62009L,62010L,62011L,62012L,62013L,62014L, +62015L,62016L,62017L,62018L,62019L,62020L,62021L,62022L,62023L,62024L, +62025L,62026L,62027L,62028L,62029L,62030L,62031L,62032L,62033L,62034L, +62035L,62036L,62037L,62038L,62039L,62040L,62041L,62042L,62043L,62044L, +62045L,62046L,62047L,62048L,62049L,62050L,62051L,62052L,62053L,62054L, +62055L,62056L,62057L,62058L,62059L,62060L,62061L,62062L,62063L,62064L, +62065L,62066L,62067L,62068L,62069L,62070L,62071L,62072L,62073L,62074L, +62075L,62076L,62077L,62078L,62079L,62080L,62081L,62082L,62083L,62084L, +62085L,62086L,62087L,62088L,62089L,62090L,62091L,62092L,62093L,62094L, +62095L,62096L,62097L,62098L,62099L,62100L,62101L,62102L,62103L,62104L, +62105L,62106L,62107L,62108L,62109L,62110L,62111L,62112L,62113L,62114L, +62115L,62116L,62117L,62118L,62119L,62120L,62121L,62122L,62123L,62124L, +62125L,62126L,62127L,62128L,62129L,62130L,62131L,62132L,62133L,62134L, +62135L,62136L,62137L,62138L,62139L,62140L,62141L,62142L,62143L,62144L, +62145L,62146L,62147L,62148L,62149L,62150L,62151L,62152L,62153L,62154L, +62155L,62156L,62157L,62158L,62159L,62160L,62161L,62162L,62163L,62164L, +62165L,62166L,62167L,62168L,62169L,62170L,62171L,62172L,62173L,62174L, +62175L,62176L,62177L,62178L,62179L,62180L,62181L,62182L,62183L,62184L, +62185L,62186L,62187L,62188L,62189L,62190L,62191L,62192L,62193L,62194L, +62195L,62196L,62197L,62198L,62199L,62200L,62201L,62202L,62203L,62204L, +62205L,62206L,62207L,62208L,62209L,62210L,62211L,62212L,62213L,62214L, +62215L,62216L,62217L,62218L,62219L,62220L,62221L,62222L,62223L,62224L, +62225L,62226L,62227L,62228L,62229L,62230L,62231L,62232L,62233L,62234L, +62235L,62236L,62237L,62238L,62239L,62240L,62241L,62242L,62243L,62244L, +62245L,62246L,62247L,62248L,62249L,62250L,62251L,62252L,62253L,62254L, +62255L,62256L,62257L,62258L,62259L,62260L,62261L,62262L,62263L,62264L, +62265L,62266L,62267L,62268L,62269L,62270L,62271L,62272L,62273L,62274L, +62275L,62276L,62277L,62278L,62279L,62280L,62281L,62282L,62283L,62284L, +62285L,62286L,62287L,62288L,62289L,62290L,62291L,62292L,62293L,62294L, +62295L,62296L,62297L,62298L,62299L,62300L,62301L,62302L,62303L,62304L, +62305L,62306L,62307L,62308L,62309L,62310L,62311L,62312L,62313L,62314L, +62315L,62316L,62317L,62318L,62319L,62320L,62321L,62322L,62323L,62324L, +62325L,62326L,62327L,62328L,62329L,62330L,62331L,62332L,62333L,62334L, +62335L,62336L,62337L,62338L,62339L,62340L,62341L,62342L,62343L,62344L, +62345L,62346L,62347L,62348L,62349L,62350L,62351L,62352L,62353L,62354L, +62355L,62356L,62357L,62358L,62359L,62360L,62361L,62362L,62363L,62364L, +62365L,62366L,62367L,62368L,62369L,62370L,62371L,62372L,62373L,62374L, +62375L,62376L,62377L,62378L,62379L,62380L,62381L,62382L,62383L,62384L, +62385L,62386L,62387L,62388L,62389L,62390L,62391L,62392L,62393L,62394L, +62395L,62396L,62397L,62398L,62399L,62400L,62401L,62402L,62403L,62404L, +62405L,62406L,62407L,62408L,62409L,62410L,62411L,62412L,62413L,62414L, +62415L,62416L,62417L,62418L,62419L,62420L,62421L,62422L,62423L,62424L, +62425L,62426L,62427L,62428L,62429L,62430L,62431L,62432L,62433L,62434L, +62435L,62436L,62437L,62438L,62439L,62440L,62441L,62442L,62443L,62444L, +62445L,62446L,62447L,62448L,62449L,62450L,62451L,62452L,62453L,62454L, +62455L,62456L,62457L,62458L,62459L,62460L,62461L,62462L,62463L,62464L, +62465L,62466L,62467L,62468L,62469L,62470L,62471L,62472L,62473L,62474L, +62475L,62476L,62477L,62478L,62479L,62480L,62481L,62482L,62483L,62484L, +62485L,62486L,62487L,62488L,62489L,62490L,62491L,62492L,62493L,62494L, +62495L,62496L,62497L,62498L,62499L,62500L,62501L,62502L,62503L,62504L, +62505L,62506L,62507L,62508L,62509L,62510L,62511L,62512L,62513L,62514L, +62515L,62516L,62517L,62518L,62519L,62520L,62521L,62522L,62523L,62524L, +62525L,62526L,62527L,62528L,62529L,62530L,62531L,62532L,62533L,62534L, +62535L,62536L,62537L,62538L,62539L,62540L,62541L,62542L,62543L,62544L, +62545L,62546L,62547L,62548L,62549L,62550L,62551L,62552L,62553L,62554L, +62555L,62556L,62557L,62558L,62559L,62560L,62561L,62562L,62563L,62564L, +62565L,62566L,62567L,62568L,62569L,62570L,62571L,62572L,62573L,62574L, +62575L,62576L,62577L,62578L,62579L,62580L,62581L,62582L,62583L,62584L, +62585L,62586L,62587L,62588L,62589L,62590L,62591L,62592L,62593L,62594L, +62595L,62596L,62597L,62598L,62599L,62600L,62601L,62602L,62603L,62604L, +62605L,62606L,62607L,62608L,62609L,62610L,62611L,62612L,62613L,62614L, +62615L,62616L,62617L,62618L,62619L,62620L,62621L,62622L,62623L,62624L, +62625L,62626L,62627L,62628L,62629L,62630L,62631L,62632L,62633L,62634L, +62635L,62636L,62637L,62638L,62639L,62640L,62641L,62642L,62643L,62644L, +62645L,62646L,62647L,62648L,62649L,62650L,62651L,62652L,62653L,62654L, +62655L,62656L,62657L,62658L,62659L,62660L,62661L,62662L,62663L,62664L, +62665L,62666L,62667L,62668L,62669L,62670L,62671L,62672L,62673L,62674L, +62675L,62676L,62677L,62678L,62679L,62680L,62681L,62682L,62683L,62684L, +62685L,62686L,62687L,62688L,62689L,62690L,62691L,62692L,62693L,62694L, +62695L,62696L,62697L,62698L,62699L,62700L,62701L,62702L,62703L,62704L, +62705L,62706L,62707L,62708L,62709L,62710L,62711L,62712L,62713L,62714L, +62715L,62716L,62717L,62718L,62719L,62720L,62721L,62722L,62723L,62724L, +62725L,62726L,62727L,62728L,62729L,62730L,62731L,62732L,62733L,62734L, +62735L,62736L,62737L,62738L,62739L,62740L,62741L,62742L,62743L,62744L, +62745L,62746L,62747L,62748L,62749L,62750L,62751L,62752L,62753L,62754L, +62755L,62756L,62757L,62758L,62759L,62760L,62761L,62762L,62763L,62764L, +62765L,62766L,62767L,62768L,62769L,62770L,62771L,62772L,62773L,62774L, +62775L,62776L,62777L,62778L,62779L,62780L,62781L,62782L,62783L,62784L, +62785L,62786L,62787L,62788L,62789L,62790L,62791L,62792L,62793L,62794L, +62795L,62796L,62797L,62798L,62799L,62800L,62801L,62802L,62803L,62804L, +62805L,62806L,62807L,62808L,62809L,62810L,62811L,62812L,62813L,62814L, +62815L,62816L,62817L,62818L,62819L,62820L,62821L,62822L,62823L,62824L, +62825L,62826L,62827L,62828L,62829L,62830L,62831L,62832L,62833L,62834L, +62835L,62836L,62837L,62838L,62839L,62840L,62841L,62842L,62843L,62844L, +62845L,62846L,62847L,62848L,62849L,62850L,62851L,62852L,62853L,62854L, +62855L,62856L,62857L,62858L,62859L,62860L,62861L,62862L,62863L,62864L, +62865L,62866L,62867L,62868L,62869L,62870L,62871L,62872L,62873L,62874L, +62875L,62876L,62877L,62878L,62879L,62880L,62881L,62882L,62883L,62884L, +62885L,62886L,62887L,62888L,62889L,62890L,62891L,62892L,62893L,62894L, +62895L,62896L,62897L,62898L,62899L,62900L,62901L,62902L,62903L,62904L, +62905L,62906L,62907L,62908L,62909L,62910L,62911L,62912L,62913L,62914L, +62915L,62916L,62917L,62918L,62919L,62920L,62921L,62922L,62923L,62924L, +62925L,62926L,62927L,62928L,62929L,62930L,62931L,62932L,62933L,62934L, +62935L,62936L,62937L,62938L,62939L,62940L,62941L,62942L,62943L,62944L, +62945L,62946L,62947L,62948L,62949L,62950L,62951L,62952L,62953L,62954L, +62955L,62956L,62957L,62958L,62959L,62960L,62961L,62962L,62963L,62964L, +62965L,62966L,62967L,62968L,62969L,62970L,62971L,62972L,62973L,62974L, +62975L,62976L,62977L,62978L,62979L,62980L,62981L,62982L,62983L,62984L, +62985L,62986L,62987L,62988L,62989L,62990L,62991L,62992L,62993L,62994L, +62995L,62996L,62997L,62998L,62999L,63000L,63001L,63002L,63003L,63004L, +63005L,63006L,63007L,63008L,63009L,63010L,63011L,63012L,63013L,63014L, +63015L,63016L,63017L,63018L,63019L,63020L,63021L,63022L,63023L,63024L, +63025L,63026L,63027L,63028L,63029L,63030L,63031L,63032L,63033L,63034L, +63035L,63036L,63037L,63038L,63039L,63040L,63041L,63042L,63043L,63044L, +63045L,63046L,63047L,63048L,63049L,63050L,63051L,63052L,63053L,63054L, +63055L,63056L,63057L,63058L,63059L,63060L,63061L,63062L,63063L,63064L, +63065L,63066L,63067L,63068L,63069L,63070L,63071L,63072L,63073L,63074L, +63075L,63076L,63077L,63078L,63079L,63080L,63081L,63082L,63083L,63084L, +63085L,63086L,63087L,63088L,63089L,63090L,63091L,63092L,63093L,63094L, +63095L,63096L,63097L,63098L,63099L,63100L,63101L,63102L,63103L,63104L, +63105L,63106L,63107L,63108L,63109L,63110L,63111L,63112L,63113L,63114L, +63115L,63116L,63117L,63118L,63119L,63120L,63121L,63122L,63123L,63124L, +63125L,63126L,63127L,63128L,63129L,63130L,63131L,63132L,63133L,63134L, +63135L,63136L,63137L,63138L,63139L,63140L,63141L,63142L,63143L,63144L, +63145L,63146L,63147L,63148L,63149L,63150L,63151L,63152L,63153L,63154L, +63155L,63156L,63157L,63158L,63159L,63160L,63161L,63162L,63163L,63164L, +63165L,63166L,63167L,63168L,63169L,63170L,63171L,63172L,63173L,63174L, +63175L,63176L,63177L,63178L,63179L,63180L,63181L,63182L,63183L,63184L, +63185L,63186L,63187L,63188L,63189L,63190L,63191L,63192L,63193L,63194L, +63195L,63196L,63197L,63198L,63199L,63200L,63201L,63202L,63203L,63204L, +63205L,63206L,63207L,63208L,63209L,63210L,63211L,63212L,63213L,63214L, +63215L,63216L,63217L,63218L,63219L,63220L,63221L,63222L,63223L,63224L, +63225L,63226L,63227L,63228L,63229L,63230L,63231L,63232L,63233L,63234L, +63235L,63236L,63237L,63238L,63239L,63240L,63241L,63242L,63243L,63244L, +63245L,63246L,63247L,63248L,63249L,63250L,63251L,63252L,63253L,63254L, +63255L,63256L,63257L,63258L,63259L,63260L,63261L,63262L,63263L,63264L, +63265L,63266L,63267L,63268L,63269L,63270L,63271L,63272L,63273L,63274L, +63275L,63276L,63277L,63278L,63279L,63280L,63281L,63282L,63283L,63284L, +63285L,63286L,63287L,63288L,63289L,63290L,63291L,63292L,63293L,63294L, +63295L,63296L,63297L,63298L,63299L,63300L,63301L,63302L,63303L,63304L, +63305L,63306L,63307L,63308L,63309L,63310L,63311L,63312L,63313L,63314L, +63315L,63316L,63317L,63318L,63319L,63320L,63321L,63322L,63323L,63324L, +63325L,63326L,63327L,63328L,63329L,63330L,63331L,63332L,63333L,63334L, +63335L,63336L,63337L,63338L,63339L,63340L,63341L,63342L,63343L,63344L, +63345L,63346L,63347L,63348L,63349L,63350L,63351L,63352L,63353L,63354L, +63355L,63356L,63357L,63358L,63359L,63360L,63361L,63362L,63363L,63364L, +63365L,63366L,63367L,63368L,63369L,63370L,63371L,63372L,63373L,63374L, +63375L,63376L,63377L,63378L,63379L,63380L,63381L,63382L,63383L,63384L, +63385L,63386L,63387L,63388L,63389L,63390L,63391L,63392L,63393L,63394L, +63395L,63396L,63397L,63398L,63399L,63400L,63401L,63402L,63403L,63404L, +63405L,63406L,63407L,63408L,63409L,63410L,63411L,63412L,63413L,63414L, +63415L,63416L,63417L,63418L,63419L,63420L,63421L,63422L,63423L,63424L, +63425L,63426L,63427L,63428L,63429L,63430L,63431L,63432L,63433L,63434L, +63435L,63436L,63437L,63438L,63439L,63440L,63441L,63442L,63443L,63444L, +63445L,63446L,63447L,63448L,63449L,63450L,63451L,63452L,63453L,63454L, +63455L,63456L,63457L,63458L,63459L,63460L,63461L,63462L,63463L,63464L, +63465L,63466L,63467L,63468L,63469L,63470L,63471L,63472L,63473L,63474L, +63475L,63476L,63477L,63478L,63479L,63480L,63481L,63482L,63483L,63484L, +63485L,63486L,63487L,63488L,63489L,63490L,63491L,63492L,63493L,63494L, +63495L,63496L,63497L,63498L,63499L,63500L,63501L,63502L,63503L,63504L, +63505L,63506L,63507L,63508L,63509L,63510L,63511L,63512L,63513L,63514L, +63515L,63516L,63517L,63518L,63519L,63520L,63521L,63522L,63523L,63524L, +63525L,63526L,63527L,63528L,63529L,63530L,63531L,63532L,63533L,63534L, +63535L,63536L,63537L,63538L,63539L,63540L,63541L,63542L,63543L,63544L, +63545L,63546L,63547L,63548L,63549L,63550L,63551L,63552L,63553L,63554L, +63555L,63556L,63557L,63558L,63559L,63560L,63561L,63562L,63563L,63564L, +63565L,63566L,63567L,63568L,63569L,63570L,63571L,63572L,63573L,63574L, +63575L,63576L,63577L,63578L,63579L,63580L,63581L,63582L,63583L,63584L, +63585L,63586L,63587L,63588L,63589L,63590L,63591L,63592L,63593L,63594L, +63595L,63596L,63597L,63598L,63599L,63600L,63601L,63602L,63603L,63604L, +63605L,63606L,63607L,63608L,63609L,63610L,63611L,63612L,63613L,63614L, +63615L,63616L,63617L,63618L,63619L,63620L,63621L,63622L,63623L,63624L, +63625L,63626L,63627L,63628L,63629L,63630L,63631L,63632L,63633L,63634L, +63635L,63636L,63637L,63638L,63639L,63640L,63641L,63642L,63643L,63644L, +63645L,63646L,63647L,63648L,63649L,63650L,63651L,63652L,63653L,63654L, +63655L,63656L,63657L,63658L,63659L,63660L,63661L,63662L,63663L,63664L, +63665L,63666L,63667L,63668L,63669L,63670L,63671L,63672L,63673L,63674L, +63675L,63676L,63677L,63678L,63679L,63680L,63681L,63682L,63683L,63684L, +63685L,63686L,63687L,63688L,63689L,63690L,63691L,63692L,63693L,63694L, +63695L,63696L,63697L,63698L,63699L,63700L,63701L,63702L,63703L,63704L, +63705L,63706L,63707L,63708L,63709L,63710L,63711L,63712L,63713L,63714L, +63715L,63716L,63717L,63718L,63719L,63720L,63721L,63722L,63723L,63724L, +63725L,63726L,63727L,63728L,63729L,63730L,63731L,63732L,63733L,63734L, +63735L,63736L,63737L,63738L,63739L,63740L,63741L,63742L,63743L,63744L, +63745L,63746L,63747L,63748L,63749L,63750L,63751L,63752L,63753L,63754L, +63755L,63756L,63757L,63758L,63759L,63760L,63761L,63762L,63763L,63764L, +63765L,63766L,63767L,63768L,63769L,63770L,63771L,63772L,63773L,63774L, +63775L,63776L,63777L,63778L,63779L,63780L,63781L,63782L,63783L,63784L, +63785L,63786L,63787L,63788L,63789L,63790L,63791L,63792L,63793L,63794L, +63795L,63796L,63797L,63798L,63799L,63800L,63801L,63802L,63803L,63804L, +63805L,63806L,63807L,63808L,63809L,63810L,63811L,63812L,63813L,63814L, +63815L,63816L,63817L,63818L,63819L,63820L,63821L,63822L,63823L,63824L, +63825L,63826L,63827L,63828L,63829L,63830L,63831L,63832L,63833L,63834L, +63835L,63836L,63837L,63838L,63839L,63840L,63841L,63842L,63843L,63844L, +63845L,63846L,63847L,63848L,63849L,63850L,63851L,63852L,63853L,63854L, +63855L,63856L,63857L,63858L,63859L,63860L,63861L,63862L,63863L,63864L, +63865L,63866L,63867L,63868L,63869L,63870L,63871L,63872L,63873L,63874L, +63875L,63876L,63877L,63878L,63879L,63880L,63881L,63882L,63883L,63884L, +63885L,63886L,63887L,63888L,63889L,63890L,63891L,63892L,63893L,63894L, +63895L,63896L,63897L,63898L,63899L,63900L,63901L,63902L,63903L,63904L, +63905L,63906L,63907L,63908L,63909L,63910L,63911L,63912L,63913L,63914L, +63915L,63916L,63917L,63918L,63919L,63920L,63921L,63922L,63923L,63924L, +63925L,63926L,63927L,63928L,63929L,63930L,63931L,63932L,63933L,63934L, +63935L,63936L,63937L,63938L,63939L,63940L,63941L,63942L,63943L,63944L, +63945L,63946L,63947L,63948L,63949L,63950L,63951L,63952L,63953L,63954L, +63955L,63956L,63957L,63958L,63959L,63960L,63961L,63962L,63963L,63964L, +63965L,63966L,63967L,63968L,63969L,63970L,63971L,63972L,63973L,63974L, +63975L,63976L,63977L,63978L,63979L,63980L,63981L,63982L,63983L,63984L, +63985L,63986L,63987L,63988L,63989L,63990L,63991L,63992L,63993L,63994L, +63995L,63996L,63997L,63998L,63999L,64000L,64001L,64002L,64003L,64004L, +64005L,64006L,64007L,64008L,64009L,64010L,64011L,64012L,64013L,64014L, +64015L,64016L,64017L,64018L,64019L,64020L,64021L,64022L,64023L,64024L, +64025L,64026L,64027L,64028L,64029L,64030L,64031L,64032L,64033L,64034L, +64035L,64036L,64037L,64038L,64039L,64040L,64041L,64042L,64043L,64044L, +64045L,64046L,64047L,64048L,64049L,64050L,64051L,64052L,64053L,64054L, +64055L,64056L,64057L,64058L,64059L,64060L,64061L,64062L,64063L,64064L, +64065L,64066L,64067L,64068L,64069L,64070L,64071L,64072L,64073L,64074L, +64075L,64076L,64077L,64078L,64079L,64080L,64081L,64082L,64083L,64084L, +64085L,64086L,64087L,64088L,64089L,64090L,64091L,64092L,64093L,64094L, +64095L,64096L,64097L,64098L,64099L,64100L,64101L,64102L,64103L,64104L, +64105L,64106L,64107L,64108L,64109L,64110L,64111L,64112L,64113L,64114L, +64115L,64116L,64117L,64118L,64119L,64120L,64121L,64122L,64123L,64124L, +64125L,64126L,64127L,64128L,64129L,64130L,64131L,64132L,64133L,64134L, +64135L,64136L,64137L,64138L,64139L,64140L,64141L,64142L,64143L,64144L, +64145L,64146L,64147L,64148L,64149L,64150L,64151L,64152L,64153L,64154L, +64155L,64156L,64157L,64158L,64159L,64160L,64161L,64162L,64163L,64164L, +64165L,64166L,64167L,64168L,64169L,64170L,64171L,64172L,64173L,64174L, +64175L,64176L,64177L,64178L,64179L,64180L,64181L,64182L,64183L,64184L, +64185L,64186L,64187L,64188L,64189L,64190L,64191L,64192L,64193L,64194L, +64195L,64196L,64197L,64198L,64199L,64200L,64201L,64202L,64203L,64204L, +64205L,64206L,64207L,64208L,64209L,64210L,64211L,64212L,64213L,64214L, +64215L,64216L,64217L,64218L,64219L,64220L,64221L,64222L,64223L,64224L, +64225L,64226L,64227L,64228L,64229L,64230L,64231L,64232L,64233L,64234L, +64235L,64236L,64237L,64238L,64239L,64240L,64241L,64242L,64243L,64244L, +64245L,64246L,64247L,64248L,64249L,64250L,64251L,64252L,64253L,64254L, +64255L,64256L,64257L,64258L,64259L,64260L,64261L,64262L,64263L,64264L, +64265L,64266L,64267L,64268L,64269L,64270L,64271L,64272L,64273L,64274L, +64275L,64276L,64277L,64278L,64279L,64280L,64281L,64282L,64283L,64284L, +64285L,64286L,64287L,64288L,64289L,64290L,64291L,64292L,64293L,64294L, +64295L,64296L,64297L,64298L,64299L,64300L,64301L,64302L,64303L,64304L, +64305L,64306L,64307L,64308L,64309L,64310L,64311L,64312L,64313L,64314L, +64315L,64316L,64317L,64318L,64319L,64320L,64321L,64322L,64323L,64324L, +64325L,64326L,64327L,64328L,64329L,64330L,64331L,64332L,64333L,64334L, +64335L,64336L,64337L,64338L,64339L,64340L,64341L,64342L,64343L,64344L, +64345L,64346L,64347L,64348L,64349L,64350L,64351L,64352L,64353L,64354L, +64355L,64356L,64357L,64358L,64359L,64360L,64361L,64362L,64363L,64364L, +64365L,64366L,64367L,64368L,64369L,64370L,64371L,64372L,64373L,64374L, +64375L,64376L,64377L,64378L,64379L,64380L,64381L,64382L,64383L,64384L, +64385L,64386L,64387L,64388L,64389L,64390L,64391L,64392L,64393L,64394L, +64395L,64396L,64397L,64398L,64399L,64400L,64401L,64402L,64403L,64404L, +64405L,64406L,64407L,64408L,64409L,64410L,64411L,64412L,64413L,64414L, +64415L,64416L,64417L,64418L,64419L,64420L,64421L,64422L,64423L,64424L, +64425L,64426L,64427L,64428L,64429L,64430L,64431L,64432L,64433L,64434L, +64435L,64436L,64437L,64438L,64439L,64440L,64441L,64442L,64443L,64444L, +64445L,64446L,64447L,64448L,64449L,64450L,64451L,64452L,64453L,64454L, +64455L,64456L,64457L,64458L,64459L,64460L,64461L,64462L,64463L,64464L, +64465L,64466L,64467L,64468L,64469L,64470L,64471L,64472L,64473L,64474L, +64475L,64476L,64477L,64478L,64479L,64480L,64481L,64482L,64483L,64484L, +64485L,64486L,64487L,64488L,64489L,64490L,64491L,64492L,64493L,64494L, +64495L,64496L,64497L,64498L,64499L,64500L,64501L,64502L,64503L,64504L, +64505L,64506L,64507L,64508L,64509L,64510L,64511L,64512L,64513L,64514L, +64515L,64516L,64517L,64518L,64519L,64520L,64521L,64522L,64523L,64524L, +64525L,64526L,64527L,64528L,64529L,64530L,64531L,64532L,64533L,64534L, +64535L,64536L,64537L,64538L,64539L,64540L,64541L,64542L,64543L,64544L, +64545L,64546L,64547L,64548L,64549L,64550L,64551L,64552L,64553L,64554L, +64555L,64556L,64557L,64558L,64559L,64560L,64561L,64562L,64563L,64564L, +64565L,64566L,64567L,64568L,64569L,64570L,64571L,64572L,64573L,64574L, +64575L,64576L,64577L,64578L,64579L,64580L,64581L,64582L,64583L,64584L, +64585L,64586L,64587L,64588L,64589L,64590L,64591L,64592L,64593L,64594L, +64595L,64596L,64597L,64598L,64599L,64600L,64601L,64602L,64603L,64604L, +64605L,64606L,64607L,64608L,64609L,64610L,64611L,64612L,64613L,64614L, +64615L,64616L,64617L,64618L,64619L,64620L,64621L,64622L,64623L,64624L, +64625L,64626L,64627L,64628L,64629L,64630L,64631L,64632L,64633L,64634L, +64635L,64636L,64637L,64638L,64639L,64640L,64641L,64642L,64643L,64644L, +64645L,64646L,64647L,64648L,64649L,64650L,64651L,64652L,64653L,64654L, +64655L,64656L,64657L,64658L,64659L,64660L,64661L,64662L,64663L,64664L, +64665L,64666L,64667L,64668L,64669L,64670L,64671L,64672L,64673L,64674L, +64675L,64676L,64677L,64678L,64679L,64680L,64681L,64682L,64683L,64684L, +64685L,64686L,64687L,64688L,64689L,64690L,64691L,64692L,64693L,64694L, +64695L,64696L,64697L,64698L,64699L,64700L,64701L,64702L,64703L,64704L, +64705L,64706L,64707L,64708L,64709L,64710L,64711L,64712L,64713L,64714L, +64715L,64716L,64717L,64718L,64719L,64720L,64721L,64722L,64723L,64724L, +64725L,64726L,64727L,64728L,64729L,64730L,64731L,64732L,64733L,64734L, +64735L,64736L,64737L,64738L,64739L,64740L,64741L,64742L,64743L,64744L, +64745L,64746L,64747L,64748L,64749L,64750L,64751L,64752L,64753L,64754L, +64755L,64756L,64757L,64758L,64759L,64760L,64761L,64762L,64763L,64764L, +64765L,64766L,64767L,64768L,64769L,64770L,64771L,64772L,64773L,64774L, +64775L,64776L,64777L,64778L,64779L,64780L,64781L,64782L,64783L,64784L, +64785L,64786L,64787L,64788L,64789L,64790L,64791L,64792L,64793L,64794L, +64795L,64796L,64797L,64798L,64799L,64800L,64801L,64802L,64803L,64804L, +64805L,64806L,64807L,64808L,64809L,64810L,64811L,64812L,64813L,64814L, +64815L,64816L,64817L,64818L,64819L,64820L,64821L,64822L,64823L,64824L, +64825L,64826L,64827L,64828L,64829L,64830L,64831L,64832L,64833L,64834L, +64835L,64836L,64837L,64838L,64839L,64840L,64841L,64842L,64843L,64844L, +64845L,64846L,64847L,64848L,64849L,64850L,64851L,64852L,64853L,64854L, +64855L,64856L,64857L,64858L,64859L,64860L,64861L,64862L,64863L,64864L, +64865L,64866L,64867L,64868L,64869L,64870L,64871L,64872L,64873L,64874L, +64875L,64876L,64877L,64878L,64879L,64880L,64881L,64882L,64883L,64884L, +64885L,64886L,64887L,64888L,64889L,64890L,64891L,64892L,64893L,64894L, +64895L,64896L,64897L,64898L,64899L,64900L,64901L,64902L,64903L,64904L, +64905L,64906L,64907L,64908L,64909L,64910L,64911L,64912L,64913L,64914L, +64915L,64916L,64917L,64918L,64919L,64920L,64921L,64922L,64923L,64924L, +64925L,64926L,64927L,64928L,64929L,64930L,64931L,64932L,64933L,64934L, +64935L,64936L,64937L,64938L,64939L,64940L,64941L,64942L,64943L,64944L, +64945L,64946L,64947L,64948L,64949L,64950L,64951L,64952L,64953L,64954L, +64955L,64956L,64957L,64958L,64959L,64960L,64961L,64962L,64963L,64964L, +64965L,64966L,64967L,64968L,64969L,64970L,64971L,64972L,64973L,64974L, +64975L,64976L,64977L,64978L,64979L,64980L,64981L,64982L,64983L,64984L, +64985L,64986L,64987L,64988L,64989L,64990L,64991L,64992L,64993L,64994L, +64995L,64996L,64997L,64998L,64999L,65000L,65001L,65002L,65003L,65004L, +65005L,65006L,65007L,65008L,65009L,65010L,65011L,65012L,65013L,65014L, +65015L,65016L,65017L,65018L,65019L,65020L,65021L,65022L,65023L,65024L, +65025L,65026L,65027L,65028L,65029L,65030L,65031L,65032L,65033L,65034L, +65035L,65036L,65037L,65038L,65039L,65040L,65041L,65042L,65043L,65044L, +65045L,65046L,65047L,65048L,65049L,65050L,65051L,65052L,65053L,65054L, +65055L,65056L,65057L,65058L,65059L,65060L,65061L,65062L,65063L,65064L, +65065L,65066L,65067L,65068L,65069L,65070L,65071L,65072L,65073L,65074L, +65075L,65076L,65077L,65078L,65079L,65080L,65081L,65082L,65083L,65084L, +65085L,65086L,65087L,65088L,65089L,65090L,65091L,65092L,65093L,65094L, +65095L,65096L,65097L,65098L,65099L,65100L,65101L,65102L,65103L,65104L, +65105L,65106L,65107L,65108L,65109L,65110L,65111L,65112L,65113L,65114L, +65115L,65116L,65117L,65118L,65119L,65120L,65121L,65122L,65123L,65124L, +65125L,65126L,65127L,65128L,65129L,65130L,65131L,65132L,65133L,65134L, +65135L,65136L,65137L,65138L,65139L,65140L,65141L,65142L,65143L,65144L, +65145L,65146L,65147L,65148L,65149L,65150L,65151L,65152L,65153L,65154L, +65155L,65156L,65157L,65158L,65159L,65160L,65161L,65162L,65163L,65164L, +65165L,65166L,65167L,65168L,65169L,65170L,65171L,65172L,65173L,65174L, +65175L,65176L,65177L,65178L,65179L,65180L,65181L,65182L,65183L,65184L, +65185L,65186L,65187L,65188L,65189L,65190L,65191L,65192L,65193L,65194L, +65195L,65196L,65197L,65198L,65199L,65200L,65201L,65202L,65203L,65204L, +65205L,65206L,65207L,65208L,65209L,65210L,65211L,65212L,65213L,65214L, +65215L,65216L,65217L,65218L,65219L,65220L,65221L,65222L,65223L,65224L, +65225L,65226L,65227L,65228L,65229L,65230L,65231L,65232L,65233L,65234L, +65235L,65236L,65237L,65238L,65239L,65240L,65241L,65242L,65243L,65244L, +65245L,65246L,65247L,65248L,65249L,65250L,65251L,65252L,65253L,65254L, +65255L,65256L,65257L,65258L,65259L,65260L,65261L,65262L,65263L,65264L, +65265L,65266L,65267L,65268L,65269L,65270L,65271L,65272L,65273L,65274L, +65275L,65276L,65277L,65278L,65279L,65280L,65281L,65282L,65283L,65284L, +65285L,65286L,65287L,65288L,65289L,65290L,65291L,65292L,65293L,65294L, +65295L,65296L,65297L,65298L,65299L,65300L,65301L,65302L,65303L,65304L, +65305L,65306L,65307L,65308L,65309L,65310L,65311L,65312L,65313L,65314L, +65315L,65316L,65317L,65318L,65319L,65320L,65321L,65322L,65323L,65324L, +65325L,65326L,65327L,65328L,65329L,65330L,65331L,65332L,65333L,65334L, +65335L,65336L,65337L,65338L,65339L,65340L,65341L,65342L,65343L,65344L, +65313L,65314L,65315L,65316L,65317L,65318L,65319L,65320L,65321L,65322L, +65323L,65324L,65325L,65326L,65327L,65328L,65329L,65330L,65331L,65332L, +65333L,65334L,65335L,65336L,65337L,65338L,65371L,65372L,65373L,65374L, +65375L,65376L,65377L,65378L,65379L,65380L,65381L,65382L,65383L,65384L, +65385L,65386L,65387L,65388L,65389L,65390L,65391L,65392L,65393L,65394L, +65395L,65396L,65397L,65398L,65399L,65400L,65401L,65402L,65403L,65404L, +65405L,65406L,65407L,65408L,65409L,65410L,65411L,65412L,65413L,65414L, +65415L,65416L,65417L,65418L,65419L,65420L,65421L,65422L,65423L,65424L, +65425L,65426L,65427L,65428L,65429L,65430L,65431L,65432L,65433L,65434L, +65435L,65436L,65437L,65438L,65439L,65440L,65441L,65442L,65443L,65444L, +65445L,65446L,65447L,65448L,65449L,65450L,65451L,65452L,65453L,65454L, +65455L,65456L,65457L,65458L,65459L,65460L,65461L,65462L,65463L,65464L, +65465L,65466L,65467L,65468L,65469L,65470L,65471L,65472L,65473L,65474L, +65475L,65476L,65477L,65478L,65479L,65480L,65481L,65482L,65483L,65484L, +65485L,65486L,65487L,65488L,65489L,65490L,65491L,65492L,65493L,65494L, +65495L,65496L,65497L,65498L,65499L,65500L,65501L,65502L,65503L,65504L, +65505L,65506L,65507L,65508L,65509L,65510L,65511L,65512L,65513L,65514L, +65515L,65516L,65517L,65518L,65519L,65520L,65521L,65522L,65523L,65524L, +65525L,65526L,65527L,65528L,65529L,65530L,65531L,65532L,65533L,65534L, +65535L, +}; +#endif + +#if defined(DUK_USE_REGEXP_CANON_BITMAP) +/* + * Automatically generated by extract_caseconv.py, do not edit! + */ + +const duk_uint8_t duk_unicode_re_canon_bitmap[256] = { +23,0,224,19,1,228,255,255,255,255,255,255,255,255,255,255,63,254,255,127, +255,255,255,255,255,255,255,255,231,231,0,16,255,227,255,255,63,255,255, +255,255,255,255,255,1,252,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +227,129,255,255,255,147,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,251, +}; +#endif +#line 1 "duk_util_bitdecoder.c" +/* + * Bitstream decoder. + */ + +/* #include duk_internal.h -> already included */ + +/* Decode 'bits' bits from the input stream (bits must be 1...24). + * When reading past bitstream end, zeroes are shifted in. The result + * is signed to match duk_bd_decode_flagged. + */ +DUK_INTERNAL duk_uint32_t duk_bd_decode(duk_bitdecoder_ctx *ctx, duk_small_int_t bits) { + duk_small_int_t shift; + duk_uint32_t mask; + duk_uint32_t tmp; + + /* Note: cannot read more than 24 bits without possibly shifting top bits out. + * Fixable, but adds complexity. + */ + DUK_ASSERT(bits >= 1 && bits <= 24); + + while (ctx->currbits < bits) { +#if 0 + DUK_DDD(DUK_DDDPRINT("decode_bits: shift more data (bits=%ld, currbits=%ld)", + (long) bits, (long) ctx->currbits)); +#endif + ctx->currval <<= 8; + if (ctx->offset < ctx->length) { + /* If ctx->offset >= ctx->length, we "shift zeroes in" + * instead of croaking. + */ + ctx->currval |= ctx->data[ctx->offset++]; + } + ctx->currbits += 8; + } +#if 0 + DUK_DDD(DUK_DDDPRINT("decode_bits: bits=%ld, currbits=%ld, currval=0x%08lx", + (long) bits, (long) ctx->currbits, (unsigned long) ctx->currval)); +#endif + + /* Extract 'top' bits of currval; note that the extracted bits do not need + * to be cleared, we just ignore them on next round. + */ + shift = ctx->currbits - bits; + mask = (((duk_uint32_t) 1U) << bits) - 1U; + tmp = (ctx->currval >> shift) & mask; + ctx->currbits = shift; /* remaining */ + +#if 0 + DUK_DDD(DUK_DDDPRINT("decode_bits: %ld bits -> 0x%08lx (%ld), currbits=%ld, currval=0x%08lx", + (long) bits, (unsigned long) tmp, (long) tmp, (long) ctx->currbits, (unsigned long) ctx->currval)); +#endif + + return tmp; +} + +DUK_INTERNAL duk_small_uint_t duk_bd_decode_flag(duk_bitdecoder_ctx *ctx) { + return (duk_small_uint_t) duk_bd_decode(ctx, 1); +} + +/* Decode a one-bit flag, and if set, decode a value of 'bits', otherwise return + * default value. + */ +DUK_INTERNAL duk_uint32_t duk_bd_decode_flagged(duk_bitdecoder_ctx *ctx, duk_small_int_t bits, duk_uint32_t def_value) { + if (duk_bd_decode_flag(ctx)) { + return duk_bd_decode(ctx, bits); + } else { + return def_value; + } +} + +/* Signed variant, allows negative marker value. */ +DUK_INTERNAL duk_int32_t duk_bd_decode_flagged_signed(duk_bitdecoder_ctx *ctx, duk_small_int_t bits, duk_int32_t def_value) { + return (duk_int32_t) duk_bd_decode_flagged(ctx, bits, (duk_uint32_t) def_value); +} + +/* Shared varint encoding. Match dukutil.py BitEncode.varuint(). */ +DUK_INTERNAL duk_uint32_t duk_bd_decode_varuint(duk_bitdecoder_ctx *ctx) { + duk_small_uint_t t; + + /* The bit encoding choices here are based on manual testing against + * the actual varuints generated by genbuiltins.py. + */ + switch (duk_bd_decode(ctx, 2)) { + case 0: + return 0; /* [0,0] */ + case 1: + return duk_bd_decode(ctx, 2) + 1; /* [1,4] */ + case 2: + return duk_bd_decode(ctx, 5) + 5; /* [5,36] */ + default: + t = duk_bd_decode(ctx, 7); + if (t == 0) { + return duk_bd_decode(ctx, 20); + } + return (t - 1) + 37; /* [37,163] */ + } +} + +/* Decode a bit packed string from a custom format used by genbuiltins.py. + * This function is here because it's used for both heap and thread inits. + * Caller must supply the output buffer whose size is NOT checked! + */ + +#define DUK__BITPACK_LETTER_LIMIT 26 +#define DUK__BITPACK_LOOKUP1 26 +#define DUK__BITPACK_LOOKUP2 27 +#define DUK__BITPACK_SWITCH1 28 +#define DUK__BITPACK_SWITCH 29 +#define DUK__BITPACK_UNUSED1 30 +#define DUK__BITPACK_EIGHTBIT 31 + +DUK_LOCAL const duk_uint8_t duk__bitpacked_lookup[16] = { + DUK_ASC_0, DUK_ASC_1, DUK_ASC_2, DUK_ASC_3, + DUK_ASC_4, DUK_ASC_5, DUK_ASC_6, DUK_ASC_7, + DUK_ASC_8, DUK_ASC_9, DUK_ASC_UNDERSCORE, DUK_ASC_SPACE, + 0x82, 0x80, DUK_ASC_DOUBLEQUOTE, DUK_ASC_LCURLY +}; + +DUK_INTERNAL duk_small_uint_t duk_bd_decode_bitpacked_string(duk_bitdecoder_ctx *bd, duk_uint8_t *out) { + duk_small_uint_t len; + duk_small_uint_t mode; + duk_small_uint_t t; + duk_small_uint_t i; + + len = duk_bd_decode(bd, 5); + if (len == 31) { + len = duk_bd_decode(bd, 8); /* Support up to 256 bytes; rare. */ + } + + mode = 32; /* 0 = uppercase, 32 = lowercase (= 'a' - 'A') */ + for (i = 0; i < len; i++) { + t = duk_bd_decode(bd, 5); + if (t < DUK__BITPACK_LETTER_LIMIT) { + t = t + DUK_ASC_UC_A + mode; + } else if (t == DUK__BITPACK_LOOKUP1) { + t = duk__bitpacked_lookup[duk_bd_decode(bd, 3)]; + } else if (t == DUK__BITPACK_LOOKUP2) { + t = duk__bitpacked_lookup[8 + duk_bd_decode(bd, 3)]; + } else if (t == DUK__BITPACK_SWITCH1) { + t = duk_bd_decode(bd, 5); + DUK_ASSERT_DISABLE(t >= 0); /* unsigned */ + DUK_ASSERT(t <= 25); + t = t + DUK_ASC_UC_A + (mode ^ 32); + } else if (t == DUK__BITPACK_SWITCH) { + mode = mode ^ 32; + t = duk_bd_decode(bd, 5); + DUK_ASSERT_DISABLE(t >= 0); + DUK_ASSERT(t <= 25); + t = t + DUK_ASC_UC_A + mode; + } else if (t == DUK__BITPACK_EIGHTBIT) { + t = duk_bd_decode(bd, 8); + } + out[i] = (duk_uint8_t) t; + } + + return len; +} + +/* automatic undefs */ +#undef DUK__BITPACK_EIGHTBIT +#undef DUK__BITPACK_LETTER_LIMIT +#undef DUK__BITPACK_LOOKUP1 +#undef DUK__BITPACK_LOOKUP2 +#undef DUK__BITPACK_SWITCH +#undef DUK__BITPACK_SWITCH1 +#undef DUK__BITPACK_UNUSED1 +#line 1 "duk_util_bitencoder.c" +/* + * Bitstream encoder. + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL void duk_be_encode(duk_bitencoder_ctx *ctx, duk_uint32_t data, duk_small_int_t bits) { + duk_uint8_t tmp; + + DUK_ASSERT(ctx != NULL); + DUK_ASSERT(ctx->currbits < 8); + + /* This limitation would be fixable but adds unnecessary complexity. */ + DUK_ASSERT(bits >= 1 && bits <= 24); + + ctx->currval = (ctx->currval << bits) | data; + ctx->currbits += bits; + + while (ctx->currbits >= 8) { + if (ctx->offset < ctx->length) { + tmp = (duk_uint8_t) ((ctx->currval >> (ctx->currbits - 8)) & 0xff); + ctx->data[ctx->offset++] = tmp; + } else { + /* If buffer has been exhausted, truncate bitstream */ + ctx->truncated = 1; + } + + ctx->currbits -= 8; + } +} + +DUK_INTERNAL void duk_be_finish(duk_bitencoder_ctx *ctx) { + duk_small_int_t npad; + + DUK_ASSERT(ctx != NULL); + DUK_ASSERT(ctx->currbits < 8); + + npad = (duk_small_int_t) (8 - ctx->currbits); + if (npad > 0) { + duk_be_encode(ctx, 0, npad); + } + DUK_ASSERT(ctx->currbits == 0); +} +#line 1 "duk_util_bufwriter.c" +/* + * Fast buffer writer with slack management. + */ + +/* #include duk_internal.h -> already included */ + +/* XXX: Avoid duk_{memcmp,memmove}_unsafe() by imposing a minimum length of + * >0 for the underlying dynamic buffer. + */ + +/* + * Macro support functions (use only macros in calling code) + */ + +DUK_LOCAL void duk__bw_update_ptrs(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_size_t curr_offset, duk_size_t new_length) { + duk_uint8_t *p; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw_ctx != NULL); + DUK_UNREF(thr); + + /* 'p' might be NULL when the underlying buffer is zero size. If so, + * the resulting pointers are not used unsafely. + */ + p = (duk_uint8_t *) DUK_HBUFFER_DYNAMIC_GET_DATA_PTR(thr->heap, bw_ctx->buf); + DUK_ASSERT(p != NULL || (DUK_HBUFFER_DYNAMIC_GET_SIZE(bw_ctx->buf) == 0 && curr_offset == 0 && new_length == 0)); + bw_ctx->p = p + curr_offset; + bw_ctx->p_base = p; + bw_ctx->p_limit = p + new_length; +} + +DUK_INTERNAL void duk_bw_init(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_hbuffer_dynamic *h_buf) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw_ctx != NULL); + DUK_ASSERT(h_buf != NULL); + + bw_ctx->buf = h_buf; + duk__bw_update_ptrs(thr, bw_ctx, 0, DUK_HBUFFER_DYNAMIC_GET_SIZE(h_buf)); +} + +DUK_INTERNAL void duk_bw_init_pushbuf(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_size_t buf_size) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw_ctx != NULL); + + (void) duk_push_dynamic_buffer(thr, buf_size); + bw_ctx->buf = (duk_hbuffer_dynamic *) duk_known_hbuffer(thr, -1); + DUK_ASSERT(bw_ctx->buf != NULL); + duk__bw_update_ptrs(thr, bw_ctx, 0, buf_size); +} + +/* Resize target buffer for requested size. Called by the macro only when the + * fast path test (= there is space) fails. + */ +DUK_INTERNAL duk_uint8_t *duk_bw_resize(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx, duk_size_t sz) { + duk_size_t curr_off; + duk_size_t add_sz; + duk_size_t new_sz; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw_ctx != NULL); + + /* We could do this operation without caller updating bw_ctx->ptr, + * but by writing it back here we can share code better. + */ + + curr_off = (duk_size_t) (bw_ctx->p - bw_ctx->p_base); + add_sz = (curr_off >> DUK_BW_SLACK_SHIFT) + DUK_BW_SLACK_ADD; + new_sz = curr_off + sz + add_sz; + if (DUK_UNLIKELY(new_sz < curr_off)) { + /* overflow */ + DUK_ERROR_RANGE(thr, DUK_STR_BUFFER_TOO_LONG); + DUK_WO_NORETURN(return NULL;); + } +#if 0 /* for manual torture testing: tight allocation, useful with valgrind */ + new_sz = curr_off + sz; +#endif + + /* This is important to ensure dynamic buffer data pointer is not + * NULL (which is possible if buffer size is zero), which in turn + * causes portability issues with e.g. memmove() and memcpy(). + */ + DUK_ASSERT(new_sz >= 1); + + DUK_DD(DUK_DDPRINT("resize bufferwriter from %ld to %ld (add_sz=%ld)", (long) curr_off, (long) new_sz, (long) add_sz)); + + duk_hbuffer_resize(thr, bw_ctx->buf, new_sz); + duk__bw_update_ptrs(thr, bw_ctx, curr_off, new_sz); + return bw_ctx->p; +} + +/* Make buffer compact, matching current written size. */ +DUK_INTERNAL void duk_bw_compact(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx) { + duk_size_t len; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw_ctx != NULL); + DUK_UNREF(thr); + + len = (duk_size_t) (bw_ctx->p - bw_ctx->p_base); + duk_hbuffer_resize(thr, bw_ctx->buf, len); + duk__bw_update_ptrs(thr, bw_ctx, len, len); +} + +DUK_INTERNAL void duk_bw_write_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t src_off, duk_size_t len) { + duk_uint8_t *p_base; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(src_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(src_off + len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_UNREF(thr); + + p_base = bw->p_base; + duk_memcpy_unsafe((void *) bw->p, + (const void *) (p_base + src_off), + (size_t) len); + bw->p += len; +} + +DUK_INTERNAL void duk_bw_write_ensure_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t src_off, duk_size_t len) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(src_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(src_off + len <= DUK_BW_GET_SIZE(thr, bw)); + + DUK_BW_ENSURE(thr, bw, len); + duk_bw_write_raw_slice(thr, bw, src_off, len); +} + +DUK_INTERNAL void duk_bw_insert_raw_bytes(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, const duk_uint8_t *buf, duk_size_t len) { + duk_uint8_t *p_base; + duk_size_t buf_sz, move_sz; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(dst_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(buf != NULL); + DUK_UNREF(thr); + + p_base = bw->p_base; + buf_sz = (duk_size_t) (bw->p - p_base); /* constrained by maximum buffer size */ + move_sz = buf_sz - dst_off; + + DUK_ASSERT(p_base != NULL); /* buffer size is >= 1 */ + duk_memmove_unsafe((void *) (p_base + dst_off + len), + (const void *) (p_base + dst_off), + (size_t) move_sz); + duk_memcpy_unsafe((void *) (p_base + dst_off), + (const void *) buf, + (size_t) len); + bw->p += len; +} + +DUK_INTERNAL void duk_bw_insert_ensure_bytes(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, const duk_uint8_t *buf, duk_size_t len) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(dst_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(buf != NULL); + + DUK_BW_ENSURE(thr, bw, len); + duk_bw_insert_raw_bytes(thr, bw, dst_off, buf, len); +} + +DUK_INTERNAL void duk_bw_insert_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, duk_size_t src_off, duk_size_t len) { + duk_uint8_t *p_base; + duk_size_t buf_sz, move_sz; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(dst_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(src_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(src_off + len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_UNREF(thr); + + p_base = bw->p_base; + + /* Don't support "straddled" source now. */ + DUK_ASSERT(dst_off <= src_off || dst_off >= src_off + len); + + if (dst_off <= src_off) { + /* Target is before source. Source offset is expressed as + * a "before change" offset. Account for the memmove. + */ + src_off += len; + } + + buf_sz = (duk_size_t) (bw->p - p_base); + move_sz = buf_sz - dst_off; + + DUK_ASSERT(p_base != NULL); /* buffer size is >= 1 */ + duk_memmove_unsafe((void *) (p_base + dst_off + len), + (const void *) (p_base + dst_off), + (size_t) move_sz); + duk_memcpy_unsafe((void *) (p_base + dst_off), + (const void *) (p_base + src_off), + (size_t) len); + bw->p += len; +} + +DUK_INTERNAL void duk_bw_insert_ensure_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t dst_off, duk_size_t src_off, duk_size_t len) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(dst_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(src_off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(src_off + len <= DUK_BW_GET_SIZE(thr, bw)); + + /* Don't support "straddled" source now. */ + DUK_ASSERT(dst_off <= src_off || dst_off >= src_off + len); + + DUK_BW_ENSURE(thr, bw, len); + duk_bw_insert_raw_slice(thr, bw, dst_off, src_off, len); +} + +DUK_INTERNAL duk_uint8_t *duk_bw_insert_raw_area(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len) { + duk_uint8_t *p_base, *p_dst, *p_src; + duk_size_t buf_sz, move_sz; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_UNREF(thr); + + p_base = bw->p_base; + buf_sz = (duk_size_t) (bw->p - p_base); + move_sz = buf_sz - off; + p_dst = p_base + off + len; + p_src = p_base + off; + duk_memmove_unsafe((void *) p_dst, (const void *) p_src, (size_t) move_sz); + return p_src; /* point to start of 'reserved area' */ +} + +DUK_INTERNAL duk_uint8_t *duk_bw_insert_ensure_area(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len) { + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(off <= DUK_BW_GET_SIZE(thr, bw)); + + DUK_BW_ENSURE(thr, bw, len); + return duk_bw_insert_raw_area(thr, bw, off, len); +} + +DUK_INTERNAL void duk_bw_remove_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len) { + duk_size_t move_sz; + + duk_uint8_t *p_base; + duk_uint8_t *p_src; + duk_uint8_t *p_dst; + + DUK_ASSERT(thr != NULL); + DUK_ASSERT(bw != NULL); + DUK_ASSERT(off <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_ASSERT(off + len <= DUK_BW_GET_SIZE(thr, bw)); + DUK_UNREF(thr); + + p_base = bw->p_base; + p_dst = p_base + off; + p_src = p_dst + len; + move_sz = (duk_size_t) (bw->p - p_src); + duk_memmove_unsafe((void *) p_dst, + (const void *) p_src, + (size_t) move_sz); + bw->p -= len; +} + +/* + * Assertion helpers + */ + +#if defined(DUK_USE_ASSERTIONS) +DUK_INTERNAL void duk_bw_assert_valid(duk_hthread *thr, duk_bufwriter_ctx *bw_ctx) { + DUK_UNREF(thr); + DUK_ASSERT(bw_ctx != NULL); + DUK_ASSERT(bw_ctx->buf != NULL); + DUK_ASSERT((DUK_HBUFFER_DYNAMIC_GET_SIZE(bw_ctx->buf) == 0) || + (bw_ctx->p != NULL && + bw_ctx->p_base != NULL && + bw_ctx->p_limit != NULL && + bw_ctx->p_limit >= bw_ctx->p_base && + bw_ctx->p >= bw_ctx->p_base && + bw_ctx->p <= bw_ctx->p_limit)); +} +#endif +#line 1 "duk_util_cast.c" +/* + * Cast helpers. + * + * C99+ coercion is challenging portability-wise because out-of-range casts + * may invoke implementation defined or even undefined behavior. See e.g. + * http://blog.frama-c.com/index.php?post/2013/10/09/Overflow-float-integer. + * + * Provide explicit cast helpers which try to avoid implementation defined + * or undefined behavior. These helpers can then be simplified in the vast + * majority of cases where the implementation defined or undefined behavior + * is not problematic. + */ + +/* #include duk_internal.h -> already included */ + +/* Portable double-to-integer cast which avoids undefined behavior and avoids + * relying on fmin(), fmax(), or other intrinsics. Out-of-range results are + * not assumed by caller, but here value is clamped, NaN converts to minval. + */ +#define DUK__DOUBLE_INT_CAST1(tname,minval,maxval) do { \ + if (DUK_LIKELY(x >= (duk_double_t) (minval))) { \ + DUK_ASSERT(!DUK_ISNAN(x)); \ + if (DUK_LIKELY(x <= (duk_double_t) (maxval))) { \ + return (tname) x; \ + } else { \ + return (tname) (maxval); \ + } \ + } else { \ + /* NaN or below minval. Since we don't care about the result \ + * for out-of-range values, just return the minimum value for \ + * both. \ + */ \ + return (tname) (minval); \ + } \ + } while (0) + +/* Rely on specific NaN behavior for duk_double_{fmin,fmax}(): if either + * argument is a NaN, return the second argument. This avoids a + * NaN-to-integer cast which is undefined behavior. + */ +#define DUK__DOUBLE_INT_CAST2(tname,minval,maxval) do { \ + return (tname) duk_double_fmin(duk_double_fmax(x, (duk_double_t) (minval)), (duk_double_t) (maxval)); \ + } while (0) + +/* Another solution which doesn't need C99+ behavior for fmin() and fmax(). */ +#define DUK__DOUBLE_INT_CAST3(tname,minval,maxval) do { \ + if (DUK_ISNAN(x)) { \ + /* 0 or any other value is fine. */ \ + return (tname) 0; \ + } else \ + return (tname) DUK_FMIN(DUK_FMAX(x, (duk_double_t) (minval)), (duk_double_t) (maxval)); \ + } \ + } while (0) + +/* C99+ solution: relies on specific fmin() and fmax() behavior in C99: if + * one argument is NaN but the other isn't, the non-NaN argument is returned. + * Because the limits are non-NaN values, explicit NaN check is not needed. + * This may not work on all legacy platforms, and also doesn't seem to inline + * the fmin() and fmax() calls (unless one uses -ffast-math which we don't + * support). + */ +#define DUK__DOUBLE_INT_CAST4(tname,minval,maxval) do { \ + return (tname) DUK_FMIN(DUK_FMAX(x, (duk_double_t) (minval)), (duk_double_t) (maxval)); \ + } while (0) + +DUK_INTERNAL duk_int_t duk_double_to_int_t(duk_double_t x) { +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) + /* Real world solution: almost any practical platform will provide + * an integer value without any guarantees what it is (which is fine). + */ + return (duk_int_t) x; +#else + DUK__DOUBLE_INT_CAST1(duk_int_t, DUK_INT_MIN, DUK_INT_MAX); +#endif +} + +DUK_INTERNAL duk_uint_t duk_double_to_uint_t(duk_double_t x) { +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) + return (duk_uint_t) x; +#else + DUK__DOUBLE_INT_CAST1(duk_uint_t, DUK_UINT_MIN, DUK_UINT_MAX); +#endif +} + +DUK_INTERNAL duk_int32_t duk_double_to_int32_t(duk_double_t x) { +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) + return (duk_int32_t) x; +#else + DUK__DOUBLE_INT_CAST1(duk_int32_t, DUK_INT32_MIN, DUK_INT32_MAX); +#endif +} + +DUK_INTERNAL duk_uint32_t duk_double_to_uint32_t(duk_double_t x) { +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) + return (duk_uint32_t) x; +#else + DUK__DOUBLE_INT_CAST1(duk_uint32_t, DUK_UINT32_MIN, DUK_UINT32_MAX); +#endif +} + +/* Largest IEEE double that doesn't round to infinity in the default rounding + * mode. The exact midpoint between (1 - 2^(-24)) * 2^128 and 2^128 rounds to + * infinity, at least on x64. This number is one double unit below that + * midpoint. See misc/float_cast.c. + */ +#define DUK__FLOAT_ROUND_LIMIT 340282356779733623858607532500980858880.0 + +/* Maximum IEEE float. Double-to-float conversion above this would be out of + * range and thus technically undefined behavior. + */ +#define DUK__FLOAT_MAX 340282346638528859811704183484516925440.0 + +DUK_INTERNAL duk_float_t duk_double_to_float_t(duk_double_t x) { + /* Even a double-to-float cast is technically undefined behavior if + * the double is out-of-range. C99 Section 6.3.1.5: + * + * If the value being converted is in the range of values that can + * be represented but cannot be represented exactly, the result is + * either the nearest higher or nearest lower representable value, + * chosen in an implementation-defined manner. If the value being + * converted is outside the range of values that can be represented, + * the behavior is undefined. + */ +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) + return (duk_float_t) x; +#else + duk_double_t t; + + t = DUK_FABS(x); + DUK_ASSERT((DUK_ISNAN(x) && DUK_ISNAN(t)) || + (!DUK_ISNAN(x) && !DUK_ISNAN(t))); + + if (DUK_LIKELY(t <= DUK__FLOAT_MAX)) { + /* Standard in-range case, try to get here with a minimum + * number of checks and branches. + */ + DUK_ASSERT(!DUK_ISNAN(x)); + return (duk_float_t) x; + } else if (t <= DUK__FLOAT_ROUND_LIMIT) { + /* Out-of-range, but rounds to min/max float. */ + DUK_ASSERT(!DUK_ISNAN(x)); + if (x < 0.0) { + return (duk_float_t) -DUK__FLOAT_MAX; + } else { + return (duk_float_t) DUK__FLOAT_MAX; + } + } else if (DUK_ISNAN(x)) { + /* Assumes double NaN -> float NaN considered "in range". */ + DUK_ASSERT(DUK_ISNAN(x)); + return (duk_float_t) x; + } else { + /* Out-of-range, rounds to +/- Infinity. */ + if (x < 0.0) { + return (duk_float_t) -DUK_DOUBLE_INFINITY; + } else { + return (duk_float_t) DUK_DOUBLE_INFINITY; + } + } +#endif +} + +/* automatic undefs */ +#undef DUK__DOUBLE_INT_CAST1 +#undef DUK__DOUBLE_INT_CAST2 +#undef DUK__DOUBLE_INT_CAST3 +#undef DUK__DOUBLE_INT_CAST4 +#undef DUK__FLOAT_MAX +#undef DUK__FLOAT_ROUND_LIMIT +#line 1 "duk_util_double.c" +/* + * IEEE double helpers. + */ + +/* #include duk_internal.h -> already included */ + +DUK_INTERNAL duk_bool_t duk_double_is_anyinf(duk_double_t x) { + duk_double_union du; + du.d = x; + return DUK_DBLUNION_IS_ANYINF(&du); +} + +DUK_INTERNAL duk_bool_t duk_double_is_posinf(duk_double_t x) { + duk_double_union du; + du.d = x; + return DUK_DBLUNION_IS_POSINF(&du); +} + +DUK_INTERNAL duk_bool_t duk_double_is_neginf(duk_double_t x) { + duk_double_union du; + du.d = x; + return DUK_DBLUNION_IS_NEGINF(&du); +} + +DUK_INTERNAL duk_bool_t duk_double_is_nan(duk_double_t x) { + duk_double_union du; + du.d = x; + /* Assumes we're dealing with a Duktape internal NaN which is + * NaN normalized if duk_tval requires it. + */ + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + return DUK_DBLUNION_IS_NAN(&du); +} + +DUK_INTERNAL duk_bool_t duk_double_is_nan_or_zero(duk_double_t x) { + duk_double_union du; + du.d = x; + /* Assumes we're dealing with a Duktape internal NaN which is + * NaN normalized if duk_tval requires it. + */ + DUK_ASSERT(DUK_DBLUNION_IS_NORMALIZED(&du)); + return DUK_DBLUNION_IS_NAN(&du) || DUK_DBLUNION_IS_ANYZERO(&du); +} + +DUK_INTERNAL duk_bool_t duk_double_is_nan_or_inf(duk_double_t x) { + duk_double_union du; + du.d = x; + /* If exponent is 0x7FF the argument is either a NaN or an + * infinity. We don't need to check any other fields. + */ +#if defined(DUK_USE_64BIT_OPS) +#if defined(DUK_USE_DOUBLE_ME) + return (du.ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x000000007ff00000)) == DUK_U64_CONSTANT(0x000000007ff00000); +#else + return (du.ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x7ff0000000000000)) == DUK_U64_CONSTANT(0x7ff0000000000000); +#endif +#else + return (du.ui[DUK_DBL_IDX_UI0] & 0x7ff00000UL) == 0x7ff00000UL; +#endif +} + +DUK_INTERNAL duk_bool_t duk_double_is_nan_zero_inf(duk_double_t x) { + duk_double_union du; +#if defined(DUK_USE_64BIT_OPS) + duk_uint64_t t; +#else + duk_uint32_t t; +#endif + du.d = x; +#if defined(DUK_USE_64BIT_OPS) +#if defined(DUK_USE_DOUBLE_ME) + t = du.ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x000000007ff00000); + if (t == DUK_U64_CONSTANT(0x0000000000000000)) { + t = du.ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x0000000080000000); + return t == 0; + } + if (t == DUK_U64_CONSTANT(0x000000007ff00000)) { + return 1; + } +#else + t = du.ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x7ff0000000000000); + if (t == DUK_U64_CONSTANT(0x0000000000000000)) { + t = du.ull[DUK_DBL_IDX_ULL0] & DUK_U64_CONSTANT(0x8000000000000000); + return t == 0; + } + if (t == DUK_U64_CONSTANT(0x7ff0000000000000)) { + return 1; + } +#endif +#else + t = du.ui[DUK_DBL_IDX_UI0] & 0x7ff00000UL; + if (t == 0x00000000UL) { + return DUK_DBLUNION_IS_ANYZERO(&du); + } + if (t == 0x7ff00000UL) { + return 1; + } +#endif + return 0; +} + +DUK_INTERNAL duk_small_uint_t duk_double_signbit(duk_double_t x) { + duk_double_union du; + du.d = x; + return (duk_small_uint_t) DUK_DBLUNION_GET_SIGNBIT(&du); +} + +DUK_INTERNAL duk_double_t duk_double_trunc_towards_zero(duk_double_t x) { + /* XXX: optimize */ + duk_small_uint_t s = duk_double_signbit(x); + x = DUK_FLOOR(DUK_FABS(x)); /* truncate towards zero */ + if (s) { + x = -x; + } + return x; +} + +DUK_INTERNAL duk_bool_t duk_double_same_sign(duk_double_t x, duk_double_t y) { + duk_double_union du1; + duk_double_union du2; + du1.d = x; + du2.d = y; + + return (((du1.ui[DUK_DBL_IDX_UI0] ^ du2.ui[DUK_DBL_IDX_UI0]) & 0x80000000UL) == 0); +} + +DUK_INTERNAL duk_double_t duk_double_fmin(duk_double_t x, duk_double_t y) { + /* Doesn't replicate fmin() behavior exactly: for fmin() if one + * argument is a NaN, the other argument should be returned. + * Duktape doesn't rely on this behavior so the replacement can + * be simplified. + */ + return (x < y ? x : y); +} + +DUK_INTERNAL duk_double_t duk_double_fmax(duk_double_t x, duk_double_t y) { + /* Doesn't replicate fmax() behavior exactly: for fmax() if one + * argument is a NaN, the other argument should be returned. + * Duktape doesn't rely on this behavior so the replacement can + * be simplified. + */ + return (x > y ? x : y); +} + +DUK_INTERNAL duk_bool_t duk_double_is_finite(duk_double_t x) { + return !duk_double_is_nan_or_inf(x); +} + +DUK_INTERNAL duk_bool_t duk_double_is_integer(duk_double_t x) { + if (duk_double_is_nan_or_inf(x)) { + return 0; + } else { + return duk_double_equals(duk_js_tointeger_number(x), x); + } +} + +DUK_INTERNAL duk_bool_t duk_double_is_safe_integer(duk_double_t x) { + /* >>> 2**53-1 + * 9007199254740991 + */ + return duk_double_is_integer(x) && DUK_FABS(x) <= 9007199254740991.0; +} + +/* Check whether a duk_double_t is a whole number in the 32-bit range (reject + * negative zero), and if so, return a duk_int32_t. + * For compiler use: don't allow negative zero as it will cause trouble with + * LDINT+LDINTX, positive zero is OK. + */ +DUK_INTERNAL duk_bool_t duk_is_whole_get_int32_nonegzero(duk_double_t x, duk_int32_t *ival) { + duk_int32_t t; + + t = duk_double_to_int32_t(x); + if (!duk_double_equals((duk_double_t) t, x)) { + return 0; + } + if (t == 0) { + duk_double_union du; + du.d = x; + if (DUK_DBLUNION_HAS_SIGNBIT(&du)) { + return 0; + } + } + *ival = t; + return 1; +} + +/* Check whether a duk_double_t is a whole number in the 32-bit range, and if + * so, return a duk_int32_t. + */ +DUK_INTERNAL duk_bool_t duk_is_whole_get_int32(duk_double_t x, duk_int32_t *ival) { + duk_int32_t t; + + t = duk_double_to_int32_t(x); + if (!duk_double_equals((duk_double_t) t, x)) { + return 0; + } + *ival = t; + return 1; +} + +/* Division: division by zero is undefined behavior (and may in fact trap) + * so it needs special handling for portability. + */ + +DUK_INTERNAL DUK_INLINE duk_double_t duk_double_div(duk_double_t x, duk_double_t y) { +#if !defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) + if (DUK_UNLIKELY(duk_double_equals(y, 0.0) != 0)) { + /* In C99+ division by zero is undefined behavior so + * avoid it entirely. Hopefully the compiler is + * smart enough to avoid emitting any actual code + * because almost all practical platforms behave as + * expected. + */ + if (x > 0.0) { + if (DUK_SIGNBIT(y)) { + return -DUK_DOUBLE_INFINITY; + } else { + return DUK_DOUBLE_INFINITY; + } + } else if (x < 0.0) { + if (DUK_SIGNBIT(y)) { + return DUK_DOUBLE_INFINITY; + } else { + return -DUK_DOUBLE_INFINITY; + } + } else { + /* +/- 0, NaN */ + return DUK_DOUBLE_NAN; + } + } +#endif + + return x / y; +} + +/* Double and float byteorder changes. */ + +DUK_INTERNAL DUK_INLINE void duk_dblunion_host_to_little(duk_double_union *u) { +#if defined(DUK_USE_DOUBLE_LE) + /* HGFEDCBA -> HGFEDCBA */ + DUK_UNREF(u); +#elif defined(DUK_USE_DOUBLE_ME) + duk_uint32_t a, b; + + /* DCBAHGFE -> HGFEDCBA */ + a = u->ui[0]; + b = u->ui[1]; + u->ui[0] = b; + u->ui[1] = a; +#elif defined(DUK_USE_DOUBLE_BE) + /* ABCDEFGH -> HGFEDCBA */ +#if defined(DUK_USE_64BIT_OPS) + u->ull[0] = DUK_BSWAP64(u->ull[0]); +#else + duk_uint32_t a, b; + + a = u->ui[0]; + b = u->ui[1]; + u->ui[0] = DUK_BSWAP32(b); + u->ui[1] = DUK_BSWAP32(a); +#endif +#else +#error internal error +#endif +} + +DUK_INTERNAL DUK_INLINE void duk_dblunion_little_to_host(duk_double_union *u) { + duk_dblunion_host_to_little(u); +} + +DUK_INTERNAL DUK_INLINE void duk_dblunion_host_to_big(duk_double_union *u) { +#if defined(DUK_USE_DOUBLE_LE) + /* HGFEDCBA -> ABCDEFGH */ +#if defined(DUK_USE_64BIT_OPS) + u->ull[0] = DUK_BSWAP64(u->ull[0]); +#else + duk_uint32_t a, b; + + a = u->ui[0]; + b = u->ui[1]; + u->ui[0] = DUK_BSWAP32(b); + u->ui[1] = DUK_BSWAP32(a); +#endif +#elif defined(DUK_USE_DOUBLE_ME) + duk_uint32_t a, b; + + /* DCBAHGFE -> ABCDEFGH */ + a = u->ui[0]; + b = u->ui[1]; + u->ui[0] = DUK_BSWAP32(a); + u->ui[1] = DUK_BSWAP32(b); +#elif defined(DUK_USE_DOUBLE_BE) + /* ABCDEFGH -> ABCDEFGH */ + DUK_UNREF(u); +#else +#error internal error +#endif +} + +DUK_INTERNAL DUK_INLINE void duk_dblunion_big_to_host(duk_double_union *u) { + duk_dblunion_host_to_big(u); +} + +DUK_INTERNAL DUK_INLINE void duk_fltunion_host_to_big(duk_float_union *u) { +#if defined(DUK_USE_DOUBLE_LE) || defined(DUK_USE_DOUBLE_ME) + /* DCBA -> ABCD */ + u->ui[0] = DUK_BSWAP32(u->ui[0]); +#elif defined(DUK_USE_DOUBLE_BE) + /* ABCD -> ABCD */ + DUK_UNREF(u); +#else +#error internal error +#endif +} + +DUK_INTERNAL DUK_INLINE void duk_fltunion_big_to_host(duk_float_union *u) { + duk_fltunion_host_to_big(u); +} + +/* Comparison: ensures comparison operates on exactly correct types, avoiding + * some floating point comparison pitfalls (e.g. atan2() assertions failed on + * -m32 with direct comparison, even with explicit casts). + */ +#if defined(DUK_USE_GCC_PRAGMAS) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wfloat-equal" +#elif defined(DUK_USE_CLANG_PRAGMAS) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wfloat-equal" +#endif + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_bool_t duk_double_equals(duk_double_t x, duk_double_t y) { + return x == y; +} + +DUK_INTERNAL DUK_ALWAYS_INLINE duk_bool_t duk_float_equals(duk_float_t x, duk_float_t y) { + return x == y; +} +#if defined(DUK_USE_GCC_PRAGMAS) +#pragma GCC diagnostic pop +#elif defined(DUK_USE_CLANG_PRAGMAS) +#pragma clang diagnostic pop +#endif +#line 1 "duk_util_hashbytes.c" +/* + * Hash function duk_util_hashbytes(). + * + * Currently, 32-bit MurmurHash2. + * + * Don't rely on specific hash values; hash function may be endianness + * dependent, for instance. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_STRHASH_DENSE) +/* 'magic' constants for Murmurhash2 */ +#define DUK__MAGIC_M ((duk_uint32_t) 0x5bd1e995UL) +#define DUK__MAGIC_R 24 + +DUK_INTERNAL duk_uint32_t duk_util_hashbytes(const duk_uint8_t *data, duk_size_t len, duk_uint32_t seed) { + duk_uint32_t h = seed ^ ((duk_uint32_t) len); + + while (len >= 4) { + /* Portability workaround is required for platforms without + * unaligned access. The replacement code emulates little + * endian access even on big endian architectures, which is + * OK as long as it is consistent for a build. + */ +#if defined(DUK_USE_HASHBYTES_UNALIGNED_U32_ACCESS) + duk_uint32_t k = *((const duk_uint32_t *) (const void *) data); +#else + duk_uint32_t k = ((duk_uint32_t) data[0]) | + (((duk_uint32_t) data[1]) << 8) | + (((duk_uint32_t) data[2]) << 16) | + (((duk_uint32_t) data[3]) << 24); +#endif + + k *= DUK__MAGIC_M; + k ^= k >> DUK__MAGIC_R; + k *= DUK__MAGIC_M; + h *= DUK__MAGIC_M; + h ^= k; + data += 4; + len -= 4; + } + + switch (len) { + case 3: h ^= data[2] << 16; + case 2: h ^= data[1] << 8; + case 1: h ^= data[0]; + h *= DUK__MAGIC_M; + } + + h ^= h >> 13; + h *= DUK__MAGIC_M; + h ^= h >> 15; + + return h; +} +#endif /* DUK_USE_STRHASH_DENSE */ + +/* automatic undefs */ +#undef DUK__MAGIC_M +#undef DUK__MAGIC_R +#line 1 "duk_util_memory.c" +/* + * Memory utils. + */ + +/* #include duk_internal.h -> already included */ + +#if defined(DUK_USE_ALLOW_UNDEFINED_BEHAVIOR) +DUK_INTERNAL DUK_INLINE duk_small_int_t duk_memcmp_unsafe(const void *s1, const void *s2, duk_size_t len) { + DUK_ASSERT(s1 != NULL || len == 0U); + DUK_ASSERT(s2 != NULL || len == 0U); + return DUK_MEMCMP(s1, s2, (size_t) len); +} + +DUK_INTERNAL DUK_INLINE duk_small_int_t duk_memcmp(const void *s1, const void *s2, duk_size_t len) { + DUK_ASSERT(s1 != NULL); + DUK_ASSERT(s2 != NULL); + return DUK_MEMCMP(s1, s2, (size_t) len); +} +#else /* DUK_USE_ALLOW_UNDEFINED_BEHAVIOR */ +DUK_INTERNAL DUK_INLINE duk_small_int_t duk_memcmp_unsafe(const void *s1, const void *s2, duk_size_t len) { + DUK_ASSERT(s1 != NULL || len == 0U); + DUK_ASSERT(s2 != NULL || len == 0U); + if (DUK_UNLIKELY(len == 0U)) { + return 0; + } + DUK_ASSERT(s1 != NULL); + DUK_ASSERT(s2 != NULL); + return duk_memcmp(s1, s2, len); +} + +DUK_INTERNAL DUK_INLINE duk_small_int_t duk_memcmp(const void *s1, const void *s2, duk_size_t len) { + DUK_ASSERT(s1 != NULL); + DUK_ASSERT(s2 != NULL); + return DUK_MEMCMP(s1, s2, (size_t) len); +} +#endif /* DUK_USE_ALLOW_UNDEFINED_BEHAVIOR */ +#line 1 "duk_util_tinyrandom.c" +/* + * A tiny random number generator used for Math.random() and other internals. + * + * Default algorithm is xoroshiro128+: http://xoroshiro.di.unimi.it/xoroshiro128plus.c + * with SplitMix64 seed preparation: http://xorshift.di.unimi.it/splitmix64.c. + * + * Low memory targets and targets without 64-bit types use a slightly smaller + * (but slower) algorithm by Adi Shamir: + * http://www.woodmann.com/forum/archive/index.php/t-3100.html. + * + */ + +/* #include duk_internal.h -> already included */ + +#if !defined(DUK_USE_GET_RANDOM_DOUBLE) + +#if defined(DUK_USE_PREFER_SIZE) || !defined(DUK_USE_64BIT_OPS) +#define DUK__RANDOM_SHAMIR3OP +#else +#define DUK__RANDOM_XOROSHIRO128PLUS +#endif + +#if defined(DUK__RANDOM_SHAMIR3OP) +#define DUK__UPDATE_RND(rnd) do { \ + (rnd) += ((rnd) * (rnd)) | 0x05UL; \ + (rnd) = ((rnd) & 0xffffffffUL); /* if duk_uint32_t is exactly 32 bits, this is a NOP */ \ + } while (0) + +#define DUK__RND_BIT(rnd) ((rnd) >> 31) /* only use the highest bit */ + +DUK_INTERNAL void duk_util_tinyrandom_prepare_seed(duk_hthread *thr) { + DUK_UNREF(thr); /* Nothing now. */ +} + +DUK_INTERNAL duk_double_t duk_util_tinyrandom_get_double(duk_hthread *thr) { + duk_double_t t; + duk_small_int_t n; + duk_uint32_t rnd; + + rnd = thr->heap->rnd_state; + + n = 53; /* enough to cover the whole mantissa */ + t = 0.0; + + do { + DUK__UPDATE_RND(rnd); + t += DUK__RND_BIT(rnd); + t /= 2.0; + } while (--n); + + thr->heap->rnd_state = rnd; + + DUK_ASSERT(t >= (duk_double_t) 0.0); + DUK_ASSERT(t < (duk_double_t) 1.0); + + return t; +} +#endif /* DUK__RANDOM_SHAMIR3OP */ + +#if defined(DUK__RANDOM_XOROSHIRO128PLUS) +DUK_LOCAL DUK_ALWAYS_INLINE duk_uint64_t duk__rnd_splitmix64(duk_uint64_t *x) { + duk_uint64_t z; + z = (*x += DUK_U64_CONSTANT(0x9E3779B97F4A7C15)); + z = (z ^ (z >> 30U)) * DUK_U64_CONSTANT(0xBF58476D1CE4E5B9); + z = (z ^ (z >> 27U)) * DUK_U64_CONSTANT(0x94D049BB133111EB); + return z ^ (z >> 31U); +} + +DUK_LOCAL DUK_ALWAYS_INLINE duk_uint64_t duk__rnd_rotl(const duk_uint64_t x, duk_small_uint_t k) { + return (x << k) | (x >> (64U - k)); +} + +DUK_LOCAL DUK_ALWAYS_INLINE duk_uint64_t duk__xoroshiro128plus(duk_uint64_t *s) { + duk_uint64_t s0; + duk_uint64_t s1; + duk_uint64_t res; + + s0 = s[0]; + s1 = s[1]; + res = s0 + s1; + s1 ^= s0; + s[0] = duk__rnd_rotl(s0, 55) ^ s1 ^ (s1 << 14U); + s[1] = duk__rnd_rotl(s1, 36); + + return res; +} + +DUK_INTERNAL void duk_util_tinyrandom_prepare_seed(duk_hthread *thr) { + duk_small_uint_t i; + duk_uint64_t x; + + /* Mix both halves of the initial seed with SplitMix64. The intent + * is to ensure that very similar raw seeds (which is usually the case + * because current seed is Date.now()) result in different xoroshiro128+ + * seeds. + */ + x = thr->heap->rnd_state[0]; /* Only [0] is used as input here. */ + for (i = 0; i < 64; i++) { + thr->heap->rnd_state[i & 0x01] = duk__rnd_splitmix64(&x); /* Keep last 2 values. */ + } +} + +DUK_INTERNAL duk_double_t duk_util_tinyrandom_get_double(duk_hthread *thr) { + duk_uint64_t v; + duk_double_union du; + + /* For big and little endian the integer and IEEE double byte order + * is the same so a direct assignment works. For mixed endian the + * 32-bit parts must be swapped. + */ + v = (DUK_U64_CONSTANT(0x3ff) << 52U) | (duk__xoroshiro128plus((duk_uint64_t *) thr->heap->rnd_state) >> 12U); + du.ull[0] = v; +#if defined(DUK_USE_DOUBLE_ME) + do { + duk_uint32_t tmp; + tmp = du.ui[0]; + du.ui[0] = du.ui[1]; + du.ui[1] = tmp; + } while (0); +#endif + return du.d - 1.0; +} +#endif /* DUK__RANDOM_XOROSHIRO128PLUS */ + +#endif /* !DUK_USE_GET_RANDOM_DOUBLE */ + +/* automatic undefs */ +#undef DUK__RANDOM_SHAMIR3OP +#undef DUK__RANDOM_XOROSHIRO128PLUS +#undef DUK__RND_BIT +#undef DUK__UPDATE_RND diff --git a/core/src/duktape/duktape.h b/core/src/duktape/duktape.h new file mode 100644 index 00000000..7850c996 --- /dev/null +++ b/core/src/duktape/duktape.h @@ -0,0 +1,1450 @@ +/* + * Duktape public API for Duktape 2.5.0. + * + * See the API reference for documentation on call semantics. The exposed, + * supported API is between the "BEGIN PUBLIC API" and "END PUBLIC API" + * comments. Other parts of the header are Duktape internal and related to + * e.g. platform/compiler/feature detection. + * + * Git commit 6001888049cb42656f8649db020e804bcdeca6a7 (v2.5.0). + * Git branch master. + * + * See Duktape AUTHORS.rst and LICENSE.txt for copyright and + * licensing information. + */ + +/* LICENSE.txt */ +/* + * =============== + * Duktape license + * =============== + * + * (http://opensource.org/licenses/MIT) + * + * Copyright (c) 2013-2019 by Duktape authors (see AUTHORS.rst) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* AUTHORS.rst */ +/* + * =============== + * Duktape authors + * =============== + * + * Copyright + * ========= + * + * Duktape copyrights are held by its authors. Each author has a copyright + * to their contribution, and agrees to irrevocably license the contribution + * under the Duktape ``LICENSE.txt``. + * + * Authors + * ======= + * + * Please include an e-mail address, a link to your GitHub profile, or something + * similar to allow your contribution to be identified accurately. + * + * The following people have contributed code, website contents, or Wiki contents, + * and agreed to irrevocably license their contributions under the Duktape + * ``LICENSE.txt`` (in order of appearance): + * + * * Sami Vaarala + * * Niki Dobrev + * * Andreas \u00d6man + * * L\u00e1szl\u00f3 Lang\u00f3 + * * Legimet + * * Karl Skomski + * * Bruce Pascoe + * * Ren\u00e9 Hollander + * * Julien Hamaide (https://github.com/crazyjul) + * * Sebastian G\u00f6tte (https://github.com/jaseg) + * * Tomasz Magulski (https://github.com/magul) + * * \D. Bohdan (https://github.com/dbohdan) + * * Ond\u0159ej Jirman (https://github.com/megous) + * * Sa\u00fal Ibarra Corretg\u00e9 + * * Jeremy HU + * * Ole Andr\u00e9 Vadla Ravn\u00e5s (https://github.com/oleavr) + * * Harold Brenes (https://github.com/harold-b) + * * Oliver Crow (https://github.com/ocrow) + * * Jakub Ch\u0142api\u0144ski (https://github.com/jchlapinski) + * * Brett Vickers (https://github.com/beevik) + * * Dominik Okwieka (https://github.com/okitec) + * * Remko Tron\u00e7on (https://el-tramo.be) + * * Romero Malaquias (rbsm@ic.ufal.br) + * * Michael Drake + * * Steven Don (https://github.com/shdon) + * * Simon Stone (https://github.com/sstone1) + * * \J. McC. (https://github.com/jmhmccr) + * * Jakub Nowakowski (https://github.com/jimvonmoon) + * * Tommy Nguyen (https://github.com/tn0502) + * * Fabrice Fontaine (https://github.com/ffontaine) + * * Christopher Hiller (https://github.com/boneskull) + * * Gonzalo Diethelm (https://github.com/gonzus) + * * Michal Kasperek (https://github.com/michalkas) + * * Andrew Janke (https://github.com/apjanke) + * * Steve Fan (https://github.com/stevefan1999) + * * Edward Betts (https://github.com/edwardbetts) + * * Ozhan Duz (https://github.com/webfolderio) + * * Akos Kiss (https://github.com/akosthekiss) + * * TheBrokenRail (https://github.com/TheBrokenRail) + * * Jesse Doyle (https://github.com/jessedoyle) + * * Gero Kuehn (https://github.com/dc6jgk) + * * James Swift (https://github.com/phraemer) + * * Luis de Bethencourt (https://github.com/luisbg) + * * Ian Whyman (https://github.com/v00d00) + * * Rick Sayre (https://github.com/whorfin) + * + * Other contributions + * =================== + * + * The following people have contributed something other than code (e.g. reported + * bugs, provided ideas, etc; roughly in order of appearance): + * + * * Greg Burns + * * Anthony Rabine + * * Carlos Costa + * * Aur\u00e9lien Bouilland + * * Preet Desai (Pris Matic) + * * judofyr (http://www.reddit.com/user/judofyr) + * * Jason Woofenden + * * Micha\u0142 Przyby\u015b + * * Anthony Howe + * * Conrad Pankoff + * * Jim Schimpf + * * Rajaran Gaunker (https://github.com/zimbabao) + * * Andreas \u00d6man + * * Doug Sanden + * * Josh Engebretson (https://github.com/JoshEngebretson) + * * Remo Eichenberger (https://github.com/remoe) + * * Mamod Mehyar (https://github.com/mamod) + * * David Demelier (https://github.com/markand) + * * Tim Caswell (https://github.com/creationix) + * * Mitchell Blank Jr (https://github.com/mitchblank) + * * https://github.com/yushli + * * Seo Sanghyeon (https://github.com/sanxiyn) + * * Han ChoongWoo (https://github.com/tunz) + * * Joshua Peek (https://github.com/josh) + * * Bruce E. Pascoe (https://github.com/fatcerberus) + * * https://github.com/Kelledin + * * https://github.com/sstruchtrup + * * Michael Drake (https://github.com/tlsa) + * * https://github.com/chris-y + * * Laurent Zubiaur (https://github.com/lzubiaur) + * * Neil Kolban (https://github.com/nkolban) + * * Wilhelm Wanecek (https://github.com/wanecek) + * * Andrew Janke (https://github.com/apjanke) + * * Unamer (https://github.com/unamer) + * * Karl Dahlke (eklhad@gmail.com) + * + * If you are accidentally missing from this list, send me an e-mail + * (``sami.vaarala@iki.fi``) and I'll fix the omission. + */ + +#if !defined(DUKTAPE_H_INCLUDED) +#define DUKTAPE_H_INCLUDED + +#define DUK_SINGLE_FILE + +/* + * BEGIN PUBLIC API + */ + +/* + * Version and Git commit identification + */ + +/* Duktape version, (major * 10000) + (minor * 100) + patch. Allows C code + * to #if (DUK_VERSION >= NNN) against Duktape API version. The same value + * is also available to ECMAScript code in Duktape.version. Unofficial + * development snapshots have 99 for patch level (e.g. 0.10.99 would be a + * development version after 0.10.0 but before the next official release). + */ +#define DUK_VERSION 20500L + +/* Git commit, describe, and branch for Duktape build. Useful for + * non-official snapshot builds so that application code can easily log + * which Duktape snapshot was used. Not available in the ECMAScript + * environment. + */ +#define DUK_GIT_COMMIT "6001888049cb42656f8649db020e804bcdeca6a7" +#define DUK_GIT_DESCRIBE "v2.5.0" +#define DUK_GIT_BRANCH "master" + +/* External duk_config.h provides platform/compiler/OS dependent + * typedefs and macros, and DUK_USE_xxx config options so that + * the rest of Duktape doesn't need to do any feature detection. + * DUK_VERSION is defined before including so that configuration + * snippets can react to it. + */ +#include "duk_config.h" + +/* + * Avoid C++ name mangling + */ + +#if defined(__cplusplus) +extern "C" { +#endif + +/* + * Some defines forwarded from feature detection + */ + +#undef DUK_API_VARIADIC_MACROS +#if defined(DUK_USE_VARIADIC_MACROS) +#define DUK_API_VARIADIC_MACROS +#endif + +#define DUK_API_NORETURN(decl) DUK_NORETURN(decl) + +/* + * Public API specific typedefs + * + * Many types are wrapped by Duktape for portability to rare platforms + * where e.g. 'int' is a 16-bit type. See practical typing discussion + * in Duktape web documentation. + */ + +struct duk_thread_state; +struct duk_memory_functions; +struct duk_function_list_entry; +struct duk_number_list_entry; +struct duk_time_components; + +/* duk_context is now defined in duk_config.h because it may also be + * referenced there by prototypes. + */ +typedef struct duk_thread_state duk_thread_state; +typedef struct duk_memory_functions duk_memory_functions; +typedef struct duk_function_list_entry duk_function_list_entry; +typedef struct duk_number_list_entry duk_number_list_entry; +typedef struct duk_time_components duk_time_components; + +typedef duk_ret_t (*duk_c_function)(duk_context *ctx); +typedef void *(*duk_alloc_function) (void *udata, duk_size_t size); +typedef void *(*duk_realloc_function) (void *udata, void *ptr, duk_size_t size); +typedef void (*duk_free_function) (void *udata, void *ptr); +typedef void (*duk_fatal_function) (void *udata, const char *msg); +typedef void (*duk_decode_char_function) (void *udata, duk_codepoint_t codepoint); +typedef duk_codepoint_t (*duk_map_char_function) (void *udata, duk_codepoint_t codepoint); +typedef duk_ret_t (*duk_safe_call_function) (duk_context *ctx, void *udata); +typedef duk_size_t (*duk_debug_read_function) (void *udata, char *buffer, duk_size_t length); +typedef duk_size_t (*duk_debug_write_function) (void *udata, const char *buffer, duk_size_t length); +typedef duk_size_t (*duk_debug_peek_function) (void *udata); +typedef void (*duk_debug_read_flush_function) (void *udata); +typedef void (*duk_debug_write_flush_function) (void *udata); +typedef duk_idx_t (*duk_debug_request_function) (duk_context *ctx, void *udata, duk_idx_t nvalues); +typedef void (*duk_debug_detached_function) (duk_context *ctx, void *udata); + +struct duk_thread_state { + /* XXX: Enough space to hold internal suspend/resume structure. + * This is rather awkward and to be fixed when the internal + * structure is visible for the public API header. + */ + char data[128]; +}; + +struct duk_memory_functions { + duk_alloc_function alloc_func; + duk_realloc_function realloc_func; + duk_free_function free_func; + void *udata; +}; + +struct duk_function_list_entry { + const char *key; + duk_c_function value; + duk_idx_t nargs; +}; + +struct duk_number_list_entry { + const char *key; + duk_double_t value; +}; + +struct duk_time_components { + duk_double_t year; /* year, e.g. 2016, ECMAScript year range */ + duk_double_t month; /* month: 1-12 */ + duk_double_t day; /* day: 1-31 */ + duk_double_t hours; /* hour: 0-59 */ + duk_double_t minutes; /* minute: 0-59 */ + duk_double_t seconds; /* second: 0-59 (in POSIX time no leap second) */ + duk_double_t milliseconds; /* may contain sub-millisecond fractions */ + duk_double_t weekday; /* weekday: 0-6, 0=Sunday, 1=Monday, ..., 6=Saturday */ +}; + +/* + * Constants + */ + +/* Duktape debug protocol version used by this build. */ +#define DUK_DEBUG_PROTOCOL_VERSION 2 + +/* Used to represent invalid index; if caller uses this without checking, + * this index will map to a non-existent stack entry. Also used in some + * API calls as a marker to denote "no value". + */ +#define DUK_INVALID_INDEX DUK_IDX_MIN + +/* Indicates that a native function does not have a fixed number of args, + * and the argument stack should not be capped/extended at all. + */ +#define DUK_VARARGS ((duk_int_t) (-1)) + +/* Number of value stack entries (in addition to actual call arguments) + * guaranteed to be allocated on entry to a Duktape/C function. + */ +#define DUK_API_ENTRY_STACK 64U + +/* Value types, used by e.g. duk_get_type() */ +#define DUK_TYPE_MIN 0U +#define DUK_TYPE_NONE 0U /* no value, e.g. invalid index */ +#define DUK_TYPE_UNDEFINED 1U /* ECMAScript undefined */ +#define DUK_TYPE_NULL 2U /* ECMAScript null */ +#define DUK_TYPE_BOOLEAN 3U /* ECMAScript boolean: 0 or 1 */ +#define DUK_TYPE_NUMBER 4U /* ECMAScript number: double */ +#define DUK_TYPE_STRING 5U /* ECMAScript string: CESU-8 / extended UTF-8 encoded */ +#define DUK_TYPE_OBJECT 6U /* ECMAScript object: includes objects, arrays, functions, threads */ +#define DUK_TYPE_BUFFER 7U /* fixed or dynamic, garbage collected byte buffer */ +#define DUK_TYPE_POINTER 8U /* raw void pointer */ +#define DUK_TYPE_LIGHTFUNC 9U /* lightweight function pointer */ +#define DUK_TYPE_MAX 9U + +/* Value mask types, used by e.g. duk_get_type_mask() */ +#define DUK_TYPE_MASK_NONE (1U << DUK_TYPE_NONE) +#define DUK_TYPE_MASK_UNDEFINED (1U << DUK_TYPE_UNDEFINED) +#define DUK_TYPE_MASK_NULL (1U << DUK_TYPE_NULL) +#define DUK_TYPE_MASK_BOOLEAN (1U << DUK_TYPE_BOOLEAN) +#define DUK_TYPE_MASK_NUMBER (1U << DUK_TYPE_NUMBER) +#define DUK_TYPE_MASK_STRING (1U << DUK_TYPE_STRING) +#define DUK_TYPE_MASK_OBJECT (1U << DUK_TYPE_OBJECT) +#define DUK_TYPE_MASK_BUFFER (1U << DUK_TYPE_BUFFER) +#define DUK_TYPE_MASK_POINTER (1U << DUK_TYPE_POINTER) +#define DUK_TYPE_MASK_LIGHTFUNC (1U << DUK_TYPE_LIGHTFUNC) +#define DUK_TYPE_MASK_THROW (1U << 10) /* internal flag value: throw if mask doesn't match */ +#define DUK_TYPE_MASK_PROMOTE (1U << 11) /* internal flag value: promote to object if mask matches */ + +/* Coercion hints */ +#define DUK_HINT_NONE 0 /* prefer number, unless input is a Date, in which + * case prefer string (E5 Section 8.12.8) + */ +#define DUK_HINT_STRING 1 /* prefer string */ +#define DUK_HINT_NUMBER 2 /* prefer number */ + +/* Enumeration flags for duk_enum() */ +#define DUK_ENUM_INCLUDE_NONENUMERABLE (1U << 0) /* enumerate non-numerable properties in addition to enumerable */ +#define DUK_ENUM_INCLUDE_HIDDEN (1U << 1) /* enumerate hidden symbols too (in Duktape 1.x called internal properties) */ +#define DUK_ENUM_INCLUDE_SYMBOLS (1U << 2) /* enumerate symbols */ +#define DUK_ENUM_EXCLUDE_STRINGS (1U << 3) /* exclude strings */ +#define DUK_ENUM_OWN_PROPERTIES_ONLY (1U << 4) /* don't walk prototype chain, only check own properties */ +#define DUK_ENUM_ARRAY_INDICES_ONLY (1U << 5) /* only enumerate array indices */ +/* XXX: misleading name */ +#define DUK_ENUM_SORT_ARRAY_INDICES (1U << 6) /* sort array indices (applied to full enumeration result, including inherited array indices); XXX: misleading name */ +#define DUK_ENUM_NO_PROXY_BEHAVIOR (1U << 7) /* enumerate a proxy object itself without invoking proxy behavior */ + +/* Compilation flags for duk_compile() and duk_eval() */ +/* DUK_COMPILE_xxx bits 0-2 are reserved for an internal 'nargs' argument. + */ +#define DUK_COMPILE_EVAL (1U << 3) /* compile eval code (instead of global code) */ +#define DUK_COMPILE_FUNCTION (1U << 4) /* compile function code (instead of global code) */ +#define DUK_COMPILE_STRICT (1U << 5) /* use strict (outer) context for global, eval, or function code */ +#define DUK_COMPILE_SHEBANG (1U << 6) /* allow shebang ('#! ...') comment on first line of source */ +#define DUK_COMPILE_SAFE (1U << 7) /* (internal) catch compilation errors */ +#define DUK_COMPILE_NORESULT (1U << 8) /* (internal) omit eval result */ +#define DUK_COMPILE_NOSOURCE (1U << 9) /* (internal) no source string on stack */ +#define DUK_COMPILE_STRLEN (1U << 10) /* (internal) take strlen() of src_buffer (avoids double evaluation in macro) */ +#define DUK_COMPILE_NOFILENAME (1U << 11) /* (internal) no filename on stack */ +#define DUK_COMPILE_FUNCEXPR (1U << 12) /* (internal) source is a function expression (used for Function constructor) */ + +/* Flags for duk_def_prop() and its variants; base flags + a lot of convenience shorthands */ +#define DUK_DEFPROP_WRITABLE (1U << 0) /* set writable (effective if DUK_DEFPROP_HAVE_WRITABLE set) */ +#define DUK_DEFPROP_ENUMERABLE (1U << 1) /* set enumerable (effective if DUK_DEFPROP_HAVE_ENUMERABLE set) */ +#define DUK_DEFPROP_CONFIGURABLE (1U << 2) /* set configurable (effective if DUK_DEFPROP_HAVE_CONFIGURABLE set) */ +#define DUK_DEFPROP_HAVE_WRITABLE (1U << 3) /* set/clear writable */ +#define DUK_DEFPROP_HAVE_ENUMERABLE (1U << 4) /* set/clear enumerable */ +#define DUK_DEFPROP_HAVE_CONFIGURABLE (1U << 5) /* set/clear configurable */ +#define DUK_DEFPROP_HAVE_VALUE (1U << 6) /* set value (given on value stack) */ +#define DUK_DEFPROP_HAVE_GETTER (1U << 7) /* set getter (given on value stack) */ +#define DUK_DEFPROP_HAVE_SETTER (1U << 8) /* set setter (given on value stack) */ +#define DUK_DEFPROP_FORCE (1U << 9) /* force change if possible, may still fail for e.g. virtual properties */ +#define DUK_DEFPROP_SET_WRITABLE (DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_WRITABLE) +#define DUK_DEFPROP_CLEAR_WRITABLE DUK_DEFPROP_HAVE_WRITABLE +#define DUK_DEFPROP_SET_ENUMERABLE (DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_ENUMERABLE) +#define DUK_DEFPROP_CLEAR_ENUMERABLE DUK_DEFPROP_HAVE_ENUMERABLE +#define DUK_DEFPROP_SET_CONFIGURABLE (DUK_DEFPROP_HAVE_CONFIGURABLE | DUK_DEFPROP_CONFIGURABLE) +#define DUK_DEFPROP_CLEAR_CONFIGURABLE DUK_DEFPROP_HAVE_CONFIGURABLE +#define DUK_DEFPROP_W DUK_DEFPROP_WRITABLE +#define DUK_DEFPROP_E DUK_DEFPROP_ENUMERABLE +#define DUK_DEFPROP_C DUK_DEFPROP_CONFIGURABLE +#define DUK_DEFPROP_WE (DUK_DEFPROP_WRITABLE | DUK_DEFPROP_ENUMERABLE) +#define DUK_DEFPROP_WC (DUK_DEFPROP_WRITABLE | DUK_DEFPROP_CONFIGURABLE) +#define DUK_DEFPROP_EC (DUK_DEFPROP_ENUMERABLE | DUK_DEFPROP_CONFIGURABLE) +#define DUK_DEFPROP_WEC (DUK_DEFPROP_WRITABLE | DUK_DEFPROP_ENUMERABLE | DUK_DEFPROP_CONFIGURABLE) +#define DUK_DEFPROP_HAVE_W DUK_DEFPROP_HAVE_WRITABLE +#define DUK_DEFPROP_HAVE_E DUK_DEFPROP_HAVE_ENUMERABLE +#define DUK_DEFPROP_HAVE_C DUK_DEFPROP_HAVE_CONFIGURABLE +#define DUK_DEFPROP_HAVE_WE (DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_HAVE_ENUMERABLE) +#define DUK_DEFPROP_HAVE_WC (DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_HAVE_CONFIGURABLE) +#define DUK_DEFPROP_HAVE_EC (DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_HAVE_CONFIGURABLE) +#define DUK_DEFPROP_HAVE_WEC (DUK_DEFPROP_HAVE_WRITABLE | DUK_DEFPROP_HAVE_ENUMERABLE | DUK_DEFPROP_HAVE_CONFIGURABLE) +#define DUK_DEFPROP_SET_W DUK_DEFPROP_SET_WRITABLE +#define DUK_DEFPROP_SET_E DUK_DEFPROP_SET_ENUMERABLE +#define DUK_DEFPROP_SET_C DUK_DEFPROP_SET_CONFIGURABLE +#define DUK_DEFPROP_SET_WE (DUK_DEFPROP_SET_WRITABLE | DUK_DEFPROP_SET_ENUMERABLE) +#define DUK_DEFPROP_SET_WC (DUK_DEFPROP_SET_WRITABLE | DUK_DEFPROP_SET_CONFIGURABLE) +#define DUK_DEFPROP_SET_EC (DUK_DEFPROP_SET_ENUMERABLE | DUK_DEFPROP_SET_CONFIGURABLE) +#define DUK_DEFPROP_SET_WEC (DUK_DEFPROP_SET_WRITABLE | DUK_DEFPROP_SET_ENUMERABLE | DUK_DEFPROP_SET_CONFIGURABLE) +#define DUK_DEFPROP_CLEAR_W DUK_DEFPROP_CLEAR_WRITABLE +#define DUK_DEFPROP_CLEAR_E DUK_DEFPROP_CLEAR_ENUMERABLE +#define DUK_DEFPROP_CLEAR_C DUK_DEFPROP_CLEAR_CONFIGURABLE +#define DUK_DEFPROP_CLEAR_WE (DUK_DEFPROP_CLEAR_WRITABLE | DUK_DEFPROP_CLEAR_ENUMERABLE) +#define DUK_DEFPROP_CLEAR_WC (DUK_DEFPROP_CLEAR_WRITABLE | DUK_DEFPROP_CLEAR_CONFIGURABLE) +#define DUK_DEFPROP_CLEAR_EC (DUK_DEFPROP_CLEAR_ENUMERABLE | DUK_DEFPROP_CLEAR_CONFIGURABLE) +#define DUK_DEFPROP_CLEAR_WEC (DUK_DEFPROP_CLEAR_WRITABLE | DUK_DEFPROP_CLEAR_ENUMERABLE | DUK_DEFPROP_CLEAR_CONFIGURABLE) +#define DUK_DEFPROP_ATTR_W (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_W) +#define DUK_DEFPROP_ATTR_E (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_E) +#define DUK_DEFPROP_ATTR_C (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_C) +#define DUK_DEFPROP_ATTR_WE (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_WE) +#define DUK_DEFPROP_ATTR_WC (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_WC) +#define DUK_DEFPROP_ATTR_EC (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_EC) +#define DUK_DEFPROP_ATTR_WEC (DUK_DEFPROP_HAVE_WEC | DUK_DEFPROP_WEC) + +/* Flags for duk_push_thread_raw() */ +#define DUK_THREAD_NEW_GLOBAL_ENV (1U << 0) /* create a new global environment */ + +/* Flags for duk_gc() */ +#define DUK_GC_COMPACT (1U << 0) /* compact heap objects */ + +/* Error codes (must be 8 bits at most, see duk_error.h) */ +#define DUK_ERR_NONE 0 /* no error (e.g. from duk_get_error_code()) */ +#define DUK_ERR_ERROR 1 /* Error */ +#define DUK_ERR_EVAL_ERROR 2 /* EvalError */ +#define DUK_ERR_RANGE_ERROR 3 /* RangeError */ +#define DUK_ERR_REFERENCE_ERROR 4 /* ReferenceError */ +#define DUK_ERR_SYNTAX_ERROR 5 /* SyntaxError */ +#define DUK_ERR_TYPE_ERROR 6 /* TypeError */ +#define DUK_ERR_URI_ERROR 7 /* URIError */ + +/* Return codes for C functions (shortcut for throwing an error) */ +#define DUK_RET_ERROR (-DUK_ERR_ERROR) +#define DUK_RET_EVAL_ERROR (-DUK_ERR_EVAL_ERROR) +#define DUK_RET_RANGE_ERROR (-DUK_ERR_RANGE_ERROR) +#define DUK_RET_REFERENCE_ERROR (-DUK_ERR_REFERENCE_ERROR) +#define DUK_RET_SYNTAX_ERROR (-DUK_ERR_SYNTAX_ERROR) +#define DUK_RET_TYPE_ERROR (-DUK_ERR_TYPE_ERROR) +#define DUK_RET_URI_ERROR (-DUK_ERR_URI_ERROR) + +/* Return codes for protected calls (duk_safe_call(), duk_pcall()) */ +#define DUK_EXEC_SUCCESS 0 +#define DUK_EXEC_ERROR 1 + +/* Debug levels for DUK_USE_DEBUG_WRITE(). */ +#define DUK_LEVEL_DEBUG 0 +#define DUK_LEVEL_DDEBUG 1 +#define DUK_LEVEL_DDDEBUG 2 + +/* + * Macros to create Symbols as C statically constructed strings. + * + * Call e.g. as DUK_HIDDEN_SYMBOL("myProperty") <=> ("\xFF" "myProperty"). + * + * Local symbols have a unique suffix, caller should take care to avoid + * conflicting with the Duktape internal representation by e.g. prepending + * a '!' character: DUK_LOCAL_SYMBOL("myLocal", "!123"). + * + * Note that these can only be used for string constants, not dynamically + * created strings. + * + * You shouldn't normally use DUK_INTERNAL_SYMBOL() at all. It is reserved + * for Duktape internal symbols only. There are no versioning guarantees + * for internal symbols. + */ + +#define DUK_HIDDEN_SYMBOL(x) ("\xFF" x) +#define DUK_GLOBAL_SYMBOL(x) ("\x80" x) +#define DUK_LOCAL_SYMBOL(x,uniq) ("\x81" x "\xff" uniq) +#define DUK_WELLKNOWN_SYMBOL(x) ("\x81" x "\xff") +#define DUK_INTERNAL_SYMBOL(x) ("\x82" x) + +/* + * If no variadic macros, __FILE__ and __LINE__ are passed through globals + * which is ugly and not thread safe. + */ + +#if !defined(DUK_API_VARIADIC_MACROS) +DUK_EXTERNAL_DECL const char *duk_api_global_filename; +DUK_EXTERNAL_DECL duk_int_t duk_api_global_line; +#endif + +/* + * Context management + */ + +DUK_EXTERNAL_DECL +duk_context *duk_create_heap(duk_alloc_function alloc_func, + duk_realloc_function realloc_func, + duk_free_function free_func, + void *heap_udata, + duk_fatal_function fatal_handler); +DUK_EXTERNAL_DECL void duk_destroy_heap(duk_context *ctx); + +DUK_EXTERNAL_DECL void duk_suspend(duk_context *ctx, duk_thread_state *state); +DUK_EXTERNAL_DECL void duk_resume(duk_context *ctx, const duk_thread_state *state); + +#define duk_create_heap_default() \ + duk_create_heap(NULL, NULL, NULL, NULL, NULL) + +/* + * Memory management + * + * Raw functions have no side effects (cannot trigger GC). + */ + +DUK_EXTERNAL_DECL void *duk_alloc_raw(duk_context *ctx, duk_size_t size); +DUK_EXTERNAL_DECL void duk_free_raw(duk_context *ctx, void *ptr); +DUK_EXTERNAL_DECL void *duk_realloc_raw(duk_context *ctx, void *ptr, duk_size_t size); +DUK_EXTERNAL_DECL void *duk_alloc(duk_context *ctx, duk_size_t size); +DUK_EXTERNAL_DECL void duk_free(duk_context *ctx, void *ptr); +DUK_EXTERNAL_DECL void *duk_realloc(duk_context *ctx, void *ptr, duk_size_t size); +DUK_EXTERNAL_DECL void duk_get_memory_functions(duk_context *ctx, duk_memory_functions *out_funcs); +DUK_EXTERNAL_DECL void duk_gc(duk_context *ctx, duk_uint_t flags); + +/* + * Error handling + */ + +DUK_API_NORETURN(DUK_EXTERNAL_DECL void duk_throw_raw(duk_context *ctx)); +#define duk_throw(ctx) \ + (duk_throw_raw((ctx)), (duk_ret_t) 0) +DUK_API_NORETURN(DUK_EXTERNAL_DECL void duk_fatal_raw(duk_context *ctx, const char *err_msg)); +#define duk_fatal(ctx,err_msg) \ + (duk_fatal_raw((ctx), (err_msg)), (duk_ret_t) 0) +DUK_API_NORETURN(DUK_EXTERNAL_DECL void duk_error_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...)); + +#if defined(DUK_API_VARIADIC_MACROS) +#define duk_error(ctx,err_code,...) \ + (duk_error_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_generic_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_eval_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_EVAL_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_range_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_RANGE_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_reference_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_REFERENCE_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_syntax_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_SYNTAX_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_type_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_TYPE_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#define duk_uri_error(ctx,...) \ + (duk_error_raw((ctx), (duk_errcode_t) DUK_ERR_URI_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) +#else /* DUK_API_VARIADIC_MACROS */ +/* For legacy compilers without variadic macros a macro hack is used to allow + * variable arguments. While the macro allows "return duk_error(...)", it + * will fail with e.g. "(void) duk_error(...)". The calls are noreturn but + * with a return value to allow the "return duk_error(...)" idiom. This may + * cause some compiler warnings, but without noreturn the generated code is + * often worse. The same approach as with variadic macros (using + * "(duk_error(...), 0)") won't work due to the macro hack structure. + */ +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_error_stash(duk_context *ctx, duk_errcode_t err_code, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_generic_error_stash(duk_context *ctx, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_eval_error_stash(duk_context *ctx, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_range_error_stash(duk_context *ctx, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_reference_error_stash(duk_context *ctx, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_syntax_error_stash(duk_context *ctx, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_type_error_stash(duk_context *ctx, const char *fmt, ...)); +DUK_API_NORETURN(DUK_EXTERNAL_DECL duk_ret_t duk_uri_error_stash(duk_context *ctx, const char *fmt, ...)); +#define duk_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_error_stash) /* last value is func pointer, arguments follow in parens */ +#define duk_generic_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_generic_error_stash) +#define duk_eval_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_eval_error_stash) +#define duk_range_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_range_error_stash) +#define duk_reference_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_reference_error_stash) +#define duk_syntax_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_syntax_error_stash) +#define duk_type_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_type_error_stash) +#define duk_uri_error \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_uri_error_stash) +#endif /* DUK_API_VARIADIC_MACROS */ + +DUK_API_NORETURN(DUK_EXTERNAL_DECL void duk_error_va_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, va_list ap)); + +#define duk_error_va(ctx,err_code,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_generic_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_eval_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_EVAL_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_range_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_RANGE_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_reference_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_REFERENCE_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_syntax_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_SYNTAX_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_type_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_TYPE_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) +#define duk_uri_error_va(ctx,fmt,ap) \ + (duk_error_va_raw((ctx), (duk_errcode_t) DUK_ERR_URI_ERROR, (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)), (duk_ret_t) 0) + +/* + * Other state related functions + */ + +DUK_EXTERNAL_DECL duk_bool_t duk_is_strict_call(duk_context *ctx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_constructor_call(duk_context *ctx); + +/* + * Stack management + */ + +DUK_EXTERNAL_DECL duk_idx_t duk_normalize_index(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_idx_t duk_require_normalize_index(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_valid_index(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_require_valid_index(duk_context *ctx, duk_idx_t idx); + +DUK_EXTERNAL_DECL duk_idx_t duk_get_top(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_set_top(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_idx_t duk_get_top_index(duk_context *ctx); +DUK_EXTERNAL_DECL duk_idx_t duk_require_top_index(duk_context *ctx); + +/* Although extra/top could be an unsigned type here, using a signed type + * makes the API more robust to calling code calculation errors or corner + * cases (where caller might occasionally come up with negative values). + * Negative values are treated as zero, which is better than casting them + * to a large unsigned number. (This principle is used elsewhere in the + * API too.) + */ +DUK_EXTERNAL_DECL duk_bool_t duk_check_stack(duk_context *ctx, duk_idx_t extra); +DUK_EXTERNAL_DECL void duk_require_stack(duk_context *ctx, duk_idx_t extra); +DUK_EXTERNAL_DECL duk_bool_t duk_check_stack_top(duk_context *ctx, duk_idx_t top); +DUK_EXTERNAL_DECL void duk_require_stack_top(duk_context *ctx, duk_idx_t top); + +/* + * Stack manipulation (other than push/pop) + */ + +DUK_EXTERNAL_DECL void duk_swap(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); +DUK_EXTERNAL_DECL void duk_swap_top(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_dup(duk_context *ctx, duk_idx_t from_idx); +DUK_EXTERNAL_DECL void duk_dup_top(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_insert(duk_context *ctx, duk_idx_t to_idx); +DUK_EXTERNAL_DECL void duk_pull(duk_context *ctx, duk_idx_t from_idx); +DUK_EXTERNAL_DECL void duk_replace(duk_context *ctx, duk_idx_t to_idx); +DUK_EXTERNAL_DECL void duk_copy(duk_context *ctx, duk_idx_t from_idx, duk_idx_t to_idx); +DUK_EXTERNAL_DECL void duk_remove(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_xcopymove_raw(duk_context *to_ctx, duk_context *from_ctx, duk_idx_t count, duk_bool_t is_copy); + +#define duk_xmove_top(to_ctx,from_ctx,count) \ + duk_xcopymove_raw((to_ctx), (from_ctx), (count), 0 /*is_copy*/) +#define duk_xcopy_top(to_ctx,from_ctx,count) \ + duk_xcopymove_raw((to_ctx), (from_ctx), (count), 1 /*is_copy*/) + +/* + * Push operations + * + * Push functions return the absolute (relative to bottom of frame) + * position of the pushed value for convenience. + * + * Note: duk_dup() is technically a push. + */ + +DUK_EXTERNAL_DECL void duk_push_undefined(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_null(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_boolean(duk_context *ctx, duk_bool_t val); +DUK_EXTERNAL_DECL void duk_push_true(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_false(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_number(duk_context *ctx, duk_double_t val); +DUK_EXTERNAL_DECL void duk_push_nan(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_int(duk_context *ctx, duk_int_t val); +DUK_EXTERNAL_DECL void duk_push_uint(duk_context *ctx, duk_uint_t val); +DUK_EXTERNAL_DECL const char *duk_push_string(duk_context *ctx, const char *str); +DUK_EXTERNAL_DECL const char *duk_push_lstring(duk_context *ctx, const char *str, duk_size_t len); +DUK_EXTERNAL_DECL void duk_push_pointer(duk_context *ctx, void *p); +DUK_EXTERNAL_DECL const char *duk_push_sprintf(duk_context *ctx, const char *fmt, ...); +DUK_EXTERNAL_DECL const char *duk_push_vsprintf(duk_context *ctx, const char *fmt, va_list ap); + +/* duk_push_literal() may evaluate its argument (a C string literal) more than + * once on purpose. When speed is preferred, sizeof() avoids an unnecessary + * strlen() at runtime. Sizeof("foo") == 4, so subtract 1. The argument + * must be non-NULL and should not contain internal NUL characters as the + * behavior will then depend on config options. + */ +#if defined(DUK_USE_PREFER_SIZE) +#define duk_push_literal(ctx,cstring) duk_push_string((ctx), (cstring)) +#else +DUK_EXTERNAL_DECL const char *duk_push_literal_raw(duk_context *ctx, const char *str, duk_size_t len); +#define duk_push_literal(ctx,cstring) duk_push_literal_raw((ctx), (cstring), sizeof((cstring)) - 1U) +#endif + +DUK_EXTERNAL_DECL void duk_push_this(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_new_target(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_current_function(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_current_thread(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_global_object(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_heap_stash(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_global_stash(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_push_thread_stash(duk_context *ctx, duk_context *target_ctx); + +DUK_EXTERNAL_DECL duk_idx_t duk_push_object(duk_context *ctx); +DUK_EXTERNAL_DECL duk_idx_t duk_push_bare_object(duk_context *ctx); +DUK_EXTERNAL_DECL duk_idx_t duk_push_array(duk_context *ctx); +DUK_EXTERNAL_DECL duk_idx_t duk_push_bare_array(duk_context *ctx); +DUK_EXTERNAL_DECL duk_idx_t duk_push_c_function(duk_context *ctx, duk_c_function func, duk_idx_t nargs); +DUK_EXTERNAL_DECL duk_idx_t duk_push_c_lightfunc(duk_context *ctx, duk_c_function func, duk_idx_t nargs, duk_idx_t length, duk_int_t magic); +DUK_EXTERNAL_DECL duk_idx_t duk_push_thread_raw(duk_context *ctx, duk_uint_t flags); +DUK_EXTERNAL_DECL duk_idx_t duk_push_proxy(duk_context *ctx, duk_uint_t proxy_flags); + +#define duk_push_thread(ctx) \ + duk_push_thread_raw((ctx), 0 /*flags*/) + +#define duk_push_thread_new_globalenv(ctx) \ + duk_push_thread_raw((ctx), DUK_THREAD_NEW_GLOBAL_ENV /*flags*/) + +DUK_EXTERNAL_DECL duk_idx_t duk_push_error_object_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, ...); + +#if defined(DUK_API_VARIADIC_MACROS) +#define duk_push_error_object(ctx,err_code,...) \ + duk_push_error_object_raw((ctx), (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__) +#else +DUK_EXTERNAL_DECL duk_idx_t duk_push_error_object_stash(duk_context *ctx, duk_errcode_t err_code, const char *fmt, ...); +/* Note: parentheses are required so that the comma expression works in assignments. */ +#define duk_push_error_object \ + (duk_api_global_filename = (const char *) (DUK_FILE_MACRO), \ + duk_api_global_line = (duk_int_t) (DUK_LINE_MACRO), \ + duk_push_error_object_stash) /* last value is func pointer, arguments follow in parens */ +#endif + +DUK_EXTERNAL_DECL duk_idx_t duk_push_error_object_va_raw(duk_context *ctx, duk_errcode_t err_code, const char *filename, duk_int_t line, const char *fmt, va_list ap); +#define duk_push_error_object_va(ctx,err_code,fmt,ap) \ + duk_push_error_object_va_raw((ctx), (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), (fmt), (ap)) + +#define DUK_BUF_FLAG_DYNAMIC (1 << 0) /* internal flag: dynamic buffer */ +#define DUK_BUF_FLAG_EXTERNAL (1 << 1) /* internal flag: external buffer */ +#define DUK_BUF_FLAG_NOZERO (1 << 2) /* internal flag: don't zero allocated buffer */ + +DUK_EXTERNAL_DECL void *duk_push_buffer_raw(duk_context *ctx, duk_size_t size, duk_small_uint_t flags); + +#define duk_push_buffer(ctx,size,dynamic) \ + duk_push_buffer_raw((ctx), (size), (dynamic) ? DUK_BUF_FLAG_DYNAMIC : 0) +#define duk_push_fixed_buffer(ctx,size) \ + duk_push_buffer_raw((ctx), (size), 0 /*flags*/) +#define duk_push_dynamic_buffer(ctx,size) \ + duk_push_buffer_raw((ctx), (size), DUK_BUF_FLAG_DYNAMIC /*flags*/) +#define duk_push_external_buffer(ctx) \ + ((void) duk_push_buffer_raw((ctx), 0, DUK_BUF_FLAG_DYNAMIC | DUK_BUF_FLAG_EXTERNAL)) + +#define DUK_BUFOBJ_ARRAYBUFFER 0 +#define DUK_BUFOBJ_NODEJS_BUFFER 1 +#define DUK_BUFOBJ_DATAVIEW 2 +#define DUK_BUFOBJ_INT8ARRAY 3 +#define DUK_BUFOBJ_UINT8ARRAY 4 +#define DUK_BUFOBJ_UINT8CLAMPEDARRAY 5 +#define DUK_BUFOBJ_INT16ARRAY 6 +#define DUK_BUFOBJ_UINT16ARRAY 7 +#define DUK_BUFOBJ_INT32ARRAY 8 +#define DUK_BUFOBJ_UINT32ARRAY 9 +#define DUK_BUFOBJ_FLOAT32ARRAY 10 +#define DUK_BUFOBJ_FLOAT64ARRAY 11 + +DUK_EXTERNAL_DECL void duk_push_buffer_object(duk_context *ctx, duk_idx_t idx_buffer, duk_size_t byte_offset, duk_size_t byte_length, duk_uint_t flags); + +DUK_EXTERNAL_DECL duk_idx_t duk_push_heapptr(duk_context *ctx, void *ptr); + +/* + * Pop operations + */ + +DUK_EXTERNAL_DECL void duk_pop(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_pop_n(duk_context *ctx, duk_idx_t count); +DUK_EXTERNAL_DECL void duk_pop_2(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_pop_3(duk_context *ctx); + +/* + * Type checks + * + * duk_is_none(), which would indicate whether index it outside of stack, + * is not needed; duk_is_valid_index() gives the same information. + */ + +DUK_EXTERNAL_DECL duk_int_t duk_get_type(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_check_type(duk_context *ctx, duk_idx_t idx, duk_int_t type); +DUK_EXTERNAL_DECL duk_uint_t duk_get_type_mask(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_check_type_mask(duk_context *ctx, duk_idx_t idx, duk_uint_t mask); + +DUK_EXTERNAL_DECL duk_bool_t duk_is_undefined(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_null(duk_context *ctx, duk_idx_t idx); +#define duk_is_null_or_undefined(ctx, idx) \ + ((duk_get_type_mask((ctx), (idx)) & (DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_UNDEFINED)) ? 1 : 0) + +DUK_EXTERNAL_DECL duk_bool_t duk_is_boolean(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_number(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_nan(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_object(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_buffer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_buffer_data(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_pointer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_lightfunc(duk_context *ctx, duk_idx_t idx); + +DUK_EXTERNAL_DECL duk_bool_t duk_is_symbol(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_array(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_function(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_c_function(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_ecmascript_function(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_bound_function(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_thread(duk_context *ctx, duk_idx_t idx); + +#define duk_is_callable(ctx,idx) \ + duk_is_function((ctx), (idx)) +DUK_EXTERNAL_DECL duk_bool_t duk_is_constructable(duk_context *ctx, duk_idx_t idx); + +DUK_EXTERNAL_DECL duk_bool_t duk_is_dynamic_buffer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_fixed_buffer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_is_external_buffer(duk_context *ctx, duk_idx_t idx); + +/* Buffers and lightfuncs are not considered primitive because they mimic + * objects and e.g. duk_to_primitive() will coerce them instead of returning + * them as is. Symbols are represented as strings internally. + */ +#define duk_is_primitive(ctx,idx) \ + duk_check_type_mask((ctx), (idx), DUK_TYPE_MASK_UNDEFINED | \ + DUK_TYPE_MASK_NULL | \ + DUK_TYPE_MASK_BOOLEAN | \ + DUK_TYPE_MASK_NUMBER | \ + DUK_TYPE_MASK_STRING | \ + DUK_TYPE_MASK_POINTER) + +/* Symbols are object coercible, covered by DUK_TYPE_MASK_STRING. */ +#define duk_is_object_coercible(ctx,idx) \ + duk_check_type_mask((ctx), (idx), DUK_TYPE_MASK_BOOLEAN | \ + DUK_TYPE_MASK_NUMBER | \ + DUK_TYPE_MASK_STRING | \ + DUK_TYPE_MASK_OBJECT | \ + DUK_TYPE_MASK_BUFFER | \ + DUK_TYPE_MASK_POINTER | \ + DUK_TYPE_MASK_LIGHTFUNC) + +DUK_EXTERNAL_DECL duk_errcode_t duk_get_error_code(duk_context *ctx, duk_idx_t idx); +#define duk_is_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) != 0) +#define duk_is_eval_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) == DUK_ERR_EVAL_ERROR) +#define duk_is_range_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) == DUK_ERR_RANGE_ERROR) +#define duk_is_reference_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) == DUK_ERR_REFERENCE_ERROR) +#define duk_is_syntax_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) == DUK_ERR_SYNTAX_ERROR) +#define duk_is_type_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) == DUK_ERR_TYPE_ERROR) +#define duk_is_uri_error(ctx,idx) \ + (duk_get_error_code((ctx), (idx)) == DUK_ERR_URI_ERROR) + +/* + * Get operations: no coercion, returns default value for invalid + * indices and invalid value types. + * + * duk_get_undefined() and duk_get_null() would be pointless and + * are not included. + */ + +DUK_EXTERNAL_DECL duk_bool_t duk_get_boolean(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_double_t duk_get_number(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_int_t duk_get_int(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_uint_t duk_get_uint(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_get_string(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_get_lstring(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len); +DUK_EXTERNAL_DECL void *duk_get_buffer(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size); +DUK_EXTERNAL_DECL void *duk_get_buffer_data(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size); +DUK_EXTERNAL_DECL void *duk_get_pointer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_c_function duk_get_c_function(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_context *duk_get_context(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void *duk_get_heapptr(duk_context *ctx, duk_idx_t idx); + +/* + * Get-with-explicit default operations: like get operations but with an + * explicit default value. + */ + +DUK_EXTERNAL_DECL duk_bool_t duk_get_boolean_default(duk_context *ctx, duk_idx_t idx, duk_bool_t def_value); +DUK_EXTERNAL_DECL duk_double_t duk_get_number_default(duk_context *ctx, duk_idx_t idx, duk_double_t def_value); +DUK_EXTERNAL_DECL duk_int_t duk_get_int_default(duk_context *ctx, duk_idx_t idx, duk_int_t def_value); +DUK_EXTERNAL_DECL duk_uint_t duk_get_uint_default(duk_context *ctx, duk_idx_t idx, duk_uint_t def_value); +DUK_EXTERNAL_DECL const char *duk_get_string_default(duk_context *ctx, duk_idx_t idx, const char *def_value); +DUK_EXTERNAL_DECL const char *duk_get_lstring_default(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len, const char *def_ptr, duk_size_t def_len); +DUK_EXTERNAL_DECL void *duk_get_buffer_default(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_len); +DUK_EXTERNAL_DECL void *duk_get_buffer_data_default(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_len); +DUK_EXTERNAL_DECL void *duk_get_pointer_default(duk_context *ctx, duk_idx_t idx, void *def_value); +DUK_EXTERNAL_DECL duk_c_function duk_get_c_function_default(duk_context *ctx, duk_idx_t idx, duk_c_function def_value); +DUK_EXTERNAL_DECL duk_context *duk_get_context_default(duk_context *ctx, duk_idx_t idx, duk_context *def_value); +DUK_EXTERNAL_DECL void *duk_get_heapptr_default(duk_context *ctx, duk_idx_t idx, void *def_value); + +/* + * Opt operations: like require operations but with an explicit default value + * when value is undefined or index is invalid, null and non-matching types + * cause a TypeError. + */ + +DUK_EXTERNAL_DECL duk_bool_t duk_opt_boolean(duk_context *ctx, duk_idx_t idx, duk_bool_t def_value); +DUK_EXTERNAL_DECL duk_double_t duk_opt_number(duk_context *ctx, duk_idx_t idx, duk_double_t def_value); +DUK_EXTERNAL_DECL duk_int_t duk_opt_int(duk_context *ctx, duk_idx_t idx, duk_int_t def_value); +DUK_EXTERNAL_DECL duk_uint_t duk_opt_uint(duk_context *ctx, duk_idx_t idx, duk_uint_t def_value); +DUK_EXTERNAL_DECL const char *duk_opt_string(duk_context *ctx, duk_idx_t idx, const char *def_ptr); +DUK_EXTERNAL_DECL const char *duk_opt_lstring(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len, const char *def_ptr, duk_size_t def_len); +DUK_EXTERNAL_DECL void *duk_opt_buffer(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size); +DUK_EXTERNAL_DECL void *duk_opt_buffer_data(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size, void *def_ptr, duk_size_t def_size); +DUK_EXTERNAL_DECL void *duk_opt_pointer(duk_context *ctx, duk_idx_t idx, void *def_value); +DUK_EXTERNAL_DECL duk_c_function duk_opt_c_function(duk_context *ctx, duk_idx_t idx, duk_c_function def_value); +DUK_EXTERNAL_DECL duk_context *duk_opt_context(duk_context *ctx, duk_idx_t idx, duk_context *def_value); +DUK_EXTERNAL_DECL void *duk_opt_heapptr(duk_context *ctx, duk_idx_t idx, void *def_value); + +/* + * Require operations: no coercion, throw error if index or type + * is incorrect. No defaulting. + */ + +#define duk_require_type_mask(ctx,idx,mask) \ + ((void) duk_check_type_mask((ctx), (idx), (mask) | DUK_TYPE_MASK_THROW)) + +DUK_EXTERNAL_DECL void duk_require_undefined(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_require_null(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_require_boolean(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_double_t duk_require_number(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_int_t duk_require_int(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_uint_t duk_require_uint(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_require_string(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_require_lstring(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len); +DUK_EXTERNAL_DECL void duk_require_object(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void *duk_require_buffer(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size); +DUK_EXTERNAL_DECL void *duk_require_buffer_data(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size); +DUK_EXTERNAL_DECL void *duk_require_pointer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_c_function duk_require_c_function(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_context *duk_require_context(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_require_function(duk_context *ctx, duk_idx_t idx); +#define duk_require_callable(ctx,idx) \ + duk_require_function((ctx), (idx)) +DUK_EXTERNAL_DECL void duk_require_constructor_call(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_require_constructable(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void *duk_require_heapptr(duk_context *ctx, duk_idx_t idx); + +/* Symbols are object coercible and covered by DUK_TYPE_MASK_STRING. */ +#define duk_require_object_coercible(ctx,idx) \ + ((void) duk_check_type_mask((ctx), (idx), DUK_TYPE_MASK_BOOLEAN | \ + DUK_TYPE_MASK_NUMBER | \ + DUK_TYPE_MASK_STRING | \ + DUK_TYPE_MASK_OBJECT | \ + DUK_TYPE_MASK_BUFFER | \ + DUK_TYPE_MASK_POINTER | \ + DUK_TYPE_MASK_LIGHTFUNC | \ + DUK_TYPE_MASK_THROW)) + +/* + * Coercion operations: in-place coercion, return coerced value where + * applicable. If index is invalid, throw error. Some coercions may + * throw an expected error (e.g. from a toString() or valueOf() call) + * or an internal error (e.g. from out of memory). + */ + +DUK_EXTERNAL_DECL void duk_to_undefined(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_to_null(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_bool_t duk_to_boolean(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_double_t duk_to_number(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_int_t duk_to_int(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_uint_t duk_to_uint(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_int32_t duk_to_int32(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_uint32_t duk_to_uint32(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_uint16_t duk_to_uint16(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_to_string(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_to_lstring(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len); +DUK_EXTERNAL_DECL void *duk_to_buffer_raw(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size, duk_uint_t flags); +DUK_EXTERNAL_DECL void *duk_to_pointer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_to_object(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_to_primitive(duk_context *ctx, duk_idx_t idx, duk_int_t hint); + +#define DUK_BUF_MODE_FIXED 0 /* internal: request fixed buffer result */ +#define DUK_BUF_MODE_DYNAMIC 1 /* internal: request dynamic buffer result */ +#define DUK_BUF_MODE_DONTCARE 2 /* internal: don't care about fixed/dynamic nature */ + +#define duk_to_buffer(ctx,idx,out_size) \ + duk_to_buffer_raw((ctx), (idx), (out_size), DUK_BUF_MODE_DONTCARE) +#define duk_to_fixed_buffer(ctx,idx,out_size) \ + duk_to_buffer_raw((ctx), (idx), (out_size), DUK_BUF_MODE_FIXED) +#define duk_to_dynamic_buffer(ctx,idx,out_size) \ + duk_to_buffer_raw((ctx), (idx), (out_size), DUK_BUF_MODE_DYNAMIC) + +/* safe variants of a few coercion operations */ +DUK_EXTERNAL_DECL const char *duk_safe_to_lstring(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len); +DUK_EXTERNAL_DECL const char *duk_to_stacktrace(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_safe_to_stacktrace(duk_context *ctx, duk_idx_t idx); +#define duk_safe_to_string(ctx,idx) \ + duk_safe_to_lstring((ctx), (idx), NULL) + +/* + * Value length + */ + +DUK_EXTERNAL_DECL duk_size_t duk_get_length(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_set_length(duk_context *ctx, duk_idx_t idx, duk_size_t len); +#if 0 +/* duk_require_length()? */ +/* duk_opt_length()? */ +#endif + +/* + * Misc conversion + */ + +DUK_EXTERNAL_DECL const char *duk_base64_encode(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_base64_decode(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_hex_encode(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_hex_decode(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL const char *duk_json_encode(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_json_decode(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_cbor_encode(duk_context *ctx, duk_idx_t idx, duk_uint_t encode_flags); +DUK_EXTERNAL_DECL void duk_cbor_decode(duk_context *ctx, duk_idx_t idx, duk_uint_t decode_flags); + +DUK_EXTERNAL_DECL const char *duk_buffer_to_string(duk_context *ctx, duk_idx_t idx); + +/* + * Buffer + */ + +DUK_EXTERNAL_DECL void *duk_resize_buffer(duk_context *ctx, duk_idx_t idx, duk_size_t new_size); +DUK_EXTERNAL_DECL void *duk_steal_buffer(duk_context *ctx, duk_idx_t idx, duk_size_t *out_size); +DUK_EXTERNAL_DECL void duk_config_buffer(duk_context *ctx, duk_idx_t idx, void *ptr, duk_size_t len); + +/* + * Property access + * + * The basic function assumes key is on stack. The _(l)string variant takes + * a C string as a property name; the _literal variant takes a C literal. + * The _index variant takes an array index as a property name (e.g. 123 is + * equivalent to the key "123"). The _heapptr variant takes a raw, borrowed + * heap pointer. + */ + +DUK_EXTERNAL_DECL duk_bool_t duk_get_prop(duk_context *ctx, duk_idx_t obj_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); +DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#if defined(DUK_USE_PREFER_SIZE) +#define duk_get_prop_literal(ctx,obj_idx,key) duk_get_prop_string((ctx), (obj_idx), (key)) +#else +DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#define duk_get_prop_literal(ctx,obj_idx,key) duk_get_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) +#endif +DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_get_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); +DUK_EXTERNAL_DECL duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); +DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#if defined(DUK_USE_PREFER_SIZE) +#define duk_put_prop_literal(ctx,obj_idx,key) duk_put_prop_string((ctx), (obj_idx), (key)) +#else +DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#define duk_put_prop_literal(ctx,obj_idx,key) duk_put_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) +#endif +DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_put_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); +DUK_EXTERNAL_DECL duk_bool_t duk_del_prop(duk_context *ctx, duk_idx_t obj_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); +DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#if defined(DUK_USE_PREFER_SIZE) +#define duk_del_prop_literal(ctx,obj_idx,key) duk_del_prop_string((ctx), (obj_idx), (key)) +#else +DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#define duk_del_prop_literal(ctx,obj_idx,key) duk_del_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) +#endif +DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_del_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); +DUK_EXTERNAL_DECL duk_bool_t duk_has_prop(duk_context *ctx, duk_idx_t obj_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_string(duk_context *ctx, duk_idx_t obj_idx, const char *key); +DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_lstring(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#if defined(DUK_USE_PREFER_SIZE) +#define duk_has_prop_literal(ctx,obj_idx,key) duk_has_prop_string((ctx), (obj_idx), (key)) +#else +DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_literal_raw(duk_context *ctx, duk_idx_t obj_idx, const char *key, duk_size_t key_len); +#define duk_has_prop_literal(ctx,obj_idx,key) duk_has_prop_literal_raw((ctx), (obj_idx), (key), sizeof((key)) - 1U) +#endif +DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx); +DUK_EXTERNAL_DECL duk_bool_t duk_has_prop_heapptr(duk_context *ctx, duk_idx_t obj_idx, void *ptr); + +DUK_EXTERNAL_DECL void duk_get_prop_desc(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t flags); +DUK_EXTERNAL_DECL void duk_def_prop(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t flags); + +DUK_EXTERNAL_DECL duk_bool_t duk_get_global_string(duk_context *ctx, const char *key); +DUK_EXTERNAL_DECL duk_bool_t duk_get_global_lstring(duk_context *ctx, const char *key, duk_size_t key_len); +#if defined(DUK_USE_PREFER_SIZE) +#define duk_get_global_literal(ctx,key) duk_get_global_string((ctx), (key)) +#else +DUK_EXTERNAL_DECL duk_bool_t duk_get_global_literal_raw(duk_context *ctx, const char *key, duk_size_t key_len); +#define duk_get_global_literal(ctx,key) duk_get_global_literal_raw((ctx), (key), sizeof((key)) - 1U) +#endif +DUK_EXTERNAL_DECL duk_bool_t duk_get_global_heapptr(duk_context *ctx, void *ptr); +DUK_EXTERNAL_DECL duk_bool_t duk_put_global_string(duk_context *ctx, const char *key); +DUK_EXTERNAL_DECL duk_bool_t duk_put_global_lstring(duk_context *ctx, const char *key, duk_size_t key_len); +#if defined(DUK_USE_PREFER_SIZE) +#define duk_put_global_literal(ctx,key) duk_put_global_string((ctx), (key)) +#else +DUK_EXTERNAL_DECL duk_bool_t duk_put_global_literal_raw(duk_context *ctx, const char *key, duk_size_t key_len); +#define duk_put_global_literal(ctx,key) duk_put_global_literal_raw((ctx), (key), sizeof((key)) - 1U) +#endif +DUK_EXTERNAL_DECL duk_bool_t duk_put_global_heapptr(duk_context *ctx, void *ptr); + +/* + * Inspection + */ + +DUK_EXTERNAL_DECL void duk_inspect_value(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_inspect_callstack_entry(duk_context *ctx, duk_int_t level); + +/* + * Object prototype + */ + +DUK_EXTERNAL_DECL void duk_get_prototype(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_set_prototype(duk_context *ctx, duk_idx_t idx); + +/* + * Object finalizer + */ + +DUK_EXTERNAL_DECL void duk_get_finalizer(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_set_finalizer(duk_context *ctx, duk_idx_t idx); + +/* + * Global object + */ + +DUK_EXTERNAL_DECL void duk_set_global_object(duk_context *ctx); + +/* + * Duktape/C function magic value + */ + +DUK_EXTERNAL_DECL duk_int_t duk_get_magic(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL void duk_set_magic(duk_context *ctx, duk_idx_t idx, duk_int_t magic); +DUK_EXTERNAL_DECL duk_int_t duk_get_current_magic(duk_context *ctx); + +/* + * Module helpers: put multiple function or constant properties + */ + +DUK_EXTERNAL_DECL void duk_put_function_list(duk_context *ctx, duk_idx_t obj_idx, const duk_function_list_entry *funcs); +DUK_EXTERNAL_DECL void duk_put_number_list(duk_context *ctx, duk_idx_t obj_idx, const duk_number_list_entry *numbers); + +/* + * Object operations + */ + +DUK_EXTERNAL_DECL void duk_compact(duk_context *ctx, duk_idx_t obj_idx); +DUK_EXTERNAL_DECL void duk_enum(duk_context *ctx, duk_idx_t obj_idx, duk_uint_t enum_flags); +DUK_EXTERNAL_DECL duk_bool_t duk_next(duk_context *ctx, duk_idx_t enum_idx, duk_bool_t get_value); +DUK_EXTERNAL_DECL void duk_seal(duk_context *ctx, duk_idx_t obj_idx); +DUK_EXTERNAL_DECL void duk_freeze(duk_context *ctx, duk_idx_t obj_idx); + +/* + * String manipulation + */ + +DUK_EXTERNAL_DECL void duk_concat(duk_context *ctx, duk_idx_t count); +DUK_EXTERNAL_DECL void duk_join(duk_context *ctx, duk_idx_t count); +DUK_EXTERNAL_DECL void duk_decode_string(duk_context *ctx, duk_idx_t idx, duk_decode_char_function callback, void *udata); +DUK_EXTERNAL_DECL void duk_map_string(duk_context *ctx, duk_idx_t idx, duk_map_char_function callback, void *udata); +DUK_EXTERNAL_DECL void duk_substring(duk_context *ctx, duk_idx_t idx, duk_size_t start_char_offset, duk_size_t end_char_offset); +DUK_EXTERNAL_DECL void duk_trim(duk_context *ctx, duk_idx_t idx); +DUK_EXTERNAL_DECL duk_codepoint_t duk_char_code_at(duk_context *ctx, duk_idx_t idx, duk_size_t char_offset); + +/* + * ECMAScript operators + */ + +DUK_EXTERNAL_DECL duk_bool_t duk_equals(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); +DUK_EXTERNAL_DECL duk_bool_t duk_strict_equals(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); +DUK_EXTERNAL_DECL duk_bool_t duk_samevalue(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); +DUK_EXTERNAL_DECL duk_bool_t duk_instanceof(duk_context *ctx, duk_idx_t idx1, duk_idx_t idx2); + +/* + * Random + */ + +DUK_EXTERNAL_DECL duk_double_t duk_random(duk_context *ctx); + +/* + * Function (method) calls + */ + +DUK_EXTERNAL_DECL void duk_call(duk_context *ctx, duk_idx_t nargs); +DUK_EXTERNAL_DECL void duk_call_method(duk_context *ctx, duk_idx_t nargs); +DUK_EXTERNAL_DECL void duk_call_prop(duk_context *ctx, duk_idx_t obj_idx, duk_idx_t nargs); +DUK_EXTERNAL_DECL duk_int_t duk_pcall(duk_context *ctx, duk_idx_t nargs); +DUK_EXTERNAL_DECL duk_int_t duk_pcall_method(duk_context *ctx, duk_idx_t nargs); +DUK_EXTERNAL_DECL duk_int_t duk_pcall_prop(duk_context *ctx, duk_idx_t obj_idx, duk_idx_t nargs); +DUK_EXTERNAL_DECL void duk_new(duk_context *ctx, duk_idx_t nargs); +DUK_EXTERNAL_DECL duk_int_t duk_pnew(duk_context *ctx, duk_idx_t nargs); +DUK_EXTERNAL_DECL duk_int_t duk_safe_call(duk_context *ctx, duk_safe_call_function func, void *udata, duk_idx_t nargs, duk_idx_t nrets); + +/* + * Thread management + */ + +/* There are currently no native functions to yield/resume, due to the internal + * limitations on coroutine handling. These will be added later. + */ + +/* + * Compilation and evaluation + */ + +DUK_EXTERNAL_DECL duk_int_t duk_eval_raw(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags); +DUK_EXTERNAL_DECL duk_int_t duk_compile_raw(duk_context *ctx, const char *src_buffer, duk_size_t src_length, duk_uint_t flags); + +/* plain */ +#define duk_eval(ctx) \ + ((void) duk_eval_raw((ctx), NULL, 0, 1 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NOFILENAME)) + +#define duk_eval_noresult(ctx) \ + ((void) duk_eval_raw((ctx), NULL, 0, 1 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME)) + +#define duk_peval(ctx) \ + (duk_eval_raw((ctx), NULL, 0, 1 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOFILENAME)) + +#define duk_peval_noresult(ctx) \ + (duk_eval_raw((ctx), NULL, 0, 1 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME)) + +#define duk_compile(ctx,flags) \ + ((void) duk_compile_raw((ctx), NULL, 0, 2 /*args*/ | (flags))) + +#define duk_pcompile(ctx,flags) \ + (duk_compile_raw((ctx), NULL, 0, 2 /*args*/ | (flags) | DUK_COMPILE_SAFE)) + +/* string */ +#define duk_eval_string(ctx,src) \ + ((void) duk_eval_raw((ctx), (src), 0, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME)) + +#define duk_eval_string_noresult(ctx,src) \ + ((void) duk_eval_raw((ctx), (src), 0, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME)) + +#define duk_peval_string(ctx,src) \ + (duk_eval_raw((ctx), (src), 0, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME)) + +#define duk_peval_string_noresult(ctx,src) \ + (duk_eval_raw((ctx), (src), 0, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME)) + +#define duk_compile_string(ctx,flags,src) \ + ((void) duk_compile_raw((ctx), (src), 0, 0 /*args*/ | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME)) + +#define duk_compile_string_filename(ctx,flags,src) \ + ((void) duk_compile_raw((ctx), (src), 0, 1 /*args*/ | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN)) + +#define duk_pcompile_string(ctx,flags,src) \ + (duk_compile_raw((ctx), (src), 0, 0 /*args*/ | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN | DUK_COMPILE_NOFILENAME)) + +#define duk_pcompile_string_filename(ctx,flags,src) \ + (duk_compile_raw((ctx), (src), 0, 1 /*args*/ | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_STRLEN)) + +/* lstring */ +#define duk_eval_lstring(ctx,buf,len) \ + ((void) duk_eval_raw((ctx), buf, len, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME)) + +#define duk_eval_lstring_noresult(ctx,buf,len) \ + ((void) duk_eval_raw((ctx), buf, len, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME)) + +#define duk_peval_lstring(ctx,buf,len) \ + (duk_eval_raw((ctx), buf, len, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_NOSOURCE | DUK_COMPILE_SAFE | DUK_COMPILE_NOFILENAME)) + +#define duk_peval_lstring_noresult(ctx,buf,len) \ + (duk_eval_raw((ctx), buf, len, 0 /*args*/ | DUK_COMPILE_EVAL | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NORESULT | DUK_COMPILE_NOFILENAME)) + +#define duk_compile_lstring(ctx,flags,buf,len) \ + ((void) duk_compile_raw((ctx), buf, len, 0 /*args*/ | (flags) | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME)) + +#define duk_compile_lstring_filename(ctx,flags,buf,len) \ + ((void) duk_compile_raw((ctx), buf, len, 1 /*args*/ | (flags) | DUK_COMPILE_NOSOURCE)) + +#define duk_pcompile_lstring(ctx,flags,buf,len) \ + (duk_compile_raw((ctx), buf, len, 0 /*args*/ | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE | DUK_COMPILE_NOFILENAME)) + +#define duk_pcompile_lstring_filename(ctx,flags,buf,len) \ + (duk_compile_raw((ctx), buf, len, 1 /*args*/ | (flags) | DUK_COMPILE_SAFE | DUK_COMPILE_NOSOURCE)) + +/* + * Bytecode load/dump + */ + +DUK_EXTERNAL_DECL void duk_dump_function(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_load_function(duk_context *ctx); + +/* + * Debugging + */ + +DUK_EXTERNAL_DECL void duk_push_context_dump(duk_context *ctx); + +/* + * Debugger (debug protocol) + */ + +DUK_EXTERNAL_DECL void duk_debugger_attach(duk_context *ctx, + duk_debug_read_function read_cb, + duk_debug_write_function write_cb, + duk_debug_peek_function peek_cb, + duk_debug_read_flush_function read_flush_cb, + duk_debug_write_flush_function write_flush_cb, + duk_debug_request_function request_cb, + duk_debug_detached_function detached_cb, + void *udata); +DUK_EXTERNAL_DECL void duk_debugger_detach(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_debugger_cooperate(duk_context *ctx); +DUK_EXTERNAL_DECL duk_bool_t duk_debugger_notify(duk_context *ctx, duk_idx_t nvalues); +DUK_EXTERNAL_DECL void duk_debugger_pause(duk_context *ctx); + +/* + * Time handling + */ + +DUK_EXTERNAL_DECL duk_double_t duk_get_now(duk_context *ctx); +DUK_EXTERNAL_DECL void duk_time_to_components(duk_context *ctx, duk_double_t timeval, duk_time_components *comp); +DUK_EXTERNAL_DECL duk_double_t duk_components_to_time(duk_context *ctx, duk_time_components *comp); + +/* + * Date provider related constants + * + * NOTE: These are "semi public" - you should only use these if you write + * your own platform specific Date provider, see doc/datetime.rst. + */ + +/* Millisecond count constants. */ +#define DUK_DATE_MSEC_SECOND 1000L +#define DUK_DATE_MSEC_MINUTE (60L * 1000L) +#define DUK_DATE_MSEC_HOUR (60L * 60L * 1000L) +#define DUK_DATE_MSEC_DAY (24L * 60L * 60L * 1000L) + +/* ECMAScript date range is 100 million days from Epoch: + * > 100e6 * 24 * 60 * 60 * 1000 // 100M days in millisecs + * 8640000000000000 + * (= 8.64e15) + */ +#define DUK_DATE_MSEC_100M_DAYS (8.64e15) +#define DUK_DATE_MSEC_100M_DAYS_LEEWAY (8.64e15 + 24 * 3600e3) + +/* ECMAScript year range: + * > new Date(100e6 * 24 * 3600e3).toISOString() + * '+275760-09-13T00:00:00.000Z' + * > new Date(-100e6 * 24 * 3600e3).toISOString() + * '-271821-04-20T00:00:00.000Z' + */ +#define DUK_DATE_MIN_ECMA_YEAR (-271821L) +#define DUK_DATE_MAX_ECMA_YEAR 275760L + +/* Part indices for internal breakdowns. Part order from DUK_DATE_IDX_YEAR + * to DUK_DATE_IDX_MILLISECOND matches argument ordering of ECMAScript API + * calls (like Date constructor call). Some functions in duk_bi_date.c + * depend on the specific ordering, so change with care. 16 bits are not + * enough for all parts (year, specifically). + * + * Must be in-sync with genbuiltins.py. + */ +#define DUK_DATE_IDX_YEAR 0 /* year */ +#define DUK_DATE_IDX_MONTH 1 /* month: 0 to 11 */ +#define DUK_DATE_IDX_DAY 2 /* day within month: 0 to 30 */ +#define DUK_DATE_IDX_HOUR 3 +#define DUK_DATE_IDX_MINUTE 4 +#define DUK_DATE_IDX_SECOND 5 +#define DUK_DATE_IDX_MILLISECOND 6 +#define DUK_DATE_IDX_WEEKDAY 7 /* weekday: 0 to 6, 0=sunday, 1=monday, etc */ +#define DUK_DATE_IDX_NUM_PARTS 8 + +/* Internal API call flags, used for various functions in duk_bi_date.c. + * Certain flags are used by only certain functions, but since the flags + * don't overlap, a single flags value can be passed around to multiple + * functions. + * + * The unused top bits of the flags field are also used to pass values + * to helpers (duk__get_part_helper() and duk__set_part_helper()). + * + * Must be in-sync with genbuiltins.py. + */ + +/* NOTE: when writing a Date provider you only need a few specific + * flags from here, the rest are internal. Avoid using anything you + * don't need. + */ + +#define DUK_DATE_FLAG_NAN_TO_ZERO (1 << 0) /* timeval breakdown: internal time value NaN -> zero */ +#define DUK_DATE_FLAG_NAN_TO_RANGE_ERROR (1 << 1) /* timeval breakdown: internal time value NaN -> RangeError (toISOString) */ +#define DUK_DATE_FLAG_ONEBASED (1 << 2) /* timeval breakdown: convert month and day-of-month parts to one-based (default is zero-based) */ +#define DUK_DATE_FLAG_EQUIVYEAR (1 << 3) /* timeval breakdown: replace year with equivalent year in the [1971,2037] range for DST calculations */ +#define DUK_DATE_FLAG_LOCALTIME (1 << 4) /* convert time value to local time */ +#define DUK_DATE_FLAG_SUB1900 (1 << 5) /* getter: subtract 1900 from year when getting year part */ +#define DUK_DATE_FLAG_TOSTRING_DATE (1 << 6) /* include date part in string conversion result */ +#define DUK_DATE_FLAG_TOSTRING_TIME (1 << 7) /* include time part in string conversion result */ +#define DUK_DATE_FLAG_TOSTRING_LOCALE (1 << 8) /* use locale specific formatting if available */ +#define DUK_DATE_FLAG_TIMESETTER (1 << 9) /* setter: call is a time setter (affects hour, min, sec, ms); otherwise date setter (affects year, month, day-in-month) */ +#define DUK_DATE_FLAG_YEAR_FIXUP (1 << 10) /* setter: perform 2-digit year fixup (00...99 -> 1900...1999) */ +#define DUK_DATE_FLAG_SEP_T (1 << 11) /* string conversion: use 'T' instead of ' ' as a separator */ +#define DUK_DATE_FLAG_VALUE_SHIFT 12 /* additional values begin at bit 12 */ + +/* + * ROM pointer compression + */ + +/* Support array for ROM pointer compression. Only declared when ROM + * pointer compression is active. + */ +#if defined(DUK_USE_ROM_OBJECTS) && defined(DUK_USE_HEAPPTR16) +DUK_EXTERNAL_DECL const void * const duk_rom_compressed_pointers[]; +#endif + +/* + * C++ name mangling + */ + +#if defined(__cplusplus) +/* end 'extern "C"' wrapper */ +} +#endif + +/* + * END PUBLIC API + */ + +#endif /* DUKTAPE_H_INCLUDED */ diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index f515c0a0..dfe641f2 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -59,6 +59,7 @@ void windowInit() { gui::menu.registerEntry("Source", sourecmenu::draw, NULL); gui::menu.registerEntry("Audio", audiomenu::draw, NULL); + gui::menu.registerEntry("Scripting", scriptingmenu::draw, NULL); gui::menu.registerEntry("Band Plan", bandplanmenu::draw, NULL); gui::menu.registerEntry("Display", displaymenu::draw, NULL); @@ -76,6 +77,7 @@ void windowInit() { sourecmenu::init(); audiomenu::init(); + scriptingmenu::init(); bandplanmenu::init(); displaymenu::init(); diff --git a/core/src/gui/main_window.h b/core/src/gui/main_window.h index e079f577..035717da 100644 --- a/core/src/gui/main_window.h +++ b/core/src/gui/main_window.h @@ -31,6 +31,7 @@ #include #include #include +#include #include #include diff --git a/core/src/gui/menus/scripting.cpp b/core/src/gui/menus/scripting.cpp new file mode 100644 index 00000000..fc02c8b4 --- /dev/null +++ b/core/src/gui/menus/scripting.cpp @@ -0,0 +1,21 @@ +#include +#include +#include + +namespace scriptingmenu { + void init() { + + } + + void draw(void* ctx) { + float menuWidth = ImGui::GetContentRegionAvailWidth(); + for (const auto& [name, script] : core::scriptManager.scripts) { + bool running = script->running; + if (running) { style::beginDisabled(); } + if (ImGui::Button(name.c_str(), ImVec2(menuWidth, 0))) { + script->run(); + } + if (running) { style::endDisabled(); } + } + } +} \ No newline at end of file diff --git a/core/src/gui/menus/scripting.h b/core/src/gui/menus/scripting.h new file mode 100644 index 00000000..ad21d49a --- /dev/null +++ b/core/src/gui/menus/scripting.h @@ -0,0 +1,6 @@ +#pragma once + +namespace scriptingmenu { + void init(); + void draw(void* ctx); +} \ No newline at end of file diff --git a/core/src/scripting.cpp b/core/src/scripting.cpp new file mode 100644 index 00000000..f9a769d9 --- /dev/null +++ b/core/src/scripting.cpp @@ -0,0 +1,75 @@ +#include +#include +#include +#include +#include + +ScriptManager::ScriptManager() { + +} + +ScriptManager::Script* ScriptManager::createScript(std::string name, std::string path) { + ScriptManager::Script* script = new ScriptManager::Script(this, name, path); + scripts[name] = script; + return script; +} + +ScriptManager::Script::Script(ScriptManager* man, std::string name, std::string path) { + this->name = name; + manager = man; + std::ifstream file(path, std::ios::in); + std::stringstream ss; + ss << file.rdbuf(); + code = ss.str(); +} + +void ScriptManager::Script::run() { + ctx = ScriptManager::createContext(manager, name); + running = true; + if (worker.joinable()) { + worker.join(); + } + worker = std::thread(scriptWorker, this); +} + +duk_context* ScriptManager::createContext(ScriptManager* _this, std::string name) { + duk_context* ctx = duk_create_heap_default(); + + duk_console_init(ctx, DUK_CONSOLE_PROXY_WRAPPER); + + duk_push_string(ctx, name.c_str()); + duk_put_global_string(ctx, "SCRIPT_NAME"); + + duk_idx_t sdrppBase = duk_push_object(ctx); + + duk_push_string(ctx, VERSION_STR); + duk_put_prop_string(ctx, sdrppBase, "version"); + + duk_idx_t modObjId = duk_push_object(ctx); + for (const auto& [name, handler] : _this->handlers) { + duk_idx_t objId = duk_push_object(ctx); + handler.handler(handler.ctx, ctx, objId); + duk_put_prop_string(ctx, modObjId, name.c_str()); + } + duk_put_prop_string(ctx, sdrppBase, "modules"); + + duk_put_global_string(ctx, "sdrpp"); + + return ctx; +} + +// TODO: Switch to spdlog + +void ScriptManager::Script::scriptWorker(Script* script) { + if (duk_peval_string(script->ctx, script->code.c_str()) != 0) { + printf("Error: %s\n", duk_safe_to_string(script->ctx, -1)); + //return; + } + duk_destroy_heap(script->ctx); + script->running = false; +} + +void ScriptManager::bindScriptRunHandler(std::string name, ScriptManager::ScriptRunHandler_t handler) { + // TODO: check if it exists and add a "unbind" function + handlers[name] = handler; +} \ No newline at end of file diff --git a/core/src/scripting.h b/core/src/scripting.h new file mode 100644 index 00000000..34c2304b --- /dev/null +++ b/core/src/scripting.h @@ -0,0 +1,48 @@ +#pragma once +#include +#include +#include +#include +#include + +class ScriptManager { +public: + ScriptManager(); + + friend class Script; + + class Script { + public: + Script(ScriptManager* man, std::string name, std::string path); + void run(); + bool running = false; + + private: + static void scriptWorker(Script* _this); + + duk_context* ctx; + std::thread worker; + std::string code; + std::string name; + + + ScriptManager* manager; + + }; + + struct ScriptRunHandler_t { + void (*handler)(void* ctx, duk_context* dukCtx, duk_idx_t objId); + void* ctx; + }; + + void bindScriptRunHandler(std::string name, ScriptManager::ScriptRunHandler_t handler); + ScriptManager::Script* createScript(std::string name, std::string path); + + std::map scripts; + +private: + static duk_context* createContext(ScriptManager* _this, std::string name); + + std::map handlers; + +}; \ No newline at end of file diff --git a/radio/src/main.cpp b/radio/src/main.cpp index ebaba395..feb565b1 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) #define DEEMP_LIST "50µS\00075µS\000none\000" @@ -26,6 +27,11 @@ public: sigPath.start(); sigPath.setDemodulator(SigPath::DEMOD_FM, bandWidth); gui::menu.registerEntry(name, menuHandler, this); + + ScriptManager::ScriptRunHandler_t handler; + handler.ctx = this; + handler.handler = scriptCreateHandler; + core::scriptManager.bindScriptRunHandler(name, handler); } ~RadioModule() { @@ -117,6 +123,32 @@ private: ImGui::PopItemWidth(); } + static void scriptCreateHandler(void* ctx, duk_context* dukCtx, duk_idx_t objId) { + duk_push_string(dukCtx, "Hello from modules ;)"); + duk_put_prop_string(dukCtx, objId, "test"); + + duk_push_c_function(dukCtx, duk_setDemodulator, 1); + duk_put_prop_string(dukCtx, objId, "setDemodulator"); + + duk_push_pointer(dukCtx, ctx); + duk_put_prop_string(dukCtx, objId, DUK_HIDDEN_SYMBOL("radio_ctx")); + } + + static duk_ret_t duk_setDemodulator(duk_context* dukCtx) { + const char* str = duk_require_string(dukCtx, -1); + std::string modName = str; + + if (modName == "USB") { + _this->demod = 4; + _this->bandWidth = 3000; + _this->bandWidthMin = 1500; + _this->bandWidthMax = 3000; + _this->sigPath.setDemodulator(SigPath::DEMOD_USB, _this->bandWidth); + } + + return 0; + } + std::string name; int demod = 1; int deemp = 0; diff --git a/root_dev/config.json b/root_dev/config.json index d77e7e49..190f7d84 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -11,6 +11,7 @@ "Radio", "Recorder", "Audio", + "Scripting", "Band Plan", "Display" ], @@ -20,7 +21,7 @@ "source": "", "sourceSettings": {}, "windowSize": { - "h": 1053, - "w": 1920 + "h": 720, + "w": 1280 } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index f026332f..a64f080c 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,7 +1,7 @@ { - "Radio": "./radio/radio.so", - "Recorder": "./recorder/recorder.so", - "Soapy": "./soapy/soapy.so", - "FileSource": "./file_source/file_source.so", - "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" + "Radio": "./radio/Release/radio.dll", + "Recorder": "./recorder/Release/recorder.dll", + "Soapy": "./soapy/Release/soapy.dll", + "FileSource": "./file_source/Release/file_source.dll", + "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" } From 3b6a3ff94d82a6af592ab8e28ee4a947363e5830 Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Wed, 7 Oct 2020 22:44:54 +0200 Subject: [PATCH 056/127] Fixed scripting + cleaner code + fixed RTLTCP --- CMakeLists.txt | 6 ++ core/src/config.cpp | 3 + core/src/config.h | 7 +- core/src/core.cpp | 11 +- core/src/dsp/block.h | 1 + core/src/gui/bandplan.cpp | 5 + core/src/gui/bandplan.h | 6 +- core/src/gui/dialogs/credits.cpp | 1 + core/src/gui/frequency_select.cpp | 1 + core/src/gui/frequency_select.h | 1 - core/src/gui/gui.h | 2 + core/src/gui/icons.cpp | 3 + core/src/gui/icons.h | 3 +- core/src/gui/main_window.cpp | 44 ++++++-- core/src/gui/main_window.h | 38 +------ core/src/gui/menu.cpp | 1 + core/src/gui/menu.h | 1 - core/src/gui/menus/scripting.cpp | 1 + core/src/gui/style.cpp | 3 + core/src/gui/style.h | 3 - core/src/gui/waterfall.cpp | 5 + core/src/gui/waterfall.h | 8 +- core/src/module.cpp | 10 +- core/src/module.h | 7 -- core/src/scripting.cpp | 18 ++++ core/src/scripting.h | 3 + core/src/signal_path/audio.h | 1 - core/src/signal_path/dsp.h | 1 - radio/src/main.cpp | 159 ++++++++++++++++++++++++++++- root_dev/config.json | 6 +- root_dev/module_list.json | 9 +- rtl_tcp_source/src/main.cpp | 4 +- rtl_tcp_source/src/rtltcp_client.h | 2 +- 33 files changed, 274 insertions(+), 100 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49729acd..828e6f2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,12 @@ add_subdirectory("file_source") add_subdirectory("rtl_tcp_source") add_subdirectory("demo") +if (MSVC) + set(CMAKE_CXX_FLAGS "-O2 /std:c++17") +else() + set(CMAKE_CXX_FLAGS "-O3 -std=c++17") +endif (MSVC) + add_executable(sdrpp "src/main.cpp" "win32/resources.rc") target_link_libraries(sdrpp PRIVATE sdrpp_core) diff --git a/core/src/config.cpp b/core/src/config.cpp index 39ad79f1..3c167bbb 100644 --- a/core/src/config.cpp +++ b/core/src/config.cpp @@ -1,4 +1,7 @@ #include +#include +#include +#include ConfigManager::ConfigManager() { diff --git a/core/src/config.h b/core/src/config.h index 6a327d8e..e5cb96fe 100644 --- a/core/src/config.h +++ b/core/src/config.h @@ -1,13 +1,8 @@ #pragma once #include -#include -#include -#include -#include -#include #include -#include #include +#include using nlohmann::json; diff --git a/core/src/core.cpp b/core/src/core.cpp index abc8f944..0e472955 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -16,12 +16,11 @@ #include #include #include -#include - -#include #define STB_IMAGE_RESIZE_IMPLEMENTATION #include +#include +#include #ifdef _WIN32 #include @@ -97,9 +96,9 @@ int sdrpp_main() { // duk_pop(ctx); core::scriptManager.createScript("TestScript 1", "test.js"); - core::scriptManager.createScript("TestScript 2", "test.js"); - core::scriptManager.createScript("TestScript 3", "test.js"); - core::scriptManager.createScript("TestScript 4", "test.js"); + //core::scriptManager.createScript("TestScript 2", "test.js"); + //core::scriptManager.createScript("TestScript 3", "test.js"); + //core::scriptManager.createScript("TestScript 4", "test.js"); // TESTING diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index 644d8214..865897c8 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include namespace dsp { template diff --git a/core/src/gui/bandplan.cpp b/core/src/gui/bandplan.cpp index 79bfc441..af585b12 100644 --- a/core/src/gui/bandplan.cpp +++ b/core/src/gui/bandplan.cpp @@ -1,4 +1,9 @@ #include +#include +#include +#include +#include +#include namespace bandplan { std::map bandplans; diff --git a/core/src/gui/bandplan.h b/core/src/gui/bandplan.h index 315bc13e..f7c46e07 100644 --- a/core/src/gui/bandplan.h +++ b/core/src/gui/bandplan.h @@ -1,11 +1,7 @@ #pragma once #include -#include -#include -#include -#include -#include #include +#include using nlohmann::json; diff --git a/core/src/gui/dialogs/credits.cpp b/core/src/gui/dialogs/credits.cpp index 060fc922..a8fa5986 100644 --- a/core/src/gui/dialogs/credits.cpp +++ b/core/src/gui/dialogs/credits.cpp @@ -1,6 +1,7 @@ #include #include #include +#include namespace credits { ImFont* bigFont; diff --git a/core/src/gui/frequency_select.cpp b/core/src/gui/frequency_select.cpp index 711b8f09..25f25f37 100644 --- a/core/src/gui/frequency_select.cpp +++ b/core/src/gui/frequency_select.cpp @@ -1,4 +1,5 @@ #include +#include bool isInArea(ImVec2 val, ImVec2 min, ImVec2 max) { return val.x >= min.x && val.x < max.x && val.y >= min.y && val.y < max.y; diff --git a/core/src/gui/frequency_select.h b/core/src/gui/frequency_select.h index ef94c978..ebbe9bae 100644 --- a/core/src/gui/frequency_select.h +++ b/core/src/gui/frequency_select.h @@ -2,7 +2,6 @@ #include #include #include -#include class FrequencySelect { public: diff --git a/core/src/gui/gui.h b/core/src/gui/gui.h index 32d48b37..aa241d3b 100644 --- a/core/src/gui/gui.h +++ b/core/src/gui/gui.h @@ -8,4 +8,6 @@ namespace gui { SDRPP_EXPORT ImGui::WaterFall waterfall; SDRPP_EXPORT FrequencySelect freqSelect; SDRPP_EXPORT Menu menu; + + void selectSource(std::string name); }; \ No newline at end of file diff --git a/core/src/gui/icons.cpp b/core/src/gui/icons.cpp index b6af76d3..84b98f91 100644 --- a/core/src/gui/icons.cpp +++ b/core/src/gui/icons.cpp @@ -1,4 +1,7 @@ #include +#include +#include +#include #define STB_IMAGE_IMPLEMENTATION #include diff --git a/core/src/gui/icons.h b/core/src/gui/icons.h index f932c4d0..748be74c 100644 --- a/core/src/gui/icons.h +++ b/core/src/gui/icons.h @@ -1,8 +1,7 @@ #pragma once #include -#include #include -#include +#include namespace icons { extern ImTextureID LOGO; diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index dfe641f2..3d10ad52 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -1,5 +1,40 @@ #include #include +#include "imgui.h" +#include "imgui_impl_glfw.h" +#include "imgui_impl_opengl3.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include std::thread worker; std::mutex fft_mtx; @@ -106,7 +141,6 @@ void windowInit() { gui::waterfall.setWaterfallMax(fftMax); float frequency = core::configManager.conf["frequency"]; - gui::freqSelect.setFrequency(frequency); gui::freqSelect.frequencyChanged = false; @@ -459,12 +493,4 @@ void drawWindow() { if (showCredits) { credits::show(); } -} - -void bindVolumeVariable(float* vol) { - volume = vol; -} - -void unbindVolumeVariable() { - volume = &dummyVolume; } \ No newline at end of file diff --git a/core/src/gui/main_window.h b/core/src/gui/main_window.h index 035717da..02f6ba67 100644 --- a/core/src/gui/main_window.h +++ b/core/src/gui/main_window.h @@ -1,43 +1,7 @@ #pragma once #include "imgui.h" -#include "imgui_impl_glfw.h" -#include "imgui_impl_opengl3.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground void windowInit(); -void drawWindow(); -void bindVolumeVariable(float* vol); -void unbindVolumeVariable(); \ No newline at end of file +void drawWindow(); \ No newline at end of file diff --git a/core/src/gui/menu.cpp b/core/src/gui/menu.cpp index c5611f72..74feb7e2 100644 --- a/core/src/gui/menu.cpp +++ b/core/src/gui/menu.cpp @@ -1,4 +1,5 @@ #include +#include Menu::Menu() { diff --git a/core/src/gui/menu.h b/core/src/gui/menu.h index 1b3c8be4..6e7965e1 100644 --- a/core/src/gui/menu.h +++ b/core/src/gui/menu.h @@ -1,5 +1,4 @@ #pragma once -#include #include #include #include diff --git a/core/src/gui/menus/scripting.cpp b/core/src/gui/menus/scripting.cpp index fc02c8b4..c17812cd 100644 --- a/core/src/gui/menus/scripting.cpp +++ b/core/src/gui/menus/scripting.cpp @@ -1,6 +1,7 @@ #include #include #include +#include namespace scriptingmenu { void init() { diff --git a/core/src/gui/style.cpp b/core/src/gui/style.cpp index ea9a6a8d..2541bd5a 100644 --- a/core/src/gui/style.cpp +++ b/core/src/gui/style.cpp @@ -1,4 +1,7 @@ #include +#include +#include +#include namespace style { void setDefaultStyle() { diff --git a/core/src/gui/style.h b/core/src/gui/style.h index e588539f..13e62c9e 100644 --- a/core/src/gui/style.h +++ b/core/src/gui/style.h @@ -1,7 +1,4 @@ #pragma once -#include -#include -#include namespace style { void setDefaultStyle(); diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 18cc1ea9..3698bcc8 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -1,4 +1,9 @@ #include +#include +#include +#include +#include +#include float COLOR_MAP[][3] = { {0x00, 0x00, 0x20}, diff --git a/core/src/gui/waterfall.h b/core/src/gui/waterfall.h index 3bcf8308..ac48a661 100644 --- a/core/src/gui/waterfall.h +++ b/core/src/gui/waterfall.h @@ -1,12 +1,10 @@ #pragma once -#include -#include #include #include -#include -#include #include -#include +#include +#include +#include #define WATERFALL_RESOLUTION 1000000 diff --git a/core/src/module.cpp b/core/src/module.cpp index 8417473a..05c9ed94 100644 --- a/core/src/module.cpp +++ b/core/src/module.cpp @@ -1,12 +1,14 @@ #include -#include -#include -#include +#include +#include +#include +#include + +using nlohmann::json; namespace mod { std::map modules; std::vector moduleNames; - ImGui::WaterFall* _wtf; void loadModule(std::string path, std::string name) { if (!std::filesystem::exists(path)) { diff --git a/core/src/module.h b/core/src/module.h index d366ad49..807f8b48 100644 --- a/core/src/module.h +++ b/core/src/module.h @@ -1,13 +1,6 @@ #pragma once #include #include -#include -#include -#include -#include -#include -#include -#include #include #ifdef _WIN32 diff --git a/core/src/scripting.cpp b/core/src/scripting.cpp index f9a769d9..193b3565 100644 --- a/core/src/scripting.cpp +++ b/core/src/scripting.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include ScriptManager::ScriptManager() { @@ -42,9 +44,16 @@ duk_context* ScriptManager::createContext(ScriptManager* _this, std::string name duk_idx_t sdrppBase = duk_push_object(ctx); + // API + duk_push_string(ctx, VERSION_STR); duk_put_prop_string(ctx, sdrppBase, "version"); + duk_push_c_function(ctx, ScriptManager::duk_setSource, 1); + duk_put_prop_string(ctx, sdrppBase, "selectSource"); + + // Modules + duk_idx_t modObjId = duk_push_object(ctx); for (const auto& [name, handler] : _this->handlers) { duk_idx_t objId = duk_push_object(ctx); @@ -72,4 +81,13 @@ void ScriptManager::Script::scriptWorker(Script* script) { void ScriptManager::bindScriptRunHandler(std::string name, ScriptManager::ScriptRunHandler_t handler) { // TODO: check if it exists and add a "unbind" function handlers[name] = handler; +} + +duk_ret_t ScriptManager::duk_setSource(duk_context* dukCtx) { + const char* name = duk_require_string(dukCtx, -1); + sigpath::sourceManager.selectSource(name); + + duk_pop_n(dukCtx, 1); // Pop demod name, this and context + + return 0; } \ No newline at end of file diff --git a/core/src/scripting.h b/core/src/scripting.h index 34c2304b..dbc6c64d 100644 --- a/core/src/scripting.h +++ b/core/src/scripting.h @@ -43,6 +43,9 @@ public: private: static duk_context* createContext(ScriptManager* _this, std::string name); + // API + static duk_ret_t duk_setSource(duk_context* ctx); + std::map handlers; }; \ No newline at end of file diff --git a/core/src/signal_path/audio.h b/core/src/signal_path/audio.h index 8f8fe9a8..49ac6a1f 100644 --- a/core/src/signal_path/audio.h +++ b/core/src/signal_path/audio.h @@ -3,7 +3,6 @@ #include #include #include -#include namespace audio { enum { diff --git a/core/src/signal_path/dsp.h b/core/src/signal_path/dsp.h index 850f8549..215ecb2d 100644 --- a/core/src/signal_path/dsp.h +++ b/core/src/signal_path/dsp.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include diff --git a/radio/src/main.cpp b/radio/src/main.cpp index feb565b1..7d4a34ca 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -129,6 +129,21 @@ private: duk_push_c_function(dukCtx, duk_setDemodulator, 1); duk_put_prop_string(dukCtx, objId, "setDemodulator"); + + duk_push_c_function(dukCtx, duk_getDemodulator, 0); + duk_put_prop_string(dukCtx, objId, "getDemodulator"); + + duk_push_c_function(dukCtx, duk_setBandwidth, 1); + duk_put_prop_string(dukCtx, objId, "setBandwidth"); + + duk_push_c_function(dukCtx, duk_getBandwidth, 0); + duk_put_prop_string(dukCtx, objId, "getBandwidth"); + + duk_push_c_function(dukCtx, duk_getMaxBandwidth, 0); + duk_put_prop_string(dukCtx, objId, "getMaxBandwidth"); + + duk_push_c_function(dukCtx, duk_getMinBandwidth, 0); + duk_put_prop_string(dukCtx, objId, "getMinBandwidth"); duk_push_pointer(dukCtx, ctx); duk_put_prop_string(dukCtx, objId, DUK_HIDDEN_SYMBOL("radio_ctx")); @@ -138,17 +153,159 @@ private: const char* str = duk_require_string(dukCtx, -1); std::string modName = str; - if (modName == "USB") { + duk_push_this(dukCtx); + if (!duk_get_prop_literal(dukCtx, -1, DUK_HIDDEN_SYMBOL("radio_ctx"))) { + printf("COULD NOT RETRIEVE POINTER\n"); + } + + RadioModule* _this = (RadioModule*)duk_require_pointer(dukCtx, -1); + + duk_pop_n(dukCtx, 3); // Pop demod name, this and context + + if (modName == "NFM") { + _this->demod = 0; + _this->bandWidth = 16000; + _this->bandWidthMin = 8000; + _this->bandWidthMax = 16000; + _this->sigPath.setDemodulator(SigPath::DEMOD_NFM, _this->bandWidth); + } + else if (modName == "WFM") { + _this->demod = 1; + _this->bandWidth = 200000; + _this->bandWidthMin = 100000; + _this->bandWidthMax = 200000; + _this->sigPath.setDemodulator(SigPath::DEMOD_FM, _this->bandWidth); + } + else if (modName == "AM") { + _this->demod = 2; + _this->bandWidth = 12500; + _this->bandWidthMin = 6250; + _this->bandWidthMax = 12500; + _this->sigPath.setDemodulator(SigPath::DEMOD_AM, _this->bandWidth); + } + else if (modName == "DSB") { + _this->demod = 3; + _this->bandWidth = 6000; + _this->bandWidthMin = 3000; + _this->bandWidthMax = 6000; + _this->sigPath.setDemodulator(SigPath::DEMOD_DSB, _this->bandWidth); + } + else if (modName == "USB") { _this->demod = 4; _this->bandWidth = 3000; _this->bandWidthMin = 1500; _this->bandWidthMax = 3000; _this->sigPath.setDemodulator(SigPath::DEMOD_USB, _this->bandWidth); } + else if (modName == "CW") { _this->demod = 5; } + else if (modName == "LSB") { + _this->demod = 6; + _this->bandWidth = 3000; + _this->bandWidthMin = 1500; + _this->bandWidthMax = 3000; + _this->sigPath.setDemodulator(SigPath::DEMOD_LSB, _this->bandWidth); + } + else if (modName == "RAW") { + _this->demod = 7; + _this->bandWidth = 10000; + _this->bandWidthMin = 3000; + _this->bandWidthMax = 10000; + _this->sigPath.setDemodulator(SigPath::DEMOD_RAW, _this->bandWidth); + } + else { + duk_push_string(dukCtx, "Invalid demodulator name"); + duk_throw(dukCtx); + } return 0; } + static duk_ret_t duk_getDemodulator(duk_context* dukCtx) { + duk_push_this(dukCtx); + if (!duk_get_prop_literal(dukCtx, -1, DUK_HIDDEN_SYMBOL("radio_ctx"))) { + printf("COULD NOT RETRIEVE POINTER\n"); + } + + RadioModule* _this = (RadioModule*)duk_require_pointer(dukCtx, -1); + + duk_pop_n(dukCtx, 2); // Pop demod name, this and context + + const char* demodNames[] = {"NFM", "WFM", "AM", "DSB", "USB", "CW", "LSB", "RAW"}; + + duk_push_string(dukCtx, demodNames[_this->demod]); + + return 1; + } + + static duk_ret_t duk_setBandwidth(duk_context* dukCtx) { + double bandwidth = duk_require_number(dukCtx, -1); + + duk_push_this(dukCtx); + if (!duk_get_prop_literal(dukCtx, -1, DUK_HIDDEN_SYMBOL("radio_ctx"))) { + printf("COULD NOT RETRIEVE POINTER\n"); + } + + RadioModule* _this = (RadioModule*)duk_require_pointer(dukCtx, -1); + + duk_pop_n(dukCtx, 3); // Pop demod name, this and context + + if (bandwidth > _this->bandWidthMax || bandwidth < _this->bandWidthMin) { + duk_push_string(dukCtx, "Bandwidth out of range"); + duk_throw(dukCtx); + } + + _this->bandWidth = bandwidth; + _this->bandWidth = std::clamp(_this->bandWidth, _this->bandWidthMin, _this->bandWidthMax); + _this->sigPath.setBandwidth(_this->bandWidth); + + return 0; + } + + static duk_ret_t duk_getBandwidth(duk_context* dukCtx) { + duk_push_this(dukCtx); + if (!duk_get_prop_literal(dukCtx, -1, DUK_HIDDEN_SYMBOL("radio_ctx"))) { + printf("COULD NOT RETRIEVE POINTER\n"); + } + + RadioModule* _this = (RadioModule*)duk_require_pointer(dukCtx, -1); + + duk_pop_n(dukCtx, 2); // Pop demod name, this and context + + duk_push_number(dukCtx, _this->bandWidth); + + return 1; + } + + static duk_ret_t duk_getMaxBandwidth(duk_context* dukCtx) { + duk_push_this(dukCtx); + if (!duk_get_prop_literal(dukCtx, -1, DUK_HIDDEN_SYMBOL("radio_ctx"))) { + printf("COULD NOT RETRIEVE POINTER\n"); + } + + RadioModule* _this = (RadioModule*)duk_require_pointer(dukCtx, -1); + + duk_pop_n(dukCtx, 2); // Pop demod name, this and context + + duk_push_number(dukCtx, _this->bandWidthMax); + + return 1; + } + + static duk_ret_t duk_getMinBandwidth(duk_context* dukCtx) { + duk_push_this(dukCtx); + if (!duk_get_prop_literal(dukCtx, -1, DUK_HIDDEN_SYMBOL("radio_ctx"))) { + printf("COULD NOT RETRIEVE POINTER\n"); + } + + RadioModule* _this = (RadioModule*)duk_require_pointer(dukCtx, -1); + + duk_pop_n(dukCtx, 2); // Pop demod name, this and context + + duk_push_number(dukCtx, _this->bandWidthMin); + + return 1; + } + std::string name; int demod = 1; int deemp = 0; diff --git a/root_dev/config.json b/root_dev/config.json index 190f7d84..b999d15a 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,7 +3,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 96571704, + "frequency": 96035792, "max": 0.0, "maximized": false, "menuOrder": [ @@ -21,7 +21,7 @@ "source": "", "sourceSettings": {}, "windowSize": { - "h": 720, - "w": 1280 + "h": 1053, + "w": 959 } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index a64f080c..5a29e31f 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,7 +1,6 @@ { - "Radio": "./radio/Release/radio.dll", - "Recorder": "./recorder/Release/recorder.dll", - "Soapy": "./soapy/Release/soapy.dll", - "FileSource": "./file_source/Release/file_source.dll", - "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so", + "Soapy": "./soapy/soapy.so", + "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" } diff --git a/rtl_tcp_source/src/main.cpp b/rtl_tcp_source/src/main.cpp index a072432e..e247afb5 100644 --- a/rtl_tcp_source/src/main.cpp +++ b/rtl_tcp_source/src/main.cpp @@ -10,8 +10,8 @@ #define CONCAT(a, b) ((std::string(a) + b).c_str()) MOD_INFO { - /* Name: */ "fike_source", - /* Description: */ "File input module for SDR++", + /* Name: */ "rtl_tcp_source", + /* Description: */ "RTL-TCP input module for SDR++", /* Author: */ "Ryzerth", /* Version: */ "0.1.0" }; diff --git a/rtl_tcp_source/src/rtltcp_client.h b/rtl_tcp_source/src/rtltcp_client.h index 09d68182..5ffc771e 100644 --- a/rtl_tcp_source/src/rtltcp_client.h +++ b/rtl_tcp_source/src/rtltcp_client.h @@ -87,7 +87,7 @@ public: bzero(&serv_addr, sizeof(struct sockaddr_in)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); - serv_addr.sin_port = port; + serv_addr.sin_port = htons(port); if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) { // TODO: log error return false; From 027054b57e025329adb21062a1bb1792a957d945 Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Thu, 15 Oct 2020 16:09:01 +0200 Subject: [PATCH 057/127] Fixed waterfall inaccuracies + started adding stepped VFO --- core/src/gui/bandplan.h | 4 +- core/src/gui/main_window.cpp | 104 ++++++------ core/src/gui/waterfall.cpp | 229 ++++++++++++++------------- core/src/gui/waterfall.h | 54 +++---- core/src/io/audio.h | 6 +- core/src/signal_path/audio.cpp | 16 +- core/src/signal_path/audio.h | 20 +-- core/src/signal_path/dsp.cpp | 4 +- core/src/signal_path/dsp.h | 10 +- core/src/signal_path/vfo_manager.cpp | 20 +-- core/src/signal_path/vfo_manager.h | 20 +-- root_dev/config.json | 2 +- 12 files changed, 247 insertions(+), 242 deletions(-) diff --git a/core/src/gui/bandplan.h b/core/src/gui/bandplan.h index f7c46e07..d9107fab 100644 --- a/core/src/gui/bandplan.h +++ b/core/src/gui/bandplan.h @@ -9,8 +9,8 @@ namespace bandplan { struct Band_t { std::string name; std::string type; - float start; - float end; + double start; + double end; }; void to_json(json& j, const Band_t& b); diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 3d10ad52..71fb33bf 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -52,14 +52,14 @@ void fftHandler(dsp::complex_t* samples) { int half = fftSize / 2; for (int i = 0; i < half; i++) { - _data.push_back(log10(std::abs(std::complex(fft_out[half + i][0], fft_out[half + i][1])) / (float)fftSize) * 10.0f); + _data.push_back(log10(std::abs(std::complex(fft_out[half + i][0], fft_out[half + i][1])) / (float)fftSize) * 10.0); } for (int i = 0; i < half; i++) { - _data.push_back(log10(std::abs(std::complex(fft_out[i][0], fft_out[i][1])) / (float)fftSize) * 10.0f); + _data.push_back(log10(std::abs(std::complex(fft_out[i][0], fft_out[i][1])) / (float)fftSize) * 10.0); } for (int i = 5; i < fftSize; i++) { - _data[i] = (_data[i - 4] + _data[i - 3] + _data[i - 2] + _data[i - 1] + _data[i]) / 5.0f; + _data[i] = (_data[i - 4] + _data[i - 3] + _data[i - 2] + _data[i - 1] + _data[i]) / 5.0; } gui::waterfall.pushFFT(_data, fftSize); @@ -68,13 +68,13 @@ void fftHandler(dsp::complex_t* samples) { dsp::NullSink sink; watcher freq((uint64_t)90500000); -watcher vfoFreq(92000000.0f); -float dummyVolume = 1.0f; +watcher vfoFreq(92000000.0); +float dummyVolume = 1.0; float* volume = &dummyVolume; -float fftMin = -70.0f; -float fftMax = 0.0f; -watcher offset(0.0f, true); -watcher bw(8000000.0f, true); +float fftMin = -70.0; +float fftMax = 0.0; +watcher offset(0.0, true); +watcher bw(8000000.0, true); bool playing = false; watcher dcbias(false, false); bool showCredits = false; @@ -140,7 +140,7 @@ void windowInit() { gui::waterfall.setFFTMax(fftMax); gui::waterfall.setWaterfallMax(fftMax); - float frequency = core::configManager.conf["frequency"]; + double frequency = core::configManager.conf["frequency"]; gui::freqSelect.setFrequency(frequency); gui::freqSelect.frequencyChanged = false; @@ -164,27 +164,27 @@ void windowInit() { core::configManager.release(); } -void setVFO(float freq) { +void setVFO(double freq) { ImGui::WaterfallVFO* vfo = gui::waterfall.vfos[gui::waterfall.selectedVFO]; - float currentOff = vfo->centerOffset; - float currentTune = gui::waterfall.getCenterFrequency() + vfo->generalOffset; - float delta = freq - currentTune; + double currentOff = vfo->centerOffset; + double currentTune = gui::waterfall.getCenterFrequency() + vfo->generalOffset; + double delta = freq - currentTune; - float newVFO = currentOff + delta; - float vfoBW = vfo->bandwidth; - float vfoBottom = newVFO - (vfoBW / 2.0f); - float vfoTop = newVFO + (vfoBW / 2.0f); + double newVFO = currentOff + delta; + double vfoBW = vfo->bandwidth; + double vfoBottom = newVFO - (vfoBW / 2.0); + double vfoTop = newVFO + (vfoBW / 2.0); - float view = gui::waterfall.getViewOffset(); - float viewBW = gui::waterfall.getViewBandwidth(); - float viewBottom = view - (viewBW / 2.0f); - float viewTop = view + (viewBW / 2.0f); + double view = gui::waterfall.getViewOffset(); + double viewBW = gui::waterfall.getViewBandwidth(); + double viewBottom = view - (viewBW / 2.0); + double viewTop = view + (viewBW / 2.0); - float wholeFreq = gui::waterfall.getCenterFrequency(); - float BW = gui::waterfall.getBandwidth(); - float bottom = -(BW / 2.0f); - float top = (BW / 2.0f); + double wholeFreq = gui::waterfall.getCenterFrequency(); + double BW = gui::waterfall.getBandwidth(); + double bottom = -(BW / 2.0); + double top = (BW / 2.0); // VFO still fints in the view if (vfoBottom > viewBottom && vfoTop < viewTop) { @@ -194,8 +194,8 @@ void setVFO(float freq) { // VFO too low for current SDR tuning if (vfoBottom < bottom) { - gui::waterfall.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); - float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); + gui::waterfall.setViewOffset((BW / 2.0) - (viewBW / 2.0)); + double newVFOOffset = (BW / 2.0) - (vfoBW / 2.0) - (viewBW / 10.0); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); sigpath::sourceManager.tune(freq - newVFOOffset); @@ -204,8 +204,8 @@ void setVFO(float freq) { // VFO too high for current SDR tuning if (vfoTop > top) { - gui::waterfall.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); - float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); + gui::waterfall.setViewOffset((viewBW / 2.0) - (BW / 2.0)); + double newVFOOffset = (vfoBW / 2.0) - (BW / 2.0) + (viewBW / 10.0); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); sigpath::sourceManager.tune(freq - newVFOOffset); @@ -214,9 +214,9 @@ void setVFO(float freq) { // VFO is still without the SDR's bandwidth if (delta < 0) { - float newViewOff = vfoTop - (viewBW / 2.0f) + (viewBW / 10.0f); - float newViewBottom = newViewOff - (viewBW / 2.0f); - float newViewTop = newViewOff + (viewBW / 2.0f); + double newViewOff = vfoTop - (viewBW / 2.0) + (viewBW / 10.0); + double newViewBottom = newViewOff - (viewBW / 2.0); + double newViewTop = newViewOff + (viewBW / 2.0); if (newViewBottom > bottom) { gui::waterfall.setViewOffset(newViewOff); @@ -224,16 +224,16 @@ void setVFO(float freq) { return; } - gui::waterfall.setViewOffset((BW / 2.0f) - (viewBW / 2.0f)); - float newVFOOffset = (BW / 2.0f) - (vfoBW / 2.0f) - (viewBW / 10.0f); + gui::waterfall.setViewOffset((BW / 2.0) - (viewBW / 2.0)); + double newVFOOffset = (BW / 2.0) - (vfoBW / 2.0) - (viewBW / 10.0); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); sigpath::sourceManager.tune(freq - newVFOOffset); } else { - float newViewOff = vfoBottom + (viewBW / 2.0f) - (viewBW / 10.0f); - float newViewBottom = newViewOff - (viewBW / 2.0f); - float newViewTop = newViewOff + (viewBW / 2.0f); + double newViewOff = vfoBottom + (viewBW / 2.0) - (viewBW / 10.0); + double newViewBottom = newViewOff - (viewBW / 2.0); + double newViewTop = newViewOff + (viewBW / 2.0); if (newViewTop < top) { gui::waterfall.setViewOffset(newViewOff); @@ -241,8 +241,8 @@ void setVFO(float freq) { return; } - gui::waterfall.setViewOffset((viewBW / 2.0f) - (BW / 2.0f)); - float newVFOOffset = (vfoBW / 2.0f) - (BW / 2.0f) + (viewBW / 10.0f); + gui::waterfall.setViewOffset((viewBW / 2.0) - (BW / 2.0)); + double newVFOOffset = (vfoBW / 2.0) - (BW / 2.0) + (viewBW / 10.0); sigpath::vfoManager.setCenterOffset(gui::waterfall.selectedVFO, newVFOOffset); gui::waterfall.setCenterFrequency(freq - newVFOOffset); sigpath::sourceManager.tune(freq - newVFOOffset); @@ -341,7 +341,7 @@ void drawWindow() { ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 8); ImGui::SetNextItemWidth(200); - if (ImGui::SliderFloat("##_2_", volume, 0.0f, 1.0f, "")) { + if (ImGui::SliderFloat("##_2_", volume, 0.0, 1.0, "")) { if (audioStreamName != "") { core::configManager.aquire(); if (!core::configManager.conf["audio"].contains(audioStreamName)) { @@ -414,9 +414,9 @@ void drawWindow() { gui::menu.draw(); if(ImGui::CollapsingHeader("Debug")) { - ImGui::Text("Frame time: %.3f ms/frame", 1000.0f / ImGui::GetIO().Framerate); + ImGui::Text("Frame time: %.3f ms/frame", 1000.0 / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); - ImGui::Text("Center Frequency: %.0f Hz", gui::waterfall.getCenterFrequency()); + ImGui::Text("Center Frequency: %.0 Hz", gui::waterfall.getCenterFrequency()); ImGui::Text("Source name: %s", sourceName.c_str()); ImGui::Spacing(); } @@ -446,17 +446,17 @@ void drawWindow() { ImGui::NextColumn(); ImGui::BeginChild("WaterfallControls"); - ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Zoom").x / 2.0f)); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - (ImGui::CalcTextSize("Zoom").x / 2.0)); ImGui::Text("Zoom"); - ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); - ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw.val, gui::waterfall.getBandwidth(), 1000.0f, ""); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - 10); + ImGui::VSliderFloat("##_7_", ImVec2(20.0, 150.0), &bw.val, gui::waterfall.getBandwidth(), 1000.0, ""); ImGui::NewLine(); - ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Max").x / 2.0f)); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - (ImGui::CalcTextSize("Max").x / 2.0)); ImGui::Text("Max"); - ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); - if (ImGui::VSliderFloat("##_8_", ImVec2(20.0f, 150.0f), &fftMax, 0.0f, -100.0f, "")) { + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - 10); + if (ImGui::VSliderFloat("##_8_", ImVec2(20.0, 150.0), &fftMax, 0.0, -100.0, "")) { fftMax = std::max(fftMax, fftMin + 10); core::configManager.aquire(); core::configManager.conf["max"] = fftMax; @@ -465,10 +465,10 @@ void drawWindow() { ImGui::NewLine(); - ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - (ImGui::CalcTextSize("Min").x / 2.0f)); + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - (ImGui::CalcTextSize("Min").x / 2.0)); ImGui::Text("Min"); - ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0f) - 10); - if (ImGui::VSliderFloat("##_9_", ImVec2(20.0f, 150.0f), &fftMin, 0.0f, -100.0f, "")) { + ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.0) - 10); + if (ImGui::VSliderFloat("##_9_", ImVec2(20.0, 150.0), &fftMin, 0.0, -100.0, "")) { fftMin = std::min(fftMax - 10, fftMin); core::configManager.aquire(); core::configManager.conf["min"] = fftMin; diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 3698bcc8..5b64e46e 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -36,38 +36,40 @@ void doZoom(int offset, int width, int outWidth, std::vector data, float* } } -float freq_ranges[] = { - 1.0f, 2.0f, 2.5f, 5.0f, - 10.0f, 20.0f, 25.0f, 50.0f, - 100.0f, 200.0f, 250.0f, 500.0f, - 1000.0f, 2000.0f, 2500.0f, 5000.0f, - 10000.0f, 20000.0f, 25000.0f, 50000.0f, - 100000.0f, 200000.0f, 250000.0f, 500000.0f, - 1000000.0f, 2000000.0f, 2500000.0f, 5000000.0f, - 10000000.0f, 20000000.0f, 25000000.0f, 50000000.0f +// TODO: Fix this hacky BS + +double freq_ranges[] = { + 1.0, 2.0, 2.5, 5.0, + 10.0, 20.0, 25.0, 50.0, + 100.0, 200.0, 250.0, 500.0, + 1000.0, 2000.0, 2500.0, 5000.0, + 10000.0, 20000.0, 25000.0, 50000.0, + 100000.0, 200000.0, 250000.0, 500000.0, + 1000000.0, 2000000.0, 2500000.0, 5000000.0, + 10000000.0, 20000000.0, 25000000.0, 50000000.0 }; -float findBestRange(float bandwidth, int maxSteps) { +double findBestRange(double bandwidth, int maxSteps) { for (int i = 0; i < 32; i++) { - if (bandwidth / freq_ranges[i] < (float)maxSteps) { + if (bandwidth / freq_ranges[i] < (double)maxSteps) { return freq_ranges[i]; } } - return 50000000.0f; + return 50000000.0; } -void printAndScale(float freq, char* buf) { +void printAndScale(double freq, char* buf) { if (freq < 1000) { - sprintf(buf, "%.3f", freq); + sprintf(buf, "%.3lf", freq); } else if (freq < 1000000) { - sprintf(buf, "%.3fK", freq / 1000.0f); + sprintf(buf, "%.3lfK", freq / 1000.0); } else if (freq < 1000000000) { - sprintf(buf, "%.3fM", freq / 1000000.0f); + sprintf(buf, "%.3lfM", freq / 1000000.0); } else if (freq < 1000000000000) { - sprintf(buf, "%.3fG", freq / 1000000000.0f); + sprintf(buf, "%.3lfG", freq / 1000000000.0); } for (int i = strlen(buf) - 2; i >= 0; i--) { if (buf[i] != '0') { @@ -84,10 +86,10 @@ void printAndScale(float freq, char* buf) { namespace ImGui { WaterFall::WaterFall() { - fftMin = -70.0f; - fftMax = 0.0f; - waterfallMin = -70.0f; - waterfallMax = 0.0f; + fftMin = -70.0; + fftMax = 0.0; + waterfallMin = -70.0; + waterfallMax = 0.0; FFTAreaHeight = 300; newFFTAreaHeight = FFTAreaHeight; fftHeight = FFTAreaHeight - 50; @@ -99,8 +101,8 @@ namespace ImGui { latestFFT = new float[1]; waterfallFb = new uint32_t[1]; - viewBandwidth = 1.0f; - wholeBandwidth = 1.0f; + viewBandwidth = 1.0; + wholeBandwidth = 1.0; glGenTextures(1, &textureId); @@ -122,51 +124,51 @@ namespace ImGui { float yPos = widgetPos.y + fftHeight + 10 - ((line - fftMin) * scaleFactor); window->DrawList->AddLine(ImVec2(roundf(widgetPos.x + 50), roundf(yPos)), ImVec2(roundf(widgetPos.x + dataWidth + 50), roundf(yPos)), - IM_COL32(50, 50, 50, 255), 1.0f); + IM_COL32(50, 50, 50, 255), 1.0); sprintf(buf, "%d", (int)line); ImVec2 txtSz = ImGui::CalcTextSize(buf); - window->DrawList->AddText(ImVec2(widgetPos.x + 40 - txtSz.x, roundf(yPos - (txtSz.y / 2))), IM_COL32( 255, 255, 255, 255 ), buf); + window->DrawList->AddText(ImVec2(widgetPos.x + 40 - txtSz.x, roundf(yPos - (txtSz.y / 2.0))), IM_COL32( 255, 255, 255, 255 ), buf); } // Horizontal scale - float startFreq = ceilf(lowerFreq / range) * range; - float horizScale = (float)dataWidth / viewBandwidth; - for (float freq = startFreq; freq < upperFreq; freq += range) { - float xPos = widgetPos.x + 50 + ((freq - lowerFreq) * horizScale); + double startFreq = ceilf(lowerFreq / range) * range; + double horizScale = (double)dataWidth / viewBandwidth; + for (double freq = startFreq; freq < upperFreq; freq += range) { + double xPos = widgetPos.x + 50 + ((freq - lowerFreq) * horizScale); window->DrawList->AddLine(ImVec2(roundf(xPos), widgetPos.y + 10), ImVec2(roundf(xPos), widgetPos.y + fftHeight + 10), - IM_COL32(50, 50, 50, 255), 1.0f); + IM_COL32(50, 50, 50, 255), 1.0); window->DrawList->AddLine(ImVec2(roundf(xPos), widgetPos.y + fftHeight + 10), ImVec2(roundf(xPos), widgetPos.y + fftHeight + 17), - IM_COL32(255, 255, 255, 255), 1.0f); + IM_COL32(255, 255, 255, 255), 1.0); printAndScale(freq, buf); ImVec2 txtSz = ImGui::CalcTextSize(buf); - window->DrawList->AddText(ImVec2(roundf(xPos - (txtSz.x / 2.0f)), widgetPos.y + fftHeight + 10 + txtSz.y), IM_COL32( 255, 255, 255, 255 ), buf); + window->DrawList->AddText(ImVec2(roundf(xPos - (txtSz.x / 2.0)), widgetPos.y + fftHeight + 10 + txtSz.y), IM_COL32( 255, 255, 255, 255 ), buf); } // Data for (int i = 1; i < dataWidth; i++) { - float aPos = widgetPos.y + fftHeight + 10 - ((latestFFT[i - 1] - fftMin) * scaleFactor); - float bPos = widgetPos.y + fftHeight + 10 - ((latestFFT[i] - fftMin) * scaleFactor); + double aPos = widgetPos.y + fftHeight + 10 - ((latestFFT[i - 1] - fftMin) * scaleFactor); + double bPos = widgetPos.y + fftHeight + 10 - ((latestFFT[i] - fftMin) * scaleFactor); if (aPos < fftMin && bPos < fftMin) { continue; } - aPos = std::clamp(aPos, widgetPos.y + 10, widgetPos.y + fftHeight + 10); - bPos = std::clamp(bPos, widgetPos.y + 10, widgetPos.y + fftHeight + 10); + aPos = std::clamp(aPos, widgetPos.y + 10, widgetPos.y + fftHeight + 10); + bPos = std::clamp(bPos, widgetPos.y + 10, widgetPos.y + fftHeight + 10); window->DrawList->AddLine(ImVec2(widgetPos.x + 49 + i, roundf(aPos)), - ImVec2(widgetPos.x + 50 + i, roundf(bPos)), trace, 1.0f); + ImVec2(widgetPos.x + 50 + i, roundf(bPos)), trace, 1.0); window->DrawList->AddLine(ImVec2(widgetPos.x + 50 + i, roundf(bPos)), - ImVec2(widgetPos.x + 50 + i, widgetPos.y + fftHeight + 10), shadow, 1.0f); + ImVec2(widgetPos.x + 50 + i, widgetPos.y + fftHeight + 10), shadow, 1.0); } // X Axis window->DrawList->AddLine(ImVec2(widgetPos.x + 50, widgetPos.y + fftHeight + 10), ImVec2(widgetPos.x + dataWidth + 50, widgetPos.y + fftHeight + 10), - IM_COL32(255, 255, 255, 255), 1.0f); + IM_COL32(255, 255, 255, 255), 1.0); // Y Axis window->DrawList->AddLine(ImVec2(widgetPos.x + 50, widgetPos.y + 9), ImVec2(widgetPos.x + 50, widgetPos.y + fftHeight + 9), - IM_COL32(255, 255, 255, 255), 1.0f); + IM_COL32(255, 255, 255, 255), 1.0); } @@ -227,7 +229,7 @@ namespace ImGui { } int refCenter = mousePos.x - (widgetPos.x + 50); if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { - vfo->setOffset(((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset); + vfo->setOffset(((((double)refCenter / ((double)dataWidth / 2.0)) - 1.0) * (viewBandwidth / 2.0)) + viewOffset); } } @@ -235,33 +237,34 @@ namespace ImGui { if (draging && mouseInFFT) { int refCenter = mousePos.x - (widgetPos.x + 50); if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { - vfo->setOffset(((((float)refCenter / ((float)dataWidth / 2.0f)) - 1.0f) * (viewBandwidth / 2.0f)) + viewOffset); + double off = ((((double)refCenter / ((double)dataWidth / 2.0)) - 1.0) * (viewBandwidth / 2.0)) + viewOffset; + vfo->setOffset(round(off / vfo->snapInterval) * vfo->snapInterval); } } - // Dragon frequency scale + // Draging frequency scale if (draging && mouseInFreq) { - float deltax = drag.x - lastDrag; + double deltax = drag.x - lastDrag; lastDrag = drag.x; - float viewDelta = deltax * (viewBandwidth / (float)dataWidth); + double viewDelta = deltax * (viewBandwidth / (double)dataWidth); viewOffset -= viewDelta; - if (viewOffset + (viewBandwidth / 2.0f) > wholeBandwidth / 2.0f) { - float freqOffset = (viewOffset + (viewBandwidth / 2.0f)) - (wholeBandwidth / 2.0f); - viewOffset = (wholeBandwidth / 2.0f) - (viewBandwidth / 2.0f); + if (viewOffset + (viewBandwidth / 2.0) > wholeBandwidth / 2.0) { + double freqOffset = (viewOffset + (viewBandwidth / 2.0)) - (wholeBandwidth / 2.0); + viewOffset = (wholeBandwidth / 2.0) - (viewBandwidth / 2.0); centerFreq += freqOffset; centerFreqMoved = true; } - if (viewOffset - (viewBandwidth / 2.0f) < -(wholeBandwidth / 2.0f)) { - float freqOffset = (viewOffset - (viewBandwidth / 2.0f)) + (wholeBandwidth / 2.0f); - viewOffset = (viewBandwidth / 2.0f) - (wholeBandwidth / 2.0f); + if (viewOffset - (viewBandwidth / 2.0) < -(wholeBandwidth / 2.0)) { + double freqOffset = (viewOffset - (viewBandwidth / 2.0)) + (wholeBandwidth / 2.0); + viewOffset = (viewBandwidth / 2.0) - (wholeBandwidth / 2.0); centerFreq += freqOffset; centerFreqMoved = true; } - lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0f); - upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); + lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0); + upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0); updateWaterfallFb(); } else { @@ -273,7 +276,7 @@ namespace ImGui { if (!waterfallVisible) { return; } - float offsetRatio = viewOffset / (wholeBandwidth / 2.0f); + double offsetRatio = viewOffset / (wholeBandwidth / 2.0); int drawDataSize; int drawDataStart; int count = std::min(waterfallHeight, rawFFTs.size()); @@ -284,7 +287,7 @@ namespace ImGui { for (int i = 0; i < count; i++) { size = rawFFTs[i].size(); drawDataSize = (viewBandwidth / wholeBandwidth) * size; - drawDataStart = (((float)size / 2.0f) * (offsetRatio + 1)) - (drawDataSize / 2); + drawDataStart = (((double)size / 2.0) * (offsetRatio + 1)) - (drawDataSize / 2); doZoom(drawDataStart, drawDataSize, dataWidth, rawFFTs[i], tempData); for (int j = 0; j < dataWidth; j++) { pixel = (std::clamp(tempData[j], waterfallMin, waterfallMax) - waterfallMin) / dataRange; @@ -297,8 +300,8 @@ namespace ImGui { void WaterFall::drawBandPlan() { int count = bandplan->bands.size(); - float horizScale = (float)dataWidth / viewBandwidth; - float start, end, center, aPos, bPos, cPos, width; + double horizScale = (double)dataWidth / viewBandwidth; + double start, end, center, aPos, bPos, cPos, width; ImVec2 txtSz; bool startVis, endVis; uint32_t color, colorTrans; @@ -313,9 +316,9 @@ namespace ImGui { } startVis = (start > lowerFreq); endVis = (end < upperFreq); - start = std::clamp(start, lowerFreq, upperFreq); - end = std::clamp(end, lowerFreq, upperFreq); - center = (start + end) / 2.0f; + start = std::clamp(start, lowerFreq, upperFreq); + end = std::clamp(end, lowerFreq, upperFreq); + center = (start + end) / 2.0; aPos = widgetPos.x + 50 + ((start - lowerFreq) * horizScale); bPos = widgetPos.x + 50 + ((end - lowerFreq) * horizScale); cPos = widgetPos.x + 50 + ((center - lowerFreq) * horizScale); @@ -335,7 +338,7 @@ namespace ImGui { if (bPos <= widgetPos.x + 50) { bPos = widgetPos.x + 51; } - if (width >= 1.0f) { + if (width >= 1.0) { window->DrawList->AddRectFilled(ImVec2(roundf(aPos), widgetPos.y + fftHeight - 25), ImVec2(roundf(bPos), widgetPos.y + fftHeight + 10), colorTrans); if (startVis) { @@ -348,7 +351,7 @@ namespace ImGui { } } if (txtSz.x <= width) { - window->DrawList->AddText(ImVec2(cPos - (txtSz.x / 2.0f), widgetPos.y + fftHeight - 17), + window->DrawList->AddText(ImVec2(cPos - (txtSz.x / 2.0), widgetPos.y + fftHeight - 17), IM_COL32(255, 255, 255, 255), bandplan->bands[i].name.c_str()); } } @@ -380,7 +383,7 @@ namespace ImGui { else { fftHeight = widgetSize.y - 50; } - dataWidth = widgetSize.x - 60.0f; + dataWidth = widgetSize.x - 60.0; delete[] latestFFT; if (waterfallVisible) { @@ -393,7 +396,7 @@ namespace ImGui { memset(waterfallFb, 0, dataWidth * waterfallHeight * sizeof(uint32_t)); } for (int i = 0; i < dataWidth; i++) { - latestFFT[i] = -1000.0f; // Hide everything + latestFFT[i] = -1000.0; // Hide everything } fftAreaMin = ImVec2(widgetPos.x + 50, widgetPos.y + 9); @@ -406,7 +409,7 @@ namespace ImGui { range = findBestRange(viewBandwidth, maxHSteps); vRange = findBestRange(fftMax - fftMin, maxVSteps); - vRange = 10.0f; + vRange = 10.0; updateWaterfallFb(); updateAllVFOs(); @@ -437,7 +440,7 @@ namespace ImGui { window->DrawList->AddRectFilled(widgetPos, widgetEndPos, IM_COL32( 0, 0, 0, 255 )); window->DrawList->AddRect(widgetPos, widgetEndPos, IM_COL32( 50, 50, 50, 255 )); - window->DrawList->AddLine(ImVec2(widgetPos.x, widgetPos.y + fftHeight + 50), ImVec2(widgetPos.x + widgetSize.x, widgetPos.y + fftHeight + 50), IM_COL32(50, 50, 50, 255), 1.0f); + window->DrawList->AddLine(ImVec2(widgetPos.x, widgetPos.y + fftHeight + 50), ImVec2(widgetPos.x + widgetSize.x, widgetPos.y + fftHeight + 50), IM_COL32(50, 50, 50, 255), 1.0); processInputs(); @@ -485,9 +488,9 @@ namespace ImGui { void WaterFall::pushFFT(std::vector data, int n) { buf_mtx.lock(); - float offsetRatio = viewOffset / (wholeBandwidth / 2.0f); + double offsetRatio = viewOffset / (wholeBandwidth / 2.0); int drawDataSize = (viewBandwidth / wholeBandwidth) * data.size(); - int drawDataStart = (((float)data.size() / 2.0f) * (offsetRatio + 1)) - (drawDataSize / 2); + int drawDataStart = (((double)data.size() / 2.0) * (offsetRatio + 1)) - (drawDataSize / 2); doZoom(drawDataStart, drawDataSize, dataWidth, data, latestFFT); rawFFTs.insert(rawFFTs.begin(), data); @@ -517,9 +520,9 @@ namespace ImGui { lowerId = std::clamp(lowerId, 0, colorCount - 1); upperId = std::clamp(upperId, 0, colorCount - 1); float ratio = (((float)i / (float)WATERFALL_RESOLUTION) * colorCount) - lowerId; - float r = (colors[lowerId][0] * (1.0f - ratio)) + (colors[upperId][0] * (ratio)); - float g = (colors[lowerId][1] * (1.0f - ratio)) + (colors[upperId][1] * (ratio)); - float b = (colors[lowerId][2] * (1.0f - ratio)) + (colors[upperId][2] * (ratio)); + float r = (colors[lowerId][0] * (1.0 - ratio)) + (colors[upperId][0] * (ratio)); + float g = (colors[lowerId][1] * (1.0 - ratio)) + (colors[upperId][1] * (ratio)); + float b = (colors[lowerId][2] * (1.0 - ratio)) + (colors[upperId][2] * (ratio)); waterfallPallet[i] = ((uint32_t)255 << 24) | ((uint32_t)b << 16) | ((uint32_t)g << 8) | (uint32_t)r; } } @@ -539,70 +542,70 @@ namespace ImGui { fftMax = max + 5; } - void WaterFall::setCenterFrequency(float freq) { + void WaterFall::setCenterFrequency(double freq) { centerFreq = freq; - lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0f); - upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); + lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0); + upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0); updateAllVFOs(); } - float WaterFall::getCenterFrequency() { + double WaterFall::getCenterFrequency() { return centerFreq; } - void WaterFall::setBandwidth(float bandWidth) { - float currentRatio = viewBandwidth / wholeBandwidth; + void WaterFall::setBandwidth(double bandWidth) { + double currentRatio = viewBandwidth / wholeBandwidth; wholeBandwidth = bandWidth; setViewBandwidth(bandWidth * currentRatio); updateAllVFOs(); } - float WaterFall::getBandwidth() { + double WaterFall::getBandwidth() { return wholeBandwidth; } - void WaterFall::setViewBandwidth(float bandWidth) { + void WaterFall::setViewBandwidth(double bandWidth) { if (bandWidth == viewBandwidth) { return; } - if (abs(viewOffset) + (bandWidth / 2.0f) > wholeBandwidth / 2.0f) { + if (abs(viewOffset) + (bandWidth / 2.0) > wholeBandwidth / 2.0) { if (viewOffset < 0) { - viewOffset = (bandWidth / 2.0f) - (wholeBandwidth / 2.0f); + viewOffset = (bandWidth / 2.0) - (wholeBandwidth / 2.0); } else { - viewOffset = (wholeBandwidth / 2.0f) - (bandWidth / 2.0f); + viewOffset = (wholeBandwidth / 2.0) - (bandWidth / 2.0); } } viewBandwidth = bandWidth; - lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0f); - upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); + lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0); + upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0); range = findBestRange(bandWidth, maxHSteps); updateWaterfallFb(); updateAllVFOs(); } - float WaterFall::getViewBandwidth() { + double WaterFall::getViewBandwidth() { return viewBandwidth; } - void WaterFall::setViewOffset(float offset) { + void WaterFall::setViewOffset(double offset) { if (offset == viewOffset) { return; } - if (offset - (viewBandwidth / 2.0f) < -(wholeBandwidth / 2.0f)) { - offset = (viewBandwidth / 2.0f) - (wholeBandwidth / 2.0f); + if (offset - (viewBandwidth / 2.0) < -(wholeBandwidth / 2.0)) { + offset = (viewBandwidth / 2.0) - (wholeBandwidth / 2.0); } - if (offset + (viewBandwidth / 2.0f) > (wholeBandwidth / 2.0f)) { - offset = (wholeBandwidth / 2.0f) - (viewBandwidth / 2.0f); + if (offset + (viewBandwidth / 2.0) > (wholeBandwidth / 2.0)) { + offset = (wholeBandwidth / 2.0) - (viewBandwidth / 2.0); } viewOffset = offset; - lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0f); - upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0f); + lowerFreq = (centerFreq + viewOffset) - (viewBandwidth / 2.0); + upperFreq = (centerFreq + viewOffset) + (viewBandwidth / 2.0); updateWaterfallFb(); updateAllVFOs(); } - float WaterFall::getViewOffset() { + double WaterFall::getViewOffset() { return viewOffset; } @@ -654,21 +657,21 @@ namespace ImGui { } } - void WaterfallVFO::setOffset(float offset) { + void WaterfallVFO::setOffset(double offset) { generalOffset = offset; if (reference == REF_CENTER) { centerOffset = offset; - lowerOffset = offset - (bandwidth / 2.0f); - upperOffset = offset + (bandwidth / 2.0f); + lowerOffset = offset - (bandwidth / 2.0); + upperOffset = offset + (bandwidth / 2.0); } else if (reference == REF_LOWER) { lowerOffset = offset; - centerOffset = offset + (bandwidth / 2.0f); + centerOffset = offset + (bandwidth / 2.0); upperOffset = offset + bandwidth; } else if (reference == REF_UPPER) { upperOffset = offset; - centerOffset = offset - (bandwidth / 2.0f); + centerOffset = offset - (bandwidth / 2.0); lowerOffset = offset - bandwidth; } centerOffsetChanged = true; @@ -677,41 +680,41 @@ namespace ImGui { redrawRequired = true; } - void WaterfallVFO::setCenterOffset(float offset) { + void WaterfallVFO::setCenterOffset(double offset) { if (reference == REF_CENTER) { generalOffset = offset; } else if (reference == REF_LOWER) { - generalOffset = offset - (bandwidth / 2.0f); + generalOffset = offset - (bandwidth / 2.0); } else if (reference == REF_UPPER) { - generalOffset = offset + (bandwidth / 2.0f); + generalOffset = offset + (bandwidth / 2.0); } centerOffset = offset; - lowerOffset = offset - (bandwidth / 2.0f); - upperOffset = offset + (bandwidth / 2.0f); + lowerOffset = offset - (bandwidth / 2.0); + upperOffset = offset + (bandwidth / 2.0); centerOffsetChanged = true; upperOffsetChanged = true; lowerOffsetChanged = true; redrawRequired = true; } - void WaterfallVFO::setBandwidth(float bw) { + void WaterfallVFO::setBandwidth(double bw) { if (bandwidth == bw || bw < 0) { return; } bandwidth = bw; if (reference == REF_CENTER) { - lowerOffset = centerOffset - (bandwidth / 2.0f); - upperOffset = centerOffset + (bandwidth / 2.0f); + lowerOffset = centerOffset - (bandwidth / 2.0); + upperOffset = centerOffset + (bandwidth / 2.0); } else if (reference == REF_LOWER) { - centerOffset = lowerOffset + (bandwidth / 2.0f); + centerOffset = lowerOffset + (bandwidth / 2.0); upperOffset = lowerOffset + bandwidth; centerOffsetChanged = true; } else if (reference == REF_UPPER) { - centerOffset = upperOffset - (bandwidth / 2.0f); + centerOffset = upperOffset - (bandwidth / 2.0); lowerOffset = upperOffset - bandwidth; centerOffsetChanged = true; } @@ -727,11 +730,11 @@ namespace ImGui { } - void WaterfallVFO::updateDrawingVars(float viewBandwidth, float dataWidth, float viewOffset, ImVec2 widgetPos, int fftHeight) { - float width = (bandwidth / viewBandwidth) * (float)dataWidth; - int center = roundf((((centerOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); - int left = roundf((((lowerOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); - int right = roundf((((upperOffset - viewOffset) / (viewBandwidth / 2.0f)) + 1.0f) * ((float)dataWidth / 2.0f)); + void WaterfallVFO::updateDrawingVars(double viewBandwidth, float dataWidth, double viewOffset, ImVec2 widgetPos, int fftHeight) { + double width = (bandwidth / viewBandwidth) * (double)dataWidth; + int center = roundf((((centerOffset - viewOffset) / (viewBandwidth / 2.0)) + 1.0) * ((double)dataWidth / 2.0)); + int left = roundf((((lowerOffset - viewOffset) / (viewBandwidth / 2.0)) + 1.0) * ((double)dataWidth / 2.0)); + int right = roundf((((upperOffset - viewOffset) / (viewBandwidth / 2.0)) + 1.0) * ((double)dataWidth / 2.0)); if (left >= 0 && left < dataWidth && reference == REF_LOWER) { lineMin = ImVec2(widgetPos.x + 50 + left, widgetPos.y + 9); diff --git a/core/src/gui/waterfall.h b/core/src/gui/waterfall.h index ac48a661..9f766625 100644 --- a/core/src/gui/waterfall.h +++ b/core/src/gui/waterfall.h @@ -12,11 +12,11 @@ namespace ImGui { class WaterfallVFO { public: - void setOffset(float offset); - void setCenterOffset(float offset); - void setBandwidth(float bw); + void setOffset(double offset); + void setCenterOffset(double offset); + void setBandwidth(double bw); void setReference(int ref); - void updateDrawingVars(float viewBandwidth, float dataWidth, float viewOffset, ImVec2 widgetPos, int fftHeight); + void updateDrawingVars(double viewBandwidth, float dataWidth, double viewOffset, ImVec2 widgetPos, int fftHeight); // NOTE: Datawidth double??? void draw(ImGuiWindow* window, bool selected); enum { @@ -26,12 +26,12 @@ namespace ImGui { _REF_COUNT }; - float generalOffset; - float centerOffset; - float lowerOffset; - float upperOffset; - float bandwidth; - float snapInterval; + double generalOffset; + double centerOffset; + double lowerOffset; + double upperOffset; + double bandwidth; + double snapInterval = 5000; int reference = REF_CENTER; ImVec2 rectMin; @@ -55,17 +55,17 @@ namespace ImGui { void updatePallette(float colors[][3], int colorCount); - void setCenterFrequency(float freq); - float getCenterFrequency(); + void setCenterFrequency(double freq); + double getCenterFrequency(); - void setBandwidth(float bandWidth); - float getBandwidth(); + void setBandwidth(double bandWidth); + double getBandwidth(); - void setViewBandwidth(float bandWidth); - float getViewBandwidth(); + void setViewBandwidth(double bandWidth); + double getViewBandwidth(); - void setViewOffset(float offset); - float getViewOffset(); + void setViewOffset(double offset); + double getViewOffset(); void setFFTMin(float min); float getFFTMin(); @@ -79,8 +79,8 @@ namespace ImGui { void setWaterfallMax(float max); float getWaterfallMax(); - void setZoom(float zoomLevel); - void setOffset(float zoomOffset); + void setZoom(double zoomLevel); + void setOffset(double zoomOffset); void autoRange(); @@ -157,20 +157,20 @@ namespace ImGui { int fftHeight; // Height of the fft graph int waterfallHeight; // Height of the waterfall - float viewBandwidth; - float viewOffset; + double viewBandwidth; + double viewOffset; - float lowerFreq; - float upperFreq; - float range; + double lowerFreq; + double upperFreq; + double range; float lastDrag; int vfoRef = REF_CENTER; // Absolute values - float centerFreq; - float wholeBandwidth; + double centerFreq; + double wholeBandwidth; // Ranges float fftMin; diff --git a/core/src/io/audio.h b/core/src/io/audio.h index 6527e45f..b78d7da7 100644 --- a/core/src/io/audio.h +++ b/core/src/io/audio.h @@ -19,7 +19,7 @@ namespace io { std::string name; int index; int channels; - std::vector sampleRates; + std::vector sampleRates; std::string txtSampleRates; }; @@ -323,7 +323,7 @@ namespace io { return 0; } - float POSSIBLE_SAMP_RATE[6] = { + double POSSIBLE_SAMP_RATE[6] = { 48000.0f, 44100.0f, 24000.0f, @@ -336,7 +336,7 @@ namespace io { int devIndex; int devListIndex; int defaultDev; - float _sampleRate; + double _sampleRate; int _bufferSize; dsp::stream* _monoInput; dsp::stream* _stereoInput; diff --git a/core/src/signal_path/audio.cpp b/core/src/signal_path/audio.cpp index 363ef7a1..0528994d 100644 --- a/core/src/signal_path/audio.cpp +++ b/core/src/signal_path/audio.cpp @@ -3,14 +3,14 @@ namespace audio { std::map streams; - float registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx) { + double registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx) { AudioStream_t* astr = new AudioStream_t; astr->type = STREAM_TYPE_MONO; astr->ctx = ctx; astr->audio = new io::AudioSink; astr->audio->init(1); astr->deviceId = astr->audio->getDeviceId(); - float sampleRate = astr->audio->devices[astr->deviceId].sampleRates[0]; + double sampleRate = astr->audio->devices[astr->deviceId].sampleRates[0]; int blockSize = sampleRate / 200; // default block size astr->monoAudioStream = new dsp::stream(blockSize * 2); astr->audio->setBlockSize(blockSize); @@ -31,13 +31,13 @@ namespace audio { return sampleRate; } - float registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx) { + double registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx) { AudioStream_t* astr = new AudioStream_t; astr->type = STREAM_TYPE_STEREO; astr->ctx = ctx; astr->audio = new io::AudioSink; astr->audio->init(1); - float sampleRate = astr->audio->devices[astr->audio->getDeviceId()].sampleRates[0]; + double sampleRate = astr->audio->devices[astr->audio->getDeviceId()].sampleRates[0]; int blockSize = sampleRate / 200; // default block size astr->stereoAudioStream = new dsp::stream(blockSize * 2); astr->audio->setBlockSize(blockSize); @@ -95,7 +95,7 @@ namespace audio { delete astr->monoDynSplit; } - dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx) { + dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx) { AudioStream_t* astr = streams[name]; BoundStream_t bstr; bstr.type = STREAM_TYPE_MONO; @@ -125,7 +125,7 @@ namespace audio { return bstr.monoStream; } - dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx) { + dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx) { AudioStream_t* astr = streams[name]; BoundStream_t bstr; bstr.type = STREAM_TYPE_STEREO; @@ -250,7 +250,7 @@ namespace audio { return ""; } - void setSampleRate(std::string name, float sampleRate) { + void setSampleRate(std::string name, double sampleRate) { AudioStream_t* astr = streams[name]; if (astr->running) { return; @@ -288,7 +288,7 @@ namespace audio { } } - void setAudioDevice(std::string name, int deviceId, float sampleRate) { + void setAudioDevice(std::string name, int deviceId, double sampleRate) { AudioStream_t* astr = streams[name]; if (astr->running) { return; diff --git a/core/src/signal_path/audio.h b/core/src/signal_path/audio.h index 49ac6a1f..e5d00107 100644 --- a/core/src/signal_path/audio.h +++ b/core/src/signal_path/audio.h @@ -11,13 +11,15 @@ namespace audio { _STREAM_TYPE_COUNT }; + // TODO: Create a manager class and an instance class + struct BoundStream_t { dsp::stream* monoStream; dsp::stream* stereoStream; dsp::StereoToMono* s2m; dsp::MonoToStereo* m2s; void (*streamRemovedHandler)(void* ctx); - void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize); + void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize); void* ctx; int type; }; @@ -31,8 +33,8 @@ namespace audio { dsp::DynamicSplitter* monoDynSplit; dsp::stream* stereoStream; dsp::DynamicSplitter* stereoDynSplit; - int (*sampleRateChangeHandler)(void* ctx, float sampleRate); - float sampleRate; + int (*sampleRateChangeHandler)(void* ctx, double sampleRate); + double sampleRate; int blockSize; int type; bool running = false; @@ -45,19 +47,19 @@ namespace audio { extern std::map streams; - float registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); - float registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, float sampleRate), void* ctx); + double registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx); + double registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx); void startStream(std::string name); void stopStream(std::string name); void removeStream(std::string name); - dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); - dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, float sampleRate, int blockSize), void* ctx); + dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx); + dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx); void setBlockSize(std::string name, int blockSize); void unbindFromStreamMono(std::string name, dsp::stream* stream); void unbindFromStreamStereo(std::string name, dsp::stream* stream); std::string getNameFromVFO(std::string vfoName); - void setSampleRate(std::string name, float sampleRate); - void setAudioDevice(std::string name, int deviceId, float sampleRate); + void setSampleRate(std::string name, double sampleRate); + void setAudioDevice(std::string name, int deviceId, double sampleRate); std::vector getStreamNameList(); }; diff --git a/core/src/signal_path/dsp.cpp b/core/src/signal_path/dsp.cpp index 691893f2..a218ccb7 100644 --- a/core/src/signal_path/dsp.cpp +++ b/core/src/signal_path/dsp.cpp @@ -20,7 +20,7 @@ void SignalPath::init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream dynSplit.init(&split.output_b, 32000); } -void SignalPath::setSampleRate(float sampleRate) { +void SignalPath::setSampleRate(double sampleRate) { this->sampleRate = sampleRate; inputBlockSize = sampleRate / 200.0f; @@ -68,7 +68,7 @@ void SignalPath::setDCBiasCorrection(bool enabled) { dcBiasRemover.bypass = !enabled; } -dsp::VFO* SignalPath::addVFO(std::string name, float outSampleRate, float bandwidth, float offset) { +dsp::VFO* SignalPath::addVFO(std::string name, double outSampleRate, double bandwidth, double offset) { if (vfos.find(name) != vfos.end()) { return NULL; } diff --git a/core/src/signal_path/dsp.h b/core/src/signal_path/dsp.h index 215ecb2d..7ec811d8 100644 --- a/core/src/signal_path/dsp.h +++ b/core/src/signal_path/dsp.h @@ -16,10 +16,10 @@ public: SignalPath(); void init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream* input, dsp::complex_t* fftBuffer, void fftHandler(dsp::complex_t*)); void start(); - void setSampleRate(float sampleRate); + void setSampleRate(double sampleRate); void setDCBiasCorrection(bool enabled); - void setFFTRate(float rate); - dsp::VFO* addVFO(std::string name, float outSampleRate, float bandwidth, float offset); + void setFFTRate(double rate); + dsp::VFO* addVFO(std::string name, double outSampleRate, double bandwidth, double offset); void removeVFO(std::string name); void setInput(dsp::stream* input); @@ -40,8 +40,8 @@ private: dsp::DynamicSplitter dynSplit; std::map vfos; - float sampleRate; - float fftRate; + double sampleRate; + double fftRate; int fftSize; int inputBlockSize; }; \ No newline at end of file diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index 0396114e..63165a5b 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -1,7 +1,7 @@ #include #include -VFOManager::VFO::VFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { +VFOManager::VFO::VFO(std::string name, int reference, double offset, double bandwidth, double sampleRate, int blockSize) { this->name = name; dspVFO = sigpath::signalPath.addVFO(name, sampleRate, bandwidth, offset); wtfVFO = new ImGui::WaterfallVFO; @@ -18,22 +18,22 @@ VFOManager::VFO::~VFO() { delete wtfVFO; } -void VFOManager::VFO::setOffset(float offset) { +void VFOManager::VFO::setOffset(double offset) { wtfVFO->setOffset(offset); dspVFO->setOffset(wtfVFO->centerOffset); } -void VFOManager::VFO::setCenterOffset(float offset) { +void VFOManager::VFO::setCenterOffset(double offset) { wtfVFO->setCenterOffset(offset); dspVFO->setOffset(offset); } -void VFOManager::VFO::setBandwidth(float bandwidth) { +void VFOManager::VFO::setBandwidth(double bandwidth) { wtfVFO->setBandwidth(bandwidth); dspVFO->setBandwidth(bandwidth); } -void VFOManager::VFO::setSampleRate(float sampleRate, float bandwidth) { +void VFOManager::VFO::setSampleRate(double sampleRate, double bandwidth) { dspVFO->setOutputSampleRate(sampleRate, bandwidth); wtfVFO->setBandwidth(bandwidth); } @@ -51,7 +51,7 @@ VFOManager::VFOManager() { } -VFOManager::VFO* VFOManager::createVFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize) { +VFOManager::VFO* VFOManager::createVFO(std::string name, int reference, double offset, double bandwidth, double sampleRate, int blockSize) { if (vfos.find(name) != vfos.end() || name == "") { return NULL; } @@ -74,28 +74,28 @@ void VFOManager::deleteVFO(VFOManager::VFO* vfo) { vfos.erase(name); } -void VFOManager::setOffset(std::string name, float offset) { +void VFOManager::setOffset(std::string name, double offset) { if (vfos.find(name) == vfos.end()) { return; } vfos[name]->setOffset(offset); } -void VFOManager::setCenterOffset(std::string name, float offset) { +void VFOManager::setCenterOffset(std::string name, double offset) { if (vfos.find(name) == vfos.end()) { return; } vfos[name]->setCenterOffset(offset); } -void VFOManager::setBandwidth(std::string name, float bandwidth) { +void VFOManager::setBandwidth(std::string name, double bandwidth) { if (vfos.find(name) == vfos.end()) { return; } vfos[name]->setBandwidth(bandwidth); } -void VFOManager::setSampleRate(std::string name, float sampleRate, float bandwidth) { +void VFOManager::setSampleRate(std::string name, double sampleRate, double bandwidth) { if (vfos.find(name) == vfos.end()) { return; } diff --git a/core/src/signal_path/vfo_manager.h b/core/src/signal_path/vfo_manager.h index c61ae865..42e490b5 100644 --- a/core/src/signal_path/vfo_manager.h +++ b/core/src/signal_path/vfo_manager.h @@ -9,13 +9,13 @@ public: class VFO { public: - VFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); + VFO(std::string name, int reference, double offset, double bandwidth, double sampleRate, int blockSize); ~VFO(); - void setOffset(float offset); - void setCenterOffset(float offset); - void setBandwidth(float bandwidth); - void setSampleRate(float sampleRate, float bandwidth); + void setOffset(double offset); + void setCenterOffset(double offset); + void setBandwidth(double bandwidth); + void setSampleRate(double sampleRate, double bandwidth); void setReference(int ref); int getOutputBlockSize(); @@ -30,13 +30,13 @@ public: }; - VFOManager::VFO* createVFO(std::string name, int reference, float offset, float bandwidth, float sampleRate, int blockSize); + VFOManager::VFO* createVFO(std::string name, int reference, double offset, double bandwidth, double sampleRate, int blockSize); void deleteVFO(VFOManager::VFO* vfo); - void setOffset(std::string name, float offset); - void setCenterOffset(std::string name, float offset); - void setBandwidth(std::string name, float bandwidth); - void setSampleRate(std::string name, float sampleRate, float bandwidth); + void setOffset(std::string name, double offset); + void setCenterOffset(std::string name, double offset); + void setBandwidth(std::string name, double bandwidth); + void setSampleRate(std::string name, double sampleRate, double bandwidth); void setReference(std::string name, int ref); int getOutputBlockSize(std::string name); diff --git a/root_dev/config.json b/root_dev/config.json index b999d15a..803e2e07 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,7 +3,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 96035792, + "frequency": 94930000, "max": 0.0, "maximized": false, "menuOrder": [ From 6e5450ed240ffb1097f18971335953c7c699075c Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 20 Oct 2020 00:32:17 +0200 Subject: [PATCH 058/127] new fixes --- core/src/config.cpp | 1 + core/src/dsp/block.h | 57 +++++++++++++++++++++ core/src/dsp/correction.h | 77 +++++++++++++++++++++++++++-- core/src/gui/main_window.cpp | 17 +++---- core/src/gui/waterfall.cpp | 3 +- file_source/src/main.cpp | 2 +- prepare_root.bat | 6 ++- radio/src/main.cpp | 5 +- radio/src/path.cpp | 33 ++++++++++--- radio/src/path.h | 7 ++- recorder/src/main.cpp | 2 +- root/config.json | 43 +++++++++------- root/module_list.json | 6 ++- root/radio_config.json | 5 ++ root/sdrpp_0.2.5_alpha_preview.zip | Bin 1547126 -> 0 bytes root/soapy_source_config.json | 4 ++ root_dev/config.json | 68 +++++++++++++++---------- root_dev/module_list.json | 9 ++-- root_dev/soapy_source_config.json | 49 ++++++++++-------- 19 files changed, 298 insertions(+), 96 deletions(-) create mode 100644 root/radio_config.json delete mode 100644 root/sdrpp_0.2.5_alpha_preview.zip create mode 100644 root/soapy_source_config.json diff --git a/core/src/config.cpp b/core/src/config.cpp index 3c167bbb..896fd78f 100644 --- a/core/src/config.cpp +++ b/core/src/config.cpp @@ -63,6 +63,7 @@ void ConfigManager::release(bool changed) { void ConfigManager::autoSaveWorker(ConfigManager* _this) { while (_this->autoSaveEnabled) { if (!_this->mtx.try_lock()) { + spdlog::warn("ConfigManager locked, waiting..."); std::this_thread::sleep_for(std::chrono::milliseconds(1000)); continue; } diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index 865897c8..e4fdfa53 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -119,4 +119,61 @@ namespace dsp { } }; + + class Squelch : public Block { + public: + Squelch() : Block({1}, {1}, this, worker) {} + + void init(stream* input, int blockSize) { + in[0] = input; + inputBlockSize[0] = blockSize; + out[0]->setMaxLatency(blockSize * 2); + outputBlockSize[0] = blockSize; + level = -50.0f; + } + + float level; + int onCount; + int offCount; + + private: + static void worker(Squelch* _this) { + int blockSize = _this->inputBlockSize[0]; + stream* in = _this->in[0]; + stream* out = _this->out[0]; + complex_t* buf = new complex_t[blockSize]; + + int _on = 0, _off = 0; + bool active = false; + + while (true) { + if (in->read(buf, blockSize) < 0) { break; }; + for (int i = 0; i < blockSize; i++) { + if (log10(sqrt((buf[i].i*buf[i].i) + (buf[i].q*buf[i].q))) * 10.0f > _this->level) { + _on++; + _off = 0; + } + else { + _on = 0; + _off++; + } + if (_on >= _this->onCount && !active) { + _on = _this->onCount; + active = true; + } + if (_off >= _this->offCount && active) { + _off = _this->offCount; + active = false; + } + if (!active) { + buf[i].i = 0.0f; + buf[i].q = 0.0f; + } + } + if (out->write(buf, blockSize) < 0) { break; }; + } + delete[] buf; + } + + }; }; \ No newline at end of file diff --git a/core/src/dsp/correction.h b/core/src/dsp/correction.h index af39f77c..dc6db7bc 100644 --- a/core/src/dsp/correction.h +++ b/core/src/dsp/correction.h @@ -63,26 +63,95 @@ namespace dsp { bool bypass; private: + // static void _worker(DCBiasRemover* _this) { + // complex_t* buf = new complex_t[_this->_bufferSize]; + // float ibias = 0.0f; + // float qbias = 0.0f; + // while (true) { + // if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; + // if (_this->bypass) { + // if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; + // continue; + // } + // for (int i = 0; i < _this->_bufferSize; i++) { + // ibias += buf[i].i; + // qbias += buf[i].q; + // } + // ibias /= _this->_bufferSize; + // qbias /= _this->_bufferSize; + // for (int i = 0; i < _this->_bufferSize; i++) { + // buf[i].i -= ibias; + // buf[i].q -= qbias; + // } + // if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; + // } + // delete[] buf; + // } + static void _worker(DCBiasRemover* _this) { complex_t* buf = new complex_t[_this->_bufferSize]; - float ibias = 0.0f; - float qbias = 0.0f; + complex_t* mixBuf = new complex_t[_this->_bufferSize]; + + float currentPhase = 0.0f; + float lastPhase = 0.0f; + double phase = 0.0f; + while (true) { + float ibias = 0.0f; + float qbias = 0.0f; if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; if (_this->bypass) { if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; continue; } + + // Detect the frequency of the signal + double avgDiff = 0.0f; + // for (int i = 0; i < _this->_bufferSize; i++) { + // currentPhase = fast_arctan2(buf[i].i, buf[i].q); + // float diff = currentPhase - lastPhase; + // if (diff > 3.1415926535f) { diff -= 2 * 3.1415926535f; } + // else if (diff <= -3.1415926535f) { diff += 2 * 3.1415926535f; } + // avgDiff += diff; + // lastPhase = currentPhase; + // } + // avgDiff /= (double)_this->_bufferSize; + // avgDiff /= (double)_this->_bufferSize; + + // Average the samples to "filter" the signal to the block frequency for (int i = 0; i < _this->_bufferSize; i++) { ibias += buf[i].i; qbias += buf[i].q; } ibias /= _this->_bufferSize; qbias /= _this->_bufferSize; + + // Get the phase difference from the last block + currentPhase = fast_arctan2(ibias, qbias); + float diff = currentPhase - lastPhase; + if (diff > 3.1415926535f) { diff -= 2 * 3.1415926535f; } + else if (diff <= -3.1415926535f) { diff += 2 * 3.1415926535f; } + avgDiff += diff; + lastPhase = currentPhase; + avgDiff /= (double)_this->_bufferSize; + + // Generate a correction signal using the phase difference for (int i = 0; i < _this->_bufferSize; i++) { - buf[i].i -= ibias; - buf[i].q -= qbias; + mixBuf[i].i = sin(phase); + mixBuf[i].q = cos(phase); + phase -= avgDiff; + phase = fmodl(phase, 2.0 * 3.1415926535); } + + // Mix the correction signal with the original signal to shift the unwanted signal + // to the center. Also, null out the real component so that symetric + // frequencies are removed (at least I hope...) + float tq; + for (int i = 0; i < _this->_bufferSize; i++) { + buf[i].i = ((mixBuf[i].i * buf[i].q) + (mixBuf[i].q * buf[i].i)) * 1.4142; + buf[i].q = 0; + } + if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; } delete[] buf; diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 71fb33bf..e1071a22 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -92,6 +92,10 @@ void windowInit() { credits::init(); + core::configManager.aquire(); + gui::menu.order = core::configManager.conf["menuOrder"].get>(); + core::configManager.release(); + gui::menu.registerEntry("Source", sourecmenu::draw, NULL); gui::menu.registerEntry("Audio", audiomenu::draw, NULL); gui::menu.registerEntry("Scripting", scriptingmenu::draw, NULL); @@ -117,7 +121,6 @@ void windowInit() { displaymenu::init(); // Load last source configuration - // Also add a loading screen // Adjustable "snap to grid" for each VFO // Finish the recorder module @@ -129,10 +132,9 @@ void windowInit() { // Do VFO in two steps: First sample rate conversion, then filtering // And a module add/remove/change order menu - // get rid of watchers and use if() instead - // Switch to double for all frequecies and bandwidth // Update UI settings + core::configManager.aquire(); fftMin = core::configManager.conf["min"]; fftMax = core::configManager.conf["max"]; gui::waterfall.setFFTMin(fftMin); @@ -159,8 +161,6 @@ void windowInit() { fftHeight = core::configManager.conf["fftHeight"]; gui::waterfall.setFFTHeight(fftHeight); - gui::menu.order = core::configManager.conf["menuOrder"].get>(); - core::configManager.release(); } @@ -297,10 +297,6 @@ void drawWindow() { core::configManager.release(true); } - if (dcbias.changed()) { - sigpath::signalPath.setDCBiasCorrection(dcbias.val); - } - int _fftHeight = gui::waterfall.getFFTHeight(); if (fftHeight != _fftHeight) { fftHeight = _fftHeight; @@ -418,6 +414,9 @@ void drawWindow() { ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); ImGui::Text("Center Frequency: %.0 Hz", gui::waterfall.getCenterFrequency()); ImGui::Text("Source name: %s", sourceName.c_str()); + if (ImGui::Checkbox("Test technique", &dcbias.val)) { + sigpath::signalPath.setDCBiasCorrection(dcbias.val); + } ImGui::Spacing(); } diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 5b64e46e..86c5f644 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -229,7 +229,8 @@ namespace ImGui { } int refCenter = mousePos.x - (widgetPos.x + 50); if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { - vfo->setOffset(((((double)refCenter / ((double)dataWidth / 2.0)) - 1.0) * (viewBandwidth / 2.0)) + viewOffset); + double off = ((((double)refCenter / ((double)dataWidth / 2.0)) - 1.0) * (viewBandwidth / 2.0)) + viewOffset; + vfo->setOffset(round(off / vfo->snapInterval) * vfo->snapInterval); } } diff --git a/file_source/src/main.cpp b/file_source/src/main.cpp index 6aae4b04..7eafb9e0 100644 --- a/file_source/src/main.cpp +++ b/file_source/src/main.cpp @@ -32,7 +32,7 @@ public: handler.stream = &stream; sigpath::sourceManager.registerSource("File", &handler); - reader = new WavReader("D:/satpic/raw_recordings/NOAA-18_09-08-2018_21-39-00_baseband_NR.wav"); + reader = new WavReader("D:/Downloads/20120416_glv_594_2.wav"); spdlog::info("Samplerate: {0}, Bit depth: {1}, Channel count: {2}", reader->getSampleRate(), reader->getBitDepth(), reader->getChannelCount()); diff --git a/prepare_root.bat b/prepare_root.bat index 2ed7730e..dea93998 100644 --- a/prepare_root.bat +++ b/prepare_root.bat @@ -1,4 +1,6 @@ echo OFF copy /b/v/y build\Release\* root\ -copy /b/v/y build\modules\radio\Release\radio.dll root\modules\radio.dll -copy /b/v/y build\modules\recorder\Release\recorder.dll root\modules\recorder.dll +copy /b/v/y build\radio\Release\radio.dll root\modules\radio.dll +copy /b/v/y build\recorder\Release\recorder.dll root\modules\recorder.dll +copy /b/v/y build\rtl_tcp_source\Release\rtl_tcp_source.dll root\modules\rtl_tcp_source.dll +copy /b/v/y build\soapy\Release\soapy.dll root\modules\soapy.dll \ No newline at end of file diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 7d4a34ca..d5f913a6 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -66,7 +66,7 @@ private: if (ImGui::RadioButton(CONCAT("AM##_", _this->name), _this->demod == 2) && _this->demod != 2) { _this->demod = 2; _this->bandWidth = 12500; - _this->bandWidthMin = 6250; + _this->bandWidthMin = 1500; _this->bandWidthMax = 12500; _this->sigPath.setDemodulator(SigPath::DEMOD_AM, _this->bandWidth); } @@ -120,6 +120,9 @@ private: _this->bandWidth = std::clamp(_this->bandWidth, _this->bandWidthMin, _this->bandWidthMax); _this->sigPath.setBandwidth(_this->bandWidth); } + + ImGui::SliderFloat(CONCAT("##_squelch_select_", _this->name), &_this->sigPath.squelch.level, -100, 0); + ImGui::PopItemWidth(); } diff --git a/radio/src/path.cpp b/radio/src/path.cpp index e2a8c87c..97f52962 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -5,7 +5,7 @@ SigPath::SigPath() { } -int SigPath::sampleRateChangeHandler(void* ctx, float sampleRate) { +int SigPath::sampleRateChangeHandler(void* ctx, double sampleRate) { SigPath* _this = (SigPath*)ctx; _this->outputSampleRate = sampleRate; _this->audioResamp.stop(); @@ -29,15 +29,21 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { _demod = DEMOD_FM; _deemp = DEEMP_50US; bandwidth = 200000; + demodOutputSamplerate = 200000; // TODO: Set default VFO options // TODO: ajust deemphasis for different output sample rates // TODO: Add a mono to stereo for different modes - demod.init(vfo->output, 100000, 200000, 800); - amDemod.init(vfo->output, 50); - ssbDemod.init(vfo->output, 6000, 3000, 22); - cpx2stereo.init(vfo->output, 22); + squelch.init(vfo->output, 800); + squelch.level = 40; + squelch.onCount = 1; + squelch.offCount = 2560; + + demod.init(squelch.out[0], 100000, 200000, 800); + amDemod.init(squelch.out[0], 50); + ssbDemod.init(squelch.out[0], 6000, 3000, 22); + cpx2stereo.init(squelch.out[0], 22); audioResamp.init(&demod.output, 200000, 48000, 800); deemp.init(&audioResamp.output, 800, 50e-6, 48000); @@ -91,10 +97,13 @@ void SigPath::setDemodulator(int demId, float bandWidth) { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (stop)"); } _demod = demId; + + squelch.stop(); // Set input of the audio resampler // TODO: Set bandwidth from argument if (demId == DEMOD_FM) { + demodOutputSamplerate = 200000; vfo->setSampleRate(200000, bandwidth); demod.setBlockSize(vfo->getOutputBlockSize()); demod.setSampleRate(200000); @@ -107,6 +116,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { demod.start(); } else if (demId == DEMOD_NFM) { + demodOutputSamplerate = 16000; vfo->setSampleRate(16000, bandwidth); demod.setBlockSize(vfo->getOutputBlockSize()); demod.setSampleRate(16000); @@ -119,6 +129,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { demod.start(); } else if (demId == DEMOD_AM) { + demodOutputSamplerate = 125000; vfo->setSampleRate(12500, bandwidth); amDemod.setBlockSize(vfo->getOutputBlockSize()); audioResamp.setInput(&amDemod.output); @@ -129,6 +140,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { amDemod.start(); } else if (demId == DEMOD_USB) { + demodOutputSamplerate = 6000; vfo->setSampleRate(6000, bandwidth); ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_USB); @@ -140,6 +152,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { ssbDemod.start(); } else if (demId == DEMOD_LSB) { + demodOutputSamplerate = 6000; vfo->setSampleRate(6000, bandwidth); ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); @@ -151,6 +164,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { ssbDemod.start(); } else if (demId == DEMOD_DSB) { + demodOutputSamplerate = 6000; vfo->setSampleRate(6000, bandwidth); ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_DSB); @@ -162,6 +176,7 @@ void SigPath::setDemodulator(int demId, float bandWidth) { ssbDemod.start(); } else if (demId == DEMOD_RAW) { + demodOutputSamplerate = 10000; vfo->setSampleRate(10000, bandwidth); cpx2stereo.setBlockSize(vfo->getOutputBlockSize()); //audioResamp.setInput(&cpx2stereo.output); @@ -174,6 +189,9 @@ void SigPath::setDemodulator(int demId, float bandWidth) { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (start): {0}", demId); } + squelch.setBlockSize(vfo->getOutputBlockSize()); + squelch.start(); + deemp.setBlockSize(audioResamp.getOutputBlockSize()); audioResamp.start(); @@ -242,12 +260,15 @@ void SigPath::setBandwidth(float bandWidth) { if (audioBw != _audioBw) { audioBw = _audioBw; audioResamp.stop(); - audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); + audioResamp.setFilterParams(audioBw, audioBw); + audioResamp.setBlockSize(vfo->getOutputBlockSize()); + //audioResamp.setInputSampleRate(demodOutputSamplerate, vfo->getOutputBlockSize(), audioBw, audioBw); audioResamp.start(); } } void SigPath::start() { + squelch.start(); demod.start(); audioResamp.start(); deemp.start(); diff --git a/radio/src/path.h b/radio/src/path.h index f3f6b822..fdf02956 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -44,14 +45,17 @@ public: dsp::FMDeemphasis deemp; + dsp::Squelch squelch; private: - static int sampleRateChangeHandler(void* ctx, float sampleRate); + static int sampleRateChangeHandler(void* ctx, double sampleRate); VFOManager::VFO* vfo; dsp::stream input; + + // Demodulators dsp::FMDemodulator demod; dsp::AMDemodulator amDemod; @@ -66,6 +70,7 @@ private: float sampleRate; float bandwidth; + float demodOutputSamplerate; float outputSampleRate; int blockSize; int _demod; diff --git a/recorder/src/main.cpp b/recorder/src/main.cpp index 60c72efc..e88ef2a8 100644 --- a/recorder/src/main.cpp +++ b/recorder/src/main.cpp @@ -25,7 +25,7 @@ void streamRemovedHandler(void* ctx) { } -void sampleRateChanged(void* ctx, float sampleRate, int blockSize) { +void sampleRateChanged(void* ctx, double sampleRate, int blockSize) { } diff --git a/root/config.json b/root/config.json index f96b5c9d..2a7a2e93 100644 --- a/root/config.json +++ b/root/config.json @@ -1,34 +1,43 @@ { "audio": { "Radio": { - "device": "Speakers (Realtek High Definiti", + "device": "CABLE Input (VB-Audio Virtual Cable)", "sampleRate": 48000.0, - "volume": 0.4354838728904724 + "volume": 0.42578125 + }, + "Radio 1": { + "device": "CABLE-A Input (VB-Audio Cable A)", + "sampleRate": 48000.0, + "volume": 1.0 + }, + "Radio 2": { + "device": "CABLE Input (VB-Audio Virtual Cable)", + "sampleRate": 48000.0, + "volume": 1.0 } }, "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 300, - "frequency": 91000000, + "frequency": 98391106, "max": 0.0, "maximized": false, + "menuOrder": [ + "Source", + "Radio", + "Recorder", + "Audio", + "Scripting", + "Band Plan", + "Display" + ], "menuWidth": 300, - "min": -70.0, + "min": -72.05882263183594, "showWaterfall": true, - "source": "HackRF One #0 901868dc282c8f8b", - "sourceSettings": { - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 0.0, - "VGA": 0.0 - }, - "sampleRate": 8000000 - } - }, + "source": "", + "sourceSettings": {}, "windowSize": { "h": 720, "w": 1280 - }, - "menuOrder": ["Source", "Radio", "Recorder", "Audio", "Band Plan", "Display"] + } } \ No newline at end of file diff --git a/root/module_list.json b/root/module_list.json index f7d192fd..6e593fcc 100644 --- a/root/module_list.json +++ b/root/module_list.json @@ -1,4 +1,6 @@ { "Radio": "./modules/radio.dll", - "Recorder": "./modules/recorder.dll" -} \ No newline at end of file + "Recorder": "./modules/recorder.dll", + "Soapy": "./modules/soapy.dll", + "RTLTCPSource": "./modules/rtl_tcp_source.dll" +} diff --git a/root/radio_config.json b/root/radio_config.json new file mode 100644 index 00000000..c6ea5a59 --- /dev/null +++ b/root/radio_config.json @@ -0,0 +1,5 @@ +{ + "Radio 1": { + "demodulator":1 + } +} \ No newline at end of file diff --git a/root/sdrpp_0.2.5_alpha_preview.zip b/root/sdrpp_0.2.5_alpha_preview.zip deleted file mode 100644 index 99c3377b9c54bcdcfc3f767e4b27f6c57c43298a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1547126 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

    u8$$6ldN~1#b;E$q<)ijp8FF3Qa@=#pmSP;> zgq>!c?x_2opm6~ADnZ&KH$Rn>V5D%!0y(kPkb${_6CYJgGifG32|ll5VAvYJaFQs6 ze5F_r$4=O?C3QETWxh3xDl7SYR#xFPb98y7Arr0Q8NkEdA(4RsIwF=b<50SL0#lf; z6NhP;Ra~OTO8l@@vpLmb2X0&j=Kyl=H(BtIR37|uM({OyMDQ|tjDJJKz@VmLRUGi| zg2K{918B}JN0+~Ec_dD=nv^AK60Lo$mRGsbww}iIa?dwVm+XPU5SbUc0MhuFn=6tHy33l?#-WpPn*{spIiX;uNl=bfucKK0|FOeGfboq?v7CF$uoZU8u zACyB+&M~zRomKJiBk()m7{7NIO^IUF1WM$Pw3WJmI@X%*=Vg)NhZew|x8_7M&ZJB3 zc5~s1bVzwXvb@s)>7E3V>#|N<3-A`9HUTM)=dG0E0N4IXs)&^vf=P!6?>xZgZ`wCF!Juu`QjZ-Z?8)J%pjqArV`ZoH*k&W+Xmn61Q99GEfwH~%P^;RiIzBU^`Cei3+p8lbQf z5=uJ`;mVy6Q!>fs3_3fBH@Eacidy&;VEE~RCc1GAUzcs=qx_{g(lXfQy-4I;BH7mL zx2@6gH9$Q>V{+FrY`ZAiYoMU`(K9Ww3KkhMyEv)x>Rx0d*71|kevO%i=nm4{gLI%X zl2%~V0W6WCuZVa_k;u+~T`0Bo5h;v9C7U1CZe)!Znuj@{-q%Z7pVg0E;eyts+cGk8 z(V?U}BQ;$5I_u<8VxQEG=`AG6Hl?-sH9QFf-*u9I2ZzIqg&Jxxb~D1^uM7 z@pgFK$R5`>`EtdZPA+-%TdySBEfj#n*k1@2g@Wj2kytn_9!Q#5ADl4#d)&Hp0XXq*>zjfd_&>!5?+hTD|wEF zKD9_&=Irp{2f0y@WIS3qX99B^(7r?x$|DE4*Dyhmfb{S-DT^mJOXL97nURgxZp#%7 z5ZCDAM($n|*)Bx9Kw8Xu#{sw-C34AU=8Eq}zuySKN6!UTj3^7)nU=0-if~O4BubS8 z>nKftgW`vfYpwlnE7^|$Vi42n%>Yaj3dlx>e(NE$X+T?suRkP>7(CIOdmkcSG)cPX zh?x%|Jn^1p_Bd7SFo4!2AbwW?O84Km#1y-XW}pu>Sfk6K*69+obx`#^MQ6p`c9v%I z&X-st?WZYpe+kn;3h$WCFVTG7qLhV>FTrjdvzGsk=f6~c5IZF%N_70c^N%?{!e2w& zIaQnyY^>2mS%{sSmh-SsW5NxUqeJhJ0q)^hpr_ZQFG;73D*PDhCZ=fhHs_Na^%+^* zG>8(y85O+l7B0JpY~}o8+$9-~NX(bbSByddlMe-K7VKQ9v2&k1P{r~j_5oo%7L=kJ z#I{!8ChHYR{50JkKFFDpz0`0hoh7LecZKW;hza!_hMaKrI?=bTuTUi0Z#p+3f@Lkh zFReByxdI2Qxi;yw((z7Idk>pRS_zc`p{{yxh$9WBod_du)Gn$P8#Ky@ps3r_(494s z3;po6E)JtHB&@h#6_qVWBuLZVa;7hG{BX&FVFfxO^ALZEj{kNI_bx%^OdlRwp-Hw% zu=k`cZHeYgtQi9Fi5uC)8qN7^4Wn%jq)QbEXr_>eE+SM*&*K6TgIi+oIr%_{*g7i( ze~zz&&p?O{yH-d6%@v~~c0M45MwfUm(O_xRsRtQJ4?f5@9|PBvp5dE%nc>D*;6!s? z;k(EG?!h4rZc8(C6<-?l9R5mowo>5#1E8u@#zMpDqS^sgBV&4x)ZHa~_hBd+c_dKi zr#x+4OD_E1%5-nTUoUR3I<`k}*vTmx?Pk7jjNr*8SQ0MOEtIf?@#?3HC4jKJU?1-e z#es6R*U&1-)*sr2%hBO4xM(h<+q}KO3Tm0?CnejntpYsUKi>;;NaeDJz%WV z>(~U5N3@?ux6I?}vo4`ra@gxSoMx08rF*w+Rj}1`jIj41OV;qIJ4~^DGWeNV<>e$< zB!kL)xLxF4WRKM{XQj>riH>;cK5QZ6GbxBxXgR^Imkz1`*x0uj%{dXn?sSNlF?2;?jC+CcJMr@6 zf{ri8(Ccuceu}B`jQsi>#`Egi`9$dG&;__0>yXA%OzT`Yx5iTLbMED#>A>v~Gx3DM zdOql!{#gZ&IS6`H7L%{^QZKq>oy>WuiZln|2+>hv?`Jwiz;gKK?&mH#lu{3>n);Uu^`x<31+%Ki_8&{40EE)Nk-N#+xY+ z8~P9T+GzfyfbsTwfiR*BuGeP|MMqT94=5fKy3f~ipReiOYA{*Jugw{Uzc_iRijAEm z3`T4QM`U71Bj^>Oj3~hlA>=F`X81d?Ar9UCiaz5V-LXN0vMxgc4zg#Iggnp_$txr5^|)2Wcc()bQ;@r50Io?Bq`;p(hH&#SH-!|$TLAZ zawv=-O)8K+3FM`^-l5CxVWi6W3{NO>1Po$5v#K#UF@8laXWkfS;-Pd!dde#O%9+j+ z88(pzi*#@yXpD@+2p{o2j?_IN@zwV-jjXv>^7I%b^JSG>pu^Txp$0Azm$=UZV%IcI zcXWs&qlkwiFf{a^qL?5b+>Zk0Uq-b^>;^Hq7`yaYJM0X{y>$L46`67Pap-kC+Y#sQ z8KR}{d%WJ9-g|gV$)ZxvDg0W+_*LR5+RWl{Yp+hV*(>&LJymzM*cC%4f2>wg8IL=g zyT@{UJ{GO-MF@_zIdCHKJu9%;yBpXHJHMC2C*_@d1^u6;jIfOBEfd=H$J| zI0;vG+-wFJR)MvopM4@7&VV=`$U2(RqIH29eKXH1WGVU)eKLLwJ@L*m6*aI9Tbm}k zYk?V+8Z#v2&0Cgz8I=wDdu+Nf=8h=0vs@@K3_jpUz4;-mtOFD{kBYHGN3Nd1v3bC~Y69sv{TKwF` zA)51(h+X*U1PFvfd|K_>aW~es45=A}m0NHjI_9p(5Qi0qb7ESXBc@mrs;Uz<-@qF@79IB@C_jeC*WRT`U2B~`Kjr5b& zVr2R`*|tkP*W2V zcGgEys1|mHrqInw0bV$OLe*g6!9(L41gH5dK3Ho9p!;eHeSe^No|{Ref288mD^sUU z3nOQYPya`GJ}C=POVrF}}q8u*3nex;T0 z{W9WGI9zBivXZk+h>-qxC)(d~+S4q79GcJqsEvl^+kISH_(~c&*4mVmhp0zo?S4cS@_=KhI!t{pk#gTo+2VK{V(6I|!H0 z_Y&y{#eS3T&-wlgrYmGr^jTEu1DJg>4;FkiG@D=FA)06m*vEo2rW0$AA~Tue8cX!+ zhdyzKtvf3NmtOq~*6pF61Jj$fD4E_C` zO!!2@$vdU7zk1uxG^85tWGV)|))2i?UmV~!)x-0_p|NdgkJDTFV1>ab8EKnh=^B1< zrs6>)ZP^4ZRiR%lV$}jJGQrN%mTu%tidO2v@HU;x#EA<#H4PiHe7+28R>%g*x*Bx_ zk6M6xbQ(*n$42*?2i0%&iQ^A%lT5hr_uj!M(t@3UfUM$({1TR%+;D<1;Sdq*aNfko zE)eA#Or0w^Kmgi1$&|QJzjPNA(;2`a>Vu6a{|cmF_3D#Ck8`3z7M2x5_v>6rRnodM zgiLH93mr+&Ein+(2M?f9Z*JGJS04#P)LX@eKE}}F_${Dmy-@CZ65)ZF*du*@+bnZ) z^6jj2vskU>#c>OQ#nXp4bhCr+gg@PgMC|ODa-_eVc(vXsW5X|Tx_!~=@Vpn z8jygh{5FGaMCWv&+?MG!%B{v&Lue zhgH5p{;<+l${$wvD*3}QUp0SN;;Z2g3w?Fach~vm-{K+?RO|w3V4h! zaGO!XZDm{fS_5p78aGfm5%Tb!=tYuImB$#@i1-bS(aYW7Vs0wzj^w?>>BM=yD$sR^u-qm;7UL7cz#U>7XHCzeADN>x=9UcD4WIlB_Am=e}LcL+DJ}F?yWac)@$DK>vMiFx0szo8Gj+upnd{&XmESnj0sImFSS+4M%9cz+chAznKE^(r|@ zLC$iC0L0t*jxIS6Av$a`E<|(IRbk%Y+ZdSV0a4G)@#EyexioZlNn(YoCByysSQSI` zW%lYvhds#e>eir8O9NUzacoI;0DrukEF5PF=#;0vixz&T4d6MH|xtQ2iWN zU6(we8xI-dz;wAv(<=eVf+qr;j4v$tteh~<&La1dZ<|1PpJ^x^wQNLHQdxpy#=<6%bFXh;oLnEF~lc0*Uszysn&!r3MeiXb@fJLx2(~SPYV21cQjPuX{|{AT^LfTq zY5M)JaB%&mNk(yG_GkZb&S3h@Nt=GtH-LW0+*|SYLmUI>n8g3E`F!0*(79Pc(3K$Q zQV?{ZouG|D`mq;S<=JJwldRp6mqhc)YtgN`DGHCiw|S&V7~@Wxv)c-&>O``05t~2~ z=01Ckgprq^I&MXihAmM)h8BFrEv9p0Kw5Ba!i&(huot6Q1LgVH9!2YL-zM(8N_qTT zjX;VLwZ}l_R-`*XcnA%wmm6tQK45fPK#oa4&v0ZE@8|9ZUgmPFYvJI>36kb|uvf|! zXdVGR3$nA9Bhl2mz#u2#E`6e5B#(gOdrDe))T5ESjEyw?)0he|FtUIpMRA8{VA1`^ z(n`7?@0Ft5T@p{?5U~p@b8QRs{m!8UoHBnxqQ|FMVL<= zH^gDfW69uBp2k*6Ijg}>1XBI>)wblC7Uuj>gQmD(V;({z(z01w1@wQ zzDd(?HC!E!61~7DyK%ccYNR>-o(j^z4oEbY4%vw9&>1-+#^c9U#yJ!|xLziRezJn! zb&_OUKN75F`P?k((ESCRaoG9WFbQfyp>!Lu;!cA=U&Bw52=qrjK*FGGigdbPNekEM z8LM>A_zbx})RJHF^M?G3UsO;&TsE2$_h&TWEV~A+NN_lqw1_8#lgWmy>L}9adL^;l>pCw<6@hfU2FlOY zWAbstKPSQX79;n4Ve{yOU-pzaddzEgKt1ceL)5beE(n`11e-4fo38|$uLhg10h_Ob zF+1NO#_Uqz^v?;WUoD(IC7ixTbgORR_+8BDo1mf5`8}03{(kf2{N0R4l)6=yj~;e4 z#N{cn9ZsAINjp0;aXOsL>kd}D>PdbthhEOLC}zANmnJ}2M_16#f{9kMxK({r;=ZxZ z~AuY1&#LpObYL^6f%6aN*bb-y@-r;;%RXm zrZ;?a1Vn^ObD!>&W6AP>HBMPHnaN&)SUMxmp>#p7TqKW%mpa>v8A@>>?_@AE%$%0(t@~NDc0O63&onTJS=pOT_;%Z zN+WN|DkIHT+*9=XzoQ_%QdwVm%{1G~koWTET7!)(h1Np%r_p#&3|17JKSWT=y%N-LsIuwYhF52q&h}vAaRs$&(SArVegpbFH{?TazDg1k)n;NIWP;+M ziI}f}c>R1Z&Gj|@`)#_s?oW1Gn%@r{Hh|xU5(n;_sTBHd(Vr=>8BFXWHeSdD3a*f{ zf5)!FFP`Kl!0(qq&o&brS_{T!=Z51C8R7Ws)Rbh&k8ze&{98RC(aXc}N4lpZU3dCD zBfr(5{&{3=m1pF{=hZ(`m#cs7Ts$pVumv|d6$y`2VlSK=H$;6>VlbF=-=ijx9Zvdg zFq;o&PfM2JR<;6y#mCtYK)J$?qgW^*woqJdcs$&E7}F_wR7@LnIq&Zz?q3~0=RA@J@3ng5>-2Tj06L}KU;~FC(TY9tf#{;|;V^mBwa$Z5 zcm(wRIrj^v}OcRm_^{v9`#Q6GI}G+4yV z19OX=P3dkt2Sragg7ie1$kp^OBSAjqVdGjYl8*P9)>C$XU(p*00lfw8K_Anh%a~U7 zjg>kB4k-|0UivJ1@89T^QlY&d&wt{}G`O%uenG?n5ZmX`^})s_!|IfOu$PbU=&&Yt zW7zp2=9d?CzR7J~D=z-;>Db&CQum1riEd4YX7-7$eUf!;;-(MW+bZ#*F}D78o&o%~ z^3J=6{Z_({vI6By;ly_9{LRFEGjUD{&U=GNSCbhJ_zFW62R+Gu%_VJ{&+wcg%q$dN ziMla$caSvl`S66eEYAqlSWHX$e$4l-Le*ZV_((_%Q;xT$Lh*ITikO;oQ*&GPp^RLE zEu?ohXy)q~xsC-u(si>L=PK)|$$}}0vZ;{8EtulH8A`a#{#<&8mSQ-Eek zTSf1zot|{vuEb4J#00y<)DvN63yriG>prcfh_wWjaH02z+@Rwa)gUzric`#Z$X913 zmhdCaj!DcoCk&8*narfDeChUCm{~ow`NANXs|=D9$w4RR=J&E-A|c3? zKT$rIT&OMfhCU=;y*L0po!h6BvK;{>$UPF)%uN}~P$L~+S+to~9^Jr>)BU;;)^U+Y zd$G2UV@?Xwj2iNnM)CxFJQR5*5BfRb6a@<;@n82#O6M+2gq4Pg(11t{QG>WHAB1cl zA2be=!xzyO>**pqoo_`wX5mP>YBv@pivecR4sm$RP_yfydq|HeEG|OseLF`sv zCw*F35g;w7R1VH4&!WGgN+ekQAZxUS56&Q^=7IYz>z6%pR9YW;^s2%9kJW}5H*@_n z{C6qUC?7dFOMH=RQc@0w5=Vp0Z{~!ZDYJqzd_2j*>k&3CRCeTlK#0d{Q^CYWGhWwY z#v8gr@wzUpx`g5l9iEYOYiSvjC*&E~@O(JYPHsvHGnv!}cq#P(o|?>?u0AiX#pklI z>hp8d4|s}rCa7PqiQh^dr=G#(_*^iL`UV%_vr@yfx1;&6i-b#UHmP9l5Bb`g*+FGp zYekDxlTtCN%jt}BXPX&!`RHq@{;C*yFrn<#HoBSJz0LBC_AHoak#DSyw#zq4j0z^2 zukD(cRvs3CX2gzO-9kO6L7oPqzb?_Nd3rIC})>24}OH$Z(5YH9#l#u_ zEL@B+dU)u0A!lDG&Q%*qxBLv0R0(H>i!TxKql2D$g&HGx_E4yJ889{!=P7A_0_l*s z&=g=*UQZeXb&$Rxqm9cA9J!}(MGx0D?iH8gdlGrx2le7(p+p{;sL>{FG@|n(i`ejk zu}#OYrubMiqu>TwDeV+Qwz`scV=!@^RwDh_&>v)uuM#>?Ii~h8t-oY*ju*3i^c>>u z@w_G+i)_>ONX?KboaLIvZF&KxxKU86G%CWOD0w#^sEA{5%WlLZO42J^uUA&4eehNr zVXwUh&O~mC(~W7C_Hwx^FM+3?PY?t578i?vle@Sf0e7!{Z48mDg;H6UUX2DQPa|?# zGDKH#7YyuQFtMLiWZOGliW{}M>HC;kk-#+8sZY@$kkUTo zf){VVWF{+685CZol@)3TpOu9~P7Va|jdCdX8i;}PG7B(!k`Y$(p$srjq$Oo`qFc$8 zNHksG6n9yHfAcj4fligd>E@E7(X8JY@R=G#xxPE*iq3IG?R7ZkDfJ`U|Q1D(F2hzSil}5RE*XELot2xIm+5 z&l7_6-2@8R`qwBOK*0QVIu}r(a}f;kO`5?!vKp_7%1OT|lD0 zcC_@pTpxVgVIBS5@fRktNhZ>)C&HNov#?uBtqoU5PUd2z^pnq1 zNc<``*dS0jvNUcJgu0|Pp%AN$`n;Tud69NqIwUmR!jan7xaOSp@EkYGiRL_a%Md2) z8mZ_0k=*=tZ@N7CJ9JHN{H-!mI&7OAnl!8Hu}Y}}4*6mO8)MzTyG|P7aUPk}=3yiB z+cbWn3mzd}&Q*G5^CX&o?q*pAFAdoN2X7wYkkCWk%`&l-XqzNPsNwsB&b|R7TdZf; zVD1IGK&F2d(`k@wF}#-k`1>#rBf_%66D?xQ1qVU@lG6Q&%GmBW^Z%)ud;^L!;@ zW*pEi*^F@4$HXL1qkS2k(7OuI7-^GL!-47!Bwcin{}wh$9&E7!%mE&byI|G?=axicW-!L;wM`b_mPzc^z5vje)`AR%**y4fsD(akO~6%6Gr~*c<#I>FdS4_Y zsa&-3D}ngR^Y2Bv-X;dI!P*+etrf`cRnz=XAN9(x*Y5aPnCdK;Q@6q_E7nt;gE8g| z*cqBC%eGCt1=LJ7!UfzJ6X&gp%<26*c8+hJyj4fE8EZ{v1vRIf3C+Xn4{r*h&iZ8)SlaxMLF+L;%+<)zwzWfoiCeL3oUB-+R%Hlz`lr+}0D+*I0QtPuS+ zc7!o$B{$2vfR0Kl9D0*h@a0qJq4&I8<{pgz`Avi_10fz;C7G^T_uGW7Y8ypELQel!4D;^^;W=v1wYht`ry{p z`ry_k@k4cqAF4<%faSGXnZk9w!~ z(q;J(!T6m!Kg9y93* zlIH{d5?<$6?V<@LU7y8u{`|MvbEWRNBb^L%j2uWkIJRpQGz0bX{7}-j$ia{0Sx&8F z$;ap(i9T-8uBb|WWCsp7_fKoTnJEEE?U7TzEe$!l$SbIR ziU*sIWa~#c*IsE%F56@XyxDxcn^Gv9&DvYoMKv_e7V#EtpulG_X1*4wJgctN2`3mR56WJEx7n?E{R7{NIK4RF4g}%kv z%p(Z3TO>eqH%z=1)41Ske>9!(19wFq*vz;@C3kA4!7V@)3f`YT<7|)TKo(DQV)QHD0 zs1;+T!1;}Qnu$Z^W6LVQ3<%|L$1;6~deB5X{MKM%JKZv$)oOl_W>ueFKtwN~G(BYB zfVp|Ra)zLr-^h>5@XgVWl=$#s0TZq9bGV@lt1qI57VGyE4g{1Bx0a`;M2OEL%Oq%r zXd?6?_P62Z&(h6ALl|J5oI2yyP$X)%9U{Qqv}NKM;aAVd08?oun3h2SPEU(i689r= z>iN;-j>~|x1Q>`BR%DFOon?Qp=W+}vzz=I}x0T@BJ*=M_%X7Q;!<(~{w4;Vw3)W3;JNHf7|@*Y!|DuTDaDIyp_W#eTr)3-k0)6# zFgSv>%-4yT*JG}W9ciEfJyu%;wNrYvcc=G8T9>bsPV_x#1li_jhk&KBBVH6gi9LfR>9R3++dyG$Q`58V>ekWdzBmlw=JVM^7zj=#gorI8KnA<$2~?hdDrug z%E0&Ll77~eE%%JWJ(Z*g%84`5GpHG=!OCC;#BEN3Z zTtwG982Z_GSqUG>W^d>k@|DA)ki3^Fc2-5u&eK>S%rUY8x{5V^2luygik*=q;fP{B zWoscz(}~FLq4k9Do@z`QRtP=7E=}V>qnFcm*25SP=Np_cI%8Y+sHMe2JR?C){4CT7 zLOR2X_{YHHYoQ=fG_RN5Az9lnuH;M&Pjt+8vk>e#g4)V_^s6pNXLTEMP50VNrK4%$a{WDM7J<@x4j51cQ$JVj>s>N93qYt3{{#?XeIY39&8=slN^z4_63S>DQNM*%wFo zj<@>+3rh7nu#|So-OSbWM>Mfg)eo%_?vQf5^CdiOECJc5Rpbq=;!L~PMf!xMzrE~c zj-dt3F?O8e46VqUSM>~z!!#{er%5luUI-4ie&iz8>P5oN8L*9O2W6aVd@Jnh zWX)KXXz9Ou7%|c>L>3w_`OJ1d?FCY2_3cSclu}os?e52ON$)No4hw9qNR(^97dPb-}gJgs(0@U#XB;W}R( z{wgto2_9GOLp@WH?wR5E?CxnvAD45-ztt5?=6#O>rPGqGnFyAe&b^3{hMg@4 zlOili0ld)c{sJ8vy;5LQ2Sjx+lxi%Aw1Y|4=WH=Uiheo~w#m|wP1j@{zKdAb3N}bM z^Al!#1-KHzG5Q3%q)XzC0bil%+<@Q`t*H%R%VcK zF%Pvte_xuF8Ms|8(+DLCbkwytq^3DPhwpz*qK8znKw%)h{S_UYrjW6E7noKc6T`Hc62+V%>ofSi zm-Tb`JngvtUYRAoXQ3vPwz+whx+~~hZ%SO#z9U8ac(JMDnl?lz$7}QcDd^lW#kR?$ z^ap1*7f`K)sl$lzWzyevhR;y1ztNP4;Z%WA4Nv=HrbPRKvsV~b{gOf z*%tnDl`h|lDKE~pAs|(knS^zG!$_0XBp9dOJwXppF4n;FS7pY!8*=!116_Bv>R5Lj zu?PAZpoVGOJ1CTBGK*Wo#n_&j9F7P^@O*2Kuh!yQvwT~Q7DR3GjoG07_B?)Tmv5`_ zn+}sUsdpfF>7;MW4CGRiT&hlA>X1v3^rbGjRFl5cEthK3mwMz)S z)0fEVpC%kZE|HiCB{s;nTo*sHIQ@(vmzJh4<;$hz=}U!j>ACc!BDwT@`ckP}TAjXB zE|=D(FICE=rt~FKE_I|YRlBg3Ew;5p1@)ybt)`ci{jI+?yS z-$fzm_3~{oZfKEjOXc>y^zF+vln}}82p4x!rp$A=x&&N9EDoS7KkxQj~$xKN2zPQ&M8S@ne zi#yGcD}d07l;|Tu@$@UV$PX1?ppOt;#mDI*O8-Xk*}n9*LH^E{zepPx$zcKdyHx%z zm%q>H`{eIx`Ae8W>Q;FUD-OhQg0%W&zLYGYJezN+%&`_TKYiCp7yoL~uZi6#=jT<+ z4Sh09r3_P@9%gBJ7>D$|X+k*WJQa@B<lg`;R>9A9<0Ez+$#{G(GJ_a3PRjoE$zO-;f3EyB?^0!w0*2&)n`8!|Zq5NH{-y`pb04iPx1r3d36x>3wFS=*BP6fDy>sGpC)SbG2&=7iYA)ixbxKIpbU|bxj!X4^xO3-OJ z(}#Ku#aeBpCv*^pw;o4Wq>xhp`zJu&>2aK9umlz~pK-7a6?t<|*+Vr!SV@;l?mMAl zQXfa0ZU};gE3ipAc#9*2%dKUF60f42AW>)HkcL9DPC?=Fu9L3x?F5CBCPU%0Rc+*? z+sftbC3t8p?3}({K2ATy!Jbw$K1Hb9Iy2q7hK+4~csd#8`ut8>EX9NPTzon6v56BB zyzBVPrvOF8Em%}CEEe*?Y=8w82+NUNPL z!)YIRDcmyYJ{}YFctet$SH81`mZ@JTrTPO zO@Ks9TPT5-7v%^TN}QQ{CsBL_yd_S7zyz+^E1*4TqK9>Yj+>#7 z<8Wjm1p_+A4uxt9zNf8pCp_JdZ9##78lmT|fD}b(q^Ku1C~6Q5_s6+p&yEx&7E+va z3_yyDj?0kZIj2D5jKe-@(n>W%fE42C@5!Kz)oj5xsVy8p8;W~4uS5}_0B$&Ki@$8q zT+=2C2J#2=$t4_@<^Z6V4}$f}<~RVq$a-EPAQw5GUTTxZe=b(_QuzedmdaRqrHvj4 zXeS1&oFzggIjqedlpL04XOKg7COKH-Rc1OQ0*#R;uHO;4sS z|aFB?EdrJTk}OuiC%pHq{F z;5j1Po{0suE(@a;`a&6)@O%bgtn$s!m_SfGnVn{)E39|#V9eKSaIGUvD6~lSi`pSns^!O=jJb0R zs~fr2aQR_o$dAaC ze08~NP<%;c@RGi)E8t71rGz3aYXw{>gX(U@w;=5?!l}qDQ-vDGu>m#{#0epj9IX#&nI9FeRh%(@kdnJxr zWCOx|;V{E}at`vfwOai2Jyx(5eb!bx(S!e~eot(6~#P^)dV?=Mi zj?buw1i073JYSJs94EP!AXYClMV$|6#uO{&?znJmV!w?Ck&RbkH3CFyMhI9^GJ-cWLy5s5OoYr)Yyck#Wqv2);uhv+@8ZXWSg@UcqQpE~e2LFsCdg?smn9ehf zyslT1`RYiPU4W&UXcVSC+9$U7b#vtz+^>0tG~RnXJyA9r2YX3P=1Z^xrFczQ zW=}x-aNV}y(mQ~zishU~Imd6*4@CGlX0x{M(>kxy|WQ{qp2oE8vGj=i3RwDVcMSr!hxW+Bp^jE067|0LEo z*zoi9@X;;O31U5lufy>5>F%SF_zM!Z58Zdgp`XtlZ0ME3-(o9;~=|IXBnoalRQiC3_)2-CGtYY)U z&&!OwPJ`vUu0&wVFMACS_MG(^P}sYf;}zP*%iNqIy*Y-oF_V@VZ)YCVkUq>qL-jd3 zE!I?1cX4YdO>-4@yv{4>yvGFHuNm-zK58Ec@*q%%{mS1sS*2=U74!%0Q{i{UMM~|d& zv(lBxvNJcwv~A8>O^)m6L%MVDU}tdf*iBbvc-4B~D|8&vLv&o3;jOk*Pj0=2gAfj3 zsUjtXIrQQf|AnHRuab?9tkV`Oo4$}xOsFeC8PZN}B~u51k|{}za6ssIg|?H`e!U@| zL~E5PTY0H1ri8~)q~hmVgDBOo8Ka7}U&~t*u(qZ*ARAu8wvE?!IRLunbxjbI$jC-|qW+zkcqJCA;YFC%Eqv4VUc?WBe$NyKO`+HnW&l4r%mY*l5Vi1kb|u zb_PnKinwLh6((3xS++|7b2)kS!!d5Q7s0dT`KS&;6tz20BK%O&eE+z*J>;XCbq4qc zLara~R~an95sfxoG7yR2RB5;;ILZ8WSPOJKoEA^Ubk>VM7_uC$=U_Nh8nxFYn>iCM zgApFLoiaZhA(lo{g28E&cQkR7JTD?)k2c$Je#i~>wIj_4Oy=FMKf1+{Hy+)o;?bSa z_B~2L_|(u5o^d0*hNC+hjxG?9FP2<3s;4ljS~n_cUfXyG7=yJ@t#PB;JA|f-nDtpj z#afg~;~9p6&K+#hkL1%q(0k}d2gma>I)9XAwm z0Cb8(Y|;|gN7dzy&()SY?lwwi=z(x)z5jBRdLplrrsAzEQkVVRQU!zMuhGP36j)re zJfpNc8@W^Cwmg`k;_-24Rhd&fJ2)0wDdou?vXJs~g^a=1#31Wf#D0CXid@a7c$mPY3dsE(FL^kMgzmZiHvIrJu z#zT{F?AlO#?kkAU#x{rSxq&y_b9G@8HXaKbZwz;pCkwfPy=6WRkC&$M!tvq>!X)G< zGM+D#Eso?=ST3zp$YFRCydGcqZ!A}1*&8j_sc^a0h6xM@-MOz*Ks8%A6ic@|O!44& zNr8d9$SIgm?iTPw(Yo1on;-^e5gWEG54z!n17?QD*|1l;3b>1FUUz78_1sT$ zr$AC7r%0(Ir_4%M^Jk%XG5y`_x3|J#9x^KwH&IMrlP#qG6%CjpFmY5pcO)jCs%^hY z`p<1=V%0LIw3T+*j(qKqJU66kiiWfayDr>>o+=fSRL*FXwuT$-Y^b++=I#UCxx?#4 z7x7;n3^{4pcSTFaEoUCT7AIIWB89)-$m(Fya_hKmRLjV3Xa_ak&JngUx4VePx2i(p zK71J{P~NDDH=?{uNO@br?I}y2zb;(ZX-0-hh9uSki=RDLctfq;fGr2oy`vE~<}osq zqRL8?3==1;SjFSk_nogjpX%PQ$1{iU3h@amn6|>UV9`=pgpHOeko2vI7pXA zqm`Im%n*h0d6Hseb;$I+70#4z#w9s$Glw1SbiBMEB^psRYSkR(=SDW^Sm)fb!oYfH z_I^DQD;g8uI{6J3aQ^Et`%qh0NSCfW1cD?))^YX(2}w@eqLpz6t|z~;so&EaOYl~> zl4C3EeDn<59xJ9JFc?HDR*c)B#q@sEa#~;y` zW$_+;SsLG_FH7PF^`$F*N?(G*=?W`K!p~r}udt#d{9F;Az|ZCJ$^2XvPhKH&{WN|q zk7us1UR}X_CS)YtvwBFq%=LwQrsp4eZ9db-K7Lor$6Juibg;z2s7n!Bd=8>) zojX0HJMvhnyP+pNaZgqErYkg!tn*g?LaOub%2fS%6wNFY#dLUwmlelEZqi&<1RXmA zW$MPxLdm+Zb5Oo+EOU{)uhq77*StUY^0D|-)XHwD^4>kQJ8}u-W~X*nqvX2RT8Chj zTdVx)Tvgq=RPIT9kK~f&z`BG(?AnJjU_*d+LZH9fr|=7_5NU+H8ZGfLtZ$*N7=JKpc4&$5(8b! ze*KBv{DT5nAuxRmup@Ae?c*a0&`;d50Jq1#mH%*+U-K=)-1t}n9i_N$2Y#sDP34Jl zfAD8yH=ksw;8iF{?;!tKb$&ZzWuq-2s7tIpUXxH&hu{!kBdk_{Xoq0hKFv~(PhvSx z@tcZXg7rsHbIkj6qp(l-vnxO(kDB?eq;^bEeuv}R4@&l<7;UQY7w|oBCfN6 z&oB@rraxSa@zcQIm56DIQ}EL-7gAMF7cvlv%5Mu`LM^$F4tHU)wcL7pZC;c(_sRi3Bn3pjta3Aa~Ii0zi@-0%D4p>Ej zAMiy0o$#O6*2xPQ;>(MP*20kw5WB`WE|ydaelm$foInofRLIT(E{1>nsl7%|V3n;aqMEi%!-tGge4 z$4c!`=RG0{qCVImln5hq5eLokYLN>Z6iSZyr;YjTQU_gLJ3@!IVxJLh&&ru_UaMkP zp-C!cc#wMSv*hY#HWL##*ch-cnObGIETGS zWx=0FEKDN(<1@wep#N&rl*WBJ+LpbPQy|04xuC>a$eR8nY zZRNXCxyOUEHkErN+52ooTRHTg2xJRV~{19*z!M|}x ze+Z9$ATNX(@8by`2;jVbpZ`ek%MZn*?QG7x!XC45`&ypDwd9BjGFfZLerMdzD>(gR zqtQa0=WM^u4)23@A=c$^K|GY~?dNe19?vdBf5`Jj^_yGdT{PkCLZRMDk^Nc4$>kX;$H3@Wt!a=|s;(HXK@d{ZOrmj-5i<_ZD9KcbbL}XXz z5N$LOuX*jHalXsm~H&AM<8r78WO0sc~r;PmW13OIZwA-udbZV-{U*{E4PXlG%>5lSL% zSbR1dS5xrkW?Z(qs=iYLHrB4@hvMm6!{ifY5q2*A^L3zeQVk} zHa8UZNP92?f!LSo*o=xPe&oFrQr^p1xQR1xlePyGn8;NeIq2mkKHa2vD8KqD%0@Rq zh%`y4FZc=dS6PMpl@Y^qXPDkggEyKO6M7RdBO!wn`Ne zW0tU2!KFN2I*TG{>_e1FFw3nRltXhZ2C9oizD04A^=pGiRZ~6s?NB5MglwLje-A+z zHQs+Hi&LU18)B3}8ery@gxQq4c?n<2s?uijilx7?a8ja9k(l%!r||e}8z5OcA4nD#&YEN~jgrN5N*1$K%E6TsUF?L52c2;7h!ZY)Ot{!)!Ud#= zg5F%H##k#ME`FfoQSKNfm9KU+8b^{Av$GjfWv(K(M$K zf19Q|MhSv@;}Mgh0(v&g?~0!k^g0|BEPL;{e=VyjRTi-3^^MPpYPN*QD@@l0enx3G=l&r_SNLOm`v`3*7V9 zQ2ZW-hW9XT`{HCLLwqcagVau&_$fQGBQI0Ge3?o)%%%rZ9p_LP>!=Pksn>^j)05OQ z2TU8Gw{R6X=cvMAd8BZ)9ajw>k-k&vLEfjQNr97eoS}e!Ou|65Q9d$~7(|H<@~zDS zJS!zic$D;mt4)h}2P6?2VkqJ9(p8F%NehCAmTEjF~6X5$l_*8j3o zRhwaD99PHNW6Lbaj+WwTfDpz{S?Kve7uBjeHkls~hUsUZiM8mgX=jWr3PJ%#G4muZ z)f$i6%|6ueT7%M;J>^ShRiVC-im{^Cc4%z43?#ad_bsQ2yNYeVxRO1^)eXL!u|&ie z@%e-fu5iRD-O&_h%_I1_fy!aGR|4gehLVJWyu6QbQ$0ry;(W76u)f|do~Ky8>D+6r zh6cGRp&H*<;slo%@6J+|lV?7V6cZ%Dj8(hLYkWQ$i)0cy;P9l)js z^Z2+4|01F6u_3!S`?&f4RXdx8B-w?6iJMGh?LZ*Qw_1+IQj0=-g)ut*q-TE#eqKk5 z;$y;lhctd6XmIq#Uk)#^xa$mrFaQC^RvHAL*9;Thc_vOq^R0Sh+!8&aeS{?b1YKs> z5Err8Edpu=4T_m|YH`idIWo!vkY{7e)Q36PY;Qssv{}frjPZB(sK{crmjW2XxNLty z;_b#lrVn^-gqE)>9v)ue6bEn2nP1SD1+lu~;4jc;Pj-+r0ajc={iY|BBKqrr^&W1o;6Vm18hob8A}tWLMc zsh*8jr*dnVt^nI?rY25g6El>eKqH1A1z;M2s$iGOv&bWu0?pQ^Tja0GU;$K|ZRDt* z6Q(#zEx`r&Zl`R?ER?`-gG5G8{~6cLA9J^U^AB5q zQud%dbTfXiGN(2nl~!~(`mp3-ZKeITuhx@%An9Le=F4)cL~%fQXxXiNeQ*Qy16DGh zw11hH%vo(n9h!uGp2IpBS%^8AIq~*%4)R#59phVDNF6BJuBsVqKZ*-sL1N6|p`f?R=5MQ%h~Sn*=CtrfZuw_Q7}ckA!cY2r@OQG@P)K>E z?n1ExTcstu+lU@S^0GRKtcP&;M~a z%GS;1zMim*`@|bvAABL+QK=z|v1X7+C$->sY1RFmXUtJ)`pgQa&n$QP%rd9XsN_0T zoo!ClIp|cKQ>N;u*6IpXXR=D`IKmoBhpIl4OAEHpB=X6m0%b~ztJVejPv^fD=|A`X zC;HFFTJCy{{%pLnfxs#%6KzJIa8oir8A+DbSg9# zdUG=cWyy~mhwMGb*Jho-jcf72ushMqyAxcTo^*!AVsC5k!|Y0Px9VJX0@x;YvY)-E zgPeh$^I~&<-UO;?X)AYMeI{?+K5N>}Dfab@*-+HoSyP~42GUt(wyJ!rWBx9tp)ODf zCpg5Iu-|PR+nb#xx7OJEtL*d4RLAxPIZ*ASivU);=}Pvu(m9B6t@+BZyA5u>4&@%8O*6^G=jk1wx#M4+YIZ~Z4ducT={G0KNA1Mo$xe2omv+T7PLaCV~VLxmt zr6KoPj+{_XD^073Z~>;V;?lHgXOE36l$XJ;{x)B?ko)`F=+a}nGt$gMYSXms>)q7On)ylvi5SSc{TdIsohZ)zTYM_B}sW568=Qq_3qG4 zJZ*;C=aZhux!h2XivDJ2IbkS3?XwBxStsJt+`6=&e+jwzkV2bK zO@D-QkDL2b%G_HMbhAR+%^R#jtjj4C64kH*6hIR3Q3<@y{HWTqS?znGIUO?TAJQlF z@t5JmZIM`>L5KYjB|oL`Fyi7r>g=qh{dS27+cA43Y^E}ZN_og8U}N=0Z1_h$4Uryr z{(i;p{&Bb=YOww6HnW-kNH?OO&$brH*#5YMy2$;y1zmbk%G)4qypLN7^u87e>sk12 zGN(gxZwnrRG$8xz&1S7n2pwY{vu}gpPj=>TLMp&C)#1nAI5OmMD9+4e~f1f3oRB`Z$qwa<*ne+bs(HPXSA}~zdLm0TXMLDmS)DSg zs_OP=zM(zsHU7D+;16o2KPY3{@CjFFAR_}Tb*fAs_evLeotRW+yLKZsC33*IWfz$| zThm1mI|0$!mVx?vi#Tcq5k_e6-7GE5$_;sXAMn#O3z2WdgTYTq2%nn>bL_{Xm(*EgMt09>99m0)aT# z=F<_b;8l%njwctKjZ}3#MpW*eWOog*k8#(6!AP=quq=70r>(nYL9ndv4gS9w$Jliu zXz!yD=TGi*HvjKXe&xT_ouNyWQ9gY%-D3yAxztGxfF1gsV70DImcyNNU9uc3#rq2) zVSY6FUpMc%Wv@ZU{_oyILFl8^Z}=v*pE>B>!50sG%Tf21?B@UUO%%32TJt(@a#M@< z@U6j{QVUkqx?yJf_{RV4+k%w~HuRKNFJ0mm_@=7sx}|NaU(GcPl(5*)MO+m0D0pq< zW#hlu#@~oepht_scn_YPN7$o9ujx^(bte^c=ZjtN@p;&JwLmcq+QQE3t1I5$dmk+9 z?>~O&a(%Ru$lvX8kIHC|L0+kH`v&NxNYhK*yBbO8rjin?dE&mR?w@;7NlVH!6`e~B zIeG`GZxbT8Q?)CAj{9I~aoum(#!)Mnif^Yp0aasHh;5BsX|?FbF0|_OR=hd*qUgfl zi`NnfI0Q~NcBNdJt~5F-MU<8d)n{kd0(hSCJiK^+E0ru& z4#w!soNY=_Gkn~u+Hx;YzJCq@4)~{Rn@!y6@=M17tPT@IOsylNhPy%7hCZlK% z3@O0dXv`j$Vu04522TY6r=MAGagc7YU3kJt=~q#mxr$Qe(hz7f3vm#&B{h-M!xHg1 zW)NFLPYPia5;QIazs+#k_f=F3uF6Z`f)3);u?H8aU_KS5#a;ZP>7$t2hv)N;8vc=- zZaQW_sHmsJK?xytmd(xA_zldLygKMHg&@hrT#a>Ip5ozD!!dl#eW;Nht`iO4>3_YO-AZ- zrrHQCqfnlnv9PI7#L4#1T{%l$zq~ZN4N^#2iH{~*!zy!%@3ye1gu!dZRBN+W^}xZp z3$Ub6z~rS80OxA@0k97;>&*E3q|+)XSW4fUi?{D&w`%$GJbOWPoCFFQTj+rK0tvfX zkZg>mc9nZ#1^6RC060Cvn@s;cwf*3IYoH4c+VAw|&79np6ZKcOm9I~AJT`%i8l+vX z)@5pU%_Uy$GPpmi(@aLW(ntq}h&5X8tXROSB}c##uBV5+zhJ|P4A0Zc8QK75Nmr;I zo)7(=w2fei!^p+&qnYSp#HicGJjHZpXX&Dyr!NfkGh-FH^?i10u}FYX2z01UYgd;J zw{<+$U?dPPBk2t1uH|=hitf`j;iiRk=SPrQxmNJ@K7f{gWxNrZ-5N2H;OgH2Z-(7mmu4U7MrkNXmWTCLaVVg#m8sm; zWbdIXL}_~bW5I6nYD&T5k|96@^ePl521(195Qmv7%b37V&n2u`+7&Jb+ew$Z%J{TG zmO{lA0Lx(wF&doglR0Keeo@AKAH*1~OzSc${_Gi2UkgYSQFFnLZZMxpVoixL@%A-1 z>z<<(hlHM0O;P&Bc5Ai7@}4pF1pXrX)ePEJj^Ic7tcaf*3tyYP5L|o-Ury&+3K^8g ziRYG}9nza24Q_Q_PWs^1;Me__7GMJQw4#)6g4{yxG!;;_+y;S%WfVXGt4n4TgZdS6 z$@6Ew!Bx1Tt^jM0E~X%q8Y?_$(HWi!ue+NvJ6l-DIzvxcY>6SG?=Utvz}bd&RVZd3 zJd@xZs^RWYRD6c++9rk&Hn|uOuU+=0T^5lDukBAdI2U*(VdZ0GP2GbCkr*&pA|OY*}8dgZL=ONv~{huEpfJn^K1ucdJq!tixs zEXrh$5#LxeT=)^eQ(ss_YlTu6pK+-Shl>2pVKxRq z&UhNoeMW0VA8jkwStCzV@9uM%1@E#Hr8M{CKGY*K4v^iND&I*(|Dv;y9R9XOOm}Y0 zMe~}kFY=mWv0`QBHLv)$Zx1gi&UxTodd_9RD2wC>`whQlW=?#1u>+l*4PL*mIIZQ) zVM@sc2A~A}h_U+~XFu+c!LmdKgE1!QO7;bBcnPPK5Q(?b{IrPQWwv4YLyYB1xP4>@iO2pV`KX9tc-pE>?iUn8#Z-wdLT&iPc=| zjQAR_zt_)bfm;yDYjwG_aZSGd9E3t}9;H6@+)}Bjscq6l92y z7K{8F*Z(b5bx&H_OOFPp9H==ImS!=~cPm$7luUgk@<#S^>Vm%{^F4M4mOSyPNV> z8}NY5ch(SwPjJY9IcSOxNrI|j4iGsR=IvdtU;VNIQkOUP{aJ8f0>uk}w95&iMBFm6RgHHZdMuS+*j{rD8$G?$? zWZB&V>9E>)<|NC$E9%3#zCLwd&ja?lUZvc|n zuX8GWom2Ab94w`)RxP`Lix|Y#EDjik>F+@^{XJ}^zemjU_oz&NJv9BT-Zb>Tba%zr z#YOhNPhW2T%LQ6ivNqW{&AYSZ>lt{OY{fkf5V$%}%2 z7Fj;=V#|YiAfwL*llpvkf<7Oq)90gf&pXT$M7x~6Z+Ho+1G1)6?g^MVO3H?oY{Oc7 zW-$b?JL9)^R}X_akRupucjPCy{MFg%?uMV>^4+yzVC6Smm{{bS`PPE<0?(lIAnxv9 zdLVK{y=(12WpG+7q*p(}VsbrZZ}|bK65@Sj=$K^?WTZ0GTklLKoSXkBV-o3Q=}C7y z)ePah1>t~j_t9vcr)K^fL$MOHkJC7EG?c0DoWq;nrBn)P$SzX)UHF&h>v@PXRKvGg z3MySdF2I%XWDtf%&YM46DOoVhRQ!ehYLCxi8e(?41?7(Xn11LojLBHL;smY^d8S`+ z{d@`%n=D@k;v<8r<)ZRNzInc)zo1)tpQ1L+*k~L;6E`Mq|<8uR% zjElDwYxS~uQP%J$^9cJV*|8-h2B(w|!lHL)HJ?j3zdzPIi!f-v`98E`)SK*B4d=;OPK}w`ez3xzy3wz}LRZ4KR#!4qy)t;1cARZ3 z8n7O}a|U#(POAO%r$%t%3o6?&DS>p*P7&{P_OMl|n zuT$JSVSeHxG{#Wgyyok}OH?+>-=DX@D}Q^7(zm6=y&KnGLepoow?;hnHAUi$-262~ z!Xe$vAO9b^oIO`$XMnUm{-5xJ3%IZd5+3^`|L4pbOv2(mIu8hM#ow*UyIk*f?X+MI z&ukGLL1`3b_AA&&&+*4Omhk7VmqBPAep;;^woXLXf^M|Z*|$xmiR^Y~Oz9)7%z*QZ znoElUZ`v8l=G_^wcwSDm-~1!4(vQ>K&3C7Bd6@48Z0)Om4F1hc{3C8!@Npb^q_H}Z z)U+@P;=Hp|+}S`=+qn?*fOg9-%w@XYIg-JHXe8ui^PGM-gCRgJH0XVN_oX`39FgU40!#c3slhCxg*8jU}5N3q$-tTnl$^yK|IWl{ZKQ zy<4H^@6(3-Fn

    -jBa3{ey8I~DuWG@o@v zMHei{Cq}e$e?-k!wLN#@L}zij97Bpnzsb6S2&wTeeFX%u1|j?0VF^nV72 z)pzm_4%PeZ;u4GKZ;>6#2Xd0XpF26-u{s^@ z?so>EI}_nP{SMYQ+g)NNu3r3^#-B0d4`NGxN1GNql_7IKSR$6WDsQPaex%NAUoY8R zeK!+0(6+~I42qe_lbUR}F1UDs1o5alrh+(n!#_S*w3%%) zWHuLU*1-xr?yTtA;}SUn(aWFpc$o79AK8q@OA2Y{bQ9d!L}F?*N5x|_@I7MZaP?b4 ztMOY1c5(x^&<)9s{fWYUj&iFlbSBqy#}gT=&#;`rJzKiQoYRqO5dBxrK*4&qPyc?o z_Nj>J8cM?T-0UWR1y6u&LGmVrT$Apu{u1Vy#bwJM3-|QLv(D*J2;=N=Tm#g zg?D49e9@k8gSOyYGmGY4ZF!=`v=RnmllDLMukG$VU!(zU&0@&yn^#N>X?rd5? zgZ;bgi`u`VfBHpdIEzZoCbmkqweS++m==D~v0_H=qe{iLgh>%uYiImjUvxVf`9o+? zFqL@)(#axbWeu~GYQ*Q?^F=cjX5pvXW|kWApT}s#}xraGTxMTkT+HfBkT)O&74iR zJzkmaZn_>1zr~$oc>>kY1USJF9|FpP*}s0ya5J@6yn7B+0_E*dsC+7KX_wwoXK#Rg zB(p#CmtbyfV`t4Ggk+7&au9;X|MUg21Lk@AqgU`R7J!LW4b4FSBGl-mU$8y#y)O)x z<%4FbzGC2f)A3+9IO%c#5PL+|la&+OMeb){E~j|!2ZP=Idxk*$$t9Cq$Cn^AVf@?e z#UtLP{tkpM_bV>^wKm^IGoH5zHVuxu>=tul6MP5^A(nVP%#lE*>}qE%Qij6wyycI| z!SaIbc8T#;vuKH`=0wSO4!vshnlGtWlOFvN4~N?GDL^|A<+QsqWIhInDk@l*OO`;<8}gWeC|lB;neCx&0K&hFc0c}rW( z@NYcCG-`k3FT@K5cvgCfg9C)6U-5T#=Xwhg9I%+p;HTS-8_gxIfP3l+A!+*B|%n9L*DU1{pUqw9@57ky^zc zfi#p5yx)iey26A%f8_7^mp}gh@H4xa{b@%(R`QA!!q|-$eOLD=6Ee)b#afN-aO9t{ zT%Q=*r&}uM#Vq$uZ90GCowyLjs&e_|h(dLliWq(^m>h$-o1=|evHEk?1>8GbLZ@F* z>IOLjHy^g;`X+sO|DtiG@D{9u!KnL0_kTPAOrL6^imF;>=o-6bFIup4ly`!FrNqH;GE;kQ%C8RW&9A?lJi z7!gHQTWkn)JNIBPBroml(067W)ky`&1n!eOyM#z+{6sat!4)+IY+_qi8{ zdSIV^7an|y0%)swF4j7WeXusQQe9)!U2bLol$s$Y1SCJ z5Jz@>UQ^O1UOJb&wBz&IuZ9Kq4EnXp zHdR0kXNBn$WB&9xjd2HA&*IPV%sk4qX<{~a(Cx45`SIW7r>A5@khNcNw;s15 zU?+Hl-f2w^F!TcV&%vKy%oX+O!s7<`=Z`DT( zYPVd%1kSvdom8@OEV7Wz-7hX4F{@;P_xKf)?;XO$HE%64bTD6u1|5(6DrUi3NsYDg zdjM&lLiCe({c|%d*ZkdPw)MyC#-&?WO#_tv9>4)L1NhOK^dB?Da2SqwDR0qY;?F;v zIfOqeyvG~2XeLhx92eP5A*%)}InrXmBwN|rA*^~o;WS!NbqgHz1`1^8Q+?8^Ym>Z3%Z`(MUK--_wObb$-j}a9Zlz)u|2bc`0_@yPr2fV@aVw_ zl)7)Vd17MGom?CpVG&8sF$ezeog30Q7o8}b!i<459`4=bOm0WOqI@(%nV8yD(xDMX5ba_u|;`yrX zJpgL%oD-j$%B{ldShlc!9YKbPF`TFxn}|0C|EA-$!M_SS@BDJ)z<5#NgdXkJ+;B z;~ZevmyMP)V9U#)|K}riqs7QyXN@VFmkNo?o7<>iX@nf}P2KuiAy=u~6SsFa zZ)TE9?#Z_9WMy0Z6K&m*t5W5AQuR-!>v2YVcU(;6h}n6qftz`$`Yp*EBYgknY^ok& zM$+O3!>Yx;mPvdsRc)a`7F6~=@O2JMW$%ZC;QG4a<836B=Y3C1R^fyAyPbG+R0qN z%!7+HNYD`f4=y{)^NNm$e7SumbAdjf3b!9FWXkGkbdUaj zvixQ*WdRLH;Rzl7N|uqqjEOv+rTXyE8l4v2ljlzUm*pQG$=K9}M1$xNgB* zjdEaV{j{U^$c|pf>Df6Xrza5t-u{?Djw}(^Pp!U(aA6oEOB&{qji=!SW^1>l-uChitThO22XBwlN^q$0+;Eze4Vh2g3 zjyIEB-<)?a8)Eh(paG*8AZK}#GgG=77y&jdJEgmc0elZCLiK#I{CUt)s^h}!JVWFd zL!of{E$D3YosXHJGT#vlqB3~9Ca2`;2UAdLs;u6v^|8L3D z2OCgWTgNfR0Spx5ZlJ>74xA^d9Y-uaxT&}pij4??Mze!t6a7Qe8W3b*2Eg^Uv_lt1 zsXkH8YI5k}gv?MSH1-t*KowT1Jw8uMTorPfII&|w;Ih_ z4cM|>xXP}}m*No}w}fih5&Ft8&wKGgN3T2CPMp1s^R_;lLsm*Cq@#;bG^} zVHC>j>C6r+T9?I7D~~RC^&GcpGcY0U!~1{}p=vTMv<@p+s5-{;=vp$fYwbK*8??|= z$kq+m4dVylH_ zAdf8r?LQ0mk+P#_Sdoa8VV*-4XBKK=ZX-~y^Yiit;sptuigo>bg-bI2Wm+{G+Ezph zOZlY4H!z8%Cb_XLosSGV|Dvb}^oU7s>sSjPa%?4wXF?f*+7S$318in0G5Bm-IjpDN zuU$Chw=MS9`{5FoKi+~P+(Bb|B%4}N8=&{S&rWkEi(`C0+(`js_bgak35uEO*wUb| zO0GWHDaOz7G`!34LdKiL-xb0~wI>`q9!tb(x6*yKbjAN-}^C|!J*C`R3_CL&8(`lXO6KN z6&;6g^|gX6gjE+~3#~%DrzB;CP@W)#+qt>Ss{O}i#p^<#9#+;%#1mL8GERf{_m;TW zgls=nb-GOQc_QW@vUjkp9O-5o6jYN@LUkH!{0ZSkXWEIjb4rd0%2mBXssl_LQUPF^ z#Xzb=0MzgsP$;12-Mzso1TQt13@Y|Ey_8nd%x2t$lur2e;FRrmdoZtXHdz}I^60`- z7u=W~L+h?p#fHXW@AeX`m|UHQ37VSohckMb`A?9Re9JowM7+h7795vf>ORX&t=;XXqsu zbT=XX2MEiN4}?NPRjm006S5w)4W{(@gk(8F4S5SG<1xnJ!$dHWFD|=H z>T{T-zTCcG-LPlPkIb`hje>y?%aG7yqwa&kbyqX=%luF)?;u<>30Ltw6%XA(*VLGQ zxWl54mgt_R=t|1j)zM$k7vl8I5ZLctPDL%UgfVGS@v#}aG$EW&6>KAs3bGa^H(u|m zz^Br)$6R;Ea2F2tPW?KrN}rRiun(R)*qPTV>DME48JBzmg%c~DawBeUdS5XRt|b!6 zkM{1i+)fB^l~lqRGO>xhfjRVumIggb=ei_D0JANfGc81!!z(F)i`56abfIxYW}vKe zdVrzHF)V5&MIkbQ+1!PjbdNvjlT*1^b5unox~0W5e~2kr9P@+pA5WY*yrg(auyOje zllN;=&gC#SX!mo>(ZgYpmS;G+>n#-^0}FL5{wlrocH(BwxV=02f>zQW^U^ePk)9{L z8UEHb_!gURaAu*AWyGJV$;;+pi{x&%fVTt!OdZFYg`ei!u3#O;q@@|BHX_4os<#x} zlG4-bMUlilOYoq?z9@Kx|J?TD?f48`_H*(&aj^r}iaf^E>CO=i(||SC=y~Uo?m;(GdSxS1<$^-I)K)OU#}!D2p+_nW|3y zYAQR)Eq~4&`xp#zj1dBwutD8F)!h1X@x_D(MQlaGwBn5}U?uDD6Gf}rjUW?x>6k`t z8PfcFb!qfyHG5EojJ@&-KO@RCzyA|1>$iwL;|2O`bn8%Ayc@B(U=>{DYR$T=(P+$Q z6#Ed9Z&m&_n8|XFT4r0ZrbatkHmN~tK*1D>8t@dNC9IPbE+ef!?@-VWS}6XI?ne~> zr3w}M`Nl>P+dmE^wgdzN5Zjh1uO+qvMZ{)S7Es2It?YwXlgB{1oyHFKh&w#3ClLr2 zd0&A7g9GWkq&ta1viWe}F-K6DfS{l};DBqons|wAMw<7uX=lB23NJWi&2s@o)kTq) zF5EY`{nTx*CC!BvoaitU2yP`0 zu4LCiC%04cM(fcH{LBI`|Ll-~J&|%GUNi~Yb+MOsS~j;Tb>Wya8au!p!bsU&Q}~vV zz4{#U$0=b-MXNhJe>27CdZ{hfdCtUq$(=h$e@`L&svFLXl8GDzXv)>UJo5~9^zJ(h*BxBDNapW2rUubG{ zk|8OVb?QrP>Ig&M!rXg#oJfXX0Ifuw&+JUy*JDYNr1$Kzc>na$BHDJ&D$=-yX2W^| zS}q7tp796*66Q9k8cq)JZ4H%WQ1bomncl+rhj-v3EOm@Hz1Nlrc{ zIHP9rQ(Ls^{v|Hr#9~L}v|_}G+*ozau~p|>U3Jd+Rp;Dcb#joQnNt>VQc@-jdQ=%c z&BK;6k6TV2IO1HE8O~*y;arv(&SjZ!E`yKN=1=_5M~m?P{_HjJCoPCTnF%)=!%9%n zQ+Wl!6n?a=ySax+>~VSqmzsk((k;*6auOA*<#Z~1J=t9?ub}~X+}2&QIRyNJy58L| z0Tr*Nr*j(_zmo258qOFNS6*AOEUDaCg|nbocl`zhwWR6?7|xQcKcA{U)mFdnGmBvv zm|BTa8&KqvJ9s;Qkkc^|Ds&Z=|{pXw~|{n-5m|L z+(B-!=3($6FXr}({vCdU^LReXj&A4vnw_d&&;2z$+1=!}U3+|5Dz_^5l8sNky}Nps zU7itdY^&dnc&t=?FRRklre5C5!n9txeyM@gj%|*^6OH}o5m}AN?9-U7HrsPPlAEx5 zYG^%<+=Sca5(6L_3(atrpAq4m)ig{G(8-E9(Yg1&;QuQN81g6(zR^l)GT*JtAa3L^ zt8so!SgCyhQuR2kuNgMM$b@`iNVFF0Z$PB=8<2cy@Mo?36E-^hltsy(EWAiK04T?2 zo-%!D^cOy)oX7JrA`NI*ui)@({}7MrR}%nnbNTB;X*hwlX!LOQNanZhY%%;p6-cu~ zwBkc1CY5|hsSiD{X3&mc`S7vGO{Q-g`k2c(}*mNT)Pr{(FP(X9nw!rghvjj`c*;syonRA0>?6wvRtULpOma@8Et?<~^q z3X9hIK{69Tg`c9Z;1B^}z8+pmTY;Ycvi7z0P44{oT`cVQ zsIi3-21mYt7eFNkR7hKQLr-$zlU3crA^}Zyc2v3}rLFT*aLT9JI=@g`e3U>npW0pB z+1B~hfwtU17L!ibA1>69cF`(@deUvVy(Hynw|7T*1f_bPim(jH;j*?|o`gL)l{=d3 zjKtgOPX!IUkHp;w&$9J7IAuuZwW<0+mY(+7>d&S-6Yhp z8*nk6?AL;WtH*`oYEw>3<~AnlU6nf=E>}1Y9*&F~Q8*>6)CLNMRpnY*1p}t>2>{%k zA%BNA}6%%6;+Ixff0VF z8VCMCtSTjF07aoDEQJ?!z$~o9*z{JK41!@=nyTOY);#M=s2W^CP*L8eYqja!AQ7;B zicUS$1$i49d4-Iq&bgl7hH?wwKXtCwBkH0NXmA~EIC)UDA^44db|M7$&4N+NBIp_h z_A#3#ieGGKv8VusgzZW#SW_o^K7;%jExw!LYEzAADg5OsP0 zLta_b9X5J}Q{Il=tWf@7Ilz2La^;b@0pxEe!eC**N2&FXb~273@^<#^t;zD5xT@8E zK1G zgXA8*#Y!yUmildwcQcU?&w5%!@<%eFpt#AAVm#~R@d*({qclbo6jv8fP@ET${819I zptw`z78G|-UzWtT>C4i1kG?F6KcX+o;}7afz@+sh;M(N|@)Vh9sQVO*mc(aA@L~tJXJ8ix{;1_ zUTH1~o ziw*Yb3b<78@HD>pzaJ&n6<;dVvnWtbZZYqU*MYxQwsLG?ye6#4zed3b?S?MtPf+Mw zmbz>YWij}s1^1K?0P4bcw6rL0E)18em4p0vi9rrDlCKv{Suk0h8m{;66VR5F4DXkZ zmg+bOdhn3*qbLxCXP9S;*9@lx(z?FiTuQg>Mt9USYBf|)*8BcSD>W-OYwF%!=TV0o zBnH6}As5j4sLQtoS4OL3%Ugj(VE~@C#`on2VFugLaIA_LZ-hDoBwU;@XXtm82`X=h z23g==XO0&1fiL?+{vWz;qt^I&-`3Nww z*0F7$aD02{^qyQgBnZiSXp|o2=Dni^)D)~qYLo$`ct3Kv-(%W7U|B{`Cz1u5hyODB zRat8Nx{T%`f=9!|uE&$y0t_@H-53ZLk|ddR_Whb7`Z=mKDPASpQLq6s1aGdb&r+?= zV7NaDTMJ_FIiA=y7}5ihF%N=h$q3pHYZSMw#S6e2?j#|Ej2|9u_ye}) zs8CJku>VXj3_~kq#LEtg!z0Wk{I!P|cUWfZqZPj>kkH?(esjvSWK3Vh-jb!wduYI& zyTBNkW;?SL>0q`GsS#xMl5LDK=F&Of_{U&j*J8@JBe)a9jXcMVP@*!`(K|cu;L@B) zHW)FFV-n>|BVgf4N3Kx!!wr%u-XPPBw`bk%C=9g)&%WXANZs3OF5_L;C_{HcM!O;0 zGFfdI#*$v%IqeJs<*B~HG|k_DVBGe=ZVBF}=(;V1{ZX`OTHtMSv4UHOL8y^^o_PQY zeR{aCfAU0t)o!^Xs;z=smhl!YL?2{xmmBzuHiA@UtELOVlxvKgkS-mvb7IR)P?Chc zg+XEj2HLBZxUkT}ijbnXG52tfRJ*P5v>68=W3v@h7*w_B_INfdy6$Gvj@hUtT=}A$ z*N}g6hF&0?`gGjdRbbtRrQK%M5_y{l@sieqB{gWng_OP60!q_21~0+OFus0MYI?=!5=M}-{dg!C$yv9!kGLELZyCQ^!t-XTDc*7ytOVumSstgE$DL0YrO*O? zbf(DmPu+($*NXQw(q6JO-lvV-MT}Vs0N7=oI0okmu<}tc)-G)~I#Xf`L!kG~B(N1m z8jONcYdeVDfD0?sKs!tJG3fYy^_(}n4RuN+fh-0RDLk4s2OfVoa z%j;QirOq*<)V-%4C}uuYR{50}S`EY?JP7UWfwGWrgpn7y-cjc)Ic1=!qj}gNWNHBa z0f56DEK%4WR>wRN79TxAUV=#QgW@HKoIFV85l}D#5L)FEo)NDJ8BBwXY@1bv!EABn zBJU56y7!a%xJEc;Q}>=TDdH&Tr>$de#!k4cg<}ry1g9FxWOT0ek#H`Wc_;Eg5#KE; zyK5x?zAq6<$NUGm^jA8TVnJ7@YCjtyYHQ>XrNb{_C#O$8;5~&}=wifLUhO!?s;8cKq-aC)cHN4KeG z%PhDc=0M%O@6T~6Ivb$rGwf$G8CbPAW1|arhWI@s19e^`g6%3^&p#PHygO=tR zkYJ+`{AOkmq8G2L=+#K9hZuivFDK4%j3%xF2XSi1<3klZN31JYyR8>eza;mIp~>?= zu(4?AF6Z8~y4X!HGCZPQN=VlUv##)_W;zcSx|q^c#hniZops99ijopHjKe0|RF=QC z%i&Hal0I6b(`5Us&dF0!ANB|tX;AQ&YlYBy!cgeIEt#g%74Om_GAeOB*LkH#3&l=a z34YUSB?+FRFkUF(L>9fA{wJG5i-887PsCYxsNRpb|2@M?3h9r9U=l0%ZMG%Q8-n*G zCOl{HW2^a^CF<64R}4Vel*-y7J7*rab3CEI%|$}UWS&B_OQ9SpA6)5zzi-N`ZfFd{ zW!(l>WI`jYVKj^Z%CTbk3dSt(KVrvHFs1(k>GQ#UU1(x!V|j_&9k1Orw#BW8 z8xoragYB0vj*~$R=jYjbq3U_Rw5UxKv0KAkp`*ilXuf3?Pc9Dy?NEkkpmnA>l;9VN zC+`b-*=Ox37BJvfvuM{SFV+acrbN|2pQ&2~^OXoyly6Z*nV%2gKZhXYe~b1oC{4Tr zwJCl%xga;J0Y-GtnPuvX<|I+Dy)ZL#RH0AB^1gaz1M3s3c-mN{IbF}V5=)z?m6uD7 z*$~PUJ$7bU6}s#N!daVILN|$fRpxQ)0r7Niu{mXT`o5! zLqrHK&2ZQ-obCywce_f`4(t-!)q@SE4B#v_KjdwWhe@0tJZGDENBO}gk*?uHMr)|Nkh z%sUlxI+CA~KBU3*n3TW@?^W4m-#BW8|q(2dS)q{{EHh4G6fp0)r`lWh~i1@z0ky54*l zO}{t8d$>;CJTR$sJh?M$o$7c%35nnFqy2YspZy+Gp1xP~XXmoFOy+irURXj)Y?VrF z&H_xsQFwxSdiza4c6+C!Y-0})&AcO74DWOq=7Fj`!ZuY4jT^>$eyL2=}N=tI&@-uU~i zQ4K-wM}4Xhywn-5*{6DWjEiS!mreL7uOf`oipm=MA zkqZ;QM6wPVp7~$&6O&Ycl2G0s!Lu z{oGVm^4MEx#ktn0@9Kz~q*;Y-8)OQPkI;cv9o+8KT%XRJuwiHbEH>eXFs7NoFdqlv z!5Rua9xeEp-3b+e$-Eryh-z~=Cs1o-gC!SkQIaJ@p@S4>T!g3v;F%r2i^z7Dd(Y37 zgx>SaR@J2pO(S5cy{7PBCc$_7k)M2q#;pTYXpD?7tbn{R7B2klhos+YNGA=`*^^+3%Ho zc#sX4F=iockbEP9o%eE!CC&) z=O(yc2h@{D_-(P|{Zp77D~d#%X+(85-UJ60nJUp^JX;(X- zm3)v9Y`fH8Fl%W`1Q0M&_7zSU=ldg7v6=>@2nH_*TM+zyjMFanDEt2mYje8UHbTVcJxh z)iJx`&fIpYh*qzJY;(@c|tz+2%@x` z&mYuC{SmiSD+=>5bZb)e@RBf*ssX>a(Cdmn!(Ubhi9;D_L#a>$S>uf>Lr$?%-z=xH zJxtdNCh1vDlA~;xT;T=Tu%IqX|n1>*(0rl zt?;)Py<^19dZTQI0cFWZo>g#I_?85~pslvqpmBkO*>Nqh0bA!}kxsUW477!%%Mt#& z+THXd^R%tT#&%blBfHQgOzz9OjB6mTL+pQwg>?-eW|<7UI#CG0GQf_XaUD1Ryv-+J zL4Ykm&Y>KDb(}SYq3@tysE%}YH#Nr&-w`3YDe?9!HW`4O|{>}4a;e}fh> zCN}-k)gqpsUrh!GVQ=)`@|r5lkLbKwqz%DEI7WWO=k?H-ztnFgY+ZCCl5TBvM~FMY zQN?U37><(_JBk-oo6=&Bu2$pYy{nCj#GO$wZp`|8OsSnO=yS{y`W&~LpP7Tk7q;qh z#cF=i?y#{%=377#WKRjd_eoXWFg&vUAz6&xl5m$N#&NFa4`C7zWM0D~@@~T~5uRMqP{L( zS^$-TpY!jpQfzrc18p2}yyihNnaz21II}hEhZ8_nFz@Olh^OXy=AOz6|Juye>oM%~ zGbJrB#=6LmmoLxse3pC1@>V~{%_x_6<_u365po!sB8c_17S0uGst4;@KSFyE$Ka$# zM-10Vi`FMPy380|B0=;+rWfMa^jQG*AoiMBFZ#K;vf5MYOzK`r-zo_`;ou>R7g#_D z2w7agTWB_~j6)$sD4PGQiX-G(bsT2s$Qe}S0=k2O!5$AuJ#!rDHp|Rm@&8VlUz${-i%%W%d9&(IVYDV%}B82n@Vnrml~k#m~&S%Nao?WCZ)TS0?BkYhCq*Y=0=}XLxs{G~|Cw zEjw!+C}&?-$>-t-o?Tea@n=RjYG=OpUjB(A&L6RB#PHDcieX{jFh5oj>A2tEca*Mz zB=Mjge9kcdy!yQ36HF-U1EY{xAKbzUWHt@u6zvQyh@sA0Ed5G}6CoOl=s<)_ie<@~ zSmY9mAtJ#-l(mMe1z9HaJO_`X+m9CHi5;X25_7$&?22B`Cqw{@q;G|vfnPOtp9?M0KI@PLJcq;<2ncD(h29+DIjWjCxr9{#ILn&uGfa>?2aTy=qI3)e zD%zH8SBnWnTQ4_jYAj8^NS6UJWR+d7BWb%PCirod>y1J^V(kpbSYm-@*(ENz%a9Ps zO#CBC9o-`bOy)3ENd8Tx?7yVVy;U3D8~-m+JAV^G29Hz@2OC&uR`YoIh3Y=mHLzocKRP+W(+$6K?j>~ugqy`Y? zI*je0jjc!2MJEG>Kd9(+${aklZ%{fAUqHjbE}rg*0^wV%Nvs-;??&ScUZJ&b)obWJ zdIMDwRy94q{-dxLA~n28^DDKgz+oEyK_0m)4qYk>;NnB-W4D_blAas|4WUS2SEH3kU5OBd@zs8~rqxfcU}ILWYS^|LahF zus5%xk+9BD{pG^&go5=Rr}E8hIh>V|u^|OwT-lQ$y_@84Af&;UBg3tTP-g9ARPM+sFSyN&BP?%RUBrr4jU7VZ*A)o7j9bEzMU2t`;8^MiJQET)K^hN* z1YYf)5jTlhAJ7?*e9(^?J$c&6-KRvsaNsJw1b0ei-IZ5GJWWKD6EV}|W?*ppC!{Sb zGHoGfZ5}IYt+B$q6yOIfn|b_}NCCDiV?bw;l9w1=XO@Vri(uCJ6Y|s?fFu}l3y(&9 z<_ztmU_B}fZX{CSoP?p)t_};Z`W3hF{p3VvN$WT1!m9?P<&T~a34zi4(Nz&0_(oDS zy1C+PIWMc*6I{2Af0&WuL8l2=jNMZ9%xL)8f+c>byHDJM)ckO{sCjAmaQU({Y*X&P zrC--l8-N&pzq$h$sPUgD7in9MZ`ZvQ|Fhgso~r6L8#Lk8yk$r3G+IC+@hH)V^#5fg zMM^w(5zNxb?&wQk0ap8p2}Y>FZsCs`(zz|}w14cf)7}9RKEchuNE$$wqO?Mepuls& z;FXt@gcZ|_YiG?JF5+>Ssj*01$Oc#eF~YQH3&)F9msZv7!kZ@JLKv4h1hc75#Xa8` zvk6^(#4o5|qy~?4OXvtDj-`%lb z0BUpDv;=vF>W&A~j@G3$c;k0m8fJv;Wm$W#pDfB$hjEVvKa<|6M@V+hEOTiiE)gTM z#Ay}5vRlP)RBz6#bm3F!_*_{HAJ;b9Y{&mDz0p4+#vrb-BtFwMYxxT6!$Z;=-&?{B zx+dfTi`>m!#yaK2o8yK$S8a$NkoJo?1sTCSG6D(ynNStj7#axXyS5gRp^W0eK2^^i+csh4XF6=&oHO=Py0ETgoKFCmasMOuG`Po)>(W|N18%)E zEaVhZE)8=+fIJyDTfg7I$92Zr(eG4&^G+4m8S;hsjxXfF04_gP=Q`4gj&0$A@?S9q z&~7OhgHagR0)@GJFu7s{&O)OX>`(iRDfCJ+VLGxB*Kl^eqF90sW@pHrEPAGMF z58?vJ`+DJyPL~TZA${YB6Q01{fS6DU2)elu6&9LLD1|QCeX8#N-+wZ&xB0|isB>Tp zbq=1P&H(_8Kytq})Hw);ItS`d=U^V{1pI(zN_cb$83LkIT?C(o9FY@}L^5Xx6FEbi z$Qc4fPM{RY`}%-$(UKjC(39@2xc7F#_1 zubRNG=aSvccPD$Fjik!YCMP~o)&0dQFfTJJZ||-)IJfEEZQTu4Cv0Zz)b5&8)!5nn zQ@bO<=iEorxn~kpV<$h{R)0A7Og<3&Gi_1u&jWKWUAlx!O$Y9i>V2xrVL{&39erP_ z_h5O@l~nJcNL&321nHUGmV3_OY!IPmda^SSuWPG68Z>k>@p-1$&!LB_MpNJVgVsX5ia+qF6{pDgVIax|l3Tat-x)3z55(#ZiEn zGs>c{?`kj<{_3}&eM0Uuk78MY93?U)+T0a&5f!iI6%qcq%HRz|H$_0@H4X>|($8vz zb2Y^oHhGP@twAEBi1A=6Dg4^8>fdNVrPif*m~jVqJOAB?he89utx$KW^K?(&QsvcL zqi(k%-q@nmKj$e*9o|XwEn&9Mr^C+qDE%4q&4qMgj_(?OnPH)_YDxpqBE4k}KX}Z} z;Fi#t?g|ORWTIeApbc1%PsKyQt=J!<$VUwWH>|b)Z8TIB8>VCve?$lW&TLEO(iVg0 zSKJ+3tGa9C@j)IVdlh|}3Ckmm_<%h#6d(+hDn>V`pRve090t(Udf_!T)|c~aRFPh= zvE|j4RU)Z)QokSK3%OtK8u_WgqW7^N0Rk=~l`YoaU-Ow*jAz}C)gbMWBmOQw%uuc> zzMJPH!_7bPuX&l0!Dn^(X~sxcUohdH(sio!Q*?cA(3OE_c^SHuKW?I~7bfN%c?u8y z$hYP>4agJq$B%N&CLsJw;FuaGAzBJSw0ND!AYhkHmU;_p*dQXUf`s zMgd)uE^lWnS}gJ=9Q!rHlI7`m9e8LZXu2`EU|pj)=z6E`5BZxyxN`{^cs?m0LztJ85|A!7+zZs^y-RPZAX>IN#1) z8Wx^!&u@SI^R1od+bP4fo6LsK^C;!lL&=UOC#1>;k`rI8>b|?;^0RGb(b+aTINKtf zINPRlM{ma2CSbYA55M+c3qBv5sRJ$*9B^xNz#ZfP2c4p=<8%#Au-QDdrt_$p23)$S z-O-dgWs#NW2`NAnCD;`hg(lu{l4H@x}Mh> z)AdJ_xixJ#>sF=ekK)>dw))_JU)5H>A*I8wHd+7jXBG#W{R`0a@2o*~Wo{l30>YDS zN*ys&+vAlfo^%t)l=-^Rn`ZSF`ZAUWOHlu)cfu>BMt2&UfQS#;_` zXLMZQTsB{5RC3Kqt`zzC4K54w2K29vFMJ;(v){+AxmQ*5FtHRO_Odx1#?IngtYR;# z@;s(_xZTObWM+i8G!Q0o2VKPYk%_#9T}40M6*P2%0yP~#&bu@d{s+*rS~VJ*N7Koj z4UqCpcDR|aEeU33utz%NaF+II48hAd{Sy@L?jv)#FQGHghGO78cSg{J)s71$1^>ox zpmh-qG~!{^xClmpLz)Jjnwx1hS2NHf?~J?iSGnJqpexxiE@CiBEYi^y1x%uJ?ZuEE z60BjN<3`z?K{u;Z+2aiK35NgCxsae~@ChBFrj>Y09rAQ<3r)gi9+@nTn>|84b+bdg z#a^s+iq7^SHp5sT-*2_3TE+suOm*U|!7pXzrfhl_t~1zSmsNbNE=4ECt$SXa6Nfvp zq?J|W&7si6awPLuZL%fd1F?w9eb1_zZGxb5I%up5Iq()k46;R|ODuQJhZ-<8>W#}Jmvr#|=SC=Kr zVSh!{U-IzD;2)LPWl3@lvhRwE#=fVKeNQL*o=ru@823`gxR*G_-Q}vkEHuu&(r{W= zFi;{LY7gS%;NZ35;HSjFvqiXmMf%E*&KLOk=uNNX=gH2Dmkju@(^`70P)+H&Wh zz`(Mb3K)FvvsVDMv;1s2cRCH&>Ytn5lCFQDYV7QRRQ?0}K~ z`#IQp#%2~dxKZjJ)5xwTbH{vNcgzXS!tMsAjRa)R0<=zlpupSKUGx6n%QxzRqvIQt zkf(H4e*=wNF}1t;Kk#L0rIV@`RMo9%%Wb95y&&NI6(q%Pku1Ljo#IWQa$tNT7D3jW z&rWdntl*TY7%cAz zl%BjGu(F0jPD>C~zCmC2Lq5>QoKsxJz^ zy+Hd}iOhwpJjQCBuhNfugn}z0N)<`5CNI1eRpD_+KkqIi%pp>g`b(>&?(avFm>nd! zw9o^enZ<+AAM<)Filf+L7^nHuOfCZdqH+^tUbC0v|ATSz-R z^Ds(}`|hz}C4nMWA(eZIO3&)ooR@p^ zMfy+QE3d)d{@4)v9!|sh&>I#7Imk3;UW z5cU9+=Y2V<^i%IG!4)8*d!LO|u@s{>kJe;}lYU<-ZV$d}XcZShm<|$7eOTJ{PjLKY z^LayXRnq-gV;Vi?V%cc1+YW&%CS#~2kK-;l;SQM-#x4d;uWdDN;Vbk(*uCq_$kMCS zEJgtOXWTPN)}l~r$zq1zVK|Y|xcdpIcKu!*s6v$4j}SEfi4xpnS!lObdC{C+ zyD4u6GovU^NeuR8{EoCnoVyoNxhIn4`vcMBCH&NWKY-Q0bxlAh<2<0<--zC<)?}97+j5T%5fJV z+Rcd`iSwSQMKMT9EkquyG7!wna})qu%p`#9h6{oQ%^r7l;aEIw;5YrQ#`GFcAPuf8 zwwG{N8VlXj?aznmC{z3iU4qFSbLfCPi<^12*~)~Ps{;J(5UTji0h$@NTVSO(Y54(} z@o+x+BYtd6(Z@7;(Sc!#v{xuS!!s+sjEjgy%Q0F<%G*hrA&IR4q}nXzz#EZ1FwB+i zC4McATW|dJ2YBeMp_w^&_9=70S7lLAktep&;t3=l&C#8WI%4~*c!h9&_DJHfG<;=c z23Kl+OMx~!5GJk!EzapK347^!9dwrFS(hoA#lI~KgXpzxSs$4Nfc@QF;yQ+CCChB3 zw>F!OGbJg(Xn;QTDEK>jKcd25dTDVnZ6Iq`YviPQ2uHLMj}a)Hw^F-v;uBon5tmZY zMKI5218T;R{cdE=pe~QP%;{vVLoBjipnb9E4)xb_6$3MYRC!1O21Db6VK;In^XPBQ z+obmUr)?JYxXIn>=0ut4v9^-DLtHv3*rbhlS$Z+Gih^dK74c*q=gc8eYFCNjo zy@2ci2{;%C#{YlL{=c@oI*aSl*IHaZ@jCkY-eU#%<1bgf@;Z3@g5pOF zkm;q8Ko(O1*$dmi1Ju=5x$-`p3Lt2kxT~sr%m~BZFIBOrOsR@YO)E9z{Zd2TFD*vi zUna9dr`RNs_e%|VztoWTrOqo0Ldg62vcwhdS!%T}$1XD?$5^3W!B9FEU7Ab5s6XKf z3ng4dp*EOTyBHI~`adZ5!_wLlf*F4aU#3?kOpwV$OthKi86~W41;@nM8Ep9rRu$8y zWN|XgF+SHSjZmOy1P_@UoV(j7)eI<`YLK}&?In3wUG z4~?MAgoJ8>JFASy`J(DULFcAN=tX4xXPuACJn)i6VLq56N=!1SBY0p`5rg$7v&2Y} z3N4|92V5>pQ7L-RiJ_FWi>t(IG+4XSMbr25j#?e*YB&&1OL5oMDcucsx8*LhV39?RN7YlQo3_qe0H+@`O98d<*{_vRyJA9mqrUOU0eLp7J|7I;k$W}D}_3!bEVx- zk09mow11CI$6Zzq1njcGWu?2P03dA50Rx0<^?hBMUO-0EEeJv4f~w*=RU(fO~ji+JeJrD zicJZc;=TAlUd3I!=z%HSO+SHXacW9;&E2-cpEWKSn-x!*$WB|!NlJPx>Mr}V!3r5G z49eL~!4J2mIxe8Z!a!Tc#%2m1?_qDqL=o3pBk8UE@=n9PZf6yY`td7e#rB`hs~(hu zG?N@#gLb%wtopT~dAb8Zc&DFb89S+LT%W_912>e$hc>evW4zlJi-%DZG? zNC1fSv?Q|N-&vI4=Fm}s5bJm;1x7q@ZJ-3+je$qLsqv)=7lKR#e{!XQo)R)cWzZDu z0e*Yj3m0!8#_qaLu`?OPO1Y_ERF|8N>=Q6WC|fRAnwOQ)nUyS^F&D3sETmjm5f7yt z$E=Pwn?1l=X7YK=>Qb{g23ouq`7xx;W6r-1+mcU8m>Y45j`1vXIMUX!zscFxva~r_ zoA1WIP1h(OY?i4HKG>3iaMSS`LY0Y<=fp>0ffi|jyd|PgCZoV@a5~Vl9%Hjhi1YG8 ziM4*R+IXQ@&U8k7WIPm%vgkchYoM^r=hF)@!sc(g1&f=}1;wbbHgNg)^hRM}`rIm< z6MEzZMRVB%gS!t_ zd{mgdb4bO!B?`i~zf-oKm#sRo{DaIpn_vO-Bi_T_U`aBGcvFaEyv;%wB0DLpAJke2 zu5QH3J7_!FZm|uZ1$x~^?B)+yRoY&^!^J1iUT|8;yZZ$91@%Q0*Jy*A6;C?^K4E-` zN6#aQ-*%bfAeO%iPoOy<7V-p^jGo=%3O;)6L`;E)>{*5Cn^iPcvoJ4I;LKnuw@1?e zk3$xCy}<-EeKVC?M>+IbPIMv^Wuv8v0?Y#G08x3@0)?AVZ$i+bhw79C9b|i2LV6Ok zLmCtY#Y|e&=-)mzti-7(nf1YhAa|J4Lok&AOEuU|5LIlMZ$73_h_5_GZOGqf@WlQO z!(PoWt4uZhVIqt&udfCbTw+mByEo>R$GDO`n!Gw^m+NxWlL0tE0>)qr9D91J=BSd> zhS`5lo*2zMoio(W17!gxb@a*>-R@7?v0X-d#vWE5aPjxChG0~u3|kOm8u>4}QLuJA zF^@aM!%Ttz20rYF%*>_TbV3V`SB0Wx4w?mYhQ01$0j1Tin7Uol)MqFX!m?Iju05LP z=UmzD7RV?Gof4}JabD>KDtEsGCIe^4jV_k?np2o;Q7TZT%LxFnny$PY5wXakJaJ_? zgUzC@$!zf5+);q@j#V#2qYd+0G%u{~XfDx=%wd^%NRjpu)C-x8kpL?Mv@7C=!Mo;D z^xsQuZHBCGbK)}@(M25lk>CEqFzjS$t^PrttmMcvBKa_ z)6p{0(O5nC6RQJ#Z2c1jeeCgnePex$zEi$rDbYI8xeYk3&Qc#+U8Ij4EVX)QZ@)(R z7@((;^&6m)Jz5&pLwm%uvWHD8d+;)?>;X=tu-%}YEi$cawrOS4omMtYUljXKt*lXB zmReHI*k#TmyWHt=D^zo_Q~k#{1n(5Id(hB>Swyx|wU&q2pOZLYz1mj9szY6iP&cF0 zKey5W96l{C&L+|G+E%NAelhrRJYlA0((Yg@Hg^K93RBETE~lhf(XK^VV~50>K&ot) z)`sSv5EV1~N*q3Maywi4a-% zGB;Rf)>8Lo&_wXhsf0zgCOCNlZc!Lcq4x?OSYO-4Z%4_ z&^kkG2CbdR5$**0Yc&BjA-zZ3OgT3|S{>e4G=n_snEn%QF7yH7wD(>*7g~Vr4e1J+ z=X2EgW01~O;3`d+vgmWRM5|0h-4uxUf7_OOL70J4x|>-vIDQ}RNzjVW$6h6f?&3x7 z%hQ+zN3(*KJO(r|j*3Y3XHy-knxO!sdXH4Fx{Tr;qNUVCE3E^)$SMhy&Q^oSqn;GT zJhHybi;!v?u0pJUkkvB1VNvetbK$Y4NP}r=M|G``_m*I65)G-e7Os~Zw-H86m2)yE zzJz2_iHlqKQs%a121|G``2oB zz>9+UZ~ADU4}a8@+8s{A+}_r4Gy$o~YK>8uJ=)fBzJ{s1=*3tGPl32!GZva8&_rBe zsV!iwIAyrsVfDh<)7EjgiKJ0S6{AX(r-FZWCCm4NDfgF{_DC)e=W750>@|}#U_^LqWO)K%USLOP zJ%+;IH^edG>g}3%)tT`TL?vV=D!3Tdb^*nqIu;t3z!`wO1E*}N+wOV?(NbdFgio{<*rG=jAPNmg8t+v;--C&)ZlGhIowJOLA`VqrQJ zczX@qHndAw?kYs&xXdvbRpvtmr1^A2Z_A4-N?Ak7;e;e4sJ85rkdg*1EMZ5g+HxDFcGnObcW$Jud_8GsDHgT*U0mArNL%-7T0WH7XZQWR&vZ?N9<{gtm|Je82Iv#5%@>(V%35nBU^ss+DXB(Bf z_AH-b!S|PRZ06Z+BPsb^>}UKz-^VFKJ{$rL3=Sc&+FX1gImh=nL_72O_Ir!%FrZx*{(# zmOl;uWJa;Pzv6kl=4-|N*QLs3UV?_bx2^m*C!A+kB|&jdOZC7Uq-jc+!f3i+0g?%s zioNPSMGbL1Vza1?cAn{CtawT<>3TT@g2UjF9e<{XnO1M)yZQ4@;K{+k-TArkjU6qA^oSAvS z`~jIQEwU>I546HRWih?tMW;#f;NID11@g5zZ>5~GtbKjZ0XzxGG_y+aPm&AeNu5De zIAQw>j_-XIn>)i$DJDA`4tq14dt zh@qsBY6)shl@n1ia?!=QeeaLz`)=A4E`m!5V*QD{kd@2@8qm?zjA{F%y;TYj{yA3g zFBJQl35z%@K9{4ID-Y>rS?;~%4pb>T1OXKvi|lg?f_nc`4-YwXS3_J`<{%m(|Hj_lY;JQGqH|h3 zH@ErILsr73bsOJOn|EuWc)5)Q;Dn&xJb3iR0|xH8EN->3GArXtUuWv;6eAGM{JVlN zIm-bz(yjK^eH>qu)ZjsXBGIg9fi1vI`>V7fy(gG_h${Vj-4pDsgc?wLRv~`jQdmSo ztofV8OHsUwp!2?FDJH85)^dj+u}oiXu_1)Zavi(f91?P)hKl?Cwm=9-YT3?}`LT8E zNw;5iNVknO+!roK-sttT^-+CWn>JYh-Gxa{P}vz-=Ay9WIYW{<$SBL`SU1a&?{oHk zlr9%`WBSICpV~2usn{^*lp^(dpj7r9mbAD(al)){2b~q}l(WKFOtP~P)j6wCowFm= zIm=SrLaVwg;}cq$ZPvF%mbtLltZ)yQ74AW^!aZzOxJS$i_o%FJEEG~4qnYlm`1g$k zdtBR3UYpO5?o8GuJEwVfB16sWakXWkJr1C~soef#?^6}XQ0rVu#BAE*w!M?t45w&| zn?2Z8zXQ(#q&nF-_h7nn`arsK=C*X_?EZA;+@7kjvmdS+I~OTxlaZpf$f7hC&(!Aw z8B1A9>hs|V`h28LpO20TK8gELCPP|DnO3B(tYGM4SvSmOA^+j4u$6dIAZP+!v)*uL zzYs~7jB_V*%kGZKdEswX1Q$b>p)ww^<7Ta-U<8HH5`$1g_`$PuPqMhcS&BB$3=f&# zXqPilt(IHM^b#1;lrEb!@SNB(PP#=&qBV%oI6GdXfB>D#aq^?)xIWC6B&?8`Umcfm z(8^UqYLnx54x!9iWnvRLDB`GZWui2Lke|vsolcR5Gvs7_GGXqDG{qwL#Qf$sy`(XM zNcSsZ&_EKOQ+%GRkuihhewiJpv0Nqt6P`zI_JTRgHfprf@`BFszFK2|T3cP>moHrL zCz&1y#3$+-QRn}xRD__V{Kg5zwx6(LwmNx|=(pn3rrEABZ zQfXU(cUHTw-d^`t#zt~$)Pi$m<`^a4wHfRB^UnD>-5TF?dw2D);0XCi@buK~hMyoj z7tugrrxF&&GRGc}0^-KMCWM?S3LAFw*vALw*@K&l`W1;6;ZAKS>=|n~ykWj;xNt`} z^(r&;NYSe|7oK+mpKHa;VK&70tz0$@T#SB(-PkL2Dg+()2pjmOrleOz=6zO|Gt}xe zR1#?iT2IB(lQMq6a)f%7jAHgk6&E~5$M{jhJ{f>G&;q9?tUQc4U2EDP_f8+99xxzN z$Qd~GyxC}&XE4~-@l-Qa%GoqFMEQbhXV*2!*V0u`vCXH=>Zn2Kgb_3?L}XziB!r5Q z{=dn&xG8T*l3sAuCS)OJ=ry8h{gKzcBup zp8AdAO0jmTwBc6_{AQTcmC2#9HhL4UW&15FLP&&kZ2J3TNooWondnpi(v zv!QXNu4wa@|A&9$7;ad`pE5J z(7A$gfA$EcYCDUrvQrj4c2%L# z8DPqLH8wEX3UK(e(zoKzpn-06Xu$|raF+dcnSg*Yr{yL=G=_rno5U{}Z8imR9vgzTIX-=QMpBf}s|i|~^|Y+Gd& zh>nGJM;A=Ij{9q=V|5w2e2&nsV2oY|4F0*q(3v0EZtmr2$EboeE}vtf!@u&sz|-Q{ zB3OCyfFCR3!FxjShxs#f%Xx@IvF3CEkxn~!2=c;Fy#n`dXd)vzrR3bNM^SvkzI zeEQAgWLMeV?G^kK18;)!at1dfo}1Ak&!XzopG$QdYghDKUV&`a(Yim@Su8WHiZ4vW z+mp_jz##vOc5yqryMrbJZR18|Ilt#jP@BPs7MjFqN|(Ik)KeXTO( zB}}-OW*hjmJ9qs1e>JQm+`HJgG6L;3u=Ty%$Kn3XV`CbU->K!6ig#?exGa&{PjkUm z6zy%9vl~KZ`?qp%M`2I$|Za^USlQ#_*PWNl{`QfQoFM6wESJsF9ba9i&N!(>JA4jz^Bg9@ zSczNt!enE=x?q5x0!#C)j5&KwmUQR6o5!s>mz&s*yI{KJvVDSqJBMBNabx`1^KMsi zBbp~^AGfx4*L#lwa|&;MZ2M^l@$f!aYGH zKOPU6>Bw>aBCcqVqFCJ#Bkf*_$m8CmRs^|u{+9(T8>R+jPnl3g7pjAd-9R&eB|$Mi zb@MNkpW6FN6EEl*K(pAJ>e!#)vLiLy zi`?LNTurOQ7}?t02ZU_frPe+ky#}$%^-e&LXyANQ{z9j&46x58lAq(w#2@nL?$3}J z-^%P_*T!#peGY(4?j=suKpWZpe>&LWI ziZwses`ma&Zi*_Y>KhDNOr>aO99Fd9N!sraFPQDJ<}-8R6F`amw#|f{wo-pFY;Q(< zGE8TqtZD?OAwz2{7|GAYNCJX*F z|9n_cuy@Q(w;op!$FI0bo%SoXKja$o6vZ?0EkD;j)q(2iph%a)tT5uqpADmNoC;gG ziw^OsDREMDjhqR;aeyodtbt1Ug}De}0?Q9TCpr@Uv+fR7m}@VJLu zoc`!{JmduWfHsHm`exD`6x1;nA2j^K6?rS^G!NmCYx4?jCJ=R)ks44%GG}THU7`7c zJGVM%P9eBzF&=ztn6BJJpBbwHR$s@0KpzJzE~J{oRh+9t1Es|K6(nG_X zWIOr-NUf+SfM4;K<%MF6u3@YCBihy42^Z$#kN%$zk;@`mcFbSv*M7cZri0q7xK+1Mz8G<2se!lS zK(HHe25L0QDRZf;^7i^8o)G0_0ppZ;feQwM+sLC2+Bm_&yO;9iLPiaCWKs;-AG3*f zWjDYf3ZbVUeNr~{NB)2}AZ4Csyg%-*9)znfl9DiL{M(DhU9jokap0b^4dV4cY2fD*fS{}7J+lb<+_ zJZa%iw4h|q-}p&^Bg2e5<}ZGtL-G<`_FazGZgNZ+p6OV6bBS3|(oFD*MHce%{bI%u zv+BGHZDBk=abso(l4h1R3bNp^fOlqx6~tXl0m+Y1@8{R}hzW<%vP2f#OsK6(zNDTP2@iFHqMH^3&pWZ-@jltBDo7SV+qdA4i zn)4qKvViewpWyVnrgT^D*P?F{$ItEyd1V1<;}+(eLDt>LCGq$Q*0Kd}thLB9I#Ld> zU)bDO%j}78MxNDsSSRLrr?2c1I?E=l*zsaM%`zD5G8ShnGm+{DP5}3Fc^BQy$px!x z(>IR3{Ta_+9h_LVZE`;Fkt~H2-LP`(HWLqe~ zqA~+qC^Nu?A)fw~thtW3^9f}JxKL(*3uOklP-cJ&We#w`rS=?jsXg0VYEO?#?Rmtd z_B`lPdlp;h#{(SIPGK#SD%fClse%zurMT*y%;zb?KVOOB-`gUTtAcNTUCF4R;M<>j zl-7`ZV1-5fgRMBAT6HB)>BFU41Aych&O-Ws6i((}vZy--8w5>$wA#tx6l~<=%F>d5 zm?kQ;eUR7=t*Yr0h`2Sa2Bq+$||19zQf-kpJx&ULE+mE~KAhsTD6%-=l#(oXgR-nG(7n8w0VUaJz45514pNUic^PLFB^@-60I98xRE zrR4wlD3|fDijm87P|Imo%PDYq8>*1y%Ol3p-Tk5Std@5z49hUFO7CMz;Wrr}dn$}S zH?O$z{EG?(h0R4=DvE-BXBxzLb=;g(!hpy~1!Uy4E32lU2|_|{u-KODnlNW73|two zxRw@rV>1IT;BR%pz|Qum1d=++gsFWluKS}k642;JyJeJ#Kf&Eyrr7W@?MaG?4S4t{ z`3V#WsB#_|z!G_X?WsVa;_KVpvs|9rYQmJR83exXr&v*~S9>2F6(&1Pw{Y!0uPLNF z^@YFA5V+vRLOPcB7uDgf^HdsVqdeV$BPxVWXalf-&K9?>duqM2it^rWQ5eS@bCTXx;}%E10pFug^~{*(Z3Ja`ZxIqKXT_Vqre<5N;B7Uk zzI7CDvy?Kk3cw9j8Vp|X9~B53NOrpFW&Y|ATcWfGE3Q{rjp`BNH-c5;!(i)p+5r3g zekP$wg%L9gM8(CBhQeme2~M|Rg7LOIt~4W5LDs@g9Dg7$$A&LtO*EP6SUtlbeYChl zHN1W%mw_m!{U*Iz^o-bKOkr|jr431YX2*d|0I)*5G+h%>vH4iwcvEG zsl-6}h@^Ldd&Vm@kEctvVJW*?nGymxhtMr*Gt3y_+aeAJ!*V9VDdRm{|8>D6BrJpL zG{!!?)Gey!zN*dv&TOy%4QAalXvC|YpEr~uM$CM)+TmNUh5H_~a4oirL0=3yHLo!Hl#0y(yqlwc)MAJce1lFW4V&XBEe_4J@NkzT&;_kvrq}i= z0z+`u%0dEDpPq|aGl$V;h%YA_5>qgkVYW;rv|x4`sC>eIa{vSH8 zGlHjUEQ;w6o}OH)$*HzBTBHwVl{&%rnLGmrl3Fz1r%|B@?ez&H;}5iq|ggSgqrx5?i{yp-V@{fY+>qxUA*YSi}^3+EP%Nvw%qWc#+uS_~#b8+EjLRYQ)0X9x78_i}wMo15FY|z3WgyjEF81AD zO6e@r=>28(x4+QcLc8H1%V^K63Df!#FjK%v-qvw!rbFZD(P`0V$+}0Tb~o>5`q$a1 z-SMA*Peu>A(`^G6tXrHL>}aG=E^jhVdY&vOVkw{ow9 zwdA|lZKzg*ZgvGo;Lz2xr}@Y^EuJ2E(A}z@SgVJ?0f$Cn)CjmLvn^zE>xnZYwtq3$ z3^)SAa;;#i0axBXcgP7ufzo*3mQ=@%j0+;(7!rpWL2VlwW#Bw1%gg8GMc<_R!nvz) zVU4bulEmn0?fy|NjclDe#$s9F-fWd6Fim6LJVpqMZ6M_y%q3dxie$(bCw0PNK!?jG zDmjF^hLQxAV=cGT18#238GpL1WAy|~KIfQtY&9WO&eq;ge8~)$aD(NZGvp-db@x^) z)X?gfWVc%}6IY38jmYNP$t?rwSJdD&Ihx1*0#ZVsMhXjXdo`u zaTud=Z*r3|SNY(H_`Ft;@x1svq0Rcr;yM?+Zcg5!4ECT^_lh-z_To3Wp34Kilbtt5 z`!e@s34aaRYXaM{$e1%|GGnQnEo>0s7FB9c5_2ou4~4)8MpjrfN0+;#y32^}&+fN6 zgUe|KVH^aEH}lPsb`BPu*@~j3efYRGzc*%H=PZ9Dmv>Stz^4 z0dV{^b2VwhyG>PQ3Lyu;H?@e|EVX`Rgy)B9p{w*mD{a(>2siv_lkU*k!XjmldgN_U z3lrR#H#ez&Cf%_s&FwJHz(nT6=Q4u(R>V&+CHiJJp>p4zY~c@@Elc*#B*qtPjhsn>PHZj3oBF1;$(w?J~xT z@B}2@%zn$kB}#urr7;nJy+)cix4c}*EUB82l+C?M2Vg#>tnq{ztRvBX&jcCZAj{7kW>Mr}_}T}KwqAk}E0 zGxxU0l5gST&SzuM-xgfL&^ngf*si-FQJhjGo(&;j8jQIO^swDfL_53a6IiK^^@mFo zoKeYKCjb`rB}(^g+5uQ;0+Dk&1@%+o3=*$DZpSaS6R(^I1! zk%U~W8bu<;;tgSUT2$#H+mGu_H)vul#gmikt>Ao4?QUR|btMn~_5J2}Gxxh@%j%aC z@Je7i77Y)8PYBsovSoEKJfBOL-Dr9qb|T%hKnfm5U0h<;t9gfeenAI*pJ}>s4$yrY zhXHfll?~%D%K6?}aL>v&gxp6_LN1{0e{c$Nz=Bb1%ans8>pfU&=qstCiN>70nC4hX7DA z`n~G;X+FpPD5P{!t$x^GMTleeXemD}P=`*JCkygv#j$VNII1P4=XNc=&yvTjD_UXZ;?0roJbMr4V8zGgTTp1iM8b8&b;dU+mIv{ZMjoHgX05p6o5jSm zQ^d51z-Bv*=NzL4nCd#>U+%N9{sSM)(va9AxeV{kYRd$)I>8d>@t#?F&xqOg z5quTU3s%^);uH7DKkVwVfQTpECsFe;QgEx>;d_akWvD(xcI7*aCMOJ`Nfs}93!yPJ z?^?p*9nE_Gj`pUN7SUcAX)oND=q$}>p<<$%P?z`)Noh@2+KIGD?K*FDnX3r}JoN0r zqCO(4mI32CM6N@m)dO_>xjgTr9&w%s;yvANXR7#z?FY!_^R*?7!cJABU)MW&zg{SSVP*K|6{wigeLw`dL6Ojz zf|b${>HTVJ{NH>%B+|durE#D6dJ&Pbm$mbXh?HY_v#w~uGu&0CIiHn*Y-EjfwpN`* zjk{J?kw5x%qtKVNuG#Zp5H%}i_Ba=~XmiBC*H{-gjPXF+bZ`kuJ6`oWF0()8SNzOu z4}&!8WZLqw@j9bb)aTtqYOHfdsD)i@A3~kL+KIrA68)azip@payu}JnQd7Oaqi2x_ z)zoW8s3ne2gXdZ9zlchMhi)Qas^LwdPmdsItWfzZ8)lRMEc=dPVfF3Dn`WZ1*P+~4 zeGPif+wMEm&2X?zGE@nJh&;f5JH2IQkvm zS3JlAE*@ky0~8k0azU~XjWx^6wV-xXdsT_*s+mH78k_4u_Ro~~D43wW(SY6bo^U_K+sdb*b9R;F^;T;AlUqG-M7P4t?> zbnt-|DbxgbrQ7-aEM82+&fR7JVeMiXhjy9E;*5A9V+Z%kf7@Gxdg()SRozF~B|ez9 zWX!zqoW1z<3WP%3gF1zCLW% zPZr{xp8IxD{nw9Qj+b)Z@rR3cVq0!IcK5*0-A#8}_xH*bwDgGWW?~YvvR*XY%}{bu z-Oa;X8JF9-qko6rTs47J! z`A;MHPbc}$cChFU6`hDlB|79D5wU}MhvFms&B6k`kNfCr>sPjQPN_|G-YLNH*%6_8 zKNulV|1B$4288@@M9#KG1~zW1>b~X^O5zbe()F_`N7!ogJMR|i}m z0Bt~$zhhhHr?$0qcJ#M(exV1|Egwd8OVqNw6}2pLKuHQde=t*@KgsCxpOgChUla8C z+d6&zfhb9Vh_R?#fr;}Y=$U%>8Q}7JUuJ^yN2&=@je3?*;T(IPt4yfaiuVEg{6+-e zFvxbWkVW8)_qAGx(q@M_%?hv2v;dtt_=5fZ49nA6CACvZ;Yb(`@evnV_N20EQQ{uF zqm}k#l}$aFw{jc^k7`xDhjXkD7<7Fqv%OVPhgS5ye32nLyOBYZ1(aH0kk4aC8}a8% zS+{y_^w-=)jDubIL=l9@S?NEmDm>A{&O-57MXE3PFbE%W|!8rMG{{-c^6H>%gmA0 z?^@*Qq2UCU*F~|!gOl@tI+@*E!^cHN0yU2MR5VJ+~MZ zdeDw)H7*vfhMJnirklzCYSg%nYUYo{lu}~R*R=M!3QJ@rpRM6oGq|WhDPSb{iCcRX zgJ)v1;^~AeQQ2AXwEFV2k@~E7MAv8NPQX_9pBtq=YTX^UW=%D;nj1|O5P~bybytIf z5QwQViLTDcCzQy))TYLgt7`S^9PYq=7qtxIS2d@o)=IU2H`5`jpi!2nae(OxUrF|E_Fj4yRRI&bIdqCmesi?BJ)Yqeou zZs?qHAw9v^6d*X=HMh)~QxNm)BAOZE6imR1&wjO1@QsDl6cR+$$uO7U8*%0`xSGqJ zrFtX6rquugyR^ntU>pW5U8p=9#+>#D`6eW32kzr))31RIEBsZ5c5r%Ulxg*BQB+2F z8t?3%|wv{gI-4pZw6?rK#?T_WD-V42#doR zSBP;~So^a0EWJXfM_r4H6Nfd+^|9CZ_+~y(?fOJ?)WTh>EKqwHEnML&*t~YpT4N0r zqFH*v`z~r;`mHbSLhxX`G-NMbVE}g6<(a&vuC#~+&B_;+1Qd=N<`f@CHA8M-JjpiR zHB)^wFRHJj!sL;JkYOa>R2H?cu*i>8NT$#@cUpJl>=B^{e0WnyIO%#v*tJ=dXc*Tr z$U`_@G*DTborsfF^2RcY`x(YL>$g!c3Zf@R{wKJd^)Xex;lz2jVfwsJ0x7? zWcYKKP#iYV&c`S4@$C{1ihr)nJ1j38J1#;AXGDlyX}G>sz_M|Vc@6_RbIMIjpKS?B zvh&=~1%By;edY3ac3)S#zi1G>MYRWNi!uT9#s>NT4Q}{gkpPv|HeRkix?*r!!*K-5 zo-E%Gb}^Mh9R8J1Vjh+|@4ZDS0@mMlYr{I5>34&C*uCXJD->k-URvt{+UEmBKYN9r zom>&zF}LWBWbqv<+#P4bJ6v*6#_gypdBcoCv7)JwqF+A}5tWsNKUWpMV6l6_U@(_%7O2Wxb* zO72v7ajz(v`*oLPaV2w$mWk+hm7=yeJW$lfs{J{zrA zV2ppDxEYrj!+-jDz{@A-)p$W)0+BaN(?E&^>jhamdnL)y24jB27mG`&7DYW?o>;Nd zW|y(4B?|Eh4%ReU33Dr|h9*;}=1-g}tW;+zpOy#!7%~KGk$9{g$_o6XaRyIT^GQ_# zofT$QgsBt*;)0sfnd(`()Rq-O;tz|(Z%+c+4#UCh+v^*rZ8F;8I_$CnTCMW@!h)pf# zIe&@@r$D7pkOFqbF;`EQsg0%3+F6EpA+u@?hK#zO#3=b@)=BE24dQ9_3;SXK9(b!+ zbRaLabtzpw=pJ_AX6KjZWn(=a|cEFOYJ$Y z*>g7AQo-uZQGT0JP~7&-C|?749Qjrk>rESi;q3;S4yV2Yd(4u{JXjWzi&x|E2wol5 zai(Qsi_7XkIgGuqO(J8JF#j;;0!`~##nN2J3)gG6mRst9LzM5+{NqBiP3f5YCuF&W zfx#R1{3i@=LRM==2>MDIA-BWUb3KEzWxM%Q{LKzu{6H|oQ|_=0_QXoD7Dn0%{vCh4 zf^l0mRzG=yB_@EKv|0fFlMWR*R2K}EAY?7kqJ6_#1RvWwJ8!YNG0W(0RRVv|pNPdM z_n-&c%G_4b!tUc%f$_!2Ji;AMsM_nSEJmiGi7I!7D6WaIfMb zj%eE)L&ILV6s}{oJywC?o9#ZkpWeZQ>VkMp?3|gZ_-2IIt}{?)NC&J_=EF5dCBupr z5o~j{whXtE_AvL2iZ`?h#UAB$L~%Z^C1 zXs=-|t{^jNRSHDrRpyz40kax6^!@lM$2vwOG>~ZARKbLV@a&;r`K*@f{@ z0tJ^F2qv5;;9ZtAmxoEf$EA4FXezSS?(hwO+ zSP2Dco5%+>$kEkV3k5zZIxIRwwO2jv9_`_Fw_V%a2KEa3b}-zxFSzJt1plrk6twMJ zGOCS*0~Pt=5szOhVe`S3kW{HDn&IAqiy_=kW%ygbKW17*&)_l(HQ-Hd5S4Ba2TKZr zI8b7P&=($%UA)6~oj2*bnPH3xQCOGkJC#;(f1%CbYQreoNK=rm?O;})Gtg9;$9ppg zV1}*X^W4@+@zV{05p6e<@Bx?O&tw}s#aLuU!cfW46mKxgWtYPzD?ndv0;88R438^c zz+?NSJ}YaYPl~wUQ+E~N+{a>xkUnDX8$%r$B}kyRT=XFVI7FrcOEH##>q!D?_q6xM5~4U6*t4Ba@+ z3|2=Y?oQKN@`i}3B5zie1BeXKs=RV9&q+89JsA*hjrFdG&vx8pc7eM9!h-`k4Q>)L znkB|lLiNviInwcD$XXJBnm?Jk_p}p+d-8_X3s<%my$WRcW=Dn7i;lykrA36ev@|3{ zf2rN}Lh9bV1IAw3I`(pmZ(=gRA+ee&KQt;3r)n8B^}H+2zmfa_(e9CJ=$+teofV?y z8sWeSgbR6oVl;LeTLO>4yu6iOx;|Od_B`SqS};#z*|EVv(`s&SXeYt(IInyQ*L|BCd!r7q7uH zWIXU3R_ckW;^Qr5 zPN=g(dYzLi8$3B&mb={CB{bp&6K>A0g+*_7hI2DNyM%e;XWQIy437srKDbWtp13i1 z-VD$h$}Ag!g-Mc`*thKZU@-8jWKNkvkYWEPl#^#L%j|F{3RQxQPA7Dh_NWtP&}>mEPuR&UU?GsrIm3lXLE zV|hjLF5#-0Hkofx6rJkSTC#9o5gc-!Q1$@O59R>pKFRBNLCDC;n5Es}Ep?f+nbm@q z@n#qhBz2p;s+JPd2B1RWeDE-Y%%Q1>D1eLzvSQY0E4k#ho^#U>mSn`3sS47zy&d#! z0^8mqCyq=1G5|QQ={uGQmpPnJIwRu-sXfpaok0SMUoh55X@I&}KsELc*_?Hm80(Rd zXN@%J#nScgh{&#`zA#6po&^V>se2H~?teh;UIN>xU_9wac?B`Fj-#W~@e)3BC1nTc zUUP`+u+)~`BW$6!jJ`B;K!K-RBnAt2l;41pDh?v@Y3(@92OeP#ac`o)ogj_8$R?** zo%hU3w8@oQL_tC@+e>M(H9RP^T~n&JpptZH-Z?y%i^cSnl!P(#8&xhMcmd6)>K>8} z{J6CfG!gZrk)ec=;7GjcZ&JEwMH~u^Kb)Fs%l!2jN%XX$Q}DCWvF7D1-(;C9+H{%& zpId7DA?TcDjY#}28uy%5G-)+9bLwRFc<_X_KeR>Ss}dz_7jyn(zP^AqGR7znc$i(y z**GhbZ72=rtyQ(PYf8f`$Oq-sk9fhl%*eYZ6+sbmKL<3?M39-H*+V}K)3Zs93+KaN zTs;?tp<(n(!dMfolp4;e%6Vpq{jItLq_m~HWYwhh8xY15j&roIz0hB=Ng*sT*YofN z1aus8&y-=3kQi^`&Yq!lw?SJ)u`q&drJ%1eU2{U`U~mFA<+UNQstwkl-xLVNS~hea zC~1$p>G7g7yv30^tQ(;S9t*t^OI%=wt9#&~enyMS_n2m2luOM2<*k&vn&J7#Vp++Q z*mx(QZvF|@)nMbW?!5McN_3jQz1(?EI5}IwiEq32+!FP|;VM1JMRhg6*9jP`t)sUI zvvy0cA#O5t&2I)0{x(Dg@@@yhL?-i4zO~rIpqCdsNlM;eHQ}Jirkl_lQl+xbA+~u@ z#9G0YdNpy`~u zHkRG5gCIamstHOF+M!^lBH>TbS-}9*4S%V9F|*fVV->U`=ru^Ye;Fc2k>X-@>YWPK zaTZAKK0IVaiZ*}(3$_Lk?s^5W1e7;l+Zzdyz0yO%M#3b2J6$~arl)o{e2MY}>sFp2 zS_S*K*=3(7%prTkd=_h3*Q1j5Eua8w<-?5H zx}9NNpJA-TSx1U(_nt7v^C1{m=9de!t@;Kw*x+!WnjP$uRZYwic-e5wSc>LEgRuk{ zFA1>=xo{&IJ*y?mIQ&kaahDo6Tmzx+ZU|we;N}Vaf38H>vM^sh%$ygxMLOOb3}Csj zfB}aUO8}5?1glAB)57?RE(REpG^dprIcCb7MdL(TmIIVaCa5Wj2OLftN-Zvu)$LR3 zM4-AM;TpaehW5L7oC4TQ@H!g7?meMM#H>)c&~m0MoDKHe9T_v(XK|6~&a*btxl*Q= z6||ECb8;_WmT6@{65y*~N5Si$WKgoL!@FkUsiA$BUb&>m`MV@kCKs35C@dH!b1Imk zS5qx`O;M`4+MbQ18f-E#zXGNySS-Za-pci+IS^mLVCNVH_s`@R$jiAnGZjTA7QS zx1>cf_NT#t3;tvS_cOP&H~RA}@;#oEN+=Zl5qG!HY)-t#pbH6gWu!hc{RO!F>(qI} zMg>P4#YdSQvXL?C7ELP%)fQrFx?nEW&fp!N0cF^15}b$SJY*iH;8TaWmOik} zJ=-iZ4;>%O1(lnKYF0MV> zn@~DPcB|>8o?(SzK#RnFpM(R*K@q9qo$3-Y!rj1ah*b!+q|Bhp0cj!s+9Lexxc^LvSC|T3Z#i5?p8oTF#`; zesCDYN<_GrX|s^$+~i8aM;dU?qq>KPLD2>?_-?Wla%LnNP`DIQ=;xVU`%Ipd?$8)V zv?qKkS7W}5=%w(Xh z6I9WX%A7A@+@DWku|5VnWmSG|{O!Rtu7S-U*SuLh5*>s+VrXYD+3_2~#P_sd8ys~u z7Z}`2&0=sznunDXvhvM4(B(K*_EZt6W*54A=0lE4i>Bm0%UU)EsCd8;lHwvxF?-yw zk1_+6&i@5_w0FIymf_L5@hCVklYsn6^=wrWvK^7Msy|FtrRfz6tJ4G_#$ z5=wT7pyCa(Ede@m@m_55X*Y7LTZjX&ZKB@ZH_`9_{KJsh2p1o+00bjKHKRxj>On|hh2v+1IySo?%pqMn$G};mk>^zhGLMrJu z`m(}fwVbN~F2&Fcd)9=oNhtyF6JC72Xz$yG2-?71i_6@eHdHM|lZ40s%WP+6c9Obn z%ep7gf3_?%FXi5wK5xScM=($rK|muTlQ*kCEJ3?QyzgcuWfJ+TqV8rM=TDO1%r}nu z3PWt?qV>lq**g@1r;4WlvdC;lr#BdxTCW6Nf$B&u5r~O(hYBcV7R1!Wm>lk%NA zi;sU!hkkF1X=Ro6qt4_d)a(oqtQqVknLg-3)=_>$eK7%AVNk5H+e1@=oi`^!r!p5J zJax_Bzs!Zt5*8AY%;>+jmEB5R4<>PUw2lAv%@AhJJK&vcBHrxuR;%I7x_=uDSk3RT zL-(xE|NW64yxFQ9-NcsGSJ_(DTz_LQL*6EkU5i{dsjyOG%i_Q2{zlv0cNhq)tfvBOYEaT`b{mxES; zV1*L!A*Aif!=GJ~&Y4#qpw`eOPT4+3DW*x??+5-#L$i$iU=ex|Rd=iD#2oXW-C5&I zakN5#Etap{>!5$O5_GFoXm#1=jYe1n87yGz`-hdd(S10eiVuZ6axPwbJ(2KUEO9VK z^W8GezlMa(`$4lpHVin_^orqt2n>RDZ?F7a2H<@6}!kXzxT9u zzsE{=nJ&jNym_oul$l3tD`sX6Fg;D8IxK=r-a@LON4FsB8LE1@tEn)7C$FUdjWL>zCsl&HCf@J#)~|h<eox}A#|l1P5<;sL(Sx})p#Kw* zAr^U3C9jq$5)IlpPQ!_^w{UNvKb7TS_yn_9>rLSh5RnQUw}kG^TMd&BPck$UBsWpJ zUUsL8L1$kIS(iF3iXMU=bmDU9=H)6YoH#L01ka@wLYR4(1pTO!>k(9`W-aN7uAMoL zb5c)g;M@=^+-b=8@8JAxn8>tTXnq8aQAGzq%0%>rMKNJ{P(?hJ|6Q z_Z$HoS}HV{q$0Dj%UqQQclUBfY2rx3j|kc8;!2&${5)KvJD6NmW70 zhR*3?+p{?koiWmp5Gl*1?M5V-9uY;eO} zRtS8`AQhKHPwLu1Z#0B5D+jdHgUTa(6^x6QcbI zqTgMYi!#_9MV&T#V^Me2O~(wpN$+mtJRU})3|!srQ%Ury(P{^kzEq{D8~G+8;tV*{sz+3ZZZ#rU~dPX zFnr%H>*vv5)&1Fn7Lo%UpfPWu?kbC!MQ!ziT553!by-D^#!OO6kf_2=xJiGxel$dt8~g$XEqi5zHl0H(`*QrQKMxw-2z zdsqfte`HUBVHlg?A%8$TL;U{;&z^>1C6}WjW|p`pZm0+l6Mkj}ZH!yq0zgtV{IdgF(yh2Sd^G#UrccFd7>CM0co zv=4=(UE`i18?pjpUYAjN(22NAS*M*j?v!X2;^z^v0^BKic~@RJRfjDAl?bDu2JwVp za2(~G!8SV~4O@rWphY4m3Jy35tQ$xEZ~J|~(Q-yL_@(b`b2`E%?pqS{vkXLW%t`im@)u?g^&zbjzF^XO>z#AlA3v<#(K`9U`RjDnU&WRV;Fx!me7*n@ zXea;WN2E3lX)>1X)@f`of&%qKAY}G2DcQ6ZTz=LQa18$M$ah@j+e~=gSH+aZ)<-Z< z9rs&heKu9aaFyPOM*x!q3?i9x;d!y@Sim3fnz=gmcN(DhxO?k{m0UhPOM$YiC^mcx z>$$%%#wf`A-xPQkWoYzj$*(5Z9borYlnO0OF?rrHlam9Y9pzpG72iQN)r`#>7Dx7F z!%$Q8z<@Ybs^M6Z7b^FBVZza~R02Y0(X3SJ$Q#8J_?yu=i96wf%DnOI@39F9_}EPH zF_)t^PY~fNDT>;8zAGVF^l<~|J7VqnCyYTXF{L4+;PwQwFIVX}^u~X?j@xieXbM>2 zNW)c)k^w+^Kt>T`mJ)iPh>d`042flnvGXt&x+kSHpf&&p)yNT_6D#v4z3`r4B}3SO z73c6P2Hqp80z(k(zo$U^qkoS-3P8Yr(9IP;<)_83%^-`M?)ZU;`&F5+bXzt)+ahF& zoN?3KO;SS`nUdz(95gw9n~7B|%BdZH-Fu2jyyAxU4C8K_Anjnp+xd5w3z8gp;m_Dd z;yFz!Q^&^~{j*^uuVDg*LM?z=|2)ENAgOv4B!FVd!9FS$3B)6qjI+Us{*V1<>>%dY z!OXJPX9po1N(KNo1oNLAG6G`)p%%c(cE$+iJ4O&3C0~+Tbq}12Lx{har@aBCgJ)4i z>2jeU%yx*9Hl8Hzv5weCox>GgXVi@GK}JEK1gRR0zy_UKu&&PG3W}%C$!i&odR`@}ESss5xUzWvt^kr#$o4zcGAJmtw z_$hr^7%yQASD=9Kb49#1B3RW47O6KmB6!tgM2L&iB0^luLsrFsvQp+a{3DiqS5hGr(W1%t}1O?F1(!R2)B z8C;yumU}LlTa~VVAywbgR=+J>e;Ah=leq+tU5~ca52Wf(rRoRU>id)R7pmTwAYYq} zjE1>DVM30`lX*jSWpuz~fG@(P>Lr0=*ptlFplI|VG+C(}0)G`cmTQk!rt0zM##Z5q zd5!W~#8z-Y7|Z%La13e?s0ijCYe8JNs^ADo^pFB*vW#vYR5a15mI4kkAw(G~=f7yK zr9K#|FBYoo;`n@PK13MGh_86jH{1P;<*~XAYg|fSy_n*0o!K+iW>BEfpYx!9gJ%vpcHg=Vqg zx7dA~5=zOXpv(#}FUr~DU7gGkOOfenD2DO&WG+iANd_%>&2Qr(;o<}Z1X|Hk3lEyC zG5C)=dvJ>)2pM>_+Msk;avUK~=Xt0Z#tHQC3lb5|IINYoVXIh3MD>k$D^P(qSP}0k zzdZPV3Idnx-)nHoWSPCKGEejx3@MDcv;OVjyuHmlhEFQ`PGZSkOqs>y9#$ZssxlDg zZi9<@waDy_>a~QH=q)mDL(zIO5U+#T z0);eMeApfyeeofu*OLzXI+=^c^Tm-`GYASOA%)oXs3r(|Rhd>L7Dwr*EXP7LniURf z1tqY9rEgV$XsKdBW7VY$NkE4HTmmDXQ~w7b2RK}b$6aQyb@FkJr<(CMP_y5Pm@XK? zu2b%RtmeIWmJ4W=lIg=Y=0D?NQ84jxxLw1896c#ZmbWX*^azwCetkU*JhKk2t>MlXcSOc}6WRu`|kQE-BidXO#JBT!q_}mOQSC zo;aIIO6_ba)tNM*RA&op{p+jl|H#`zjNr+4CKnv9P3C(4 zy%ZbprIBw7 zz9w>8@nF!e{@~;sXh3Mw+Ch)M|4aF>lA`wov+t#Yi64~?&c@n1KW?u%pX{C!pB}t! z@GpQHeB*lbp*Echq?aAZT;-*atIHu<^flh|$suEK^RYL%;C$&9hXoU(Vg7q?-j@8I zN{qaID(kOZJ{G8!UY%mO41XHYO(y%zOK1c>X1W5&bA=J$e6Q zbKac1v_3Vl|7*vvIN+V=-#zwK1G#5tZ^QMO756YfqwZ>HZ}}L-kzfQjKHru*)RsGy z%)QWde^1rIVL_KTq?SLj!+38xcNQ?~Vf}zquI6|uw+Dm508&+n#|M+|umNuwY;#{X z4&L&PHyGzz`9ps)cLC!Z2{9pf(_;fHX?w1>1N-nq*nfK{bZc{3^D^P?yqc}p%a{9@-V7jMZ$hIf|XuSn-DkzC}u&Rc@lf7DAZc&_w| z`;rr1o_FQ3o09im`ua`j+{RRQepM6xjhgHgLmO2^}Abgkzt*s z$?jAnx!`E&7f)e?nRNNQ;E79X)8$X4%Lm&go~r8lU@-CNTrjv`)+^Jw87OlR%m5Yv zo82R$!^}=QHd`Mb;77|#JpmU+Oj2^eh2YzF@onOTs{8LR!!*!YT!KMq6^_>GFLoohbeky9GbRZo^Npk4D?dxBvg!{aEj+ z``-@*0o!vErm4F|!?rQ2$<(F(*R;C-wM_=^NtbUA+WJO+xS*QZ2Uz_ic`?PAjq(*K zY|QFEmf&mA%uXI!&*at!-?ld#L%RI2|5w*j*zZ5)*teDZCu1)jZ()oFhm3LF%-f6@ z3*)rGUFv;<@r6AK`tslT&i-x)-u?CX<$VoqLq~Dje(T@yuz%rsk?Tu$CTr83lLNtL znwRWMR-z&fix4bOEOx+BH$W8G#;@C}zKbvi)DU2eoKE0U%^bY(`DEwZgXzxc1L@A0 ztcN&2#x=V?;B@KExjj%`PqA)J&9B(YfWeJw>u!EiI^bxPt^$)&T+^NN0%@T$5_d&M zAbAG^;^knL-e*1&&fkrfk_%o9cGqm4z>=@paxW%xCsVygA~;`qpNX{P&ISCk zt^Ryl?wLT5O}%^|Rlh1#-b?NDw(iLDXi1ma>NiTit>1t$3aSva8v1PRXsUcwTm2w4 z-JsvE=%JqAYPx<$pzc!T#&OX7;fujir+Np=QkQygwJw=Ebz66{1`~{Q8kkxm`FX&H z{|O33WcV$eEHx4NO|DED7g=L)6_V?)fWuw`7?HPhMy>*PCF2C-cjQgbRA?u{3gjZe zD0cHEH<2u&6^r&J%QvTjlj)0HWT|e2!Fxxgb92Ct=Rv{>=GQGYX5bNi+VbX<^p%|W z>by4{`|ITWFI9c_YdUiv$5j2=3dWSL4GxO=!KGByuh%5Y*QC0uzv*TZc7fd5bp1Mw zIv1QzJ8bBs$?}ct;nT0}fV~*I!fhSf73uQR$?j&7UAp{P?XL1c?vr%+d2Tz{ps=$` zxy`EXU-t@*p?UF{824-(MspccX%#sZS@|7R=nyPHAd5d(RE8(~FP%F8GY-r*sm`yC zg83#Cz^0+G2iX0?nC=I;H_y7J)4As`&PRFmG=`}9KQz#>h|iDGxoxRjZ~Df^()Eu8 zV$F>(b)<6J(-XI)tJ>BktJ?Mi|F6*0RJCmm{$I`~Q&nx}+B$DN*p}Op>b!HHEm(=p zDM3>^gMRj>a+`y$_5|I2bny8=u}ODlQK+Y*HkJEAT`Kq0#Gl# z>f3l9(8w?gHeNTfU>4lalesm?AGPKBInD8t>NN|CMgMgKeEt z4sxIv@0M`99UAW!g7JR!(ZN^F|6h(5oVGq$zaiif++u+yGK7C8I-{{f=kP!x<<33z zU&`mYjQ9HPwj4~Ua4Z@#` zW#YD9&^L{G<{S2Z6cw;y{bCv@PTYGDZwU&Zan@J!E&jb+V;RD|%M3hG*;d%aRt-a4Y0$A_; ze?LDyA2R2$&wi}E_S$Q$y&kniI!ukStPeXB61+NpkKydU!%Ej8E)=iLAo`mu*nvnM zRia&XsvMZ=cL5pR#g3K13)s#;JVNx)L6i(IJ_u`s%OYr}7yj>Id}m>(R_z6 z?mk}>wn2Vh3HE@`3E)E82118kx&ykP7sKCoQ0zMnBu$co(iT7}QgyzCSV@BmZi8l9 zbVS5V=iXq{IZ-4kFm^+xE8~GUeJMt76uwAJ@nMq~{```nC#Eod@qp@Z7ZxC^! zxQ%?1WTcO%zpy4ErF-mDW2HM;;u!4k4-%8OMJrwfn=ZTz=yFNw#z>NUU{BGD-(yDf zsP1Y*{#|#yOOnq>Dt4>fZ^L;~{>dZxClBQxxH~&r0NSqeYU~FLCio6WLK9fip2q1D z4L6KoD=H3*{6~N=Bg>#HYlr?YmmG6yR~{>FXT@8fcO_7*Gg~a83gxzC4-Ysy&1#Rj zx)F~(QP&62;BjT~AWV|P2@6m^BH=3l=n}hZ6uRMBmj*U8Ab>At9k#jWj$2mu88DS0 zWqDg@Nc;1HZ1E?h4Q*jVC4(?jgwuH*+*oXQ{z1&sB-uL*NjpJy zoQ`p#d^c=K(@Apz94_=;Yi~Y^SObHAH&J@yY8OKQo=C_a$YR4p&=v5$_Cr*K%Fh9M zUah#5xZDZya7yQB(_Gw)bOk6-3xYT#KV-69WE`1YiTJ(}zTYaoFZ9dLs}Ki}?JAM{ zu|46q#{_Uss?3%DfJr1!oS5sLc!tBMdJIE6nR9D0Ho=HLCN5i4@XH(U^tNi zv8Etm>HmAgf_{#56LLYPRCfl!J~=spVZ#!G2xXL}E?{H3zbzHW0>geMG3+B{$+<*P zcb4u1G!r@`jd zOzAAm)jZM2pTk^hxqDI4{Wu9oAmFZp7h3V!^m8cdf-8^(PM3Fh2|||US{rq>gPbD2 zhw;UKZ%+ooIbg3}Acg?qQUvk0K$we?NU=GJfaITR#b02hQCCW~qPaHP)qTQT&l2!- zm!O?m;KIG$d!N==-wcu;t)OaU!ufrVH zhf8)YYRY5&T3ictxVY*CKiB$o$FomE7H%PRAgljT)Z(_YXHLbNUwV@9 z^dX;41HtiZ>^GikdjG?C`tj4q;ufi>!4SgR3$%oZmD&CZDFuP~=li03ulfD)f@gWr z=2?VDiCiXZmsR+RXh9N_nA$V|Zfco<>3HF)gc-v|{Ts6v>iz(pNK^|Rn_*W-p&lGJRS-l7k6`Oh?uh*RxI^89OiXh9tSJl#rS|b z&mICir$|ZQ6|~4vfWP}Q1MAdyHx4X0P7G|9H$5=Zn>(<*-mHQ3dD8rNc9a9t^p%}j}OX-RK1Szwn_SAOyOpWn^!lVRm` zWVoE_oK%6TEbnr4h56dZ!shrVyrmWE%PdB!f>{@(Oi$)O3hw`yb1(31nmGRgcI;5; zPNai&d&=@@Bg^n8$b~Gk)yfh_JooO-I=vCqY+e}txRm7+2BqHjsHt6^@X%&> z;!I!WWgZS3+7Si@0}8^;fT11m*9|vxF$B=b4b=>_9}KoHJod$KWd5OuVm}yWU*y{t zr$Lc?C~~^}puoQH+81Y_jSUnz(|$0*z9_UW&W0j|P~;r@!CCf&&%XEu3N29NJo~}9 z_Qgp1;({aw^@l9gHmruCZesGa};kPd?g(7|^QfxoC#J&jF7vI8_ z2t_WpA6#Z%jIuATgd(G$NU8nc3j3nOzW6q-Z7A{``@vQA#c2EDYA7-qiUjQk<@QAx zGpV>JH9j;AGd3})8s=Pkg$r9~(VeVcScD1N{bJ#U7!ndef znpvXF9dV^1AZGH8#F3D)_x`IapD7T|D3Z;C1*Q^@WEeK6l37lIPNM@%#?; z8ANWlieEoE&Etg*9#rAu!OWQA?Oq6968#OXWy<7DOi*KauV?P}D_-Y*r7CZ~suVcj zM)Sbk1P|Uaxb&)CxF74q`;Zsk`|!Pw-uqg!zE=wJvOdQHs;sY-g0a~j!&{%62KXEe zUA&qX9(r5XD>F9lXUe6U$YONueq|>1tjdAyIpG;Rpw3k>>LNBblX_PbqCR4SGq1<) zRaH_ar}%Q``zz{qoLE2WUw^27{gwUdFKt$4G-C@XmK+N>H5QNyfiqT?D{W>;74`xZ z-l_1;nfv+4`K@WTg#q$rwZLBiCe#oM`2lLl_?uzg8s>*g1$J~aJor!?)PUT(aFdiH z()u4>_-Z8hma>pUty#lMH%FQ_H(pcP94TF+^X*M*lqFA+JTlHp`i7>R@xdBr9}e2`zDVh2m2cB$hf6 zyeYzWkj`1^{{eh+@o48;ow`b^HpFHEMS~cJ}ubQ@V02zgH4iIg0D4_ zJZlB^ssD4;>S(eaoTJU^iU4HVnK1#FrThu-f1^Cl&TcQCw?m7)+rq)F*m>|NOLY5C z&-CDqleOqPd5gT6fT=us0{{wYKl22DDosJu8RUMb%K8vyr{sUk<2&%fK4vh0sn5Lp zn5d@&v3h&}{+FQqlFbLPrZuq(vMX_ttYB4ok`I-fgl)p|=SZ6(Cl&M|AzXdSQS0RP zQ%#$dg(5cEp}z zHkSHu0CU|^q9;ok9}gUSg@=!azlGL#K+cICvjus4JYq~%fLt<=&GPW@<9f2f2cHul zl5lI`b%P-8Djt4?P+XY~tKXRGUjt&7P@fEVZJ6X6BWE65fU1Z*odXxTFE(VsuMrxS zH6H{^H4rJaxH?zmXl)Sl@DA1LN{*Y$lFtf5IFQd*kk&z{T*!LH1FWsJh-|Bk=s&{A z*HM}`e+Po^D{hB)X#O6?!vCwwzWpiOYCHlr)BmCI4KTU%_&N9{(Ky%5_#!bwk)OsU z!Xm5FjmS^2ta(>~Z8xVh{grB4f`V=O{iLk-PteH66~Rqx0JhQvbvu=X=nW)W(2eL% z;oCo8OB&ybW=*f2juQ5`0OK8Dek+VT@+$F`9J-vv-n6GvhA1E9Kc z8nd!+1OQ>d>u(U@eAuD<=qP%=@%T?w<(1D1yYom@Kh8(>LY)PSPxVsAkOtpk;a*>u z>Ml%1|FGbYr8pdM1$yjK7KY(fH%2XEyuusi%dvs>aTtZhp)UBu;qZbiIo%N+x);X* zEtDXNhLiE1>O9}6!3y$}4^f(GsDfY8xbawphRk2@BGDJbNP@_M-`m&#-@&{{P#_ri zxVcFx&5~3Jf9t&S9~HLn_nJj zjaTp#@WmIl{n3IMj9;blwgvA4GFTVkpJ3{N3$2Oy3%>8QtYy}M30{Yz$bo%~Hd)wb zO^Ljv^TX6Z!(ATc9g*S=HP{?h#&(2*8Xp zM9$^vQiEOh767#PI=Ho(U0vo66a=@WWY!u|S!;;HK{EoMj}RA~<{gJE3$Qa!oHwPF zv%izdT0uzwU(Q5k{m-wHPJ$Aa-=f}h%gs0SBiOn2twp5=fmkud8PZ33!TnCp62~QtrfXl_=vM%{Rz4^=GSmIY?O~Z$pznXc}63Uw7eSS1T zOx{-r|MTJhNR}*3-sdsr;ulD5g(2KY<$WK}Tp+bVvo+v)Pg*r3i0^g=q}I^=HRj_7 z(nJw&mwsVcr3cIJE4%-yw0?vir*|y%DeMjpmGBvb=IvkLMli!8KKeP_S#81l%IUSA!tksH4=v%h7WF~abl~yIAF5Xt3CelZAM*w~mNH&Z z2iQJ8jChXt4#@QW8A{?usH@>)3sv5H5hBnv_$LnZ;LS+s&Ym+-K?G}p(tf%sN_1Z7 z3G=E#SOg&N;n9M+U>5*eK%~E}09YOBg7@(Xk0SV3H!3c89`yAHw2o&OsqQmT@Wmcu zZ=<{=j6!*YuY(R-?Lp}9k7m%h$%wu@v}WD_&(q34K%qNc^<>a$!77}EEHnyDpL&Bh z)Hh!6qazJl@Y(Z(fCK(GP)<~nIOspjjK~-=2ZDWJG~56qun*9k4(p4ceIK;1@lMq` z6DiQIT(p~YnJf2Ywz@9!pL<|ZEw#L{?EY^7J>huZ*@c_E=DN9rPc1Zmwg;zks)tH% zfE%k_4K|kDyOkb13zhLmNqMA8X}Shl;E~bgkvEj4E9kncJhDw`x`?jFlt0m-+rY)&+9{L`}o@cihG=c>AdVYry~QBrXSLN zH`hNmqwhnQsw+ZL<5~rf4IyMTG(blyTVuqfPITXjj27lu65LP-&{vvrh5fUIpAuZf zXoB!cXgTF%{8ls-(v1O|Esq1(Fv%|~%e`Zj<@t`{P4Pj@YHnH+--E^#O`GGxf!Q7M zFC=N*Ymk>|@YguvH^U@^%<(;z72%W0N`Wc^C%z^&KFV(v_F%jnaei!hwXZOK>A3P~ zK5zWO2|Voc=-7I3^GVtRay1L*_|UyA2wih~C#(l=qvcpV!F@LPM_<9OwVgxtek2UwcVK!0VWqGU_V z2jzZ)45rF?=1Gg&QYEvG2gwCcGAcvH|b1LjP?t|Yc z!Q=MJ_dakwER*qp{Yq5=E#TS{7!ntI1CQxR4};pq`{2)H)O0k%|H&TY>foXSZ-`qR zuF?>QrBMR#ykIic$+0T9;bH@=@K9Nj!`p}hT8A7^wKP3MKbRtNz{uIJa5TOshf2K@ z>@G}zE~s`FCQujhMHi4Uw00?hRIb0tjI_LU7g$m@Z!3lUW+D*60gI2oN=rTn zEWv~R1;5=!G;ObC%m9AF#a1}P{l8c;foGY?f07uKnRk}_CrwuJpJWl4d&&ks0_aCN`L!cA^ZnMq&)ec$NZ4cp5rQ^)*tlC0{K~mUdKZ1 z6}m+Ndn;T{qs#V+YWX|c!rv_Cm8|(ZMEulal}D}8oh*4vUGkO&#vjKP%{V+{Nn)Im zzryet<+qgGe=h8ACl6MC3sugnJ}U3|PdS>fj6 zJtULo184o!=QSre?}YJ$`4qs${iU19gmACQyZJ!1cRwHJR;{&`3gh*Mxmv^zmu`l~ z8rcTU?+teV?;b)s_l~eJ!5O=JtWl`&7PS~eg5Xq-GPXsvnj^`IBGjtnhv2j9PvVz4>d}W0r*ZOb;Vi@oo)Wrnd7z5o4;Q_8x%g z3QH(PN;gM%XV|#cY4;~bo&%m3nOrv@Ne2kp2UB^k#J?7ucZKxTDoUAE}(v;tP`KV>}j0V{dWmOjlawx@Z$&%t)TwUg`NH*S(`RZD!kjr(m zD#@}mJ+*$B-wqS9L+9rM%u9FDoE!oW8&RwGOI~45$v#WE_LNt6lqQ3&^UEvp#daL#6AEFP zGm=Uy0H_z?DfPmXltjd45p0f6gNYd~Cx-Q07KT;Hn|r%1Oi7V_!TULL)$zcE5pGu! z1va@r3m0pk$+{FZweQ04Q_zx+Jq|eCNKK%^H%)GWsNUHKo^lI69T#f zmq=Mg@qEJh?+r5q<`bN^>%5$=H79|u+bi-(dAvti_%|{#n(x)gCW3$2I|zw~vJlNb`1rl0oB2c!zuVor zkB|R1EFP-@sMJ&-W-X_Ax(t&v+0g*;0(D3S2m*7YBji8iLAw=T{XB?SvU+Mh%7iC@eeBCDLfVy95>&j4t5?~M2gpl zahEfGeYku%=?t5;5L4$}w2MqOFK@f|J7K=)ZQ{M&K!xO-i|9GMzxVWT@-HS?wf_ZK zjPAuwVGl>KYm&=9qtD!a(iJb!o0^qJf8fkL&&g;2ZPni!`m8>UJGIoO19VqoiN+PF z3%m%`b>dR+R*Ba?6IGZwion<;2JG6w*1UKyL5ffq)pkd}Q5EHm>L>opsFcJ{ky&0u zm1DI{dt$fqn?^?gsmmj9QxN5=&{_t*yXN2MY`g~^FrlwSd!PL%00WDDc_eUuM1zN) zeu`vGgxS;pt%}E$==@8T>Kl-B_AU}kT%IH51__XPq9M>dj>#n<9DLcr3iW20E)qW^6`iLnkAau0)r5# z)I{Ha`wHy#pzx^f=Z_&_KNues3GR+vY`?;}k)~TPR2#DfUt(U2qJ&FBGXAU#`z{W6 zE3@q71X0Oe3SuR|ItW3JHS})z08kq7(OgX@fia~N`noD4>VPT;nUd&?fUXK?Y*+%g zB_t+^V3@@OR>fE27vmAf|F;M>`hx!(g1x=3AA+shcM=3!^szv&hyOEzjh6^^9U8wO zk?r0t5lsE~s}StMj|GCA^D)Y?G}~x-DYgxA5V0k^%ygyw>*W~_>>KgPiIoJhco4vq zByh}VhM{!adsUb(K!};1^9fcY!rXgadm`PTv>Zdipg2zx4;`f4J;@214x4+^n#MC2 zZvo0_yL#(NIHmFC)_9eMUJFawP=-6$?2HdlSL6vvuyv)2tU&t)D~tbty%hQzR5aTD z;)N`c%0mM&G%pP{H-3m!>L{_NT3PRQv}3z7t9-l$ZtP9~Uxn&~f(S?EPg9nyVZjb; zHpacFSE1mSOx-M;|Powtja)tV(=rQhd_--X~rM=1t# z_$u}{25gH?AG4;Njd7NI*)KFS`&d#~U6)#v6_d0^^Q|m>BQOlB(Qj!Z>uoq%gb^Vg z5U&1C-I(OmmB>a-30ur+$I6078rD;APwLyN(k0VwEM@N^sC0Awo|JBsjMg?sUXOik zj2=um;{{@l01M;Sh@$tbu6dBrbiIFidm_ikFy5gm+K?D|8Ms1 zKlLE@AMvv!-(!>xPU~Q}G1f_8hJ-|Yu*Dgl%6Lm=TwNw|wJQhT;dHR#4ybzmnM_$m zLp_28GvDf{-su8Jm*A85QWFwmQwTsUa+$(^}SeJup-t0xY0mlhL-i>lNoy`qlQX@If8WrD1yp+jg!sfHm4IkUEAr zKEsoOYUHpsr~S(}qv>HU2oPP$a`%u&T|hA+fMcKH5drkOhZUPF_+{f+5`SNUY3sCR zc&&|WRvQbhp8vVBd@2xwb>gx3D!47)jrN2!xa^1gM%WY9Y5YcC#x3>3TUzb-a!60f zHGmJ8{#mBq%JMv655BNjS-3Ti;>np>@}XVPF0qM=%l~ds zznZJldS6SldDN92+E>p|S9qyw>&z$6;i-tC94^1XgN0=6`4pt1Q9Nq0l!b30Pq%y! z_IqzX`2qW6%y)_}sZ9K{?sa$yH0v&^pqu;%xV(8N>xLzc!PfsP(jHy2_fwDK#mjD8 zdb0X@So#xS&O9$&ZoeHk=9-uffPjw&?OY#|>d=@qA>$wk#UQ$uiGe_f-BuLi8t|s047OT?RGd2791@?1aPcZxW5O`>w zHpt=V@dM}|`~*NBkn7=O@CSgx)HmHPz3_#H$Eh9gru zAwjez79}1ka?C%U@rnRT0wPZIneK8R1AJY&RQG|hqgMJZ)1O+=D5FEmJGS(llw%SS6C4z zYkfk)o2>W1t|7#gA+V27*H2K9XW+U2CEAFJo%TjFg|2Y_sq(gmd~`5zfL zuNhAZ23opDea)h1n!CbeILMEMjkr?{u8s{1CvW%lxU4B&gKh0i0diaMa}s@*@d{r= z34bYz%<=UM6pMj>iFD6kUBLc4;O40wpTYi>ICRzn0}|$UdWIV8S9o(_!knQh%PdzP z)Pr?+unw!Or%kToww_m;4kjxIjFqHe4Jp4`4WArWlcW5kcNHd(C$~>O<$iklsrS>I zcmNVM%JQpWZrj6t<`7P00GrT4p!LM)T5Y9!LJwOP#b&|ZqWgy!(tU+jcEhp>yjLeK(jhap?T}&ou6l64A9NO*{!WR#l+-E^=x zwGXfR*5EbyS?yVa)=@A>Sc~6o*qk-M{s+J5@nB!d7L;S-7+-wA$;nL z5x;m3m_X=Qjruy`l+{(br~F%uwK$q8W;A+9H3r<<15hsKJPadB=*EEW;rD!UA5`_- z_dH|^6Noe&q-YrHqDrKlj9IMHQSofd_gSlh-)dNu*7raYBdm8k4%!f0Iua3q(1}%L zH{ZytUGV;Ntk%BI!jD-6vBpZN=(KP9U?_8#LC zbCs<3+Q|16`&C|Mzq*yqv2=eW?L!>BD*M-pJ6Dn1xmZbd6FL9BqCHopy@N+jY>$-) zRw&8J@B(myh47;8tGmK-yQ0r>qICZvm;mgS|;lT~RBJWg`7T?%~R zKK=#oEiZ4JAWY|tnI5VCndmXU(}v)|@Q$degGXNG>NC%8Lw*u{AbpzEVNqZl<}z`i zu8|9ME0U{>#}XbQi#6Lld!0ZkNk7Zct}^biRgjEp-b}zo^B=1%>ve%+W_f9233eR_ z)I$M;r(!<6n&f%ZvYxw6(2MynF=nu|VV9s2f?}+;;~r-5B&TfOm(~7vPSJjeXy2D< z{}*fjm+hZ$K1e39+sm(rd&2y9HxeD}3`MXpm#wm_*POK9_u=XHm%-JI0qh6%;>lIi z3k|5|nQL)o`mh_^rCM#_;NFI}k<5f(3mJ{`XU?Y5d&`S4t{uieQp_o<D+?hCP?KC2)Kq^cAxoNz5j zd5w9rVvmUPs3wj$nG#OHhF1T>w2#r+h8_B>K@#1WF*%Ly6SC2r&5|3=Xq|UJ*~@VG z7&k!S2_9BFxmp}C`=x7yp=9#`H1`6@#Wap?BIhJ9KvRmg@2|~?rX#i z>KI)e<}Wc^z^pT&M}l6*N_5@=Ft`NI>(Pm(xC?`_A;DG()QoAS)<=;kKICWWvs`Re zi`bAuPR($q)CGN1)s-6Wh`>NEWyRYv`>Em$yMP%FL46^tFW&{#u|A5j^C2lf)0QtQ zv6?JPo_)QRm5Jxe2b;SvIKZr-Vt}zLb)EvURLqP@==U~T-t@XpC;QTZvDE$3vHKHb z_j6JGB=DOB@UzyK5A-6wHZM3r4V5$A+O)IrN(_2xAa-=!nmxXgf{RgmDt8pO3M{ye zoY5M~N;l)Km~Fob{k6zo0YKGRq$&mB4s=!2J4?`?PwxP9+SIU37@6^A0jiVte>*=6 zP2Shwkd52|>>{?65~dcV=mG!g9t-0K$_rqtct< zHzs&6sNoOe`4w1f5YBk4giATiw~WUll_FmgBvzGOq6jKMgH_%pLzC*DDX2 z`E8`@4pzMGLGOzGmTl6}tZ9w%6FHc#;V*fJxKhny-uEv&f13o&nC5MCjfAAnyiq)d z>%Hb=YW__izBjyC#gRRafZ%pKj^XP_{<34iN1pzHN*4tC4c-6hQ zKM2R>!ARD;7%U>?3!c~TJPIczUsx6&C}#wKQ+Lds4Q5R8SR-D<118$?d0Vc~a%1a% zu#YP;e++a1wmXanW15R#S-v7ql664T`;X9JGVJl@Imhv`6H(cVlQT=fE!z`wm+tJj zUJ{px&es5;xVCgBGZ1`je2ZS(F8AMj2lAsAYg~80uF5>|k$CBaOK-d&&82Q?*!oZV zD7)-)q4@>*u9Z|jyRsU#oW>y_RBy*u# zGl)~2;o>$ka>S+uX*g=hfhUpwa`urF2AMEYFXg`sT@z5*fUycSDrYG?f&tHRPf}gwGe85 zg*8n#x+Oeqi$Zqf(8D?&%+euAI|dIbZqtj~v|w{XISaNoj>hO%B@+$zwd@(4;)r3Y z8dS~WDfhAKg3v zs*}j^`Oq)EEh$o>mF^MzwsHkaeNe=PwgAD1G+B)!RsNpN2MTK$)dCdnamGLA&(cSt zuri~W%6HTc!oUX2J*TlvX5xJ(8=9hf^g2*xtbsjH6zD|X!S=+bPAJBPw&NpoL|CKo z2rQ%OR4#aNkX^Sbm-i`;lwjtGrjOzS(f8thmlD_;DgDSAG4t2|i(sOW+}6Pw}B)EA+SyE>uOHGm%blt3Gr>C~Ju{s`h*Rw&S1d&Lrr+_jWWiQlI+ z28$1#)dNYc^6I?Ohq3;WGL9F@P#B{!AVP%hblD+7xfA2Gr4-|*18_OC>b#d?(kjdL zMvHf0#6esuj|%$|jei*pexVpw5s6+bm(Wi5;2n(Ftt{JvAsd-d;nZAhy5V0i!EjTQ zbIIR>u%;yryOqVlG-_+q7<*JJeiMTUvf?coU(Z}yL6Dkci|iKARSn#3O` zhT6jjf$k@g?kBkFrYM2HGd|&l_im8m;DP3*k38@MZ&e_`nwRMEOLmV@2prTi4#h`} z!~*v>G-%z0rbBN=$^Li&_R6(2TAZThxDy(r7}tj8rpipaGJAx0!07ry!{F_^v|z8Y z*h`cKql$5WAr~;zT&=pR7o*wbK(^_(h)yHi*tb=Rk&mg__yGaZz3|_Jsjv%c{2iKu zBjjAyt`)Cl6rtb1dm~D@zEZo~QNDrE!9ejEMs8_t;i$+{P+x1*nBrtsbCiF;T&scF ze+u)xMWbkw2nC?6ofJ?U%4o$Kn5zv$J~w4muu@UOy(ntjLl%ZIN+Ny&H5{PemYS#{ zim{F{Of$~}DSQ8h`|1(>uKqe~VHp*mlp zI-eJHJ`Z)igmpeI>U=)xYNu*n64kz>xweQ*3u7#C=vj{g3y?fdQ;d$xVylyL6nt;q z&A`7*vNI(h$T7CONGL!-)$j@`?Kv$J|^6{qaSX0 zPKsNBufQ!A?ASo7m-U{AScFimh)|j_(?v+ddu+Vo`v4nzp(LXIPQ)Qbf$a^yNX_8- z7y)jdPt)|hIF`E~t4O+ElsJQ7L-E;@s(hCJqzKCIP?MM+Q3U9Jp1Xer1)kSouA#`! zV6~H4UL~hBk2~#oblOvBGCN>2 zPz2XbB+NJ)ENO?4uEs#Lx05~Svo=>!l4HYrO8=rtn~?#5RWIHrbkx8bYQ?6`Z}#c@ z2Cv4q=x7Cin?yARhFwFl3qTxx-(;?iD9RZFarY?`fyr+OP_S!?^@`sVnTub*^)L>0 zoEv-?V-h4^jc>+MSRdAfkdXCZWmpeY$Zw#a*(KPBsBaq7H-_rF0lD=mc1P3m7C_U~0upGQ;#_1)}^rm0h#T{TuI>dvk&aFY7wz90k# zI$)_q4vrGthya&2w|>p|-LF!Z%P2CB?W9oXR*7>HTl2L@{DUpZ!h6tsKe$;jo~L-; zDfa}KZiBf}QN9cDq)UXNZW3#^dnu+V+N>e(9R(|eLW6J8DGkM&V*h;u zRwU5HQ|-U@xM1In0v&X9>#ja6xL;Z9BThdJ8(OHifL92}X;w?r)olYW>iRGmd{bH6 ziu*5R8coVL!U*`wF{EQwk_Vj5C_kbnNBU*_?45$0=@#*xCm3UXk%{*_TJ%rk+x!q+ zeRwy%ks+5w_~qWW)8U?b-=T=lVm9IFO~Rsc1F%wnlJpemZ|^o>l5&GSX z_l_8GwcjVBHW!IN(OK;Vm>u>RGYb^AF+}z3c+o}pDIPHDlo`|*dsOGJK+;j4Wonls zSuFtdu<0@Gt^0_+V$x{$Zk4--VCufzDkce`Y=lIm_fg3|iV)9~OXN3DRDn{bQ zWR?=8sglNT2hfLs*rB5_UOR@5kZD!M_|ce&a5cCC@b@0%8)L9{PmqC?F)(zLx4?wc zY3}!^j6PYopP&}C`hP#BVMOn&n-?p~R6{|qJ925d z+R_8$ZRy!roi#hr;x>E7X0ErgGuxQynQ$Gj>4@kAO~7AH6_z^vPo5gv@s9WD6xAY~ zJLa$qH>3Njkk(Y1b3Z3FF&T`OQZgcnYf%eS+^H=285Mq33V1^A!i>w>_gPlj9=n}U zwu)zT-f7!UZ$q=h5G{E$S{9Mpw@}uB(lzE;sE)&E!e}Rt`s$75{e((r?^S$+mJ<-^ zEzB7GU)YVtL3FU)^OWsv#H0qu&Y8m&tiryKU>mw&#){{Q91ipJ2kcnMYAWqx@NiKs zP<9oa6eu(H2qIQP`6(C5AjlL1LdIJrI1z|`DnayIkpxi@foRo1;h6k?fX|`NPJqu1 zj;{+J>IRqHKo6lJ;XJS^E+TdmVRV}8^P$9H7{o8J{#;9FV)8=d?|^CgxJk~oz~@aW zLaE{zVclNbB6^Q{v~@H9%D331C%=s*sD0+B&!p~kH50m5PW#C?4=a9;xyE^kQ!+*` z!n}R+eUjzjeP-jf$iX@VJS>bJloTsXtmWWLr^%gq}qN z(WWDo-3ZxAzHcR3%9&#xvoIP0Cg-k&5>;jJzXYu!lT}{yP+fQ?EFHLros~EaTMlWq zjR9xSEqSaPyY+wv*O z>B;#;EcHGJQ{yd)n`lHV+=HIcdM!L^dOAtLPcRlC7Be4BQtQBiABX}cb~$Ai()j^g z4?4$~i(8{WBmo)T73`IkX!B~p-i8l|TOhSSwCSV9Z!*+SOol#h)iLNGr8a6a|LBlm zu<@g}8{Wa33suZG_k27LO5Wmy@qZKOWKRKH93umtL2#8IDW{X7m?o}s#D~DMW%4bl z|C@GZ4!Yt);jK#cq2s-{gwt_MGWlbIpV7oImPzk&Rj{&!bH9%>2mKV!c0_{rRurlKil!CPugs1M9OPR3= z6^tdQnk<6HQ_0i_4^u+oyfg7x6*)T7dc`qA(fvx`2rONw9|i3hA3?V+3;qN(#yfHU zdzkWieD_`QDus(rl>mLV4$5J??7%9xn2pWNTn+zw z;Z*O)8dR%2s6cCf{q0dms@W?-`6vk3BA+5~{LX1<@$w9^;C4 zM3vW7XT}D9HHosqGfP?40c0T0T+k$T(K3pNxkp(tkBAXSw9thyE@k0&iCEq3RF-$3 zs|UvQKpoh^?GAbISGvfH-Hi@}O~Wy=*dYz0UM@isz_4+Tb173^k2+ovo?4rbSaN$g)^&W$n?io%&8Yw07PO>!;URxWjGgzY4gRXdqw!CQY-wiKzqvJEtKP`Av zF@7e)5ohc%l-H-D50~a510!YGTbVk7M;mta%&|)_9ofogfDSv30K)jIwm|1nzFe zlajGEe;I6z`Iv#mjiC}W2l!l2X(GrXlbsVoDNgf{zk;dbZ~GwnG*d7$p0Kh!ue4cx zxX%?EhZ74|&igNgzj?85z+ZQ4IQ*q`&;bMKIh`49#uCl64w`8lG-JX8ScNTatR?>X zsq7W|9i+S$YP{8g5!|x8~X;AZGgp35Wq# zI$-ni!H!8hzaxsFP8ZwqPb7FxS^QQlc#kJuqXlpG#=jd4KIof2P2*DnsQd`N6`KMe zxOz}rrSd=oz6A@LIY+t6COG4xfF2B0m4AftZY>|17eCh?s+MSWt5-W>T|GmfbjVpY z))^Zdg)I7rPgH(TY5EI2L~GjbdJ^SMy;DOQ-rSO!W+9iHCenmA5Is zYR2Gr1K^XMag0xgu0}oPnk`sU{3?7mgqsDSyz!$LIW5ibie zkJ9uS#+sD9b~qie2sVs;iI2pNV2x1^8Bg8%BO0T>`!Sd3q|)>-UfJ)*{YVUEj(liN z$4Hbs>P4tkA=D~`{0E>5p&0XnO_nA5`NJ1I4vuCyod~56EcIII?g#UQ&r*mCu=>m= z=cgrWrYXxXMjdU7cQlG^5rmjdOuN<8M*LqGdGsx&z6n=L#ADoWOvJT|@{rH`Hg%7D zemis?EdmZafNM#diEJ^K{|Lv?6)9b_!XdK!XnX@D;W_%Ey$Rz?)aQxu>exk+fl;P} zISvS08BL@HM4Ma}H96f!Ew-7l1=IpmYd-iQc5xR4x!z8nHTcWOv6Jz6KI#Aq&MN{O zrRrfTRKk1B`?{z;j~!c(k_~Nx3HO>+U05LnVeJqjYe%`4`v10Q7bQ{{ofw#Tan7KA zNy>wW2dk)&fF$%~luR;!)<%fN*seK>+KLnrVomdxm_L6wJ+SANr3bd~8mH)FiFw$0 z)RGyMqebi)Y5)Zv%A1P7*-XQfIat?fLiOLtjL{3AS3aN&6O1vBn)h`QhLPFe_^rY= zk8kWh+&!7zoJPIbOTAep0)*DO0sn^N;o=_Pf)1{vBw|V!Hqa3V{_Js>uLqA36HulZ z)9_%4q~toFt|2{H!}MfbC61&9C}Wk#S3*dToLEE71car@iS^`AfH!*bp<0&YB8cl` zpw<<2=0nd4{s9((jd31;1}>C3bc6qlUbpsqTgC|iAoX}8>h>Z3apOZGu1M>1 zB4Xx0pA+^&e|rw&jM!)1sIn;dfe5VImr1Xjb2OE0kA5=K1+@m_=kf2$9xq@q(7ChManq$42fzOK*QbYg0suM*05iVE_>ceJ#-C+Bw-i>w;6HgBE77Xa{Gvm82y~*l z#4JHSEy|yjcdyJ&lWQFH|78C^`%nMN{ePF-|6fS&|6ODNg-Mc8&B>32`5yibW#fez zeBXR}fJmD%n(S#Nd(5A%752gDJ--S&P>+kU677WluoibOJkK!(l>U!LsuKA|+P5x! z(2~Bk#-uz{=WMUX2ir(rN)tFfKn_z{@%R$i3 zCm8O>@o<$?PeA6BrkClEY`)lowBY;z|5ENgU#>w2&G3YcNFL&0y}kFmy#_%uS?mX4 z%=q4pro)mT2k@CpXZM@=C+tKU&0qXc>_j0V(?55K3Bj-G#o(WjsSxD~vv;KRs0X%r zE8SpD^T*^wxXlcTo{F7b#|}{srr}pJ0(e0?{iuYDV1{{RF%Pd>!?Kov&I$Fc@Q&iV1=Oa+224Jeep2zWtUd|O;*e<}|?%&WxyTzQ^K^&Gx zCNJD*vp&I&^aP1bcng&BiFJn>`F^u>bl!=a&_;T*{}0(ywbyA+RhuqVPGYW*84_I} zQcbd;0!f6^`VoyTO z6fMQI2UCQ`Nq8#1wkA0 zG=gh`Ir?eAhKzdJW<$Cp8}eASU_;78eE(f1WkYiJBT@oj*nd>RWr=WPvb=-wZl&oZ zhb_GQPzZ0oMi%cn5Z(~P2giHhY6)ERjx9qM7ZGL@>3coW_Y&f_%ue$0fDPdOILSNt zy^Cy-Eo5StzsnA}CXl+F)m!MB+_@rSMKQ79m+uV^0gA7hjZ@$p5p z`WyUglHnJ*l>y43Nyex@J97A~4w?Nw?9VVtR%Myc>G3uxNNtrF4vI9_QO)%>@?W|u z1`E%%hoV9vA4XZbgE4447Cwc&H8Q})Wj;?80Qj)zQ%}G ze%4CGRpZgb&+ znd(!6*L#$vnZ$;^EVAGmwJxaYd6xM2sMcQboCxr?I**PwOV`+$S*$zM?s)Mw&ZA@U<~@?Te7df10LAf$|&vA8rCirD_tfu-< zp>GHHdxqh$&~9dob-v?xTX|}&iiY}&DS32+0@Zeurwu%re zqc)_|N857L$fuQ8qq&+yCmQ*`vAhVe)yI%M{mMO{-}&9t={ICs22-kFAW4jPQLP5kPEjHx zJ_jh(eIT_aaFeC;S|^>)s!oh}N=*4PV$X$XF#HB80%#`e(5>mfpnxK6fWDvDIH4CG z$5JbV1z?j6#40?0(~L3SA!b zRHgB8HBmmU9-U$M&9x}a-0sqo5uXM`lO=ERYCtdnxTK%k)JHDvXrCP|V+#%;5xMW1 zFi{E%rXCo=R_wLtpTZKm_L@U0$qr688vK<#`Q~RoApN%w!)-L}RF)_t2d~$Ro6yU+ z18`B=6h{Nn-*z0}$VODrkjzLXL})*~NN8oEusKHPKuCa6Xo`Yw&trBx-UyO3oiyKX z>gc$gwUUs<5DJlvLR$U>(e`z~Afahb3w4W+tLtBb(7#0-h>!hhxRGjz1Yo+$V7g1> zbVo|kv#oJTONLNjsa<)@wU@d2SmI7EO#d*-&^E6OVS29z&q0oKA3?o+h?QgKEJ8;g!Pxp?jnDy^9O5bA)=D@16+^5JHX;g+NOpzn!&8BHKp^t z(I!h-a+{NUp*G-}M6AwCn6!4sXapTpBI`{Db(J1tWCeR4ge}G{r5Arfyf@2UplJ(u zWTa*M6JyNiQ?6GMyp6)Y$n^?!FB7~8WwkZ(OVW!JW@nJSa8I&cvA=dD@JR?ef!~YI zNIg}EbaRkqjLVbQK$X#{%!xHp=C^*!zb0q-*J_C`VE)e~@lt{|v8v9V)U=%~`Cs&N zxTs?MuVTR;()q6iT4?pCDHl5dx`Ql~bMS(23NRY`Sn&(=ENV=0;~-fc-HiDMBae}^ z0X#(`8V~&+c{*BMialzQQRuQQFp1NH>5SrBY^Fhz-^o*AXG=aybj-Z>P8{0!s;Dv9 zZ5yDYdiyCcSg1!*T)lWF_2)QpVZGZBU?IJD3-v_fTgd5|5*3%|(peWhl&BNfwl2jL zJt=B756wlRizrbby*F&q?2)|atlU7$ULu{a&3 zwG4ZI27DGl%MAIA={wm6xT;T<@xS|(W!WkjG*Zhw{t(nu4TSN;0eRx+oq*Mul(0v<$-ReM6xJfCD3dOwidwFip-kZ z1b;|9;$3FR6PA@u(~9hA7e>5C1I$6@XsEGgc)Ag~PrOQXJN`M4x@+_HG~zLjXvXM; z!bv^6&HNHi$kVK77jCpju&FP+jR?58>DJut{CX*VBMzJ~h_RZOS3*--8yl<}1M+&I zMiFA{Z3 zynhs_BaOTLVO+(6)YVq$$@&`Hl00~CbN0#c^_jVQd}&${d>c$Msf6_8G9p~b2N+8} zP>H$Y%nCBU03^|k@gB4V&<$2Z7R*^v;DcTbBb+Z=h3eub8iC#!H+V?VKi*?5KtqkJ z`+MM?U=sTVeDZ}d0|U>0#!?^WVaR~h`<1HkXaS3w`u3i)ZP^oRero~tWuw`-Kq!|5 z8cDZ>TxBu_gM`&khGqrEh`R=&h}RN39j>1|=comspMj_1!It(7>lvN0wDumNfJnwu zg1!swVXgVsKUIgO{nf`Z z@cD+5;8T9)QLB4Bt%m#IySsdZIa!lU(L|ro5FrR#Vd|m!qW|l>letP@rOlWXnV$ZG z6Y~xuG_Uy|n)fhn$C*ig;KtlZ|1@b2Di(zS(Mg>#Vh!vfE2|K({&2=oiZ3b06a{LI zN0(Z1d?oHAT5^6Un!KBtzj^>EMr5>_96uU(i=NZ)Wbo_;aWZ&X0}=1Us`^u~UZ;qM zEbMNG|JV+@4K2`pbYN2vBGa!ok-Fu^>&fWx`|)#hq*x;8yD7~p_NOb3W>vg_6inn{ z-+`aj^bg~PW;Hiw8al~&0lGqMM{joQ@*z<(BcYE*(;+&2(*9<~zXM&!j1kp~J+O83 znbrSoSy|aXWW?QMeUUtB(76V!wxD1PU;Wo&J1%~XJS|O}bUwjDX0jNNO63Pt{<+Er z!@7%~!T4Bjc}eUWrOmea5YAQ88Z;jt>s?SrVa7hdrTVB?s`0zv1$1|Uj|DsKAB-|| z>QG+K5LTQbzbFKO>czxH>={uir=WMyUJ|-0M|lO2oS0Q;YQCiU2E~>cizmD-6~^4Kk8-=EZ2rz^8hN<=kcZh&c8|_{Q>* z#%q~T>D4)g+kNnx3==!`Zo?pp=+%vBl=3L@76y)^TrYcBv8h@qj1(3QDh+LT2uq}8 zq9;sZzLEdD&`G*qG~b&+>kZW+u|<|848PFUb@|_f){J5m)S#kb;g8Viz!>l<8iUso z%Qj-^V;+Zj&gn-f{3NgNgv(3fL$vl#4RWnLFq#l7#ZV2t(s`XPnydo}5bmuGEm_Ba z0-;?&aZ5B=A5t-{9uOdm>gZ81re4}3+HkLSh%93m<ls_e;@$FH=y})L*jKUwO*7d-)&8WdM zr&^8tDj%d%k;zpWW*mA3-9w3Fq0El#r zmb&Q)$1%2w2!NJCXa7lte}k>0shntx8Obn?h42AE*JKRP^eCweMoELb&6v1~#IE8^ zKr*!6cS!>{I-#XLacdxMyVfyd>@oV-81oZS^rCnQyVs$#ehA$?1!32UH=q_lT()AU zh2nKGOa9oSSP8?>3tO@^OGTof+!ER|cV!x1E$=AT1a2iTPCV2OAO=e&P%}bDGEVfk zFJq7i3j~o-P4*c8ge z2OY*KAVB`F@Q@&c-u>UgFae{!gWsNswOpwL(6jywC9ocTF3+lB3tWGORY17{1;4!# z{(K8N;6IPryiztk@(TJ4dv-atOJ`b}@4`_$#T#66o5fQq6UcB7!u%DMP?)lklvPw$#)7wP{=wQHWlZ zF<)Mm)=Dp=qY`C%WNSfFF=E6%Y_)?J0QSHhwOR;VDb~9~E8fXcALQx97^)~S(QyA5 zp?nrX*(adv6;Qt9WKcc}<1#Q;Cj#0Be*(^F& zB&8lArA0(MiG+rVvX0v6Qf$Kg^YN#d41(A_z*x+z6#7^Zs>WK!f?MXPu<`s|5S&&( zlQN9dfkRN1y{iOTnAL&-9$T7h#DVgzG<}$czvSRRNVwIWqxIDB+eypNaGb)dpH$Op^ z05!Z*y!o+Eh*wD4!TCezt}+Lp6A=-wSvc5XdY`70`jrAaCpB-#wr@yc<>o}$S#zwo z5b<5RN8e*vx&F$6|Jwlz06DSs3DhsBRTu?ZXtoyEM->6GB%XiJ|1qLlc4@#z@v=AOmkE06t^+-MP_8J$f+J<$DHs4pZ<0g}SHGF*O}H#V9X zqwmDjKbiR6BhLB}4u7MmQr)qEp@VJC*Z^j=^?aZkajRz#{?+(FSdp|6%)kT;3W@RJ zd7m-CY5IPVj<&lojPVV&nFD?y<)+zmQX^bU%xGLiD2&8nV! z4&RWnFj-ZJx=4^tYEWc+I<14G*(8ml8M_^u78!VfJ}NUdW6-j(^;BVLk$61 zBW(oUFa-anFe7@HxsX+KAo<(`+~*8b7|tk4mv^njH*4U{WMEDUCVTJ=x?!V@0MT5K z;Zf0u@qNd8Q3W|m^`gv?=*|-~S*dCvC1mL~uN;>47Ur1@ z&M4a6NVz8eGF~|8oN=eHk{y1hl?I~eypu8muPANK`7W2fes!oa;4|*2p~M7gJq8@( zx04}X*#t@SDRKZxIY}8^i^yVNJSnPm<4!zVsiip2r50bO{tNxUqfL7n??Q&;c^cMU zq$Oo~abG4stg@_C$_meaR++pU)ev@r}Uh{6#C?P}+RpPfXhMp|%|*{6_?}6z63~32m#*g|eT(0(wg{ z!l6JL>}3O`mO3d4AlHULK4(;7kV{|zha6C54u_3yI0ac<(&@Ctg(|vgKB61r=%9|m zuWdv{HZaJO4fl&6(lt4=;w9Zdp)4!iO5kItb9TW|*jRyIoEdhy@nl<>7$xFRI%q26~RW(B1VLX zA-sY|-i!imuybB5g?`Fkq7|o*J{g6JFiUfBTNLj*1-t4!O>}vbm%1_2?Zx3^qlKqv z(~05t;P(QS*e&AE{hdNjJ_ZOxAYFpS50bqm-hK&u{cZT-+ZrFo1UBjN44x0HNV*qB z`TcboKdzU*K&YxT;Tc`D_&5uS6XAJt(89GyORPSsyFRz$t3jK;1O^XAUlpOKtITTE z5_{Z)fD5&tMXTjF_9PT+wtQI5~^O8swZ7lDzn`(HTW39-xbwYh=(!Ka3HLcCA zsWhji4wN+LtTgzJV!TUy_G$)#qA_MsPJ9OF{~+wXQtkdFYBD_Y#}{a%oUy@{#`k39sm*x$rU~77K1`_#OY8n&&Zq?*>;4Q zF~u3>d!wik8TLO94tDTEQ5@Pv^J7CC_%!{UPG6rTw1rjknjG^eVT zMWJurr2G{auBO*~cR6e^dxV<6xZfhu%a5?8gUS+dkPWQ;3Z%eV@oJs-Dd#za$2%&p z)>%_AG7H?oju-Za_A58H-Ku=InI`51X05j8<`~V5)_WZ1rhtxIF%OjaS5k2S4u9T2 z_VFuh;x8Bh-eG?64~)qTz1MKK!2XtQ%hNdGr@FU)7ohifwOkv4HPP&Hv;leP# zo|I;GP(S{`VMf^kOc&^0A)yG}xU>xVL<2Ag-kyZi>+1 zriSD-V9~E&{5r-fiddrE#S)($C7+c>p^=^FG0i8*Y~W62jL&1`VSi2I_lZXe-E#Ad zt=Qf^osaWs+(GSqr16k!Z+rjtK3_`hrKmA%gR0KAqQl(O;Zwi|atHA5afSjAXCg2hSfOd*M2C4XwlgJdH)jG7q@l<5)>n zlS-u7yzST#>2w3))$Q;z2`2tgM6!uS{&mPkW2S`U3gM$Q-4cldd$+?IyvIP;atl z82_8lD0bo;i&C zM%L)Oq7F9%G^`@yRKAWZQ0*E@>>9F+tj@R|5hj5MMKb8bnoOg1JupkyP%Sk0IK%ZO zp;A#L4~d2Ul>`Wv?u}cC@R7c!E?t!bY~tZuJLYtEW>9zfN3f~9rPcP=@My_7UM+c_ z4PTl!4Y%c_P}gqG1R&b0bF~hS4BIPAv75aGm%9iw$%<{#n;k0bg4+&r=oI8oek^3f z3WmJyGjyoc%u3g?;l6)X$z?vCVu#tm@;^PmbJTVUB1=HnF>Y(K%m z{Ez30NUH|M`cRN_dgMEnjCBIY_C8t{6@Q2U9VaqA4{bNdDK2V<1huBaUbu)BzYAMN zrv4ET*mx1e#5d+Pfrx#yVKvp6oJVnH7@zLYiaVu0-bSbgDuk+JcklI}O6}TL$#}a6 zjkjBhkZSlCj#f4_bvlM16mGzh9Z{Nu3Eo66c>=p=M~>JGg3`2~;vR&`$}0j& z)5i|s2h2pA2MkbTwm&Mgl4}q*Y*yi1WEDcr*oZW%Q2CfB_8UoEDq;J7f$08-pWNjk zyU3!I^@w=)e~ECzSdM!Ee6ZQGTG%ry(P3FPLO}Le6&;lul`vdZL!0hcL{?)G0OGDX zbM*{M##0&xm5ihCw;JrbQ@mPlIa(>hhI>AhA%}vt_Hm;Lv881~;HDc}iDe3iQ`mm; z4(>*kQOw$e4lFx_UV6JcP27CaUC^3JoMFG(PQL!`^f*M~=w%E0t-q{=_jT|EEd#j6 ztSz@u=Jh*IhBB33fifYnvVk`3CofrvFpm<#OcDr#EF1=>N+XO&u0dSo4P{ExjZT3w zm1&fzHJ@4}aN#|Kw<_w?G)q@=5s(k z8a>?wRCvVy%=I{$_K=C`O4@YDd_V~|n*nlXo$Mp_@n#QVQ{tHGfq|&$?{TAbfyg?S z93P^GK6(fY!+1dQ$u&4m-9V%98I|VS7*rBq_q;RaE^Y1^mgUP(;S)UH_j$SmoeN+Lrt`3P^-$u^pA%<4}_iezQ|`!c;2aS3 zqb#*MFD>L-ExO^R;I`TN62>F-;bi`zaB?_v?fYNcVY1GaXs~VGd3FoY;=Q?Lw8ZDm z_-E{7sn*Cl=a$x!uJ?jF?DhVyhyU|>hqb5!=L)Eg--Y>R4HM8478+ARc!DZe;Q(n) zC_hNH{cYmG8a$~z_YN}GMX3mSFz60CR))obcZ2cHDmsb(Htibn82K0hb1W`brHPEJ zDL-k7J(Jkwlq?x)hRLK>o=ra=iVb564xzuTVxVQt^BxT9dC03Q`3upz`vg(ISQNY> z5FGDSns5daeJ*AU`?WY^ehdXkWqb;HdgkpOVccUzz7P_kG6TaVdGut6$x~*)!^%qg z#2K!ufV)pthWKP}l97`WorS<7uM$`*f@lx>!)OdqJafRAx6|+1{UUQ_0rQ?mD1&hie9@qzi`Nk#EAvYrGArIT{6KrFZ)z zVxHrku|!MW0i~)r>S`4UQK~wieuw75L+@sh${~^R zu;5z_opz%Nwx}%mIWbUiX!UKacjp9S^nVK*pf|PDhnPzA4OYBul97L{=6XwAktZ8G z8!LgSTxs{_)@=Q%+l8_@X2WoyejXmpWYB)I2RgG2{%>Nz&W5*?K&$3@7cDo?k)13z zpjS@awGlIGXs#`Ku)X0)31D=!TWc4;z(fmb}>3Us7leaS8t-}E^rDc7feY{ z`FgwE^Td=J|CcF0O-%Vtn(|w}_I$&*tG3g8V+RUo#tY7dN!DCjaNco}pUau#KfRcl z;|I%51;$>KysWn|sI$i}0RW!EG>7{XAGHf)oB)=qCOsJSK0i(^1ESx_#+4!=BNK z*CTAD*K?Lbs}SWkP~@mAFIL+3Is!twT{C%GCsNIE5=>O4;d{u!Yd?@7SoBw?=B2Ltc=j(}iK*E-6pnkL>I5I3bh68NR_9@Ry zOvFd$&$=X~;l%`vS8+eILwlI#6q989Ak>d?o!Z~3N*792IyXy--gm?5fCVt6O5<&I_zsr#k+Zc_u$2^d zrnQ#{T5o*U&Y8h^v|UxQ@I_8~u>4%k+_ z4iTBY>3t977p%&5T+MV0yF~f#DWHW2j)A8bR!7<~-6&jWzCH$9c}k{oULWO6BBGD+ z^a+|zSajrs88yZ{r5Q7hs@8PU^$Pm9H65&juRozTMESC6qu!v$qjHTf+7Xu2laHpq zA<*RWyCS9;%`VBd)8X!$l;sr$?>G%TY433lMF6Vhe>+2wFxH7EGX zrg10C4{JPCx|w`rwIYniqbw8osaWzUDaY+YV{@In!!gbWtwlRVpENkZIN<@ZVpDzL zV42c%4&4X`+}=mh(P_TLq=z^~r@^F#en+Vf!MZM`a8z{ln3n8M7`gMHcU9*9%BZ^y}x_URly+U&@KnlWaf$Vja!;kV5f;$mIM zkYc*9Ktq?b{oizCMSJNozmMJG+o(r>OS{h+1I|87ju0RAS=LIN0qHPXQSEVe3CpL+^~{*$!V@yq{_t}S@sB0zs&r|mCZ=~hY$EwlH(sZM zE{Feia4+<7B)`L=!RBAp-!cm1@~v(VP090S^M-^qQ!$AX=mee19goX$jx?0 z1vz1rG&RRY%c@Z&BWuTFL#!~hE3co5Mtl=jm@)1MNWND;FhCC;oac&^eiTmLM#pm^ z1>bBx%dBABk?pi%7^m8fWz%6^IL@Mk66cH~E4LPsG^^C~S6}IGFOs%*!?ce%3e#Rj zBKRT3PdD|m9BJSAx&TX76(#FS%>Syx#s=J7HJFmQUkoMTTZjFv)pg=0v+6ACWd8Pc z$4<%L)|jTIEVnhdHz_9OnFlB#-`Pt8N*x4NW zVls^E2@~^NFWBvO!u{hhCO%_iQ*R8wU`(uBEraTR6u=#Ifqhm*3NT|tEj?B1NiQOz z^^JIeY=zaTQ}{WvuhQ@CVEm9dbP$eld_9riEw&Zj_*%d!47m5WI3!!cjKTylbyLvf ze8f%E>=tC6(;A5G8XQ2nek^ta6{B`49RJ&PPN;wHP=_POYEl3X;|T3WR)LZFZYHn| zpD+yb4H5~%0N>A`Ufd2FBa==Q?_|j_ejwkwl)!%6`-N5OT#>WgLrGoZd9+Q}+8#rh z@GsMZD~^w%@8sB9*=NMY^~V_Zz-XQjY4Q3j+cxinI`Su^tgglR|e2w3ay}NO^S2i%0gyUp ze%CFtcwVXmHjw|w%=PepH~fDa{-Y$_LnW)xKfoiT=}WZYHTZ2l)+4{a!-EN$0vqIq zb|qh3L1A_U-v2`dBk@BY5JjqmzQ&QYiVw4gf?rqlMtNl)7#$vD=BR zs6{r?DNP;6EHV)Z*=|IXK@3;#i7b_%FTm~?1Ex?z+l>iD=Dt#ss2mE9$4&0i#M(J9op8k)W>-sGhd=(?(1rC(p9EQm)&&x z8vi^R{I_CkMrkS0;ID)|>O2>D*Gf0Fc67>(8WFcGqabr1EjIB@?>6+~f%mL{V=Dq4!t zKB>o}bI~z0fA_n{arP3t&d<2pWSW4RK zs#fxMMHkX_^tu@Tin{WLW90C&@5UV+z;a(bl+gd8Qlgpir zi$%q_BoA^WYQfJGgR%?*`8P%jM8gb2{5?d@;*{3A6OShVL!;=6UicVbbV4G0G4ewB z9^_YW(0(smoh_&8V=+}*vj)DNMu^l@Oj1F_UDNW%c2-8>7VR+Fwm@Qa^ z#8$mIi|LW{_y%!szu+?;mLop@Fj8X*@P1FN;Qldix>lnTHMTeFDRsE8E3+wcQgRt+ zkp~R;l}M4r?uXgAk|L-W2>{D67E|)ZZIf(jlAO~OP0s27irkFqMH!O-sO&jzGUpfc znwvmFk(?q3k&Gg1k90SxEZe5Oip18Yqq^%o5qZrRS&o878NvA0TXX4auVN&KzGC9| z_wur-YuhQQYa3D5iP*$*VYrL>-*wi4s~4x6&%+w zye&GC0QE#eHbGrmp}6j9&84o-+0^y#xzx2ahq|^(>e@n<>@oyGn!2XoflkSgL|}xv z40UbC_4ifOb;T*EYoV9u)FpzbdHt7?8#NMHg`BA?#4=iyp{CVDP4h2-*KgD7OY!eW zg=pUyf~I0^DlO3J6keQ9bs_aU1Emc~J*#20R(*)I;ZbM7`LaKlk$!~z#9Qo^9>i7y# z$Lch7d|5j02uRy;?QpFN>Nq=_I@-*VSSvUXVnKpmD8>^4OM%6fsJ=nxZ<5^HyF=2* z)CYj-tx@zdDdd7cwn_r2(twdn;&^TF+t8N;F-;5w@QEP41wZF&uC+uESDdPcKoBWM z6bR~CVpX1GkkGLbSF;}6r7RwM)S}R-OnxR}No=GuM4`DQhRwVK2j_ZK5|g=5-flGA z7-geMzA8!QV?;V%kfc)tfJAT$M)g?{zi`1Sq?E|n=4P-(QELe%8Yb>G@tF^&4y2(? zK$}ug%%U%1BYq&mo079hC@Rw4drK`m^YZ}tkw+f+zod{`Pxa66hw=07jkQFFs$~{|$2al(X^Ek3Y7KWx~pMKPp?$mj=${!VxHh}6M4)X*2fbz=wgYO%zCRX4o zb1ILQ#LFU9KHe7_0`=r8KRS{pzSeluYyN4X z3|;s!$^7#@lw3(3YO!F4vSfXpsK4Bo6~XWy^l%eOJV+L(sv4|{(zGp>v|$%oWM-82 z&&UKuVs{n~&E3_OMLkv)4tB~YhMqjJT7;A}7ZDl_67r&a6`j6Pa6<|z*TFDVl%032 zhKYn}8yK!#X)d1;=L2XjDYdE7eReF+ZIUsf06%=aeORU`%Vv1(Xtq(=N+2s{U85xFR9`eKE_Jtz?>qY)uFL#_rD!k z_1Y*;(29}eQwgZG^<_??cN!P||(AjbRb!PDsa4Sv;)l*Y|V zY0Sp^(nqVxvNz1y8&5s>&+^lQF9_O$k5$3IF+dC~kRxO5sCJv$QQxsmH!3`O^1cvx zcqi{;z`0i5gn$9{FUOc`rSnSbRm84_kyXJc^2o6C?B8(t2um6QsB6 z$SQXHuR(r_{`+MAOE**J+inq^$J=e@id#SxiSnhe=<{8rW%gS<5&>Q)tNDD8%D1x_r!};nN`K>aG)*w zM2{K$F6w;y^5!da`?`J0>`Ih{=TS>k(R;_JBBg1l?1^c}50uCI9P-iOnex$+k4gJW zO%}z5r)z8yrZ9M-IgwIdh0Obj+*ODylT&@>H$4uAObS>`zA_>_ijW3w@S^kb^`1!S z8j)_HOI;zd$89t(`;M&@joqMAr$^j-og@fR?l50#1)3nT@==UrBLtIOj~V$wELm4+ zzUIg8TXD)lIC*m3V0W()0U=3oc=06`CC5AO5~2v3;Q!`R<4+NqkQ>)r0R4C!Wxamq zL+3#sKfl&C%d4I$&GI%-%Bf%Atufz2Hd9-^#(8GpKUJjFyeW!-d z-eyME%H}tk7huzL z2H$sGYsV22&Oj5q3(6@Z<%JlrF;V7-pAHv3Rz9{UKG>|i!45-?9x<)37yMVt5wc1_ zj%oKb9+7U}Y);XJzzpUw!}dgDA^d9n`V;IayRJ#cKbw-<<$>ugi~bJm*WaQ<(wWlOBN8oEbpk!jldlyZ=?` z{txWe|8Y~&{qK*e`^n(}1osj9;B#~RNc=KV1eC5kf^l_~r&`Ph#6u68RmPgEMnB02 z%(y9V>r#F?V#y6yz_`(kCt zv46b$?@qC-|3t65X&f5#_ogCNyq%?v1! z=hJxy_tMnX5;0pNrt0UqWt}u$kjR^YS&O2Y-E}-EU2RCT9(gpsPW(zeeRdaPz53Yck3A4Lx1de+hdrk?JSfw5Cy0`DS!l zi;yGaKOhfHW^bLAoh@l>&C-DI)U)$qSd1uoaqr$0#TbYHn?moUv z3vOz7-Kemdb^-*y9|Va;nbd*@5SUiMJPUfq*8yi|UOw5fN_T3>ah@>WnG~lvVcuH) zjmA5}d>t}$QR9XHSM>6$=Z{SH@F6RI63v<2+iT#jSYrK;REM@tA3X z7i042PM?-Y`BV!QV7prcdmY&D`><>?I%^$T4F)2?_mm}tOubS<&UP2-FNk0^^p z{ugnchO*{t)D67g7dDy=i28s>h$r8{pr*zo46Y8FS3{mBFMdXtJ5?ie^pA%TJ3MNl zZ$KvqdYW>?5h27?GGEXOe zc5*BxCU7fp8GFsYl0wEla6P@+vgGP*l}q_#92@x>8fh`+&ZD{RODFg{8ZrbmiSPW7 zIR-zFrj6UoU*2d@bdgM>C$!h!f3jbFpB>4rZ_-q(U1#gM? zN~8&Z*R(l4w6s}G3YUOZWyupH0;1_QFV`uOAHTeT@VQ2i}2~vAf+I;KMqzhGH zNcO*E;@|^&L-ml2_#|Vr)bk>@VBGFA?zM94mwBr=$e)GTbzJXKRl5amK~9h-RNBv9 zjdub~X@v2a1!o{IDgwB5p$lavZe6dAz=uv%#-FdqA3qvKQY0QQL3|znjV^v zL+@q23m--^ELQ^*sX#@x_P5_g?>enaMN0{3?BzKzsYQs;Ch=gI3$W#ZD|K>$o8l#v zj&!f}MGe&x;e(km!NX4zc)bW2GG zKBKH@bF3(_+Zh|4*zJm)kvN=3PN+VNJS>ggdxoaX->qgX8QO~qA53F$9|aL0EPkFW z?l9-~I>u)N%%>?d;W~-fHdc2pfMV-Iw&ggY0OCb`l)q2eHvwt(MT2ee0)(q=joke< zT2lra{B;;t^D2+9#}%o5k`yQB3#LTo`s>UeLqUE9#oFHpSl)P-wHCL;8gs}Le4$b* z8H>POPYx%2X5ICuDCk7mGGZDIp${0o#$iJ2G@k@o)I-coAMwzXWdBW;tnipWok1U( z%fiC&r>1AHxdjWsOC*ScrqQ)mX8TT7l;QeL&IyRvKFNoGTF)xdllPS{)ZS(fID74% zNKZm`{&2ousCy2{yyUq#+JAaHo5*yd>VQs9cxxsQY3oVrXS1A9zCBE5-pG<20#0N= zly~%uf*miUCJwtE0ERK#*+*ekFeN5jV~_-QXZne|Q*?!QhS9^83Ev@Ldrj+DcE6^4 zRln?iHoe2dIa3j7V29c#XkNZe^8z;`(QB4Oj}g%$Gn@xKNbjzPrD#khUJ^FCQLOmD z1fx*;^sZr>x|x-Nv)kqYcWQ=*u zVe??d9hPp~TgsHDTKSfwaPu;MtP7$S;#-hbF4Tqc zb{5*iYCsISV3Bw2&DtDTQr&AikztkQlnJs1?4f_6Wl_&NP*aR*VxkRvMhT^N!F?m0 z-o-;a60w%=_%ji4zmQ&^yb}NzAHw+E@ck_Tq|tXn1-F!#?*SOn7M${o6ORhaHae-8 zhO2A?o;`}lY#oHU=JwBz*v;ML&sAO}=9i(N-uO=`2Jee@IC5#FXMPLwKm0YVq0#`@ zq@vQ3HL(5GGEz~UeVVXdB<5Ts8^Q2m=Dh^^Ryx;4ZT54LC$A)vHleA;WpxL!MH|fT zpKcxPB_`e*AWh(h^m#`)Fm7EV^IBMnosBb!6L^vGNXyTs0c)jQs`Y zjIyntZuZprwSCOE?1RfZAd>Jg#TZBAGCM?2en@IQHe$GfWUY_2hl*VIW-Pu*w1Vt$ zB>&!yQ>oTYq!;@y`zm^2`?FXRP`eo%%&69p&OB;6J#JP=!AL# zq4;%yAQZzTp?Ek$C?2*6#eO{5B+}<&>1*QVc{>ensO2=5-M}F3~pg zx5OxIQyyRD%v4X#hsI+6)9JktNWi0#(uZ(IC^L6QsS+%Su-y4Eq1A7JULa0bD@Y&CJ!t!x9ykfyVE>YM0}UX zGe)1q0g&@xli!NCKU~)MsNEZ^_7H_j?qKO0N{FgvV!xH`*kt~;$dcLrV)ww>ed80$ zvQr5>T@34X)}N11HauFlljX9lN3Al`aoNrqZdvv~$$VIhE6P`yE247c&Q9;$bNywu zW2}7)_0nmAN&KJFPFd02QChmo(-Eg{#*e?|`WaH3SwEj#YOkO5V@|bx@~-(>>xXMq zz$Ph8t$?kqS@$1`dl8$cB?@32hVfS~wH2wl$lG@`{ooY(>#?5FgCeIyd5O|=Hip|7 zTbAf^$3~;e-4LgPR+&i8htp+iU+oY+>�EL)xt(F_u)jQjn*3 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

    >JknS(=&#fE|pU3|iwC zjw!KLMXBZc4g@P!0_t~lChmsnKImUzYU7*>U|p#LJEnyF{BKiG=0(b3S!mPj%c2(_?YEk!)uIQ>FeT(gSeqv&<*p@3yT8?{6 z*LAIIUd{Qm)^($y?_N2;;g0Jb3{Gcg{2b_Mrjmt>E4m=qzoF%lvUL5o^G}i7Lc1?m%L z#)fNZ{I__y;z#hWaP@e@$zacrX=bo`KV+7D5QSHt!?TZ29cRiXd71II@!u1=&kfqr zz2TR-bjQmFASZ3}n+hU8xl;^x0?pE;U+{V-enAl32BlP518`-MEk|*#f8Ih~YHw`O^GQ>t8oJP-7kox6_V(p+sV$BkYI0vSHqO~I zH!b6%o7bQi^h0XY_Km`61Ev!0=q&rDB9@)wYjbgh z%B#;d7HyRi2MtPnQ}zq|Q9w2bTke#dDA<`%n!_CAX=v^dC(*@)UMRcCsQ!$(Pf&)^ zVd-E>VFw_W+X9f@vVzbMcg9@*bKO!kp`#lGbeeB>gPtZyjZK_MCw^AK1(#(X zmzeIlfY&3CK&*0ofPv2S1dwC$W{OMgp$+d*P2^q7TekQ`RbOzCC1*e3;h&LQix~55 z5=1qdco@RkZ{{?b|B5W1v*owQwAg^@7vP`K7&B0&+6bP;y~|y%3#laV=Wu#GrXd$` z(Ya8Y^U=!)bO}2&ue^?WElJgAIL?>w3`~)&4uSzkBlIP`v?w)NftNd`bPTXw#K8e0iJ)8J&MzxR}P-RO~wrN;10$40V9Zt-@#A|Ypc%))02fBYKJ4FE&QMy*yR7leN6PORApyd_Y>gZ$Tb_J> zCM8tLRQK-jBsUB8JA!%QUpbE|Dqfw&4dD5u7ziQOiAT_g%96W>0X36>@5bHTPJ_ zL*7zIuNHZ6cgyPebPwlWxgRYI_oJh>AFbE@=t7V?l3E|}jExbki+YLs(~H;$TY2Y| z+?k~Nn%;_C-3V(uLgHa=Rbn$LGoVP=T+M@l0H*jG|5`$AqPBmCul7(v5%|;_}kUIjsHBT|&YjGXz zMdL2B4sPTu$tM-1G->CLf!c??F(2)S91k@wi%r%@j!o+!7%9L^UqvWTt7Tgftr*@? z-Jv!qZyn6I+$*}_?qfYxGU&Ggp_Haq&Xn7KOaYJ}ffDNoo=E2yIbK}w`Ml&#LnY#I zd9z?=p)qy$QUkon0q})-HnoULPOv-(sh-sx{4!~k;734uylw_ZMDldxvS5}6=VzS! zniw*abH9l@6OM%%v6Rp+BKxsYt6|UM5(2_5v*v)}G#uv|0fZbVtH*`wP*BRBfn?a~Fd z%VV&v+Sc>7D@Awjg^2_f7B+1{aXs-VgYEx+*(}oxh}t`h7y6fA^gX`Bn4DS?)!_qY zIG4k=*!F@4Wmx$y^6B73;((b%8m@vy7HWOQ+r&>}!Sqq5Kj&x}3s z%lwbauQC(z(12GP2(k@dvQZG*Ku%!1KVlwK(ma4MFv3QdElzGYyK(ZIrO2nIK1OM{ zpW|^B>43nuUnD06L-XtvLlfF@kW!3><|gEDhNy{O!TyQ8)B6$YrG{t<1owT8c0|N3 zE=#C1$w-93Tt2po4cwKLhwc}!8Pr19t`m% zxx$jcj>IYr=3rE;C~V4O&r)^oj~Xcpb>nbDJ$o9z4@Uc}E*WVX#0(0L&6t#9SJ?_# zwM|%-L^`~nX(}p;fgVvS;gaa&v{Ik-nt5Eo>0? z%L&Jz70mGdRE(p=;H*$}#9CSj7R6Z>Cp|S14azJfT?3K9)eBA{MC}+)?3R!RSQZ=ms&#tZxhXfK$1dX%N2k4hb1&uD*4DA zR<0*J9o5~fo<}6No@bwjxiqyftU>_8bcfB-m?xKDY&NiP*9DtnKSUlGM`s!15@LTM zX{Zf=9R`-68ZtJ&K}y7ZRiUX16MOBb7a*PRyFmEfji0C6&rBwXEiE~plTaYQtR7=E z;9=$*L7^UhkALoWnRIdf?oBPB@@-LUFGU4bRt^}Gd3dL*5#mluVsf;+?BfFa zkxQrVjouSr0cAt1@z?Z2um0_ZI7LV$F>W{yz&tT+Qc-mwi}D<5QfBc;(0Q zY;-%Kz~}Wy(JPu~rDRp{nfG&nN{QF2bfanP@3UmcAb|W*OYcg`JzTl|Guem%g^%Tc zu()>9?a(BcvoHvpUcj^0*_b}5AD&(u)Cc6oZ2kulw@g{{53+zyVyGh>@K**^L008) zSY{SA9<{nkA(V@Gf0^i!MP@ErL8Ela+!}zjwEHcpYn=N<7dQ`&yXK@%n(z;is>0jQ zY**o42_S2qwt&^&im(Rw(Q6l!`KN<8b#tbD6HYdYpuepwEQr*U?Y^=sh%#Y3S004} z*OMIbW>~&yCQ2%I<+XHc!k;{YnDA;=esGS|t-(TD99EWky6i$K)a|;qa&NNUPg#j& zItQtydbDWF9ngY7N2i=6BLKJ_g%1z02#QF2L6brDRqjQZc58+?WYo&;8yFh~N>*O8 za_oGxV<{mgtP$E3EiZrB3JFocastm-IQZ$*+#UnM{S(9iu5Ja z{Fqs82J#qIHKzR=`mn1M&>c`Z69|M@rqAm6`bl1Zo4WJEsk+`);*IL{Ko$XBkPIDQ`MPWhF10xXXAmuKF-EO^CM~Z=pK(sUnwPLS?otA@QprD*g z*ZU7GWd5{v1+Wg8Bf*}BLMgDyus~y=U$%&tb8mf6LpXJmZfOqVKimx&Q=-yTo7JVk z9F>?f?UE_4J{_q*E_bFq|1{IDo5G^M6k|-4c#@}=n>4KmrD=ND+GArNKH6$ItW9Rp z$0bLdD=42(bQTuc4*ZyW3QC(`gK+T=f?Pt8P))vtnU*}G$c;u6DyM2?m!x=(q*(R4 z9~)LulzPxXxfNGpoUte5Y;X^TjgWR(sq^~s>Nk?qSZ;SxshPym0Mh=4&+4{tj(d#C z=Tb`DPTjAZWr?zg_&F;A+xherRppT2P_m#{AbZ!Ae zic{PYXouPIX+%fvr2xhSk}}s;ZEK*JToa4i`0Bn~JX4^-9dx4rn>es-w`tw_LIV=* z$F*khqF!R0vHS1SU5xOjA&%WDD@+z=K^Rl$Bs^rB*?eB63-MQ!cq*kQV_3OqpNA{!Cuaw!PlMxv}?>O=iAn-1bGIUo?# z+_ZJy4yx%TaT;t{5h-<5N>xF+0NDRfLkG^3C%z4f=qN0rc|2n=gb3xGqk`ZRG!+>( zkyYNQBOqpTaq`_?E&MCDIl`GkK8OP%O00&K!7Vd`<~#*O5rBCuh?d0TX=s?M zX;gyB_*br^QQ3ag>;oqCL+jE0v}`|b(?lv@MF|V2wQSp4Y@Ki1lUi*{o7X*`A6YVm z%GQ8OVNII%+C^ClOO)w~V2ck7s!AGEkD1(cjIe|EQr@C_lBau8Qlv>!8B%K;m^PZ} z>9QP*7jAm!>F(Lq=MNdVbp|Lc^6Ih+(WesC)QXW*ds%Z#@_@XEK83Zb%>`EY#ymH^ z5rSZ~kdAGTUXv6&o)6^8D(&|`2kHKXr0w&0hJl=?kK6v1m&}XpX%Q+bNR^|ceagh( zbO3-zE8gGj)ar@ose!BbI3yPAzwC0|1}K4%di%qaly14r2;KGIY{*87npN`xvnpaz zf$`+$N$SPGrobue*$@mWU^C(eC)aS_(D1QI9s4)&;_o25w z_EHzFLT~tN7sFi$v%Sy-vk#%4T=AYRp8O_W7%ro-EIS<*P(KBoC~Rxu`gvW(`QsGV z|1BeOXY*vU10&~gHg-C!GJ&02(V0NkTy=jG)cGce{P)|lYJ@7HPN67Hz z3HNLci(s2tXSp%|{4G9!kXB85>RTn&CLOrB6^eM5EGm}C5JQBJEXWvXE8X2`iBF)z zO1%ssX~lD!lf+EtF54v~g5flw1&~l9O`0mV2Lu3J|IoYV4cg|?m9V(%TP5nuMwpVs zToCd)_OINbwCSi-SfWoP&5uNY7U{}6tPPh}$ZQ48gQS$H_(xsXbxt56CW6?k>v-7G z3X%;;(VRGBUbU#E-O8A^3n@C`8*%qTDXIB%O3tBZs1+mnu0FE1l|9AVY3ujw72eP@ zx+tDr5)$e>Ibzvv9Jyg!=?y*oj4jzE;gWqumlb8`=iX+$ z%(LO@>$`-emJGB1Qg6oh}{b^PTs%n1CjT>Uvt9XPDCyev)bJ7;M?mDFWa zNjs<%U?M52;zFWfIjU4`5uyr@3|DDYM#P&+#-F%2s;mCOD^=*z34MtlR?%RPM_oR` z{Ife9*O}4IQ`a;DgHpQ@!6ktK=9JSW=qrVwld8>!Wl+D0=NYp3jWC#W>%=HW3`(;% zbAMT7m-8o^MzBBZ160#v-?PZvADg#GQ(AwlkL#v=iQ3HyOy7iB-1s;#j-|{4navKwT%-IxJt!>x~OfcAmdB5FQhZ=p+zO8 zd3|YQe6WWq)7YWV6#?GS3SegPVzXfhh+T~jws6=LIlegHm>Qp0B(IKkhC_kw_5aA{ zLFd#faYZdk&z%!Z8&$AwU!Y1wk6H}bpl@iE>rD8UVDufJaoolFn88T897&O=K3R+b z@8)r;38>xN^D@xpv(3=gT4`a%4f;6LlTrhg(mwoeiUzgL2m4H25~Ad4tL zsc4&H5aii1o6?DS54Q@h%aY{_t+zmr;@*JD@+het1ehfW*n#45CFKR?GbDx9uo?&1 z>D&Qa?@SP4+$_2~m3d-IU^%#p z^#z2_QO0B~@=z^cb zIay`y_U;gh4?g+RfeP(b6$+r-wiJ`dCsXuIMAE$t5N3i-K+~|Fs5s#e>?iP_@wJVn zcvT@TwI2?J>Jz@+PI<&@*`EcrbYtPtEiL-5DogZe&>Ze>QYnHdMc1$@N4X}TWK3x} zT>%@m7#7YFN&+ECx$SrriBNna@G{?|$~&QEl6xAli@(EjciWOzUdVjdWK3;UL@s9p z>Qv+~>;VqcCX9v4R~WO?ZDdm6$czg{X5$qO{0NnKe1yu}n@__58nMMJG%NF=(8?q* zu>abW7gudk57~<^40T;~Q9;2qlqUo=qA?5QEk{G?PRE3$DAJp_xJ4!q$)b&I$rN9+ zW#y}&esn2oSTKbr3(aFZL)+|yJVGi={N)Y=vpwzWj|3t3oz#N<49BeEPE5gBkCX%! z@mgqj)lNI02XbS6?-9D>8Zjd()!ze>KoRD~fAA3~*khnAN(rD?K~b*oj-KgZ`d&Ly`hl0}Y` zoq352BF^#%6?q~qfX>S8)o{d?Aib>-B!m}ttKZ&d@%`sh3>pS@j*k zV^f4c4l7^8HR!A!q(Ie?-W6)f$)+jmLQOg2zfDuNnx>o^YD)JiP5CwvlKZ70taGnX zzs|ZsM+QDO2p;DV@=Q)ONZDoZJ?dC*lMx7Q`^mU+odw}}<%WmXu(mI^N%&JV!b1Sz zRZRHcnw(dpT$98yRZh*`GWNc2DW_x%ZD^TND}SWomqsT^$n~3CfH zyEri`23j5=)mf>0Jh>Gm0UytpSy%IceJ0tIdHDFS@_|*s5j`(_VAX}J!f)t#A=a>9 z)j(s>5GcXAO2`lxp#yW24y@{v%J`LSn>~z%kaLH!owXkoGO)(>Q_2Gt7ap)XIx8AL z1lI8S{*Wec_^(R}0!A?TX6&ZFmdCFPNWnzP8(!ZHwlLBD&iKq+oYRc{{LX|Q;e?n` z3AWHyp7gi!byy5mSD)|!}}sX?k>%Dw)v*_xhATT8;p)EsTB z*^_BYC8~sUb6iSV?M@E(#L^)1YG{|Rxib@#VnQl#13>wkN%M++%*dp6S)1%7O97U4Y7tFEJEcZe0+n_qPLVrC2{{>Y(!)7{>p$pk9R7Tmcm2 zE*julN~N5!t$&3*{+w=XNcBmVOsDetJXmO;NL$gGv$b59&|gDF~pfHGssDWfbcnjEMv@{{AEc2J+?D8wrSb& zq^bB!J`))yG&J%r6ot&6dRe_5ghI?@6=hb9w%2C-k- zJX{cXLv}6C74O1#?ppu-w`oaYZcpTZprZw1fj^oj%iuHPKl&w}75$N|O~t=ag!24( ze9qOT{EwD@X3FK3@XS@@f^dvV-7O&dM}WTT3IHQ(K`{4;@_0<5V<2x%img!z=&hp` zX$+0#`jPs@j?vKGiv<u( zD%oDa^qR&dU>fOD=HoOA4J%djW*!9@l5V8s+GkQJ7Fuv_Wq1`4`+=Ahv`XY@|1&Q!_ zZy>@fwGBzFeG?K)x~L1Si)p+}wpV8+RPR03<$awzOwjwuSz)>x3S>*3J^8|Nk9gUy z2a#-mYLp_-89VV$sTWQIUMKNi=K-kPnOAGvLlM3G3VkAKU1?$Oo(1w46E+hN!FwVN z**8b}N$FGWN@~NTct-?$KJsy|k325K`kq)wV!W*->?)^-J)SNuQ zr^II|#m8fro)=3p?Rzo{R{L{!zM*Isj?1AEP~VsO_Pno<2YqcU#P-vLvpggEc!ua> z7YyZWTRX9t&clR>e_TReVmeguWaGhyO0GgYZIpk=gNua!KGRwD=OQrqY-icegi7pj zU(d=nWowBT-kWU~=X0o`=TI^1)%HxgF!~4!krJlV{knA_c|jpd6@pY;t0*f?PC!ed zQqqHQzbiXuO{Li1TA%0jXt7nWD7eQf^afEA810SY${6#>)Z1h zEUA=k911+FbXm$KRn5 z4(Ht|ZILJ~1J9G9DmU$4S}a89k3#**pqTn&kuKk9wA}%5qQvKm|Ez^2awv-u0K$|% zYN5fqH*a*3EJD-3J7bTc?BX8EPZt{Houq!fi&_v2^3AG0En#HUcO1r1F#^kwn>MNi zw4AIGy!d5p`h1cfJTNVY#t$mlG>0hIz_a9i*UnY`>AhbLT1Ef-%XBur|7FAw#WbDr zkN6H1F2Om)U%{7Nk1fEN)u+68}k{x9s4Nfia)`7LX!gRy)GYO z5j6MMp^?<}7BUtERy+o0viy=wvb#Bx6Ar+XL|E5XZSm2n9O3@GYSmk?kA9IkqD!JY)yYFkb+Hs)lHL8S_5xo&qLx6QG55%* zJ>Wnc_p2N5lJ2|Mo;>ujg~S8+>Lto7pEB+87ZkmwX+jZvM$R8+nA}&t?c~yPW+GK6 z(|1oyfxlw8+(`XEe`6T=3`e7XL0UAbd(QE3rMiZFp3o zhY7)^%$%%7kiQAaCje2hvM+5Q3IbFx;A(MO89PQKA7)0kRm7#(k{`X4wgm}OOU3O% zDz3n6jj3Thvm{NiyN%;a&n(p%ye-D;pF{=Lp}eAOtZvYU<4d-g=G+Y*3= zvo+7l1qEAMK5-do8Yiwmxt6s6@Hbc1b@?AyUFm=5(!S9X7uz1a#M+4vHI$Oe5u!P9 zg)z-K5;1W80>;x{zTm@4WIl&-a0)D5?P|dOs1-_o!lol!U zRox3|ZByBAupiiA`>}z`PAJt;xr<44#8E+74Y-ivLtn{jt~@M=2W!kS?YEs*Ji=ZNb(1%n> z$}$&@92ug|R3eY(KX^u8&A-89?tHufidzom$;0BGao0E*3%P)>f96)>3?YazingF6 zUKFe5hFWk7;Wg^bc2-EKa&E0}Lfw~b-=NhaO%g)s%gotUX%1v#(K_ru+N@VXZ{)`5 zG8P6=YL(ZE|5mqNZ@Fs(*Y=Y(=2X#LSW8L`m>Y;XtLRN_Je-6D#hVh-_2B^B|JX>V z$9s$~6}7`owv*{dSv|1#ZYB|0Q=&d7I2ViN>!G$fiQ_hzciO{EGAJx(Ejx37wDx9* z$rO-?6OOS4@-iRQJ7Ok^pliW@Kpo+(3b@ULQUPB7)4sj>_mT>G#9xcC`y_Gr9XisF zf(vC2>w=u@KG;4GGl><(_Ootdd*0%-y#d2IYM`9h8pgHXFiBv(_mq0kVDcgR`O7q8 zg}uN(uXS~S4zJ*v$3E2zlzA$VRi}B4(g&op1}^cH5uL}y@G^J&EMD=cJp8p>FJr2} z!4xQM&l-|42ww;usKcr$q{JrnbV}Xv6G6m)uPsF=Kq18*)tigSWYb2V9y*(kB$q+^ za_%F-(CAF-`9s=1$f}S1=RXv?YzGdL;zVzY(uTm_ul<@@z+#<0AXzWVCJVD`kJglJ zHW0>oSd3}*7u-U}I(Hf?z#ruK8x?BlUl`;;-Nd+Px-#}&($zv=h#Rv%uhV|B1#w;o zCVmr#WQUE~*BL|EEDmpEKoC=w9Hx7T1Ty8u_A82ox%7VYG(oG6Dc||LPQ1fcE$;X{ zEbi?o?bRzQa?D?R9wUgp&Evn!KXL+d2dYP4oNq9Qv?Wgj<;j4^R`@lh${A|ex$p)Y z)Xobbvztwf3wrW5X_tD3RvPB~2JG|p1a-dDfWf2mNO8_HYLZdi^AEFJCwfcye`Uv+>MOABS$t+4rP~p zxzLJ7wqer~TQF#o&F;M@8AyS?xa?8BAG#ytf+C}M(<23Hdr7>k>}lRO3lzL^(tSq; z8Id6GrGP-4&jQ8h-(kAtguf2+ze#~v{?yE{(aR8^n+1RLF+5@lezE8$@}r4>&rf93 zpqn&v7K7a>kPRJCK#eb4saYi?n2R@cLa~XPRCY7XVd*w+eg4-eu0|$BmXr5lbiC8N z&xEs|qu@~&}1U1DmoT36{ldr2uL0`ROk(F}X?D>mxQ81>m| zYsV`erM3P%PMd4ovQ3~*d=aNUl}`s{8j?YktF$0M^|XquCgW1D0^()wC4W;+YLtBo zxZ-BJnY7=_wI*7VLP~-PN2OX+VpsT!59y~as{qdlDJt+nO1rZH8b(R^y!B*v6e<;G znJ!7l2Z9#cIKc75*9p*=Z{w4i)yiAt9irEh@r>z5tYlYSeiWW4?1 z;4g$hVdK99RstC?I0YTb^_nv(J9Z3eT3w)FRA{#s<*_b^IPJG3NHZ))%gml~sXgVh zb}fIQpg(^zA}woily;fe1_YFljpi7M!*gvSIIBYo>~dyL>T_)*$!00|Gmx|r&HElB zk@T&A|52b+k_by~z=4&xqL^?EMQ0jnjyEh=TLm(hDgbs8coABX0|F2WM_y~N%0H z{c!Sg$@@RIGVre+T^#yXU;Fq-|H^l*?)^-%DR~bZt07!_G1v+k+s|i|grTwhWuQDp znPc^$?^q3Gi-t4p$1?4wvbP>6?_5$r#|j-qYffj{7K6~Dq2`UOwg<{8cd&RwaKAJM zB#seVoK9Src+MQGXUxG`WDeFt=3vb=2Wu8TkWdK@mJAlU_Q+s;5Wd!zD&+q&9c@zV zJW!?q6z5B&q&$JC@@78G;0Gdty1pOQWO1 z?gErQ@7AIFGPIB_pgmqGkyr2i4@mr zG9d2ba3E_wR;o=Yhbbq*Lbc$-M+WIrltoP|w4YvzSV{?A z`QOF_qo+_smsGXQiK$dG8Ed2`ooAdZCe+=)WN#eqwnN_CfG>uvJ6vJ>#|lrS$lfc5 z1=5rvVK+Q^4S3W>XK|MpV-dMxtwUC#kZ^Nwc$`eR^AnQ;hArRO>oRhA8M0Z#<=A!I zEy}iwO+^fhN&no4oLV-~WWne-ivMZxp1momT*eV8+z)Vm3Mx_o{Q8g zIosQL-9>iY4!f>|bY6!dV~=uy`jtClmSjul6-gRu>^HL|1s2GZZ1H*Sgc8;yEo;um zm`>$s77I4Sq4VeMH$CbLc9VP|o~oqYa>Y}!NOPab6T6%nQ?mYueFeTIjqVJ$;>M(b6``gz!VS3OXJ01~7M!XtsRzRU=w<7Mk9w1IQK zG_f=yBNhF5t2R!Ga*nw2LeHCHvt3+hlqNOQ2S~}YEQ?&KE(T(eH0v*!aefVFZp9*A zp~_967V*S(3%ptd#7>=7@_{!Y0pJVpEX-&|ChMk8GJZ9wnjZ*8-^9QGjRA%RB*`ta z%A%}X@tX}L>T`)=aG<>9q_)TGX((ZzI3PU^|rjXQMJ2WYB!ltFq zriBNFkTs&7(zp~49k4^S(Hx<_A4H5SO_-iHX!qT2_Z_%KsA8|pDR?hsF`78>3xEFh z+7#WUtCLg?NfUE;IwZl*by-8i><*&=^Pk`adjjL(V60;o&A(y2ej50MUW~kXI?}c~ zEv%{=m~)|I%Ko?ri~>}RIs*HJ;BztOBYz^TRbr6il5lz>Q77fld6)+ zWmE!0wBgJ$d{DgIC{qOb^HTj;m3mC$3v70C0;fEcv^yH4vvzTyxxU80X*Gq!F&nHD zA{Me@I32WgwCR}t+c;u;@FSy4Nj3NZ6{iD_U1EIt_e+4{hfVL$y7HEAhc`jH41xHK z-{%7FRvFx67jf57M6B5T9OhjT9L0yzB$3}4h=afti~G||c5PLeI1@5r&JAP&EuT#$ z#C5TWYf7}z>!viI+~KgLzrA4#a?dkIJSu7K_Orv)|{RW|*J==A^G zroY-wt+nZw)4x+-^IxrVnfR{hg={CHcFJoG`iiAI+n3$l*_xq-1*@yLKY&kXp+#sI zHb#sEn}vN^oT!UDTHWKEeLO{`Xc*f6yV;s^*;}SOe!tYRy;@lQ$UVn3R7!Y7wFUI5 zEyP!CLBDDX16EsLu-Za})eAL!#Au>iWuTBzM>HpIXFyW$o@ieF@G6ORCO?;)ne;w) zzeGzdUb^P1VZ8LS6Ql9cY+E)_m2FE29;GSa5UW2pib2yVG*#bib?uGqE2TuBy2yg2 zL&e#mZfVdiXDDbTK% zCkt7RcoNUUH|hwRBxl_73Isx4yqUf#+<&VfW>vCH$tsn~;vj@hqRSETOzfaotNm z_}CKkv050A#R-^$P+K7BR|jr8E+FrZByBPnLixRlzauKi1f)1cJ$lLp#A3;V7$>Ev zUA|je%|tKRi^Eq~AAEuV;~m=6G77B80{5eBRq8PLtvCle(BuGNxHW>W!3p3yjvEE8 zf47B&v=p_kXGiGY=MYOVTV8@5W{&ApI3Ci?6(R|WO34LG83UAn`moPu3XlZw-HKVJ zjori__b#!7KW|gTtT?7_Rpg@aE?TfE{wiiGuy-eeogBvo9q6912})^f!2;I3dE-Cf zdoSUEn}D{Ensy{3{2!E0H}^t56-Kh8S^_8cBvoPb>(nd(b(U3g_TZ^s&>+0lWay(c z@wm;wLj}qRKf9QjA!ZERmo)BuQuWjzq%BT9Q-aEuS&yE8F=IEpp?DX0M|qq0Vr$T$ zEs1iBq0ET9N1yBm1x3)}@oalXKtd$XwIUMxXFwv?O#bhlhB>d*o2RE^1B$TII8iw{ zaiVM+1HofNG7HNs8R~AgTz!*1b(rXJz4P2~-uyH&hB_M!%}ez|j9L;KE5&!J)= zGjEu4LKL@CFWUn%@rZCvLa?zWr9FKFP0aXj>^kj2>aA;NM^+_Mw61Z^eu*ws^xe@} z|L3xO%>PxvT`ZZX{11N{k0G8~Bfr%BhINHIEgQSi5Hi-hZe%T&+^v8iJx;_fSfsaW z7jy(5UbY5^gxGBi8*PZ9n8#7p$fp73-X!nU5yIHw4BTkqU=0_tfgYxvnnp|cbQA|C zQkrGMz@_SPGLw$qPf*pZvb-afA3H)WG+)wy4(o$p@Cdvbr=Kvn4)WiJU3?Ett@^ylu=t1?%fylP(kdCpUFQ& zv2M=u=Kihb(=a@f*LF)%aDl&Di*I&AEuNSMdf!2QI!Z@m1MNu zc5bIo8sj&AjDZD!G*4;kGNeW|&}L+!21 zN2(EoJy$@~)Cc}qGa{Cc7>$Q*(!jiv41$!~@>&;->Ej+pd6TOMF@6y4>QL!o(>QQ* z*FG1?Wsbuu1#){ft7KpK6eFG#sIIV`qc1$QH=^--5i-7z=Jm)ooetJRY`uWMWr01H zm6a$Y4pX^8yu7w4a4MeRO0mU}`lPeF(L0y{;Q0*my;Xgt>IvlK3)a3;Q zaJD4Mv8#o-h)DDWX?SpcDjA@-h5f+K^&ZX%8Q`mx9^AyL}zr+BQKOV42pJZNP zU|GOH9e|K>4&(`{nRfP&!e`DHku0VND4|)PsWu}9SQiQqsyXK~4t*InTWnG>&bFFq zKdCDz2-bum#Pg}3?IhAwl2d$^+l1&sC+Kk7i^TadJ+R9@S=Ub;b@z~=dN*n^ahLWJ z^g#dRz0ueXFmceLQ3UE>i0*#b0N*t8ml~D3<)q_=gNv6KHSa}p2aR3Z%)s1|NXKv| z#Rupy5VfN+gnl!LoAWXu=E{=7Hb0&v+n6P_HY4(wGL|XSG*ppLmilqY419?urmfP&4LxiJz zkCAx2++w5n6s~2P*=Z~~%S5A`_MA-FM{ZO)pby`OOdeZH3Itj$(v_HLcyBUy zwI&@B-z52f8%KeWb*@bK+&9a2Dw0-HP}IK+s)d2~aVFgk<7%ZA2!8 zgM_7YC$(4l5$Fby3$_s1WjiZ7zvUSFv@~Lq&7Jjyi!{n(P>z}5fZW-F@$t%0kct*; zCzS;H8-b}<+*m{8ND66_vR@{{>OY9YqVQ66 z%M~26Lq!4ksfBb!xGaE&uChT zcIU1DS7xeWNjTRs&5D*W-mNY~8|B=wWf94{)f=y3zIfRq!_2cgYBC=;$5$1VxlDq|bUE5t`d zo#CKOtEQ!6iHJzacuA-HoTdSPnqfL5!oIH@t-JQ(#9(xb*c(XL zPE6N78DoXa_Ose%X?5s5MrN+;dvdH`-JZdvUeHS+q#H811!OR0Wd0;mv?bG~yPOE> za~UDq<))ZzSG-31+3YP-_TDPhece@=i5*PjwGU<%5D8J3X*XyD&p_FmL@giLwO`>a z1w>aHwxZh57S)Eos5V4KwP7@>4Yg5C90y3A@h^cMLUZ;k{xv{|0!7*h9FdSdqg<2-kP6lZauV zXjA{+%5TeW!n}$i{dysPc7gI(%~HOknDeP9op9bL8=q8-E14i>{*;g4fFjOfPwB?V zp4+kkFbyF-;2!q(kUNN(94|njp07rFX`m8lEf%eJfbQrCWm2RW;eS4u4|A-m0OwS! zO4*Z|Xx#|V=976NGBl2~HF-7w1?kjv8h8Q*FaCjiS``=fHbDetieTZyzMZYvl&x8l zS+Le=Sa7Vc{E1c~fZep)tm_y;6Qry5-RO$7!G`;gnFOS# z{wn-Q@vD5DvSu7ED1V{v^q6Vm;h?pUS)dik98Gt!0~H9}ACpf2#YjRR@wg#xK|Xpa zQ*%*-Bu%ED9m?656WyOXZ*RgIS87zoeZk6C+1GSy0CMXb)O4HOw~mn-d%VdOso`TN`$CFN%>2YuJV>u> zbLz(XV^xobAUU5>D_oZ;65l5N(QM7e>@CIbzNMsqO8ntBl=*EswD=5Y@mbK~bBVhx zFx)La1l{EgsVmpaNoFw_CKv^Xg~b9l~?e;&5ZEBUA*`<{BOQe zA5f+4K&hi;DCk?;FNAu1tLgP|rq^FCpXPQ|UhUcVK{jc!%-UZ?*izUBJYCMItD)78UhSlu=r=ljQ%=r%mvAYPFPLVQbQdZd}$;><&15&L*fBL_~wK!YzC}2-G$zocnUAYVU zRCwoAnFG0qV*GP}8}tN0Qxv5w1QM7rY7OQR7V&QHpTJGWMoAT&b6bW{4CM2{xZ>)k-ve}6>4fQ4IZ3<1ok;%gJtD*LpzQ4T*S=j>ev*_vCMHuSW~^`#-k`Zy z1-Dz)=*kSrs|YcjGk(mkVcs!&h-t43Ce_eG{M7}0+a8;^2PZew$UNLH%;R}Ndyy22 zY2CH-^>{BsD$}0f2j))GEQFMtM=R>u{iRcdIhW?(5!%*&Wg; zzWcp+?2RE?JDN3BgB8u~V zCm-oC8cbep?TEfiGTdK9N>sM>-^@o^8j6$U+b)@rVTK*SslJ`1l&c?Ttl8x6yHC{E zzI*iie=F%ZH#6CE2ZBv^j=$;tY4wPWcf|gC@4XTK|FvuHzxRG7d2eL*tqPe}9YjY? znj4i_(EV(~oV?2oIa72J`|t0MzQV8SFuzJFS597Y|78mb;UN5Iyd>O*-+uc=qOdq# zQgHP?EPOz|+3)Ya6}S2yK601zbP{OIqte7eHj(Tj;=4DrugeIbr;}K(hB9arH%HJ> zDQ4?(VxqdQsMocbdk38I?c9pI(~*7(t5I0WLR4Rn1YSxwp?Nd z9vIyoG=mqFAn+kI1)W^Ft9ECim*kScRVI>lHgU2z45`&6R{sdVuqk7ZI5*-gZo_Nb7QDxdJiBzud%VO;Si5NUiPfCA2xT)! zCItd^KkS$n@=6mzNGWH<#V+@7DP8rj%HLHvS`BZf${R@r*xKy){A$l`+glyP(J&&VXm z^|SD)QT~090S`RPDV0;S%F_0qN0lqy-4qp>uaG8EhT4pw{&1LI;xOmd7(j(7p#WYq zl-CBsN3aNd+Q>dO#E%#jTAnN z=w$+nprPn8#P5-UhMHHiw~Sf-JGQld{rrD(Ka-Oqw|1rcJDj|KWc}((cZU1FX zS05_4f=qqDc5|y095dtHCEV6Ekh<7*{3St#Y(h1US!!Epue8?sDfn z!rCp-{rWvZAYER4P}rk|wmaLtK^VIQ5`8oFtdD`g3gp~*2L7G0uSdg>NpUFucj&Me zV$`CH*w~b6zZ>vk&$xmYdop;j#d&_3d{A0|rgTKDC=+D^l*FUlsqt7}<#r3FG|3i9 z-nsv`?AI@=T?3YGBfM&bYPvuZKq0$p@$3%9ZcU!$@J?~(yXYE_bnPpQqB@mecagZM zuyL-=Tj!IDc~W4@Y7-Lx{Tg}#Y;}&zXmxl8ZCSG~pugrTTnfmq54;8WwV^K}T+ch` zJOn)76%jHvXnayxr-}A=K12tebB2yFGPG~Vhe53g?x$52Bx9^C#ej@3MyghkI9#H6)Qwqh!}Vr_+zx6J|3Wi#E4-%(z)E@a zrMk9z2{d;*u$I;MkR|S>4~E>nDP(GrDcQVp}F`l#Ky2b)>=dXs~-e;K(yX4K8gK zgZ#nth_xjbew}7OB@M24+0)u4CZ2ejC?ILOLek@zlMN;yxIHzZ_?%bw1p_s9QZ0}N z=E`+iBU`CuEVt0msls_lfx57(O|NN`vYQnZGVS+@5fa;A<4&kKhkT~E+af5=J+MO% zu@FjdP)5PX0$%N9PQ`05p+F7B4sQp@|Y>jD)q;;{9f~)65B429wrnOfc z)bTWT9*C9CqvsEvXIspa)HMhtK~Sby~xA0Hw2{a3x!8mzoEXp$p0O^h(j*MOHj zh9Fd_+K{`zs9wRVcvNpN+4tim_UlN`6xIoB8TX)|XLZm5Z{u59+new(o6zeZKe7Sd zP~h-vQPEceR`d!rmj@z%_sCOx2t(`4bXm&j+~WmlqB8h7+P?CLQl>d$es@%8+P;63 zv5l>2C_2+vb4DL}N9ojA}~^JeCj@q^=x z;ri>ZseL;O_U&9CTGX0dV%DsgaMfniRny*sp*x_4?vNU~FmT(|itJ<`)wkldj>NB0 zp}qT0hokoH^iOBny~K3sX*gN>duFnopT2x&XT<=_*B=T$b^A&&g`G@$Yhp&GW@To< zxmbC}YlZp?x|goZbk_eA%}o~!$1**`qcWGfGo6(S&|fbu+i)Qp^El(^lU%2Xh&@P2 zVE3VpK_g;B3+(~ZZ-_3tg|K2*1h1VF)gFNfn?}uJ7cUOkD zY*^4+^;WlyykiEfCvUlQ`EsV+pKS=nV+vjBjA7avYkGW_Ml27TY$;E1DoVr0Q&S@t zj*2)ITxa0;#=^!OSpE1^0_|;Z|CtU=aNa|xHJiqKfFfbm3&$a+iMa93yLWfTj4r$D%; z!4`c-XXXDw)bJ^>jwMUD*m9mmB;C*s!?H(NsZ%>p%v!(we}`LoZj@Wvy@FPH26ew? zB~e>lpSY4-Iy-_~+5@@t;(%Pb2~YMN&D*x1PsW+IVV6!9T$5coCGp;Cyg~|nelq?FW#0AResMa9rRS9mqOv=en=jb1t=FU}jiwEy0xQtD-% z$}7e6I<3kiy)-^;#angY*;A+y{-x3!rOK=OgQDLTS(y9ddwM zccc}#=(QQ9mluv;n0}@(!Z5wOFv2iR{^n=GXvyl}F#?9^<7AkYRC35O-IEsBmGMlY z5^FuK_1FlWX_mDwF1QBI^g~zhOoP}rpofl&`w@Bel#&p)1}rTj38%r<@1#)X2zXIE z1fL(rFVl^uxSEX-F5^~UbH2nNh(wt41Su>bl04*@o`t(lkBnfPl#SU4lk~xWbQ)I* zSf!sU9KkC6Tw#P&`Veh?JjX!rPHuO|Dy`7|?qEW-*UK8sj|iGYvd3w4{+pClx-K8E zO3N8$6N6Q{htU!FOLNmvPU$tuDQ%R}#F$iKJ{0#aqvZ8OD5a~dj2#VQvWeNO@QLdg z;Z(XLYXd6`P7`WrX2XI*wor>qhFhx))NTsR2K=F(PS)WT;g;LRo>`!%^q;v2y`S>M zK*^8FCzT`Cc~HDv=l-lFv^Bjg`Rsr)I!i+W$@3E+pOah6K)yThEt}ap@4+fuE^*Dv zZ6O1-T@LWOI$W&T`j2KWl1LI8;Qg(*0EM9r6AI|u|GdmtY!bgq4ZP#FNH1)MCz@j?y2}2JQ6vjLrDqt zD9!Lm9T}~?XD|EXghPM;!aWL9i}uys7@}G{a=E#l^)ho0!?L^}|8KsCxxC-Q%ee0V zc>pCeL|`LNLtD*z=Z}CrtQ~<{F;CY)FaZJQ`={cp`Vjem43liMdcP3EGCv54Y{l%( zcA8=8AtTN0hr7AVwf|*cS%{ z;R4KgZUoFFvaGf%Y6)!tkqJJm>*5tr^2ZF&ax5T*hJtmT#?I`2_@NBTh*{njE;JPm zEUVkF9+F7=CN=NNIXb-+AMj&iTTChPaBH@Tx6^M}6Oz`TY&z``T?!nA!i=FI78U{{>WqxuKZaz_5 zV5zuxB|1(%2oDQrvE0s}<_;2FZ1S=%5w_GI{)uCW4j|v7&1x^2pX#C#sh-knF zBmXq%rbQ^mA1@BM<*n2b=xeW&qo{4no%<`oS@-fG^L#M>V1{1zGE{)OXCzVhPhJj$ z;3B42DaE5g;0=tRjaDI0ZE%$H=k>t}=V${~6VLuC*fjQKYlc->9JjsVm}1;G$AKmT@4)^WF7?H`Csk(Otz6tb4Vuu|#Z3a$j3b%m%hKJWY$p^8W zAc_1~5ZF-qXY{7X)(mBDnYJiq^v@qUsr7LhAT;m4+TsD#79ps%m_fBg5vnb&P;HnN zh92Z9(=|l#n5MTMDkLmj3Vt&WuL9ND{Zaa7i?2+M@IP<9_}2W-p8@~#um)KsBb%1;&owwLp=Pj|;=1VPdv&MbxRiJ_LPMgjr&u$J~Kt@WLTv7P{}&WoRH|Vq7T?&;Q_rdZ~Rt`McugS zb;ji-(L<;1);tO?K7lDHhIzjgs=R;$ zJgz5Ys>;xh?q|Fqj$)8aR+Hh1{jU*rvO|y) zn<}xUkvyH{LeeRB40$^JX^{1*ogcI&gM5eJ(Ik(j&`yH+O_@8(-2-W5@LbGCdt2&G zdEz(3u71yOalw^5p4r6gkc<#B^AN4KyqOBQDVvU9>&uPbc%)bl2A?D(3cgPNu)0J*(D{&FVJ`k*TeM0S`XH9r?&y@g_sIiZs6pE_%q_TIW+2u$1f5m-fBgj!7ET98mm=*E@NXJL zuBI5?f_XEP5@Bvc_FxUflk}a^G2!Ms(c<9uRMy20<&E$38l0UW{pgccrgjy5rv`T1 ztr0mE$X`_I5VuSil8!=K3!xQ4&+kBJBgZQTQFZ-mL=xMaoSB_bU&5qi64{)lWm^1)~z#hmbwK#Kr_)uX{Q7mzJS zaqP$7QoT_@b99i;7!~K6d5s@R`p5YJj8(AY z1hKWGMe1Ypq7lR025;J^)G%ZN@T%d^Jm6xAy>}=jyiLhTCw*o=1@LfSU?dq?Lr8)=-QAy4?8k{ft!~iiC58b8pIpeY!&6;K$2OT4=WNHAoA# zCmH;~aDrD+Jo`~nsTm@LFlp2wx7U<$Gc!8PiF!iKYi#2y3R`Vx#2*lyyl^>^e z1{0VH?hvl6EbH6U`O59IXen8hlCn&dXz#TM$0AF1LB-~hhMYud1IQoCtMzMyBuRXr zyM;Bq-fQ_3iPfARu$7I<2^SLzVx3kN3rjIR zHWit}k3&olx||7kpxDVxdy6f869#XbNy)vz!~wSUoW=4JKNFprR2-ypPgd(tOZOIQ z9qJl|!0p%bcLfXl87%N0VpJ^h_brY5i4k`$6oUS|63yqd4NhGk1X>mEH7BN~lsx8n z>KW11B=EFef)oDi`A8&BdsT`(xz#pl$cQ_HOvBG`eeE;9*y2KPHBskvQaiw}*7%!f zvcL$JsW;mW`*Lo(rJas*?q#Nxz!$a}vIqMx8p5v2g-dx7Q8>-QVwHi7DhEVGYr|F# z4R}t54Lf8#M?(KwZFky<>9ZP}$(YDG%wjEsqWYcdR-eo#Er2%@5#oDV0zGfVNh7Bm zIRRO7xW{*%wHaT^8IR8Nn#fG2f|;iC>BbUV+T>HH!Q^q$g87}E?w>^iKX^>MQH%)-=%;(uLbHR zfI-quyD>r51|SwAQ>zq&9X6e#FYs{iE}Zt z_r$K02xn65o*=QY1Wt&_sPtp=e1EJD`^0WK=ybe=R6_|wtE~Ok)$JorYz$kJmAS-I^@o0RNO95nHsST%0NQ3>K?Y zY*cC=Z-;J_1{0SRfJQpXo zzKs|FT+VGGg{c=DKw1p>G%n3cUQeWo|3)e9sK%a2J5Z9(X{Pa=Y4`6c=Dx6JJti zpDxM4hhWB}5_3c9!Aek6JyxI;RZ9wK=qxhc%+|yV@D9#TxB^X|C#9~FL$1vEAi+$5 z1hXvhVEG4AoW|I4@L!fY*D)pKu*Au!Tb@r+ke!d_k@FU=N(uUv{X#-bks8BaDlHkZ zZtKJ&4t!@aR~l=j5mo~DU+&x||NHb?)EFcgeCtzS@*Z6~2!=`b*0SaDRP+s(XKTb} zxled!e&-#R0ICRnOOBUFJcq`0L@YFj4D47e;3S+HvQNId?%zZRMQf4i#Q`f3ilHISdmEx!CnO-2Qipt5IHAaOWdh z;lzpL1YFRs`4W_k7NEW8E^Ml1{OoH8R4f_@r1Ozt9U z-C#iFto@>d0o>yz<9{SF_PL4?xXFE}4un9$WpFQZ3vj0W_5Y8$e-DiEEYrvFKxSHO zC(S!;P}E?fJ7|zl(S}`I!!Btjb%st_thAlCowlqSD;4bWanWU6R4DY2hO}5wYent4 z)vYcnuBcUU&4EKWhjXCNLMbg!puo_UWBI+;b=}W96QJ7NkNfrW`va29;eDU?dG6#cRAfNDhYF*Uj2Op2&O((ZSwTT}fV(h7E~J zvSIVN*zCNKk;Ji1-lyP{-CS8HPh)e`-9n~N$LDxd63KMfwg{sQEJjImtNny`bHq~B z9{MNdjuvXjOPdGWkaV7ts2;Meeg=h))l!SD%ZMMB1w{1Q9Y`R(7=NazvvE1i5?(-(@ z^NHN&ley2QCOq*Y)Lv%1vKNtkkUXs1!6+7&%XC$_SJPHtQ{~>jCivzwhcp)y;=bZq z{HsJT5N4wSLk^%rM=->S)j+z}BrUkkb_bC4w=yen%%U+bD4pWkqP+#5I;r?VTs$>O z)g3A(Tdid-y|(?$P_Alh%%v<5{(p|FlzQzX1_N^&MYI~%0!sV9b5Pr)&6Z@`Ahy-G zd!5nj_K)(Uh>%GuYz;s40TYh|j!?8L~9R!f>ynUX+(A2rV(3tDk}*yCZfk_S?l3fIqXgqH-&y<=J}z zz6Hw7??A5S=9+@BxF$3fH@o3&clnfdjLVU<;y$VmzZr!9cX-MbXLs0Cv=uCejlDHW zFG?dYuzd<#EjQN|6iL27GNk9&3}0W2ouIQPWM5rE7(?vrXAOZj7vL#vn8Q{EV#izwW~iM6bS>DlZ0= zck`2{&-`Kj7|-nEaRvUEF$MmZ@o&f<@Dq+dW}ah=Ti}%D)WoDaXJdc7HPagVE7&iC!4E@2W=pEI;#=U7dB$c7i0{hKnYaP-`~0{&IZhLuUI}(Hma6 z-(`89X0g=OQmZ0-9VcXLmJv;5u)kru<%PV&lF4VRYPf%U3nHPp~53T(GRGck$hb{23D1=z!SF{`y3bKOeE_aWX6akZ&517##j z1t=gzb%s?u13%UoMv8MUyGDqsLr0+j&)gtCoM5yDGWgJIzyUDb+VT@q7krM?Q15l* zxZh#bfO6}E;22j+F%gXlb$}=Mrf>-cst`WMXe%Tf5SeC)CfLsq*sbHR3bu z2)Sj}Fx4Irhpw=B;|;} z=Jo$w8}pUSFTm^2g5(0*MohnadW3t9;H1L{wt6|vGpm=+BrQs#vny7NN$7Sjmd^R$w^)`6_XuXK+)j-wn1XHhU zEd(AK>nuLEl3Rv3iliVajS*4vtwrLd5Zc^ksl6?EYx1hNqh@M3wz!KN#QQi74aUwu z%KAx^I5sA^NNe*hd1-7rm0@8lX)ZRamNnaL{hjKiXtP~be9Q1a1R@!ODMJ!_Ys4K- zV4uw~Ve~$SE%YpxAuDHTYGRC4!64SH`VuiG=8{TojZI|O;EIa^Xsz%ah=h_&_W(rB z_yK`(^LK^q=8*U}ObQQNbF-{#nj)OmoD>{Fz}&5z{u6m?LP!B$6s|$S=4lxZ5YozY zTFBCGcdNkZTwx6Mt8IGN3M{fEWK*d?nN7SBan?_c!=;@Kr3$sQ1Ub*&=@kyG=4w;y3gd_`E zbIXkT#cQl^d{s0EU@qGRA^G#6ypb!5_4x?wMs1Zf*e->YS$yuw(2$Ja5Q}|>^Y&e? z%y)2CaA=c{f`I^fNjupGD!m>Ve@FHjY)=lAJbcExAIzvku%}shzCm93((Y zjC*s=C14md)?mz#sLxeX)f{B+3GPNbBJ+<> z@d66JBvLH(K5VSj8m-kbtF^@754CU%uu+8F%l4)#A6>ymmcL{-qtwe z6vy+S#vw;jR}Or>J8GOi%a58bGKq0`WBYODb+t3Nt3%L+Gs>%-nO;59JYC~`u9k(5 zxce}p{qf$2_9ygDO3y??|KwNSI(_DUga72g`2UOiC!a)74G;?AKdHO|zkcNU){5T~ z0sB>IufWus{I!zMD**Kg?7_LI(sc^jY_t6=R*~+at|(r_7*SU1Xg-?_#Op<1k|Kf0 zw~WAKX5y){STFnK9nVF=dhpNyBHp}iz1U5>ri~@}kYObGH4(4`CNu&BlfPXOvT(xi zopaXs)u#dlm|;#Mk~r%D!lDAlzhaCF6II6FDX+*4o6l7jj(Zr#P1`@1)f|{jSPpbF zu*Hn^1e^^R+ewakl0(@~K3yXI6EZVqT7!j)d^y#=lT;{t*la~r@PDqdik=Kqq}X2S z#W0kuImPP^2)>`IJY`RnRBVRD4hO{5=rt|I#@dM!q=BX-(3XT4p=2L&@!NdTk=WGQ z6m%M`D1_yA6qcu<_<{i?X5sFYvx;g6I?b`kv2;@1DZ3bi8(b_uc;VgWO#jlPx{|`W zK4F%ls83*+IIeLWjq!!tq6L;wLB8mEID&6>{74{}Tshb=n*ejYm`=`A(v6(q)1ilL zwvGivb&Ierj!y^ky0FM?rd@8C64{%R!uOw~tsWd+xw(31mKO06!bZktF+XSwe5;u=nIjz2*1RlweCE** z8Xed;O@S4UkSQxOrY1(|{Eg%b6fYhj)wvvXujK|pG4lp}m}Y{D><<#7iX_GY;X z^6aY|N)0C8x)2jE)`Sto^)YMqw;=ou!NspSc0lZ171Y&O2m0Zge;O?@nSF%?djkmi z9i~z#TN`iq{GUdZ?!uQddA7Om*gB?OVAMSh0g+9TaAmSFnGCb$CC}r76qOh0B8ZwK z3%V%m)d5y4NMLt^xFKIN#`CtkDD&03>Q(Bb0|_0&vlaE78Ppb2;kmAe?1nW=q*5Dsp^$98(jdq$L?rTZjRViM`1+x{Bjc2fGXFT z743C>h?W_o)%43`<>WzZ5uh)5!bu8U}OSIH1Y0hW@i8!4TmghZ!*Z@#|V`iyIetOTvo+$h+T843ej`aXA3EFYx3R334Zijd*x>Mb))#0v#-7W@ah(N! zyt{Lvtj$1T7h4ZFG>nU}PaII?K2=0vTum+tV1Ax2UePUoWI*iixL5;^#uDerI!owQmV|jOio{6Td zsEC5&qSo4esOtiO;=4eAjgnl^Liyyo-b+pFk9<(~QjC9xN)w16C9CC4lkqZI8tfz$ zol}%kaS5Zr9r*DdMun;=BEliW%y9@uKd75nuFVm0NdxC*y5lNqzqy?~Ru#|L_IeoD zt}LcgwtEq`OE84)C!>n6h6HVXbm5ckrWi?sbWK*VNA`FscP+?LmWb?VP^2~6?)spt z&lgo8nSnjl71CjhSsTFhPr4$8{-Zb+KU$}sWy78jJg%2eL{SE=K^CLO0Am2-G&)(>1a(eze`)^bEF%5bhKR;8fC!>w@L0me>1{3^pL zv1-N-_`fj_kqh?jeoj*$-eh~8<Por?OI<>uRd3Y8UT%)@d!0hF(`|L#L&%^i7PXrHDOcY%z(- zL$geY{zMjjdr^b_-E5U^#;f-o18Dl~5`eJ+)$T1mdLEh+UL=H&wK68HlmXDu@zoqBR z@V7kf_*?$@T?PJ@jDf5H-62x6d4VywEKGFwVr~(_G-Po3lQOrkalJuF`;k?q>s&Gy z^2-Qq+nc{7IQgnGtqHO(#}e1KRxmtJ@zr!ocPeD2*yrl}(=A=;35P1v6OPpt(Xt2{ z>{a%?wly+}4Ol9WArDSk_Ed_1bH&RsVu5t7SAh_*!OqB^VIc9`zT!U1UgS!b^W;{n zVCI>;e#aD<=a(<3mvYL+zQU-8}o*LQYir{Z&n=xDjST(Qq zU2=Qj7#}kh66RJBUOA!?)UYxN5#ODLE3!T-v+O-fZo5CNUeRbujX?sf5uzV|LbaPk zIarR{EG6qO(@CqFCH{cmku~BXM=T1896x%IT?qC?|I_~#EeRcX*nWdv`Zsf8HL+GJ z&X!fipz?r;!aPTwkaW(166Gh%cL_lOQ$eqhQ~Q$&rDbwUiwH*9n&zbSK!dxKvkE@C z3eZ0mSn?`s1s#n~R&4Pvt>uoIkB<{Kb5XLA2PT!$VsaFK!`%U!g8#Lh-cq!X@uvo96NNF2VWhbdNn+-Sk@v#^31n8%tCA# zLVh)KERPylMmZ<6^ngu!yvZ8)u&Z6u*NpLH8=WbK_o%es=DNHRMD2Ma7h6=%a34@g z29?dL_uIa3t*dFUgbNsvS8H)u!o9AJ;56zbsYjE6)2w|qO8 z@`VaLM90YNQ2d>ohgW1U_EYpT)2}n z*SFTS1=4$cYbD&%=5y zzvtm^sMgYO>luB=8n;L)b{A`haJ}A4Tav68#V>JJT?`6^kjLVPv7Z9G`ONjLwbSsl zi3Pk6zOQ}TSs*0JZ3&xSuD!lBGVPo#LbBA#4@z>ca!k_eaYVD?mNN~B6;fNlR76hI zFDIU(DVW_~yl1Rkq(M}gM5NL5ixL;ycg67OmX|ZObg2mkYq^nL5^qj(TGd+C?#{qKjvhsWj$Yb4hGJG0E(X-jg(_qi30#(#Pw79;fIr($c4i8c zFtc2wI%B-)2no5~_&QqFa0OPn0aejKHl>(hlg^b^H<;7jWbq}o&Z11AE;lJ(Ch`HJ zJ1}}6ymW=Dmv=P}Y(3V1!gK6`Uj>q=81LcGS?{u2MCK!x)$U`>+agcpory$? z0?p$J6RoCqNh~=&`(NT7$?ga0CuGZoQ$kPwu({JPafluQRZ0^=G%yNV8sKtp%WoJw)hu z-($QA1A>fb0M(~vJ*=f=k{w_7`v2-N1wQr}h$eRsAKfYd989_03{ZJRNN^&dJIqVV zYSoAJHO0_iA>^0zAxqMBtDj|dw{=L`V@UeL3_xs<0FO;1g?SnIUJOcSzc&`aREw>I zEIF2r!MLEo1A*Kx3ES&zN$M_zvi+A0l&tNt-yJuU9|V%bixFqShorfT&00fIaa&{$ zQiQC~XP%g*8l*NkZijX5c8FA%6*M&FxvP&24m?TrIj0}vtFS1OpzCFPt3uW&sEWM>Qi;eI zZGWtA1@&o-{?}tp4k1D+R5)zqp7farj+3)9J)<>FI_ zBbMDJp{U&F@v#t|)}R zLU_D5hr2;F_x^eZ-9i@UTO9m289%4+o!8wIQRNAMe!oh=*307mGVSgto zl-sGimeIL|R+`sDQZAuIk~o|iSgnDT8T9UNXuqmQ+!&RV`$OMqFTcRx z`+`!OXi%nDn0k>v!xJi7{&hQzCRzeCy6Ec)MMr;%Uj#wpvxMfmAAMY($-*WK{RuzX z{Pn0rSn&kzf8*(6lAUU9gEdXKh4@A=l3S|4F5dsIaB=gXxI5e2hU~TzK*>DunJzJ) zh`W+5;qGQHG6EhA?+XVt}F zr}MM<6vL#{3QNH`KR&cY&3VwiBKLn>bM=JmF-MYsE?A5ZHK`#z2!mgfo@lTh5!5P$ zDW6H-&S{K?9-*bX0t5(hl>DJzc!ZNd-dabSr%{GG^b7iL0Ep+7D=w>BZ{>w}v=5o1s z@eXR|8|g5(xkpzz-QbEOI$VDt@3R9;y%3nb%PEvZVS|`9`J*Uwoj?$k74F3G9yEXU zN85_@hl-H=c@~fLpK!l0DXu+g4(ww)!o9jS(;7k5pl_^&etU6u=RcYTLPRni>%)Zg z#nf{jY;3_0AG5RjM~`xdFeVlBPn%tVozz-Z6XFQ(%TxS>B0CW4TJe-nD;YFa}o zAjR-Hjr=iK1|Yd^87KOPPvw%(D{5TU4D}MDn@l0E;S<%oiScaX zczQUVr+K(>C9byO0(Bfcq9Zz|JiWFWw8HbYS30OjhBm{f7Pe?4G0?VS}kQ7`#cAMw3|%Dkfb91H;e-h)4Tntq;*k zI2oqk&3B25pT?W1hy<$p^{z4SI_1&$kZu3eL)0ScLz811$2i**!Qh9Aw1a!md+1z) z!#Iu0jXMl{O>5-!uk}JaCcR1-sLgB#;#TLn%P!||eOkpIL5Q5k>fbvnh$5ax64&?Q0bfj*>_PAEc*P$nB1y!7c{P#JFN^qA}#38AW!A zVPvPMB0B}xW)g{_ejyccqbqs`!V*t0rV1t?FZLUzA&RPJf9(>$yYfcr$e^o?Er55P zbH%WIpuwSe99EPsgXM)uVBYYq)5lNo`Rlk-DNuKt|gqYHdzO^bK*pyoCX?LP;2yrmMcPq+W2_=II zZyehwk291T`wg9hr?4SXrJFKCmKYUMG1<|VM0S)&kVL>Ei9i)e1cs3=Wfbas#(;8Q zT&l&bw?rT{W6`8rI}7sm)s+Q#d*AreXU@xy(q{Z9C4EAEltTr6lzx5Aeg z;<`j_$)Cc;Fm8&;Ll*jfy5X?{TCBw*NQDNM}jGVc%L_h3Qz9?%XD6Y2#Y!RJf zESSTQK#2H03yfDq*$P(E;dWdUIKd{HxwU#ISfIfE8zj~n*ZB;?h_Ul7M3z)zTQ?zZS zXi0R{T3b-Gk2^(c8h4JQF+UvXfCW%Q3#E!c)(6uGQ`fJ16sHK>hnVTD_+&bw zah>ZR_U~6 zMgAIPLxC}kHvNl5jw=ib#Z=%v7AOaAH~fooQ8m^P+!)WJgM-%_fZJ&h>l+h?$PPuz z|3#S|J*eS*{4>lS8YZv*YhUQaXrb)-J|oP_u93cAW;{>UQ--|QTP<2U0)DO$?F!Z0znV4X(F*)O2Xl!mD(?7;vAlAWzvzA zV87&kF3#|A~E9 zdFn+v7Eq4E-k?@p@Vw=M+Z?|PrRW87-H}bpCRuq!-_*W8tMj>PGY;4#Zp(_ZcA`ZA!b#~c|pz|ze!#;3P2zPtJ?PW+Yw&dMi z#VGCoy?b54R#+M*#yZhyPL+_stoeBQAw=7qms8=kxC-o$Zw4~KC-hjFh$cCbyZ ztIMl~N|DJ311K2P-6OOFtQGgw+7M^^bxD^>P+e0+aeT4j{54E&D3}b+1&)}K&%3k& zMjKW#VQ#KN%H#H7a>?$lQOwjucRUVf0Eaf9aP!atwe4f0txe5XlG2Es?D-|9oCr3+Yi=Zgm8~U{VWI{MFN=6Y4Uu2H}nf6fN5vF-(5!i7Y!e-zYO=@#OJE=`p#0|*5vsszuRyg5?Idj;~!f%{vI;&PQv zI)WEd0bM2_XZCAM<%~ML$|i_L7FD87d$pI zs9Wv&ah_o;zNlB`MzAS4Ymk$EGVj&~uikIe^y`IW&+c$%|F1r)W+o@Xy3Q31fJi3= zxWs%D$<|RX4~htA4E0N&H486dGt-&p%=Sj(2=X`Rjv*Nsu76FnJBeqx#o;Q?qAcKi6_VYXO2+-EL{R!iMgK~6uNTFH$5O09aEsNK zs=Uv(hX*aK9Y<`leI95% zW~6T-2CPSPdFos%yeI4mw^Obm58D~WN|qGGKW^`bpn`FPU6+&%bKE%pm=!sq>Hssz zHaX{nG_WVI^33Y0YB{hRM0?t9UC|h^q_VTMm)DVXYkwX)Wi|UQUd7W62ExOHd_08T zC%1ALM$k$quijwN!0;$-u;;Xj749};ge%djs3&<;<03pS#bQJpbZMo>4S;#?a&$N0Vm~Q!Hle zxC6i1nE=%eb}wrIR*xbhvL;~l>?kQ_nc7u<``OimMfT77U()_L_2ii|dq4WI(`U|p z|FT~d#lJt+JKr)a)e@LyX#OxR6Z|$M)B5o<*R@u3lLGhSAo_0(jJb46XBb=`(n;EG zvUaCt9E+6C`YaPtQxhqCY)Eht42~pHGxkJMt#!YEp^|Ff(>HadE!A2%113ypzXV4j z_En(uytkN7hk!QH6yBwbVc@q3er(2!B>*hAe%fF^mYua6`Yms@%O#$NuCaDINw!RWypn;;|?Wc+2?cA8!!A!|3TxMN7`@6mVxzezr#W zSs2@jr6R)MRostL>!VC8q3RTEz1u?uuxY(}XkRGfMjT(+6(R%khFHN8!*wWoLKF(! zL$<0FA4~I=vW&&L1Nbk8l>Elatl-$nywP0S3pw#;yWAJ8u#1=|-Xdd%d>ZUnVCEYW z9BAL=y(MogQr#!R)m>7BbEW%Ul84b8D59ih=9TM%8ke{^+6K zR+RWz8fJU0MJRECvYpJ1?}l14D`cfo;GRQ}uxLW9N}gv{JZ}sQRD8UKkS|MRgRYVQ z=42@nskErb0GUSX1JS9Go0}LUB8AMLCBYv|ny*gH=&UB>^#0V4*E3f}w|&tWCeQt; zIQg}k!EyksQEK|4`9%##3i@R}^~<~+f&N*VD)1S!MwjWGOQCsI72YxZ)3WH}rhRaS zW7I?t2S zsi%DK6tD`6dMfxY^#8`4(sKT!P+dH}a~D(c5)orpA?Y0&Wnnd)JZMCkVHW;?mZndoz?x!CY_R|*| z&a`Ytxgg~ z9{^t1mR}~o#P(|N?aisub-@nAZY7>(r*?)FZsY5AuPylW(vUSNrafM-HV~U2>W;+W zgN3ejC$v5Mk-KiEzGpb(HQCh5?Sxyx2thQc7xS(Zz;dI|M8D& zOI3g|V+BKu;w0g1P)YbSEwBdYH5*zEZB65q(+vL^FU7mdv{jK0PPBxoqQRPciGztj zEA|bmn-5hnBUQRR*r&UhLh<_l_%`ghTTsE4JMow|4g0 zuYdQWqVuo*Jp1(~2R$PL1d|bK(=9z2bm2Rmy7$%chn7XSX9q6-A@(eim4klEU)S?= zY#!&aw>YVK#$)g9$XH!Xuy=bf{(ekQOzH~u?o%))2K-}m+wA~S+r6TIByAZRj5S)>iL#{uFx!yKg{>uK`w z%o=*}Edr*u8Dio!pJ8~yue`VC0l=fu!9AE~F$>`d7s&6<${-9s}JAnx>yaz46g>Mk>vRBY6W>wgNBmM!r{JesZIe@Nn z2WkHjVDT!<-`F9eJB6ZCV-XSzoVM^Lr9?}R?J#{uluY&+M=V9{E*0mQ$SyP3MDv4xoT-d1EflHX$8x^S}ewaU~_n8d{l+NR^%rRAk5hp^6-MUvQa>smLABE)Qq_G@b&~ z%zRUmPw}S;SfHBrn3~)nH3?;R$L+UvQa^t4`vv{@U>%Fqjx;Q+FM6)D52B4v0UB{)Kw?JN{-rhwaJx7C@B zK!0kY$`PlfK-|`wuMEoU^3koa%hMAUA#WAwS48qn-G+SPh)^#=XfMaQqoT8}9V);K zkfkvFOWQ1=01Xja>g<#Ip&eA`v#!9Pz}Ukk-a;l*RZ+N#p%v>FCgqrfxh3umpr^Vy)+FOIMrq!lzKyxS zq`Rg(TL;4~t_4o2eANylH2O)B4ChF_LFYh*k$c(jyK1ySr%5|g8{ZrH$iG3fDz1bs zx*k@d=&MMdWx1-j-GfzxG)<7O_M)GXqag08O^q$=^B#B@;PUYX4*s`jiLW{n01K|SK8`@S z#U8{`#QI_|Wewkxhj^%{dnMuDJr+eVCVIcajLl`{G_L23@EE_O1JF+w%AHA-f{nF7 zv_{}5S&}-lDm3v9@|blAonut`4H{PkD$0Fk=_>E5Cs^oNLxmxM3qoK2Iw|5q= z$H%@~SdZTgKmU1G1XWs)Nb$rw%xd|4flJT`m*6`WxD)RLL|_y?V<#SHL3P>!>M^5czzTggs=T_Wj zCz}^plAf?wy)9D2V|Jv-&lQmKsphsC&tMzu zM6uE?u$?N0716;tPrT{3`e9xA*n?ikuodR*evph%7vD)U$k}N%uXfrsExj0w#jf< zmAuq%3X8Qq?_j`dIiJ5P(cvaSEj%_TowBo#N8`{B zeZ6qhB~@wMoJ@?uSH`(Rk-auY4oLMr6jQEdsI}q>;&zv#q9{b}BlVJ=&`#y&q3$z~ z13NAFAJc(DfB#We@{uKt+~Sh-gtp3}?yICO9SbSK@luI$go^6mGc|%MZgwqop0+G0 zLJM9j_(Xe6p-XM9)3py+1zv6T2@~<8E54{5Y~@hNR&1su&L*ilvJeLPJ(f0PU&Zot zOW-GL4P3w;UMXp)H$@lU)g_9xFP1f6;kf%xRnz z%`||b;P8j82?p5aD$}|U-Xm05_{`-Ye3^@p#Db#er465RtHo8qldDfg7iK>s7$ZgB zgTcGYnDOxHxIo5W6c|NW?G!(Hd4mpM&3d+f1O@q1d!bp$VB1q=6?K{F$?L;IO@)gdJN8b>gS#z@Y)zYj+2m>>rlcD>`V{8h0CG5n0zJB?Op|xH0sOkK#aG)Y!6-A@9jlQP~azP_Sdr-TFf6*c;o+5a_E|<;~QCTTnm7)2pYfN zEbwJ{gTd@IhhZ@dlX?p(^KkY@-Z-0g@9$sDyLYN{?s}ftFU#6zt@K#enGsjnYlPlS z*U0vZj8IIC@z|P&0V;O}dSH)3mE%L3ZS0HQ^s^lURIB);;j2~n=@WiaXrk{L-@<2 zT{F1|x3iu3{su+9-qm2?@ik$qIS{6R1TVKoAk0DUkh1Zj-+oB9U8M~h`39$d1j9hK zcZVL}dw%qX{0ZLS+zu1G|I}NT(Wo~3o-b%Y)H$kF!Eq2`2xGp5Rx}FzY%Gns9 zns{&I1;LQgXP8r+oTz|ZmU0s%VPy%tIHA|VU4>x$RCexijnAV(QTl`v_^|ZdVgbhk zL%&{_Fu#9^o?zg%t2F@^+LJB1T2Hp;>ZmI4HgisD2}SaUeqV2wEtAZ@0?{+s{E6P` z{~&)tm+#aR0IFiAD2<5i#USe)JWWkLHWf+6=DZ>3vrAki9=Y8Mok*;cBp8!OpqO|e zfU>~9v&flwd1FEjmN-*7mAyjaiDv`jcYPMIxILkPcqLWp$VdMMFVnIgG!wr!>pGcc zeGZo8!{c8y3waDJ9nP2|1cxitJl;z+PYNV*O3xd_7~l0b(UM-Cm2;?qpHF7>bAHMktOp$4 zZvV)r+@?vz-qJXH2En^Xl?sbqW)SCQ3RXvfbL3^{A9g|I5rMNYa` zWsio!X|pEOGP>g|%ux=G1ba!w8gb#1aM#oZlv%g2ZiuPUw%&9SKpQR!##o~<8e34! zbOqQ(DTTPpQRe_dctcTFVSGI@6E6x4Ma*&SB1Ov%F))W#(4-zmsOmTm7W#&HxtG8I z?h8g+Tg>*8ZQ}$m*{E*Sm9hj@=qy>BcTKz(=dnNqJB?uwMLVnc%z9dXi!~8ZSD8JU zuQ9=M>nsc0n^EBeOe2CqMU`1J|IhWcbLI9 z+rBZ|UVp{K%oBOX*xk=HcEVKW*rouMZiG)GKB(+#YOl<1?K3Z(7VK17#B1q;Ra%J% zxhCK^UE5mo0a6jg6!sK{1d{bT8e16DPPgxjHnyz4zBO`d;3Zw#T6?Sb7aGV%NxK|$ z6N?eqbuAqb(uL2OeL6kiB$}*7U!K8-9QyAg_;b*+Gh{Yb4p!LU!$|VQRt5bl`FrkAfp`MHfmhr#i);j=#j($|8##R@UYiJ5q8w zu+1g5KhI)FF^nPR7e^;~J|=tI{H0CzrQurjzf22+YOtXfYZWm2>dWp&kJ-fa zl;1pP#QPQEfSEu1X}qBXe7wC=D)vQ3P&ZUxfc~Ticb}X)6_(g(KINP z>xU~Hu+(DtJCz4H2w;TG)}!}e6;K1-fBHRg!pc|4_aNtYlqmSq<;30x7%xM z=}AvmUkk~!k>4;al%MOTNkCq;)w_0D@i3#c(`@n3JoMfY6Hy^5VP{FN_j29IOF`|X|mIs>mPtn%=^S7IvZ8b_Kj5s=U zx+XNvpYh4}I_WK$&SPU89_!dNElA1qs8b4l|Cgr~c$9Wc3y0v3Ts}>L%_q!tJIhyG z3zQpY7gKgxN!2<TGMMhAXo;O~#iT-g)&p{ZtlCUs?Zrr8YaW@l3C zYN>mdl|TH!SIi5YL>5=`Jm)#j^9kp9&UK#W9M{}*mTPXRQZ)FYhs+l(F&~r(nwACh zd4Z}+nNK=OJ}KFu?obO;m%4HO#o8|y{EO2SXZsgt@x2Ak#?7f2`>WuoPRSTYCsH~r zBW{6xAGl59QFc5|r2@gq5BXxWgoOcthX2+e=e>eSHXV4c85AR@ioDmP*YV^rh4>&hQ`P<6ed&2?@Z z(jKh%_nns)=@+P&e)&H*HWBw`_hxX@+?K%aKL7Z;DC5ahb~TnRV)TO^#0r=*MUi&c z;9uc-#%sP|=GBt=@|!`kaUqx+0)u32nsww}RiK9384~p_&RmI3mVx%g@B)>r5%Lj& z;pYW`^j}jjf2EC7qqZ*hyNU+gYrNrL>0ht-9}E^xjPVAu7YzB5B%_r$DX#3n*j=x2 zjutbFv7dj`|2wlxwt*LH&^G>FvwZ8-|HD~+^W%LpgUu}|n(6q37^$1(;BkX-{`{(F zNib|qZC5ZpO!$n0few2A=`&}}KB%aUwon}%Pqo$xp*Ex^P)FPj3=5TxZjF@k0Uy;C z@Bj-h&$GqVD+u{<2L5lv%LO6-sD#ZvOTtR{;HlEp!Gr&%K3Wn!H6HBYk;YCiCes?6 z0BAs$zryL3TZg4vCX8q(ufDoF`0v`b;J=U05B|ILaiT_gF_8ezIHjQP4#fVbz8eL7 z_bByU5A>as+Hu!?4mQ?o(|h9c7BIF~;h}IF)zoD%>awzb9O!h}2mjl;>?}UDL_7Yk z0qw3=`Lt3oUfs7?-BRwA29i<)lFM6BF3RPswWcC?jPUfRo{h;R3cwD-P`$3;cl<(E zgd*<0*n`1}we$SpN>(m+G}USHVniMe{;OLPh;p!!hyIpZtu%$Lc1Xsh#%xc4A?isA z11)+OBh7Z@@;w^&8IIkO@;f+g4Y%!_Ap@wyvYDbG=a$;Av!{y33vD(k7;i95Dcf&n z_()!9Flx-F2JQxzcaMn!v7jil%g~C&J1&_S0uIQ1e=l+UG1~MH@L?b<>ss+tYvi2zkV{TMIxkYuRP3A)-z;G-{M4y>YkWjIqP-!gvI)?miz{(37u0JPeyDsjX#n^ z%H|HSD!X5*r8CvOk_CQ<<4`OJ{lYF?>oydpUA8SN2Qe16L`( z(dkk!VW}U~eFZL(6F0HD6bg^{$p(ugBRHX}<#aWaECt_VgX|R+lg3S2BexdepZBEk zk$QwlLVE6g*SgPuS_T(V(~l%s=aw)4)6WU^2FOFlD?br=8%wp^8^01$~L!d2HP`oma5L*!djnOwp!Tgd4;exOB6xeU{)p^#X zm#K~h1%B2$^5~N;r=>*{oP2Cztb>wGO(er7qn8(JPvdc}vX%Rm(o|S0mAz3s+Ji@~ zag32#KKo#oo{{3wfc#e)pLAEd6&b+ky(;>HD^22+ls!S;Y-Q4J&8r;-*`*@W)A(Ei zYSAclxEND&tPobv&8x+@GHyh-LL8ZmTkYC)RA4w64aa3rj$p2P;bK;3LBRRDoS#x( zs+>A06A~saM6y#MObxGCd78=0AOSIjzZSZ7!QNCtMQ2%0R0%;_p;LUP;mtbup$GH^ z0q{T`x`I%~{y$iy2rUq7=u!~R=ppY($A8F95(G4k|HcDd&+*X7n- z9@W77vNe}m@D5{%SrGa^FIQIQH6b}c4omFcsk}%)`+xItM)_9b{e5{ALik651({6L zH?v9TDv=6uYJulLl-X-<6~4g=>jQ}SJ$4D zLSy$i5!M&BPTm+|4h0t)Z_PDcv)a-G_l!gvh`lsFa)hgQ4RoMmn57bgt&>AyHM`Ya z80GxIb&;p8)U_Hcm5sWBj;_PN z1WzO?RJOX2ZzhBr?I6C@idl?_Orly3(+b)lSd%Fr=482(>lYgPCg-PKHNi$^Y)a@@ zp4r``9nooiKb|33XdIZrYwS>m%eWV<5Nf`OZvVI@6yb!R+XLwWThsDt6>;akgoULqm&qYuAB>8JbO5w(2c7FR6JqukC3Z(^c` zd6@=6E8}w$l@f^@9`YD(9tj0l@@1^fQ}8^yrDcg?wob1DD|G9!7=Kd8j|&ePBC3fE zS?E|erm}(WZlQ0iP`f_Fo5V4xMh_jFXXElAi*$`qOR>RxoFm@LnjH+OUKAQ@k*PFx za`fFV_l9Rb$#M0JZjHQOapJ}4mgTAToflZXedtx6bQR3a*6|jP-XP1=o9jALMnBy| zdyJIOgKiUZ+d9RWpo^U=(%j+-qxo#2NxoMEV$$0;0s8Pdn($&_p-``uQKXQw1arTiX{D4#d8T6Me|oxvwI@uPfu7r zNv6kMqSzn6!-Y)G{MeI9GqvM3nCc3Q`4J2O69l{?9~ck9o>$PHdN-4R5~=GWFpmoO zdt^^Sfn_ECcy*@x%^UgizvmGzK^wmKZPAkJTWi(@heM`$p6!>N*SFR_f<*7Nt+hAg zt+z2%JSqTl%Ni#)M+fnPx%Ebhs7ggbT+$P^W?2j0Z8`fBpRiQzo_gziOcd=>tm0ZB zV%b@vZ0#omYFweO~$UDU5m?Nt( z8CI6-qw!j(b(QWjB}%n~&p_K(l)Bpaczq3vCqP<>S~;@u1>`7xsB3(m1f-^Z=A4ZYCY7wTJL0E z5*S>k%A&>zOVOoiqZT##L#+y{NSZ(44A%aSXer7*|A|mMwmU`CW%BS@eI|Mxf5zEp zGMI2#!`ZcVrD1lZq+Kbj4Z!;M6^gs;a&h_v+YuLxenQUSMwY^9C9-PkMQFw0ztgT- zlPR5-NU6pCpotX{FY3jLsM!{NwC(R~hJXHdI!FFpFL?9lG8Q@^V~O{e#@NHrK~r?p z8yF72nzDbeiO)qTg30*p(m)fz0hiJ44i$3PR+x?wI|~u zu2ptL&GoH`GiE5^nZIA+7;F1quN#+r{0<$Z=(e;jxImLbZEU3dh4Kou+{A@@?83D* z)~#UphRbkBBz|v~x1%t)&REHsR6j-cqrp*CBM~w1*04guHLEt~p}D)TYq#5Lx#t~0 z7ShgGfcMb4!eEIv)dacEvpUxD8kltK)94 zQoI~+#D_vba}u%ZQcXC+2W_Tb{>E1P6L&;Qgyu!r=WC`{GB(`*WMKMb*W34_H@NQyI%)Dyp{SBH z77#s5i(q+ZXGnPXdgM-JlntRR;zvKBNV&g>%%=M@EK>_T<^481A+ANO* zT|c8ux9QQqP&x3*+rrZ+bDLJB>bAn#^XY$Q`=#teP9ku{ZCaL!Ax_V1;3At+S+9>p zFTBkyFSP;n+|ryK99wg?wC^{(?lOIA`1f-~3p+S0c>9iB^pTtv_6WaRT`#M_ANU2m zU-tQ&o~{!nP3`-&RfdHWM1#3_YH-n6t`qT~ZA;AbDD9_ODnj$t=hDXp-$K&0hijnq z5FAOBePoOnezZZ5{j3<$8AZ1ppc3t5InU5#MIAy7gD9?}Q-VUf4l^uOW)zR48XNP7 zfI9N<32Svsrzs1NfHtdTC&P{$$i+t63fE z3{U<^;2v34fOhOK7=n;j$aaEZd8NKYs*^$as_lK!COaw@A`R_%u-#6VF^ zMt5cl3rwZ^HCshvTFb6WS#tm=A|fRFYHP5IT2>ZmZn4XQVX9WT9GNZFkF%^MPMukn zDV@cH6z)6$HGVBhWMM?NW~0PMjndzP{wb@qB;t}6TY@^jtlo~M^i0ER^#B_RB8gkR zix->enCboK+q1pxo8vc|eG|#LJes*(_;KHEaGd&6+xbNHfn9M7q#* z`d{EW{m*lq{-0n$m1-LMxSGa3uBNe%t7)XVQFlh)rR{>Pm+74bjrJ9SQe)!3{d5oCC8S=$J1_!WJv1Z~J# zT)10xc40x9aapIDr&M7)vq&?+>r}QA13M@$qEYvViWU)C-*8hjY(ab$KYX8H(fi;-m4`;R#x6x5a=tu% zZ&(U^K#1HwmDKj}YK|r4#dwivmU8o#FvwX?Y!U0kcigDzp=WW3fUA&dLMpt{f1`2Z*6ZS|KV)*AIft$0B|my&hzS3pzCj(Bd)i#hNqisP+`!xLzL6pI7@FF@ z5eoO_l?c*WJ@?<-$Ze!?h!bImKD9yLRdHfqv4^kw zQ;@y8J_-vHUA_7#%ws$!W%y1bk3PGwA`{N&Me`JQNE9{T<;{DN6 zv_E$IkM_rh#zc$v$J@sI!TmAz`r`f3@ml13`y&wZ*m2+sn43SW4hKlDomf+8Kko#~g#}Ff3K$|ClQwj7RPfLYv{>$TvyXIX#f!ZErUjJ`{*CW%x&bRv8ZD z_lF-V;y-`>)SKx45!eN5+5h8o*#BdT`hRq#tk1{!`hOhyzv=(+7bSnN|3~&rq)2wJ zITQIq{XY=!?!(m4VfOz3JQVUs9S)}H6VPdN1ybxQ&|od%0Z>>YRUIsT1?xy7>^iU} zWz7RBr(LTpQ9GTf8N}jKGZv(X!qu2uJU+z+U&~Zb}(#|*&G}RmyVIj2Vct2hN!jHaEvFY^$dyJ{OIB9zz3O~kEoRKH&pQ*&Jdf8&luHOH!ZUN zjL=GDOAvN|FPj@N-`9>iWvs}8x6R!Xo9G>R*9atbLZ`xmZ)FP*b`?+ykO6%NoSMHof{U{*$-&8Yf*J2qFk5kSD+ z{!t_AxrbY6InA#BL{;4TwX13`W1|l1t%F^4>7Qj+1^ek=uPyASq0gLuKe-NA{rdFU zPm`kVd|F#{K9%$-?4v_P`{>yD_7TJ~`pbinqLQ7aYl};E?$lq}Vgu|v8ko|nu1ntF zYh9PT;$7z1r-$~vHhNaC4sEtOXJcof&lLJmsg*{}&q$V#B3-&yIo+(A6_9yD$5Dtn zL>lfNP9oVC2ni_FjxgmK{BhVg!50N)%^}4q7CYnTuKZY! z$1COe=0kRoc3ou6*%vYH*(4j*#A_4w^~DY4Hy{ZV*; zj>q)r0d ze6X*$i)N3wQQyta<@UG}{7d@YUKg9YGo|aeOWf`Tpuqtnzt26xhf6h z_!;}^_Vr5T54>0(VM9;c{#vxA2|o7HM`<7szxL%+3leN<}M_8*mmQOj&IYV(+ zNUSJEmO31)H|Ve3ht?~+FC0>i9GCIfN!d4nbp;$;?R1`$`1EhBJm}YXVt^a0o#4=2 zqMggV;BFj$H#`ycUV3MS4VGpqzUmEJbIsWu(SCjMf2Dnhv+hGrwM8jrYaeoJSbvnh zrl7w+({mpEePh@UZJz6g#@eva5jV@lKrjp^4RBv$~A!H9}cW_2S$)k`ZKFc~^da-u4 z7xXm8JWG69+HJD6{F5-Bz#Y_K239UlK}~8y94=U49dhm2Uuc`CwNF~RrXA2rjuezs z&P4L(4R0>kh*W!ySeVFcD6t0Cz?qqkSLe&JipRPf``jwMAJ{HOA|*Wi>e*_{JgALm zQPEJIJK9(Z?jvda)4aqCYjX(TsF1fbEHw)+@miulOq7;O1i+v&ageY~r;) z&l_Mqd#16JoF|cKc%$x6u>T?#^|F@^lt293|7K&ev;2Jd^?OpyzCThA zLlyijk%zG`hDz&8dVv)(RG`c1q9uQ*RAxX#r83>T=d8q@(%vO8U46~Miu8WHyYG4S z?=Toy>6VUE`;H4)98i*GZOnyoc-ag9Z}wxQ6t-pXfez%5SQ=y2J}cxBFeYxWx*CSH zI`c3*>`PWGb3s^SR$OVI*V(@&hC4#sma(Qqf#Rjsa_@wC3BF>a=IG7u)s%#IQrHsd zyE>Q_5e#*qWBVoacxGaQ)dE=PEO_N{dw->@G~_vpklWgd>Swi@Dy5DYn)sZ=Wc@Nz zIUDzs7<3UA&Ma0oxduf2(sy-YaDw30_Op7jLrApXi@l~Xs%rwC?&^%rKXsTSFXE=H z%NXC< zw8qR&{A7!N#!#MnN%4TKGCQ+lNl4|@VJhb1Tf&U<&|Smh(+K{N zvR7zeZ?9Qoq2nAfz%YHE6`^xaAD8pZ5)$n9Ul({2uFV87xbb8n2OAMzpDp|iQD_Ja zuw25Aeuv*#4$q~yXbZB*n8RM)E2qVOk&8zJ_enup^c-aF8T#?yQZVzca#zPG zK66}6yjfwx(3(is5f7b>>%E|XudrfHao`XN&|KEGLCRC&hS$#6+y|?rkrQ_xS1ywmV?9{xn@P}niN%}396Ty+ z5X$skeyk)A=Bc(*?&_TBG>@?UB3*Z-KT{#p66G|QC<}57+b;Ne$0F^d<)IueI#-U< zsE#ZWF-dQ5!DLcd12LR0(?!dxp9`+L(Dp`U3Hz5A!ULjP!^(>!YcTHWT=<8?7ZM|+ z$$r(L6;shGD<6t$9Yyjo;e(Yb+nuQ1?+l77KV zP8Mp-k1pFQNo?O6DO7@aPM{`Z>Wc&&-#mM?$Ig+}nzIG;0e8JR4sXAqS;-*-vFk?KMX+SP@menUu4l$4$e^^9%7)p%CLyD6oLG6!u}~ zF?Y*q3g(tjekX?V`@s3-cZ$1kD7eAp9&nfQocvDdCBGxiBfni|%Wv0t<#&WTUDr9K zD@m5HK4nz}l%>&jD@m`G(1xOHXFxBh7*;I96Dh;< zi)1*DH8w%M=0%F&(7$={JOb@;$(s8166iUJIecNQ3A7*Wt7{B8@j}EwuZk43$O2t+x)EZZ!QEl6zcM6q!eR!55* zWxH#&g;bRnn;y(+APf5?vN;x3P9&Hw(Jw3#yQ_1KBx@hPJjx`dhxNos+KOls!6;rZ zhOrpKOA;*>s$E0V{jQFAC54?>#3-9aMWYpJ2KSnWPf6Z8YE0|)B&~n;E?g|ao$+*V z#SKMQ?3SbOYCXcmAK=RAx>>snb3RX8M!}4?f`#k`wL;GAFI4q4SO6gK zl3xhPC=(RiY=$JWg)UIL)y{n2?axy_H^Tr!MC_X9HTHv6qx&~}-;Z9wpJKyza?B)V zCo2{s5YBHCY#BK;| zx7&dBV%A&c`QkdtWTJ@^9DIDLAi{YSeH2>hBt}s;RdU)V^)c~f!yT&&rGYb6WX2WP z8tx>C)?s~mFyni4+BPMI74}egR#aJdxn^fXw(uby8*u&L)B1zn zxij2C>+EcM1@c|W*Zs2m4sM;IZ9}PIZIx{x;d_Xw<%i=>SPk(`4vT;o1Awuf8i<+FE- zf}h&Q!MA4WTj$*~2xCrjJ7;^as@t^3XA;O5iXJGdv4MJbZyyWzK9*3F)^P_`JbMQv zYR&j z^csA@kW)<8yP&@xVf-^0dpTa%4KgX>ux@;2@UL6lE~8#CMMzqd_NA}yw^Tp>9ui+$?NQ6cn*uqoN@V*rI z7b!TlHP>#5l=R+}Gl_lgwJ{(40~>R^J5N#^Xy$*iB?q`INhFQ0Dz*_iAry${8#-dX z0#Y=*2kEGFJOd$y=8 zU-k(GNAs*2@8PwCpLC5{G@z%gsmbnq*iUMCDAo*WqQ}-S2^-tHs5qCLq64)Wi*WPJ9R-*kKI+90mJ&sb#s&UC9ZFCy|SmC7JzvuU7u}9yg@DRv3jdvZrCAv0|%9pyy05F zlHdaKOWc!Evsc*w**an92ZHOR?^>)BkV>Ds_%T&61o~{X)jAai>#wPJz?=APzt2)dW93tQHkILvT`uhtf>qp`;cWAk7_(BQ8 zTJEs5#CY*c+Mfe#87wq=iktjscqh95&P7L$&&|>*`*~a~HV(KWsnRo!9uVKFxq#pP zORo4fw_egh(0s^QM_!j;TYz2C0cVBVnsESb`(rw|feTO^dy7J7Sw*uPfk(HMll-T+ zz()QT8M;6zUG`nQH1t2j33lAlfMLPeObaY*6iGO<@nU^xv*Om{A}1TPu}bwVs{(nl zBAJdV;f`f+cWK-& zzbjh28mO76vP#*pRaPnc6Nk^b%HE0&$1lR71v1oRHw4@w*MS>B4}@1G|6nk*=gs^; z-KZxcI+*9DY;0AMk;4)$+UHetZ4<#AlDPZWb#ze=+x2ERyK!B%AAU z!@0TYHP9@Rmi0Op1fPDw6~{ZpnX@zwgzG*D7j4F1GEP+@nXeN-6pWxkNV|{*HlBv%d$OtW@#jg?uaf!dXfQWG&BE7Ks6|dh04}tru6C7#wu9@IMb; z2^M9%Gu)TUrNPy5)MQW5+{msd7A%T@vp}DdI^AZI-`2NCsT>HE%7&r?qQ_~CCBHPkp^@#Mf($7$rK8M-W@`8i5M7G=9b^?UB9RoUKR zf^s_+_^ypdO?w9G*EnJ0*mDjs6+dUUb0**A1SjqUr_u?|cbwo{WN(!nc&F1J9gTOb z+F&{>eb*`k&DdJ>0xY6v8M4dGGI}Nux?0M~Tltx{x&s7++40It@+^;{WQ{WwudFr) zcnN1}j5`Eehv@zz->#L8U10nMM+$2^$<1q<8M>ASBfY{HF6{h1CasT}jq*As;mK8W zBr^2wVC(cTN#yE2Zm0L4PrjY=u*Wv=i*kzm=R<@=NH2Yoo=+9)snL(;c>1mbGNS$H zM^;5Falc86*~3LoHP3SyketIFFU3k5TU6Q01EM8wWT2Qu5szHq*7X+y(D}E<%uZVF zd@WyJtQ-DqfGzQT1HvUvPdG58SlRp&-}3iyi7`sfhZCeLf<+G=4tv6_J3jNIGd!*c zE|s__kHrZtg{^Cvhe0c&-`Qb$DP?|| z5FREV-PSB|j~!Q8Egjo{jl5$(*nw@7ma8nI6+L;5$ZV3xV6xt8N~SXS>~*aP3QJ?@ zZmNMFI2p;mEn3nzVfVz4Lm=0V;aZ#W<+@NXTlct|90AgAf2$0qW89gGOd$4ha&6hYSz))&nVfJ)iJD-v%o+q=-Gon1vQO6q6LLIwbDllQ`0y%466Hs4>(3df$ved}4R07s z<^;Y-h32~ZRZ9SvXGIg`_fnZuh;;0bb$}Fbt5dm?vBYNkD}tfSm9S^2Y4&6Nosb5q zr55)xG3zm_6+W$<*3S*4p6FDskayZXs)(DD2>vQL*3; z;_vl>!}w*-Y3^x~ZsMo>;T`7yYo9f@f0Ut3uH*>G|54IkBo#b3roAmxpINGo z4lo$nR5EJ>+meM?D0*N^Ph@*?dob)OU4|&);a3=MTUmX79dD6ZLG70WbBkj;bh2mK zn$HfOI=ER5uS{`LP-_QRa0>3;M(uTAp)Jok#%of2jZq5usRhI$1p~n~AjX*qPY{+` z$BSKI@vW-MtkZt*NY8_)LD3(7(2NReWcm3DePRVjrz(&#>teZPgBo@MG`QSi7yG1Q z%05n(FF*PLT_bzA$fOwhUVHOB{ONdp%j0gLg2^AFIowFm$R_p0{y*-Dur+m0sSe}l zlYC(TqcynltS;t+hL5;3Dif{S&b%-44etqy{*pIxuAyFXa~(ORHd8;_Wq;cx`nK>;O1#Qy5d z(x||s&1W`l(m{W%kAsP2p~YSOkvCq(%?`fA;Ugu!*=<&XzCqMN?3*a(WfAkc7y$UU zI#VqUJ13p|k~w~TEf)3x7EtuDfYJwCW`FUeQ5AWZAvkpYr3zEke1H-=&5-CleZr}H zh*IbeeelwP%1a`OS*-W6x{ax>>+LSx5{v$~+D&2~a87mFK4F1;KU#TdVYV%y9LUvJ zr^^J(DOv@Rkl_j`O+tr`W8MTWk1BrjC3wX`DPqn)NZJ^FGK{+MuP6J80>RLfUc$Y(z(AbA)Q=O{4SnEC=p5&%&Bn{Rf_C;teuiH|g54kfN&Vi%ZyVd( zdX^N8)6)wWn0=iS^yNh;SFGOIAU1WjXY|W{TrRudIMsBE{k7TZQ4wHXrLFD{`cgS> zw~y=9#L@Zv2Q4zB$Jp|yg8Y88fgkkCK4w?zVr5;<)ZP%i8~s4J(}~c1n4O7zEg{5U zoz+2FVCX4RGr#VPD1&3Ds(F@d&UTxC&fy3Ap|d-sw%U4q{qw=A^@8H%Izr)V!js(5 zsRa5V=%rA*a1>5UaXvLIesqZ4U<-|lahAjvwLJu3fX20l%BV;+ovoK{E_Zs#ANghe zZhZlAR8D%%IGKdGoo?0q4ZXbFt$v`Tnw*v*wHt!%r;Aioy<_K>n3~SIq+DC*5NoOY zLF+DwmV^v))L?BCFn{>-mlXDvlu5hwwLnfJyPcOEEG8z-MotE~t7xTQw}(0iinE#s zG?;2oHt%OPhGfvE%s?7@iMD*C+SMCgcZs;2`t>ad^+@o6x*{sBB8AeVFQ-}~XYwLw zGTri8S+vAykuzm{z(M&kJs_@B?KH~jGSj(`j*a?*M6>?DUzN#t0_Ut}B}fYmi%&Bt z$Ib*<;|3@Cc^5mmj_0t3K>3h%>)URw=Ufz(8Vcrn)$}1t#tN!QMRqb!44Y zbAYtQD+W_dAm@WGy+FlLkEofOK6;{mb&;m8%01tEE~1jzj0YD38dm|Ry6h5DIJsSX zn7ZJ%%0zE#$JusecV6uJ#6pE+F4ndVd}g${cplT6x|m{34zxk$x*oC zCx6df?5S(NAHDJSkz#E!`uBzx{e3~3kaIG(=qxo77ZoKDD}Mh=e;;u-sTZSo^vr+B zKvJ@GlCYTmz~}!eK^8_5=LN&=RWx zz+-uq2!q3Io3tei?j{m>BfA`W)kRS=i~NzF(9P+-db3pLVi>x3Z8a4U&QhzUfEBdT ztRTPa0uC?xGF3tFAQ$PnowSao6zrd1ph>pL=E^_+7CpYDvHYRGe@nDj?bLA8^X+Vw zFwQYwDO5s}^n9jyroV;F!G8|{!S9@!#i25~+wS)+L_;$pmzYeg^_YFW zO~5zGMPN%@prdxu1y1dR_K2~bN8kNh>Wl4sQbQ^;?!?wZbfuDs0X%np6DbBU07pCU z<=?n6pB{d&g3@RhPU@73UU&OFuYu^CZxg5;HJ-=Z@)eS?` zqkiNZ~;03mS?sXD=@db9ik<>8s--mzTf! z?~gy*f|;r>oAOB6cdaZc9vkMOK_9Yr9_UkYUVn2K1f?u$_6t5ajf5y@do!p{G;}Oy zvEG;V&6-FQZO}o}xx<1CWlJLpEx8(CR{%`gCR3_1S_S|Y_tADE@9Ln-`b60Wnbo*0 zs?OB|q*`1o&%Ccxb2tXCe+$0XYy)u9xP&K?zJo|z_67Q3yj0eCZ2W6X9|!74wM74A zWuzoix_}kHnJf2X(8PTK<0lzVak?^Pd$49b7^yf9cN!Jv4jCE?5{LB5yhKT+9qtYs*@lST~=l}Hj9M!vd|hO2rl_yt+3;WtF6U``1T zZL|WQ9q>;Xp95)Cmaxwzdj)qUMgHO+Q9Q8$X&nM=>qF`ol4Rk#dsw^O!nnYTrQ)Dz zP@EDZq9f1DkCcRT4}*5kr-RD_akt)~G4GeHn9rla8-|y5nB85IU>zGRaKKM;YcR^X z`NT|eFd}J*zGXhoxeY4ah6Jgsr~TU2ig)DMj4R0&C_oQJpZ+O7{VY&jN#ml+i-&F# z;~%+GYOUBQz?UD5mKrawSIX0Q4aa=4Z`6)2e`KD&lR2`(3eEiJa=i$Pt?Ze;(GrIM zh`&?pHnPh7=#iglDqL%b=vuwt_kY5^)nz47*~JaWTqTJ~^QQ9aBPaBg`N{gPpZrt^ zW-Rk@HII=0;^LSN7DH4wI;FhErY+Vn$RGL{-J5hhlsIOg>S+0@1gl>G3*SbhRD*pI zu2*&{3VioClQ5TvSoOvZJ5$vXlBY`%myP=LabNcQB%*^9+wr^nBgQ`leW#Bxo(F35 zL|#pMvMY>32YJL!d3_`{%dG}^NHD5bRgxXA=qxH?&Q46kdL_J&R96)F#R6a7Z?V*> z4d&yXcAqyALN*KOu%2#ZS8CwDCnya`%#&(BMOKi+3=$yV<(5n-YRziz33UILmqgCu zzWLpsll#W>^@mG}_;0>)9({e&&7sC#K;7BcvX;%aPf%~aTK-UZ$YZuO(>%`03|Wr@ z1d21$JRY1kJ2IxfGa%(?5t&h-ue$<$4OKk~syYQqjxp5G)zZ0q{=uA!Vy!G~>>>zG zE9*UW*ajyPN``)WeQWIVtWrJM*c$l=i+=vKym|*JThkMkqLiU>z_naOuVRL)79vu5 zXHt15qC(aNpLqgO8Jiyb)})4Z4c1AaiwM(*;|2I~QmE}YoGRv^xZUx7CtBUMERu{m z-az|a6Uou6LN@ne8e}-xV@5d8d9Ce{iW!2#7(1b>5VAtN4o9#RKSiwv1Th?TC=Lye-ig&$pXQh^Dlz~<>gD65Qsm8$yj z@O@f^kDdf7KlaOX%O;#BsnT^CEds=yMD+Rtn{W-7zlU6q=oTAG#RG!D`Tgs3-yR#= zNE?O)s^4p)aL@9d;O}5C-}){;wW!_#KqpVQZ=F4ay?nt^fYIXvd?)Zmb_jTcs$b0d}yFSq806d1qsU4K-=zs zj(T|4|Bk99vygEg?J-rmqo8W|r}EwfAb;(-Ri4ciW-DslJwK{>3EBSw$VNz}&EGdmSEqIhfuR?n(%xjHN?9UWUs4NKZ{W&9su_Bk zdSWdtY{Xf9hHE}=leUbAzZk=Z_W|OCVui0Cij+7IA5t#jLvRF4iz#}6)=3;@tR<&H zIma-gdJ*2U8Ml-MjtygU$IGi4nFK({-&CZ|SimlpDxHenT*_zt66J7suyytDv>MpZ zCx>cCpQ;q+-Jlm>;7m$Ud?b!MBifj!eSAnET-5 zf`Ra=P4?Dw=_@>?rxUQbHc+(x@mo{0I|5xxV!7i^(N4x^$SMMXP?igp|o?IcDe zrj=M!Vz%kp$4%GHH(lGtpJqH70V7o2A?esI>e$?_i|lPj1(iUp~$8!$(d8`;RQvl{>F>T+Lkg~z;leuxCwEsA2<<2;emC5?7M6P(Wxqi z?5k8v%wdHkb-{<%k$pALoF8dKC?vbRkv95J|3Ji22ykp~K7gaH;+Kp|#6B-YNPhax zki=D;yx5Q|(r%IE%MZu|d^_XX{j9clw@kRBMN#REru3L?M4eOQ8{F&IufH-!)Uh0k zJ#HzDKVB(bi%QJleMQK{QINB0R3-jKf5Kb%+SgU~**jP#?@uy8? zF)6i$^LUt`|MoyL#ea3S3HbX{e|8fv(;96)Tx9=EKU+UFPfQHBDbtckq*5)D6WLVD z#Kf3P%h<$-^o-+?@>%<7b>*NJDt|#FcdLIY)jTyZAl3d--&AWIYY((SWC+DLf!3PGiKL@Y>Y+au8hmZ zXK_|t;G3kXvHL>y5u5}66K>tu;8ZS3AtyjL3cI35zR}2HAUEVbY{yW{>o9&xELQ zAeJA%2exaPUqWChaeZqAJ)IhKT0z0JB0&O$RI`eJ?c|AYIZRz=C8Rl2XJq&B0K^nm z71N=jd?Cq@H96zp@|;n;HpzIVH`NxV(im0vtxSSFT)G;$R5Z!N zM4S~W9>VbA_6*0xy;Yg0SKfj2iHGYg2Bi+CE_$C`Ux-K{sy^`A-L(2M1jhISNAXX; zf8C>enJ{_k@2@hhLG)I3iE}IXUmL$3!}*ZhU1IT$V`7dPx?c=aIQioj!z@~ykLgMD_Jr!%~fS@6Xrt|&A9NqGuh6B(s^ zo}tL#tg%=hQUGs2kiQiKU(n`5qpNOXLEB;TA!nzvP#_;qwlZp#xtBl2exE;@zNVYj zq|dD8gjegvV5r(o60b7>!Ji-AP; z#ZJ6EFb!V)2~2|>G!6DZoj<(jgqa4TXc~;6X)una!6YVB%~27D9$lBmo$E5+Y=kzm z5xUJrs4|yjK%bHl=RX8C0a;FOH>V{ykB;vxoJR-#`P}p9#+&NL*56bQr^Q(rS)NFT z(=B^4Ek`mqk)AJqXv0OyYU6Ck3^|P6ZRsJ0kT_2%aq7`|vD3+&ND%e^*cmA)oJGB4baG7=3V8UnJ0m=;Mmh8V zPc@S9jQrc8ui!JOJDFca9BJ&m$O>JNVy8>5a=QHzYbTF8y;}s9r{x{l@oLu|Ynu_! zjHN;guEUQ7aQ(n_zhfn?P zSAbfN|nM_T|~cFIDv8f+mFkKogJ~EX&hly$w3V zI^IsgcDF>%QtFUDIDGhQMb_6}+gkTGSTI|_MM-5fq7}2{WCGSRu$1@qN51y3tsd6K zr6ZnuSf7NSc(h&yh&Oc6_6Va{u7=`a9iQzFM@ouTj;wF!#f%HA=H7jHJ2Csu=LPF! zYkDZ^fp_bQK-d%-!Tg_x6}XHxxuIcxhcSO5amj7w3bLpDVjc~!Hfp|N$ydg;08ZFi zUVQ{6SUsp5C`ouAfK=JRKgK* z@~|clLg6sSvFlo6G@^rxj<#R1f{mr1npl-C1*l@rb*&Y~jp7ge*&~sX>&$o!d{r>Q zuow9w5rQV*;=b%ckT`U;{^%;>mwoLKC1F1Hh$Vv_wgl2Ry)kese-e$skU{k$maVx} zzwij`N>A8cDeWj4c*Yu*G)~wKt(3SN0>K$WFY(4w@^28TOueD_LKYOtqF56PL} z4*e%;C_j32@N=}ybh?zd?SZ3P=4QOZOtU7ZcSeL|1}!o)kX94u~x0?$gM@w zRM-&la>>97@ks^qTvI$_Se;>5$* zHhB40rC{?0Lpq^d>a@Zx(+X$!GxwT<IJv!=<)#8;bs&*jgWg4f&>tl|{>6tkx(*i`iJd5MCa z6rcMDo|hiTW@q%J&#VkB!cxQ!N+%{#G`G5&b+ixcv|on)vYE42Q6AXGoBj><+qUz?rl)f3^ zv}~qjYGQn*r71BEai%edI5FY|qj1no4+h&~#)(MztXuKGt+$-Y;M?i;m->!wt@#}V z>P+W#t+n6BucO0ITlZ|lr5K!wJ*DiQSNTnzj#2{K8cUZnmaYy9=V?tM{`D3t=g(3& zP~w-WHShnQTn9#WcG;V~PMR^kO|PFhlL;ofs`1`+U;1Qf$lB{#D>DI_M3wI@fd+}W}rHj*NmcP+mApvkkDmEV(U&YsneXi`^k zA0jBpf8G!&Id4BA*M`V-A3D3~5bHvmCp8IMbR0vE^9W}ycBsZVymIl2~@t4_*Kp{c4d1=nq8(Zft%m-6TZOYnolaN$IEr%R*>joy2VCIKe zCAfl0cxP8xd}|-=R*dT_!Jz9bcG|!YY^P(phKUsqR1u%~0U~|rBUu2jlZ>ON55uXy zlke5)p)4P=M+h1q6FOjA2hU#Po{QaQYp0o&zaUri|D$eGHHhM zVm(GM)De!^v^nqiuVILvuxH-jx))KZrUiGBFI>q-wTH}vk2lJQRNX)xae2hOE`mHA zEcgmAq9n~r^m8jygXh^0+@UrM9S1h{KAa{fE|3Mfs<8!$`910O=c6DQw+tUn^xWR- zjBl^8<&{RHmd-SmzUr7&Z!kLZW6Tf|d}eTGB4~5Z@htZME8#+SC?*Bq0brro=j2Ic zdtAjVt} ze`!)ArX&Bp8@73^`A2Z+Mz>a)Pn1(hq?bw52Fjj}k?igf*M%OHH#t#ZL?AhG{9EYN ze=S}5O1gAA!ol?j90Kwv4z297bi(4vR|vHve`)_U!N}7SPLF7uu(398rTQy5`~xL< zYhW0kyqyD>oEYY6&DyQA)^Y`4{Y8xv7T1VCWjBP!HLhi764rg4qncF*PD1(WS-!Nw zG~Y{{z;BmW(UUcgg}A^HeLwE{Tv(5INHvKZ=#NWW+mTA#Ab4qFEB&9+HMCa;y|@~B zY_A-UgK&d3uEskow(7rqb?9R}7Y6Fkw>nRfqp_i14`tGT2nyZ5%;?q_*DIJW!I?Yj z6`}CUHjxo4yE6Xwqd{?Pbz-uB) zBoYxHVTJy!nk9Oo}hV&#_kNb{VJ^n~+~<~ko~PNL0uP2J9G+F@SPA^voj zsD+kbSYQcy*t&~HkeS?c_zz!3eN`Axn0T@E0~sfR^MkD9lU_?Zh~2c8D-OY%0J z4`i6y)^!wO0vYXx0>2@Una2PvkoWNp^J4xVxcdL#(!450g?r$-yn(xJco%nRT{pOv zjv^QsD|z$WHeBS~8>D8u9Qb8lD)!61lp3;pbZgx?ei?_7ZjJmb91CgYITjmLt|wUA zc!s&~1M<*%Kk&-JL&qbJy771#%w{-jkDlLQ3*>d#nu5Ik?)G#2wZPvBgmrusQ5-Y& zkAunpOefv41;`xXs!wFBH!YNdz&vxU=fC0==Qi1IUQ*m-|I7Nz$_qdD&-|;BJ-7$n zy2OPKhLs8>l5YL%sZ{&HzSp%Tgk(9hB!h&U!|NEpCD;j=!o;JP(%Kd}3oB6DryrN|!PW$7mA_S^pSMpWv&p;M`f;Sh@%vfK?XklyAH)?|RekGA>(df(#Let5Hom zk0{ya7pnd|wwBm@p{FBXNteQBtNBK{G;lqmKlzFZ`36uq2Dg4GP?3cvh^^3b6h{8~ z9~$qN%{Uk+ zoJ&qa;VdLsCr&P$i^1+Mf9M&)y^g2Mn@A7o3G~k|oc>8XI=VGd%E#@3dchMvfT2+q zTO;MY#0@KZ{->vg`oCSYlJhQFifXoIcJSN}JXG}Dc)EuX!6D2b)0#_+OSjxQEZs6; zL_>M?)!o5=*R}=!eSCiK->r`ml8|oM1;9Y3)sL(w(trMW&g%g!AKbinIk9P+V!5#FSJEm~a3?Ci*zgX{@&KqE~+oI_+ej(>{i-+pYf?9PLes zG3O|?sfp~lTCJzo`Cjor%6#|QXa4Z9&0lNRUSHOmg zFvB7|10Oec@_+gO_dZA!pqZEIJ8}xD58EX$qQ^9X{$MvX-PVHAI~FRvvz|45hM-!c z9@rAT<^gUPbt=zarH9@TynC6e1_-y0bl%o;7SBz?A6mSAXFYqjJ^O6;>_rcrDcux2 z_^jrl2ggG`{6R*obMPA`CdLzo?I78aL~6#OVNTVpTq%9$FDdA|Rb$^cKA)Pte?(se z=cn|QmP@s)Eq|!|9kT8~UYH)TE-(*|fm9-RWfI$4j6alWp0p>`JY`2zA|)u~1oyt9{n9R^YgwYk4QIg^zAp^$w|KfQS&tn;u(I{>u~NV|j)VAtsW zR%`5X%wY>oT9mb=^L$P3Q$5$!~IfWE&N7OQ3;M8@Xp)l<-4*{dhh68BkJEEzVPU;bFD$0pg(0@VqI0EbLRZx)^n%$w$y_yIPe=0(D<_r* zMHZ+7`QKJ65?ja^gLQmk10@R zL)@!g4AIj)DpFKrAJK4B6+e#4aP|xxWhX4&$RYp+^S2kU|~ss-Jj^Y zdNx&yGqxDF_8IC4>qrB?iDxDABe3&1wp`r=DXo1JZR}N;6`z;rXOX-mEZYT>O`c5n z4Fo};|E;4!>2S@$g*%pQa?OROdYG1xQgn zYT>LiUG@cg)CK|laz}b~$>vAeOyvikn_~1RYbZv>MVLDyiQ9p^Ya!vg(NNq=C>N8| z7BFPB!M*lN>UO%^y{iL0k`LRKIvVV-U9n?DqVOzGf0hPLwNGB5*Lk0by$gV~yRy8< zHhhDEcU0f?YNoMycdPKz1tyw=srfvTCyu*=@|Xx^szz6m*o-wuR2Qc& zVk?SuuHnf+_0nLSYgaSbFrjm@(%?xXF&c0xx`cHK@6{K$*`2;I(vWVpK(>Z1$HD<+ z-1ocl1rcXXECHX^)zqwX;@*~0TjR=p?yNV~&&5WEqVE2VeBw*vjUM8Q_=SmTF56RD ztrbkSM6?88H}qK4Og{Rn`3*mMHGW$C3&}>;JqFPjzFykHANdx$ z!tqbpy(=traOhJJOYK$QPFwV+h}w@^xIj3o8z?c6to@hW1z9$~7fc;sdPe zRTt)vA&YR^X(dLXS5@dzsMLRw{n|G$xd?mEQ&lE*CDVnWa`Kc+5#5cq(3rQ`tvxrE zGT_a#6Hl-aOf#d5`k+^{jfciMP}&psbzT+7U;;9eV|rsz!fZJY2(8P6 z#go|l%dQu*mE!ju6MaST!1C;HV{PPkntNl#vI`)FH}o$sl?Jc(=DOa1*`r!j90Asv z(0_#u9JzFx4C1?$L~s7^bw6cl^BFQORu%OlYf21LGcvUDCw#o#63$30s$(go$@)^h zUX-*XuGe!7)Okd{NSWH8F~%c{oRQX{&T4-2lYcM8-7K@JNO^Oz1QoW%Xs8j}->X#9 zFB|mt%C06B)tfo^B48`XsA8PMU-=2&7Z>0b>-DoiFZ!z_-TO<7Eu?_}Wk0&$CsMaB zIgSw1ei6BRSWuXR5Vt=(+%-JFCzjj?~g(kc~H36QZ z=<`R8{X_&{_#y;7>%bi;$v_Rw?_cu?{W7rpC)j2ilZ_Kr)l%l(;~?*^{MaDxdw$H_ z)y)j?JY;l@9Hngek0T|{_zYIg+EKxd^ht}gks|l_k2PNhnE!ouaCvlIgFlKs{?;3j zc=QV7sZmI=t8v2ivHbWP zu=a!Az{`GYWLSS8-9GU3c^V~7DHSRtW-+R8U>=2iYrfDStTQa!Sl(;(SPQgL5?<-t zGjtGg7@c(K_QnaXWNabx1@^n_!SsYz)S~9SW`o6JbFHL@jm1}i!<79A8myJ)L|6jE zb};jBCOzTwR9?|c4lg4VTZYt|xuuO0PS&_{U3 zM;z7)wnD8($k!yy`4YBVi%C4g?xUA+krLucB1R|jpk{TVd^Q$mjMwwMz!hsy?PzrA z43H%fz zmGa3Vo_%wgo#zbfAtIE(MR$^^-Ojz;n1EIMQrPF2tni$kV+d%OwqWVn`e%#GP%A z_Smys%`y6Af5o4|7bj@jk}hCvucZlh7B$+;e~-8ZPWNJE3-jv&^_pjY(4BhwbwK6R z0>vMCjizoZ0CH$z<}5;&62R@AcG&>T&sH#qlkh-o^1c2o-;X%+bPz~4SWkxF=}7Wyf{ReM|J!PiqQ(QW?#^z}^23Y0KoP^mM3gK(5<;Pf`l$dX<ORM@C-J%+syYHbK)|7vjNC)b63zen|}}@-|ni{ z^CA;r!{lef2&f7tk4r z2D|OYC^3PpEG^etLwG*yCh zU{gG9B+vr83F(GSAaZEMMS@KLxjv_!?yese_QP#|^+)k_V^W5kOSc?$w=jSS@6vJ{ zJLhqO+C6FzyV)4<`S|)PD75{@e>WHe;U+(b7|~MewWm_;dyCK}?Po#gTKRKGPcOc! z2Jl3+pux0P_ke1zz1Vk{G3$aMhDiJ~OoY~3stBUG!>UWz>z;m+7n!E&AB0?M@8dxg zn23T0Jd-Ykz#R^8La1)a?FI`#A?)SYD%VP480uHOv&hdB7~3UM`qhw^LWyTQaeum$ zCCA)tN9=Tve62HAC4Nyz`(_#YdJvBbfl&JCh$e#|W+2C`?29u|G!2|6$MPP`2xbBS zvU4YcbD-%AW`b62c3m(b;Uww#&z+sz?r>H_kojkul>_77cvk8jI9pa+9oPX)mzx=z zt3M_y&-9*yW0`5IclXnr|C#j{W}KW<7iPj7NoHh;=y z#bMriY*xbgsCyus56ps_q8*x;H?wg#jlCviohGtKLhyX&m6EdrM4_}@n4I1Z&pGKO z6!z%Z*EpkT)Osz#gks`2HE%pC?ROT60D4k0_Vy{i_d6$r;h6#q&m^`m`D+rvoe0il z!|)usuC?|Tp(+Z_RAMq>-wc%!W|H%V8OHpPpOcf3ID@sq`~iKB1Z>jFiN0w{9K8-OAK z6<X4|)81MfKmq-n9L8_)l)X^)lOvthIg_XRXmXYrHm6a<y3FQ?E{ zI(x0g*=w=sDQnCUo0e+96no?q3B>8wNmU(?94NQe@C&FiO_AlV0U6+=@wG6hn-pz< z7eW153}R8!PViXlQd@bl(5!|Lh`!IT(i$xA$E{9&YySBn$ap9nYQnNjsV9Y~X%GS- zCPt&>Vus6Y5wZR7zy6qd_nAwljq=pj_9gp!9Ji_lhD9&_m^|+_-=f=x!NlwC zfoW%r%S_BkA7?yG@weBjGt9uR@mul8bVu_r`&$aQ$F}B`+w}*2dkn`Bh*2jXcjRyx zLk<@hat%h{fQYQS7k}TDSNb_#`4}a?BLk+Acx+1`_+R+M**4#RKcmgpaOJXK3;iXV zne;Em78*VD)R{j}|05zY&nk+>k%(-sqomBVoTOXL8u_*z>Gl_+jV*^VrN>e&M*>4I z{gJ23TmLdv5_TQ~d1kZ7Gc!Zzgl9=jrqZVJ!Pe)gHQ|`Vgj5QCaaB=+U7gfmS2;D< z)lv<1)m4LCy%kF2A?g1F7CG;4ld2T-KGl!?lY-rJM?~Eky_-G9l+^%|Mz|q?$fFGt zBDp?E;9piS1xe)wC6EP|An5d?6~Q(Pe0<5;YKAuC>O9RTmt7j<|sC%lq}g3_{7bKS|fGfe+r4_TBKj|wvE)p>3UZ39GQe{qQzRifQmOCv*oDC(vZ;3Ng4_n9D`#=4x@C9leWhIQPIbPL)K)%33+E!0qMtq9Q7*xwmW5v8L!cmV+)5`4NJm2y zdX*@X_7@2)1m;u@uNi5cdokOA=do5A905fi0eqi~`aWqNco=NaD3%Iuy24Vp>dKYj zI-wP2>_aN%UaGEOpfa_ATn{<-KMHh9U7}u46#otubbqDWp`Rii^)DHR2+rx*>Jrlylh=QC<%EH&w)|3d_Ok%8SCcIc?qi{7$3kU}`jt4t* z-=VybiYF6I20Ob1rynp^xu>nu~hNK37~s3zVr^WIjFw zTQ*G9))zJfbAtkwRX|W3=wRUA*9%lZXe$Dq8#D!bT)dJAK4WtnI=r6qHgITtq{KDq zpa8oua0*%lE zo=^vN5vbv*&}mQ2hQnQ?y+}}05thDhl#q6=;do5E4>XywklAv-|1J8AKk{SxB|Dak zui1%gNbVck2Y_6;oPas|@!v`yEvzX{c86hnE*Yh~?J1nbE)9D8Z#7>m1vrE0HEXPc z>00p+D0VC9UdpEcJd?ms#!tk!H;!58CR2ggMWMVcF&~6;Z8_Pb=F)Y+%`6UQpMha$ zK}>MHu|z}ExV7py^UoNn5O{c@_OjG!@yzxTWlI6!noh7lyasE%Pr|DM?U?K4oP~mD zpkdNu8lH%A$0?axnVzw<%4)!mD($bCBclQ(EFRAbuowSJ>lXp0pzLuD^r6NfM=`9{ zlJt=MYWsq#)NM+a9!*_2@IP*hl!(;pdq@A*C=Sd;Xce+1-EwPnx@E$!bjv@EKq%mj z`rGg5?B&mF`qzR#^M$HYXU^`g02+fE>Bx{Rt7R^;OpPtaU90lOmY3*Cg^tYbz>(RJ zDcwWHufv&-JX_v+CN4*&n~uy8B)?`e_;V6ym`5!=^^`d@#f<%MY(|N+E9|N@%k_Mj z;~LJ+<-^mVIpiFg9nPUK??*YNy8iMX#i9#DeSA)z+T)9Y{&w=&;Cz5#@A`r1QuFGUJow+ zjO9eJfesTJ+$P0NwnMTdpUlgl$~`SqF3EVCa00#Hj0Zsy;!}A(AEBjNE$*%-tl4$& zy-2-So%~l3oJtfC_o#8XZ25NDkl1tHXDVnT;|&A1g?Ob!MNWp{sut0osME3Q9-ynp zcj5aX&DE-FTPuH=CpN0J@`~UZ^*9>jztFBepj$jc<3(1(9zF+G?{k$LXN9t0-e(3R z1?pICqgi4IafW&PLrJMTUvxXhEd`#aY+?9xO)>fr4C1VIi9GZg@Fxl`0EN27%6-6d z^#ZQ`NviEVcA*BEA3N+X^uNU+?%x=3bEUGNOu|OIqG%2qcqKVxwS`eMQZ%p3E2xC_ zvo0hxS5$4^|Y>aJAjI@QEb6bJy<=I0~^m#O@)=ANOhW9F`@0~aYiVuSHD=g+k_C{({C%rdf~ z4lQ!Lnhi-ZVF0XQfiT>lVopA+|B^pqns|lwKvUTE%+;_h6Ls+lf>&Lwj{(_d+2F%E zk(r5^t`bOg{49qN@M7z^_qd&WB5nL8bM7ZQ=cS5vb|SA<1o63?UKw9|DJt|?ziN`L z@L4@qB=Y%m3)grZdI6Dd7D4Z&NqMd4tP~rpv-X-`7Cua`3_j%jN!wzpUA$xoX{Q^k z3)^X$lH33v4Q7?%jjPcJS}S@#KF|Pe2pa8TpYwTc2F_t6mPc%Y<<)3G&&CdP&1UX!8U>MUwfWBcHn-<4$eCksnAx0m1idEN?9XlC!TMpkI&MIWkCmUE>pk8lJo zAEU@E5ZsDpo1Y~6;97GfoCC?|DH@#M*|t0CHv%MI5*IMc^*C9$vxivnk)-d;Ow3rp zFrOg<<9KQJDPf^SAmlj%NLAQqrz&J(4f-B0A2BhuU>$RLG>p zCnwdb!i9LJnTc6KtyLuC<%(8#g>_?Z=Z<)Q8)ywjn+VJ5a03V7vg&AZm(NVhb>QlH zMV4nJo-p9^zA*k}ARrsyL|S+=6LZ`*^+m(bVNJL)vApQUa>kDAt93YQyn^K#!7YTG zmG?e&^!C*od~zbgUhSJHleo^svIcdD5xhh#7S~p~vBXI#o$m&iU@uX`k}PxpGcnfK zP5`RX+ad@jFpTtF3qk~51A~wlTa62yHzn%ajca)0I@kLq7%aCm&uree!p0LgZ9Gam z87_WfMS}&Xz6hTku$K4<&v#>%{@>)Tuuw1GjJ#!704 znnHL89?Q!L%CUBGq5_w(i^IpAsoji(Oib%DHc_2av)|yft9QyJNlwjjUq)r#dI$MA z;wgOtJTrM3n?c>==BYaPf0n*vYh){UDN|E$b2jewaMQJrAM^^|YZk1Va zxmDU+&_>x;MQD!=it|u0QYJD&uqzF<>=9KD<=}iGs>ce6ta_^^LpsB(fxWBon0wUN zA+MXU8mvJo43LVY76p7!_L3rjokjqw2F=fr2`=IcEpHAV#YH){S{y`iPR&p^Z&pJ^ z+@L62PJlx4_?7LwLLT^5g$6tZ+OuL>ZIaWumNiXwqa2*q6R4Hul~M)~`uY{ZR6oL> zSw$k$D5ruh*cdoQHFFGl4%)mNga7P$JMIdR?cqveb*27et}yK8NAZg}rfUnK$!&q{ zW#A^eI%M15=SbxzWF zD?4sVjN^0>E1FDY@UKshwI1v0nl|vO}7=GE%NQv|MOZ8%wp^Drq?upiNVS)#M zr4TQb_yx-}nU8A;jJ>w)SGvL<6}-%^u@0&(_UTCpb5Ddy}w{?Z&LmZI+#m+{lW|0ER!4ryn8;uX9QP zC6Br(i6`$>=sqiX7#u>VpR*>yh_rkd@4e4hMT3FQaqBmyL;+=t$0CVJsJ{?WhkELT zi!Z*wd&9U$&sdCASYT9ja{G&xLAy7e_?C%zZf}^L%AT_VwcL5+yo@Yz3gu`x{UgHZ z-^4<-xo+@ttzs?m^URPPoc^z>=F>mYTgXw&+v}MaV05G13&{wDg!aa+;_V0K++T2# zp-jG3VtgUbrAqhk?o081;W0@<5C$5f^h{N#2LBkzeaLL6=s$KM?+Qn0Gj7&s>yiu9rd@>=LAgY6_5Jm!-aU%zOv$Y zRHiwTsLG&?da8MB!uvQm<^^S*OSm{$3uh8}-PqCvpmUb*b}%m0vOd-RTr^cmQc~2} zHGX7!d23IVgku~TZ@NJ03Y2u?ke5=;3kaM}H7`sYB8TY{i9JP;sZ6s0tb_M^EOOOm zsrdOWV)eL-Sj~13t7$G`HOWP+th?7dLw^rm-~wL8O4_U*$AHgQ5kao!nhizV7yo^M zDWlO5EBE$3+ppdt{I_^yzJ}{vZvliI4Qi>!SJ?RL)q=~(-MwKz7{<$q z;r^D&LM(4l_~t0p<*W$#?7dG{*qgJ=dq!?+g#a!P(6Ho~QPN}l;4FS{wOiFK_7FRD zafpKg2!ek#(ZcScT%*vsLo^2v$!AGfB&){11y3j&t;fxpJ$O#UWqd&{OR%it^EUHJ z>GDmJZ((Nxq z!U9=QF{$Tyn?>wQAiV{SokxYjy{PAx*xIcmjD$z9E#f>CeuPoqtHi-E(?v7%#9iS- z0U*p5tKgDu)}PTBV(Bv_T`uaC`wu=xX9bJ*sk!cxKIMOgV zs`bF91G+T$qL3--VuiXcIhc#=B6jCqM+8iGl_wy zK=2g?Y%^5+7;Rt1!9+~eW6?WuU-2@h%LR4OB`wo+6|8odx{PQs;69!n)Fo z@XfR+7|3bj)~@3ho(dO(C>USm>O@z}ah16?lco9`i;;cej&gemTj_J1RpKFB*9ZcS zc2o-vPyzx8Ud4^DOf&2lBXSS{RtzW^w!E39>_WR%1z*l8JY{h?#gu}{*P(dgoK=Cp zoZF~OaF_#bSc}XY#VJY+0$&u;nf~avbFU=uEZE#oAI+P;Uewl zqK(y>ER@QdnV8pm>a&{}=G==$9*R0yGz^FV28fWhNHS936Fd!5z;WJbq7^r%#`|#C zjRtfg6k9}&+$YC!uEvD>W19<@S95|>+Aa#0r(Cp7@akAy(tQ|F4Bv=L)GH=<`3d{m zPtt_inNJ#I4q@X4mFs2~JJ?lQ@u9PT)ryR{C$qcOnV|<#zQY$>r6N2{e+54>Qq%Z!kKgDTx?+Bi9xuWqIl%g zh)-4CdPR67xKzu`0(aa@Yc6PK(?(Q+kFay9m}z4Z;iwnlURNtMOq&5Tafi%u*xUd> z5jQzaFstYf_C%XICYZtQ;Y3eWT5+LS!kU|-Zf*{_?PRH`v55gXk>=2Sp&UG_tJ2KE zY8|SVt7DF!g_DU|XWp<<(*K z_6Wp5qJfT9%4^pV&RqE+x0p}3bu-p6ukyYk?o3)#DSH2-`e{9qXflMGv=$a6KBurK za_iP}LZ8qA@haH?;qtuSfw0F^T4I2n`z%erpQ7W>0OBZoX?Fv{AX*83feZ6e^JVTW zF{{nbk*y(nTmx$2{&z89pUjdBBWwxQ@Qm~wQ@pHr=3h`|Jbbc8FxRk-vd=akIFq#H zRnJz>(VV)Wc*9czA|)XhlV}GTlCs4Wq8NiyH3=%ZZhLKkQm_K2bPL7H<=gc{iemX?hRHeonC2f>@;+;UuP4h<9f--_BkLq{1ws6B$w(!AeW zuaxqvkm~O^-s%!#Rn{^0?No%=QIlY-OI2O4QL$N~5uauB_%fRD8;>Wc^>;#rZOB;?L?o5JGJWbLwIAH>(x0B-Wo5=Eo3YaQaZ%S}v< z6XS)%UnD49U^A0dv4l~fn=ENry}4AYt^n?*6_JvH1`JmFlx~M$mp|~Ex`;UJfIAQxnb~I*9C@>h zxz!&!ULRheG@^vYFS|jn9yJ1!iHVqzC6449espL>q(rvj!1wT1Sf0b*rgw+h&ynT2 z%wgV9&j@+SEjJ2>7cX-iy!}DDE|a2J=e%On3tlGXEM{kab6KP$?DP)LhE&nsRHm?- z68&VQ4g3~A<_~J&PnK8h5Q+ic5{_?jVpyTR+mZi>HHAXZ;&NO^O*&k0@(N1jLpYa0 zgG8mXah$p#eb&#N{9%}z!KYwKaJQ0ohRa54P3J&QO^hl;d`Vh36?VxYm&vTH)Bdn! z^hf^WQZ=;(Esk!Ao9!YZ{sS_|vnT;VYN?~wb5fJy8yAJiqv#WXFC$areB5=*6 zk&*(zji)duVMc)<(VdM)-l4Q6d*l!!fh&6advI0^^xY^)mM}HCz8KnXFG93snI{FQEHVnf$O1k@HQ}}W&1f)-j zD>c1`;E)CZFtR8D@S~YHyNAOZ9l?~&VJeAQ@_;_7!yocCa)`PpE?`6=xOy!;+<~Jm z6MYIPa0mV6WtOq_%Z5lkqnAtej}^A0(Vnhk>hvko-#e_n;}}=MAO1X79oBx?ZoM>g z?WN%^vj_c#7qPA8X5@=rFYc5d=&OSsyHulWSEy5vvRQf*l0!o-ArOSHMm z<9)OzdEVDnSX;t)g9WhSvG>=9sJI3|vAL%!iXNgO0kvNb6DZueALK5a*?SiT57{6x zet+oiE{T-%(m_|K6e`!jr0cy9!7w11MV2afJXXgWTx*AxR*Km&XRN--GAQOphg@>LEr_UDG{ynP`BfrH0wE~jYc6&jJzRF4?dM0g z+RJ;X>pZF*8FU-SU|h#X?dqk7&>z=ZXbze`^5HVulPgO~9OSM4kIDrx;(55xg$w;b z-zm49TCWg~KX6vLw&)c6G*9RlHK)<{FQ>WLb=DUBn7%f=p*-B8f1{U%eyF@?i*hdZ z$BMQnXY4t>(jG!8RysfVm~Em%mqdhe^!snWL_^%EpM%zF$xsB?;CQzeUt(K!zOCm8 z#{-=sJi5)U^)B%XxclLDxJ2C8-hA*)0OU zT~!}v&VMwpI%jeFWl9-1HuV(Ar-p#wC_cHh#Mug|E2GEX9awoomZfGW<=%%EGxoL- z%*ESBn>9`4_kL=JK`KuZHQq?20C!XC1NtcUqUI)!F~0u7#=n3QsC9fPNW zo?&njR1JeOplujD78DMHbD(n=+{AWjz!iD#Lwn5N=RZL8{S#8SUygCNd$C6)wO-;; z2xIU|p9W~CKo1RQP}P7}ZPn}B6{TQYUjR=)u)pn-S4m|s#JWqF%ywqvRBGeXodF^M zfn68HffDx;-^}ytEa&MW8G+7kpm#hHQLa;1f(^OJeX$kAB4J?MF+?-elU-&eBy$dn zdeOr?s&sTe!)IqnRIPGbzJ*2aN+V-m#eQ6tQlEy4^) z&sp_lKbTmMw|DG2c`jeZ`+t+m~m7O4md zUpy+|Bg4iJvQ{25;cK3!)Zbt+s{u;`liP905SwF+7qcAW#n{9o3g9>j;25&fj3OD$ zF!Eub%K7tNsx=0x-7i&K+ZqA(@2yGZ(!JXw%&!E(cO4?Nq|3bq6=aM+e9#Qu4kNQ% z(ZGh}v@D);;uc@v5}eN?e^o0k-K6p$J{(#9X)AR(5c;vFB*z^N=tBd#$Mu?j#T6(O zzy$EdFE`sFZlTqyM5DluLSmfzx0vBT$ozDLGWS!;lRQWLmuUu+P(y_k5DXOc>r)6o z@-AfV4sLP}U3lg*rdyJFtqhyqBo27uc&)mH++&Ay-TfBqW33AjB0Vl^%@0nu_g4~^ zZzWruVZDb=EY391)l3t!KUd}bic<;TVF_fiC=wd|ggceUTrfRfpaKCaqZfA!CDa>l zwF2jhT$shULepF zVPa=u15B=yxnBIVD^fF-AjW#o`dl2M#+puRSd>@Hqj8d(Sj?B*Cf6HQ^ZkU`n|+<2 zK1Hu90<)QMojfeKF1JW)3 zSe0(sbw_8BKK}ftiq8M%PyPY^qChF{Fr{2YrMxFpwk;7G%hgUVKX-xj^00zl z9?*w+8PJ|XrkA@-FH`Zi))w^ge5aRDR&D|4c|UavfP$puMY=Gxlz( zl+lX~8IL3ijgyJ)KEh^>xCPK)SKznFif#a(p~GD}BH!q3 z5U6+O!yah<;NZmzlZYL%M#{S>nN%fB1^JaK!E&&}(YVJ@SQB9a5Zm~snxtX$pl|)L z_rmuuTpcQ3;j8+QdmJOaFa)ma9~I^^;&O^xs+W+;i3zW$xHZ=%z3p_o%4xkXv2q_B zKyG3Y4RCH>Vk^Q8%1{kcj;>0sQi5BSNjgw!csD_x5ZjYv>#P9~76_)yoB z`>^(1z|meISAgY6^D2Q=@4tD zJ358nkGko3Ud&dlPE=PF0C7!RMcHx9mZsv*_(JX(d}p~dgq**)i+6Z)?3e5wmqx(4 zW{(nd13R3hcLtc^6MgaGy|%2r=Z<5Gih-#@EdA$sTnGip`W(0W#w= z^?sZ2snlraFUHW=(#QyE2?ugxe+>Y2$JYvW2h#kixb`rgCJ67E>Q|%6(YS(mO zp`lN8X2JVDWC!hz@SvR#9JK#fT{vvR^Y+ehMgGtB^Pjh*hn~Lwke#-p3QU1GLO}}% z7I_hDJei)5&*}h9l^)`G`~3@b-i~qS?X1KIcit{kgPp-@)r9j_MnYZTylr#m?RA zx2y$+K=6CbY8|e?Z$cb{mnyobkyq;=c1K^G6ftf3if+@$5rSZADPDD(3S2HH++m5x zTE%7_cpDv<7)?d*2BQW0El#z%4t`r6i5npQ$!BY_+4?tTo=VsalSX9pHP@lcV; zGnHY;E_cPrR!=_Q>^ZUd$S~p0&PCUGc+Yj!s(Fa(_5dDxpRi$}ov_0RzynTD9-xRk zL>v2R8xf@;L*oXcorbGc+-H^$GrE=c@g8hEx|QcWic~SD57Yc=<$82mpgFtU^xfTK z+|xx87OU@&(GpH$#E~m34T~+p2d-ss(k(vL_F)(!La`jPAiOR1=ZEDRlt#P>?J=|4 zgD1x`%e;W?5iC6|G;#J>Y&*DOxj(tJ#LYsjlkkTr;e3O|=xzKwUEamC55gy?vnOMR z5|J6oz_iA>ZF-=P_Nj)nPptes6s|Sc9mtkrom5o8s!v#i~TM~aMRm<~a@*qf*o4)(@1 z!F;X)ZCnz

    gOlz=~12$rCA0OY&m5N+K{{XQobeZwQDO<aSwMr#o@k%ZL2yiMk=V^|Lw@mS^oG3;?EXU{q z-Ey+XSb@Tir{yqW9@Ky2s`#vP6I_H zXz?>wmX%-R?1ctrFN~qRFpl=ZB=ul%wUD!&$?&){8Rk2aq0LN&ZZjF=LhBfY$#AHo zn3ZdnBj*n7g|BCe>K`|p{O|D#H?|yhhCpM>u_Auq2T~JWnj&W5ROud)3xD#WKP$QL zo$%McID%Za<=%~T8S9(!K}Ws%0qVu2nU?j9G8ZCi>8)?(F~Q#xo9(RTk8shT?3bZ^}kt%Xlj0}=80S`@?$07D*LfKj#w{04*l4#K^hY%&(v%!F+gN^8y>Pru8Ol`Bbdm5 zW7l9SVhrM)Zb<>dYlT&chWE*@JX^Nh6Nrk+O&SaG_-KubR-z4GsAoi`UZY5FmxjKb zCWKnIm&i+3WOLOaN!Sk(YUzjl1LUNf$al;!1FRpb25*Sxct_Ggb0T*yhP=)PG5dDm zBD-up#I@TGpxY0G;g+Bgb%IrmfPD6>SxX5JT5eR<79b@A-oKVTih_}>qIHcoHp!zB zvh4%LL%aT1k)qvG)Y*1uO}i-Ljb-BQ7*5$2avI)Cjg<97jw~BzTuLcqmm9^Xzg(%X zz44zoCjJyc%Al|9djp$nf(`PHhs@o;2MAv9-SU<+FbaHD2}oy4z2eJ`6^Sik+_nCo zMrd9-ilEK$eDCUH<{kETGwB%Za@uB>aqB zfipb@V%cm`u^A3FW`6-8yUmohZiT0^UZW9`{v;j9LCSicA&eo%OiP|Y|8S0>R%#S; zthAes6cvo+p-o6aAjd^3%&x1Bpwp&2!k-f#I#TreNNE+cMN-;tjU}Z;45t+Us-C60T|c(Nsgp8f=m4vlbS@e6siPWt!_?e-bU#h<&w>D*J28}GM#eFv!Igl z<7IEgH~ZtmFw;V0-*@o0H{m|~#J1+m`0K+(%Dd+>;On-+HxLrZ{YpIRNs$ZaD=;<} z-i&otEK%}WghaL6m>kfhxuC3723oBaa}Yyg|7Tdu1-xXmKc9-$-w;yKVn1{khCawe zUx7YGD(gAb$^>SLXsiT=>Gx650?9pSaKJx6MJu+hEGENb%K5obrwR(;hG6`@U&dAW zXnm0x_+z>n@|EwRE#JwGWuR@W782U`UMMPPtUjM!w01tZX#et+{}*u4=Iq~B8uRSm zC&%DZZci^dR+;Ybhv);(dWFa?7w)UH+dYnx7@8fym&=k z*EKBasr+y2zF_ErS$xau7cQhbfvd@{&T;Fe_6uAP0GJa(q)JSKZ0LJ1OO)F$?4*`7cN|A{9Kl>9MCTpje>#s ztEKezx^fK6_ZS27n)nh$mp!UpU;RZ4%u2kx*oc>x8u9XSBVJx%#LFwqGhAh!;cD{? z*Dz7t&RQ1eYks9tD1QY-ac6o~XT|U2wL3Gnbe3I^*NV*T`Jvbn4IRL5z&rF7{0L`k zGf0x0Kc8pCv5h!i0^?DjwXmJVwmgsP#*sk{-jni`8v|$HJSLpH)u!nX;a+NN*;0|F z-b!RLZa*2m-PN#6ug)a}-7byKqMQsd?j4Fe22rdaEu4Q`k^`)gDWysok%5(IMm3Uz zxWz2j+!oA`J>(>p>GqO3t!+Dzi7DG27SZXsfEqWgj!n?NNyg`eW$H#8l4ZR*xj-32 z2LxxqPRoABn&Z=r#qs;{m0LtbE9lpMlyhO0{&DkcIoHJN{a#==HFRu&SNuJtto7zR zD3ldm>x00p;8Ke*1DL;_3`gv0t*bl<+v_9fUl3=a*Tu6F-hrf~?WBKTEbP)Df*ToM z3<3+Ld}R(yl~t`ledM^s`$F+DTuq0$+I!O>xYRS%X_Wk-L@8>2nIU7J&xfuXq03HJ4T+ z3Ud@hVAm1^tviff@0F05^zd2?_W>}4Jf{8xbecX}!gxg=zWEzm?+J9%olzv0WxKFJ z{0(a##uaebo+!YuDGQFX+{g~ago|M}>r=3ocv!C~Mm#D01*aFU^@fZ#FGSW1UyNvD zDxXV!9HNXuK1;cV)mn;=uPaONZT<+nKW4&7=g7i`N@G9B6@s@CqO_d^JqjZBsq8Wz zt=C!@XuP?FMXqO~K61WQ6mW;PrdF-eIuVOat&kP^qk?ezZBFun&D_;%R)nodY9y$ce78|Sk+>sawnr+DlcHZDT>Lv3 zoI?BxAr%CTeaO}RpJlrL?d93;e1AECk6!Y@0$p+O<(l1+<@{iQEw`HGNkL@V3SNNe zl@gEq26Uf9WU?R8!@~LO{9tu+VS_E|2K0SGP>(lY0IYVqD}2Tpi{dTHCN%34tmj8G zsrcC{?X@}F(jtp2q=(P~f#MrgbE{AMD8mx3<(vy+if+HMf4NeC5o1lvmJ|aieqU12 zgL^e*B7iqRm1+_EU|9VXcudDpc?jwRnfnz9g+p&wD(eKnk`yV|NGe@YG@EXvyDlX& zOOY`?+$)#olY~!CCqf1eSwxT6G+$sf10lm0+|%N!A#pDE!Z|H<^JuA=Ys#a+U1>#h zM~%SRsX%r|TwwpHY)Ezoj$6{;)&M3^V{s$dsrVi4JXK8L760vSVqw0ApDtKJ{h>U6 zda9U?I2xT+)R?r!>+|?;cNc{vrp>(6gr?mL`b@l0eo=pS&zth!ZZPY?nfUhIz}&>3 zn-vn^%HTQ@8=<3_Pk@Vb`cW9R=a};HCT-eP1o}$c){%gh{y1~#hPDs!?mm5OtLx>*C4#OfN?36LQpo4<)8HcZB#D_afq3A5ZS*h;RLS3zQS|s9f5HqTe_{pS_s(7R?)FFApkI z>LqF6#q73MXG6NxHbx$01m~mG^U$YA%OSwxueNi3F9IIYNH7fxRgbiFv2`IyaaCsi zS;H+Ms3RrlV1uPFzz`oMh3ufNW)@zbwt0MJ%shtmix}*>>qg)DDWvF_$;2MqG4hGL-q{Z(1eg6{^J0!hbg-sG;DZC$su9Fhu*K9aQTzC=r?HJ}> z%){Sgsz=6<-)8^NM9(9?)%O0!709P$mOx_wL!KLpkzVs5!%ig0ESs=k(*ar>0kH3NZHdmkZ zp}hFlFV6i({I{nyC{Ul{znz-nzm=M_ba4rS0^3g`6W!BL)FUqVLj}r!>%B|SV}*>F zbS#fgHwN5QtSf6@%{sI8HSysw47e*!4!jQ8T#1yxb>F8_TI23lPRCnzyl&{206*r`ldaUZv^Tu{L%PH42% z8z>6q%Dc=84_Y%-nH2?dlqh54dYZS^K*DIX~}7^ z=F5cMcR16s7bf2}O*v~BjilVfhxA1V)_Fp9ki7BGN##m4o{mmh>uolueN39Vd_An? zWap5lB2U#tL~}m*GF$b$B`qD1DAG4S8s#rK)bePBaG2g1#)9ZEy%UdE$j-*#EVcWt z<|fAyB=rBgaG|1fu#RMlC}-WibH`NkG>b4I@4^xiHafQ}-LhWFCC<|2aPDXm=SG~M zad4N$WjZ6bW!jZHG#IgW$S}Rb)&djkHvrowgCa~aBk0eMz(2aduzlMY7;?AT>e!^< zwqfgeC*@u|Cd$6KoB4Fie(?91RLFsgCCX-_O+-L6=Xzec8No&(N80j+DMm&zAP56HitjE%TjRvV>@nx`!F^%m4jHO+%h~A|g+Ib5 z{SoGraQAyPAJ9#X`F9JA?n+P!3?Y@>OwJDG#MWF;WQ|~77~s5LZiG`Aa>OWqoxkzo z(E;=B9h6T=jvXB=0(mHSCDHryqBd)@IqJswScvp0x$j|zy1OJ?F88CamZw{`)#mmm zB`%O>IBU4cx)_Enc1vgU6?D)w=%8ybST+FvxEhW;WA+7E zA-{hklQ9a1rcQP=1oe0eSM^Rrfp6}`TiYtzVvgC?R{O@SZO%no+mbizXx9J@L}tdh zTx^TALmwRBS;CFNLDyarp3x6V1MDn$kMw9Awazel61yqKH{KJD)E%wFS=W|WfVb>w zg>Of$#vGCJrlv%@ycb_zjL7yq;rP^uNm5>zJKYy!Q@bZ)?7uTh9siVtrT()+(i;xR z5Rt_k2{Nd=fCBBz9{}N!9L;F4Hilz$fdWT@=eSQ}k|-8+{?D*>`kp+Uygn}Iq(p5g z)|DV;{Vdl^6$Jsgp>OB7?9*|%vr?f?XR?G5Kvd+kt(xS19`r-uP<>xRGh6grZ{E)^ z;!rBsgc>@A!V&uZvuZZU0iI$-iN6^m^}pl^a_4BlINZaDH&z7 zO0o%q!I#ED>NyFu8lXMNsB76n*vB5?P?UQ6a$!;%F%dnLiJa`T{i${d3ZDh|wM3#i z!As4Z7V%pVmodsh8$tCHBq-vGR3=gab0Dhie1C_$sU!8-CXQaxc(Mc#iYzn?gUGem zC<`&r_&r`2#%7z7dPqu6NWfwDC~`1ibq)96f$s%vmn4{^KTq4ngTZ;uv~B#g#&G6J z{!ogN4iZR$dPbxqWQ7TP#2yoVeVzCt@KjOH&zbhEe#Gr|ur0mD@VG|lrre_`Dq0Ad z(F3e%*w8?LozyEUqhQjWPmr#%4YGjBR9FhdWJ1ZI(Wv#;hq2oAwDL(PPo&0ykO?v) z_s$2Yuf>JZ8ZI5p=(!O*yzC)W_*L>$y$PcOY7Rl@0)p{hhu7_(Q*%i5KAy;~c41AH zWJ5j+$aV_d*-XM(Hisu75=SAG<0v}?n0Q4>ApwCzJT%#HcH~ht0zXH(MufTq+v%S) z=EiJ@beayxT%B#bU5f2V5TJfKBnfKDg;)Q*uc+Wnh#1{Xzn6JYI;Gq=Dzao?d{gel zF|3OPZ^pVPpZF&7Ze^@pcTjQYtWuUqhyEXmvJ2H11uG;q+}!oXzUZu>*MWRnjx@GQ zszOxeIukFq89h6^F=J2QodQcE7^0Ma+s%ey9A8D3Bo4-3V)`-pyt*4*M$&jpsRdcT zo?~mIj*9;rk*DKl^cEFptkEm3>See+&KJG$@9HJ^?x_6JtEOsCV<=&p6 z9PyMdbBXc&iLLq_{`8;GQlX%Ip{&|Fj=0w{-{UjR|;HhH?r6i!aBqUj{@;RcMpowW?GnS_A z`#oGy@;q(jt_Y_zDt|*^nv7TR@RNGxNhGo&Jy`;~jy1_UW9e&O$F4DGkg@;kl z+8i@_3>QFNg`|rW@iCl>AXC%z+1151tm-N<;>CaEOA~+4RrChpMO&P5>Jc+s8y~YS zfr*Y>Yni62ZF`Pf#J(u2GOZ3sK7C?zazn>@&fd^PH2%fdIQi6W1*Tk( zSNMp}gV@`*Al1pxc3veqEBMN5~ zUh)|y*3k5RRR|ho4IY*kWCMz0(a}cQ0gA!p>g$u4K1M`V5jB5iOZ5RBDz1VP`l`G~LS>+~6b*hkz(Ou3L@)qybC%Aam zJ`pb7-}0p?KYOAmM?`F`{oHTD^_zP#pD%_Q1*f$#+E^8fKmCLrZlA?%AQpQUZ!_UW z{B)LvBUF+N|W)CY1$0^-AOQO5@mI$!KpKyD*nqq;6}DnObR+4&J!6Q7v1-Y~ zI27_QKAFCL!dC{13NqCLLcy3e3PwjM7^{#3GD=3~txE4b`J5*9RG-qaNL7|ssWyi^}-&KHR>CpmZS^C+y977|h7u(|VKz+9$K3|$+q>D}Y zq>J?+U7QNi#Y%AA3DIIjTzDH~)0|bJbc?q~jmO||D}{SJc=^)~;;D}#Xd^FtD64f| zw@clV<8a9ZZhSf8XK$57tMF=siLcXAy4$5dF1@H1QiwIbV#L5J`!x^l$gdI6{FSnm zAG+A^-9*TP93#Sr^E4OQ`7z{)kLSn}B{Al1&>&A9dE&2hZC#cnhSxot&z&gWu6tab zXn&>}cHp>7wZKhc6~9gw?P9rbKWP&y;vnjBK$Tbts>G=v9RcTvAk*iwB4JVA?7Q;$ zxbAy*9{&5GH`Mz|h3_NE3o?vpvDf%Eb!I$pQ)eA!#)!>~h9b_4(Sk6eJ7m0w#)rrQ zQ8KId$ft7rTS-uSWWcS}3~ntSvt|xvO)F+i8)gkED8JzZ6XqSkFCQ(_D$4IEhtl^D zO+x&LQIX8w55TcZ3DuS!4oNPa3twZk}1RyAn`v6X|3Pze8&gHq7B z;P~iO?fSjuGC`R~5;n1j^hC^&D+fkRL;>nNn}reS0CY%G4E*D8jC@Z%d8yp%05LNg z(Mo1QshNqGCC-<~GF^dXgR;azM@M-mwlQCXEb`mrYL+nor~USH(E+(x#r?su433If z>x;C8|I@EwQP#y#!tbDjzY>%`Q^BfNkHy-A#X1{{b)M|>Ob~Htq&tjPPkC$?_C1o% zZffiIz3Yc@5ko-AMdEzXQT;0Sg4S(Y4md_WCAs}n ztEC3p+BdT%sw+`l5WguC8*f-#-vt4kx{% zynF5@Q&2O`0`c^`x56r7Vb&K>9VrPXFUEMa>^t_{fGflyU^r+GPWl<7U+vJ`Z8t>; zGrJuiWhD1ba#+asb~eFyhQC8uIVAVtO5iYbi?$>bCyemz%ZU4e1@QSiQ`g+eSmZvQ z!k6L{=FtoVGrHhBi`DAggB@X^`hfjPYV5uW2k<_Irs*2iithx-Ie9^*#Q!gh^_Sp9 zE<^{0JfJ;)hyv82wxzL4jP}#r5$vWQb3y$AiaoL+BZ|zv{hB=Uu_^CJ7~l|GjEDg5 z#N!eqlA{LQg(vAxSD$(#HRz?J2L0Ar+rz$aUh6U)Y+{wz#HL~stH&nRgiUNVHnDlI zSh;_hhT3YiBUdTKCJQ*<$O~%!C4MyypDXTtJGQi_Y-xYC?A(R_JpYKYma$UpTps_( za6|VC#X@9Obeb$ADATLI;{UG{Bx0t15kRLum49wQY2+89sww9DSqV8Bu+d=J$XO4R z#3otc!B{_?U`^BhlA@_V$H@PA&*>Ht zTVa#{YlUbDqUs4&M7amCEg=JYOL;;z6rFA2Y#&3ygITQ@IgCL12u(UMw}Ka^GAH7K zk#bbQDC_W6IkE20k!^$K>QQ+-<3ipo3kV-U#vs4cajkL- zMaPp$e4^wWKr1|x=`8z`OovFC_cs<8%iCak4y>dd1k3ogM9a} z-cJS00Vf_NOo983XT|bC>*aj=3=*mY!HXAv1vxY1>XFT+NZxAMo$O4$JgC}Z6mLX9 zD7yACqUYq-OEh95feu%N+hIQv2Now~q$l>*(~Rl3VtT2ml+>Wx7T&apo+luLOrej#RWNuscu z9p|+IkiR+IS@uKeWGRwzq!=kl%`GJ-lZ#hm^LR#{DkEBP=J&sEv5 zM<_h*;)zeDTQxEIwK0c})zL5O%4^b#goFepv(8CE1kRoGfFbr?wPw&IHQ6qSrc<2Hb;rXG&LAfetit4R}rmhKew`23yv z>@guTacsJIgha$}4UC)C*JN2Vp`eCV3i@W^%|@&z2<9ZkHc`#d4-|#imI*mwCD>}J zxNCXt#O$63eP@WR(gGd@lR&%}^U)ajWXj|em?#A4ZdI57gT13#I<%8Okf&Mn>&*DX z-y`Zg{-gXULfyr)_`CSwmvDzipsJt#d#qwItjFtwmOv|cQnI`g@Fj5Sz(<#D+*=pw zyFt6n$LjaCFn%jGzZ%bRQMivqHfKY;1v-%$W|BO46<$Ruq!_In|uG|LJjk%0y*aCw^!W|P;^*sud zhm@)?{K;7Z{bN+wWq@V(PS`#mo5C*i#`oz_AP`X|NskG89zp5>jL(rDD;CV{f^pxY z(rPI=r=;HS*yWJk5~P9uGA(-^+q!mRZ9hT;W{+3`tU*-cz}pLznOw3J81v&{-qKBi zOwyATz8(i;$_k&2@63S)wXf$%ic%Eb5f#AkCVljBle;UdPU_IpEv3FWffE;>Aul4zG0bn6qLnJ#uB!@_!&=B0Y_rkKfgf$3W4E+aqIVnnRtT-(Ly zQa+~q#AZL^URc9XIgACji;0Sb8JFW45itmFMZPaFhW$A7xtr%mj8H?nUJ2RZK)44I zlu~iGHY{2v0RySehG4}8t%X`2dg9XPO$CV%OOe82Y;%n=WEo(dwtgR{gZpXjhgS?aB(HU0G?gE33>KUTxkmS<3}8j)?zNfa87!`1Y@f z2m;`pUn^1RH|LHh=Y;cxf&^jZ&R<4SjE8UH^6gKUgii4K%Sk#`!o26bk`+mm6pL{^ z1li8qm9^v=z*odf ztZM&s2`jy6xUDS~1 zYa~Nc4-DMka{kVO@TnwHb%;;4T_y=yK?azqxZ4iwF!zKD>L3{%TyWfrl%Tg!Hy9xx z@Yazh(%Y0JXN^Cg)%v}m*!o&gY-{~_fh=d-Vl@pJ<(fdVeyQ>JomkFV%I%M!b^neX zMLGz!p!CIn^4NHHM5RTkFj#g6{Nz*=MeQC1Nd$f3EwxS47n9W~`z~YVwknenU5Kg* zB4TpEorO6*XnI+PeC=@7XryR|?^O}Apjk;g!cv8dAnG=lqyV!YFPYUDePvc>9Z!Q8b-|rEq-EL>Hm;ZSqsMhn&%zBB&RK7b?&|&gdIa4j+S;q} z24WlRO;WePjTREj6Rf!j>FK>BMLBZkCS}^(VWVvcuRyji{U8pchK^n7?nA{g9m+l^ z4VJnJCw>k5On<#4?&{td{1tzv%!wrNQyF;L!Rb?{XJ9fuN2!B6aBLvXrlSpieT}kA zc#O4p3qZ`GE$XtvXRdrSq_hey;vy7a$3Yo75LlB@n`~00}uaf$c8hIabnI%Uj|$&h@?Q8Vt5X=yx>#w z$kc00U9yR2+K$ws2;FAQ#P?a!_<%73n)3OH!Ds z*|;Q~x9+^~X^w=ai)Skj8WSFDw=0}9Ao%s^k_LyYr!Y)8w)r7bj^ed+ z8ndmBXjV3!uwZb4(O`p}ItY3b*e9g#n_!ZA83Z|7AqRh&Q_VrNP=e&P0o7u?S7q~} zilT+TLfeM|57{~PK;bkP8i;%Cl^B_ouy`SxTQK>Xv41gl9Ib=#;#CHojN^CnF?tH{=J zGlnE11$xHssHw%ahy zgj`Cg`;2*WfK-hg#3}W>1ON!Jw{R0RUmPC)iSD`R^5a8m3Xxj zk)C{2$M>06(MBn1^v=sTY4C5|t3?GC>2c3m${DSV?syYSM)Oz_CXD+6jL9_y{EsW` z;T9a4((7#rF-7G=9h`T}TYD0QJ`d+d9ASyFzAFnXyDRP?mP?v0wpPbDOdTIV5I@6V z%Wx3evS163bFZJRLsiv*nkVp{;StH(zWP`CPD}1x=RkKY&XXe#3p)^7QaGHGLjD=%X!?;(ZJHZhG9BYz%v~sd$qrWu!bz@gnS(| zN^1EQU;hd@%j&*m#N`M^db-&m2k@3xP|xP>V0X>2RT@mons0M~#_MB$|-#^x#~xyXpeBE7aO7i&IyACn8dl&Z;qW)b^d&52M#Jd8A?Qe&@QJS9DS z%7DnA<1OP zBqLh<+(})P742N6Lnp)j(A62cqkzhn$ct|`t}(FK_=oktl&uIYmqFYarm};_uL1M1~!gel)+u!SqiS2SoA$Sj8%1bJ9eR^nd_(h>E9IDx})u%Jn!wrkpR+9AU z^ijpeYmn8Vg;f?mtg?t=mBkpVEb3TgamcF0N_NFirCg;+Lz)jM7-*Sd;2$9d9!cs? zTts>m#$#{K7KQQHS6j|qcyqoh&|Os)GA28_Fh^R|*wHJ6S#t|5AUj-aB?jY^<7#DG zfkyZm>o+7QTaKTrw4h*hyreJ}i50f1fgZY0D>9GTxShv0gLyz>Wx$M zOo(1n;-IKSd5F%5aj|&yQbYjCt$Fgf*Ry1n3YzJXIj2k#7t$aNrF1EDC5_y^TSANk z3q=s_>g8QaxQ?aHHzhH_6h53Jx2^ZALY_Rp0!Z*i-?K?+8l-;GlQ49@1>08hy_7b( z*WBdrJF(R$u1-nfm>od^VI}tL;iFeEL~V7{A$^1N!F*7TpnRNtw2oU~8N%w~(IP0( zLvLh(e5Jm^gcs$U9>|XeGqj5L*5?&`i8myk!0IeLIVQgxLR9s`u@yHFGt-gE+&suVJ%QDSMr9jMpn5A$RiLVMJwby*U9E* z{7c?IUL<;*%C9h(H(kL|8ZlpP)Pn=K34J!POf8qEv2Tl;YSdaq522x#q{@nWnr}Ew z7&C!8!Se8**YEnz5%3pdCQAbZ<_>jhQWxRL7`_=y{4&Ez&}CF>6Qy19rHy&dD*jZD zCMi9r>w#R&pkv09Hua>)jhJ^U;<9v5h{&(@v{Zv0%3JQRPVKgeRo+0(KRk3r> z>5LhbB_N2+D105TRtQTYD&}Kz7;8U`3o|O! z_I0-qu+MQ>=8=0EJ6_XV)FGkq6PL4`m<^304oEz+?kqN;+>{?JP@EK|JPR1li^Y}q zyfR0n4N@(m=*5$=C5&44p`IiKN=oDpngu%6gU9yu30JWSRo&+;jDW~@rBx9XJOfE8 z9-4#gREEQ4(c&mL14j^bJ#P@4VFoL}$>&^}O@!s(*fOT3Kx2;>G4@|fAN&cP6XCTe zRJ@&kh+YzG+#OnGB_7am1fgs3Os(?ObmXSanlH$S*iiIhV~5b$cvGcfut_m=<6Clqj%zlU%I~5~Z4_^jZ9I0?bRt-UB4V+&=Uw92RDO$?U zAbL4lHe#4>?r_e0J4+KTHitqA@wZbNOWBno??ng$8`~!1U_p#VueMmD-Fp#8(GpZ2 z0I{L`&oMsLqoGB+g(eAfAiFi&PEh6?vmg;7{r`%NXggS1}{J=kzKGnc6o7Jr7AIxuJlayq9v9QKqTqsBWUnwlT}J_vHo1 zYK`lktXqVjs_Lyg5Vj>*Qwy?;5hSJm=0jK3TVut{mURnm5uv-k4xO)lUoPxEihW$3 zI|nCQfc~E^jTTuDcYCh8;e=t@9LB{*atxJ}eSB6!y(B*Z{g|X%Mwo4p_G+>PFCS4d z9FUTaB$@qg2I$OdL+lSF9-#c=k(dMsk9h>k=!}}48bZI`V%rCWF3UZfRlMo~c(%gL zcvEMsuCG%!b=LhWe|@c?Wj|DbBx2%3KoAu_&Z+FwozKOa<=qn!#T0{94D?(GGkBzm z%bD8JC}B!W!7yUajI9=N=Mo{Fa<3)jTl$)IxM%T1jo%|JLl87JEHN9f%MFJ88vK1W zN%AP@TbyREDn+UEYbDV_;X&4gX06mFNc>&8vYw%xb?ESVd_+?uvgq71^0d+S7+kU_ z%sFBmN8W}eS!fr>l%#f=!aauZ-(d?}GPGIA0e4hWBpwaHrhEk~lKps^CauZt4^wjf zEBvbFIcUr(oz@;cCUnCj2cZC-9r%n@)jxwE>pZozT#(+M#b}0F5GoRxkerlh!sy3Q z!ulGvfmNywFi68dO$KZ>QBq2%w<(Q4L{jOnj6q*-#AUxg^(N2L1ZK2D4f8swjh6Ev6`JC%z%nk! z{&Nk^yh7>kvdd($<&HLaDo4>lA@DZxNP(WaywKaYj$PhAbk=sS_+ zYR_qiMb2c2ID1VMTyaQJ$~VmILcTK%(-lCTiuSAmQzOel;EF8S`}0@n_XP$Dfd+!I z&!SDMxk?vEWB^@2qQCGsR;ieamRHtyS1Xm72Znz?B#T>YuP;`fDfFD%9p-sQ<;F|$ z3bf?!?-=^}4AFbdK+_Ju)QcN#Xn{hx1;%p@YtH35^RpIW@g#_)xj`kJDbXw;bA#)2 z!AeMNM>zi>ZTKo?>6(I&>?OgRKo90>oa+^IpptoyE#=T?F$Pn5<+ubHxfH}Ml@&^T z=$Zhwt(D%;Z!;$6EjcD<7G9)eo68~i&35Uh-649U8kXIq=|MHG)eEpB3$k3XHOeI# zp6-hg=LtnAky6o4OK=*i5zrj2*$QN@y7Uo|3507WD_81Og|VTrWq%#69vx?$nGx;= z1_PZ)kt~_I%ViG8I;zOCYUSH-0KaA6qmC7a&PPe!xS{e&Bs9tZXD<5?l9jk==>3Sa(G-4r1%4kEo;R_ z5J>yeSUjhV^IulL>F`V)4cEE&%E0O%;5i7BX``-W`HuWfV26HXm33n`v&FtMnUt8j9A6Z#JDT z6V26?Rvvl`h=65}q;o{i1UY+2Ro)2N1Qy0Y?gv48?^DZpg&n0p6me@>l%x_axE6=B z{6DT4=HNMotef_+!}~&DiQo?mh2S2_o$!m*P4iZSB<27>&51i?{@G)xn4~y=NefB~ zKnsgLMc>c`)K)ob+n_{Eb_U~=>`!XM=v75FvZrkqPzj2uTGJKAj_CO_+pN601^!TO_&I$D7sjiZ}{fkTE^OwRSF)tdW|awWU?Z zl7jP2mii%OW%$cTZp4s40MkqY0O}Y-K!W`t5&}(3Nv##(CQv{3!LP+(99DbihN7UD zdiH@5h`Mvcvl?Rd5NL~&p}tSJVTZhFE3l!OjF_`BG#R^C{JRk;a`Ac?fzrTTe^PUZ zS=M=k3`m;eSc+{OkfW4XH?q^BN(Be@q)}-d zWH>2@MIq^-yI297FY64I1@4b(`W5SG3)ry8wd_J)4G37qVF)=Twtt7xGZYVhky(wQ zFH$uqWrVZxPpsnltR|S9@xS3RMzHmb@eU@k^4jk&|o6 z&3o}wvV6Ur`DlK!cvkz-g(qlnyb z8v`Vl_^#Qi)LiOK`)w=l^9#GkTqG*fxRiv*Uj`%EY)w$Pywpf|c+wauTI2-aVLfjbsmh5(Z>2Ig^)eNSP@1SLT8 zZyS=JKg2$DCl$nm@64Hz*u^E9#oVSL>a2#nD}~fXvbj4Bi;x7oGAw`hc~bPq?W-9PkT}Jb6ot+Zemt%@u7ljPf=kp2)wZ+RNV45F1lzPU z+!43e$OXM=fBN~Nf{-6~1=qx3l;nxcC-df$JB!rhb5slq{Nc`wrd{9>+<|jTymV3WX_ zxrWpO3|Pj%LGr>ynJCKydSD-D%yos))^B2bXh)b4aF6ns>;V@b@4gP%9IzyKQ_i3_ z&S{3poA}%g!Vh-hrz8}-8Jl(hp0XnhS$oC5-N7wiH z^k))0j@2&Ds*Gtw2)$x8EVV6D`IX&aX6&_4evDNbZti$nt+DcrAQ|MNVDXgaKalJK zj&3I0m(D4&4Oo_QxknILM)}}rEKoBomdZz8k?l!Vq0)9K3g;SO)~ega9pQq3SxUXl zDG3+pE(f&tD*)sim333LO$IWoZk0LhJPua zcwWLOnUuf*v9L5?NkOY{c0p;6zvHu54F~h!u-prL3fAJgs^PeldxvmhZsj_;lHbNR zpH#f)q)X;vogl5Dr20vD5ak^8lks`%lVn=?$$6ep6L&ppn-FNi-fmb?pTWU|7PS^X z%{EMXia+~uu?;|l`uKA3<6DagG~_j5^;RzDZm#{U`D=e-hkoI^e3`~VJ)@5<9TeBf ztb^X0ZWLyF@^5ZiLkQxa&A92&jhaZq~F9k_uxiP_ZFxo*z~7bId9|B1D%{$JrtV>TPPcaw6Ox zz|e^eBmuIQRYdyYBuI2OrSl19a9qg>>+=p*lF>;Oct<{Vc0 zbS1X;U%q(3)|v_@E2_(}mAo6f5<@(1zJ%qoZ#M`NoXm_7hX$uv!=kQAgYN`gQJAi# zO<$pFx=Xk|ZGQu)PRR-s&GJsFjVucH?QIxmQf)XPnkf>2DRz0mWp#_EVQ?W)JiaqL3 zEYiY0K{zGu?#;(X{d98tN1GMkg(8kH?& zM~W11Kpz4u>mCWSRuAWAtrBd=P$;I{#i-M+q;jnsVjWtq;UD&zjlM}GRJ&C8%3Et} zhTX(y&_aUOK8U8_mfdRR0>yzUTd_6@>4wM3eqbf*J44o@gfa{5#tL{S__P%Fy1nT| z>!4>N-W-G3Cyi%Um|1Da3S&D-AuLkm_6q}J5|>H|=GZzu6FlhZ{S!A=YP@0y!k)#+=VygR~*!Zz*_LrA#q~Io*aX2EqGF8Tft(OafxcA z

    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%0DBq?$nVsEB- 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

    *q6i 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 z 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
    kX9M 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 z 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

    i|B9;5#>X}QO_2U@iOEj)g^GGB#?fn&uDO$ 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�@sQrt`*H) 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 V`gG#BYltFWO?uH!!( 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

    w1-TX;@j}G>;u2kJ}^zWwEG9* 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%0D7H#v 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�g-GkRec< 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 z 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%0AG`kda=)v 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�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 Date: Tue, 20 Oct 2020 14:59:42 +0200 Subject: [PATCH 059/127] Fixed VFO alignment --- core/src/gui/menus/source.cpp | 6 +++ core/src/gui/waterfall.cpp | 12 ++++- core/src/gui/waterfall.h | 1 + core/src/signal_path/source.cpp | 8 +++- core/src/signal_path/source.h | 3 ++ radio/src/main.cpp | 5 ++ root_dev/config.json | 84 ++++++++++++++++----------------- root_dev/module_list.json | 9 ++-- 8 files changed, 78 insertions(+), 50 deletions(-) diff --git a/core/src/gui/menus/source.cpp b/core/src/gui/menus/source.cpp index c2f06be9..2bccaa56 100644 --- a/core/src/gui/menus/source.cpp +++ b/core/src/gui/menus/source.cpp @@ -6,6 +6,7 @@ namespace sourecmenu { int sourceId = 0; + double freqOffset = 0.0; void init() { // Select default @@ -13,6 +14,7 @@ namespace sourecmenu { if (sigpath::sourceManager.sourceNames.size() > 0) { sigpath::sourceManager.selectSource(sigpath::sourceManager.sourceNames[0]); } + sigpath::sourceManager.setTuningOffset(0); } void draw(void* ctx) { @@ -29,5 +31,9 @@ namespace sourecmenu { } sigpath::sourceManager.showSelectedMenu(); + ImGui::SetNextItemWidth(itemWidth - ImGui::CalcTextSize("Offset (Hz)").x - 10); + if (ImGui::InputDouble("Offset (Hz)##freq_offset", &freqOffset, 1.0, 100.0)) { + sigpath::sourceManager.setTuningOffset(freqOffset); + } } } \ No newline at end of file diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 86c5f644..4b8258b8 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -230,7 +230,9 @@ namespace ImGui { int refCenter = mousePos.x - (widgetPos.x + 50); if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { double off = ((((double)refCenter / ((double)dataWidth / 2.0)) - 1.0) * (viewBandwidth / 2.0)) + viewOffset; - vfo->setOffset(round(off / vfo->snapInterval) * vfo->snapInterval); + off += centerFreq; + off = (round(off / vfo->snapInterval) * vfo->snapInterval) - centerFreq; + vfo->setOffset(off); } } @@ -239,7 +241,9 @@ namespace ImGui { int refCenter = mousePos.x - (widgetPos.x + 50); if (refCenter >= 0 && refCenter < dataWidth && mousePos.y > widgetPos.y && mousePos.y < (widgetPos.y + widgetSize.y)) { double off = ((((double)refCenter / ((double)dataWidth / 2.0)) - 1.0) * (viewBandwidth / 2.0)) + viewOffset; - vfo->setOffset(round(off / vfo->snapInterval) * vfo->snapInterval); + off += centerFreq; + off = (round(off / vfo->snapInterval) * vfo->snapInterval) - centerFreq; + vfo->setOffset(off); } } @@ -797,5 +801,9 @@ namespace ImGui { void WaterFall::hideBandplan() { bandplanVisible = false; } + + void WaterfallVFO::setSnapInterval(double interval) { + snapInterval = interval; + } }; diff --git a/core/src/gui/waterfall.h b/core/src/gui/waterfall.h index 9f766625..12d62c44 100644 --- a/core/src/gui/waterfall.h +++ b/core/src/gui/waterfall.h @@ -16,6 +16,7 @@ namespace ImGui { void setCenterOffset(double offset); void setBandwidth(double bw); void setReference(int ref); + void setSnapInterval(double interval); void updateDrawingVars(double viewBandwidth, float dataWidth, double viewOffset, ImVec2 widgetPos, int fftHeight); // NOTE: Datawidth double??? void draw(ImGuiWindow* window, bool selected); diff --git a/core/src/signal_path/source.cpp b/core/src/signal_path/source.cpp index e8412b4b..8e734a56 100644 --- a/core/src/signal_path/source.cpp +++ b/core/src/signal_path/source.cpp @@ -54,5 +54,11 @@ void SourceManager::tune(double freq) { if (selectedHandler == NULL) { return; } - selectedHandler->tuneHandler(freq, selectedHandler->ctx); + selectedHandler->tuneHandler(freq + tuneOffset, selectedHandler->ctx); + currentFreq = freq; +} + +void SourceManager::setTuningOffset(double offset) { + tuneOffset = offset; + tune(currentFreq); } \ No newline at end of file diff --git a/core/src/signal_path/source.h b/core/src/signal_path/source.h index 8ad53e15..ce5d0bdf 100644 --- a/core/src/signal_path/source.h +++ b/core/src/signal_path/source.h @@ -26,6 +26,7 @@ public: void start(); void stop(); void tune(double freq); + void setTuningOffset(double offset); std::vector sourceNames; @@ -33,5 +34,7 @@ private: std::map sources; std::string selectedName; SourceHandler* selectedHandler = NULL; + double tuneOffset; + double currentFreq; }; \ No newline at end of file diff --git a/radio/src/main.cpp b/radio/src/main.cpp index d5f913a6..d9bb8519 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -124,6 +124,10 @@ private: ImGui::SliderFloat(CONCAT("##_squelch_select_", _this->name), &_this->sigPath.squelch.level, -100, 0); ImGui::PopItemWidth(); + + ImGui::Text("Snap Interval"); + ImGui::SetNextItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); + if (ImGui:) } static void scriptCreateHandler(void* ctx, duk_context* dukCtx, duk_idx_t objId) { @@ -315,6 +319,7 @@ private: int bandWidth; int bandWidthMin; int bandWidthMax; + double snapInterval = 100000.0; SigPath sigPath; }; diff --git a/root_dev/config.json b/root_dev/config.json index c3ddd76d..9595ad7a 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,43 +1,43 @@ -{ - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.60546875 - }, - "Radio 1": { - "device": "CABLE-A Input (VB-Audio Cable A)", - "sampleRate": 48000.0, - "volume": 1.0 - }, - "Radio 2": { - "device": "CABLE Input (VB-Audio Virtual Cable)", - "sampleRate": 48000.0, - "volume": 1.0 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 98983691, - "max": 0.0, - "maximized": false, - "menuOrder": [ - "Source", - "Radio", - "Recorder", - "Audio", - "Scripting", - "Band Plan", - "Display" - ], - "menuWidth": 300, - "min": -72.05882263183594, - "showWaterfall": true, - "source": "", - "sourceSettings": {}, - "windowSize": { - "h": 720, - "w": 1280 - } +{ + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.60546875 + }, + "Radio 1": { + "device": "CABLE-A Input (VB-Audio Cable A)", + "sampleRate": 48000.0, + "volume": 1.0 + }, + "Radio 2": { + "device": "CABLE Input (VB-Audio Virtual Cable)", + "sampleRate": 48000.0, + "volume": 1.0 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 300, + "frequency": 99015000, + "max": 0.0, + "maximized": false, + "menuOrder": [ + "Source", + "Radio", + "Recorder", + "Audio", + "Scripting", + "Band Plan", + "Display" + ], + "menuWidth": 300, + "min": -72.05882263183594, + "showWaterfall": true, + "source": "", + "sourceSettings": {}, + "windowSize": { + "h": 1053, + "w": 959 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 446b3f19..5a29e31f 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,7 +1,6 @@ { - "Radio": "./radio/Release/radio.dll", - "Recorder": "./recorder/Release/recorder.dll", - "Soapy": "./soapy/Release/soapy.dll", - "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll", - "FileSource": "./file_source/Release/file_source.dll" + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so", + "Soapy": "./soapy/soapy.so", + "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" } From f6cfe83d45610d7b9addcc73a12cbbc83587e129 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 20 Oct 2020 19:15:43 +0200 Subject: [PATCH 060/127] Fixed typo --- radio/src/main.cpp | 1 - root_dev/config.json | 84 +++++++++++++++++++-------------------- root_dev/module_list.json | 8 ++-- soapy/src/main.cpp | 2 + 4 files changed, 48 insertions(+), 47 deletions(-) diff --git a/radio/src/main.cpp b/radio/src/main.cpp index d9bb8519..182203a8 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -127,7 +127,6 @@ private: ImGui::Text("Snap Interval"); ImGui::SetNextItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); - if (ImGui:) } static void scriptCreateHandler(void* ctx, duk_context* dukCtx, duk_idx_t objId) { diff --git a/root_dev/config.json b/root_dev/config.json index 9595ad7a..e7e945a1 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,43 +1,43 @@ -{ - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.60546875 - }, - "Radio 1": { - "device": "CABLE-A Input (VB-Audio Cable A)", - "sampleRate": 48000.0, - "volume": 1.0 - }, - "Radio 2": { - "device": "CABLE Input (VB-Audio Virtual Cable)", - "sampleRate": 48000.0, - "volume": 1.0 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 99015000, - "max": 0.0, - "maximized": false, - "menuOrder": [ - "Source", - "Radio", - "Recorder", - "Audio", - "Scripting", - "Band Plan", - "Display" - ], - "menuWidth": 300, - "min": -72.05882263183594, - "showWaterfall": true, - "source": "", - "sourceSettings": {}, - "windowSize": { - "h": 1053, - "w": 959 - } +{ + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.60546875 + }, + "Radio 1": { + "device": "CABLE-A Input (VB-Audio Cable A)", + "sampleRate": 48000.0, + "volume": 1.0 + }, + "Radio 2": { + "device": "CABLE Input (VB-Audio Virtual Cable)", + "sampleRate": 48000.0, + "volume": 1.0 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 300, + "frequency": 99100000, + "max": 0.0, + "maximized": false, + "menuOrder": [ + "Source", + "Radio", + "Recorder", + "Audio", + "Scripting", + "Band Plan", + "Display" + ], + "menuWidth": 300, + "min": -72.05882263183594, + "showWaterfall": true, + "source": "", + "sourceSettings": {}, + "windowSize": { + "h": 720, + "w": 1280 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 5a29e31f..b93a9b45 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,6 @@ { - "Radio": "./radio/radio.so", - "Recorder": "./recorder/recorder.so", - "Soapy": "./soapy/soapy.so", - "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" + "Radio": "./radio/Release/radio.dll", + "Recorder": "./recorder/Release/recorder.dll", + "Soapy": "./soapy/Release/soapy.dll", + "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" } diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index a55c9836..70c559d7 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -284,6 +284,8 @@ private: } i++; } + + _this->dev-> } static void _worker(SoapyModule* _this) { From fbd7321b48d0b9508ffef05bdd9b7918702a48ce Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 20 Oct 2020 19:55:14 +0200 Subject: [PATCH 061/127] Fixed typo --- soapy/src/main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index 70c559d7..a55c9836 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -284,8 +284,6 @@ private: } i++; } - - _this->dev-> } static void _worker(SoapyModule* _this) { From 087380c9664794013fe2591ae3a0b3c3417bda60 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 22 Oct 2020 02:33:50 +0200 Subject: [PATCH 062/127] Push before merge --- core/src/signal_path/vfo_manager.cpp | 4 ++++ core/src/signal_path/vfo_manager.h | 1 + radio/src/main.cpp | 8 ++++++++ radio/src/path.cpp | 2 +- radio/src/path.h | 3 ++- root_dev/config.json | 12 ++++++------ root_dev/soapy_source_config.json | 4 ++-- 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index 63165a5b..e049b4b8 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -46,6 +46,10 @@ int VFOManager::VFO::getOutputBlockSize() { return dspVFO->getOutputBlockSize(); } +void VFOManager::VFO::setSnapInterval(double interval) { + wtfVFO->setSnapInterval(interval); +} + VFOManager::VFOManager() { diff --git a/core/src/signal_path/vfo_manager.h b/core/src/signal_path/vfo_manager.h index 42e490b5..29bb8922 100644 --- a/core/src/signal_path/vfo_manager.h +++ b/core/src/signal_path/vfo_manager.h @@ -18,6 +18,7 @@ public: void setSampleRate(double sampleRate, double bandwidth); void setReference(int ref); int getOutputBlockSize(); + void setSnapInterval(double interval); dsp::stream* output; diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 182203a8..0967c718 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -26,6 +26,7 @@ public: sigPath.init(name, 200000, 1000); sigPath.start(); sigPath.setDemodulator(SigPath::DEMOD_FM, bandWidth); + sigPath.vfo->setSnapInterval(100000.0); gui::menu.registerEntry(name, menuHandler, this); ScriptManager::ScriptRunHandler_t handler; @@ -121,12 +122,19 @@ private: _this->sigPath.setBandwidth(_this->bandWidth); } + ImGui::Text("Squelch"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); ImGui::SliderFloat(CONCAT("##_squelch_select_", _this->name), &_this->sigPath.squelch.level, -100, 0); ImGui::PopItemWidth(); ImGui::Text("Snap Interval"); + ImGui::SameLine(); ImGui::SetNextItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); + if (ImGui::InputDouble(CONCAT("##_snap_select_", _this->name), &_this->snapInterval)) { + _this->sigPath.vfo->setSnapInterval(_this->snapInterval); + } } static void scriptCreateHandler(void* ctx, duk_context* dukCtx, duk_idx_t objId) { diff --git a/radio/src/path.cpp b/radio/src/path.cpp index 97f52962..cc49403f 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -36,7 +36,7 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { // TODO: Add a mono to stereo for different modes squelch.init(vfo->output, 800); - squelch.level = 40; + squelch.level = -100.0; squelch.onCount = 1; squelch.offCount = 2560; diff --git a/radio/src/path.h b/radio/src/path.h index fdf02956..7d5318d4 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -46,11 +46,12 @@ public: dsp::FMDeemphasis deemp; dsp::Squelch squelch; + VFOManager::VFO* vfo; private: static int sampleRateChangeHandler(void* ctx, double sampleRate); - VFOManager::VFO* vfo; + dsp::stream input; diff --git a/root_dev/config.json b/root_dev/config.json index e7e945a1..15b8dabe 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -6,9 +6,9 @@ "volume": 0.60546875 }, "Radio 1": { - "device": "CABLE-A Input (VB-Audio Cable A)", + "device": "Speakers (Realtek High Definition Audio)", "sampleRate": 48000.0, - "volume": 1.0 + "volume": 0.609375 }, "Radio 2": { "device": "CABLE Input (VB-Audio Virtual Cable)", @@ -18,10 +18,10 @@ }, "bandPlan": "General", "bandPlanEnabled": true, - "fftHeight": 300, - "frequency": 99100000, + "fftHeight": 298, + "frequency": 98200000, "max": 0.0, - "maximized": false, + "maximized": true, "menuOrder": [ "Source", "Radio", @@ -32,7 +32,7 @@ "Display" ], "menuWidth": 300, - "min": -72.05882263183594, + "min": -53.676475524902344, "showWaterfall": true, "source": "", "sourceSettings": {}, diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json index b682a34a..3401091d 100644 --- a/root_dev/soapy_source_config.json +++ b/root_dev/soapy_source_config.json @@ -1,5 +1,5 @@ { - "device": "Generic RTL2832U OEM :: 00000001", + "device": "HackRF One #0 901868dc282c8f8b", "devices": { "AirSpy HF+ [c852435de0224af7]": { "gains": { @@ -18,7 +18,7 @@ "gains": { "AMP": 0.0, "LNA": 24.711999893188477, - "VGA": 15.906000137329102 + "VGA": 14.282999992370605 }, "sampleRate": 8000000.0 }, From 4bf88739b53220bed8e8c0778409e45bd528c6be Mon Sep 17 00:00:00 2001 From: Howard Su Date: Thu, 22 Oct 2020 08:28:43 +0800 Subject: [PATCH 063/127] Fix OSX build --- CMakeLists.txt | 10 ++++++++-- core/CMakeLists.txt | 38 ++++++++++++++++++++++++++++++++++++-- core/src/gui/waterfall.cpp | 3 +-- readme.md | 16 +++++++++++++++- soapy/CMakeLists.txt | 7 ++++++- 5 files changed, 66 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 828e6f2e..c9045634 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,8 +22,14 @@ target_link_libraries(sdrpp PRIVATE sdrpp_core) # Copy dynamic libs over if (MSVC) add_custom_target(do_always ALL xcopy /s \"$\\*.dll\" \"$\" /Y) -else() - add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") endif (MSVC) +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") +endif () + +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + add_custom_target(do_always ALL cp \"$/sdrpp_core.dylib\" \"$\") +endif () + # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index da5423a1..0b1d0e1a 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -60,7 +60,9 @@ if (MSVC) find_package(portaudio CONFIG REQUIRED) target_link_libraries(sdrpp_core PUBLIC portaudio portaudio_static) -else() +endif (MSVC) + +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_include_directories(sdrpp_core PUBLIC "/usr/include/volk") target_link_libraries(sdrpp_core PUBLIC pthread) @@ -73,7 +75,39 @@ else() target_link_libraries(sdrpp_core PUBLIC X11) target_link_libraries(sdrpp_core PUBLIC Xxf86vm) target_link_libraries(sdrpp_core PUBLIC dl) -endif (MSVC) +endif () + + +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + find_package(OpenGL REQUIRED) + + # find_package(GLEW REQUIRED) + # find_package(fftw3 REQUIRED) + # find_package(glfw3 REQUIRED) + # find_package(volk REQUIRED) + + target_include_directories(sdrpp_core PUBLIC /usr/local/opt/glew/include) + target_include_directories(sdrpp_core PUBLIC /usr/local/opt/glfw/include) + target_include_directories(sdrpp_core PUBLIC /usr/local/opt/fftw/include) + target_include_directories(sdrpp_core PUBLIC /usr/local/opt/portaudio/include) + target_include_directories(sdrpp_core PUBLIC /usr/local/opt/volk/include) + target_include_directories(sdrpp_core PUBLIC /usr/local/opt/volk/include/volk) + + target_link_directories(sdrpp_core PUBLIC /usr/local/opt/glew/lib) + target_link_directories(sdrpp_core PUBLIC /usr/local/opt/volk/lib) + target_link_directories(sdrpp_core PUBLIC /usr/local/opt/glfw/lib) + target_link_directories(sdrpp_core PUBLIC /usr/local/opt/fftw/lib) + target_link_directories(sdrpp_core PUBLIC /usr/local/opt/portaudio/lib) + + target_link_libraries(sdrpp_core PUBLIC ${OPENGL_LIBRARIES}) + target_link_libraries(sdrpp_core PUBLIC volk) + target_link_libraries(sdrpp_core PUBLIC glew) + target_link_libraries(sdrpp_core PUBLIC glfw) + target_link_libraries(sdrpp_core PUBLIC fftw3) + target_link_libraries(sdrpp_core PUBLIC fftw3f) + target_link_libraries(sdrpp_core PUBLIC portaudio) + +endif () target_link_libraries(sdrpp_core PUBLIC volk) diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 4b8258b8..3d60dabd 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -104,8 +104,6 @@ namespace ImGui { viewBandwidth = 1.0; wholeBandwidth = 1.0; - glGenTextures(1, &textureId); - updatePallette(COLOR_MAP, 13); } @@ -363,6 +361,7 @@ namespace ImGui { } void WaterFall::updateWaterfallTexture() { + glGenTextures(1, &textureId); glBindTexture(GL_TEXTURE_2D, textureId); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); diff --git a/readme.md b/readme.md index 1db83330..ce590be6 100644 --- a/readme.md +++ b/readme.md @@ -62,7 +62,21 @@ If you followed the steps above, it should be `build/Release`. comming soon :) # Building on OSX -comming soon as well :) +## Install requirements +``` +brew tap pothosware/homebrew-pothos +brew install volk glew glfw fftw portaudio +brew install soapysdr +``` +You can install additional soapy device support based on your hardware. + +## The build +``` +mkdir build +cd build +cmake .. +cmake --build . --config Release +``` # Contributing diff --git a/soapy/CMakeLists.txt b/soapy/CMakeLists.txt index a5c0e444..19c33483 100644 --- a/soapy/CMakeLists.txt +++ b/soapy/CMakeLists.txt @@ -19,4 +19,9 @@ add_library(soapy SHARED ${SRC}) target_link_libraries(soapy PRIVATE sdrpp_core) set_target_properties(soapy PROPERTIES PREFIX "") -target_link_libraries(soapy PUBLIC SoapySDR) \ No newline at end of file +target_link_libraries(soapy PUBLIC SoapySDR) + +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + target_include_directories(soapy PUBLIC /usr/local/opt/soapysdr/include) + target_link_directories(soapy PUBLIC /usr/local/opt/soapysdr/lib) +endif () From 62868b2533fda67076f7cb3e07433083af2bddbd Mon Sep 17 00:00:00 2001 From: Howard Su Date: Thu, 22 Oct 2020 08:47:10 +0800 Subject: [PATCH 064/127] Fix warnings --- core/src/gui/main_window.cpp | 2 +- core/src/gui/menus/audio.cpp | 2 +- soapy/src/main.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index e1071a22..da429e5e 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -412,7 +412,7 @@ void drawWindow() { if(ImGui::CollapsingHeader("Debug")) { ImGui::Text("Frame time: %.3f ms/frame", 1000.0 / ImGui::GetIO().Framerate); ImGui::Text("Framerate: %.1f FPS", ImGui::GetIO().Framerate); - ImGui::Text("Center Frequency: %.0 Hz", gui::waterfall.getCenterFrequency()); + ImGui::Text("Center Frequency: %.0f Hz", gui::waterfall.getCenterFrequency()); ImGui::Text("Source name: %s", sourceName.c_str()); if (ImGui::Checkbox("Test technique", &dcbias.val)) { sigpath::signalPath.setDCBiasCorrection(dcbias.val); diff --git a/core/src/gui/menus/audio.cpp b/core/src/gui/menus/audio.cpp index f39fdcaa..71cd1c6c 100644 --- a/core/src/gui/menus/audio.cpp +++ b/core/src/gui/menus/audio.cpp @@ -79,7 +79,7 @@ namespace audiomenu { deviceId = stream->audio->getDeviceId(); ImGui::SetCursorPosX((menuColumnWidth / 2.0f) - (ImGui::CalcTextSize(name.c_str()).x / 2.0f)); - ImGui::Text(name.c_str()); + ImGui::Text("%s", name.c_str()); ImGui::PushItemWidth(menuColumnWidth); bool running = stream->running; diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index a55c9836..e4610973 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -271,7 +271,7 @@ private: int i = 0; for (auto gain : _this->gainList) { - ImGui::Text((gain + " gain").c_str()); + ImGui::Text("%s gain", gain.c_str()); ImGui::SameLine(); ImGui::SetCursorPosX(gainNameLen); ImGui::SetNextItemWidth(menuWidth - gainNameLen); From 72611b5fa759fb63081978c797bfe400486ad408 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Thu, 22 Oct 2020 03:16:11 +0200 Subject: [PATCH 065/127] Fixed OpenGL memory leak --- core/src/gui/main_window.cpp | 2 +- core/src/gui/waterfall.cpp | 5 ++++- core/src/gui/waterfall.h | 2 ++ root_dev/config.json | 2 +- root_dev/soapy_source_config.json | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index da429e5e..6cf486ee 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -88,7 +88,7 @@ bool showMenu = true; dsp::stream dummyStream; void windowInit() { - spdlog::info("Initializing SoapySDR"); + gui::waterfall.init(); credits::init(); diff --git a/core/src/gui/waterfall.cpp b/core/src/gui/waterfall.cpp index 3d60dabd..de25afe7 100644 --- a/core/src/gui/waterfall.cpp +++ b/core/src/gui/waterfall.cpp @@ -107,6 +107,10 @@ namespace ImGui { updatePallette(COLOR_MAP, 13); } + void WaterFall::init() { + glGenTextures(1, &textureId); + } + void WaterFall::drawFFT() { // Calculate scaling factor float startLine = floorf(fftMax / vRange) * vRange; @@ -361,7 +365,6 @@ namespace ImGui { } void WaterFall::updateWaterfallTexture() { - glGenTextures(1, &textureId); glBindTexture(GL_TEXTURE_2D, textureId); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); diff --git a/core/src/gui/waterfall.h b/core/src/gui/waterfall.h index 12d62c44..20cdf588 100644 --- a/core/src/gui/waterfall.h +++ b/core/src/gui/waterfall.h @@ -51,6 +51,8 @@ namespace ImGui { public: WaterFall(); + void init(); + void draw(); void pushFFT(std::vector data, int n); diff --git a/root_dev/config.json b/root_dev/config.json index 15b8dabe..508544b9 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -19,7 +19,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 298, - "frequency": 98200000, + "frequency": 100100000, "max": 0.0, "maximized": true, "menuOrder": [ diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json index 3401091d..47627fd8 100644 --- a/root_dev/soapy_source_config.json +++ b/root_dev/soapy_source_config.json @@ -1,5 +1,5 @@ { - "device": "HackRF One #0 901868dc282c8f8b", + "device": "Generic RTL2832U OEM :: 00000001", "devices": { "AirSpy HF+ [c852435de0224af7]": { "gains": { From 406f18bf11f5dd8c23a4ba0e2606dafb1c89d44e Mon Sep 17 00:00:00 2001 From: Howard Su Date: Thu, 22 Oct 2020 09:01:57 +0800 Subject: [PATCH 066/127] another warning --- core/src/signal_path/vfo_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index e049b4b8..8579ffdf 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -68,7 +68,7 @@ void VFOManager::deleteVFO(VFOManager::VFO* vfo) { std::string name = ""; for (auto const& [_name, _vfo] : vfos) { if (_vfo == vfo) { - name == _name; + name = _name; break; } } From 0d45217dfde768ab3eb5a6e3ee1ebc6b00536cdb Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Thu, 22 Oct 2020 12:53:46 +0200 Subject: [PATCH 067/127] Added baseband recording --- core/src/signal_path/dsp.cpp | 16 ++++ core/src/signal_path/dsp.h | 3 + recorder/src/main.cpp | 157 ++++++++++++++++++++++++++--------- root_dev/config.json | 84 +++++++++---------- root_dev/module_list.json | 8 +- 5 files changed, 181 insertions(+), 87 deletions(-) diff --git a/core/src/signal_path/dsp.cpp b/core/src/signal_path/dsp.cpp index a218ccb7..62a5c492 100644 --- a/core/src/signal_path/dsp.cpp +++ b/core/src/signal_path/dsp.cpp @@ -54,6 +54,10 @@ void SignalPath::setSampleRate(double sampleRate) { dynSplit.start(); } +double SignalPath::getSampleRate() { + return sampleRate; +} + void SignalPath::start() { dcBiasRemover.start(); split.start(); @@ -103,4 +107,16 @@ void SignalPath::setInput(dsp::stream* input) { dcBiasRemover.stop(); dcBiasRemover.setInput(input); dcBiasRemover.start(); +} + +void SignalPath::bindIQStream(dsp::stream* stream) { + dynSplit.stop(); + dynSplit.bind(stream); + dynSplit.start(); +} + +void SignalPath::unbindIQStream(dsp::stream* stream) { + dynSplit.stop(); + dynSplit.unbind(stream); + dynSplit.start(); } \ No newline at end of file diff --git a/core/src/signal_path/dsp.h b/core/src/signal_path/dsp.h index 7ec811d8..80c1473c 100644 --- a/core/src/signal_path/dsp.h +++ b/core/src/signal_path/dsp.h @@ -19,9 +19,12 @@ public: void setSampleRate(double sampleRate); void setDCBiasCorrection(bool enabled); void setFFTRate(double rate); + double getSampleRate(); dsp::VFO* addVFO(std::string name, double outSampleRate, double bandwidth, double offset); void removeVFO(std::string name); void setInput(dsp::stream* input); + void bindIQStream(dsp::stream* stream); + void unbindIQStream(dsp::stream* stream); private: struct VFO_t { diff --git a/recorder/src/main.cpp b/recorder/src/main.cpp index e88ef2a8..73553fcb 100644 --- a/recorder/src/main.cpp +++ b/recorder/src/main.cpp @@ -8,6 +8,8 @@ #include #include #include +#include +#include #define CONCAT(a, b) ((std::string(a) + b).c_str()) @@ -75,56 +77,109 @@ private: } } - ImGui::PushItemWidth(menuColumnWidth); - if (!_this->recording) { - if (ImGui::Combo(CONCAT("##_strea_select_", _this->name), &_this->selectedStreamId, nameList.c_str())) { - _this->selectedStreamName = streamNames[_this->selectedStreamId]; + ImGui::BeginGroup(); + + // TODO: Change VFO ref in signal path + + ImGui::Columns(3, CONCAT("RecordModeColumns##_", _this->name), false); + if (ImGui::RadioButton(CONCAT("Baseband##_", _this->name), _this->recMode == 0) && _this->recMode != 0) { + _this->recMode = 0; + } + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("Audio##_", _this->name), _this->recMode == 1) && _this->recMode != 1) { + _this->recMode = 1; + } + ImGui::NextColumn(); + if (ImGui::RadioButton(CONCAT("VFO##_", _this->name), _this->recMode == 2) && _this->recMode != 2) { + _this->recMode = 2; + } + ImGui::Columns(1, CONCAT("EndRecordModeColumns##_", _this->name), false); + + ImGui::EndGroup(); + + if (_this->recMode == 0) { + ImGui::PushItemWidth(menuColumnWidth); + if (!_this->recording) { + if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { + _this->samplesWritten = 0; + _this->sampleRate = sigpath::signalPath.getSampleRate(); + _this->writer = new WavWriter(ROOT_DIR "/recordings/" + genFileName("baseband_"), 16, 2, _this->sampleRate); + _this->iqStream = new dsp::stream(); + _this->iqStream->init(_this->sampleRate / 200.0); + sigpath::signalPath.bindIQStream(_this->iqStream); + _this->workerThread = std::thread(_iqWriteWorker, _this); + _this->recording = true; + _this->startTime = time(0); + } + ImGui::TextColored(ImGui::GetStyleColorVec4(ImGuiCol_Text), "Idle --:--:--"); + } + else { + if (ImGui::Button("Stop", ImVec2(menuColumnWidth, 0))) { + _this->iqStream->stopReader(); + _this->workerThread.join(); + _this->iqStream->clearReadStop(); + sigpath::signalPath.unbindIQStream(_this->iqStream); + _this->writer->close(); + delete _this->writer; + _this->recording = false; + } + uint64_t seconds = _this->samplesWritten / (uint64_t)_this->sampleRate; + time_t diff = seconds; + tm *dtm = gmtime(&diff); + ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); } } - else { - ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.44f, 0.44f, 0.44f, 0.15f)); - ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.20f, 0.21f, 0.22f, 0.30f)); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 0.65f)); - ImGui::Combo(CONCAT("##_strea_select_", _this->name), &_this->selectedStreamId, nameList.c_str()); - ImGui::PopItemFlag(); - ImGui::PopStyleColor(3); - } - - if (!_this->recording) { - if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { - _this->samplesWritten = 0; - _this->sampleRate = 48000; - _this->writer = new WavWriter("recordings/" + genFileName("audio_"), 16, 2, 48000); - _this->stream = audio::bindToStreamStereo(_this->selectedStreamName, streamRemovedHandler, sampleRateChanged, _this); - _this->workerThread = std::thread(_writeWorker, _this); - _this->recording = true; - _this->startTime = time(0); + else if (_this->recMode == 1) { + ImGui::PushItemWidth(menuColumnWidth); + if (!_this->recording) { + if (ImGui::Combo(CONCAT("##_strea_select_", _this->name), &_this->selectedStreamId, nameList.c_str())) { + _this->selectedStreamName = streamNames[_this->selectedStreamId]; + } } - ImGui::TextColored(ImGui::GetStyleColorVec4(ImGuiCol_Text), "Idle --:--:--"); - } - else { - if (ImGui::Button("Stop", ImVec2(menuColumnWidth, 0))) { - _this->stream->stopReader(); - _this->workerThread.join(); - _this->stream->clearReadStop(); - audio::unbindFromStreamStereo(_this->selectedStreamName, _this->stream); - _this->writer->close(); - delete _this->writer; - _this->recording = false; + else { + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.44f, 0.44f, 0.44f, 0.15f)); + ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.20f, 0.21f, 0.22f, 0.30f)); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 0.65f)); + ImGui::Combo(CONCAT("##_strea_select_", _this->name), &_this->selectedStreamId, nameList.c_str()); + ImGui::PopItemFlag(); + ImGui::PopStyleColor(3); + } + if (!_this->recording) { + if (ImGui::Button("Record", ImVec2(menuColumnWidth, 0))) { + _this->samplesWritten = 0; + _this->sampleRate = 48000; + _this->writer = new WavWriter(ROOT_DIR "/recordings/" + genFileName("audio_"), 16, 2, 48000); + _this->audioStream = audio::bindToStreamStereo(_this->selectedStreamName, streamRemovedHandler, sampleRateChanged, _this); + _this->workerThread = std::thread(_audioWriteWorker, _this); + _this->recording = true; + _this->startTime = time(0); + } + ImGui::TextColored(ImGui::GetStyleColorVec4(ImGuiCol_Text), "Idle --:--:--"); + } + else { + if (ImGui::Button("Stop", ImVec2(menuColumnWidth, 0))) { + _this->audioStream->stopReader(); + _this->workerThread.join(); + _this->audioStream->clearReadStop(); + audio::unbindFromStreamStereo(_this->selectedStreamName, _this->audioStream); + _this->writer->close(); + delete _this->writer; + _this->recording = false; + } + uint64_t seconds = _this->samplesWritten / (uint64_t)_this->sampleRate; + time_t diff = seconds; + tm *dtm = gmtime(&diff); + ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); } - uint64_t seconds = _this->samplesWritten / (uint64_t)_this->sampleRate; - time_t diff = seconds; - tm *dtm = gmtime(&diff); - ImGui::TextColored(ImVec4(1.0f, 0.0f, 0.0f, 1.0f), "Recording %02d:%02d:%02d", dtm->tm_hour, dtm->tm_min, dtm->tm_sec); } } - static void _writeWorker(RecorderModule* _this) { + static void _audioWriteWorker(RecorderModule* _this) { dsp::StereoFloat_t* floatBuf = new dsp::StereoFloat_t[1024]; int16_t* sampleBuf = new int16_t[2048]; while (true) { - if (_this->stream->read(floatBuf, 1024) < 0) { + if (_this->audioStream->read(floatBuf, 1024) < 0) { break; } for (int i = 0; i < 1024; i++) { @@ -138,8 +193,27 @@ private: delete[] sampleBuf; } + static void _iqWriteWorker(RecorderModule* _this) { + dsp::complex_t* iqBuf = new dsp::complex_t[1024]; + int16_t* sampleBuf = new int16_t[2048]; + while (true) { + if (_this->iqStream->read(iqBuf, 1024) < 0) { + break; + } + for (int i = 0; i < 1024; i++) { + sampleBuf[(i * 2) + 0] = iqBuf[i].q * 0x7FFF; + sampleBuf[(i * 2) + 1] = iqBuf[i].i * 0x7FFF; + } + _this->samplesWritten += 1024; + _this->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); + } + delete[] iqBuf; + delete[] sampleBuf; + } + std::string name; - dsp::stream* stream; + dsp::stream* audioStream; + dsp::stream* iqStream; WavWriter* writer; std::thread workerThread; bool recording; @@ -149,6 +223,7 @@ private: int selectedStreamId; uint64_t samplesWritten; float sampleRate; + int recMode = 0; }; diff --git a/root_dev/config.json b/root_dev/config.json index 508544b9..5256a56d 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,43 +1,43 @@ -{ - "audio": { - "Radio": { - "device": "Speakers (Realtek High Definiti", - "sampleRate": 48000.0, - "volume": 0.60546875 - }, - "Radio 1": { - "device": "Speakers (Realtek High Definition Audio)", - "sampleRate": 48000.0, - "volume": 0.609375 - }, - "Radio 2": { - "device": "CABLE Input (VB-Audio Virtual Cable)", - "sampleRate": 48000.0, - "volume": 1.0 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 298, - "frequency": 100100000, - "max": 0.0, - "maximized": true, - "menuOrder": [ - "Source", - "Radio", - "Recorder", - "Audio", - "Scripting", - "Band Plan", - "Display" - ], - "menuWidth": 300, - "min": -53.676475524902344, - "showWaterfall": true, - "source": "", - "sourceSettings": {}, - "windowSize": { - "h": 720, - "w": 1280 - } +{ + "audio": { + "Radio": { + "device": "Speakers (Realtek High Definiti", + "sampleRate": 48000.0, + "volume": 0.60546875 + }, + "Radio 1": { + "device": "Speakers (Realtek High Definition Audio)", + "sampleRate": 48000.0, + "volume": 0.609375 + }, + "Radio 2": { + "device": "CABLE Input (VB-Audio Virtual Cable)", + "sampleRate": 48000.0, + "volume": 1.0 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 298, + "frequency": 100100000, + "max": 0.0, + "maximized": true, + "menuOrder": [ + "Source", + "Radio", + "Recorder", + "Audio", + "Scripting", + "Band Plan", + "Display" + ], + "menuWidth": 300, + "min": -53.676475524902344, + "showWaterfall": true, + "source": "", + "sourceSettings": {}, + "windowSize": { + "h": 720, + "w": 1280 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index b93a9b45..5a29e31f 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,6 @@ { - "Radio": "./radio/Release/radio.dll", - "Recorder": "./recorder/Release/recorder.dll", - "Soapy": "./soapy/Release/soapy.dll", - "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so", + "Soapy": "./soapy/soapy.so", + "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" } From 5400a4e18a80ff011bbbf8fde87bfd16de831004 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Thu, 22 Oct 2020 23:55:49 +0800 Subject: [PATCH 068/127] Fix build on Debian 10 --- core/CMakeLists.txt | 5 +++-- core/src/core.cpp | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 0b1d0e1a..9dc5c1f3 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -6,7 +6,7 @@ if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") + set(CMAKE_CXX_FLAGS "-g -O3 -std=c++17 -fpermissive") endif (MSVC) add_definitions(-DSDRPP_IS_CORE) @@ -75,6 +75,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_link_libraries(sdrpp_core PUBLIC X11) target_link_libraries(sdrpp_core PUBLIC Xxf86vm) target_link_libraries(sdrpp_core PUBLIC dl) + target_link_libraries(sdrpp_core PUBLIC stdc++fs) endif () @@ -113,4 +114,4 @@ target_link_libraries(sdrpp_core PUBLIC volk) set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" diff --git a/core/src/core.cpp b/core/src/core.cpp index 0e472955..db5461b6 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -139,7 +139,9 @@ int sdrpp_main() { glfwMaximizeWindow(window); } +#if (GLFW_VERSION_MINOR == 3) && (GLFW_VERSION_MINOR >= 2) glfwSetWindowMaximizeCallback(window, maximized_callback); +#endif // Load app icon GLFWimage icons[10]; @@ -300,4 +302,4 @@ int sdrpp_main() { glfwTerminate(); return 0; -} \ No newline at end of file +} From 6130428989c9836a08111deda3998271635acb5b Mon Sep 17 00:00:00 2001 From: Howard Su Date: Fri, 23 Oct 2020 00:09:58 +0800 Subject: [PATCH 069/127] glfwSetWindowMaximizeCallback is added in 3.3 --- core/src/core.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/core.cpp b/core/src/core.cpp index db5461b6..6191bef3 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -135,11 +135,11 @@ int sdrpp_main() { glfwMakeContextCurrent(window); glfwSwapInterval(1); // Enable vsync +#if (GLFW_VERSION_MAJOR == 3) && (GLFW_VERSION_MINOR >= 3) if (maximized) { glfwMaximizeWindow(window); } -#if (GLFW_VERSION_MINOR == 3) && (GLFW_VERSION_MINOR >= 2) glfwSetWindowMaximizeCallback(window, maximized_callback); #endif From e94888d533bb69294192369c7b97be5a5773c7f8 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Fri, 23 Oct 2020 10:25:02 +0800 Subject: [PATCH 070/127] Use pkg for every module, and link them static --- .gitignore | 3 ++- core/CMakeLists.txt | 57 +++++++++++++++++++++++++------------------- soapy/CMakeLists.txt | 14 +++++++---- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 357301de..b4469ae1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ build/ *.old *.dll *.exe -*.zip \ No newline at end of file +*.zip +.DS_Store diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 9dc5c1f3..b119d924 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -60,6 +60,8 @@ if (MSVC) find_package(portaudio CONFIG REQUIRED) target_link_libraries(sdrpp_core PUBLIC portaudio portaudio_static) + target_link_libraries(sdrpp_core PUBLIC volk) + endif (MSVC) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") @@ -76,42 +78,49 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_link_libraries(sdrpp_core PUBLIC Xxf86vm) target_link_libraries(sdrpp_core PUBLIC dl) target_link_libraries(sdrpp_core PUBLIC stdc++fs) + target_link_libraries(sdrpp_core PUBLIC volk) endif () if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + find_package(PkgConfig) find_package(OpenGL REQUIRED) - # find_package(GLEW REQUIRED) - # find_package(fftw3 REQUIRED) - # find_package(glfw3 REQUIRED) - # find_package(volk REQUIRED) + pkg_check_modules(GLEW REQUIRED GLEW) + pkg_check_modules(FFTW3 REQUIRED fftw3f) + pkg_check_modules(VOLK REQUIRED volk) + pkg_check_modules(GLFW3 REQUIRED glfw3) + pkg_check_modules(PORTAUDIO REQUIRED portaudio-2.0) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/glew/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/glfw/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/fftw/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/portaudio/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/volk/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/volk/include/volk) + target_include_directories(sdrpp_core PUBLIC + ${GLEW_INCLUDE_DIRS} + ${FFTW3_INCLUDE_DIRS} + ${GLFW3_INCLUDE_DIRS} + ${VOLK_INCLUDE_DIRS} ${VOLK_INCLUDE_DIRS}/volk + ${PORTAUDIO_INCLUDE_DIRS} + ) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/glew/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/volk/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/glfw/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/fftw/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/portaudio/lib) + target_link_directories(sdrpp_core PUBLIC + ${GLEW_LIBRARY_DIRS} + ${FFTW3_LIBRARY_DIRS} + ${GLFW3_LIBRARY_DIRS} + ${VOLK_LIBRARY_DIRS} + ${PORTAUDIO_LIBRARY_DIRS} + ) - target_link_libraries(sdrpp_core PUBLIC ${OPENGL_LIBRARIES}) - target_link_libraries(sdrpp_core PUBLIC volk) - target_link_libraries(sdrpp_core PUBLIC glew) - target_link_libraries(sdrpp_core PUBLIC glfw) - target_link_libraries(sdrpp_core PUBLIC fftw3) - target_link_libraries(sdrpp_core PUBLIC fftw3f) - target_link_libraries(sdrpp_core PUBLIC portaudio) + target_link_libraries(sdrpp_core PUBLIC + ${OPENGL_LIBRARIES} + ${GLEW_STATIC_LIBRARIES} + ${FFTW3_STATIC_LIBRARIES} + ${GLFW3_STATIC_LIBRARIES} + ${VOLK_STATIC_LIBRARIES} + ${PORTAUDIO_STATIC_LIBRARIES} + ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") endif () -target_link_libraries(sdrpp_core PUBLIC volk) - set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" diff --git a/soapy/CMakeLists.txt b/soapy/CMakeLists.txt index 19c33483..19e72e10 100644 --- a/soapy/CMakeLists.txt +++ b/soapy/CMakeLists.txt @@ -19,9 +19,15 @@ add_library(soapy SHARED ${SRC}) target_link_libraries(soapy PRIVATE sdrpp_core) set_target_properties(soapy PROPERTIES PREFIX "") -target_link_libraries(soapy PUBLIC SoapySDR) - if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - target_include_directories(soapy PUBLIC /usr/local/opt/soapysdr/include) - target_link_directories(soapy PUBLIC /usr/local/opt/soapysdr/lib) + find_package(PkgConfig) + find_package(OpenGL REQUIRED) + + pkg_check_modules(SOAPY REQUIRED soapysdr) + + target_include_directories(soapy PUBLIC ${SOAPY_INCLUDE_DIRS}) + target_link_directories(soapy PUBLIC ${SOAPY_LIBRARY_DIRS}) + target_link_libraries(soapy PUBLIC ${SOAPY_LIBRARIES}) +else () + target_link_libraries(soapy PUBLIC SoapySDR) endif () From 0fe5af981647e026447fa5944b4e9fd506bfdf69 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Fri, 23 Oct 2020 10:39:20 +0800 Subject: [PATCH 071/127] Fix volk.h include path. It should be volk/volk.h --- core/CMakeLists.txt | 5 +---- core/src/dsp/block.h | 2 +- core/src/dsp/math.h | 2 +- core/src/dsp/source.h | 1 - 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index b119d924..efd134a7 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -36,7 +36,6 @@ if (MSVC) target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") # Volk - target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/volk/") target_link_libraries(sdrpp_core PUBLIC volk) # SoapySDR @@ -65,8 +64,6 @@ if (MSVC) endif (MSVC) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_include_directories(sdrpp_core PUBLIC "/usr/include/volk") - target_link_libraries(sdrpp_core PUBLIC pthread) target_link_libraries(sdrpp_core PUBLIC GL) target_link_libraries(sdrpp_core PUBLIC GLEW) @@ -96,7 +93,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") ${GLEW_INCLUDE_DIRS} ${FFTW3_INCLUDE_DIRS} ${GLFW3_INCLUDE_DIRS} - ${VOLK_INCLUDE_DIRS} ${VOLK_INCLUDE_DIRS}/volk + ${VOLK_INCLUDE_DIRS} ${PORTAUDIO_INCLUDE_DIRS} ) diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index e4fdfa53..73ba90f2 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include +#include namespace dsp { template diff --git a/core/src/dsp/math.h b/core/src/dsp/math.h index e8fdbdc3..0347378f 100644 --- a/core/src/dsp/math.h +++ b/core/src/dsp/math.h @@ -2,7 +2,7 @@ #include #include #include -#include +#include #ifndef M_PI #define M_PI 3.1415926535f diff --git a/core/src/dsp/source.h b/core/src/dsp/source.h index 5130abbc..15083728 100644 --- a/core/src/dsp/source.h +++ b/core/src/dsp/source.h @@ -2,7 +2,6 @@ #include #include #include -#include #include namespace dsp { From 6262c64daa5030b49fd08de5dbeedde8b7827adf Mon Sep 17 00:00:00 2001 From: Howard Su Date: Fri, 23 Oct 2020 10:53:48 +0800 Subject: [PATCH 072/127] Consolidate Linux and OSX build Use pkg-config to find the right include path and lib names. --- core/CMakeLists.txt | 43 +++++++++++++------------------------------ soapy/CMakeLists.txt | 23 ++++++++++------------- 2 files changed, 23 insertions(+), 43 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index efd134a7..f06bd839 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -11,16 +11,10 @@ endif (MSVC) add_definitions(-DSDRPP_IS_CORE) # Main code -file(GLOB SRC "src/*.cpp") -file(GLOB GUI "src/gui/*.cpp") -file(GLOB MENUS "src/gui/menus/*.cpp") -file(GLOB DIALOGS "src/gui/dialogs/*.cpp") -file(GLOB SIGPATH "src/signal_path/*.cpp") -file(GLOB IMGUI "src/imgui/*.cpp") -file(GLOB DUKTAPE "src/duktape/*.c") +file(GLOB_RECURSE SRC "src/*.cpp" "src/*.c") # Add code to dyn lib -add_library(sdrpp_core SHARED ${SRC} ${GUI} ${MENUS} ${DIALOGS} ${SIGPATH} ${IMGUI} ${DUKTAPE}) +add_library(sdrpp_core SHARED ${SRC}) set_target_properties(sdrpp_core PROPERTIES PREFIX "") # Include core headers @@ -61,29 +55,11 @@ if (MSVC) target_link_libraries(sdrpp_core PUBLIC volk) -endif (MSVC) - -if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_link_libraries(sdrpp_core PUBLIC pthread) - target_link_libraries(sdrpp_core PUBLIC GL) - target_link_libraries(sdrpp_core PUBLIC GLEW) - target_link_libraries(sdrpp_core PUBLIC glfw) - target_link_libraries(sdrpp_core PUBLIC fftw3) - target_link_libraries(sdrpp_core PUBLIC fftw3f) - target_link_libraries(sdrpp_core PUBLIC portaudio) - target_link_libraries(sdrpp_core PUBLIC X11) - target_link_libraries(sdrpp_core PUBLIC Xxf86vm) - target_link_libraries(sdrpp_core PUBLIC dl) - target_link_libraries(sdrpp_core PUBLIC stdc++fs) - target_link_libraries(sdrpp_core PUBLIC volk) -endif () - - -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +else() find_package(PkgConfig) find_package(OpenGL REQUIRED) - pkg_check_modules(GLEW REQUIRED GLEW) + pkg_check_modules(GLEW REQUIRED glew) pkg_check_modules(FFTW3 REQUIRED fftw3f) pkg_check_modules(VOLK REQUIRED volk) pkg_check_modules(GLFW3 REQUIRED glfw3) @@ -114,8 +90,15 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") ${PORTAUDIO_STATIC_LIBRARIES} ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + target_link_libraries(sdrpp_core PUBLIC stdc++fs) + endif () + + if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + endif () + endif () set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) diff --git a/soapy/CMakeLists.txt b/soapy/CMakeLists.txt index 19e72e10..4522c8cc 100644 --- a/soapy/CMakeLists.txt +++ b/soapy/CMakeLists.txt @@ -3,12 +3,6 @@ project(soapy) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - - # Lib path - target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") - - # Misc headers - target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") else() set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) @@ -19,15 +13,18 @@ add_library(soapy SHARED ${SRC}) target_link_libraries(soapy PRIVATE sdrpp_core) set_target_properties(soapy PROPERTIES PREFIX "") -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - find_package(PkgConfig) - find_package(OpenGL REQUIRED) +if (MSVC) + # Lib path + target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") - pkg_check_modules(SOAPY REQUIRED soapysdr) + # Misc headers + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") +else (MSVC) + find_package(PkgConfig) + + pkg_check_modules(SOAPY REQUIRED SoapySDR) target_include_directories(soapy PUBLIC ${SOAPY_INCLUDE_DIRS}) target_link_directories(soapy PUBLIC ${SOAPY_LIBRARY_DIRS}) target_link_libraries(soapy PUBLIC ${SOAPY_LIBRARIES}) -else () - target_link_libraries(soapy PUBLIC SoapySDR) -endif () +endif (MSVC) \ No newline at end of file From 2df185e340c488d1852d8ed31fd2fa53339013a7 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Fri, 23 Oct 2020 17:06:10 +0800 Subject: [PATCH 073/127] Copy volk.dll when building on Windows --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c9045634..a4cf69b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ target_link_libraries(sdrpp PRIVATE sdrpp_core) # Copy dynamic libs over if (MSVC) add_custom_target(do_always ALL xcopy /s \"$\\*.dll\" \"$\" /Y) + add_custom_target(do_always_volk ALL xcopy /s \"C:/Program Files/PothosSDR/bin\\volk.dll\" \"$\" /Y) endif (MSVC) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") From 6296b8865b6defffe9cb30c495ebd2f7c6d24e90 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Fri, 23 Oct 2020 17:07:02 +0800 Subject: [PATCH 074/127] fftw lib is not used but fftw3f only --- core/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index f06bd839..9c2a842f 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -44,8 +44,6 @@ if (MSVC) target_link_libraries(sdrpp_core PUBLIC glfw) # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3) find_package(FFTW3f CONFIG REQUIRED) target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3f) From b8987e6d2dd90071e487cef4f82dfb373d8379bf Mon Sep 17 00:00:00 2001 From: Alejandro Sior Date: Sat, 24 Oct 2020 09:44:15 +0200 Subject: [PATCH 075/127] make prepare_root.sh a proper program and take advantage of globbing --- prepare_root.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) mode change 100644 => 100755 prepare_root.sh diff --git a/prepare_root.sh b/prepare_root.sh old mode 100644 new mode 100755 index 7cbe1e20..bfe77fb0 --- a/prepare_root.sh +++ b/prepare_root.sh @@ -1,2 +1,3 @@ -cp build/modules/radio/radio.so root/modules/radio.so -cp build/modules/recorder/recorder.so root/modules/recorder.so \ No newline at end of file +#!/bin/sh + +cp build/modules/*/*.so root/modules From edbc0c149d30f02bf4a2f3aaa5323133b14bcc09 Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Sat, 24 Oct 2020 14:51:55 +0200 Subject: [PATCH 076/127] fixed linux bugs --- core/src/config.cpp | 33 ++++++++++++++ core/src/config.h | 14 ++++++ core/src/core.cpp | 39 +---------------- core/src/dsp/block.h | 72 +++++++++++++++++++++++++++++++ core/src/dsp/sink.h | 15 +++++-- core/src/gui/main_window.cpp | 1 - core/src/signal_path/audio.cpp | 4 +- root_dev/config.json | 6 +-- root_dev/soapy_source_config.json | 56 ++++++++++++------------ 9 files changed, 165 insertions(+), 75 deletions(-) diff --git a/core/src/config.cpp b/core/src/config.cpp index 896fd78f..6c7c2b36 100644 --- a/core/src/config.cpp +++ b/core/src/config.cpp @@ -75,3 +75,36 @@ void ConfigManager::autoSaveWorker(ConfigManager* _this) { std::this_thread::sleep_for(std::chrono::milliseconds(1000)); } } + +// void ConfigManager::setResourceDir(std::string path) { +// if (!std::filesystem::exists(path)) { +// spdlog::error("Resource directory '{0}' does not exist", path); +// return; +// } +// if (!std::filesystem::is_regular_file(path)) { +// spdlog::error("Resource directory '{0}' is not a directory", path); +// return; +// } +// resDir = path; +// } + +// std::string ConfigManager::getResourceDir() { +// return resDir; +// } + +// void ConfigManager::setConfigDir(std::string path) { +// if (!std::filesystem::exists(path)) { +// spdlog::error("Resource directory '{0}' does not exist", path); +// return; +// } +// if (!std::filesystem::is_regular_file(path)) { +// spdlog::error("Resource directory '{0}' is not a directory", path); +// return; +// } +// resDir = path; +// } + +// std::string ConfigManager::getConfigDir() { +// return configDir; +// } + diff --git a/core/src/config.h b/core/src/config.h index e5cb96fe..337ea484 100644 --- a/core/src/config.h +++ b/core/src/config.h @@ -8,6 +8,11 @@ using nlohmann::json; #define DEV_BUILD + +#define SDRPP_RESOURCE_DIR "/usr/local/" + + + #ifndef ROOT_DIR #ifdef DEV_BUILD #define ROOT_DIR "../root_dev" @@ -29,11 +34,20 @@ public: void aquire(); void release(bool changed = false); + // static void setResourceDir(std::string path); + // static std::string getResourceDir(); + + // static void setConfigDir(std::string path); + // static std::string getConfigDir(); + json conf; private: static void autoSaveWorker(ConfigManager* _this); + //static std::string resDir; + //static std::string configDir; + std::string path = ""; bool changed = false; bool autoSaveEnabled = false; diff --git a/core/src/core.cpp b/core/src/core.cpp index 0e472955..6b3c4073 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -62,46 +62,11 @@ duk_ret_t test_func(duk_context *ctx) { int sdrpp_main() { #ifdef _WIN32 //FreeConsole(); + // ConfigManager::setResourceDir("./res"); + // ConfigManager::setConfigDir("."); #endif - // TESTING - - - // duk_context* ctx = duk_create_heap_default(); - // duk_console_init(ctx, DUK_CONSOLE_PROXY_WRAPPER); - - // std::ifstream file("test.js", std::ios::in); - // std::stringstream ss; - // ss << file.rdbuf(); - // std::string code = ss.str(); - - // duk_idx_t baseObj = duk_push_object(ctx); - - // duk_push_int(ctx, 42); - // duk_put_prop_string(ctx, baseObj, "my_property"); - - // duk_push_c_function(ctx, test_func, 0); - // duk_put_prop_string(ctx, baseObj, "my_func"); - - // duk_put_global_string(ctx, "my_object"); - // duk_push_object(ctx); - - - - // if (duk_peval_string(ctx, code.c_str()) != 0) { - // printf("Error: %s\n", duk_safe_to_string(ctx, -1)); - // return -1; - // } - // duk_pop(ctx); - - core::scriptManager.createScript("TestScript 1", "test.js"); - //core::scriptManager.createScript("TestScript 2", "test.js"); - //core::scriptManager.createScript("TestScript 3", "test.js"); - //core::scriptManager.createScript("TestScript 4", "test.js"); - - // TESTING - spdlog::info("SDR++ v" VERSION_STR); // Load config diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index e4fdfa53..4a301f71 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -176,4 +176,76 @@ namespace dsp { } }; + + + + + + template + class Reshaper { + public: + Reshaper() { + + } + + void init(int outBlockSize, dsp::stream* input) { + outputBlockSize = outBlockSize; + in = input; + out.init(outputBlockSize * 2); + } + + void setOutputBlockSize(int blockSize) { + if (running) { + return; + } + outputBlockSize = blockSize; + out.setMaxLatency(outputBlockSize * 2); + } + + void setInput(dsp::stream* input) { + if (running) { + return; + } + in = input; + } + + void start() { + if (running) { + return; + } + workerThread = std::thread(_worker, this); + running = true; + } + + void stop() { + if (!running) { + return; + } + in->stopReader(); + out.stopWriter(); + workerThread.join(); + in->clearReadStop(); + out.clearWriteStop(); + running = false; + } + + dsp::stream out; + + private: + static void _worker(Reshaper* _this) { + T* buf = new T[_this->outputBlockSize]; + while (true) { + if (_this->in->read(buf, _this->outputBlockSize) < 0) { break; } + if (_this->out.write(buf, _this->outputBlockSize) < 0) { break; } + } + delete[] buf; + } + + int outputBlockSize; + bool running = false; + std::thread workerThread; + + dsp::stream* in; + + }; }; \ No newline at end of file diff --git a/core/src/dsp/sink.h b/core/src/dsp/sink.h index 6661d63e..55d8cd40 100644 --- a/core/src/dsp/sink.h +++ b/core/src/dsp/sink.h @@ -3,6 +3,8 @@ #include #include #include +#include + namespace dsp { class HandlerSink { @@ -61,18 +63,19 @@ namespace dsp { bool running = false; }; + template class NullSink { public: NullSink() { } - NullSink(stream* input, int bufferSize) { + NullSink(stream* input, int bufferSize) { _in = input; _bufferSize = bufferSize; } - void init(stream* input, int bufferSize) { + void init(stream* input, int bufferSize) { _in = input; _bufferSize = bufferSize; } @@ -85,13 +88,14 @@ namespace dsp { private: static void _worker(NullSink* _this) { - complex_t* buf = new complex_t[_this->_bufferSize]; + T* buf = new T[_this->_bufferSize]; while (true) { + //spdlog::info("NS: Reading..."); _this->_in->read(buf, _this->_bufferSize); } } - stream* _in; + stream* _in; int _bufferSize; std::thread _workerThread; }; @@ -113,6 +117,7 @@ namespace dsp { } void start() { + spdlog::info("NS: Starting..."); _workerThread = std::thread(_worker, this); } @@ -120,8 +125,10 @@ namespace dsp { private: static void _worker(FloatNullSink* _this) { + spdlog::info("NS: Started!"); float* buf = new float[_this->_bufferSize]; while (true) { + spdlog::info("NS: Reading..."); _this->_in->read(buf, _this->_bufferSize); } } diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 6cf486ee..057519bd 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -66,7 +66,6 @@ void fftHandler(dsp::complex_t* samples) { _data.clear(); } -dsp::NullSink sink; watcher freq((uint64_t)90500000); watcher vfoFreq(92000000.0); float dummyVolume = 1.0; diff --git a/core/src/signal_path/audio.cpp b/core/src/signal_path/audio.cpp index 0528994d..d99fb7e5 100644 --- a/core/src/signal_path/audio.cpp +++ b/core/src/signal_path/audio.cpp @@ -11,7 +11,7 @@ namespace audio { astr->audio->init(1); astr->deviceId = astr->audio->getDeviceId(); double sampleRate = astr->audio->devices[astr->deviceId].sampleRates[0]; - int blockSize = sampleRate / 200; // default block size + int blockSize = sampleRate / 200.0; // default block size astr->monoAudioStream = new dsp::stream(blockSize * 2); astr->audio->setBlockSize(blockSize); astr->audio->setStreamType(io::AudioSink::MONO); @@ -38,7 +38,7 @@ namespace audio { astr->audio = new io::AudioSink; astr->audio->init(1); double sampleRate = astr->audio->devices[astr->audio->getDeviceId()].sampleRates[0]; - int blockSize = sampleRate / 200; // default block size + int blockSize = sampleRate / 200.0; // default block size astr->stereoAudioStream = new dsp::stream(blockSize * 2); astr->audio->setBlockSize(blockSize); astr->audio->setStreamType(io::AudioSink::STEREO); diff --git a/root_dev/config.json b/root_dev/config.json index 5256a56d..3723970d 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,9 +1,9 @@ { "audio": { "Radio": { - "device": "Speakers (Realtek High Definiti", + "device": "default", "sampleRate": 48000.0, - "volume": 0.60546875 + "volume": 0.5148147940635681 }, "Radio 1": { "device": "Speakers (Realtek High Definition Audio)", @@ -19,7 +19,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 298, - "frequency": 100100000, + "frequency": 99000000, "max": 0.0, "maximized": true, "menuOrder": [ diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json index 47627fd8..757b6a37 100644 --- a/root_dev/soapy_source_config.json +++ b/root_dev/soapy_source_config.json @@ -1,29 +1,29 @@ -{ - "device": "Generic RTL2832U OEM :: 00000001", - "devices": { - "AirSpy HF+ [c852435de0224af7]": { - "gains": { - "LNA": 6.0, - "RF": 0.0 - }, - "sampleRate": 768000.0 - }, - "Generic RTL2832U OEM :: 00000001": { - "gains": { - "TUNER": 49.599998474121094 - }, - "sampleRate": 2560000.0 - }, - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 0.0, - "LNA": 24.711999893188477, - "VGA": 14.282999992370605 - }, - "sampleRate": 8000000.0 - }, - "PulseAudio": { - "sampleRate": 96000.0 - } - } +{ + "device": "HackRF One #0 901868dc282c8f8b", + "devices": { + "AirSpy HF+ [c852435de0224af7]": { + "gains": { + "LNA": 6.0, + "RF": 0.0 + }, + "sampleRate": 768000.0 + }, + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 49.599998474121094 + }, + "sampleRate": 2560000.0 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 13.86299991607666, + "LNA": 24.711999893188477, + "VGA": 14.282999992370605 + }, + "sampleRate": 8000000.0 + }, + "PulseAudio": { + "sampleRate": 96000.0 + } + } } \ No newline at end of file From 3fdd2477e5a3988f56bdca9a8512f31dda2caa4e Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sat, 24 Oct 2020 15:33:00 +0200 Subject: [PATCH 077/127] Fixed typo in root CMakeLists.txt --- CMakeLists.txt | 2 +- root_dev/config.json | 84 +++++++++++++++++++-------------------- root_dev/module_list.json | 8 ++-- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4cf69b2..dfaa8241 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.13) -project(sdrpp_core) +project(sdrpp) # Cross platform modules add_subdirectory("core") diff --git a/root_dev/config.json b/root_dev/config.json index 3723970d..e84b7939 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,43 +1,43 @@ -{ - "audio": { - "Radio": { - "device": "default", - "sampleRate": 48000.0, - "volume": 0.5148147940635681 - }, - "Radio 1": { - "device": "Speakers (Realtek High Definition Audio)", - "sampleRate": 48000.0, - "volume": 0.609375 - }, - "Radio 2": { - "device": "CABLE Input (VB-Audio Virtual Cable)", - "sampleRate": 48000.0, - "volume": 1.0 - } - }, - "bandPlan": "General", - "bandPlanEnabled": true, - "fftHeight": 298, - "frequency": 99000000, - "max": 0.0, - "maximized": true, - "menuOrder": [ - "Source", - "Radio", - "Recorder", - "Audio", - "Scripting", - "Band Plan", - "Display" - ], - "menuWidth": 300, - "min": -53.676475524902344, - "showWaterfall": true, - "source": "", - "sourceSettings": {}, - "windowSize": { - "h": 720, - "w": 1280 - } +{ + "audio": { + "Radio": { + "device": "default", + "sampleRate": 48000.0, + "volume": 0.1666666716337204 + }, + "Radio 1": { + "device": "Speakers (Realtek High Definition Audio)", + "sampleRate": 48000.0, + "volume": 0.609375 + }, + "Radio 2": { + "device": "CABLE Input (VB-Audio Virtual Cable)", + "sampleRate": 48000.0, + "volume": 1.0 + } + }, + "bandPlan": "General", + "bandPlanEnabled": true, + "fftHeight": 298, + "frequency": 77500, + "max": 0.0, + "maximized": true, + "menuOrder": [ + "Source", + "Radio", + "Recorder", + "Audio", + "Scripting", + "Band Plan", + "Display" + ], + "menuWidth": 300, + "min": -53.676475524902344, + "showWaterfall": true, + "source": "", + "sourceSettings": {}, + "windowSize": { + "h": 720, + "w": 1280 + } } \ No newline at end of file diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 5a29e31f..b93a9b45 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,6 @@ { - "Radio": "./radio/radio.so", - "Recorder": "./recorder/recorder.so", - "Soapy": "./soapy/soapy.so", - "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" + "Radio": "./radio/Release/radio.dll", + "Recorder": "./recorder/Release/recorder.dll", + "Soapy": "./soapy/Release/soapy.dll", + "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" } From da9528576a81825b1d37eac8e2d11c35ed893f33 Mon Sep 17 00:00:00 2001 From: Alejandro Sior Date: Sat, 24 Oct 2020 17:09:25 +0200 Subject: [PATCH 078/127] fixed openbsd build 3 --- CMakeLists.txt | 5 +++++ core/CMakeLists.txt | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dfaa8241..565687f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,11 @@ if (MSVC) add_custom_target(do_always_volk ALL xcopy /s \"C:/Program Files/PothosSDR/bin\\volk.dll\" \"$\" /Y) endif (MSVC) + +if (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") + add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") +endif () + if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") endif () diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 9c2a842f..a3400a9f 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -15,7 +15,6 @@ file(GLOB_RECURSE SRC "src/*.cpp" "src/*.c") # Add code to dyn lib add_library(sdrpp_core SHARED ${SRC}) -set_target_properties(sdrpp_core PROPERTIES PREFIX "") # Include core headers target_include_directories(sdrpp_core PUBLIC "src/") From ba81f2593304a9aed70e32948d12c38c91d9ec3a Mon Sep 17 00:00:00 2001 From: Alejandro Sior Date: Sat, 24 Oct 2020 17:18:54 +0200 Subject: [PATCH 079/127] Added OpenBSD build instructions --- readme.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index ce590be6..9413f663 100644 --- a/readme.md +++ b/readme.md @@ -63,14 +63,15 @@ comming soon :) # Building on OSX ## Install requirements + ``` brew tap pothosware/homebrew-pothos brew install volk glew glfw fftw portaudio brew install soapysdr ``` You can install additional soapy device support based on your hardware. - ## The build + ``` mkdir build cd build @@ -78,6 +79,22 @@ cmake .. cmake --build . --config Release ``` +# Building on OpenBSD +## Install requirements + +``` +pkg_add fftw3-float glew glfw portaudio-svn + +# install volk and SoapySDR manually +``` +## The build +``` +mkdir build +cd build +cmake --clang .. +cmake --build . --config Release +``` + # Contributing Feel free to issue pull request and report bugs via the github issues. @@ -101,4 +118,4 @@ I will soon publish a contributing.md listing the code style to use. * [Dear ImGui (ocornut)](https://github.com/ocornut/imgui) * [spdlog (gabime)](https://github.com/gabime/spdlog) * [json (nlohmann)](https://github.com/nlohmann/json) -* [portaudio (PortAudio community)](http://www.portaudio.com/) \ No newline at end of file +* [portaudio (PortAudio community)](http://www.portaudio.com/) From 922a22602874a66358d6c932a5900e242ef33f14 Mon Sep 17 00:00:00 2001 From: Alejandro Sior Date: Sat, 24 Oct 2020 17:34:18 +0200 Subject: [PATCH 080/127] fixed OpenBSD build 4 --- CMakeLists.txt | 6 +++--- prepare_root.sh | 2 +- readme.md | 13 +++++++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 565687f3..624b04a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,15 +27,15 @@ endif (MSVC) if (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") - add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") + add_custom_target(do_always ALL cp \"$/libsdrpp_core.so\" \"$\") endif () if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - add_custom_target(do_always ALL cp \"$/sdrpp_core.so\" \"$\") + add_custom_target(do_always ALL cp \"$/libsdrpp_core.so\" \"$\") endif () if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - add_custom_target(do_always ALL cp \"$/sdrpp_core.dylib\" \"$\") + add_custom_target(do_always ALL cp \"$/libsdrpp_core.dylib\" \"$\") endif () # cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" diff --git a/prepare_root.sh b/prepare_root.sh index bfe77fb0..25212ac1 100755 --- a/prepare_root.sh +++ b/prepare_root.sh @@ -1,3 +1,3 @@ #!/bin/sh -cp build/modules/*/*.so root/modules +cp build/*/*.so root/modules diff --git a/readme.md b/readme.md index 9413f663..a320a238 100644 --- a/readme.md +++ b/readme.md @@ -63,15 +63,14 @@ comming soon :) # Building on OSX ## Install requirements - ``` brew tap pothosware/homebrew-pothos brew install volk glew glfw fftw portaudio brew install soapysdr ``` You can install additional soapy device support based on your hardware. -## The build +## The build ``` mkdir build cd build @@ -81,20 +80,26 @@ cmake --build . --config Release # Building on OpenBSD ## Install requirements - ``` pkg_add fftw3-float glew glfw portaudio-svn # install volk and SoapySDR manually ``` + ## The build ``` mkdir build cd build cmake --clang .. -cmake --build . --config Release +make +cd .. +./prepare_root.sh +cp -Rf root root_dev # if are in dev +mv root/modules ./ ``` +Run SDRPP with `build/sdrpp`. + # Contributing Feel free to issue pull request and report bugs via the github issues. From ef36283370a20030b1622354640965154adebb57 Mon Sep 17 00:00:00 2001 From: Howard Su Date: Sat, 24 Oct 2020 23:41:22 +0800 Subject: [PATCH 081/127] Add instruction for Linux --- readme.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index ce590be6..95645864 100644 --- a/readme.md +++ b/readme.md @@ -59,7 +59,28 @@ The last step of the build process is copying the `bandplans` and `res` director If you followed the steps above, it should be `build/Release`. # Building on Linux -comming soon :) +## install requirements +On Debian/Ubtuntu system: +apt install libglew-dev libglfw3-dev libfftw3-dev libvolk1-dev portaudio19-dev libsoapysdr-dev gcc + +## The build +``` +mkdir build +cd build +cmake .. +make +``` + +## Modify root_dev/modules_list.json +If the content is different than the following, change it. +``` +{ + "Radio": "./radio/radio.so", + "Recorder": "./recorder/recorder.so", + "Soapy": "./soapy/soapy.so", + "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.so" +} +``` # Building on OSX ## Install requirements @@ -78,6 +99,17 @@ cmake .. cmake --build . --config Release ``` +## Modify root_dev/modules_list.json +If the content is different than the following, change it. +``` +{ + "Radio": "./radio/radio.dylib", + "Recorder": "./recorder/recorder.dylib", + "Soapy": "./soapy/soapy.dylib", + "RTLTCPSource": "./rtl_tcp_source/rtl_tcp_source.dylib" +} +``` + # Contributing Feel free to issue pull request and report bugs via the github issues. From e62042d26affdde7fe8920a4e854807e6a2d3000 Mon Sep 17 00:00:00 2001 From: AlexandreRouma Date: Sat, 24 Oct 2020 18:56:32 +0200 Subject: [PATCH 082/127] Update readme.md --- readme.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index f9c32b7d..2b169d9c 100644 --- a/readme.md +++ b/readme.md @@ -119,9 +119,8 @@ cp -Rf root root_dev # if are in dev mv root/modules ./ ``` -Run SDRPP with `build/sdrpp`. -======= -## Modify root_dev/modules_list.json +## Run SDRPP with `build/sdrpp`. +Modify root_dev/modules_list.json If the content is different than the following, change it. ``` { From 50a73a380d54715fb9831b5e6aced7db1748843d Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sat, 31 Oct 2020 15:07:49 +0100 Subject: [PATCH 083/127] more fixes --- root_dev/config.json | 6 +++--- rtl_tcp_source/src/rtltcp_client.h | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/root_dev/config.json b/root_dev/config.json index e84b7939..4e002330 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,7 +3,7 @@ "Radio": { "device": "default", "sampleRate": 48000.0, - "volume": 0.1666666716337204 + "volume": 0.4407407343387604 }, "Radio 1": { "device": "Speakers (Realtek High Definition Audio)", @@ -19,7 +19,7 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 298, - "frequency": 77500, + "frequency": 4620379, "max": 0.0, "maximized": true, "menuOrder": [ @@ -32,7 +32,7 @@ "Display" ], "menuWidth": 300, - "min": -53.676475524902344, + "min": -100.0, "showWaterfall": true, "source": "", "sourceSettings": {}, diff --git a/rtl_tcp_source/src/rtltcp_client.h b/rtl_tcp_source/src/rtltcp_client.h index 5ffc771e..c00057e2 100644 --- a/rtl_tcp_source/src/rtltcp_client.h +++ b/rtl_tcp_source/src/rtltcp_client.h @@ -54,6 +54,7 @@ public: int iResult = getaddrinfo(host, buf, &hints, &result); if (iResult != 0) { // TODO: log error + printf("A"); WSACleanup(); return false; } @@ -63,6 +64,7 @@ public: if (sock == INVALID_SOCKET) { // TODO: log error + printf("B"); freeaddrinfo(result); WSACleanup(); return false; @@ -70,6 +72,7 @@ public: iResult = connect(sock, ptr->ai_addr, (int)ptr->ai_addrlen); if (iResult == SOCKET_ERROR) { + printf("C"); closesocket(sock); freeaddrinfo(result); WSACleanup(); @@ -96,6 +99,8 @@ public: connected = true; + printf("Connected"); + return true; } From 75f8a451191b5a8eb00a66b4a56737409e307d3a Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 2 Nov 2020 03:57:44 +0100 Subject: [PATCH 084/127] new dsp --- core/src/dsp/audio.h | 92 +++ core/src/dsp/block.h | 324 +++----- core/src/dsp/buffer.h | 216 ++++++ core/src/dsp/correction.h | 234 ------ core/src/dsp/demodulator.h | 576 +++++--------- core/src/dsp/filter.h | 572 ++++---------- core/src/dsp/math.h | 150 ++-- core/src/dsp/processing.h | 73 ++ core/src/dsp/resampling.h | 1039 +++----------------------- core/src/dsp/routing.h | 350 ++------- core/src/dsp/sink.h | 175 ++--- core/src/dsp/source.h | 123 ++- core/src/dsp/stream.h | 266 ++----- core/src/dsp/types.h | 46 +- core/src/dsp/vfo.h | 155 ++-- core/src/dsp/window.h | 75 ++ core/src/gui/main_window.cpp | 4 +- core/src/io/audio.h | 47 +- core/src/signal_path/audio.cpp | 123 +-- core/src/signal_path/audio.h | 17 +- core/src/signal_path/dsp.cpp | 72 +- core/src/signal_path/dsp.h | 13 +- core/src/signal_path/vfo_manager.cpp | 7 +- file_source/src/main.cpp | 13 +- radio/src/main.cpp | 5 - radio/src/path.cpp | 137 ++-- radio/src/path.h | 18 +- recorder/src/main.cpp | 29 +- root_dev/config.json | 6 +- root_dev/module_list.json | 8 +- root_dev/soapy_source_config.json | 62 +- rtl_tcp_source/src/main.cpp | 13 +- soapy/src/main.cpp | 11 +- 33 files changed, 1712 insertions(+), 3339 deletions(-) create mode 100644 core/src/dsp/audio.h create mode 100644 core/src/dsp/buffer.h delete mode 100644 core/src/dsp/correction.h create mode 100644 core/src/dsp/processing.h create mode 100644 core/src/dsp/window.h diff --git a/core/src/dsp/audio.h b/core/src/dsp/audio.h new file mode 100644 index 00000000..71228754 --- /dev/null +++ b/core/src/dsp/audio.h @@ -0,0 +1,92 @@ +#pragma once +#include +#include + +namespace dsp { + class MonoToStereo : public generic_block { + public: + MonoToStereo() {} + + MonoToStereo(stream* in) { init(in); } + + ~MonoToStereo() { generic_block::stop(); } + + void init(stream* in) { + _in = in; + generic_block::registerInput(_in); + generic_block::registerOutput(&out); + } + + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); + } + + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + if (out.aquire() < 0) { return -1; } + for (int i = 0; i < count; i++) { + out.data[i].l = _in->data[i]; + out.data[i].r = _in->data[i]; + } + + _in->flush(); + out.write(count); + return count; + } + + stream out; + + private: + int count; + stream* _in; + + }; + + class StereoToMono : public generic_block { + public: + StereoToMono() {} + + StereoToMono(stream* in) { init(in); } + + ~StereoToMono() { generic_block::stop(); } + + void init(stream* in) { + _in = in; + generic_block::registerInput(_in); + generic_block::registerOutput(&out); + } + + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); + } + + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + if (out.aquire() < 0) { return -1; } + for (int i = 0; i < count; i++) { + out.data[i] = (_in->data[i].l + _in->data[i].r) / 2.0f; + } + + _in->flush(); + out.write(count); + return count; + } + + stream out; + + private: + int count; + stream* _in; + + }; +} \ No newline at end of file diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index 111636c0..8a5a37d5 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -1,251 +1,121 @@ #pragma once -#include +#include #include -#include +#include +#include +#include +#include + +#define FL_M_PI 3.1415926535f namespace dsp { - template - class Block { + + template + class generic_block { public: - Block(std::vector inBs, std::vector outBs, D* inst, void (*workerFunc)(D* _this)) { - derived = inst; - worker = workerFunc; - inputBlockSize = inBs; - outputBlockSize = outBs; - in.reserve(IC); - out.reserve(OC); - for (int i = 0; i < IC; i++) { - in.push_back(NULL); - } - for (int i = 0; i < OC; i++) { - out.push_back(new stream(outBs[i] * 2)); - } - } + virtual void init() {} - void start() { + virtual void start() { + std::lock_guard lck(ctrlMtx); if (running) { return; } + doStart(); + } + + virtual void stop() { + std::lock_guard lck(ctrlMtx); + if (!running && !tempStopped) { + return; + } + doStop(); + } + + virtual int calcOutSize(int inSize) { return inSize; } + + virtual int run() = 0; + + friend BLOCK; + + private: + void workerLoop() { + while (run() >= 0); + } + + void aquire() { + ctrlMtx.lock(); + } + + void release() { + ctrlMtx.unlock(); + } + + void registerInput(untyped_steam* inStream) { + inputs.push_back(inStream); + } + + void unregisterInput(untyped_steam* inStream) { + inputs.erase(std::remove(inputs.begin(), inputs.end(), inStream), inputs.end()); + } + + void registerOutput(untyped_steam* outStream) { + outputs.push_back(outStream); + } + + void unregisterOutput(untyped_steam* outStream) { + outputs.erase(std::remove(outputs.begin(), outputs.end(), outStream), outputs.end()); + } + + virtual void doStart() { running = true; - startHandler(); - workerThread = std::thread(worker, derived); + workerThread = std::thread(&generic_block::workerLoop, this); } - void stop() { - if (!running) { - return; + virtual void doStop() { + for (auto const& in : inputs) { + in->stopReader(); } - stopHandler(); - for (auto is : in) { - is->stopReader(); + for (auto const& out : outputs) { + out->stopWriter(); } - for (auto os : out) { - os->stopWriter(); + + // TODO: Make sure this isn't needed, I don't know why it stops + if (workerThread.joinable()) { + workerThread.join(); } - workerThread.join(); - for (auto is : in) { - is->clearReadStop(); + for (auto const& in : inputs) { + in->clearReadStop(); } - for (auto os : out) { - os->clearWriteStop(); - } - running = false; - } - - virtual void setBlockSize(int blockSize) { - if (running) { - return; - } - for (int i = 0; i < IC; i++) { - in[i]->setMaxLatency(blockSize * 2); - inputBlockSize[i] = blockSize; - } - for (int i = 0; i < OC; i++) { - out[i]->setMaxLatency(blockSize * 2); - outputBlockSize[i] = blockSize; + for (auto const& out : outputs) { + out->clearWriteStop(); } } - std::vector*> out; + void tempStart() { + if (tempStopped) { + doStart(); + tempStopped = false; + } + } + + void tempStop() { + if (running && !tempStopped) { + doStop(); + tempStopped = true; + } + } + + std::vector inputs; + std::vector outputs; + + bool running = false; + bool tempStopped = false; + + std::thread workerThread; protected: - virtual void startHandler() {} - virtual void stopHandler() {} - std::vector*> in; - std::vector inputBlockSize; - std::vector outputBlockSize; - bool running = false; - - private: - void (*worker)(D* _this); - std::thread workerThread; - D* derived; + std::mutex ctrlMtx; }; - - - class DemoMultiplier : public Block { - public: - DemoMultiplier() : Block({2}, {1}, this, worker) {} - - void init(stream* a, stream* b, int blockSize) { - in[0] = a; - in[1] = b; - inputBlockSize[0] = blockSize; - inputBlockSize[1] = blockSize; - out[0]->setMaxLatency(blockSize * 2); - outputBlockSize[0] = blockSize; - } - - private: - static void worker(DemoMultiplier* _this) { - int blockSize = _this->inputBlockSize[0]; - stream* inA = _this->in[0]; - stream* inB = _this->in[1]; - stream* out = _this->out[0]; - complex_t* aBuf = (complex_t*)volk_malloc(sizeof(complex_t) * blockSize, volk_get_alignment()); - complex_t* bBuf = (complex_t*)volk_malloc(sizeof(complex_t) * blockSize, volk_get_alignment()); - complex_t* outBuf = (complex_t*)volk_malloc(sizeof(complex_t) * blockSize, volk_get_alignment()); - while (true) { - if (inA->read(aBuf, blockSize) < 0) { break; }; - if (inB->read(bBuf, blockSize) < 0) { break; }; - volk_32fc_x2_multiply_32fc((lv_32fc_t*)outBuf, (lv_32fc_t*)aBuf, (lv_32fc_t*)bBuf, blockSize); - if (out->write(outBuf, blockSize) < 0) { break; }; - } - volk_free(aBuf); - volk_free(bBuf); - volk_free(outBuf); - } - - }; - - class Squelch : public Block { - public: - Squelch() : Block({1}, {1}, this, worker) {} - - void init(stream* input, int blockSize) { - in[0] = input; - inputBlockSize[0] = blockSize; - out[0]->setMaxLatency(blockSize * 2); - outputBlockSize[0] = blockSize; - level = -50.0f; - } - - float level; - int onCount; - int offCount; - - private: - static void worker(Squelch* _this) { - int blockSize = _this->inputBlockSize[0]; - stream* in = _this->in[0]; - stream* out = _this->out[0]; - complex_t* buf = new complex_t[blockSize]; - - int _on = 0, _off = 0; - bool active = false; - - while (true) { - if (in->read(buf, blockSize) < 0) { break; }; - for (int i = 0; i < blockSize; i++) { - if (log10(sqrt((buf[i].i*buf[i].i) + (buf[i].q*buf[i].q))) * 10.0f > _this->level) { - _on++; - _off = 0; - } - else { - _on = 0; - _off++; - } - if (_on >= _this->onCount && !active) { - _on = _this->onCount; - active = true; - } - if (_off >= _this->offCount && active) { - _off = _this->offCount; - active = false; - } - if (!active) { - buf[i].i = 0.0f; - buf[i].q = 0.0f; - } - } - if (out->write(buf, blockSize) < 0) { break; }; - } - delete[] buf; - } - - }; - - - - - - template - class Reshaper { - public: - Reshaper() { - - } - - void init(int outBlockSize, dsp::stream* input) { - outputBlockSize = outBlockSize; - in = input; - out.init(outputBlockSize * 2); - } - - void setOutputBlockSize(int blockSize) { - if (running) { - return; - } - outputBlockSize = blockSize; - out.setMaxLatency(outputBlockSize * 2); - } - - void setInput(dsp::stream* input) { - if (running) { - return; - } - in = input; - } - - void start() { - if (running) { - return; - } - workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - in->stopReader(); - out.stopWriter(); - workerThread.join(); - in->clearReadStop(); - out.clearWriteStop(); - running = false; - } - - dsp::stream out; - - private: - static void _worker(Reshaper* _this) { - T* buf = new T[_this->outputBlockSize]; - while (true) { - if (_this->in->read(buf, _this->outputBlockSize) < 0) { break; } - if (_this->out.write(buf, _this->outputBlockSize) < 0) { break; } - } - delete[] buf; - } - - int outputBlockSize; - bool running = false; - std::thread workerThread; - - dsp::stream* in; - - }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/buffer.h b/core/src/dsp/buffer.h new file mode 100644 index 00000000..eb376778 --- /dev/null +++ b/core/src/dsp/buffer.h @@ -0,0 +1,216 @@ +#pragma once +#include + +#define RING_BUF_SZ + +namespace dsp { + template + class RingBuffer { + public: + RingBuffer() { + + } + + RingBuffer(int maxLatency) { init(maxLatency); } + + ~RingBuffer() { delete _buffer; } + + void init(int maxLatency) { + size = RING_BUF_SZ; + _buffer = new T[size]; + _stopReader = false; + _stopWriter = false; + this->maxLatency = maxLatency; + writec = 0; + readc = 0; + readable = 0; + writable = size; + memset(_buffer, 0, size * sizeof(T)); + } + + int read(T* data, int len) { + int dataRead = 0; + int toRead = 0; + while (dataRead < len) { + toRead = std::min(waitUntilReadable(), len - dataRead); + if (toRead < 0) { return -1; }; + + if ((toRead + readc) > size) { + memcpy(&data[dataRead], &_buffer[readc], (size - readc) * sizeof(T)); + memcpy(&data[dataRead + (size - readc)], &_buffer[0], (toRead - (size - readc)) * sizeof(T)); + } + else { + memcpy(&data[dataRead], &_buffer[readc], toRead * sizeof(T)); + } + + dataRead += toRead; + + _readable_mtx.lock(); + readable -= toRead; + _readable_mtx.unlock(); + _writable_mtx.lock(); + writable += toRead; + _writable_mtx.unlock(); + readc = (readc + toRead) % size; + canWriteVar.notify_one(); + } + return len; + } + + int readAndSkip(T* data, int len, int skip) { + int dataRead = 0; + int toRead = 0; + while (dataRead < len) { + toRead = std::min(waitUntilReadable(), len - dataRead); + if (toRead < 0) { return -1; }; + + if ((toRead + readc) > size) { + memcpy(&data[dataRead], &_buffer[readc], (size - readc) * sizeof(T)); + memcpy(&data[dataRead + (size - readc)], &_buffer[0], (toRead - (size - readc)) * sizeof(T)); + } + else { + memcpy(&data[dataRead], &_buffer[readc], toRead * sizeof(T)); + } + + dataRead += toRead; + + _readable_mtx.lock(); + readable -= toRead; + _readable_mtx.unlock(); + _writable_mtx.lock(); + writable += toRead; + _writable_mtx.unlock(); + readc = (readc + toRead) % size; + canWriteVar.notify_one(); + } + dataRead = 0; + while (dataRead < skip) { + toRead = std::min(waitUntilReadable(), skip - dataRead); + if (toRead < 0) { return -1; }; + + dataRead += toRead; + + _readable_mtx.lock(); + readable -= toRead; + _readable_mtx.unlock(); + _writable_mtx.lock(); + writable += toRead; + _writable_mtx.unlock(); + readc = (readc + toRead) % size; + canWriteVar.notify_one(); + } + return len; + } + + int waitUntilReadable() { + if (_stopReader) { return -1; } + int _r = getReadable(); + if (_r != 0) { return _r; } + std::unique_lock lck(_readable_mtx); + canReadVar.wait(lck, [=](){ return ((this->getReadable(false) > 0) || this->getReadStop()); }); + if (_stopReader) { return -1; } + return getReadable(false); + } + + int getReadable(bool lock = true) { + if (lock) { _readable_mtx.lock(); }; + int _r = readable; + if (lock) { _readable_mtx.unlock(); }; + return _r; + } + + int write(T* data, int len) { + int dataWritten = 0; + int toWrite = 0; + while (dataWritten < len) { + toWrite = std::min(waitUntilwritable(), len - dataWritten); + if (toWrite < 0) { return -1; }; + + if ((toWrite + writec) > size) { + memcpy(&_buffer[writec], &data[dataWritten], (size - writec) * sizeof(T)); + memcpy(&_buffer[0], &data[dataWritten + (size - writec)], (toWrite - (size - writec)) * sizeof(T)); + } + else { + memcpy(&_buffer[writec], &data[dataWritten], toWrite * sizeof(T)); + } + + dataWritten += toWrite; + + _readable_mtx.lock(); + readable += toWrite; + _readable_mtx.unlock(); + _writable_mtx.lock(); + writable -= toWrite; + _writable_mtx.unlock(); + writec = (writec + toWrite) % size; + + canReadVar.notify_one(); + } + return len; + } + + int waitUntilwritable() { + if (_stopWriter) { return -1; } + int _w = getWritable(); + if (_w != 0) { return _w; } + std::unique_lock lck(_writable_mtx); + canWriteVar.wait(lck, [=](){ return ((this->getWritable(false) > 0) || this->getWriteStop()); }); + if (_stopWriter) { return -1; } + return getWritable(false); + } + + int getWritable(bool lock = true) { + if (lock) { _writable_mtx.lock(); }; + int _w = writable; + if (lock) { _writable_mtx.unlock(); _readable_mtx.lock(); }; + int _r = readable; + if (lock) { _readable_mtx.unlock(); }; + return std::max(std::min(_w, maxLatency - _r), 0); + } + + void stopReader() { + _stopReader = true; + canReadVar.notify_one(); + } + + void stopWriter() { + _stopWriter = true; + canWriteVar.notify_one(); + } + + bool getReadStop() { + return _stopReader; + } + + bool getWriteStop() { + return _stopWriter; + } + + void clearReadStop() { + _stopReader = false; + } + + void clearWriteStop() { + _stopWriter = false; + } + + void setMaxLatency(int maxLatency) { + this->maxLatency = maxLatency; + } + + private: + T* _buffer; + int size; + int readc; + int writec; + int readable; + int writable; + int maxLatency; + bool _stopReader; + bool _stopWriter; + std::mutex _readable_mtx; + std::mutex _writable_mtx; + std::condition_variable canReadVar; + std::condition_variable canWriteVar; + }; +}; \ No newline at end of file diff --git a/core/src/dsp/correction.h b/core/src/dsp/correction.h deleted file mode 100644 index dc6db7bc..00000000 --- a/core/src/dsp/correction.h +++ /dev/null @@ -1,234 +0,0 @@ -#pragma once -#include -#include -#include -#include - -namespace dsp { - class DCBiasRemover { - public: - DCBiasRemover() { - - } - - DCBiasRemover(stream* input, int bufferSize) : output(bufferSize * 2) { - _in = input; - _bufferSize = bufferSize; - bypass = false; - } - - void init(stream* input, int bufferSize) { - output.init(bufferSize * 2); - _in = input; - _bufferSize = bufferSize; - bypass = false; - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - output.setMaxLatency(blockSize * 2); - } - - void setInput(stream* input) { - if (running) { - return; - } - _in = input; - } - - stream output; - bool bypass; - - private: - // static void _worker(DCBiasRemover* _this) { - // complex_t* buf = new complex_t[_this->_bufferSize]; - // float ibias = 0.0f; - // float qbias = 0.0f; - // while (true) { - // if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; - // if (_this->bypass) { - // if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; - // continue; - // } - // for (int i = 0; i < _this->_bufferSize; i++) { - // ibias += buf[i].i; - // qbias += buf[i].q; - // } - // ibias /= _this->_bufferSize; - // qbias /= _this->_bufferSize; - // for (int i = 0; i < _this->_bufferSize; i++) { - // buf[i].i -= ibias; - // buf[i].q -= qbias; - // } - // if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; - // } - // delete[] buf; - // } - - static void _worker(DCBiasRemover* _this) { - complex_t* buf = new complex_t[_this->_bufferSize]; - complex_t* mixBuf = new complex_t[_this->_bufferSize]; - - float currentPhase = 0.0f; - float lastPhase = 0.0f; - double phase = 0.0f; - - while (true) { - float ibias = 0.0f; - float qbias = 0.0f; - if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; - if (_this->bypass) { - if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; - continue; - } - - // Detect the frequency of the signal - double avgDiff = 0.0f; - // for (int i = 0; i < _this->_bufferSize; i++) { - // currentPhase = fast_arctan2(buf[i].i, buf[i].q); - // float diff = currentPhase - lastPhase; - // if (diff > 3.1415926535f) { diff -= 2 * 3.1415926535f; } - // else if (diff <= -3.1415926535f) { diff += 2 * 3.1415926535f; } - // avgDiff += diff; - // lastPhase = currentPhase; - // } - // avgDiff /= (double)_this->_bufferSize; - // avgDiff /= (double)_this->_bufferSize; - - // Average the samples to "filter" the signal to the block frequency - for (int i = 0; i < _this->_bufferSize; i++) { - ibias += buf[i].i; - qbias += buf[i].q; - } - ibias /= _this->_bufferSize; - qbias /= _this->_bufferSize; - - // Get the phase difference from the last block - currentPhase = fast_arctan2(ibias, qbias); - float diff = currentPhase - lastPhase; - if (diff > 3.1415926535f) { diff -= 2 * 3.1415926535f; } - else if (diff <= -3.1415926535f) { diff += 2 * 3.1415926535f; } - avgDiff += diff; - lastPhase = currentPhase; - avgDiff /= (double)_this->_bufferSize; - - // Generate a correction signal using the phase difference - for (int i = 0; i < _this->_bufferSize; i++) { - mixBuf[i].i = sin(phase); - mixBuf[i].q = cos(phase); - phase -= avgDiff; - phase = fmodl(phase, 2.0 * 3.1415926535); - } - - // Mix the correction signal with the original signal to shift the unwanted signal - // to the center. Also, null out the real component so that symetric - // frequencies are removed (at least I hope...) - float tq; - for (int i = 0; i < _this->_bufferSize; i++) { - buf[i].i = ((mixBuf[i].i * buf[i].q) + (mixBuf[i].q * buf[i].i)) * 1.4142; - buf[i].q = 0; - } - - if (_this->output.write(buf, _this->_bufferSize) < 0) { break; }; - } - delete[] buf; - } - - stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; - }; - - class ComplexToStereo { - public: - ComplexToStereo() { - - } - - ComplexToStereo(stream* input, int bufferSize) : output(bufferSize * 2) { - _in = input; - _bufferSize = bufferSize; - } - - void init(stream* input, int bufferSize) { - output.init(bufferSize * 2); - _in = input; - _bufferSize = bufferSize; - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - output.setMaxLatency(blockSize * 2); - } - - stream output; - - private: - static void _worker(ComplexToStereo* _this) { - complex_t* inBuf = new complex_t[_this->_bufferSize]; - StereoFloat_t* outBuf = new StereoFloat_t[_this->_bufferSize]; - while (true) { - if (_this->_in->read(inBuf, _this->_bufferSize) < 0) { break; }; - for (int i = 0; i < _this->_bufferSize; i++) { - outBuf[i].l = inBuf[i].i; - outBuf[i].r = inBuf[i].q; - } - if (_this->output.write(outBuf, _this->_bufferSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } - - stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; - }; -}; \ No newline at end of file diff --git a/core/src/dsp/demodulator.h b/core/src/dsp/demodulator.h index 5c865590..21116575 100644 --- a/core/src/dsp/demodulator.h +++ b/core/src/dsp/demodulator.h @@ -1,424 +1,260 @@ #pragma once -#include -#include -#include -#include -#include +#include +#include -/* - TODO: - - Add a sample rate ajustment function to all demodulators -*/ - -#define FAST_ATAN2_COEF1 3.1415926535f / 4.0f -#define FAST_ATAN2_COEF2 3.0f * FAST_ATAN2_COEF1 +#define FAST_ATAN2_COEF1 FL_M_PI / 4.0f +#define FAST_ATAN2_COEF2 3.0f * FAST_ATAN2_COEF1 inline float fast_arctan2(float y, float x) { - float abs_y = fabs(y) + (1e-10); - float r, angle; - if (x>=0) { - r = (x - abs_y) / (x + abs_y); - angle = FAST_ATAN2_COEF1 - FAST_ATAN2_COEF1 * r; - } - else { - r = (x + abs_y) / (abs_y - x); - angle = FAST_ATAN2_COEF2 - FAST_ATAN2_COEF1 * r; - } - if (y < 0) { - return -angle; - } + float abs_y = fabsf(y); + float r, angle; + if (x == 0.0f && y == 0.0f) { return 0.0f; } + if (x>=0.0f) { + r = (x - abs_y) / (x + abs_y); + angle = FAST_ATAN2_COEF1 - FAST_ATAN2_COEF1 * r; + } + else { + r = (x + abs_y) / (abs_y - x); + angle = FAST_ATAN2_COEF2 - FAST_ATAN2_COEF1 * r; + } + if (y < 0.0f) { + return -angle; + } return angle; } namespace dsp { - class FMDemodulator { + class FMDemod : public generic_block { public: - FMDemodulator() { - - } + FMDemod() {} - FMDemodulator(stream* in, float deviation, long sampleRate, int blockSize) : output(blockSize * 2) { - running = false; - _input = in; - _blockSize = blockSize; - _phase = 0.0f; - _deviation = deviation; + FMDemod(stream* in, float sampleRate, float deviation) { init(in, sampleRate, deviation); } + + ~FMDemod() { generic_block::stop(); } + + void init(stream* in, float sampleRate, float deviation) { + _in = in; _sampleRate = sampleRate; - _phasorSpeed = (2 * 3.1415926535) / (sampleRate / deviation); + _deviation = deviation; + phasorSpeed = (_sampleRate / _deviation) / (2 * FL_M_PI); + generic_block::registerInput(_in); + generic_block::registerOutput(&out); } - void init(stream* in, float deviation, long sampleRate, int blockSize) { - output.init(blockSize * 2); - running = false; - _input = in; - _blockSize = blockSize; - _phase = 0.0f; - _phasorSpeed = (2 * 3.1415926535) / (sampleRate / deviation); - } - - void start() { - if (running) { - return; - } - running = true; - _workerThread = std::thread(_worker, this); - } - - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - running = false; - _input->clearReadStop(); - output.clearWriteStop(); - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - output.setMaxLatency(_blockSize * 2); + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); } void setSampleRate(float sampleRate) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); _sampleRate = sampleRate; - _phasorSpeed = (2 * 3.1415926535) / (sampleRate / _deviation); + phasorSpeed = (_sampleRate / _deviation) / (2 * FL_M_PI); + generic_block::tempStart(); + } + + float getSampleRate() { + return _sampleRate; } void setDeviation(float deviation) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); _deviation = deviation; - _phasorSpeed = (2 * 3.1415926535) / (_sampleRate / _deviation); + phasorSpeed = (_sampleRate / _deviation) / (2 * FL_M_PI); + generic_block::tempStart(); } - stream output; + float getDeviation() { + return _deviation; + } + + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + // This is somehow faster than volk... + + float diff, currentPhase; + + if (out.aquire() < 0) { return -1; } + for (int i = 0; i < count; i++) { + currentPhase = fast_arctan2(_in->data[i].i, _in->data[i].q); + diff = currentPhase - phase; + if (diff > FL_M_PI) { out.data[i] = (diff - 2 * FL_M_PI) * phasorSpeed; } + else if (diff <= -FL_M_PI) { out.data[i] = (diff + 2 * FL_M_PI) * phasorSpeed; } + phase = currentPhase; + } + + _in->flush(); + out.write(count); + return count; + } + + stream out; private: - static void _worker(FMDemodulator* _this) { - complex_t* inBuf = new complex_t[_this->_blockSize]; - float* outBuf = new float[_this->_blockSize]; - float diff = 0; - float currentPhase = 0; - while (true) { - if (_this->_input->read(inBuf, _this->_blockSize) < 0) { return; }; - for (int i = 0; i < _this->_blockSize; i++) { - currentPhase = fast_arctan2(inBuf[i].i, inBuf[i].q); - diff = currentPhase - _this->_phase; - if (diff > 3.1415926535f) { diff -= 2 * 3.1415926535f; } - else if (diff <= -3.1415926535f) { diff += 2 * 3.1415926535f; } - outBuf[i] = diff / _this->_phasorSpeed; - _this->_phase = currentPhase; - } - if (_this->output.write(outBuf, _this->_blockSize) < 0) { return; }; - } - } + int count; + float phase, phasorSpeed, _sampleRate, _deviation; + stream* _in; - stream* _input; - bool running; - int _blockSize; - float _phase; - float _phasorSpeed; - float _deviation; - float _sampleRate; - std::thread _workerThread; }; - - class AMDemodulator { + class AMDemod : public generic_block { public: - AMDemodulator() { - + AMDemod() {} + + AMDemod(stream* in) { init(in); } + + ~AMDemod() { generic_block::stop(); } + + void init(stream* in) { + _in = in; + generic_block::registerInput(_in); + generic_block::registerOutput(&out); } - AMDemodulator(stream* in, int blockSize) : output(blockSize * 2) { - running = false; - _input = in; - _blockSize = blockSize; + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); } - void init(stream* in, int blockSize) { - output.init(blockSize * 2); - running = false; - _input = in; - _blockSize = blockSize; + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + if (out.aquire() < 0) { return -1; } + volk_32fc_magnitude_32f(out.data, (lv_32fc_t*)_in->data, count); + + _in->flush(); + out.write(count); + return count; } - void start() { - if (running) { - return; - } - running = true; - _workerThread = std::thread(_worker, this); - } - - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - running = false; - _input->clearReadStop(); - output.clearWriteStop(); - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - output.setMaxLatency(_blockSize * 2); - } - - stream output; + stream out; private: - static void _worker(AMDemodulator* _this) { - complex_t* inBuf = new complex_t[_this->_blockSize]; - float* outBuf = new float[_this->_blockSize]; - float min, max, amp; - while (true) { - if (_this->_input->read(inBuf, _this->_blockSize) < 0) { break; }; - min = INFINITY; - max = 0.0f; - for (int i = 0; i < _this->_blockSize; i++) { - outBuf[i] = sqrt((inBuf[i].i*inBuf[i].i) + (inBuf[i].q*inBuf[i].q)); - if (outBuf[i] < min) { - min = outBuf[i]; - } - if (outBuf[i] > max) { - max = outBuf[i]; - } - } - amp = (max - min) / 2.0f; - for (int i = 0; i < _this->_blockSize; i++) { - outBuf[i] = (outBuf[i] - min - amp) / amp; - } - if (_this->output.write(outBuf, _this->_blockSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } + int count; + stream* _in; - stream* _input; - bool running; - int _blockSize; - std::thread _workerThread; }; - class SSBDemod { + class SSBDemod : public generic_block { public: - SSBDemod() { + SSBDemod() {} - } + SSBDemod(stream* in, float sampleRate, float bandWidth, int mode) { init(in, sampleRate, bandWidth, mode); } - void init(stream* input, float sampleRate, float bandWidth, int blockSize) { - _blockSize = blockSize; - _bandWidth = bandWidth; - _mode = MODE_USB; - output.init(blockSize * 2); - lo.init(bandWidth / 2.0f, sampleRate, blockSize); - mixer.init(input, &lo.output, blockSize); - lo.start(); - } - - void start() { - mixer.start(); - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - mixer.stop(); - mixer.output.stopReader(); - output.stopWriter(); - _workerThread.join(); - mixer.output.clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - } - - void setMode(int mode) { - if (mode < 0 && mode >= _MODE_COUNT) { - return; - } - _mode = mode; - if (mode == MODE_USB) { - lo.setFrequency(_bandWidth / 2.0f); - } - else if (mode == MODE_LSB) { - lo.setFrequency(-_bandWidth / 2.0f); - } - else if (mode == MODE_LSB) { - lo.setFrequency(0); - } - } - - void setBandwidth(float bandwidth) { - _bandWidth = bandwidth; - if (_mode == MODE_USB) { - lo.setFrequency(_bandWidth / 2.0f); - } - else if (_mode == MODE_LSB) { - lo.setFrequency(-_bandWidth / 2.0f); - } - } - - stream output; + ~SSBDemod() { generic_block::stop(); } enum { MODE_USB, MODE_LSB, - MODE_DSB, - _MODE_COUNT + MODE_DSB }; - private: - static void _worker(SSBDemod* _this) { - complex_t* inBuf = new complex_t[_this->_blockSize]; - float* outBuf = new float[_this->_blockSize]; - - float min, max, factor; - - while (true) { - if (_this->mixer.output.read(inBuf, _this->_blockSize) < 0) { break; }; - min = INFINITY; - max = -INFINITY; - for (int i = 0; i < _this->_blockSize; i++) { - outBuf[i] = inBuf[i].q; - if (inBuf[i].q < min) { - min = inBuf[i].q; - } - if (inBuf[i].q > max) { - max = inBuf[i].q; - } - } - factor = (max - min) / 2; - for (int i = 0; i < _this->_blockSize; i++) { - outBuf[i] /= factor; - } - if (_this->output.write(outBuf, _this->_blockSize) < 0) { break; }; + void init(stream* in, float sampleRate, float bandWidth, int mode) { + _in = in; + _sampleRate = sampleRate; + _bandWidth = bandWidth; + _mode = mode; + phase = lv_cmake(1.0f, 0.0f); + switch (_mode) { + case MODE_USB: + phaseDelta = lv_cmake(std::cos((_bandWidth / _sampleRate) * FL_M_PI), std::sin((_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_LSB: + phaseDelta = lv_cmake(std::cos(-(_bandWidth / _sampleRate) * FL_M_PI), std::sin(-(_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_DSB: + phaseDelta = lv_cmake(1.0f, 0.0f); + break; } - - delete[] inBuf; - delete[] outBuf; + generic_block::registerInput(_in); + generic_block::registerOutput(&out); } - std::thread _workerThread; - SineSource lo; - Multiplier mixer; - int _blockSize; - float _bandWidth; + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); + } + + void setSampleRate(float sampleRate) { + // No need to restart + _sampleRate = sampleRate; + switch (_mode) { + case MODE_USB: + phaseDelta = lv_cmake(std::cos((_bandWidth / _sampleRate) * FL_M_PI), std::sin((_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_LSB: + phaseDelta = lv_cmake(std::cos(-(_bandWidth / _sampleRate) * FL_M_PI), std::sin(-(_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_DSB: + phaseDelta = lv_cmake(1.0f, 0.0f); + break; + } + } + + void setBandWidth(float bandWidth) { + // No need to restart + _bandWidth = bandWidth; + switch (_mode) { + case MODE_USB: + phaseDelta = lv_cmake(std::cos((_bandWidth / _sampleRate) * FL_M_PI), std::sin((_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_LSB: + phaseDelta = lv_cmake(std::cos(-(_bandWidth / _sampleRate) * FL_M_PI), std::sin(-(_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_DSB: + phaseDelta = lv_cmake(1.0f, 0.0f); + break; + } + } + + void setMode(int mode) { + _mode = mode; + switch (_mode) { + case MODE_USB: + phaseDelta = lv_cmake(std::cos((_bandWidth / _sampleRate) * FL_M_PI), std::sin((_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_LSB: + phaseDelta = lv_cmake(std::cos(-(_bandWidth / _sampleRate) * FL_M_PI), std::sin(-(_bandWidth / _sampleRate) * FL_M_PI)); + break; + case MODE_DSB: + phaseDelta = lv_cmake(1.0f, 0.0f); + break; + } + } + + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + if (out.aquire() < 0) { return -1; } + volk_32fc_s32fc_x2_rotator_32fc((lv_32fc_t*)out.data, (lv_32fc_t*)_in->data, phaseDelta, &phase, count); + volk_32fc_deinterleave_real_32f(out.data, (lv_32fc_t*)_in->data, count); + + _in->flush(); + out.write(count); + return count; + } + + stream out; + + private: + int count; int _mode; - bool running = false; + float _sampleRate, _bandWidth; + stream* _in; + lv_32fc_t phase; + lv_32fc_t phaseDelta; + }; - - - - - - // class CWDemod { - // public: - // CWDemod() { - - // } - - // void init(stream* input, float sampleRate, float bandWidth, int blockSize) { - // _blockSize = blockSize; - // _bandWidth = bandWidth; - // _mode = MODE_USB; - // output.init(blockSize * 2); - // lo.init(bandWidth / 2.0f, sampleRate, blockSize); - // mixer.init(input, &lo.output, blockSize); - // lo.start(); - // } - - // void start() { - // mixer.start(); - // _workerThread = std::thread(_worker, this); - // running = true; - // } - - // void stop() { - // mixer.stop(); - // mixer.output.stopReader(); - // output.stopWriter(); - // _workerThread.join(); - // mixer.output.clearReadStop(); - // output.clearWriteStop(); - // running = false; - // } - - // void setBlockSize(int blockSize) { - // if (running) { - // return; - // } - // _blockSize = blockSize; - // } - - // void setMode(int mode) { - // if (mode < 0 && mode >= _MODE_COUNT) { - // return; - // } - // _mode = mode; - // if (mode == MODE_USB) { - // lo.setFrequency(_bandWidth / 2.0f); - // } - // else if (mode == MODE_LSB) { - // lo.setFrequency(-_bandWidth / 2.0f); - // } - // } - - // stream output; - - // private: - // static void _worker(CWDemod* _this) { - // complex_t* inBuf = new complex_t[_this->_blockSize]; - // float* outBuf = new float[_this->_blockSize]; - - // float min, max, factor; - - // while (true) { - // if (_this->mixer.output.read(inBuf, _this->_blockSize) < 0) { break; }; - // min = INFINITY; - // max = -INFINITY; - // for (int i = 0; i < _this->_blockSize; i++) { - // outBuf[i] = inBuf[i].q; - // if (inBuf[i].q < min) { - // min = inBuf[i].q; - // } - // if (inBuf[i].q > max) { - // max = inBuf[i].q; - // } - // } - // factor = (max - min) / 2; - // for (int i = 0; i < _this->_blockSize; i++) { - // outBuf[i] /= factor; - // } - // if (_this->output.write(outBuf, _this->_blockSize) < 0) { break; }; - // } - - // delete[] inBuf; - // delete[] outBuf; - // } - - // std::thread _workerThread; - // SineSource lo; - // Multiplier mixer; - // int _blockSize; - // float _bandWidth; - // int _mode; - // bool running = false; - // }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/filter.h b/core/src/dsp/filter.h index 7ccb0227..35ac6cb0 100644 --- a/core/src/dsp/filter.h +++ b/core/src/dsp/filter.h @@ -1,489 +1,167 @@ #pragma once -#include -#include -#include -#include -#include -#include - -#define GET_FROM_RIGHT_BUF(buffer, delayLine, delayLineSz, n) (((n) < 0) ? delayLine[(delayLineSz) + (n)] : buffer[(n)]) +#include +#include +#include & taps, float sampleRate, float cutoff, float transWidth, int addedTaps = 0) { - taps.clear(); - float fc = cutoff / sampleRate; - if (fc > 1.0f) { - fc = 1.0f; - } - - int _M = (4.0f / (transWidth / sampleRate)) + (float)addedTaps; - if (_M < 4) { - _M = 4; - } - - if (_M % 2 == 0) { _M++; } - float M = _M; - float sum = 0.0f; - float val; - for (int i = 0; i < _M; i++) { - val = (sin(2.0f * M_PI * fc * ((float)i - (M / 2))) / ((float)i - (M / 2))) * (0.42f - (0.5f * cos(2.0f * M_PI / M)) + (0.8f * cos(4.0f * M_PI / M))); - taps.push_back(val); - sum += val; - } - for (int i = 0; i < M; i++) { - taps[i] /= sum; - } - } - - class DecimatingFIRFilter { + template + class FIR : public generic_block> { public: - DecimatingFIRFilter() { - + FIR() {} + + FIR(stream* in, dsp::filter_window::generic_window* window) { init(in, window); } + + ~FIR() { + generic_block>::stop(); + volk_free(buffer); + volk_free(taps); } - DecimatingFIRFilter(stream* input, std::vector taps, int blockSize, float decim) { - output.init((blockSize * 2) / decim); - _in = input; - _blockSize = blockSize; - _tapCount = taps.size(); - delayBuf = new complex_t[_tapCount]; + void init(stream* in, dsp::filter_window::generic_window* window) { + _in = in; - _taps = new float[_tapCount]; - for (int i = 0; i < _tapCount; i++) { - _taps[i] = taps[i]; - } + tapCount = window->getTapCount(); + taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); + window->createTaps(taps, tapCount); - _decim = decim; - - for (int i = 0; i < _tapCount; i++) { - delayBuf[i].i = 0.0f; - delayBuf[i].q = 0.0f; - } - - running = false; + buffer = (T*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(T) * 2, volk_get_alignment()); + bufStart = &buffer[tapCount]; + generic_block>::registerInput(_in); + generic_block>::registerOutput(&out); } - void init(stream* input, std::vector& taps, int blockSize, float decim) { - output.init((blockSize * 2) / decim); - _in = input; - _blockSize = blockSize; - _tapCount = taps.size(); - delayBuf = new complex_t[_tapCount]; - - _taps = new float[_tapCount]; - for (int i = 0; i < _tapCount; i++) { - _taps[i] = taps[i]; - } - - _decim = decim; - - for (int i = 0; i < _tapCount; i++) { - delayBuf[i].i = 0.0f; - delayBuf[i].q = 0.0f; - } - - running = false; + void setInput(stream* in) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _in = in; + generic_block>::tempStart(); } - void start() { - if (running) { - return; - } - running = true; - _workerThread = std::thread(_worker, this); - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; + void updateWindow(dsp::filter_window::generic_window* window) { + _window = window; + volk_free(taps); + tapCount = window->getTapCount(); + taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); + window->createTaps(taps, tapCount); } - void setTaps(std::vector& taps) { - if (running) { - return; + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + memcpy(bufStart, _in->data, count * sizeof(T)); + _in->flush(); + + // Write to output + if (out.aquire() < 0) { return -1; } + + if constexpr (std::is_same_v) { + for (int i = 0; i < count; i++) { + volk_32f_x2_dot_prod_32f((float*)&out.data[i], (float*)&buffer[i+1], taps, tapCount); + } } - _tapCount = taps.size(); - delete[] _taps; - delete[] delayBuf; - _taps = new float[_tapCount]; - delayBuf = new complex_t[_tapCount]; - for (int i = 0; i < _tapCount; i++) { - _taps[i] = taps[i]; - delayBuf[i].i = 0; - delayBuf[i].q = 0; + if constexpr (std::is_same_v) { + for (int i = 0; i < count; i++) { + volk_32fc_32f_dot_prod_32fc((lv_32fc_t*)&out.data[i], (lv_32fc_t*)&buffer[i+1], taps, tapCount); + } } + + out.write(count); + + memmove(buffer, &buffer[count], tapCount * sizeof(T)); + + return count; } - void setInput(stream* input) { - if (running) { - return; - } - _in = input; - } - - void setDecimation(float decimation) { - if (running) { - return; - } - _decim = decimation; - output.setMaxLatency((_blockSize * 2) / _decim); - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - output.setMaxLatency(getOutputBlockSize() * 2); - } - - int getOutputBlockSize() { - return _blockSize / _decim; - } - - stream output; + stream out; private: - static void _worker(DecimatingFIRFilter* _this) { - int outputSize = _this->_blockSize / _this->_decim; - complex_t* inBuf = new complex_t[_this->_blockSize]; - complex_t* outBuf = new complex_t[outputSize]; - float tap = 0.0f; - int delayOff; - void* delayStart = &inBuf[_this->_blockSize - (_this->_tapCount - 1)]; - int delaySize = (_this->_tapCount - 1) * sizeof(complex_t); + int count; + stream* _in; - int blockSize = _this->_blockSize; - int outBufferLength = outputSize * sizeof(complex_t); - int tapCount = _this->_tapCount; - int decim = _this->_decim; - complex_t* delayBuf = _this->delayBuf; - int id = 0; + dsp::filter_window::generic_window* _window; - while (true) { - if (_this->_in->read(inBuf, blockSize) < 0) { break; }; - memset(outBuf, 0, outBufferLength); - - for (int t = 0; t < tapCount; t++) { - tap = _this->_taps[t]; - if (tap == 0.0f) { - continue; - } + T* bufStart; + T* buffer; + int tapCount; + float* taps; - delayOff = tapCount - t; - id = 0; - - for (int i = 0; i < blockSize; i += decim) { - if (i < t) { - outBuf[id].i += tap * delayBuf[delayOff + i].i; - outBuf[id].q += tap * delayBuf[delayOff + i].q; - } - else { - outBuf[id].i += tap * inBuf[i - t].i; - outBuf[id].q += tap * inBuf[i - t].q; - } - id++; - } - } - memcpy(delayBuf, delayStart, delaySize); - if (_this->output.write(outBuf, outputSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } - - stream* _in; - complex_t* delayBuf; - int _blockSize; - int _tapCount = 0; - float _decim; - std::thread _workerThread; - float* _taps; - bool running; }; - - class FloatDecimatingFIRFilter { + class BFMDeemp : public generic_block { public: - FloatDecimatingFIRFilter() { - - } + BFMDeemp() {} - FloatDecimatingFIRFilter(stream* input, std::vector taps, int blockSize, float decim) { - output.init((blockSize * 2) / decim); - _in = input; - _blockSize = blockSize; - _tapCount = taps.size(); - delayBuf = new float[_tapCount]; + BFMDeemp(stream* in, float sampleRate, float tau) { init(in, sampleRate, tau); } - _taps = new float[_tapCount]; - for (int i = 0; i < _tapCount; i++) { - _taps[i] = taps[i]; - } + ~BFMDeemp() { generic_block::stop(); } - _decim = decim; - - for (int i = 0; i < _tapCount; i++) { - delayBuf[i] = 0.0f; - } - - running = false; - } - - void init(stream* input, std::vector& taps, int blockSize, float decim) { - output.init((blockSize * 2) / decim); - _in = input; - _blockSize = blockSize; - _tapCount = taps.size(); - delayBuf = new float[_tapCount]; - - _taps = new float[_tapCount]; - for (int i = 0; i < _tapCount; i++) { - _taps[i] = taps[i]; - } - - _decim = decim; - - for (int i = 0; i < _tapCount; i++) { - delayBuf[i] = 0.0f; - } - - running = false; - } - - void start() { - if (running) { - return; - } - running = true; - _workerThread = std::thread(_worker, this); - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setTaps(std::vector& taps) { - if (running) { - return; - } - _tapCount = taps.size(); - delete[] _taps; - delete[] delayBuf; - _taps = new float[_tapCount]; - delayBuf = new float[_tapCount]; - for (int i = 0; i < _tapCount; i++) { - _taps[i] = taps[i]; - delayBuf[i] = 0; - } - } - - void setInput(stream* input) { - if (running) { - return; - } - _in = input; - } - - void setDecimation(float decimation) { - if (running) { - return; - } - _decim = decimation; - output.setMaxLatency((_blockSize * 2) / _decim); - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - output.setMaxLatency((_blockSize * 2) / _decim); - } - - int getOutputBlockSize() { - return _blockSize / _decim; - } - - stream output; - - private: - static void _worker(FloatDecimatingFIRFilter* _this) { - int outputSize = _this->_blockSize / _this->_decim; - float* inBuf = new float[_this->_blockSize]; - float* outBuf = new float[outputSize]; - float tap = 0.0f; - int delayOff; - void* delayStart = &inBuf[_this->_blockSize - (_this->_tapCount - 1)]; - int delaySize = (_this->_tapCount - 1) * sizeof(float); - - int blockSize = _this->_blockSize; - int outBufferLength = outputSize * sizeof(float); - int tapCount = _this->_tapCount; - int decim = _this->_decim; - float* delayBuf = _this->delayBuf; - int id = 0; - - while (true) { - if (_this->_in->read(inBuf, blockSize) < 0) { break; }; - memset(outBuf, 0, outBufferLength); - - for (int t = 0; t < tapCount; t++) { - tap = _this->_taps[t]; - if (tap == 0.0f) { - continue; - } - - delayOff = tapCount - t; - id = 0; - - for (int i = 0; i < blockSize; i += decim) { - if (i < t) { - outBuf[id] += tap * delayBuf[delayOff + i]; - id++; - continue; - } - outBuf[id] += tap * inBuf[i - t]; - id++; - } - } - memcpy(delayBuf, delayStart, delaySize); - if (_this->output.write(outBuf, outputSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } - - stream* _in; - float* delayBuf; - int _blockSize; - int _tapCount = 0; - float _decim; - std::thread _workerThread; - float* _taps; - bool running; - }; - - class FMDeemphasis { - public: - FMDeemphasis() { - - } - - FMDeemphasis(stream* input, int bufferSize, float tau, float sampleRate) : output(bufferSize * 2) { - _in = input; - _bufferSize = bufferSize; - bypass = false; + void init(stream* in, float sampleRate, float tau) { + _in = in; + _sampleRate = sampleRate; _tau = tau; + float dt = 1.0f / _sampleRate; + alpha = dt / (_tau + dt); + generic_block::registerInput(_in); + generic_block::registerOutput(&out); + } + + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); + } + + void setSampleRate(float sampleRate) { _sampleRate = sampleRate; - } - - void init(stream* input, int bufferSize, float tau, float sampleRate) { - output.init(bufferSize * 2); - _in = input; - _bufferSize = bufferSize; - bypass = false; - _tau = tau; - _sampleRate = sampleRate; - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - output.setMaxLatency(blockSize * 2); - } - - void setSamplerate(float sampleRate) { - if (running) { - return; - } - _sampleRate = sampleRate; + float dt = 1.0f / _sampleRate; + alpha = dt / (_tau + dt); } void setTau(float tau) { - if (running) { - return; - } _tau = tau; + float dt = 1.0f / _sampleRate; + alpha = dt / (_tau + dt); } - stream output; - bool bypass; + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + if (bypass) { + if (out.aquire() < 0) { return -1; } + _in->flush(); + out.write(count); + } + + if (isnan(lastOut)) { + lastOut = 0.0f; + } + if (out.aquire() < 0) { return -1; } + out.data[0] = (alpha * _in->data[0]) + ((1-alpha) * lastOut); + for (int i = 1; i < count; i++) { + out.data[i] = (alpha * _in->data[i]) + ((1 - alpha) * out.data[i - 1]); + } + lastOut = out.data[count - 1]; + + _in->flush(); + out.write(count); + return count; + } + + bool bypass = false; + + stream out; private: - static void _worker(FMDeemphasis* _this) { - float* inBuf = new float[_this->_bufferSize]; - float* outBuf = new float[_this->_bufferSize]; - int count = _this->_bufferSize; - float lastOut = 0.0f; - float dt = 1.0f / _this->_sampleRate; - float alpha = dt / (_this->_tau + dt); - - while (true) { - if (_this->_in->read(inBuf, count) < 0) { break; }; - if (_this->bypass) { - if (_this->output.write(inBuf, count) < 0) { break; }; - continue; - } - - if (isnan(lastOut)) { - lastOut = 0.0f; - } - outBuf[0] = (alpha * inBuf[0]) + ((1-alpha) * lastOut); - for (int i = 1; i < count; i++) { - outBuf[i] = (alpha * inBuf[i]) + ((1 - alpha) * outBuf[i - 1]); - } - lastOut = outBuf[count - 1]; - - if (_this->output.write(outBuf, count) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } - - stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; - float _sampleRate; + int count; + float lastOut = 0.0f; + float alpha; float _tau; + float _sampleRate; + stream* _in; + }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/math.h b/core/src/dsp/math.h index 0347378f..1d92553e 100644 --- a/core/src/dsp/math.h +++ b/core/src/dsp/math.h @@ -1,85 +1,107 @@ #pragma once -#include -#include -#include +#include #include -#ifndef M_PI -#define M_PI 3.1415926535f -#endif - namespace dsp { - class Multiplier { + template + class Add : public generic_block> { public: - Multiplier() { - - } + Add() {} - Multiplier(stream* a, stream* b, int blockSize) : output(blockSize * 2) { + Add(stream* a, stream* b) { init(a, b); } + + ~Add() { generic_block::stop(); } + + void init(stream* a, stream* b) { _a = a; _b = b; - _blockSize = blockSize; + generic_block::registerInput(a); + generic_block::registerInput(b); + generic_block::registerOutput(&out); } - void init(stream* a, stream* b, int blockSize) { - output.init(blockSize * 2); - _a = a; - _b = b; - _blockSize = blockSize; - } - - void start() { - if (running) { - return; + int run() { + a_count = _a->read(); + if (a_count < 0) { return -1; } + b_count = _b->read(); + if (b_count < 0) { return -1; } + if (a_count != b_count) { + _a->flush(); + _b->flush(); + return 0; } - running = true; - _workerThread = std::thread(_worker, this); - } - void stop() { - if (!running) { - return; + if (out.aquire() < 0) { return -1; } + if constexpr (std::is_same_v || std::is_same_v) { + volk_32fc_x2_add_32fc(out.data, _a->data, _b->data, a_count); } - _a->stopReader(); - _b->stopReader(); - output.stopWriter(); - _workerThread.join(); - running = false; - _a->clearReadStop(); - _b->clearReadStop(); - output.clearWriteStop(); - } - - void setBlockSize(int blockSize) { - if (running) { - return; + else { + volk_32f_x2_add_32f(out.data, _a->data, _b->data, a_count); } - _blockSize = blockSize; - output.setMaxLatency(blockSize * 2); + + _a->flush(); + _b->flush(); + out.write(a_count); + return a_count; } - stream output; + stream out; private: - static void _worker(Multiplier* _this) { - complex_t* aBuf = (complex_t*)volk_malloc(sizeof(complex_t) * _this->_blockSize, volk_get_alignment()); - complex_t* bBuf = (complex_t*)volk_malloc(sizeof(complex_t) * _this->_blockSize, volk_get_alignment()); - complex_t* outBuf = (complex_t*)volk_malloc(sizeof(complex_t) * _this->_blockSize, volk_get_alignment()); - while (true) { - if (_this->_a->read(aBuf, _this->_blockSize) < 0) { break; }; - if (_this->_b->read(bBuf, _this->_blockSize) < 0) { break; }; - volk_32fc_x2_multiply_32fc((lv_32fc_t*)outBuf, (lv_32fc_t*)aBuf, (lv_32fc_t*)bBuf, _this->_blockSize); - if (_this->output.write(outBuf, _this->_blockSize) < 0) { break; }; - } - volk_free(aBuf); - volk_free(bBuf); - volk_free(outBuf); + int a_count, b_count; + stream* _a; + stream* _b; + + }; + + template + class Multiply : public generic_block> { + public: + Multiply() {} + + Multiply(stream* a, stream* b) { init(a, b); } + + ~Multiply() { generic_block::stop(); } + + void init(stream* a, stream* b) { + _a = a; + _b = b; + generic_block::registerInput(a); + generic_block::registerInput(b); + generic_block::registerOutput(&out); } - stream* _a; - stream* _b; - int _blockSize; - bool running = false; - std::thread _workerThread; + int run() { + a_count = _a->read(); + if (a_count < 0) { return -1; } + b_count = _b->read(); + if (b_count < 0) { return -1; } + if (a_count != b_count) { + _a->flush(); + _b->flush(); + return 0; + } + + if (out.aquire() < 0) { return -1; } + if constexpr (std::is_same_v) { + volk_32fc_x2_multiply_32fc(out.data, _a->data, _b->data, a_count); + } + else { + volk_32f_x2_multiply_32f(out.data, _a->data, _b->data, a_count); + } + + _a->flush(); + _b->flush(); + out.write(a_count); + return a_count; + } + + stream out; + + private: + int a_count, b_count; + stream* _a; + stream* _b; + }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/processing.h b/core/src/dsp/processing.h new file mode 100644 index 00000000..f851a56e --- /dev/null +++ b/core/src/dsp/processing.h @@ -0,0 +1,73 @@ +#pragma once +#include + +namespace dsp { + class FrequencyXlator : public generic_block { + public: + FrequencyXlator() {} + + FrequencyXlator(stream* in, float sampleRate, float freq) { init(in, sampleRate, freq); } + + ~FrequencyXlator() { generic_block::stop(); } + + void init(stream* in, float sampleRate, float freq) { + _in = in; + _sampleRate = sampleRate; + _freq = freq; + phase = lv_cmake(1.0f, 0.0f); + phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); + generic_block::registerOutput(&out); + } + + void setInputSize(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + _in = in; + generic_block::tempStart(); + } + + void setSampleRate(float sampleRate) { + // No need to restart + _sampleRate = sampleRate; + phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); + } + + float getSampleRate() { + return _sampleRate; + } + + void setFrequency(float freq) { + // No need to restart + _freq = freq; + phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); + } + + float getFrequency() { + return _freq; + } + + int run() { + count = _in->read(); + if (count < 0) { return -1; } + + if (out.aquire() < 0) { return -1; } + + volk_32fc_s32fc_x2_rotator_32fc((lv_32fc_t*)out.data, (lv_32fc_t*)_in->data, phaseDelta, &phase, count); + + _in->flush(); + out.write(count); + return count; + } + + stream out; + + private: + int count; + float _sampleRate; + float _freq; + lv_32fc_t phaseDelta; + lv_32fc_t phase; + stream* _in; + + }; +} \ No newline at end of file diff --git a/core/src/dsp/resampling.h b/core/src/dsp/resampling.h index ad8f5b50..f74e7568 100644 --- a/core/src/dsp/resampling.h +++ b/core/src/dsp/resampling.h @@ -1,958 +1,153 @@ #pragma once -#include -#include -#include -#include -#include -#include +#include +#include + +#include namespace dsp { template - class Interpolator { + class PolyphaseResampler : public generic_block> { public: - Interpolator() { - + PolyphaseResampler() {} + + PolyphaseResampler(stream* in, dsp::filter_window::generic_window* window, float inSampleRate, float outSampleRate) { init(in, window, inSampleRate, outSampleRate); } + + ~PolyphaseResampler() { + generic_block>::stop(); + volk_free(buffer); + volk_free(taps); } - Interpolator(stream* in, float interpolation, int blockSize) : output(blockSize * interpolation * 2) { - _input = in; - _interpolation = interpolation; - _blockSize = blockSize; - } + void init(stream* in, dsp::filter_window::generic_window* window, float inSampleRate, float outSampleRate) { + _in = in; + _window = window; + _inSampleRate = inSampleRate; + _outSampleRate = outSampleRate; - void init(stream* in, float interpolation, int blockSize) { - output.init(blockSize * 2 * interpolation); - _input = in; - _interpolation = interpolation; - _blockSize = blockSize; - } - - void start() { - if (running) { - return; + tapCount = _window->getTapCount(); + taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); + _window->createTaps(taps, tapCount); + for (int i = 0; i < tapCount / 2; i++) { + float tap = taps[tapCount - i - 1]; + taps[tapCount - i - 1] = taps[i]; + taps[i] = tap; } - _workerThread = std::thread(_worker, this); - running = true; + + int _gcd = std::gcd((int)_inSampleRate, (int)_outSampleRate); + _interp = _outSampleRate / _gcd; + _decim = _inSampleRate / _gcd; + + buffer = (T*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(T) * 2, volk_get_alignment()); + bufStart = &buffer[tapCount]; + generic_block>::registerInput(_in); + generic_block>::registerOutput(&out); } - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - _input->clearReadStop(); - output.clearWriteStop(); - running = false; + void setInput(stream* in) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _in = in; + generic_block>::tempStart(); } - void setInterpolation(float interpolation) { - if (running) { - return; - } - _interpolation = interpolation; - output.setMaxLatency(_blockSize * _interpolation * 2); + void setInSampleRate(float inSampleRate) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _inSampleRate = inSampleRate; + int _gcd = std::gcd((int)_inSampleRate, (int)_outSampleRate); + _interp = _outSampleRate / _gcd; + _decim = _inSampleRate / _gcd; + generic_block>::tempStart(); } - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - output.setMaxLatency(_blockSize * _interpolation * 2); + void setOutSampleRate(float outSampleRate) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _outSampleRate = outSampleRate; + int _gcd = std::gcd((int)_inSampleRate, (int)_outSampleRate); + _interp = _outSampleRate / _gcd; + _decim = _inSampleRate / _gcd; + generic_block>::tempStart(); } - void setInput(stream* input) { - if (running) { - return; - } - _input = input; + int getInterpolation() { + return _interp; } - stream output; - - private: - static void _worker(Interpolator* _this) { - T* inBuf = new T[_this->_blockSize]; - T* outBuf = new T[_this->_blockSize * _this->_interpolation]; - int outCount = _this->_blockSize * _this->_interpolation; - int interp = _this->_interpolation; - int count = 0; - while (true) { - if (_this->_input->read(inBuf, _this->_blockSize) < 0) { break; }; - for (int i = 0; i < outCount; i++) { - outBuf[i] = inBuf[(int)((float)i / _this->_interpolation)]; - } - - // for (int i = 0; i < outCount; i += interp) { - // outBuf[i] = inBuf[count]; - // count++; - // } - - count = 0; - if (_this->output.write(outBuf, outCount) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; + int getDecimation() { + return _decim; } - stream* _input; - int _blockSize; - float _interpolation; - std::thread _workerThread; - bool running = false; - }; - - class BlockDecimator { - public: - BlockDecimator() { - - } - - BlockDecimator(stream* in, int skip, int blockSize) : output(blockSize * 2) { - _input = in; - _skip = skip; - _blockSize = blockSize; - } - - void init(stream* in, int skip, int blockSize) { - output.init(blockSize * 2); - _input = in; - _skip = skip; - _blockSize = blockSize; - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - _input->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _blockSize = blockSize; - output.setMaxLatency(blockSize * 2); - } - - void setSkip(int skip) { - if (running) { - return; - } - _skip = skip; - } - - stream output; - - private: - static void _worker(BlockDecimator* _this) { - complex_t* buf = new complex_t[_this->_blockSize]; - bool delay = _this->_skip < 0; - - int readCount = std::min(_this->_blockSize + _this->_skip, _this->_blockSize); - int skip = std::max(_this->_skip, 0); - int delaySize = (-_this->_skip) * sizeof(complex_t); - - complex_t* start = &buf[std::max(-_this->_skip, 0)]; - complex_t* delayStart = &buf[_this->_blockSize + _this->_skip]; - - while (true) { - if (delay) { - memmove(buf, delayStart, delaySize); - } - if (_this->_input->readAndSkip(start, readCount, skip) < 0) { break; }; - if (_this->output.write(buf, _this->_blockSize) < 0) { break; }; - } - delete[] buf; - } - - stream* _input; - int _blockSize; - int _skip; - std::thread _workerThread; - bool running = false; - }; - - // class FIRResampler { - // public: - // FIRResampler() { - - // } - - // void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { - // _input = in; - // _outputSampleRate = outputSampleRate; - // _inputSampleRate = inputSampleRate; - // int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); - // _interp = outputSampleRate / _gcd; - // _decim = inputSampleRate / _gcd; - // _blockSize = blockSize; - // outputBlockSize = (blockSize * _interp) / _decim; - // output.init(outputBlockSize * 2); - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // } - // else { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - // } - // } - - // void start() { - // if (running) { - // return; - // } - // _workerThread = std::thread(_worker, this); - // running = true; - // } - - // void stop() { - // if (!running) { - // return; - // } - // _input->stopReader(); - // output.stopWriter(); - // _workerThread.join(); - // _input->clearReadStop(); - // output.clearWriteStop(); - // running = false; - // } - - // void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { - // stop(); - // _inputSampleRate = inputSampleRate; - // int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); - // _interp = _outputSampleRate / _gcd; - // _decim = inputSampleRate / _gcd; - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // } - // else { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - // } - - // if (blockSize > 0) { - // _blockSize = blockSize; - // } - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - // start(); - // } - - // void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { - // stop(); - // _outputSampleRate = outputSampleRate; - // int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); - // _interp = outputSampleRate / _gcd; - // _decim = _inputSampleRate / _gcd; - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // } - // else { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - // } - - // start(); - // } - - // void setFilterParams(float passBand, float transWidth) { - // stop(); - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // start(); - // } - - // void setBlockSize(int blockSize) { - // stop(); - // _blockSize = blockSize; - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - // start(); - // } - - // void setInput(stream* input) { - // if (running) { - // return; - // } - // _input = input; - // } - - // int getOutputBlockSize() { - // return outputBlockSize; - // } - - // stream output; - - // private: - // static void _worker(FIRResampler* _this) { - // complex_t* inBuf = new complex_t[_this->_blockSize]; - // complex_t* outBuf = new complex_t[_this->outputBlockSize]; - - // int inCount = _this->_blockSize; - // int outCount = _this->outputBlockSize; - - // int interp = _this->_interp; - // int decim = _this->_decim; - // float correction = interp;//(float)sqrt((float)interp); - - // int tapCount = _this->_taps.size(); - // float* taps = new float[tapCount]; - // for (int i = 0; i < tapCount; i++) { - // taps[i] = _this->_taps[i] * correction; - // } - - // complex_t* delayBuf = new complex_t[tapCount]; - - // complex_t* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - // int delaySize = tapCount * sizeof(complex_t); - // complex_t* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - // int moveSize = std::min(inCount, tapCount - inCount) * sizeof(complex_t); - // int inSize = inCount * sizeof(complex_t); - - // int afterInterp = inCount * interp; - // int outIndex = 0; - // while (true) { - // if (_this->_input->read(inBuf, inCount) < 0) { break; }; - // for (int i = 0; outIndex < outCount; i += decim) { - // outBuf[outIndex].i = 0; - // outBuf[outIndex].q = 0; - // for (int j = i % interp; j < tapCount; j += interp) { - // outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j]; - // outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j]; - // } - // outIndex++; - // } - // outIndex = 0; - // if (tapCount > inCount) { - // memmove(delayBuf, delayBufEnd, moveSize); - // memcpy(delayBufEnd, delayStart, inSize); - // } - // else { - // memcpy(delayBuf, delayStart, delaySize); - // } - - // if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; - // } - // delete[] inBuf; - // delete[] outBuf; - // delete[] delayBuf; - // delete[] taps; - // } - - // std::thread _workerThread; - - // stream* _input; - // std::vector _taps; - // int _interp; - // int _decim; - // int outputBlockSize; - // float _outputSampleRate; - // float _inputSampleRate; - // int _blockSize; - // bool running = false; - // }; - - // class FloatFIRResampler { - // public: - // FloatFIRResampler() { - - // } - - // void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { - // _input = in; - // _outputSampleRate = outputSampleRate; - // _inputSampleRate = inputSampleRate; - // int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); - // _interp = outputSampleRate / _gcd; - // _decim = inputSampleRate / _gcd; - // _blockSize = blockSize; - // outputBlockSize = (blockSize * _interp) / _decim; - // output.init(outputBlockSize * 2); - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // } - // else { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - // } - // } - - // void start() { - // if (running) { - // return; - // } - // _workerThread = std::thread(_worker, this); - // running = true; - // } - - // void stop() { - // if (!running) { - // return; - // } - // _input->stopReader(); - // output.stopWriter(); - // _workerThread.join(); - // _input->clearReadStop(); - // output.clearWriteStop(); - // running = false; - // } - - // void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { - // stop(); - // _inputSampleRate = inputSampleRate; - // int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); - // _interp = _outputSampleRate / _gcd; - // _decim = inputSampleRate / _gcd; - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // } - // else { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - // } - - // if (blockSize > 0) { - // _blockSize = blockSize; - // } - // outputBlockSize = (blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - // start(); - // } - - // void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { - // stop(); - // _outputSampleRate = outputSampleRate; - // int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); - // _interp = outputSampleRate / _gcd; - // _decim = _inputSampleRate / _gcd; - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // } - // else { - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - // } - - // start(); - // } - - // void setFilterParams(float passBand, float transWidth) { - // stop(); - // dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - // start(); - // } - - // void setBlockSize(int blockSize) { - // stop(); - // _blockSize = blockSize; - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - // start(); - // } - - // void setInput(stream* input) { - // if (running) { - // return; - // } - // _input = input; - // } - - // int getOutputBlockSize() { - // return outputBlockSize; - // } - - // stream output; - - // private: - // static void _worker(FloatFIRResampler* _this) { - // float* inBuf = new float[_this->_blockSize]; - // float* outBuf = new float[_this->outputBlockSize]; - - // int inCount = _this->_blockSize; - // int outCount = _this->outputBlockSize; - - // int interp = _this->_interp; - // int decim = _this->_decim; - // float correction = interp;//(float)sqrt((float)interp); - - // int tapCount = _this->_taps.size(); - // float* taps = new float[tapCount]; - // for (int i = 0; i < tapCount; i++) { - // taps[i] = _this->_taps[i] * correction; - // } - - // float* delayBuf = new float[tapCount]; - - // float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - // int delaySize = tapCount * sizeof(float); - // float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - // int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); - // int inSize = inCount * sizeof(float); - - // int afterInterp = inCount * interp; - // int outIndex = 0; - // while (true) { - // if (_this->_input->read(inBuf, inCount) < 0) { break; }; - - - // for (int i = 0; outIndex < outCount; i += decim) { - // outBuf[outIndex] = 0; - // for (int j = (i % interp); j < tapCount; j += interp) { - // outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j]; - // } - // outIndex++; - // } - - - - // outIndex = 0; - // if (tapCount > inCount) { - // memmove(delayBuf, delayBufEnd, moveSize); - // memcpy(delayBufEnd, delayStart, inSize); - // } - // else { - // memcpy(delayBuf, delayStart, delaySize); - // } - - // if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; - // } - // delete[] inBuf; - // delete[] outBuf; - // delete[] delayBuf; - // } - - // std::thread _workerThread; - - // stream* _input; - // std::vector _taps; - // int _interp; - // int _decim; - // int outputBlockSize; - // float _outputSampleRate; - // float _inputSampleRate; - // int _blockSize; - // bool running = false; - // }; - - - - - template - class FIRResampler { - public: - FIRResampler() { - - } - - void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { - _input = in; - _outputSampleRate = outputSampleRate; - _inputSampleRate = inputSampleRate; - int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); - _interp = outputSampleRate / _gcd; - _decim = inputSampleRate / _gcd; - _blockSize = blockSize; - outputBlockSize = (blockSize * _interp) / _decim; - output.init(outputBlockSize * 2); - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - } - else { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); + void updateWindow(dsp::filter_window::generic_window* window) { + _window = window; + volk_free(taps); + tapCount = window->getTapCount(); + taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); + window->createTaps(taps, tapCount); + for (int i = 0; i < tapCount / 2; i++) { + float tap = taps[tapCount - i - 1]; + taps[tapCount - i - 1] = taps[i]; + taps[i] = tap; } } - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; + int calcOutSize(int in) { + return (in * _interp) / _decim; } - void stop() { - if (!running) { - return; - } - _input->stopReader(); - output.stopWriter(); - _workerThread.join(); - _input->clearReadStop(); - output.clearWriteStop(); - running = false; - } + int run() { + count = _in->read(); + if (count < 0) { return -1; } - void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { - stop(); - _inputSampleRate = inputSampleRate; - int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); - _interp = _outputSampleRate / _gcd; - _decim = inputSampleRate / _gcd; + int outCount = calcOutSize(count); - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - } - else { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - } + memcpy(bufStart, _in->data, count * sizeof(T)); + _in->flush(); - if (blockSize > 0) { - _blockSize = blockSize; - } - outputBlockSize = (blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - start(); - } - - void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { - stop(); - _outputSampleRate = outputSampleRate; - int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); - _interp = outputSampleRate / _gcd; - _decim = _inputSampleRate / _gcd; - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - - float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - if (passBand > 0.0f && transWidth > 0.0f) { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - } - else { - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, cutoff, cutoff); - } - - start(); - } - - void setFilterParams(float passBand, float transWidth) { - stop(); - dsp::BlackmanWindow(_taps, _inputSampleRate * _interp, passBand, transWidth); - start(); - } - - void setBlockSize(int blockSize) { - stop(); - _blockSize = blockSize; - outputBlockSize = (_blockSize * _interp) / _decim; - output.setMaxLatency(outputBlockSize * 2); - start(); - } - - void setInput(stream* input) { - if (running) { - return; - } - _input = input; - } - - int getOutputBlockSize() { - return outputBlockSize; - } - - stream output; - - private: - - // Float worker - static void _worker(FIRResampler* _this) { - T* inBuf = new T[_this->_blockSize]; - T* outBuf = new T[_this->outputBlockSize]; - - int inCount = _this->_blockSize; - int outCount = _this->outputBlockSize; - - int interp = _this->_interp; - int decim = _this->_decim; - float correction = interp; - - int tapCount = _this->_taps.size(); - float* taps = new float[tapCount]; - for (int i = 0; i < tapCount; i++) { - taps[i] = _this->_taps[i] * correction; - } - - T* delayBuf = new T[tapCount]; - - T* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - int delaySize = tapCount * sizeof(T); - T* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - int moveSize = std::min(inCount, tapCount - inCount) * sizeof(T); - int inSize = inCount * sizeof(T); - - int afterInterp = inCount * interp; + // Write to output + if (out.aquire() < 0) { return -1; } int outIndex = 0; - while (true) { - if (_this->_input->read(inBuf, inCount) < 0) { break; }; - - if constexpr (std::is_same_v) { - for (int i = 0; outIndex < outCount; i += decim) { - outBuf[outIndex] = 0; - for (int j = (i % interp); j < tapCount; j += interp) { - outBuf[outIndex] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp) * taps[j]; - } - outIndex++; + if constexpr (std::is_same_v) { + for (int i = 0; outIndex < outCount; i += _decim) { + out.data[outIndex] = 0; + for (int j = i % _interp; j < tapCount; j += _interp) { + out.data[outIndex] += buffer[((i - j) / _interp) + tapCount] * taps[j]; } + outIndex++; } - if constexpr (std::is_same_v) { - for (int i = 0; outIndex < outCount; i += decim) { - outBuf[outIndex].i = 0; - outBuf[outIndex].q = 0; - for (int j = i % interp; j < tapCount; j += interp) { - outBuf[outIndex].i += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).i * taps[j]; - outBuf[outIndex].q += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, (i - j) / interp).q * taps[j]; - } - outIndex++; - } - } - - outIndex = 0; - if (tapCount > inCount) { - memmove(delayBuf, delayBufEnd, moveSize); - memcpy(delayBufEnd, delayStart, inSize); - } - else { - memcpy(delayBuf, delayStart, delaySize); - } - - if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; } - delete[] inBuf; - delete[] outBuf; - delete[] delayBuf; + if constexpr (std::is_same_v) { + for (int i = 0; outIndex < outCount; i += _decim) { + out.data[outIndex].i = 0; + out.data[outIndex].q = 0; + for (int j = i % _interp; j < tapCount; j += _interp) { + out.data[outIndex].i += buffer[((i - j) / _interp) + tapCount].i * taps[j]; + out.data[outIndex].q += buffer[((i - j) / _interp) + tapCount].q * taps[j]; + } + outIndex++; + } + } + out.write(count); + + memmove(buffer, &buffer[count], tapCount * sizeof(T)); + + return count; } - std::thread _workerThread; - stream* _input; - std::vector _taps; - int _interp; - int _decim; - int outputBlockSize; - float _outputSampleRate; - float _inputSampleRate; - int _blockSize; - bool running = false; + stream out; + + private: + int count; + stream* _in; + + dsp::filter_window::generic_window* _window; + + T* bufStart; + T* buffer; + int tapCount; + int _interp, _decim; + float _inSampleRate, _outSampleRate; + float* taps; + }; - - // class FloatPolyphaseFIRResampler { - // public: - // FloatPolyphaseFIRResampler() { - - // } - - // void init(stream* in, float inputSampleRate, float outputSampleRate, int blockSize, float passBand = -1.0f, float transWidth = -1.0f) { - // _input = in; - // _outputSampleRate = outputSampleRate; - // _inputSampleRate = inputSampleRate; - // int _gcd = std::gcd((int)inputSampleRate, (int)outputSampleRate); - // _interp = outputSampleRate / _gcd; - // _decim = inputSampleRate / _gcd; - // _blockSize = blockSize; - // outputBlockSize = (blockSize * _interp) / _decim; - // output.init(outputBlockSize * 2); - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - // } - // else { - // dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); - // } - // } - - // void start() { - // if (running) { - // return; - // } - // _workerThread = std::thread(_worker, this); - // running = true; - // } - - // void stop() { - // if (!running) { - // return; - // } - // _input->stopReader(); - // output.stopWriter(); - // _workerThread.join(); - // _input->clearReadStop(); - // output.clearWriteStop(); - // running = false; - // } - - // void setInputSampleRate(float inputSampleRate, int blockSize = -1, float passBand = -1.0f, float transWidth = -1.0f) { - // stop(); - // _inputSampleRate = inputSampleRate; - // int _gcd = std::gcd((int)inputSampleRate, (int)_outputSampleRate); - // _interp = _outputSampleRate / _gcd; - // _decim = inputSampleRate / _gcd; - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - // } - // else { - // dsp::BlackmanWindow(_taps,_outputSampleRate, cutoff, cutoff, _interp - 1); - // } - - // if (blockSize > 0) { - // _blockSize = blockSize; - // } - // outputBlockSize = (blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - // start(); - // } - - // void setOutputSampleRate(float outputSampleRate, float passBand = -1.0f, float transWidth = -1.0f) { - // stop(); - // _outputSampleRate = outputSampleRate; - // int _gcd = std::gcd((int)_inputSampleRate, (int)outputSampleRate); - // _interp = outputSampleRate / _gcd; - // _decim = _inputSampleRate / _gcd; - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - - // float cutoff = std::min(_outputSampleRate / 2.0f, _inputSampleRate / 2.0f); - // if (passBand > 0.0f && transWidth > 0.0f) { - // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - // } - // else { - // dsp::BlackmanWindow(_taps, _outputSampleRate, cutoff, cutoff, _interp - 1); - // } - - // start(); - // } - - // void setFilterParams(float passBand, float transWidth) { - // stop(); - // dsp::BlackmanWindow(_taps, _outputSampleRate, passBand, transWidth, _interp - 1); - // start(); - // } - - // void setBlockSize(int blockSize) { - // stop(); - // _blockSize = blockSize; - // outputBlockSize = (_blockSize * _interp) / _decim; - // output.setMaxLatency(outputBlockSize * 2); - // start(); - // } - - // void setInput(stream* input) { - // if (running) { - // return; - // } - // _input = input; - // } - - // int getOutputBlockSize() { - // return outputBlockSize; - // } - - // stream output; - - // private: - // static void _worker(FloatPolyphaseFIRResampler* _this) { - // float* inBuf = new float[_this->_blockSize]; - // float* outBuf = new float[_this->outputBlockSize]; - - // int inCount = _this->_blockSize; - // int outCount = _this->outputBlockSize; - - // int interp = _this->_interp; - // int decim = _this->_decim; - // float correction = interp;//(float)sqrt((float)interp); - - // int tapCount = _this->_taps.size(); - // float* taps = new float[tapCount]; - // for (int i = 0; i < tapCount; i++) { - // taps[i] = _this->_taps[i] * correction; - // } - - // float* delayBuf = new float[tapCount]; - - // float* delayStart = &inBuf[std::max(inCount - tapCount, 0)]; - // int delaySize = tapCount * sizeof(float); - // float* delayBufEnd = &delayBuf[std::max(tapCount - inCount, 0)]; - // int moveSize = std::min(inCount, tapCount - inCount) * sizeof(float); - // int inSize = inCount * sizeof(float); - - // int afterInterp = inCount * interp; - // int outIndex = 0; - - // tapCount -= interp - 1; - - // while (true) { - // if (_this->_input->read(inBuf, inCount) < 0) { break; }; - - - // for (int i = 0; i < outCount; i++) { - // outBuf[i] = 0; - // int filterId = (i * decim) % interp; - // int inputId = (i * decim) / interp; - // for (int j = 0; j < tapCount; j++) { - // outBuf[i] += GET_FROM_RIGHT_BUF(inBuf, delayBuf, tapCount, inputId - j) * taps[j + filterId]; - // } - // } - - - - - - - // if (tapCount > inCount) { - // memmove(delayBuf, delayBufEnd, moveSize); - // memcpy(delayBufEnd, delayStart, inSize); - // } - // else { - // memcpy(delayBuf, delayStart, delaySize); - // } - - // if (_this->output.write(outBuf, _this->outputBlockSize) < 0) { break; }; - // } - // delete[] inBuf; - // delete[] outBuf; - // delete[] delayBuf; - // } - - // std::thread _workerThread; - - // stream* _input; - // std::vector _taps; - // int _interp; - // int _decim; - // int outputBlockSize; - // float _outputSampleRate; - // float _inputSampleRate; - // int _blockSize; - // bool running = false; - // }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/routing.h b/core/src/dsp/routing.h index 5c4a955c..d00fb6ba 100644 --- a/core/src/dsp/routing.h +++ b/core/src/dsp/routing.h @@ -1,310 +1,102 @@ #pragma once -#include -#include -#include -#include -#include +#include +#include namespace dsp { - class Splitter { - public: - Splitter() { - - } - - Splitter(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - output_a.init(bufferSize); - output_b.init(bufferSize); - } - - void init(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - output_a.init(bufferSize); - output_b.init(bufferSize); - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output_a.stopWriter(); - output_b.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output_a.clearWriteStop(); - output_b.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - output_a.setMaxLatency(blockSize * 2); - output_b.setMaxLatency(blockSize * 2); - } - - stream output_a; - stream output_b; - - private: - static void _worker(Splitter* _this) { - complex_t* buf = new complex_t[_this->_bufferSize]; - while (true) { - if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; - if (_this->output_a.write(buf, _this->_bufferSize) < 0) { break; }; - if (_this->output_b.write(buf, _this->_bufferSize) < 0) { break; }; - } - delete[] buf; - } - - stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; - }; - template - class DynamicSplitter { + class Splitter : public generic_block> { public: - DynamicSplitter() { - + Splitter() {} + + Splitter(stream* in) { init(in); } + + ~Splitter() { generic_block::stop(); } + + void init(stream* in) { + _in = in; + generic_block::registerInput(_in); } - DynamicSplitter(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; + void setInput(stream* in) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + generic_block::unregisterInput(_in); + _in = in; + generic_block::registerInput(_in); + generic_block::tempStart(); } - void init(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; + void bindStream(stream* stream) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + out.push_back(stream); + generic_block::registerOutput(stream); + generic_block::tempStart(); } - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - int outputCount = outputs.size(); - for (int i = 0; i < outputCount; i++) { - outputs[i]->stopWriter(); - } - _workerThread.join(); - _in->clearReadStop(); - for (int i = 0; i < outputCount; i++) { - outputs[i]->clearWriteStop(); - } - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - int outputCount = outputs.size(); - for (int i = 0; i < outputCount; i++) { - outputs[i]->setMaxLatency(blockSize * 2); - } - } - - void bind(stream* stream) { - if (running) { - return; - } - outputs.push_back(stream); - } - - void unbind(stream* stream) { - if (running) { - return; - } - int outputCount = outputs.size(); - for (int i = 0; i < outputCount; i++) { - if (outputs[i] == stream) { - outputs.erase(outputs.begin() + i); - return; - } - } + void unbindStream(stream* stream) { + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); + generic_block::unregisterOutput(stream); + out.erase(std::remove(out.begin(), out.end(), stream), out.end()); + generic_block::tempStart(); } private: - static void _worker(DynamicSplitter* _this) { - T* buf = new T[_this->_bufferSize]; - int outputCount = _this->outputs.size(); - while (true) { - if (_this->_in->read(buf, _this->_bufferSize) < 0) { break; }; - for (int i = 0; i < outputCount; i++) { - if (_this->outputs[i]->write(buf, _this->_bufferSize) < 0) { break; }; - } + int run() { + // TODO: If too slow, buffering might be necessary + int count = _in->read(); + if (count < 0) { return -1; } + for (const auto& stream : out) { + if (stream->aquire() < 0) { return -1; } + memcpy(stream->data, _in->data, count * sizeof(T)); + stream->write(count); } - delete[] buf; + _in->flush(); + return count; } stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; - std::vector*> outputs; + std::vector*> out; + }; - - class MonoToStereo { + template + class Reshaper : public generic_block> { public: - MonoToStereo() { - + Reshaper() {} + + Reshaper(stream* in) { init(in); } + + ~Reshaper() { generic_block>::stop(); } + + void init(stream* in) { + _in = in; + buffer = (T*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(T), volk_get_alignment()); + generic_block>::registerInput(_in); + generic_block>::registerOutput(&out); } - MonoToStereo(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - output.init(bufferSize * 2); + void setInput(stream* in) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _in = in; + generic_block>::tempStart(); } - void init(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - output.init(bufferSize * 2); + int run() { + int count = _in->read(); + _in->flush(); + return count; } - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - output.setMaxLatency(blockSize * 2); - } - - stream output; + stream out; private: - static void _worker(MonoToStereo* _this) { - float* inBuf = new float[_this->_bufferSize]; - StereoFloat_t* outBuf = new StereoFloat_t[_this->_bufferSize]; - while (true) { - if (_this->_in->read(inBuf, _this->_bufferSize) < 0) { break; }; - for (int i = 0; i < _this->_bufferSize; i++) { - outBuf[i].l = inBuf[i]; - outBuf[i].r = inBuf[i]; - } - if (_this->output.write(outBuf, _this->_bufferSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } + stream* _in; + T* buffer; + int _outBlockSize; + int readCount; - stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; }; - - class StereoToMono { - public: - StereoToMono() { - - } - - StereoToMono(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - } - - void init(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - } - - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - _in->stopReader(); - output.stopWriter(); - _workerThread.join(); - _in->clearReadStop(); - output.clearWriteStop(); - running = false; - } - - void setBlockSize(int blockSize) { - if (running) { - return; - } - _bufferSize = blockSize; - output.setMaxLatency(blockSize * 2); - } - - stream output; - - private: - static void _worker(StereoToMono* _this) { - StereoFloat_t* inBuf = new StereoFloat_t[_this->_bufferSize]; - float* outBuf = new float[_this->_bufferSize]; - while (true) { - if (_this->_in->read(inBuf, _this->_bufferSize) < 0) { break; }; - for (int i = 0; i < _this->_bufferSize; i++) { - outBuf[i] = (inBuf[i].l + inBuf[i].r) / 2.0f; - } - if (_this->output.write(outBuf, _this->_bufferSize) < 0) { break; }; - } - delete[] inBuf; - delete[] outBuf; - } - - stream* _in; - int _bufferSize; - std::thread _workerThread; - bool running = false; - }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/sink.h b/core/src/dsp/sink.h index 55d8cd40..ce50bf0b 100644 --- a/core/src/dsp/sink.h +++ b/core/src/dsp/sink.h @@ -1,140 +1,99 @@ #pragma once -#include -#include -#include -#include -#include - +#include +#include namespace dsp { - class HandlerSink { + template + class HandlerSink : public generic_block> { public: - HandlerSink() { - - } + HandlerSink() {} - HandlerSink(stream* input, complex_t* buffer, int bufferSize, void handler(complex_t*)) { - _in = input; - _bufferSize = bufferSize; - _buffer = buffer; + HandlerSink(stream* in, void (*handler)(T* data, int count, void* ctx), void* ctx) { init(in, handler, ctx); } + + ~HandlerSink() { generic_block>::stop(); } + + void init(stream* in, void (*handler)(T* data, int count, void* ctx), void* ctx) { + _in = in; _handler = handler; + _ctx = ctx; + generic_block>::registerInput(_in); } - void init(stream* input, complex_t* buffer, int bufferSize, void handler(complex_t*)) { - _in = input; - _bufferSize = bufferSize; - _buffer = buffer; + void setInput(stream* in) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _in = in; + generic_block>::tempStart(); + } + + void setHandler(void (*handler)(T* data, int count, void* ctx), void* ctx) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); _handler = handler; + _ctx = ctx; + generic_block>::tempStart(); } - void start() { - if (running) { - return; - } - _workerThread = std::thread(_worker, this); - running = true; + int run() { + count = _in->read(); + if (count < 0) { return -1; } + _handler(_in->data, count, _ctx); + _in->flush(); + return count; } - void stop() { - if (!running) { - return; - } - _in->stopReader(); - _workerThread.join(); - _in->clearReadStop(); - running = false; - } - - bool bypass; - private: - static void _worker(HandlerSink* _this) { - while (true) { - if (_this->_in->read(_this->_buffer, _this->_bufferSize) < 0) { break; }; - _this->_handler(_this->_buffer); - } - } + int count; + stream* _in; + void (*_handler)(T* data, int count, void* ctx); + void* _ctx; - stream* _in; - int _bufferSize; - complex_t* _buffer; - std::thread _workerThread; - void (*_handler)(complex_t*); - bool running = false; }; template - class NullSink { + class RingBufferSink : public generic_block> { public: - NullSink() { - + RingBufferSink() {} + + RingBufferSink(stream* in) { init(in); } + + ~RingBufferSink() { generic_block>::stop(); } + + void init(stream* in) { + _in = in; + generic_block>::registerInput(_in); } - NullSink(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; + void setInput(stream* in) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _in = in; + generic_block>::tempStart(); } - void init(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; + int run() { + count = _in->read(); + if (count < 0) { return -1; } + if (data.write(_in->data, count) < 0) { return -1; } + _in->flush(); + return count; } - void start() { - _workerThread = std::thread(_worker, this); - } - - bool bypass; + RingBuffer data; private: - static void _worker(NullSink* _this) { - T* buf = new T[_this->_bufferSize]; - while (true) { - //spdlog::info("NS: Reading..."); - _this->_in->read(buf, _this->_bufferSize); + void doStop() { + _in->stopReader(); + data.stopWriter(); + if (generic_block>::workerThread.joinable()) { + generic_block>::workerThread.join(); } + _in->clearReadStop(); + data.clearWriteStop(); } + int count; stream* _in; - int _bufferSize; - std::thread _workerThread; + }; - - class FloatNullSink { - public: - FloatNullSink() { - - } - - FloatNullSink(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - } - - void init(stream* input, int bufferSize) { - _in = input; - _bufferSize = bufferSize; - } - - void start() { - spdlog::info("NS: Starting..."); - _workerThread = std::thread(_worker, this); - } - - bool bypass; - - private: - static void _worker(FloatNullSink* _this) { - spdlog::info("NS: Started!"); - float* buf = new float[_this->_bufferSize]; - while (true) { - spdlog::info("NS: Reading..."); - _this->_in->read(buf, _this->_bufferSize); - } - } - - stream* _in; - int _bufferSize; - std::thread _workerThread; - }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/source.h b/core/src/dsp/source.h index 15083728..75dd38a1 100644 --- a/core/src/dsp/source.h +++ b/core/src/dsp/source.h @@ -1,92 +1,75 @@ #pragma once -#include -#include -#include -#include +#include namespace dsp { - class SineSource { + class SineSource : public generic_block { public: - SineSource() { - - } + SineSource() {} - SineSource(float frequency, long sampleRate, int blockSize) : output(blockSize * 2) { + SineSource(int blockSize, float sampleRate, float freq) { init(blockSize, sampleRate, freq); } + + ~SineSource() { generic_block::stop(); } + + void init(int blockSize, float sampleRate, float freq) { _blockSize = blockSize; _sampleRate = sampleRate; - _frequency = frequency; - _phasorSpeed = (2 * 3.1415926535 * frequency) / sampleRate; - _phase = 0; - } - - void init(float frequency, long sampleRate, int blockSize) { - output.init(blockSize * 2); - _sampleRate = sampleRate; - _blockSize = blockSize; - _frequency = frequency; - _phasorSpeed = (2 * 3.1415926535 * frequency) / sampleRate; - _phase = 0; - } - - void start() { - if (running) { - return; + _freq = freq; + zeroPhase = (lv_32fc_t*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(lv_32fc_t), volk_get_alignment()); + for (int i = 0; i < STREAM_BUFFER_SIZE; i++) { + zeroPhase[i] = lv_cmake(1.0f, 0.0f); } - _workerThread = std::thread(_worker, this); - running = true; - } - - void stop() { - if (!running) { - return; - } - output.stopWriter(); - _workerThread.join(); - output.clearWriteStop(); - running = false; - } - - void setFrequency(float frequency) { - _frequency = frequency; - _phasorSpeed = (2 * 3.1415926535 * frequency) / _sampleRate; + phase = lv_cmake(1.0f, 0.0f); + phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); + generic_block::registerOutput(&out); } void setBlockSize(int blockSize) { - if (running) { - return; - } + std::lock_guard lck(generic_block::ctrlMtx); + generic_block::tempStop(); _blockSize = blockSize; - output.setMaxLatency(blockSize * 2); + generic_block::tempStart(); + } + + int getBlockSize() { + return _blockSize; } void setSampleRate(float sampleRate) { + // No need to restart _sampleRate = sampleRate; - _phasorSpeed = (2 * 3.1415926535 * _frequency) / sampleRate; + phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); } - stream output; + float getSampleRate() { + return _sampleRate; + } + + void setFrequency(float freq) { + // No need to restart + _freq = freq; + phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); + } + + float getFrequency() { + return _freq; + } + + int run() { + if (out.aquire() < 0) { return -1; } + volk_32fc_s32fc_x2_rotator_32fc((lv_32fc_t*)out.data, zeroPhase, phaseDelta, &phase, _blockSize); + out.write(_blockSize); + return _blockSize; + } + + stream out; private: - static void _worker(SineSource* _this) { - complex_t* outBuf = new complex_t[_this->_blockSize]; - while (true) { - for (int i = 0; i < _this->_blockSize; i++) { - _this->_phase += _this->_phasorSpeed; - outBuf[i].i = sin(_this->_phase); - outBuf[i].q = cos(_this->_phase); - _this->_phase = fmodf(_this->_phase, 2.0f * 3.1415926535); // TODO: Get a more efficient generator - } - if (_this->output.write(outBuf, _this->_blockSize) < 0) { break; }; - } - delete[] outBuf; - } - int _blockSize; - float _phasorSpeed; - float _phase; - long _sampleRate; - float _frequency; - std::thread _workerThread; - bool running = false; + float _sampleRate; + float _freq; + lv_32fc_t phaseDelta; + lv_32fc_t phase; + lv_32fc_t* zeroPhase; + }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/stream.h b/core/src/dsp/stream.h index 93a546f6..4dc3b36d 100644 --- a/core/src/dsp/stream.h +++ b/core/src/dsp/stream.h @@ -1,228 +1,100 @@ #pragma once +#include #include -#include -#include -#include +#include -#define STREAM_BUF_SZ 1000000 +// 1MB buffer +#define STREAM_BUFFER_SIZE 1000000 namespace dsp { + class untyped_steam { + public: + virtual int aquire() { return -1; } + virtual void write(int size) {} + virtual int read() { return -1; } + virtual void flush() {} + virtual void stopReader() {} + virtual void clearReadStop() {} + virtual void stopWriter() {} + virtual void clearWriteStop() {} + }; + template - class stream { + class stream : public untyped_steam { public: stream() { - + data = (T*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(T), volk_get_alignment()); } - stream(int maxLatency) { - size = STREAM_BUF_SZ; - _buffer = new T[size]; - _stopReader = false; - _stopWriter = false; - this->maxLatency = maxLatency; - writec = 0; - readc = 0; - readable = 0; - writable = size; - memset(_buffer, 0, size * sizeof(T)); - } - - void init(int maxLatency) { - size = STREAM_BUF_SZ; - _buffer = new T[size]; - _stopReader = false; - _stopWriter = false; - this->maxLatency = maxLatency; - writec = 0; - readc = 0; - readable = 0; - writable = size; - memset(_buffer, 0, size * sizeof(T)); - } - - int read(T* data, int len) { - int dataRead = 0; - int toRead = 0; - while (dataRead < len) { - toRead = std::min(waitUntilReadable(), len - dataRead); - if (toRead < 0) { return -1; }; - - if ((toRead + readc) > size) { - memcpy(&data[dataRead], &_buffer[readc], (size - readc) * sizeof(T)); - memcpy(&data[dataRead + (size - readc)], &_buffer[0], (toRead - (size - readc)) * sizeof(T)); - } - else { - memcpy(&data[dataRead], &_buffer[readc], toRead * sizeof(T)); - } - - dataRead += toRead; - - _readable_mtx.lock(); - readable -= toRead; - _readable_mtx.unlock(); - _writable_mtx.lock(); - writable += toRead; - _writable_mtx.unlock(); - readc = (readc + toRead) % size; - canWriteVar.notify_one(); + int aquire() { + waitReady(); + if (writerStop) { + return -1; } - return len; + return 0; } - int readAndSkip(T* data, int len, int skip) { - int dataRead = 0; - int toRead = 0; - while (dataRead < len) { - toRead = std::min(waitUntilReadable(), len - dataRead); - if (toRead < 0) { return -1; }; + void write(int size) { + std::lock_guard lck(sigMtx); + contentSize = size; + dataReady = true; + cv.notify_all(); + } - if ((toRead + readc) > size) { - memcpy(&data[dataRead], &_buffer[readc], (size - readc) * sizeof(T)); - memcpy(&data[dataRead + (size - readc)], &_buffer[0], (toRead - (size - readc)) * sizeof(T)); - } - else { - memcpy(&data[dataRead], &_buffer[readc], toRead * sizeof(T)); - } - - dataRead += toRead; - - _readable_mtx.lock(); - readable -= toRead; - _readable_mtx.unlock(); - _writable_mtx.lock(); - writable += toRead; - _writable_mtx.unlock(); - readc = (readc + toRead) % size; - canWriteVar.notify_one(); + int read() { + waitData(); + if (readerStop) { + return -1; } - dataRead = 0; - while (dataRead < skip) { - toRead = std::min(waitUntilReadable(), skip - dataRead); - if (toRead < 0) { return -1; }; - - dataRead += toRead; - - _readable_mtx.lock(); - readable -= toRead; - _readable_mtx.unlock(); - _writable_mtx.lock(); - writable += toRead; - _writable_mtx.unlock(); - readc = (readc + toRead) % size; - canWriteVar.notify_one(); - } - return len; + return contentSize; } - int waitUntilReadable() { - if (_stopReader) { return -1; } - int _r = getReadable(); - if (_r != 0) { return _r; } - std::unique_lock lck(_readable_mtx); - canReadVar.wait(lck, [=](){ return ((this->getReadable(false) > 0) || this->getReadStop()); }); - if (_stopReader) { return -1; } - return getReadable(false); - } - - int getReadable(bool lock = true) { - if (lock) { _readable_mtx.lock(); }; - int _r = readable; - if (lock) { _readable_mtx.unlock(); }; - return _r; - } - - int write(T* data, int len) { - int dataWritten = 0; - int toWrite = 0; - while (dataWritten < len) { - toWrite = std::min(waitUntilwritable(), len - dataWritten); - if (toWrite < 0) { return -1; }; - - if ((toWrite + writec) > size) { - memcpy(&_buffer[writec], &data[dataWritten], (size - writec) * sizeof(T)); - memcpy(&_buffer[0], &data[dataWritten + (size - writec)], (toWrite - (size - writec)) * sizeof(T)); - } - else { - memcpy(&_buffer[writec], &data[dataWritten], toWrite * sizeof(T)); - } - - dataWritten += toWrite; - - _readable_mtx.lock(); - readable += toWrite; - _readable_mtx.unlock(); - _writable_mtx.lock(); - writable -= toWrite; - _writable_mtx.unlock(); - writec = (writec + toWrite) % size; - - canReadVar.notify_one(); - } - return len; - } - - int waitUntilwritable() { - if (_stopWriter) { return -1; } - int _w = getWritable(); - if (_w != 0) { return _w; } - std::unique_lock lck(_writable_mtx); - canWriteVar.wait(lck, [=](){ return ((this->getWritable(false) > 0) || this->getWriteStop()); }); - if (_stopWriter) { return -1; } - return getWritable(false); - } - - int getWritable(bool lock = true) { - if (lock) { _writable_mtx.lock(); }; - int _w = writable; - if (lock) { _writable_mtx.unlock(); _readable_mtx.lock(); }; - int _r = readable; - if (lock) { _readable_mtx.unlock(); }; - return std::max(std::min(_w, maxLatency - _r), 0); + void flush() { + std::lock_guard lck(sigMtx); + dataReady = false; + cv.notify_all(); } void stopReader() { - _stopReader = true; - canReadVar.notify_one(); - } - - void stopWriter() { - _stopWriter = true; - canWriteVar.notify_one(); - } - - bool getReadStop() { - return _stopReader; - } - - bool getWriteStop() { - return _stopWriter; + std::lock_guard lck(sigMtx); + readerStop = true; + cv.notify_all(); } void clearReadStop() { - _stopReader = false; + readerStop = false; + } + + void stopWriter() { + std::lock_guard lck(sigMtx); + writerStop = true; + cv.notify_all(); } void clearWriteStop() { - _stopWriter = false; + writerStop = false; } - void setMaxLatency(int maxLatency) { - this->maxLatency = maxLatency; - } + T* data; private: - T* _buffer; - int size; - int readc; - int writec; - int readable; - int writable; - int maxLatency; - bool _stopReader; - bool _stopWriter; - std::mutex _readable_mtx; - std::mutex _writable_mtx; - std::condition_variable canReadVar; - std::condition_variable canWriteVar; + void waitReady() { + std::unique_lock lck(sigMtx); + cv.wait(lck, [this]{ return !dataReady || writerStop; }); + } + + void waitData() { + std::unique_lock lck(sigMtx); + cv.wait(lck, [this]{ return dataReady || readerStop; }); + } + + std::mutex sigMtx; + std::condition_variable cv; + bool dataReady = false; + + bool readerStop = false; + bool writerStop = false; + + int contentSize = 0; }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/types.h b/core/src/dsp/types.h index 5de461b9..a1730df0 100644 --- a/core/src/dsp/types.h +++ b/core/src/dsp/types.h @@ -4,52 +4,10 @@ namespace dsp { struct complex_t { float q; float i; - - complex_t operator+(complex_t& c) { - complex_t res; - res.i = c.i + i; - res.q = c.q + q; - return res; - } - - complex_t operator-(complex_t& c) { - complex_t res; - res.i = i - c.i; - res.q = q - c.q; - return res; - } - - complex_t operator*(float& f) { - complex_t res; - res.i = i * f; - res.q = q * f; - return res; - } }; - struct StereoFloat_t { + struct stereo_t { float l; float r; - - StereoFloat_t operator+(StereoFloat_t& s) { - StereoFloat_t res; - res.l = s.l + l; - res.r = s.r + r; - return res; - } - - StereoFloat_t operator-(StereoFloat_t& s) { - StereoFloat_t res; - res.l = l - s.l; - res.r = r - s.r; - return res; - } - - StereoFloat_t operator*(float& f) { - StereoFloat_t res; - res.l = l * f; - res.r = r * f; - return res; - } }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/vfo.h b/core/src/dsp/vfo.h index 312c6123..78b596df 100644 --- a/core/src/dsp/vfo.h +++ b/core/src/dsp/vfo.h @@ -1,103 +1,112 @@ #pragma once -#include -#include -#include -#include -#include #include +#include +#include +#include +#include namespace dsp { class VFO { public: - VFO() { + VFO() {} - } + ~VFO() { stop(); } - void init(stream* in, float inputSampleRate, float outputSampleRate, float bandWidth, float offset, int blockSize) { - _input = in; - _outputSampleRate = outputSampleRate; - _inputSampleRate = inputSampleRate; + VFO(stream* in, float offset, float inSampleRate, float outSampleRate, float bandWidth) { + init(in, offset, inSampleRate, outSampleRate, bandWidth); + }; + + void init(stream* in, float offset, float inSampleRate, float outSampleRate, float bandWidth) { + _in = in; + _offset = offset; + _inSampleRate = inSampleRate; + _outSampleRate = outSampleRate; _bandWidth = bandWidth; - _blockSize = blockSize; - output = &resamp.output; - lo.init(offset, inputSampleRate, blockSize); - mixer.init(in, &lo.output, blockSize); - //resamp.init(&mixer.output, inputSampleRate, outputSampleRate, blockSize, _bandWidth * 0.8f, _bandWidth); - resamp.init(mixer.out[0], inputSampleRate, outputSampleRate, blockSize, _bandWidth * 0.8f, _bandWidth); + float realCutoff = std::min(_bandWidth, std::min(_inSampleRate, _outSampleRate)) / 2.0f; + + xlator.init(_in, _inSampleRate, -_offset); + win.init(realCutoff, realCutoff, inSampleRate); + resamp.init(&xlator.out, &win, _inSampleRate, _outSampleRate); + + win.setSampleRate(_inSampleRate * resamp.getInterpolation()); + resamp.updateWindow(&win); + + out = &resamp.out; } void start() { - lo.start(); - mixer.start(); + if (running) { return; } + xlator.start(); resamp.start(); } - void stop(bool resampler = true) { - lo.stop(); - mixer.stop(); - if (resampler) { resamp.stop(); }; + void stop() { + if (!running) { return; } + xlator.stop(); + resamp.stop(); } - void setInputSampleRate(float inputSampleRate, int blockSize = -1) { - lo.stop(); - lo.setSampleRate(inputSampleRate); - - _inputSampleRate = inputSampleRate; - - if (blockSize > 0) { - _blockSize = blockSize; - mixer.stop(); - lo.setBlockSize(_blockSize); - mixer.setBlockSize(_blockSize); - mixer.start(); - } - resamp.setInputSampleRate(inputSampleRate, _blockSize, _bandWidth * 0.8f, _bandWidth); - lo.start(); + void setInSampleRate(float inSampleRate) { + _inSampleRate = inSampleRate; + if (running) { xlator.stop(); resamp.stop(); } + xlator.setSampleRate(_inSampleRate); + resamp.setInSampleRate(_inSampleRate); + float realCutoff = std::min(_bandWidth, std::min(_inSampleRate, _outSampleRate)) / 2.0f; + win.setSampleRate(_inSampleRate * resamp.getInterpolation()); + win.setCutoff(realCutoff); + win.setTransWidth(realCutoff); + resamp.updateWindow(&win); + if (running) { xlator.start(); resamp.start(); } } - void setOutputSampleRate(float outputSampleRate, float bandWidth = -1) { - if (bandWidth > 0) { - _bandWidth = bandWidth; - } - resamp.setOutputSampleRate(outputSampleRate, _bandWidth * 0.8f, _bandWidth); + void setOutSampleRate(float outSampleRate) { + _outSampleRate = outSampleRate; + if (running) { resamp.stop(); } + resamp.setOutSampleRate(_outSampleRate); + float realCutoff = std::min(_bandWidth, std::min(_inSampleRate, _outSampleRate)) / 2.0f; + win.setSampleRate(_inSampleRate * resamp.getInterpolation()); + win.setCutoff(realCutoff); + win.setTransWidth(realCutoff); + resamp.updateWindow(&win); + if (running) { resamp.start(); } + } + + void setOutSampleRate(float outSampleRate, float bandWidth) { + _outSampleRate = outSampleRate; + _bandWidth = bandWidth; + if (running) { resamp.stop(); } + resamp.setOutSampleRate(_outSampleRate); + float realCutoff = std::min(_bandWidth, std::min(_inSampleRate, _outSampleRate)) / 2.0f; + win.setSampleRate(_inSampleRate * resamp.getInterpolation()); + win.setCutoff(realCutoff); + win.setTransWidth(realCutoff); + resamp.updateWindow(&win); + if (running) { resamp.start(); } + } + + void setOffset(float offset) { + _offset = offset; + xlator.setFrequency(-_offset); } void setBandwidth(float bandWidth) { _bandWidth = bandWidth; - resamp.setFilterParams(_bandWidth * 0.8f, _bandWidth); + float realCutoff = std::min(_bandWidth, std::min(_inSampleRate, _outSampleRate)) / 2.0f; + win.setCutoff(realCutoff); + win.setTransWidth(realCutoff); + resamp.updateWindow(&win); } - void setOffset(float offset) { - lo.setFrequency(-offset); - } - - void setBlockSize(int blockSize) { - stop(false); - _blockSize = blockSize; - lo.setBlockSize(_blockSize); - mixer.setBlockSize(_blockSize); - resamp.setBlockSize(_blockSize); - start(); - } - - int getOutputBlockSize() { - return resamp.getOutputBlockSize(); - } - - stream* output; + stream* out; private: - SineSource lo; - //Multiplier mixer; - DemoMultiplier mixer; - FIRResampler resamp; - DecimatingFIRFilter filter; - stream* _input; + bool running = false; + float _offset, _inSampleRate, _outSampleRate, _bandWidth; + filter_window::BlackmanWindow win; + stream* _in; + FrequencyXlator xlator; + PolyphaseResampler resamp; - float _outputSampleRate; - float _inputSampleRate; - float _bandWidth; - float _blockSize; }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/dsp/window.h b/core/src/dsp/window.h new file mode 100644 index 00000000..b71070e7 --- /dev/null +++ b/core/src/dsp/window.h @@ -0,0 +1,75 @@ +#pragma once +#include + +namespace dsp { + namespace filter_window { + class generic_window { + public: + virtual int getTapCount() { return -1; } + virtual void createTaps(float* taps, int tapCount) {} + }; + + class BlackmanWindow : public filter_window::generic_window { + public: + BlackmanWindow() {} + BlackmanWindow(float cutoff, float transWidth, float sampleRate) { init(cutoff, transWidth, sampleRate); } + + void init(float cutoff, float transWidth, float sampleRate) { + _cutoff = cutoff; + _transWidth = transWidth; + _sampleRate = sampleRate; + } + + void setSampleRate(float sampleRate) { + _sampleRate = sampleRate; + } + + void setCutoff(float cutoff) { + _cutoff = cutoff; + } + + void setTransWidth(float transWidth) { + _transWidth = transWidth; + } + + int getTapCount() { + float fc = _cutoff / _sampleRate; + if (fc > 1.0f) { + fc = 1.0f; + } + + int _M = 4.0f / (_transWidth / _sampleRate); + if (_M < 4) { + _M = 4; + } + + if (_M % 2 == 0) { _M++; } + + return _M; + } + + void createTaps(float* taps, int tapCount) { + float fc = _cutoff / _sampleRate; + if (fc > 1.0f) { + fc = 1.0f; + } + float tc = tapCount; + float sum = 0.0f; + float val; + for (int i = 0; i < tapCount; i++) { + val = (sin(2.0f * FL_M_PI * fc * ((float)i - (tc / 2))) / ((float)i - (tc / 2))) * + (0.42f - (0.5f * cos(2.0f * FL_M_PI / tc)) + (0.8f * cos(4.0f * FL_M_PI / tc))); + taps[tapCount - i - 1] = val; // tapCount - i - 1 + sum += val; + } + for (int i = 0; i < tapCount; i++) { + taps[i] /= sum; + } + } + + private: + float _cutoff, _transWidth, _sampleRate; + + }; + } +} \ No newline at end of file diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index 057519bd..fa16bf46 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -47,7 +47,7 @@ int fftSize = 8192 * 8; std::vector _data; std::vector fftTaps; -void fftHandler(dsp::complex_t* samples) { +void fftHandler(dsp::complex_t* samples, int count, void* ctx) { fftwf_execute(p); int half = fftSize / 2; @@ -414,7 +414,7 @@ void drawWindow() { ImGui::Text("Center Frequency: %.0f Hz", gui::waterfall.getCenterFrequency()); ImGui::Text("Source name: %s", sourceName.c_str()); if (ImGui::Checkbox("Test technique", &dcbias.val)) { - sigpath::signalPath.setDCBiasCorrection(dcbias.val); + //sigpath::signalPath.setDCBiasCorrection(dcbias.val); } ImGui::Spacing(); } diff --git a/core/src/io/audio.h b/core/src/io/audio.h index b78d7da7..e6fd495a 100644 --- a/core/src/io/audio.h +++ b/core/src/io/audio.h @@ -5,6 +5,7 @@ #include #include #include +#include namespace io { class AudioSink { @@ -30,7 +31,7 @@ namespace io { AudioSink(int bufferSize) { _bufferSize = bufferSize; monoBuffer = new float[_bufferSize]; - stereoBuffer = new dsp::StereoFloat_t[_bufferSize]; + stereoBuffer = new dsp::stereo_t[_bufferSize]; _volume = 1.0f; Pa_Initialize(); @@ -81,7 +82,7 @@ namespace io { void init(int bufferSize) { _bufferSize = bufferSize; monoBuffer = new float[_bufferSize]; - stereoBuffer = new dsp::StereoFloat_t[_bufferSize]; + stereoBuffer = new dsp::stereo_t[_bufferSize]; _volume = 1.0f; Pa_Initialize(); @@ -130,11 +131,11 @@ namespace io { } void setMonoInput(dsp::stream* input) { - _monoInput = input; + monoSink.setInput(input); } - void setStereoInput(dsp::stream* input) { - _stereoInput = input; + void setStereoInput(dsp::stream* input) { + stereoSink.setInput(input); } void setVolume(float volume) { @@ -158,10 +159,12 @@ namespace io { if (streamType == MONO) { err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, 0, (dev.channels == 2) ? _mono_to_stereo_callback : _mono_to_mono_callback, this); + monoSink.start(); } else { err = Pa_OpenStream(&stream, NULL, &outputParams, _sampleRate, _bufferSize, 0, (dev.channels == 2) ? _stereo_to_stereo_callback : _stereo_to_mono_callback, this); + stereoSink.start(); } if (err != 0) { @@ -182,18 +185,20 @@ namespace io { return; } if (streamType == MONO) { - _monoInput->stopReader(); + monoSink.stop(); + monoSink.data.stopReader(); } else { - _stereoInput->stopReader(); + stereoSink.stop(); + stereoSink.data.stopReader(); } Pa_StopStream(stream); Pa_CloseStream(stream); if (streamType == MONO) { - _monoInput->clearReadStop(); + monoSink.data.clearReadStop(); } else { - _stereoInput->clearReadStop(); + stereoSink.data.clearReadStop(); } running = false; } @@ -206,7 +211,7 @@ namespace io { delete[] monoBuffer; delete[] stereoBuffer; monoBuffer = new float[_bufferSize]; - stereoBuffer = new dsp::StereoFloat_t[_bufferSize]; + stereoBuffer = new dsp::stereo_t[_bufferSize]; } void setSampleRate(float sampleRate) { @@ -248,7 +253,7 @@ namespace io { PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; - if (_this->_monoInput->read(_this->monoBuffer, frameCount) < 0) { + if (_this->monoSink.data.read(_this->monoBuffer, frameCount) < 0) { memset(outbuf, 0, sizeof(float) * frameCount); return 0; } @@ -266,9 +271,9 @@ namespace io { const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; - dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; - if (_this->_stereoInput->read(_this->stereoBuffer, frameCount) < 0) { - memset(outbuf, 0, sizeof(dsp::StereoFloat_t) * frameCount); + dsp::stereo_t* outbuf = (dsp::stereo_t*)output; + if (_this->stereoSink.data.read(_this->stereoBuffer, frameCount) < 0) { + memset(outbuf, 0, sizeof(dsp::stereo_t) * frameCount); return 0; } @@ -288,9 +293,9 @@ namespace io { const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; - dsp::StereoFloat_t* outbuf = (dsp::StereoFloat_t*)output; - if (_this->_monoInput->read(_this->monoBuffer, frameCount) < 0) { - memset(outbuf, 0, sizeof(dsp::StereoFloat_t) * frameCount); + dsp::stereo_t* outbuf = (dsp::stereo_t*)output; + if (_this->monoSink.data.read(_this->monoBuffer, frameCount) < 0) { + memset(outbuf, 0, sizeof(dsp::stereo_t) * frameCount); return 0; } @@ -309,7 +314,7 @@ namespace io { PaStreamCallbackFlags statusFlags, void *userData ) { AudioSink* _this = (AudioSink*)userData; float* outbuf = (float*)output; - if (_this->_stereoInput->read(_this->stereoBuffer, frameCount) < 0) { + if (_this->stereoSink.data.read(_this->stereoBuffer, frameCount) < 0) { memset(outbuf, 0, sizeof(float) * frameCount); return 0; } @@ -338,10 +343,10 @@ namespace io { int defaultDev; double _sampleRate; int _bufferSize; - dsp::stream* _monoInput; - dsp::stream* _stereoInput; + dsp::RingBufferSink monoSink; + dsp::RingBufferSink stereoSink; float* monoBuffer; - dsp::StereoFloat_t* stereoBuffer; + dsp::stereo_t* stereoBuffer; float _volume = 1.0f; PaStream *stream; bool running = false; diff --git a/core/src/signal_path/audio.cpp b/core/src/signal_path/audio.cpp index d99fb7e5..e00b06c0 100644 --- a/core/src/signal_path/audio.cpp +++ b/core/src/signal_path/audio.cpp @@ -12,7 +12,7 @@ namespace audio { astr->deviceId = astr->audio->getDeviceId(); double sampleRate = astr->audio->devices[astr->deviceId].sampleRates[0]; int blockSize = sampleRate / 200.0; // default block size - astr->monoAudioStream = new dsp::stream(blockSize * 2); + astr->monoAudioStream = new dsp::stream; astr->audio->setBlockSize(blockSize); astr->audio->setStreamType(io::AudioSink::MONO); astr->audio->setMonoInput(astr->monoAudioStream); @@ -21,8 +21,8 @@ namespace audio { astr->sampleRate = sampleRate; astr->monoStream = stream; astr->sampleRateChangeHandler = sampleRateChangeHandler; - astr->monoDynSplit = new dsp::DynamicSplitter(stream, blockSize); - astr->monoDynSplit->bind(astr->monoAudioStream); + astr->monoDynSplit = new dsp::Splitter(stream); + astr->monoDynSplit->bindStream(astr->monoAudioStream); astr->running = false; astr->volume = 1.0f; astr->sampleRateId = 0; @@ -31,7 +31,7 @@ namespace audio { return sampleRate; } - double registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx) { + double registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx) { AudioStream_t* astr = new AudioStream_t; astr->type = STREAM_TYPE_STEREO; astr->ctx = ctx; @@ -39,7 +39,7 @@ namespace audio { astr->audio->init(1); double sampleRate = astr->audio->devices[astr->audio->getDeviceId()].sampleRates[0]; int blockSize = sampleRate / 200.0; // default block size - astr->stereoAudioStream = new dsp::stream(blockSize * 2); + astr->stereoAudioStream = new dsp::stream; astr->audio->setBlockSize(blockSize); astr->audio->setStreamType(io::AudioSink::STEREO); astr->audio->setStereoInput(astr->stereoAudioStream); @@ -48,8 +48,8 @@ namespace audio { astr->sampleRate = sampleRate; astr->stereoStream = stream; astr->sampleRateChangeHandler = sampleRateChangeHandler; - astr->stereoDynSplit = new dsp::DynamicSplitter(stream, blockSize); - astr->stereoDynSplit->bind(astr->stereoAudioStream); + astr->stereoDynSplit = new dsp::Splitter(stream); + astr->stereoDynSplit->bindStream(astr->stereoAudioStream); astr->running = false; streams[name] = astr; astr->vfoName = vfoName; @@ -103,20 +103,20 @@ namespace audio { bstr.streamRemovedHandler = streamRemovedHandler; bstr.sampleRateChangeHandler = sampleRateChangeHandler; if (astr->type == STREAM_TYPE_MONO) { - bstr.monoStream = new dsp::stream(astr->blockSize * 2); + bstr.monoStream = new dsp::stream; astr->monoDynSplit->stop(); - astr->monoDynSplit->bind(bstr.monoStream); + astr->monoDynSplit->bindStream(bstr.monoStream); if (astr->running) { astr->monoDynSplit->start(); } astr->boundStreams.push_back(bstr); return bstr.monoStream; } - bstr.stereoStream = new dsp::stream(astr->blockSize * 2); - bstr.s2m = new dsp::StereoToMono(bstr.stereoStream, astr->blockSize * 2); - bstr.monoStream = &bstr.s2m->output; + bstr.stereoStream = new dsp::stream; + bstr.s2m = new dsp::StereoToMono(bstr.stereoStream); + bstr.monoStream = &bstr.s2m->out; astr->stereoDynSplit->stop(); - astr->stereoDynSplit->bind(bstr.stereoStream); + astr->stereoDynSplit->bindStream(bstr.stereoStream); if (astr->running) { astr->stereoDynSplit->start(); } @@ -125,7 +125,7 @@ namespace audio { return bstr.monoStream; } - dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx) { + dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx) { AudioStream_t* astr = streams[name]; BoundStream_t bstr; bstr.type = STREAM_TYPE_STEREO; @@ -133,20 +133,20 @@ namespace audio { bstr.streamRemovedHandler = streamRemovedHandler; bstr.sampleRateChangeHandler = sampleRateChangeHandler; if (astr->type == STREAM_TYPE_STEREO) { - bstr.stereoStream = new dsp::stream(astr->blockSize * 2); + bstr.stereoStream = new dsp::stream; astr->stereoDynSplit->stop(); - astr->stereoDynSplit->bind(bstr.stereoStream); + astr->stereoDynSplit->bindStream(bstr.stereoStream); if (astr->running) { astr->stereoDynSplit->start(); } astr->boundStreams.push_back(bstr); return bstr.stereoStream; } - bstr.monoStream = new dsp::stream(astr->blockSize * 2); - bstr.m2s = new dsp::MonoToStereo(bstr.monoStream, astr->blockSize * 2); - bstr.stereoStream = &bstr.m2s->output; + bstr.monoStream = new dsp::stream; + bstr.m2s = new dsp::MonoToStereo(bstr.monoStream); + bstr.stereoStream = &bstr.m2s->out; astr->monoDynSplit->stop(); - astr->monoDynSplit->bind(bstr.monoStream); + astr->monoDynSplit->bindStream(bstr.monoStream); if (astr->running) { astr->monoDynSplit->start(); } @@ -156,35 +156,37 @@ namespace audio { } void setBlockSize(std::string name, int blockSize) { - AudioStream_t* astr = streams[name]; - if (astr->running) { - return; - } - if (astr->type == STREAM_TYPE_MONO) { - astr->monoDynSplit->setBlockSize(blockSize); - for (int i = 0; i < astr->boundStreams.size(); i++) { - BoundStream_t bstr = astr->boundStreams[i]; - bstr.monoStream->setMaxLatency(blockSize * 2); - if (bstr.type == STREAM_TYPE_STEREO) { - bstr.m2s->stop(); - bstr.m2s->setBlockSize(blockSize); - bstr.m2s->start(); - } - } - astr->blockSize = blockSize; - return; - } - astr->monoDynSplit->setBlockSize(blockSize); - for (int i = 0; i < astr->boundStreams.size(); i++) { - BoundStream_t bstr = astr->boundStreams[i]; - bstr.stereoStream->setMaxLatency(blockSize * 2); - if (bstr.type == STREAM_TYPE_MONO) { - bstr.s2m->stop(); - bstr.s2m->setBlockSize(blockSize); - bstr.s2m->start(); - } - } - astr->blockSize = blockSize; + // NOTE: THIS SHOULD NOT BE NEEDED ANYMORE + + // AudioStream_t* astr = streams[name]; + // if (astr->running) { + // return; + // } + // if (astr->type == STREAM_TYPE_MONO) { + // astr->monoDynSplit->setBlockSize(blockSize); + // for (int i = 0; i < astr->boundStreams.size(); i++) { + // BoundStream_t bstr = astr->boundStreams[i]; + // bstr.monoStream->setMaxLatency(blockSize * 2); + // if (bstr.type == STREAM_TYPE_STEREO) { + // bstr.m2s->stop(); + // bstr.m2s->setBlockSize(blockSize); + // bstr.m2s->start(); + // } + // } + // astr->blockSize = blockSize; + // return; + // } + // astr->monoDynSplit->setBlockSize(blockSize); + // for (int i = 0; i < astr->boundStreams.size(); i++) { + // BoundStream_t bstr = astr->boundStreams[i]; + // bstr.stereoStream->setMaxLatency(blockSize * 2); + // if (bstr.type == STREAM_TYPE_MONO) { + // bstr.s2m->stop(); + // bstr.s2m->setBlockSize(blockSize); + // bstr.s2m->start(); + // } + // } + // astr->blockSize = blockSize; } void unbindFromStreamMono(std::string name, dsp::stream* stream) { @@ -196,7 +198,7 @@ namespace audio { } if (astr->type == STREAM_TYPE_STEREO) { astr->stereoDynSplit->stop(); - astr->stereoDynSplit->unbind(bstr.stereoStream); + astr->stereoDynSplit->unbindStream(bstr.stereoStream); if (astr->running) { astr->stereoDynSplit->start(); } @@ -205,7 +207,7 @@ namespace audio { return; } astr->monoDynSplit->stop(); - astr->monoDynSplit->unbind(bstr.monoStream); + astr->monoDynSplit->unbindStream(bstr.monoStream); if (astr->running) { astr->monoDynSplit->start(); } @@ -214,7 +216,7 @@ namespace audio { } } - void unbindFromStreamStereo(std::string name, dsp::stream* stream) { + void unbindFromStreamStereo(std::string name, dsp::stream* stream) { AudioStream_t* astr = streams[name]; for (int i = 0; i < astr->boundStreams.size(); i++) { BoundStream_t bstr = astr->boundStreams[i]; @@ -223,7 +225,7 @@ namespace audio { } if (astr->type == STREAM_TYPE_MONO) { astr->monoDynSplit->stop(); - astr->monoDynSplit->unbind(bstr.monoStream); + astr->monoDynSplit->unbindStream(bstr.monoStream); if (astr->running) { astr->monoDynSplit->start(); } @@ -232,7 +234,7 @@ namespace audio { return; } astr->stereoDynSplit->stop(); - astr->stereoDynSplit->unbind(bstr.stereoStream); + astr->stereoDynSplit->unbindStream(bstr.stereoStream); if (astr->running) { astr->stereoDynSplit->start(); } @@ -255,16 +257,19 @@ namespace audio { if (astr->running) { return; } + + // NOTE: All the blocksize stuff needs removal + int blockSize = astr->sampleRateChangeHandler(astr->ctx, sampleRate); astr->audio->setSampleRate(sampleRate); - astr->audio->setBlockSize(blockSize); + //astr->audio->setBlockSize(blockSize); if (astr->type == STREAM_TYPE_MONO) { - astr->monoDynSplit->setBlockSize(blockSize); + //astr->monoDynSplit->setBlockSize(blockSize); for (int i = 0; i < astr->boundStreams.size(); i++) { BoundStream_t bstr = astr->boundStreams[i]; if (bstr.type == STREAM_TYPE_STEREO) { bstr.m2s->stop(); - bstr.m2s->setBlockSize(blockSize); + //bstr.m2s->setBlockSize(blockSize); bstr.sampleRateChangeHandler(bstr.ctx, sampleRate, blockSize); bstr.m2s->start(); continue; @@ -273,12 +278,12 @@ namespace audio { } } else { - astr->stereoDynSplit->setBlockSize(blockSize); + //astr->stereoDynSplit->setBlockSize(blockSize); for (int i = 0; i < astr->boundStreams.size(); i++) { BoundStream_t bstr = astr->boundStreams[i]; if (bstr.type == STREAM_TYPE_MONO) { bstr.s2m->stop(); - bstr.s2m->setBlockSize(blockSize); + //bstr.s2m->setBlockSize(blockSize); bstr.sampleRateChangeHandler(bstr.ctx, sampleRate, blockSize); bstr.s2m->start(); continue; diff --git a/core/src/signal_path/audio.h b/core/src/signal_path/audio.h index e5d00107..5f5d13c3 100644 --- a/core/src/signal_path/audio.h +++ b/core/src/signal_path/audio.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include #include #include @@ -15,7 +16,7 @@ namespace audio { struct BoundStream_t { dsp::stream* monoStream; - dsp::stream* stereoStream; + dsp::stream* stereoStream; dsp::StereoToMono* s2m; dsp::MonoToStereo* m2s; void (*streamRemovedHandler)(void* ctx); @@ -27,12 +28,12 @@ namespace audio { struct AudioStream_t { io::AudioSink* audio; dsp::stream* monoAudioStream; - dsp::stream* stereoAudioStream; + dsp::stream* stereoAudioStream; std::vector boundStreams; dsp::stream* monoStream; - dsp::DynamicSplitter* monoDynSplit; - dsp::stream* stereoStream; - dsp::DynamicSplitter* stereoDynSplit; + dsp::Splitter* monoDynSplit; + dsp::stream* stereoStream; + dsp::Splitter* stereoDynSplit; int (*sampleRateChangeHandler)(void* ctx, double sampleRate); double sampleRate; int blockSize; @@ -48,15 +49,15 @@ namespace audio { extern std::map streams; double registerMonoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx); - double registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx); + double registerStereoStream(dsp::stream* stream, std::string name, std::string vfoName, int (*sampleRateChangeHandler)(void* ctx, double sampleRate), void* ctx); void startStream(std::string name); void stopStream(std::string name); void removeStream(std::string name); dsp::stream* bindToStreamMono(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx); - dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx); + dsp::stream* bindToStreamStereo(std::string name, void (*streamRemovedHandler)(void* ctx), void (*sampleRateChangeHandler)(void* ctx, double sampleRate, int blockSize), void* ctx); void setBlockSize(std::string name, int blockSize); void unbindFromStreamMono(std::string name, dsp::stream* stream); - void unbindFromStreamStereo(std::string name, dsp::stream* stream); + void unbindFromStreamStereo(std::string name, dsp::stream* stream); std::string getNameFromVFO(std::string vfoName); void setSampleRate(std::string name, double sampleRate); void setAudioDevice(std::string name, int deviceId, double sampleRate); diff --git a/core/src/signal_path/dsp.cpp b/core/src/signal_path/dsp.cpp index 62a5c492..cc6f52fa 100644 --- a/core/src/signal_path/dsp.cpp +++ b/core/src/signal_path/dsp.cpp @@ -4,54 +4,43 @@ SignalPath::SignalPath() { } -void SignalPath::init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream* input, dsp::complex_t* fftBuffer, void fftHandler(dsp::complex_t*)) { +void SignalPath::init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream* input, dsp::complex_t* fftBuffer, void fftHandler(dsp::complex_t*,int,void*)) { this->sampleRate = sampleRate; this->fftRate = fftRate; this->fftSize = fftSize; inputBlockSize = sampleRate / 200.0f; - dcBiasRemover.init(input, 32000); - dcBiasRemover.bypass = true; - split.init(&dcBiasRemover.output, 32000); + split.init(input); - fftBlockDec.init(&split.output_a, (sampleRate / fftRate) - fftSize, fftSize); - fftHandlerSink.init(&fftBlockDec.output, fftBuffer, fftSize, fftHandler); - - dynSplit.init(&split.output_b, 32000); + reshape.init(&fftStream); + fftHandlerSink.init(&reshape.out, fftHandler, NULL); } void SignalPath::setSampleRate(double sampleRate) { this->sampleRate = sampleRate; - inputBlockSize = sampleRate / 200.0f; - dcBiasRemover.stop(); split.stop(); - fftBlockDec.stop(); - fftHandlerSink.stop(); - dynSplit.stop(); + //fftBlockDec.stop(); + //fftHandlerSink.stop(); for (auto const& [name, vfo] : vfos) { vfo.vfo->stop(); } - dcBiasRemover.setBlockSize(inputBlockSize); - split.setBlockSize(inputBlockSize); - int skip = (sampleRate / fftRate) - fftSize; - fftBlockDec.setSkip(skip); - dynSplit.setBlockSize(inputBlockSize); + // Claculate skip to maintain a constant fft rate + //int skip = (sampleRate / fftRate) - fftSize; + //fftBlockDec.setSkip(skip); - // TODO: Tell modules that the block size has changed + // TODO: Tell modules that the block size has changed (maybe?) for (auto const& [name, vfo] : vfos) { - vfo.vfo->setInputSampleRate(sampleRate, inputBlockSize); + vfo.vfo->setInSampleRate(sampleRate); vfo.vfo->start(); } - fftHandlerSink.start(); - fftBlockDec.start(); + //fftHandlerSink.start(); + //fftBlockDec.start(); split.start(); - dcBiasRemover.start(); - dynSplit.start(); } double SignalPath::getSampleRate() { @@ -59,32 +48,23 @@ double SignalPath::getSampleRate() { } void SignalPath::start() { - dcBiasRemover.start(); split.start(); - - fftBlockDec.start(); + reshape.start(); fftHandlerSink.start(); - - dynSplit.start(); -} - -void SignalPath::setDCBiasCorrection(bool enabled) { - dcBiasRemover.bypass = !enabled; } dsp::VFO* SignalPath::addVFO(std::string name, double outSampleRate, double bandwidth, double offset) { if (vfos.find(name) != vfos.end()) { return NULL; } - dynSplit.stop(); + VFO_t vfo; - vfo.inputStream = new dsp::stream(inputBlockSize * 2); - dynSplit.bind(vfo.inputStream); + vfo.inputStream = new dsp::stream; + split.bindStream(vfo.inputStream); vfo.vfo = new dsp::VFO(); - vfo.vfo->init(vfo.inputStream, sampleRate, outSampleRate, bandwidth, offset, inputBlockSize); + vfo.vfo->init(vfo.inputStream, offset, sampleRate, outSampleRate, bandwidth); vfo.vfo->start(); vfos[name] = vfo; - dynSplit.start(); return vfo.vfo; } @@ -93,30 +73,22 @@ void SignalPath::removeVFO(std::string name) { return; } - dynSplit.stop(); VFO_t vfo = vfos[name]; vfo.vfo->stop(); - dynSplit.unbind(vfo.inputStream); + split.unbindStream(vfo.inputStream); delete vfo.vfo; delete vfo.inputStream; - dynSplit.start(); vfos.erase(name); } void SignalPath::setInput(dsp::stream* input) { - dcBiasRemover.stop(); - dcBiasRemover.setInput(input); - dcBiasRemover.start(); + split.setInput(input); } void SignalPath::bindIQStream(dsp::stream* stream) { - dynSplit.stop(); - dynSplit.bind(stream); - dynSplit.start(); + split.bindStream(stream); } void SignalPath::unbindIQStream(dsp::stream* stream) { - dynSplit.stop(); - dynSplit.unbind(stream); - dynSplit.start(); + split.unbindStream(stream); } \ No newline at end of file diff --git a/core/src/signal_path/dsp.h b/core/src/signal_path/dsp.h index 80c1473c..e41860aa 100644 --- a/core/src/signal_path/dsp.h +++ b/core/src/signal_path/dsp.h @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include @@ -14,10 +13,9 @@ class SignalPath { public: SignalPath(); - void init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream* input, dsp::complex_t* fftBuffer, void fftHandler(dsp::complex_t*)); + void init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream* input, dsp::complex_t* fftBuffer, void fftHandler(dsp::complex_t*,int,void*)); void start(); void setSampleRate(double sampleRate); - void setDCBiasCorrection(bool enabled); void setFFTRate(double rate); double getSampleRate(); dsp::VFO* addVFO(std::string name, double outSampleRate, double bandwidth, double offset); @@ -32,15 +30,14 @@ private: dsp::VFO* vfo; }; - dsp::DCBiasRemover dcBiasRemover; - dsp::Splitter split; + dsp::Splitter split; // FFT - dsp::BlockDecimator fftBlockDec; - dsp::HandlerSink fftHandlerSink; + dsp::stream fftStream; + dsp::Reshaper reshape; + dsp::HandlerSink fftHandlerSink; // VFO - dsp::DynamicSplitter dynSplit; std::map vfos; double sampleRate; diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index 8579ffdf..019a3097 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -8,7 +8,7 @@ VFOManager::VFO::VFO(std::string name, int reference, double offset, double band wtfVFO->setReference(reference); wtfVFO->setBandwidth(bandwidth); wtfVFO->setOffset(offset); - output = dspVFO->output; + output = dspVFO->out; gui::waterfall.vfos[name] = wtfVFO; } @@ -34,7 +34,7 @@ void VFOManager::VFO::setBandwidth(double bandwidth) { } void VFOManager::VFO::setSampleRate(double sampleRate, double bandwidth) { - dspVFO->setOutputSampleRate(sampleRate, bandwidth); + dspVFO->setOutSampleRate(sampleRate, bandwidth); wtfVFO->setBandwidth(bandwidth); } @@ -43,7 +43,8 @@ void VFOManager::VFO::setReference(int ref) { } int VFOManager::VFO::getOutputBlockSize() { - return dspVFO->getOutputBlockSize(); + // NOTE: This shouldn't be needed anymore + return 1; //dspVFO->getOutputBlockSize(); } void VFOManager::VFO::setSnapInterval(double interval) { diff --git a/file_source/src/main.cpp b/file_source/src/main.cpp index 7eafb9e0..98c03823 100644 --- a/file_source/src/main.cpp +++ b/file_source/src/main.cpp @@ -20,8 +20,6 @@ public: FileSourceModule(std::string name) { this->name = name; - stream.init(100); - handler.ctx = this; handler.selectHandler = menuSelected; handler.deselectHandler = menuDeselected; @@ -84,22 +82,19 @@ private: double sampleRate = _this->reader->getSampleRate(); int blockSize = sampleRate / 200.0; int16_t* inBuf = new int16_t[blockSize * 2]; - dsp::complex_t* outBuf = new dsp::complex_t[blockSize]; - - _this->stream.setMaxLatency(blockSize * 2); while (true) { _this->reader->readSamples(inBuf, blockSize * 2 * sizeof(int16_t)); + if (_this->stream.aquire() < 0) { break; }; for (int i = 0; i < blockSize; i++) { - outBuf[i].q = (float)inBuf[i * 2] / (float)0x7FFF; - outBuf[i].i = (float)inBuf[(i * 2) + 1] / (float)0x7FFF; + _this->stream.data[i].q = (float)inBuf[i * 2] / (float)0x7FFF; + _this->stream.data[i].i = (float)inBuf[(i * 2) + 1] / (float)0x7FFF; } - if (_this->stream.write(outBuf, blockSize) < 0) { break; }; + _this->stream.write(blockSize); //std::this_thread::sleep_for(std::chrono::milliseconds(5)); } delete[] inBuf; - delete[] outBuf; } std::string name; diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 0967c718..5dd02a66 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -122,11 +122,6 @@ private: _this->sigPath.setBandwidth(_this->bandWidth); } - ImGui::Text("Squelch"); - ImGui::SameLine(); - ImGui::SetNextItemWidth(menuColumnWidth - ImGui::GetCursorPosX()); - ImGui::SliderFloat(CONCAT("##_squelch_select_", _this->name), &_this->sigPath.squelch.level, -100, 0); - ImGui::PopItemWidth(); ImGui::Text("Snap Interval"); diff --git a/radio/src/path.cpp b/radio/src/path.cpp index cc49403f..1faad6fd 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -11,12 +11,17 @@ int SigPath::sampleRateChangeHandler(void* ctx, double sampleRate) { _this->audioResamp.stop(); _this->deemp.stop(); float bw = std::min(_this->bandwidth, sampleRate / 2.0f); - _this->audioResamp.setOutputSampleRate(sampleRate, bw, bw); - _this->deemp.setBlockSize(_this->audioResamp.getOutputBlockSize()); - _this->deemp.setSamplerate(sampleRate); + + + _this->audioResamp.setOutSampleRate(sampleRate); + _this->audioWin.setSampleRate(_this->sampleRate * _this->audioResamp.getInterpolation()); + _this->audioResamp.updateWindow(&_this->audioWin); + + _this->deemp.setSampleRate(sampleRate); _this->audioResamp.start(); _this->deemp.start(); - return _this->audioResamp.getOutputBlockSize(); + // Note: returning a block size should not be needed anymore + return 1; } void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { @@ -35,21 +40,18 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { // TODO: ajust deemphasis for different output sample rates // TODO: Add a mono to stereo for different modes - squelch.init(vfo->output, 800); - squelch.level = -100.0; - squelch.onCount = 1; - squelch.offCount = 2560; + demod.init(vfo->output, 200000, 100000); + amDemod.init(vfo->output); + ssbDemod.init(vfo->output, 6000, 3000, dsp::SSBDemod::MODE_USB); - demod.init(squelch.out[0], 100000, 200000, 800); - amDemod.init(squelch.out[0], 50); - ssbDemod.init(squelch.out[0], 6000, 3000, 22); - cpx2stereo.init(squelch.out[0], 22); + audioWin.init(24000, 24000, 200000); + audioResamp.init(&demod.out, &audioWin, 200000, 48000); + audioWin.setSampleRate(audioResamp.getInterpolation() * 200000); + audioResamp.updateWindow(&audioWin); + + deemp.init(&audioResamp.out, 48000, 50e-6); - audioResamp.init(&demod.output, 200000, 48000, 800); - deemp.init(&audioResamp.output, 800, 50e-6, 48000); - - outputSampleRate = audio::registerMonoStream(&deemp.output, vfoName, vfoName, sampleRateChangeHandler, this); - audio::setBlockSize(vfoName, audioResamp.getOutputBlockSize()); + outputSampleRate = audio::registerMonoStream(&deemp.out, vfoName, vfoName, sampleRateChangeHandler, this); setDemodulator(_demod, bandwidth); } @@ -90,27 +92,27 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (_demod == DEMOD_DSB) { ssbDemod.stop(); } - else if (_demod == DEMOD_RAW) { - cpx2stereo.stop(); - } else { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (stop)"); } _demod = demId; - - squelch.stop(); // Set input of the audio resampler // TODO: Set bandwidth from argument if (demId == DEMOD_FM) { demodOutputSamplerate = 200000; vfo->setSampleRate(200000, bandwidth); - demod.setBlockSize(vfo->getOutputBlockSize()); demod.setSampleRate(200000); demod.setDeviation(bandwidth / 2.0f); - audioResamp.setInput(&demod.output); + audioResamp.setInput(&demod.out); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(200000, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioResamp.setInSampleRate(200000); + audioWin.setSampleRate(200000 * audioResamp.getInterpolation()); + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + deemp.bypass = (_deemp == DEEMP_NONE); vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); demod.start(); @@ -118,12 +120,17 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (demId == DEMOD_NFM) { demodOutputSamplerate = 16000; vfo->setSampleRate(16000, bandwidth); - demod.setBlockSize(vfo->getOutputBlockSize()); demod.setSampleRate(16000); demod.setDeviation(bandwidth / 2.0f); - audioResamp.setInput(&demod.output); + audioResamp.setInput(&demod.out); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(16000, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioResamp.setInSampleRate(16000); + audioWin.setSampleRate(16000 * audioResamp.getInterpolation()); + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + deemp.bypass = true; vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); demod.start(); @@ -131,10 +138,15 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (demId == DEMOD_AM) { demodOutputSamplerate = 125000; vfo->setSampleRate(12500, bandwidth); - amDemod.setBlockSize(vfo->getOutputBlockSize()); - audioResamp.setInput(&amDemod.output); + audioResamp.setInput(&amDemod.out); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(12500, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioResamp.setInSampleRate(12500); + audioWin.setSampleRate(12500 * audioResamp.getInterpolation()); + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + deemp.bypass = true; vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); amDemod.start(); @@ -142,11 +154,16 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (demId == DEMOD_USB) { demodOutputSamplerate = 6000; vfo->setSampleRate(6000, bandwidth); - ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_USB); - audioResamp.setInput(&ssbDemod.output); + audioResamp.setInput(&ssbDemod.out); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioResamp.setInSampleRate(6000); + audioWin.setSampleRate(6000 * audioResamp.getInterpolation()); + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + deemp.bypass = true; vfo->setReference(ImGui::WaterfallVFO::REF_LOWER); ssbDemod.start(); @@ -154,11 +171,16 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (demId == DEMOD_LSB) { demodOutputSamplerate = 6000; vfo->setSampleRate(6000, bandwidth); - ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_LSB); - audioResamp.setInput(&ssbDemod.output); + audioResamp.setInput(&ssbDemod.out); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioResamp.setInSampleRate(6000); + audioWin.setSampleRate(6000 * audioResamp.getInterpolation()); + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + deemp.bypass = true; vfo->setReference(ImGui::WaterfallVFO::REF_UPPER); ssbDemod.start(); @@ -166,34 +188,24 @@ void SigPath::setDemodulator(int demId, float bandWidth) { else if (demId == DEMOD_DSB) { demodOutputSamplerate = 6000; vfo->setSampleRate(6000, bandwidth); - ssbDemod.setBlockSize(vfo->getOutputBlockSize()); ssbDemod.setMode(dsp::SSBDemod::MODE_DSB); - audioResamp.setInput(&ssbDemod.output); + audioResamp.setInput(&ssbDemod.out); audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(6000, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioResamp.setInSampleRate(6000); + audioWin.setSampleRate(6000 * audioResamp.getInterpolation()); + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + deemp.bypass = true; vfo->setReference(ImGui::WaterfallVFO::REF_CENTER); ssbDemod.start(); } - else if (demId == DEMOD_RAW) { - demodOutputSamplerate = 10000; - vfo->setSampleRate(10000, bandwidth); - cpx2stereo.setBlockSize(vfo->getOutputBlockSize()); - //audioResamp.setInput(&cpx2stereo.output); - audioBw = std::min(bandwidth, outputSampleRate / 2.0f); - audioResamp.setInputSampleRate(10000, vfo->getOutputBlockSize(), audioBw, audioBw); - vfo->setReference(ImGui::WaterfallVFO::REF_LOWER); - cpx2stereo.start(); - } else { spdlog::error("UNIMPLEMENTED DEMODULATOR IN SigPath::setDemodulator (start): {0}", demId); } - squelch.setBlockSize(vfo->getOutputBlockSize()); - squelch.start(); - - deemp.setBlockSize(audioResamp.getOutputBlockSize()); - audioResamp.start(); deemp.start(); } @@ -237,17 +249,17 @@ void SigPath::setBandwidth(float bandWidth) { } else if (_demod == DEMOD_USB) { ssbDemod.stop(); - ssbDemod.setBandwidth(bandwidth); + ssbDemod.setBandWidth(bandwidth); ssbDemod.start(); } else if (_demod == DEMOD_LSB) { ssbDemod.stop(); - ssbDemod.setBandwidth(bandwidth); + ssbDemod.setBandWidth(bandwidth); ssbDemod.start(); } else if (_demod == DEMOD_DSB) { ssbDemod.stop(); - ssbDemod.setBandwidth(bandwidth); + ssbDemod.setBandWidth(bandwidth); ssbDemod.start(); } else if (_demod == DEMOD_RAW) { @@ -260,15 +272,16 @@ void SigPath::setBandwidth(float bandWidth) { if (audioBw != _audioBw) { audioBw = _audioBw; audioResamp.stop(); - audioResamp.setFilterParams(audioBw, audioBw); - audioResamp.setBlockSize(vfo->getOutputBlockSize()); - //audioResamp.setInputSampleRate(demodOutputSamplerate, vfo->getOutputBlockSize(), audioBw, audioBw); + + audioWin.setCutoff(audioBw); + audioWin.setTransWidth(audioBw); + audioResamp.updateWindow(&audioWin); + audioResamp.start(); } } void SigPath::start() { - squelch.start(); demod.start(); audioResamp.start(); deemp.start(); diff --git a/radio/src/path.h b/radio/src/path.h index 7d5318d4..21e6a257 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -6,9 +6,10 @@ #include #include #include -#include #include #include +#include +#include #include #include #include @@ -44,28 +45,23 @@ public: }; - dsp::FMDeemphasis deemp; - dsp::Squelch squelch; + dsp::BFMDeemp deemp; VFOManager::VFO* vfo; private: static int sampleRateChangeHandler(void* ctx, double sampleRate); - - dsp::stream input; - - // Demodulators - dsp::FMDemodulator demod; - dsp::AMDemodulator amDemod; + dsp::FMDemod demod; + dsp::AMDemod amDemod; dsp::SSBDemod ssbDemod; - dsp::ComplexToStereo cpx2stereo; // Audio output dsp::MonoToStereo m2s; - dsp::FIRResampler audioResamp; + dsp::filter_window::BlackmanWindow audioWin; + dsp::PolyphaseResampler audioResamp; std::string vfoName; diff --git a/recorder/src/main.cpp b/recorder/src/main.cpp index 73553fcb..5936db55 100644 --- a/recorder/src/main.cpp +++ b/recorder/src/main.cpp @@ -104,8 +104,7 @@ private: _this->samplesWritten = 0; _this->sampleRate = sigpath::signalPath.getSampleRate(); _this->writer = new WavWriter(ROOT_DIR "/recordings/" + genFileName("baseband_"), 16, 2, _this->sampleRate); - _this->iqStream = new dsp::stream(); - _this->iqStream->init(_this->sampleRate / 200.0); + _this->iqStream = new dsp::stream; sigpath::signalPath.bindIQStream(_this->iqStream); _this->workerThread = std::thread(_iqWriteWorker, _this); _this->recording = true; @@ -176,20 +175,18 @@ private: } static void _audioWriteWorker(RecorderModule* _this) { - dsp::StereoFloat_t* floatBuf = new dsp::StereoFloat_t[1024]; - int16_t* sampleBuf = new int16_t[2048]; + int16_t* sampleBuf = new int16_t[STREAM_BUFFER_SIZE * 2]; while (true) { - if (_this->audioStream->read(floatBuf, 1024) < 0) { - break; - } + int count = _this->audioStream->read(); + if (count < 0) { break; } for (int i = 0; i < 1024; i++) { - sampleBuf[(i * 2) + 0] = floatBuf[i].l * 0x7FFF; - sampleBuf[(i * 2) + 1] = floatBuf[i].r * 0x7FFF; + sampleBuf[(i * 2) + 0] = _this->audioStream->data[i].l * 0x7FFF; + sampleBuf[(i * 2) + 1] = _this->audioStream->data[i].r * 0x7FFF; } + _this->audioStream->flush(); _this->samplesWritten += 1024; _this->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); } - delete[] floatBuf; delete[] sampleBuf; } @@ -197,13 +194,13 @@ private: dsp::complex_t* iqBuf = new dsp::complex_t[1024]; int16_t* sampleBuf = new int16_t[2048]; while (true) { - if (_this->iqStream->read(iqBuf, 1024) < 0) { - break; - } + int count = _this->iqStream->read(); + if (count < 0) { break; } for (int i = 0; i < 1024; i++) { - sampleBuf[(i * 2) + 0] = iqBuf[i].q * 0x7FFF; - sampleBuf[(i * 2) + 1] = iqBuf[i].i * 0x7FFF; + sampleBuf[(i * 2) + 0] = _this->iqStream->data[i].q * 0x7FFF; + sampleBuf[(i * 2) + 1] = _this->iqStream->data[i].i * 0x7FFF; } + _this->iqStream->flush(); _this->samplesWritten += 1024; _this->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); } @@ -212,7 +209,7 @@ private: } std::string name; - dsp::stream* audioStream; + dsp::stream* audioStream; dsp::stream* iqStream; WavWriter* writer; std::thread workerThread; diff --git a/root_dev/config.json b/root_dev/config.json index 4e002330..703ab607 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,7 +3,7 @@ "Radio": { "device": "default", "sampleRate": 48000.0, - "volume": 0.4407407343387604 + "volume": 0.0 }, "Radio 1": { "device": "Speakers (Realtek High Definition Audio)", @@ -19,9 +19,9 @@ "bandPlan": "General", "bandPlanEnabled": true, "fftHeight": 298, - "frequency": 4620379, + "frequency": 99000000, "max": 0.0, - "maximized": true, + "maximized": false, "menuOrder": [ "Source", "Radio", diff --git a/root_dev/module_list.json b/root_dev/module_list.json index b93a9b45..3c037b78 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,6 @@ { - "Radio": "./radio/Release/radio.dll", - "Recorder": "./recorder/Release/recorder.dll", - "Soapy": "./soapy/Release/soapy.dll", - "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" + "Radio": "./radio/RelWithDebInfo/radio.dll", + "Recorder": "./recorder/RelWithDebInfo/recorder.dll", + "Soapy": "./soapy/RelWithDebInfo/soapy.dll", + "RTLTCPSource": "./rtl_tcp_source/RelWithDebInfo/rtl_tcp_source.dll" } diff --git a/root_dev/soapy_source_config.json b/root_dev/soapy_source_config.json index 757b6a37..0dde10e2 100644 --- a/root_dev/soapy_source_config.json +++ b/root_dev/soapy_source_config.json @@ -1,29 +1,35 @@ -{ - "device": "HackRF One #0 901868dc282c8f8b", - "devices": { - "AirSpy HF+ [c852435de0224af7]": { - "gains": { - "LNA": 6.0, - "RF": 0.0 - }, - "sampleRate": 768000.0 - }, - "Generic RTL2832U OEM :: 00000001": { - "gains": { - "TUNER": 49.599998474121094 - }, - "sampleRate": 2560000.0 - }, - "HackRF One #0 901868dc282c8f8b": { - "gains": { - "AMP": 13.86299991607666, - "LNA": 24.711999893188477, - "VGA": 14.282999992370605 - }, - "sampleRate": 8000000.0 - }, - "PulseAudio": { - "sampleRate": 96000.0 - } - } +{ + "device": "Generic RTL2832U OEM :: 00000001", + "devices": { + "AirSpy HF+ [c852435de0224af7]": { + "gains": { + "LNA": 6.0, + "RF": 0.0 + }, + "sampleRate": 768000.0 + }, + "Default Device": { + "sampleRate": 32000.0 + }, + "Generic RTL2832U OEM :: 00000001": { + "gains": { + "TUNER": 49.599998474121094 + }, + "sampleRate": 2560000.0 + }, + "HackRF One #0 901868dc282c8f8b": { + "gains": { + "AMP": 13.86299991607666, + "LNA": 24.711999893188477, + "VGA": 14.282999992370605 + }, + "sampleRate": 8000000.0 + }, + "Microphone (Realtek High Definition Audio)": { + "sampleRate": 96000.0 + }, + "PulseAudio": { + "sampleRate": 96000.0 + } + } } \ No newline at end of file diff --git a/rtl_tcp_source/src/main.cpp b/rtl_tcp_source/src/main.cpp index e247afb5..2bc0323c 100644 --- a/rtl_tcp_source/src/main.cpp +++ b/rtl_tcp_source/src/main.cpp @@ -21,8 +21,6 @@ public: RTLTCPSourceModule(std::string name) { this->name = name; - stream.init(100); - sampleRate = 2560000.0; handler.ctx = this; @@ -143,22 +141,19 @@ private: RTLTCPSourceModule* _this = (RTLTCPSourceModule*)ctx; int blockSize = _this->sampleRate / 200.0; uint8_t* inBuf = new uint8_t[blockSize * 2]; - dsp::complex_t* outBuf = new dsp::complex_t[blockSize]; - - _this->stream.setMaxLatency(blockSize * 2); while (true) { // Read samples here _this->client.receiveData(inBuf, blockSize * 2); + if (_this->stream.aquire() < 0) { break; } for (int i = 0; i < blockSize; i++) { - outBuf[i].q = ((double)inBuf[i * 2] - 128.0) / 128.0; - outBuf[i].i = ((double)inBuf[(i * 2) + 1] - 128.0) / 128.0; + _this->stream.data[i].q = ((double)inBuf[i * 2] - 128.0) / 128.0; + _this->stream.data[i].i = ((double)inBuf[(i * 2) + 1] - 128.0) / 128.0; } - if (_this->stream.write(outBuf, blockSize) < 0) { break; }; + _this->stream.write(blockSize); } delete[] inBuf; - delete[] outBuf; } std::string name; diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index e4610973..81ded3b5 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -31,8 +31,6 @@ public: refresh(); - stream.init(100); - // Select default device config.aquire(); std::string devName = config.conf["device"]; @@ -208,7 +206,9 @@ private: _this->running = false; _this->dev->deactivateStream(_this->devStream); _this->dev->closeStream(_this->devStream); + _this->stream.stopWriter(); _this->workerThread.join(); + _this->stream.clearWriteStop(); SoapySDR::Device::unmake(_this->dev); spdlog::info("SoapyModule '{0}': Stop!", _this->name); @@ -289,18 +289,17 @@ private: static void _worker(SoapyModule* _this) { spdlog::info("SOAPY: WORKER STARTED {0}", _this->sampleRate); int blockSize = _this->sampleRate / 200.0f; - dsp::complex_t* buf = new dsp::complex_t[blockSize]; int flags = 0; long long timeMs = 0; while (_this->running) { - int res = _this->dev->readStream(_this->devStream, (void**)&buf, blockSize, flags, timeMs); + if (_this->stream.aquire() < 0) { break; } + int res = _this->dev->readStream(_this->devStream, (void**)&_this->stream.data, blockSize, flags, timeMs); if (res < 1) { continue; } - _this->stream.write(buf, res); + _this->stream.write(res); } - delete[] buf; } std::string name; From fc9bc496cbb8941250d8488bd92c231638d806cb Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 2 Nov 2020 16:16:21 +0100 Subject: [PATCH 085/127] fixed --- core/src/dsp/filter.h | 9 +++++++-- core/src/dsp/resampling.h | 13 ++++++++++-- core/src/dsp/sink.h | 34 +++++++++++++++++++++++++++++++ core/src/dsp/stream.h | 42 +++++++++++++++++++++++++-------------- radio/src/path.cpp | 8 ++++++-- radio/src/path.h | 4 ++++ 6 files changed, 89 insertions(+), 21 deletions(-) diff --git a/core/src/dsp/filter.h b/core/src/dsp/filter.h index 35ac6cb0..a303f101 100644 --- a/core/src/dsp/filter.h +++ b/core/src/dsp/filter.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include namespace dsp { @@ -127,8 +127,11 @@ namespace dsp { } int run() { + spdlog::warn("+++++++++++++ DEEMP READING"); count = _in->read(); - if (count < 0) { return -1; } + if (count < 0) { spdlog::warn("++++++++++ DEEMP EXIT"); return -1; } + + spdlog::warn("+++++++++++++ DEEMP PROC"); if (bypass) { if (out.aquire() < 0) { return -1; } @@ -146,6 +149,8 @@ namespace dsp { } lastOut = out.data[count - 1]; + spdlog::warn("+++++++++++++ DEEMP DONE"); + _in->flush(); out.write(count); return count; diff --git a/core/src/dsp/resampling.h b/core/src/dsp/resampling.h index f74e7568..affd3d86 100644 --- a/core/src/dsp/resampling.h +++ b/core/src/dsp/resampling.h @@ -96,16 +96,23 @@ namespace dsp { } int run() { + if constexpr (std::is_same_v) { spdlog::warn("======= RESAMP WAITING ========"); } count = _in->read(); - if (count < 0) { return -1; } + if (count < 0) { + return -1; + } int outCount = calcOutSize(count); memcpy(bufStart, _in->data, count * sizeof(T)); _in->flush(); + if constexpr (std::is_same_v) { spdlog::warn("======= RESAMP GOT DATA ========"); } + // Write to output - if (out.aquire() < 0) { return -1; } + if (out.aquire() < 0) { + return -1; + } int outIndex = 0; if constexpr (std::is_same_v) { for (int i = 0; outIndex < outCount; i += _decim) { @@ -129,6 +136,8 @@ namespace dsp { } out.write(count); + if constexpr (std::is_same_v) { spdlog::warn("======= RESAMP WRITTEN ========"); } + memmove(buffer, &buffer[count], tapCount * sizeof(T)); return count; diff --git a/core/src/dsp/sink.h b/core/src/dsp/sink.h index ce50bf0b..1d362721 100644 --- a/core/src/dsp/sink.h +++ b/core/src/dsp/sink.h @@ -96,4 +96,38 @@ namespace dsp { stream* _in; }; + + template + class NullSink : public generic_block> { + public: + NullSink() {} + + NullSink(stream* in) { init(in); } + + ~NullSink() { generic_block>::stop(); } + + void init(stream* in) { + _in = in; + generic_block>::registerInput(_in); + } + + void setInput(stream* in) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); + _in = in; + generic_block>::tempStart(); + } + + int run() { + count = _in->read(); + if (count < 0) { return -1; } + _in->flush(); + return count; + } + + private: + int count; + stream* _in; + + }; } \ No newline at end of file diff --git a/core/src/dsp/stream.h b/core/src/dsp/stream.h index 4dc3b36d..71cf5656 100644 --- a/core/src/dsp/stream.h +++ b/core/src/dsp/stream.h @@ -35,10 +35,13 @@ namespace dsp { } void write(int size) { - std::lock_guard lck(sigMtx); - contentSize = size; - dataReady = true; - cv.notify_all(); + { + std::lock_guard lck(sigMtx); + contentSize = size; + dataReady = true; + lck.~lock_guard(); + } + cv.notify_one(); } int read() { @@ -50,15 +53,21 @@ namespace dsp { } void flush() { - std::lock_guard lck(sigMtx); - dataReady = false; - cv.notify_all(); + { + std::lock_guard lck(sigMtx); + dataReady = false; + lck.~lock_guard(); + } + cv.notify_one(); } void stopReader() { - std::lock_guard lck(sigMtx); - readerStop = true; - cv.notify_all(); + { + std::lock_guard lck(sigMtx); + readerStop = true; + lck.~lock_guard(); + } + cv.notify_one(); } void clearReadStop() { @@ -66,9 +75,12 @@ namespace dsp { } void stopWriter() { - std::lock_guard lck(sigMtx); - writerStop = true; - cv.notify_all(); + { + std::lock_guard lck(sigMtx); + writerStop = true; + lck.~lock_guard(); + } + cv.notify_one(); } void clearWriteStop() { @@ -80,12 +92,12 @@ namespace dsp { private: void waitReady() { std::unique_lock lck(sigMtx); - cv.wait(lck, [this]{ return !dataReady || writerStop; }); + cv.wait(lck, [this]{ return (!dataReady || writerStop); }); } void waitData() { std::unique_lock lck(sigMtx); - cv.wait(lck, [this]{ return dataReady || readerStop; }); + cv.wait(lck, [this]{ return (dataReady || readerStop); }); } std::mutex sigMtx; diff --git a/radio/src/path.cpp b/radio/src/path.cpp index 1faad6fd..86e3ec79 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -1,5 +1,6 @@ #include #include +#include SigPath::SigPath() { @@ -45,11 +46,13 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { ssbDemod.init(vfo->output, 6000, 3000, dsp::SSBDemod::MODE_USB); audioWin.init(24000, 24000, 200000); - audioResamp.init(&demod.out, &audioWin, 200000, 48000); + audioResamp.init(&DUMMY_STREAM, &audioWin, 200000, 48000); audioWin.setSampleRate(audioResamp.getInterpolation() * 200000); audioResamp.updateWindow(&audioWin); deemp.init(&audioResamp.out, 48000, 50e-6); + + ns.init(&demod.out); outputSampleRate = audio::registerMonoStream(&deemp.out, vfoName, vfoName, sampleRateChangeHandler, this); @@ -284,6 +287,7 @@ void SigPath::setBandwidth(float bandWidth) { void SigPath::start() { demod.start(); audioResamp.start(); - deemp.start(); + //deemp.start(); + ns.start(); audio::startStream(vfoName); } \ No newline at end of file diff --git a/radio/src/path.h b/radio/src/path.h index 21e6a257..d6bb96f6 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -63,6 +63,10 @@ private: dsp::filter_window::BlackmanWindow audioWin; dsp::PolyphaseResampler audioResamp; + // Debug + dsp::NullSink ns; + dsp::stream DUMMY_STREAM; + std::string vfoName; float sampleRate; From 35c7f0e3cf03bd130271187119507130e98faf67 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 2 Nov 2020 17:48:17 +0100 Subject: [PATCH 086/127] Fixed stall --- core/src/dsp/audio.h | 5 ++++- core/src/dsp/block.h | 5 +++-- core/src/dsp/demodulator.h | 7 ++++++- core/src/dsp/filter.h | 12 +++++------- core/src/dsp/processing.h | 3 +++ core/src/dsp/resampling.h | 12 +++++------- core/src/dsp/routing.h | 2 ++ core/src/dsp/sink.h | 6 ++++++ core/src/dsp/stream.h | 4 ---- radio/src/path.cpp | 7 ++----- radio/src/path.h | 4 ---- 11 files changed, 36 insertions(+), 31 deletions(-) diff --git a/core/src/dsp/audio.h b/core/src/dsp/audio.h index 71228754..624abdbe 100644 --- a/core/src/dsp/audio.h +++ b/core/src/dsp/audio.h @@ -1,6 +1,5 @@ #pragma once #include -#include namespace dsp { class MonoToStereo : public generic_block { @@ -20,7 +19,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } @@ -64,7 +65,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index 8a5a37d5..318da8a1 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -20,15 +20,17 @@ namespace dsp { if (running) { return; } + running = true; doStart(); } virtual void stop() { std::lock_guard lck(ctrlMtx); - if (!running && !tempStopped) { + if (!running) { return; } doStop(); + running = false; } virtual int calcOutSize(int inSize) { return inSize; } @@ -67,7 +69,6 @@ namespace dsp { } virtual void doStart() { - running = true; workerThread = std::thread(&generic_block::workerLoop, this); } diff --git a/core/src/dsp/demodulator.h b/core/src/dsp/demodulator.h index 21116575..5bc8361b 100644 --- a/core/src/dsp/demodulator.h +++ b/core/src/dsp/demodulator.h @@ -1,6 +1,5 @@ #pragma once #include -#include #define FAST_ATAN2_COEF1 FL_M_PI / 4.0f #define FAST_ATAN2_COEF2 3.0f * FAST_ATAN2_COEF1 @@ -44,7 +43,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } @@ -120,7 +121,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } @@ -182,7 +185,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } diff --git a/core/src/dsp/filter.h b/core/src/dsp/filter.h index a303f101..f9077d5b 100644 --- a/core/src/dsp/filter.h +++ b/core/src/dsp/filter.h @@ -1,7 +1,6 @@ #pragma once #include #include -#include namespace dsp { @@ -34,7 +33,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block>::ctrlMtx); generic_block>::tempStop(); + generic_block>::unregisterInput(_in); _in = in; + generic_block>::registerInput(_in); generic_block>::tempStart(); } @@ -110,7 +111,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } @@ -127,11 +130,8 @@ namespace dsp { } int run() { - spdlog::warn("+++++++++++++ DEEMP READING"); count = _in->read(); - if (count < 0) { spdlog::warn("++++++++++ DEEMP EXIT"); return -1; } - - spdlog::warn("+++++++++++++ DEEMP PROC"); + if (count < 0) { return -1; } if (bypass) { if (out.aquire() < 0) { return -1; } @@ -149,8 +149,6 @@ namespace dsp { } lastOut = out.data[count - 1]; - spdlog::warn("+++++++++++++ DEEMP DONE"); - _in->flush(); out.write(count); return count; diff --git a/core/src/dsp/processing.h b/core/src/dsp/processing.h index f851a56e..b066c3bb 100644 --- a/core/src/dsp/processing.h +++ b/core/src/dsp/processing.h @@ -16,13 +16,16 @@ namespace dsp { _freq = freq; phase = lv_cmake(1.0f, 0.0f); phaseDelta = lv_cmake(std::cos((_freq / _sampleRate) * 2.0f * FL_M_PI), std::sin((_freq / _sampleRate) * 2.0f * FL_M_PI)); + generic_block::registerInput(_in); generic_block::registerOutput(&out); } void setInputSize(stream* in) { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); + generic_block::unregisterInput(_in); _in = in; + generic_block::registerInput(_in); generic_block::tempStart(); } diff --git a/core/src/dsp/resampling.h b/core/src/dsp/resampling.h index affd3d86..338ea82e 100644 --- a/core/src/dsp/resampling.h +++ b/core/src/dsp/resampling.h @@ -1,8 +1,7 @@ #pragma once #include #include - -#include +#include namespace dsp { template @@ -46,7 +45,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block>::ctrlMtx); generic_block>::tempStop(); + generic_block>::unregisterInput(_in); _in = in; + generic_block>::registerInput(_in); generic_block>::tempStart(); } @@ -96,9 +97,10 @@ namespace dsp { } int run() { - if constexpr (std::is_same_v) { spdlog::warn("======= RESAMP WAITING ========"); } + if constexpr (std::is_same_v) { spdlog::warn("--------- RESAMP START --------"); } count = _in->read(); if (count < 0) { + if constexpr (std::is_same_v) { spdlog::warn("--------- RESAMP STOP --------"); } return -1; } @@ -107,8 +109,6 @@ namespace dsp { memcpy(bufStart, _in->data, count * sizeof(T)); _in->flush(); - if constexpr (std::is_same_v) { spdlog::warn("======= RESAMP GOT DATA ========"); } - // Write to output if (out.aquire() < 0) { return -1; @@ -136,8 +136,6 @@ namespace dsp { } out.write(count); - if constexpr (std::is_same_v) { spdlog::warn("======= RESAMP WRITTEN ========"); } - memmove(buffer, &buffer[count], tapCount * sizeof(T)); return count; diff --git a/core/src/dsp/routing.h b/core/src/dsp/routing.h index d00fb6ba..64302ac5 100644 --- a/core/src/dsp/routing.h +++ b/core/src/dsp/routing.h @@ -80,7 +80,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block>::ctrlMtx); generic_block>::tempStop(); + generic_block>::unregisterInput(_in); _in = in; + generic_block>::registerInput(_in); generic_block>::tempStart(); } diff --git a/core/src/dsp/sink.h b/core/src/dsp/sink.h index 1d362721..868b2cec 100644 --- a/core/src/dsp/sink.h +++ b/core/src/dsp/sink.h @@ -22,7 +22,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block>::ctrlMtx); generic_block>::tempStop(); + generic_block>::unregisterInput(_in); _in = in; + generic_block>::registerInput(_in); generic_block>::tempStart(); } @@ -67,7 +69,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block>::ctrlMtx); generic_block>::tempStop(); + generic_block>::unregisterInput(_in); _in = in; + generic_block>::registerInput(_in); generic_block>::tempStart(); } @@ -114,7 +118,9 @@ namespace dsp { void setInput(stream* in) { std::lock_guard lck(generic_block>::ctrlMtx); generic_block>::tempStop(); + generic_block>::unregisterInput(_in); _in = in; + generic_block>::registerInput(_in); generic_block>::tempStart(); } diff --git a/core/src/dsp/stream.h b/core/src/dsp/stream.h index 71cf5656..96fae88f 100644 --- a/core/src/dsp/stream.h +++ b/core/src/dsp/stream.h @@ -39,7 +39,6 @@ namespace dsp { std::lock_guard lck(sigMtx); contentSize = size; dataReady = true; - lck.~lock_guard(); } cv.notify_one(); } @@ -56,7 +55,6 @@ namespace dsp { { std::lock_guard lck(sigMtx); dataReady = false; - lck.~lock_guard(); } cv.notify_one(); } @@ -65,7 +63,6 @@ namespace dsp { { std::lock_guard lck(sigMtx); readerStop = true; - lck.~lock_guard(); } cv.notify_one(); } @@ -78,7 +75,6 @@ namespace dsp { { std::lock_guard lck(sigMtx); writerStop = true; - lck.~lock_guard(); } cv.notify_one(); } diff --git a/radio/src/path.cpp b/radio/src/path.cpp index 86e3ec79..c2a982ae 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -46,13 +46,11 @@ void SigPath::init(std::string vfoName, uint64_t sampleRate, int blockSize) { ssbDemod.init(vfo->output, 6000, 3000, dsp::SSBDemod::MODE_USB); audioWin.init(24000, 24000, 200000); - audioResamp.init(&DUMMY_STREAM, &audioWin, 200000, 48000); + audioResamp.init(&demod.out, &audioWin, 200000, 48000); audioWin.setSampleRate(audioResamp.getInterpolation() * 200000); audioResamp.updateWindow(&audioWin); deemp.init(&audioResamp.out, 48000, 50e-6); - - ns.init(&demod.out); outputSampleRate = audio::registerMonoStream(&deemp.out, vfoName, vfoName, sampleRateChangeHandler, this); @@ -287,7 +285,6 @@ void SigPath::setBandwidth(float bandWidth) { void SigPath::start() { demod.start(); audioResamp.start(); - //deemp.start(); - ns.start(); + deemp.start(); audio::startStream(vfoName); } \ No newline at end of file diff --git a/radio/src/path.h b/radio/src/path.h index d6bb96f6..21e6a257 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -63,10 +63,6 @@ private: dsp::filter_window::BlackmanWindow audioWin; dsp::PolyphaseResampler audioResamp; - // Debug - dsp::NullSink ns; - dsp::stream DUMMY_STREAM; - std::string vfoName; float sampleRate; From cee6af1e14c0b260413956f1b3ef35ef11c119b1 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 2 Nov 2020 21:13:28 +0100 Subject: [PATCH 087/127] fixing audio bug --- core/src/dsp/buffer.h | 2 +- core/src/dsp/demodulator.h | 2 + core/src/dsp/filter.h | 7 ++- core/src/dsp/processing.h | 2 + core/src/dsp/resampling.h | 46 ++++++++------ core/src/dsp/routing.h | 1 + core/src/dsp/sink.h | 1 + core/src/io/audio.h | 57 +++--------------- radio/src/path.cpp | 1 + radio/src/path.h | 2 + root_dev/config.json | 4 +- .../recordings/audio_19-16-25_02-11-2020.wav | Bin 0 -> 340012 bytes .../recordings/audio_20-21-27_02-11-2020.wav | Bin 0 -> 4825132 bytes .../recordings/audio_20-21-55_02-11-2020.wav | Bin 0 -> 5771308 bytes .../baseband_20-21-19_02-11-2020.wav | Bin 0 -> 4505644 bytes 15 files changed, 50 insertions(+), 75 deletions(-) create mode 100644 root_dev/recordings/audio_19-16-25_02-11-2020.wav create mode 100644 root_dev/recordings/audio_20-21-27_02-11-2020.wav create mode 100644 root_dev/recordings/audio_20-21-55_02-11-2020.wav create mode 100644 root_dev/recordings/baseband_20-21-19_02-11-2020.wav diff --git a/core/src/dsp/buffer.h b/core/src/dsp/buffer.h index eb376778..c8c5b1a7 100644 --- a/core/src/dsp/buffer.h +++ b/core/src/dsp/buffer.h @@ -1,7 +1,7 @@ #pragma once #include -#define RING_BUF_SZ +#define RING_BUF_SZ 1000000 namespace dsp { template diff --git a/core/src/dsp/demodulator.h b/core/src/dsp/demodulator.h index 5bc8361b..c2914a95 100644 --- a/core/src/dsp/demodulator.h +++ b/core/src/dsp/demodulator.h @@ -1,6 +1,8 @@ #pragma once #include +#include + #define FAST_ATAN2_COEF1 FL_M_PI / 4.0f #define FAST_ATAN2_COEF2 3.0f * FAST_ATAN2_COEF1 diff --git a/core/src/dsp/filter.h b/core/src/dsp/filter.h index f9077d5b..e530b295 100644 --- a/core/src/dsp/filter.h +++ b/core/src/dsp/filter.h @@ -2,6 +2,8 @@ #include #include +#include + namespace dsp { template @@ -133,8 +135,9 @@ namespace dsp { count = _in->read(); if (count < 0) { return -1; } - if (bypass) { - if (out.aquire() < 0) { return -1; } + if (bypass || true) { + if (out.aquire() < 0) { return -1; } + memcpy(out.data, _in->data, count * sizeof(float)); _in->flush(); out.write(count); } diff --git a/core/src/dsp/processing.h b/core/src/dsp/processing.h index b066c3bb..2574ddbf 100644 --- a/core/src/dsp/processing.h +++ b/core/src/dsp/processing.h @@ -1,6 +1,8 @@ #pragma once #include +#include + namespace dsp { class FrequencyXlator : public generic_block { public: diff --git a/core/src/dsp/resampling.h b/core/src/dsp/resampling.h index 338ea82e..02da3c26 100644 --- a/core/src/dsp/resampling.h +++ b/core/src/dsp/resampling.h @@ -23,19 +23,19 @@ namespace dsp { _inSampleRate = inSampleRate; _outSampleRate = outSampleRate; + int _gcd = std::gcd((int)_inSampleRate, (int)_outSampleRate); + _interp = _outSampleRate / _gcd; + _decim = _inSampleRate / _gcd; + tapCount = _window->getTapCount(); taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); _window->createTaps(taps, tapCount); for (int i = 0; i < tapCount / 2; i++) { float tap = taps[tapCount - i - 1]; - taps[tapCount - i - 1] = taps[i]; - taps[i] = tap; + taps[tapCount - i - 1] = taps[i] * (float)_interp; + taps[i] = tap * (float)_interp; } - int _gcd = std::gcd((int)_inSampleRate, (int)_outSampleRate); - _interp = _outSampleRate / _gcd; - _decim = _inSampleRate / _gcd; - buffer = (T*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(T) * 2, volk_get_alignment()); bufStart = &buffer[tapCount]; generic_block>::registerInput(_in); @@ -80,6 +80,8 @@ namespace dsp { } void updateWindow(dsp::filter_window::generic_window* window) { + std::lock_guard lck(generic_block>::ctrlMtx); + generic_block>::tempStop(); _window = window; volk_free(taps); tapCount = window->getTapCount(); @@ -87,9 +89,10 @@ namespace dsp { window->createTaps(taps, tapCount); for (int i = 0; i < tapCount / 2; i++) { float tap = taps[tapCount - i - 1]; - taps[tapCount - i - 1] = taps[i]; - taps[i] = tap; + taps[tapCount - i - 1] = taps[i] * (float)_interp; + taps[i] = tap * (float)_interp; } + generic_block>::tempStart(); } int calcOutSize(int in) { @@ -97,10 +100,8 @@ namespace dsp { } int run() { - if constexpr (std::is_same_v) { spdlog::warn("--------- RESAMP START --------"); } count = _in->read(); if (count < 0) { - if constexpr (std::is_same_v) { spdlog::warn("--------- RESAMP STOP --------"); } return -1; } @@ -114,16 +115,21 @@ namespace dsp { return -1; } int outIndex = 0; - if constexpr (std::is_same_v) { - for (int i = 0; outIndex < outCount; i += _decim) { - out.data[outIndex] = 0; - for (int j = i % _interp; j < tapCount; j += _interp) { - out.data[outIndex] += buffer[((i - j) / _interp) + tapCount] * taps[j]; - } - outIndex++; - } - } + // if constexpr (std::is_same_v) { + // // for (int i = 0; outIndex < outCount; i += _decim) { + // // out.data[outIndex] = 0; + // // for (int j = i % _interp; j < tapCount; j += _interp) { + // // out.data[outIndex] += buffer[((i - j) / _interp) + tapCount] * taps[j]; + // // } + // // outIndex++; + // // } + // for (int i = 0; i < outCount; i++) { + // out.data[i] = 1.0f; + // } + // } if constexpr (std::is_same_v) { + static_assert(std::is_same_v); + spdlog::warn("{0}", outCount); for (int i = 0; outIndex < outCount; i += _decim) { out.data[outIndex].i = 0; out.data[outIndex].q = 0; @@ -134,7 +140,7 @@ namespace dsp { outIndex++; } } - out.write(count); + out.write(outCount); memmove(buffer, &buffer[count], tapCount * sizeof(T)); diff --git a/core/src/dsp/routing.h b/core/src/dsp/routing.h index 64302ac5..42e0f616 100644 --- a/core/src/dsp/routing.h +++ b/core/src/dsp/routing.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include namespace dsp { template diff --git a/core/src/dsp/sink.h b/core/src/dsp/sink.h index 868b2cec..c7e0ac44 100644 --- a/core/src/dsp/sink.h +++ b/core/src/dsp/sink.h @@ -63,6 +63,7 @@ namespace dsp { void init(stream* in) { _in = in; + data.init(480); // TODO: Use an argument generic_block>::registerInput(_in); } diff --git a/core/src/io/audio.h b/core/src/io/audio.h index e6fd495a..09be58ad 100644 --- a/core/src/io/audio.h +++ b/core/src/io/audio.h @@ -28,62 +28,17 @@ namespace io { } - AudioSink(int bufferSize) { - _bufferSize = bufferSize; - monoBuffer = new float[_bufferSize]; - stereoBuffer = new dsp::stereo_t[_bufferSize]; - _volume = 1.0f; - Pa_Initialize(); - - devTxtList = ""; - int devCount = Pa_GetDeviceCount(); - devIndex = Pa_GetDefaultOutputDevice(); - const PaDeviceInfo *deviceInfo; - PaStreamParameters outputParams; - outputParams.sampleFormat = paFloat32; - outputParams.hostApiSpecificStreamInfo = NULL; - for(int i = 0; i < devCount; i++) { - deviceInfo = Pa_GetDeviceInfo(i); - if (deviceInfo->maxOutputChannels < 1) { - continue; - } - AudioDevice_t dev; - dev.name = deviceInfo->name; - dev.index = i; - dev.channels = std::min(deviceInfo->maxOutputChannels, 2); - dev.sampleRates.clear(); - dev.txtSampleRates = ""; - for (int j = 0; j < 6; j++) { - outputParams.channelCount = dev.channels; - outputParams.device = dev.index; - outputParams.suggestedLatency = deviceInfo->defaultLowOutputLatency; - PaError err = Pa_IsFormatSupported(NULL, &outputParams, POSSIBLE_SAMP_RATE[j]); - if (err != paFormatIsSupported) { - continue; - } - dev.sampleRates.push_back(POSSIBLE_SAMP_RATE[j]); - dev.txtSampleRates += std::to_string((int)POSSIBLE_SAMP_RATE[j]); - dev.txtSampleRates += '\0'; - } - if (dev.sampleRates.size() == 0) { - continue; - } - if (i == devIndex) { - devListIndex = devices.size(); - defaultDev = devListIndex; - } - devices.push_back(dev); - deviceNames.push_back(deviceInfo->name); - devTxtList += deviceInfo->name; - devTxtList += '\0'; - } - } + AudioSink(int bufferSize) { init(bufferSize); } void init(int bufferSize) { _bufferSize = bufferSize; monoBuffer = new float[_bufferSize]; stereoBuffer = new dsp::stereo_t[_bufferSize]; _volume = 1.0f; + + monoSink.init(&monoDummy); + stereoSink.init(&stereoDummy); + Pa_Initialize(); devTxtList = ""; @@ -343,6 +298,8 @@ namespace io { int defaultDev; double _sampleRate; int _bufferSize; + dsp::stream monoDummy; + dsp::stream stereoDummy; dsp::RingBufferSink monoSink; dsp::RingBufferSink stereoSink; float* monoBuffer; diff --git a/radio/src/path.cpp b/radio/src/path.cpp index c2a982ae..2bcd298b 100644 --- a/radio/src/path.cpp +++ b/radio/src/path.cpp @@ -286,5 +286,6 @@ void SigPath::start() { demod.start(); audioResamp.start(); deemp.start(); + //ns.start(); audio::startStream(vfoName); } \ No newline at end of file diff --git a/radio/src/path.h b/radio/src/path.h index 21e6a257..5b21c098 100644 --- a/radio/src/path.h +++ b/radio/src/path.h @@ -63,6 +63,8 @@ private: dsp::filter_window::BlackmanWindow audioWin; dsp::PolyphaseResampler audioResamp; + dsp::NullSink ns; + std::string vfoName; float sampleRate; diff --git a/root_dev/config.json b/root_dev/config.json index 703ab607..8f687bdc 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -3,7 +3,7 @@ "Radio": { "device": "default", "sampleRate": 48000.0, - "volume": 0.0 + "volume": 1.0 }, "Radio 1": { "device": "Speakers (Realtek High Definition Audio)", @@ -18,7 +18,7 @@ }, "bandPlan": "General", "bandPlanEnabled": true, - "fftHeight": 298, + "fftHeight": 296, "frequency": 99000000, "max": 0.0, "maximized": false, diff --git a/root_dev/recordings/audio_19-16-25_02-11-2020.wav b/root_dev/recordings/audio_19-16-25_02-11-2020.wav new file mode 100644 index 0000000000000000000000000000000000000000..578536fb9aa2c5680f0065b97d810a9e9bc1dbd3 GIT binary patch literal 340012 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 T5GxQX5GxQX5G(L|tib;O${$*~ literal 0 HcmV?d00001 diff --git a/root_dev/recordings/audio_20-21-27_02-11-2020.wav b/root_dev/recordings/audio_20-21-27_02-11-2020.wav new file mode 100644 index 0000000000000000000000000000000000000000..74d9a1c1a7a0a9ba319c3f831d29ad0f3b21c9f9 GIT binary patch literal 4825132 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 z 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

    V7~U;I*d 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%0D*X3KaJS%4{!som!E(3US#SM9>GNwIn#+av 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

    ?s`vBa#tG8Cxdr1z@(8M^b3#r}=5V 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 Sg5-i~HyGBkN! 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­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অ^c2V|Kt^Fb zSx-hH637UIui;2H(k&s7LB|CbFR_={NHLO}`df+D`RjZU@t%55-68LgsM%4U&tNmy zGPz8?ObjO$5KoJz1!nh{|Gzi#U1ZI9bB?==MUSN+zJZNcaV46^NE3B~ zx?g7GkrKZ9Idn~Z8=lUG_(z^bkd>c@uq%LcL}?Mx2A7RmkG)Q6`~5! zZRR!upTSB5@&J(~_$Ygn!RO*GahDjXhN@P)6MY?p=9p= zH+1v70_y%ocOiTs4cptR1@md0Ado)|GXe?PmJ| zWelQ^0Pj1@)AOi2u?Ih%2R?rtWCwXpom01^Zc7CO`ViT@>>g_C1H^gnyjNG%jdKS3 zr23?u@Slit`3}m15_y8yEhs`DQ?HxoCNc@Kt`{2#2>8BXCJ$rya*ifIzbBAwSVPy)!=ho)qeKp!LyspmnN6lhR3w^Z zW*O}9e`r6nlilRlD-m9qxSKdi;I85dfn0!00$v!JFi9@pf5x}NBnl)7Bnl)7 zBnl)7Bnl)7{9moW6fs5IP&ZUPQBPds*Wx<>WW`UH)8&3*Inh-Ryer3E{NwC#Hj99_ zJiO_r5XhvvLewW`dEC0ApMW~N8G(AeiD)7!tIDd6*T=h)?({Ji|4aTQmy6}1J%K!c zX#~6o#&~1AlEli?%G5RgntwzbA;-Wa0(p14MMmC_!ra* zs)gUe?~&?}I!al8@X?>^&Gm3cfXC_Nb@I;0Gx8*5@ZFbjUq%*!#`!7q1|E<_luuC}<<_`&{QFA(ShOeYq)h3*79!M<=`xPe3y+r)-Z7{S}19;?UT>0glO zXgV77ab7jA8r-;}cHL=qnnT3iU~h0*pVn!UHcT^J&((7sYzNyf>=$-TcTJxPP6ee2 zL)5S}Y+>Tp=+~%&>)?8_o~*0sYOp(S2T{tDGEH<7{S-09Ofl_jJBwZp?)Pg)wWIN7 zym>5oEV_sII`}$R9j*>HXKv2iL(ECfNgoIf1V4p8#rp#)Qqi<%G@ z5aS5s1tJ4ra4E6WCKn#@`?|h`l6U5}5VYXZ6{g{7yce@&ZxVj1gnRO?fk(>rWDs z#24}liCg*tvVa^%tPyKOcgoU3Rv%{VJIRM{rkok??Kh-Md;B?O`me}WXggrB>__bN z_QqZSC)5cAKY^Swr+lBh{!V%)y=*EQUC}R9EBqDygw%x8aDTWDKfy257pkIH(ZlY* zR5exIB5xsgy%Dmms4L*h*GY9!9m!j-li$f-mRgqDLhSN)`LWj@?c1N`r}=dPwcA+& zb9vPI@Xwn;z%$QRzWR&(#qtyICH&p}?uvN~2aopJNWIGwW46u{V9CJsbqY-Y>e{esz&&}uNC!zxJ zf_uTuGxN+vd(qY;&xf6EC%N+Fh(G_RJ!)|)FjNoKTisR%55g7Uif~$bS~?8Epc>(a ze%Qb^po+eoouDV^(Pp$E3q*_Efqi8P%$Ybx4`w!AK{ z>0!b?rcdm{hnf4lU|#S{^i1?_`rUMS;%ay`921R+?j~P=o5a{?Y;-<6AG*NB^Z(3r zX1ZO_F8G7km)@8DAow6ypI)EtAM_8}6BN}L4vYpyB~3|lExZ<9iY`T;>QD8HME9tB z)G%xq_9uQM8kh!gp5;^KDbt8}g&1u|TRQ3BXmp_Og1o;Y?ubL?A8PxOL_q>O56PYX zzxMlE^6C-=5(N?k5(N?k5(N?k5(N?k5(WOd0@(k5MZKbM`+lFh&y6u-%sk3~|5SV` zaPyvrfZtvV)`HCvvqWuHn_(9Ky#V<3^&#MY|Eu~{?U8%r>jdic{<6Q^r}o7&f85Qt z@!EJ#`cL|Ju4%+Ec}!09CVKCvcNFf|Gl?AJ=U;%puisX0t0CSHue>U+;FWho9Z_e! zv))91qCdf#;1x?1OI6OOoN-TDxIbfSbR zp(@MD@=gCuzgI@DjO;|wRM8Y(8+skMA9!3nuHYx|h4OE|tk@S3n2s zAmn5D7;gVd@{+t8>&AMCUIKgif0)G6P*=Cl-WpN)8$LukigDB>TIe7D-_I}PhXC5Hdvb7BJ z|7YE^t|@QI-(+vHDQ=2eXcyWM(TE89=yM6&>BDQUrmbn$v30DhEo*zb-tIIz&9=Mk z4*vD1bDyHTM%?M&Y45bJvDa7^*TwmfALR@31&En~6UvBhjL|Lq0?yBqyjKb&{4q6GRscM^%u|9^ikN&YWUAWNSTnYaFXPCD8$z^XEg5E`omeM! zoq+FqTLRvHUY%P2gu`prkE-6(0%?L-W?w5<3VbW+Trbp_y6mVx4z|;qxSDi zTqmyq{2kl|%#yR@v*K9+Uq1NZ{UU#nC)G(cSI(8Sz1m(yzoNfO?NWpMK~%-R>CYlA z6IoSO)sd*-)$leDy<{)BL2MA^WqFxRWD|=B><_e-t>rp@oj*QfJjVPPEmJL16j7&I z%9iphpdP~je}LbT*hkz#WLMc0=Ji!X6>(GDRH&J=@oap&8m~SRp9$my!uKCNljUl; zT133;z3es1(kx3+zo>svTomZDbQYb(4!J|d_xiGj#4Z75_3-0c>()Bl6dV$V1bpMM zi!syN0j0u~M(pSHde{R-IMX4r_-$1V7MJ-v#gr+7D7m zLEoTeR1>YF=%@5g=~@JK02ZVdq(^6t&g?}rPd87m3)TgAJ@(Y$Mz_)ES7=}~Rs35FdNKWZf8N%%wYZ;H!`JXL?u={0 z+OX^d?il{xd;aJPV9!6<_5as?ze`?SqClcRqClcRqClcRqClcRqQKu-fdlS<%PO)8 z+%MzS8Cmbo+vhEO=7#d2u^(Ln*T5kw{vb{io zoL7uEPJA!Fmmd(=^?z7AEZ_rx{ruhpeEl%P$Gp8JIsap*+S%*uW%aZAon$9DkoZP@ zquLR;B{-}O)5d=`b;LX3b@V&>$JKFl&_C#RCcYrdGPlaDHWSUg=3Wh1Lsk}* z>2m+1c#prwZi z264N0ySH6#rwfFf5qA4XKtm2~B>ayXYbXV2M9Zj-}4 z!3ljr7l;Z(n6LM>eeEza%#i(o9!4yQmPEyEaSQ)H>>RYxt@NUBQTTK8b42!s;qG8} z@G*hhz1`{E>GEOuuzFOTocD@En9W}yO6U@L0=W&|Zf-ZH^eO#W@LBM5_;e^ENojub zqMw4F0{HxW6MhqJi?&76%rsL^*VE_CdDBUE(p`w&M7^k9G*i#iJE9#?31Ss7$ILN1 z?M{pP2Z~X&C(H?hj6(P+q7Q~$h@E1mz|O??L_4A>0pH6K1nvNGCV78<=eN-0YfltN z6i5_E6i5_E6i5_E6i5{KPon_tnyZScVu%~!*4njpyTi7G3~3e^1{5Oav@ z-gOWDcq7CJu|lqpv&r|rimIY;hYw%8FNu<(q<{|}UfXl>IdUVME}vU>n%I1YW~jVhe$KzL9Jsuc#~PB7uHG zZBbhkkwqkW2iuADYP~w+o$+2FCa4Jt9)~N%N>NQ!Q>WM|mfPia$iKtm<2jLWfIh%5 zHHl*bM}=JYGv3OB-zuYHbkmP1a1I!@|}Da(Ns2-`@DU0 z0WjV>tIn$R-gJ|4IFy z)c=3)x25E(PZUTLNEApENEApENEApENEApE_zzG3zJJK=!z}k{_q4mNuj_0?SyR@) zH?A;&nP@g*DACzYc=x>lZ@{tVkA45AGoH>6DUo{Bd)32!J!agihzb4#zpkt+ zcc>jI<)u8_$G7p@_$9m&-hJeS-$V6KA^zlla$ooYJ_ER`$Bw~1q8@n~ zddiERvzO|nj*H{*=fF3=zvwSks1@<-exw?yzLZ}|WERdOPRJ9IA`-lF1Tq4!e{YCh zyce$^E662$3IBop!0@^e8u+|;USJmjSpb+VPy1Z@cPNRXkhh%e&s zl!K?>3CaUNCLeMXN3+okxB7t%>`TPk?rqn_c8TxqUnVd5BCd$T%|;E%pj&Jf8%rNc z%o1}^U)0|dxUauW-xmArWA43+fY)Ajlil1F-A0=LC8O%5x_K>nEx!N%PJgGLv`^X@ zZbqDQk6VxaM5Ulo?D_w=eq6T-TZQkMcg+|##=$>e3T6A1)8+I#;X7d=T}XdzzqS<3 zsJ{%q3=c<#qdG*IXh&ovN>TRS9RwcdO8QE=Mo=R-nm(Ft8a0j1r_ZOmhF!xy31kPp zVqc-;!+tiJV)++YI~)Zbmnwa<-hsz5(_OZnwAF8ANeb zoaHjP3_J+lCk_$V7kJISW^r49TM76i>?O9aE!5HK#O~$y@vb-#xLZA<@fGuF~ zm`7$@EmzBtoqfC)fc^iI?xY(|G-8ctV|^uS#anSI_r-hynR|;;i&D1}%e-aYLVuxO zf_Pdzt(v8prEr)3jC@9(SLan}qJ`hWKco(+yk1`K8nIn%S6_Hvc-XD~M0_Fw9&qgB zzs=v~8`(yNtN`2-q`kB^%pc|-RYw(k`EU#HM8*>tzk9#OLF-e+RPhLrNg$)(1hJm@ zlzkfS*!SQ)IQjtXWIKub0z4n`4{sqJ;1BTjqP=KDOd;0FwX&Eh7WWwrdxt&b6rxWt zRZf*}us7HmyT&#rdbl3$TmCJ7pS{n@5xseD{uTR*o#*FyJ+EHuC4d}4cr4~3kcrSy zbQJ#}s>-So8GBiH7Jkqkv>|bn9c9?bK>gp1eCb9Jf0{qdDgw1GcImO}k8FTD%pJ5H z|Eihlrn)V9i-t$Qy~IwvQ|~5lw~xE{U&CL+k_7hSv8TV=>^7*;pCqvR-aI1c=HsL} zX|UTdl8ubB?e^F`ww9@7R;E{`PXs4|`ntaUnt=B|_VG9AO>s8g=5TXZo!A%ci*SE1 zJ(^D4hQFd}x|+Ttyd%6!To0}XGsBr-fpmfNZN#k1S($ro?zxE%iu22ae_-x(?sWaI zewZuD6}8kY^+2LrR4(csbPuM6Q^Q_CFGTVM?bGek6~YSPEIZ4hSCWgkPQHlUOt;uC zps{UiTN21-yhGoicZa*f`ceJpW_U9^YK|IwkH)&Ot{^YSpCT%WN@B1aEZ-CFiR?T( z&ujDAx7=H94RM+>9q~O{N1*3}dl{eku&kh8$;9vPKlI%xdGJJmM1e$sM1e$sM1e$s zM1e$sM1lXE3glEd)vd%@u~yXLwfJ~9-eKN}oAWZFjJW2mxp90PU8w&a*U>pePJ#LS z1L6U4_@622%ldMPKgDmJrFoWO8O1Vi-+q7U{?t0PPF*9eW?an};f?T$tKzDQ*Co!= zo9EB-aVPMC_k#B@F@mn)e^5Ut^a5TY7RrV3ufGysi8uHg{8RO*D(98+hNp(7*7|Gx zZ`HTzUh@1y58!6%W@?YO$2%sDQOZCs@i?)ExXQ2c+{6>?3AWGeb1iraK9NmillUZ# z$6d;o^6T=tTp$*RoBSrvLo^Xh#Bp|qaAsIhLWpCN=1raG(6Fki>~ z{Rv`yv_8VEKW_R{CS_&@GbyF7K+u8UArD!^VqgBWPV0hE!3ZBtJB>O1a6MeFj#fv= z_rvqxaY{v{qWR(caBZ|Us$!~`Mz&Gxd3eLzFjMpt{SIXu_ILf=QoGbwZ$imqB?=@8Bnl)7Bnl)7Bnl)7Bnl)7{8JP-B9BPy!S9y4<@fx1 zj_f&P%FlE&T`f^dpmu(SKSQp3Kk?NB0@zSnW7i(L(eVHK$ot6q+5g!;Ks5FmdpQZr z)sb~SG-GH+Nw1`LPM(vGd5?L>!u!DcAodB!?dA4L6CcZuJNQNXBHkz9q2Jr}c8?RteqSb*#d(1Ty@Or_0=xUwST%MJ zzlZOoEciF<8#af@VHyzSU3rH(8Gig}0(pI?;|KG>yp$*<2D8CzE>V~0Bsz&Eyb13@ z^c8&tKKCv57DGMVhcfjxv&{^z;exy%(HAJ?O1Xjr>e&=ear7rJv+m})IehMXq9=j< zfqX8X%VYD{Hl~dkXa`!<(HR81@UVaXTlib}vVJ-C=xd-G#J~TrdD!H)`E4blzN_!H z+O0MV%fj{$kGMx%3Ca?vpeyLr;p%X?UalLOh6X(d^cNZvAM20x7tt5wx|c6{gSf@r z;+C0Z@f;re`S9cqh~5P516HM1rJE4jf^7kA5pajFDqIyp%Nya1a1609S{S{eU(pqb zLD8V7Vo)(a9squwCCU;V3=f7YDMxUe8D|=>2JBV$YJ4L>=O6|@uMhKw`F-L(v5`PO zAcz7=Krqp(L@`^;E@#VGZCBg9&E97Hct4(IY1UXYj(bM~*+5p>mbUM@cU@oBmlYC) zXe;2o_-AA#U&(6{=!?uEULfid6^Y~?;Ggn#l{`tJK%zjRK%zjRK%zjRK%zjRK%&6^ z4+W%>Dl1V+mXdqp675kFEPAMX|Uima#VsbO+h zoT-PbzE6mw{!t%3{kY?=!|U)*#iwFxYHJEN{@CHioqj=CPzGKQ=L9tJ8hIZQ%jI&} z*X!#&=RfDq@Md`ZReyy${oVhCz4MIHs?4_a8}|OH$T^7QoP#8loHIy}j6^|l6ey4^ zAPPth3W8+GIY)`2L_so2P9mTZ>f3L)YwqqoKklD%Z};gwea3m~8N&cn)&5o$HO5+N zt~teb;wW*6Xy>&HGXmShw26U#V9}VOG23Fd#i|4<0cH>1%5P;;(G({Or0}03Ak4=5 zL;wG~_+4!CxB1uQbqU{r%id+L9o^tR^`3fL#1=7vkKjJ@L;nNxymQzbmP(`&WxO)p zM1P`>JAlDruz(LdcH^kcDRat{C!j$eVu#qL`l((_G&YURAUnwJ;d?md5Xc0`$qAN| zy=ULExSPOzeN|SKeIPy%+w3;Goo#0+O-j?)HnvyH74xh9RYQ{i4F>xEWGoqLWE


    ;=2Vukn2ZGUsmC8|2#ff}H5Tv)zfEY$rob-V`-O%_UX@D+2W2hl9hxyTtkE`Dp0x zNO^aM)#32>)9SQ(9&w5&M(}_KrF1EcSpshP_Y(ubyGduxp&vy^)j_A zoFhz*PL3{63sh6qlr=ZaNewaCq#@9+qj!gXA3g#5UhR7|m58UeBGDqzv_ab7{pkDA zI;xJE9n22mR9vV_K<*zt#_(WxxWC79|3>T!_63CrB~i#0vN?E; zP{&c#tLmMSr=&8QI86gLI* z9Q)aRR)`nk_GNBpuxc9~t~_wsupR>WqBWQiajpjV_< zWVhTcoBPfE^O5tBS~0a^62>Ns?G))0p?JO6n~|H5Tto}6g%>a5WhJkYcU&HqxE&}> z^p*te{?V)Li0p`TjO`eEAi;qIMCWyf&}>jOcB8oAr9V?xlK#xBrXuB0Y_W zQ8B6>fxh`!^jY+xx~SkQFjLJ`Cxep#dj1haLX*%SgKu>F=y==^Ku=%O)HE;kOO1Q} z*NINVI0Bi1JJb$R?7vdAi0#4lAVoAq6n+Bef1$}gO6<{lbk-niP?`8C`crh68m2DC zUyiR!EQv0Ob|j7m$AgLS6XWj%_k#2UbOMuzmO)Fp2FMijj_(~m}c48O-?ZrA`5YdDvL*yee5tzq7LjwH_ zZU-<=a{d7St@B6>t@B6>t@B6>t@B75E1#(8O!vz3#v6e@L7Bd3+wn z?zV+(VOtZ$L@{xP-C=cP9SObsRbr}~D!=Am^HpM%ctPCaw|HZ(v3D|ZlDhmXk<3J8 z;uG%^FB7pnvOSW5XzDff;zhh@PH+OAgUAI~n&7h(lp z!QW(Wl0*K-Y$yK<*x!Fc83HRKDD}{4|rT$VM zT7{YZOdt3D+5Bw&kMc)3NDLD1c<*?~KEO^F`}rXRJobMl&}TzSFvFV>-Uyr!C&Uy! zg)SkQ(e-~UKWdNKs{~3;$`vFXLCq`@b9S#<$z;b}%2zN10IuyLspZa64bi)}qgP)Lt+b z%)11%_-D+SP;XGdR50+mLv8~!_0Z6_Q|*)tB)RFO30e^F!Cytb0r1Mh$CFAbc;=!1 z|CpE_Ob_zJ=ZVKX|Mx_H;-0>z7nlVGe*Wc&ZUk->lAGjagWf<2fbJT;fWxB0qI1+7 zm6c^>ZI5*>mLLE&iO=n}Og)cT)| zo{h#4c@bBEV!lUEBi`8G$fvR&%9Io6mQHLhku)DQVzv!A|Fwh7)RWo zdyLHlzE7ZYC`%L|G81VC=rmma{}22ya_{OY;40uM;40uM;40uM;40uM;41J>t-xS! zFm3c-desTsIior6PCR4}8JZ*9JpW0+697GMVwqS%2Mu4eyTntXq%0|;UewF#XZ70< zm?@y2O-f|&GI;2_pAqmG*eCXh^F(Q0nq1g>a{L-6+Cg~s4ka4XCus1?)-sz<9wr>d#y z)8NzKO7u!JFOf0G7;GXIL>ENKav~^T3Yapw48}vc1A*I%HF}NiVS1PqYK8hy{}}oq zqQ-amU5@$AZF}413~~mmh>wU{(Oc2EdamxsJ96kS$Ob};Cq{Xryp!^z#9y>Zwo;fU zaFU&5@O!+%uY_KY=r{B62e*dF8|cOx9)?x3b+cm z3b+cm3b+cm3b+cm3b+cm3jF_80KIWSnNVVf--q|%U04@(hMx(0+E4kXbj4qt{_hN5 z%9b+h*MA{e@m67fjoWDK(hv9t{3S6E(TPpJA4fPNWlkh$6fQKStojADM`_&4(_$uiw{yN4^uz7U13YHEAD^BZ!_I+JuQj zUIKey=I2&hgnOkP2o~eE1lMCJ|b=Vv>!}V~zow#5x z*wJRR!TaPU(ElS3@H&BPK=k~WKg8NtdsdxQ$O245lncrQG{T8adNt|Q?cjE>U+q_| zh~M;Y8lD10f+E5DM2%>TC}skOiGgOI`Gd%;Gl#i@%cIMqchz0>ar9%__!o*cify@5#;{7tAMM3tAMM3tAMM3tAMM3tAMM( zzo-Juz2;sDnL_sQ`gjv48*ii?Y4h^D9KL3ycqyKqSO~}yKdDG6$`H7XeoD|8zU;w! z@CV|7NE1mD8Q>4_e~bJUnG`cA<^lQFpAx4;UN3LB^M@vTGZ81_fw{mH zqEe(%B%`0v|IGW$i^{0HKqMoo5Sr`I!!LnIAmAxbhwc%o`c?g>k*ATVM1QZpm&8xv zBg-(kOfGS&4NW$B#Fcy{|6G19kr&vSJPzOqpG)SF(2S>*Y2_Q@4bho^hg^1+osBc& z3`#$g*h}}{?~^wi<`1Y%MIxTXGYA&Yd%`2(8=@d9$PUmfWR+QEy6UbPd-|*9s>v(z zieuif&|7f}+Y;{e(M!V{0PiOHoF}_{{F-CF#REcnE-x2r^#s++JzQ62Fw8lo5A6o|42Pjk0m-2 zxZ8(!;SA!aI;x;Y_{e-jj{YgkYsBmNb&c1H&$Z9&GuP}jo0D!M)~Gcq2T?Dm7vSUI zMqq#*p!=DA1~~wjFPsU^1kfg^Km{pPO0^-nAxi7=R~_R!#(LT}sLH_{# zKC=AaP1r~^QqV`>cEMAgiV*J*m<`}A0MCW2gSBR@IjK+Tiv)V@TEu8O+M?z?O;7VW z0WW|IGK0kIl6F$01Q1zwT)h+@1LNB+Yv`WL;G zSVG`y1APH*0_MuOvIFlxYM5300=qyCk#oY_g*vPbD@o)cG7u>V=t2?@&j0UU^h3;j z8dm{V0apQ60apQ60apQ60apQ6f&Zrpz$bl}7$zXB&dRfLWT|E1nRpx4hJ9_n4l~kl z7ma;4cI(gpG$4)>Q{)thT)pD5xU3ne8G(;rY)ov-0^&Jk|6LRpMPaY7cTgM*_wZZ2 ztzl-skK#wsoA>5F5y!pbuK#!azw7`1pZ>PGKjbRlD&Q*MD&Q*MD&Q*MD&Q*MD&Q*c z_g4VD_%gdJ%#z2Qc{NszVdr0#=xh60=$fmFssj7y8{!73px+kAT!-)458{XLMjyTa z$n=XNPDM^d=EuyB$sfrd=}(*^7J3W4b&++UH{fb-wU@=u5^DC5AMmC3rH72a%6?`4 z5BY~|;5YCuco#hQ19oDa7_`?@*;EGI{%`Cz_KZK{$Yek5o%ZfW?njCc3%mv1$NtCu zuku$}->dJHk!9pXevw13kb@}imG_cFl0=XPw@GXgj|t?&rIBf5PtjB0Uc82_K`wo* zY`l)w>+O1rd^qfS-;!@h%WSC6$F6rEf$TSU{=-WS-hJ3bZx)*c{QYs8p3!Es@BnNr zS_@~QV4n}_z-4`&lZon0AvqV52^?7_k$NfMO{&U zpgvGNiCe@JJH@upEhvpJt-h&l(yM){t_9bESRIQJXk(4-Yx)}G02b1PbP-d8UeV{~ zGa{u%F@TL9IUK7`ZW}3C;t;1WG0c-#{J~U!)6UYF_NThZd0Du1v zBKMxI0b3Zo`826-hZeVDl$YeMDEM`GO?f7UldsssYIE85I{F4aD$&ACPU1L$ce~6 zf1p2}=qY>38N?QEi}zBz6kWV7UPW0^UiGe03j07WEl-O!ji(SPM0Uzwg9ZWj_R!zY z2V`u0?QDnGl-9_9le!|wzC1HXb- z!GrhuyZl{VO;ii-3~*}zbM+pwheYN;GryUiHzse)lh`M*n-x7-n z=paywti)@?ATx*@@Y94je7Kb_zzcBfpHJ)4y1VHf?%8*-T?|@;L;Mh5B9;g|3wFuy z5je(a+@X=;S9j%gi!WY!wSn1Y{zhzb?nhh0oo} zvO6yV-7#mDrd!=84E}zkzLF%k%Oay?b$1oM8^p$#gP>i2Ay|K1lpYe9OLN z@c(f8GECcnwY`eS|c_V9hc>U~Wf_}G0m z7L7$o0yBWOBX39M$T_l(SI4uy_1AgpyxNi4ky?H&f4#Tfs~A%e@q00S{678~Z;f|V zTov&7tLxYG(}*;pf~+84@|S#tSRvrcw~1|Hf7m}Pvi#l=?}WcLm=ESjWm5SALDqvl zcI&lcYR63WC;PYMZHe22A(Y!U%gzdQ+&`EfLQlBqX1XaYOUrZOoY+IW&)#R*Y&MG? zd<!ty3z;lt08~QtF23m*~0{#DFq8)1&_P050PK!Qtp;;LAo5%DqUDN&r z_{McrT~%`ee)I5?ZzI}}YheNbzqsnAy6M0=uy&MNf0mtPih%awPxdD($P4o6cDltJ zW-a;LnRpm|7`+^SIUXMyd4#Eh)In)g zTH!TkAn<)xhsZ%-*3>)b9gxIcpCWeJowk;#Wpd~op=WcAujPte54#Hk%w5w7P3>!6oc8p-}--eR(2!su__YCqJ(E8W+r>& z9tllK0k42}+Mc#s3FKMe>xDVZ61If(CmIr%*C7AF>Hq&FKd#&-aTRbCa20SBa20SB za20SBa20SB_y;NgPe0tsUzgV<^wevJPwl66fmvV%>Vf)A^QJ+@J$l{=VuH9RFG~2- ze?g!>N1wb@E|tjs>+2DemlqHxh%B*LVo&-f{q6)z-ADQ({We}3ZxE4Erj$7ei2Sib zMg}2r1}BTj0{Q}I_u+%TmapZ=3EU>P$#3{KJh4a|-gOW2hIz>E8y6WDIZdqeR(dzc zp8(qI6ZV9C$Gk&V>E}%^0-F2mUUqM`oJ~%J#pO1(jkU3D>>un8)|dC?Z=L^JwF#mldAIZ_*jxwW6N}JNcm*7|PD_zVVG)swJ>@W6vBC$zq^6UKi zIDy;ta92;e|W|kHB~WH|`8O6A+j$L!o7Hx;#m8#KnuRy_&=RC4kO?@! zOfc)!dIise?z+3a8QcsiunG(}5Yq@~?N9U5{1YNh#EH(lGe1mOgeEXSW7Sx#BwvJt zL?WJuzapRsK>gk#Fc*Nfzmwm|$Gi*P5BUCXO>la{yk;xk$~()>vbX3hy2`Hdq&;bO zsa-0uPOL8wm?hzB)PneoSVJ5kkhgG)_?5uiU>*U#1$?dl_Vy3_b#?FRD&Q*M zD&Q*MD&Q*MD&Q*MD&Q*MD)4t#0JrG4b)GNhOWgRQXM*?KPx>eQF@apR7nGF;U%+0X zm%yGK{%;G2mjv#xm&@gHWMpI{&WrQfQQkeg|7sCwV$;N~j;xL>k69j*G&X5$wMex{ zMwwBz60HP0+OY3W;wAA8u|w>Icp(hc0gkSzZn%Qg|sm_z57tuP84{itZs{ zzF|FEFWiZL!@gm-FV8RXi@gNq08YMB4 z8rt^ZYPdSdPO{8AGk;EgeW)#ZYUnKj0{(&Uu!A4pOoGlZEP71%-r)@%ddSG@O|&L* z>)d*=S#03Rh+X#@0z2~*JO!`E>ao_QwfTlyD3Es zAh5&V9qbOK>Z!WF>aQ?wz&s(UqZ%`vo&-D#;74(UAK|r$nPR3$%9C>3Wu!DI&1gNE zln5nsUE*8&ZFnPbJpOomZB<+CBogUF8XEtR-bn8;f6NPtg5e#=J$ujMFA)3=;Q?4g z6bXO*v^Xu`3DH;eRnR4TM@%#m!#M)H8O9Uv3phkzPI8lYL_kO5`v1TCN0NI-R{>W6 zR{>W6R{>W6R{>W6R{>Xne^LeDdybwtM#jiNY!ExfkMZN?xG7Eit;fesz9WHs=x~3y zk6r0lHkMM+8`IVFJ@z^OoEP>B`|zA^;y3YAMN&m76A5Ay#BL{lzUeX3V@k%Bj6Lt4 z_bZFa;sU?G;hpy(`;gre_ryVa&~6YLL|3n?r-`D(GO)FQ<1hax${t-|y%0a(TE3hi)8w*nB--cO=kXVrP#V{`q3Qfd3yf zW~o`~usLkH z+OBrL*>651e$YSYSL&5op;v@Hg16W$1`P*#W%T1YSPq6;c%(c?nz zzf3RFSyUE<%zzz4DI&AUY|;j41N6mZby>YwEmrM`nnBH=2GKd%Ir_c&o~8mL6z%}t zFmITB1ibsDm7zBwJOj@WdxO0Jdhh{iK-m9(M&AB+^d0?#Jz+Ho?9dbN1RS1y@Pqu5 zn8Kzod>qU@HW9eXz<BCwYZ9%nq|S9><|E!Pf~{m)rGr zUE9{S-FP>ilZX|uVyD?@K2e{jEINz6Nnpl;?-l4r;FYPRPMvN z3b+cm3b+cm3b+cm3b+cm3b+dV!xeyc8T9b8#4Lf^=Q(1I7|lkr0d|1x%DU2jjb<%H zOLE+MDq6@E^25l75#;nW9x~U;Qnn!S<)8x}$H#H(koS?RerlOo;y$3TC@ioK#%=d?aa|0M z1LRF{ldcaYh#FoEZ=t`?9}*c7spwVorbMPh;5E>P{P&?Lz#bMi<l|8T??=a$4vtK|8JYylp;{Ypl`>o&S3JkV$9Km>>L3U`Eow zG%%G3==WO@+u3%8uN89ncB|d$aBw*IRsR}l1IFobVWwW+pl^V$7rYOy1Xt*3{|M5l zbZQlmglJ?MnK60{O-D9q=mvHZTyqW2!oIq%9!Wq;P&=p{w9#$C+X-m+p?AP*#*V*| zsbn_m%^JQ4LrK?w*+pjp&wyGrCYq|IDr=B6Xr)>yWLKakM_uu`vzRR8NI1`2XV+O9 zq91XPxM2x%!<@3GEao22^Isw^nv3Rp_I>DSFkX#UsfiAh?Fh{Vey@lvLWvnY>B?e` z-A3T%1eywH34SB~B%qH$CWIo~4ZuJAqsn~%R{>W6R{>W6R{>W6R{>W6R{>Xnf3O1B ze?t3?TkePEp}E8EgdXeIc|T&0*k=TM($W9pE_!%mcm%$E?~-SJOJX#EyZuf6CO@yt zD~}L|{6l`{Nax6i*b%Ws{35|RO<>=*TaaCNs7rYnr*ZuWgwU@g66bc&l>1sM9@cku&5A%S*YOuPYZ|J-P<_OT` zBag2JtHGeV|CWI60Dc0{+2ck7HwoyK(XV3f4h?%rRWj7_qu<8!*QCrp-07pwhQD3{ zlOWv9&onbb-2n0l3z~xD0`VqI1{#=e)wgO7aZz8??-KYrol$30bKBg`HnT(DKzx2Y zW1s`w-nO?ZiOeE%sI$l-vQU~tZ2|o}_U5=7z%$1a4T1(id0k$2QC$>n9H0?^mjJvG z)3UVeC-akmHzl+Rctf8K9|r8_p^-R2bP2iyxSJ@*3bKjBa5LOox7Y16^URF4qwONT zh{LyHBLUq2>Vla~2h+h^R+kn2TvOZB!rKtH`2xgRHUppY_i+z zwj+To1$?aU2s{rw1mJ6k&*A$2fAEKsdv{j>R{>W6R{>W6R{>W6R{>W6SAqZ13LLk` z?G1K=Aq#JMkRxRFNcPBg;yZDPU80TnDmH?T;OOb5 z`_ui(vNE~!ZIfU7U;8~GJtDPZYsbb$Vk6i5Yksy!wn#3SOTzo_rF+j6rz*t*|TX5HUm`GXWU~s9kMc`#<~!GuzD8 zV;);dz?-l9h=iQKG~two6p1mypvJXVj@n)o&GZ>hIbGomYH6;>jUKQNokX7wq%54FNwdg9C$9*xiuK*NCf7P1zH*dcZyF^2LQ;p5kuz}I%YULW57BMs&psQnBA8I$U^m;%-l6`kGEUgjW6R{>W6R{>W6R{>W6R{>Xn-n=)*{y!n* z?=7RuJ@opxXUAR{+VzXs3Ns92yqLJ6gODEC^c;bH|Kau^se%@xe zSw7;AIQHzwTZcDb1zv$K_7;07{gnO)F+x0(&m_s&*%SVRd%_cY*C-e!OfWSQfyzAj%Uzfmr0dnNJur3Tbfh;TwJIPP-hwNdPOOV(mrbLEPHaE}B zUn81&O+9?v1;i)p6ZTj?*2Bruzb*OJ4`;*KCcDYvwjZwv{(udLBy^Mi9_0Yw1^~~A z+ZW>__0UOmQpg~Lry{%tI-Abs z5mC;TvjYiuWbP(#+kra+WHCM=a8L4z_}l$I?nS`g-rP?fR{>W6R{>W6R{>W6R{>W6 zR{>W6SAl>3W*&Ne?EBH<;r|nh#9}F5%Hg?>d;NiIAZtOun;&|9==kr8`*hL2 zO2qScenno9#Y8btPu7#?h`K}tQ9z*js|olc;F{7kGAD+MwV z;b~CV6gIfK5545)E#v< zxEowmR~0-7p=Xa}vFwOAB5rxNyj6S^KX1>|gkrYMZnB$Ad=p=7R+GEm8H4-woGd59 z$Hu(|Zs4KeK);On4KfwriwD2N+For>`qJOXH-_E`xY>Wpz7_W5Tg(>v$l1f}z>21# z!7ad9qCtFv_=oDDiZ!uj1c9$7`hR2`;PxQS#F@o8kzHn&--vI-C^jnm@N^O_ ziu=WVG-NNuOEH{4f16Y$mB5BSW#3IxRa<(U?&f6Jj?)++N5FjJoI>}m(evZaZy?}Pu$r&tZ~AZg<#~Btn;6MPvSPNF9cRXww<(tpz6_7qV}{uRa_R6) z*k7+vYt&c*IRMp6wJ^^PGaBSCLLV{KjG&zVD@VrN_ihdKi_#f?$_5p$ZavITufaYL=oFGs0(;WJ1^w_yX zE>T*Rmg5NI5yGDUS_JITp*iRo(=(>DU)n!R)D?9@y}@d+n$iJp(vvM0$clTDs9|f^ z_=jk*cE087L`RMGz0@E@31O?-E=CO%0k=UkN4wO z*cApH`!n{8;n`Zt))Mo8dPEHIDf^T`tMIz_x|fw_1`KL(w4Msbz4oNhajKI zr|{p{!{bh&tSBp>?YO`%aJ+VWj+f@88A1Mzs6FNf@Cd}-AA9w6Y#qyJGum717E4Hc z$G_vp2+Rnet6#_$@`kdZM7|{U^y!K7=DdNf0G@-;)7RB?^@qfT;6kuPZBYweEqJv~ zty35D1$|fDRnQV3mmmYnz}nJ1Lk^R}3?{I1|B`_A9zJ}?BW6R{>W6 zR{>W6R{>W6R{>Xn|EvPS2-=iS3iq1uGsm7CI(F#5C;ydYc9~sIEHaA>`u4hBU9X%d zCyMf-;r<&QfymMu$HuV|q68)QT^G2o=9b$wrj1#{)-ddS(Ho&R-$T4X6erHIvkZM} z3)8|NiygP;m?bokP2>yqf<5QYc{#6~hh29QzlpyfWItT8u^*{ zOyu-(dQr+H{E7dCBld{B&2F=R2YegbMo+MYjj$uaymsuZ@wuRTz-xo|`%n5Otq5fI z4JMRP2EB74;;1+(@LWAbPq9cYl7&TKQbc@1(|}yzoC7%l(v#ko>`V5VcrBb&V4sXT zaOl{flSei@{QGfN03G`XJwo>;;327^B9h36$%1$y_pxY$J>8J9sSO#vl7{ zJmVs}h_3c0hxv2Z%_Cz{70c~%i=442|z;WGZ4l(UX`%xEp}~>?e);eOCcj0apQ60apQ60apQ6 z0apQ6f&cCb%rSGqO!ZUdlsRM%S!mATG53f)qAuwk!=AJdE5vYXkG>N-ZS2{9WxtYI zV0P#exRq^XNkvkDeerL^2sR?jYQLp#(I$GRhJFD1Y}}P!=9f8i)6iz4_lBkb`f&8V z`^cXUzIvT`XO5jZd^-m@JJXaJBspWG%7y#ytb4D%Q0|B-QzKl?iI8UKvGE8msF#4u6M*0XEPT7#W7 z{OLX>cGw;EJM&$*BgYLx6@ujW<`?!08^i~NUU$&)?;}PNZ<)8uD!odtBMPZPYI-m| zxUR2j=pS&i0sT9k4YP?sYLI$no|)I}>lV+4Jvr{`p&5X$A@cI@%;=lz%lh&*zs(B~ z(2q=|9Ek2-cQ2#ND37osOmofqh&}={rAfp#v(1dvWA!`s9qVaN?+^9|N1{ifW6fAI zNljAF+wZk|?JxQljd>An^zl9O%svZeNVv6tjsqE#r~z&q4846y%q1|tD#!}5B?P*HqL&N->J!eDs5WbhdKJ>6SEU-Jr-WA^UU(2t<`+9idzegaS z9-eBG+2qh;4tv`}`jCdF9B!_$V-HLa`nONB(`*`(#^4ScKK^Ld;W>wUbojbKtBpT< zkR2q)fIXoHKV}Z&>^Pg2rDd1JWl@{eX4}Pfky@sf@kC3%rN4vk;OIMXyRM0!2>8*# z$3KNlVFkUlBfo)5;*v<>CGp^ykNbP{$k_d(H-uLEQzDDWV%qEWdVyM?a@kzAF>lNl ziA7>J-_5_0U&&=+8BGwzieHILJQE*4z#|`f?74g{U(41qX!-k*_djmSzh+-E%u}%2 zMxPA-J)Qp&`vBBOGPW$NAhkI~nrZcfjtfVPv;F|{Rdr?y~^xK0DVI=w2!COC% zB`7!GWBYNqH@zWl2<+moh$~{IH`7~1bo4v=(4t=u7eoO9Hvrf#=izy%>rEQ^2B80} z>{a&W$$7GlSI7H9{2`LaB(gj!&!DSEkB|8UcDV49!)~}V0slJmt@!gbiBvL`JSYx| z#e6YcJQSsWF6Lbc_#dLr%p>zi#TCb`Kko5AAkd>i^8kH)30*?(G&{pOpe~Gnul-a# zRUb7+P3T2P&y9LwmyR2CXy{LxlLnp&cg0)l4_jHC0VY9bBol+wF99P{B?!( z`lN1a+M34%@-PPx|5^SYcK?dN?%(bI{~dnfxo2<{a20SBa20SBa20SBa20SB_}^Or z^kC?JkMrZ?c0ZCF^j~tH`3yJbKZqYl)t@x<0Zb;7No3{W4*mgw9<&4Nz%S~dIm?3LEgUw*kd-pYcL;p1F{BgG(PkceZE3Q3(JA&*i zJHs9x8G7)~$1`H?uz;xQRrSt`^MY9x_S?v!$Nn1Le$W*ls}LFO@Zl>VOUR!o(;oY5 z_~oIOENw~~cJO7Lh!4WBw>#@Dnp?dRrm6KCTrKF>@$(_+Uzj`Hbnbd5Pc0s?pJ z`_+Dh-FS?Ru{BN2u(yNXdKFW}!0#RU0C*2#@BUmqm*0u+1a#Qw>v6}Ae*P^2ds*D( z&$6>@7M6t}BLJ^0+^v%zA#NS;x#1-T&o_A8cjw(X<_t6SOx=X2Y%5#%1y+z1ByJ9n zQ+R{l;E##(>^$2q_6uYc;*R}3yU${H3=ey9GtZzeME?)}L-@mWBjAI$n>fG@F!&sx zKZgh4X?(Hj_;O0>AdH z{#L)nUSnhIn6MXqq#mgTrh!5KU&fZP`1&H({y5Rjv@^qrGxm&KY!;gZw82LH!eHVg z(NT01nB$~1X$`Un;D-n=2+Sk!>(JMCWnEc00yCYpVy(dYalr-V7r4F0_XECHewDw< zO=6QM$x4P_^C#wsK~7;2QAA8I6AUu?FjGM9jlDZ^32PJZ0nB6agt-VG(Vajl%3HwK z7@82|P+%s2TYJowTB%m*69UiGU3b^W5h$fg={Bql!wx^Zbx?a$4P8S&Q_s}v=5>Ra z)i0zcfQAAyqlIRnX~)~~mc&}S);=ZR^M5=z9^f@2N8-M{Z!w?34j=O@%$YDJ!@Yy} zE6{EL_vR|#D&Q*MD&Q*MD&Q*MD&Q*MD&Q*c?^pr!kJuk$kBy!fH}c59!!GnE_7nZ; zA8e&qDPG7I61)EaVt^PU$4K1I!`BTSb?EQ$J~?y_okFEhBgoqxJ^r%fDE^1`k98uo+L&Qd(~crn|Ry|)G##+W)QCbcm2QX|Nk9-YPe@|6>t@B6>t@B z6>t@B6>t@B6>t^!pI8BSt0l6DEcX7;{Pz`o1$Nlbq~{m;1@60_h$mu{H_C$+06Kf* zy(Kfr4D!#R$%dDDPu)`=QAgDE==JE~;BXMAKxH%8%r&ATCDlRi{fYg=A|nv{|M7af z#vc5EexN&WBCtj@>-63wjW^Lx2xGv;{R~&Ct7`yX-Dc zu~Tdik%54YAt6gh$qMP%b#vXICU{e2Tf}hFkcOw>@3MDUchlYY z*0;#_OHSZ!zAXVS``uKG z@_3To`VfME4__5gMZov}hIhkjNB)cJ*gAHVH1!2-!SJRbpU5Y2+MG6}NlDd7Y#s%V zg1tm};ux`zsAwvZGelAPXGMcM5ZwO1Qm+)gpWe~$kYmL%y;W^hccOQqMT4S2SJhP^ zYoe~HYv6x?*%WRS;Dw0SirWBy%)tueCDGAzH1K*v*5yHcP(xpklBeXjdBE2hb0~QJ z<9qyD_AT2-`3a~s^#1OS|9|37I`_=30aS+HH6b4ADb0v;l2Y8-;(v!>u$c z%^LECp^!QiOU1hIE*zTuv1}}Z*M3XcQU)Rr$i0Wo`w4+e`Y+fQl+4$I;d%P7J`8sQ z=>1a>mI(k4uCh_K4O>HMG5t7L|tB&pBASDwDeIHW$2f`QeUZbhM+rzrn0HT`~#T) z@E#aw2ildycs`!P^APiwIYbhcgcT(=@D03+*Ts7%AIeIilE6LuQnS>2Wxuk}xPv_PNhj+ts1wAGa1K^a-u#4gK-Q#BJiBIcU}qZxRpn zL*2@>GMItHs#ukbfY0MyV!EELadY26chG0~S>BVt>w@1R@*v=$@H=ss9cGzCCQ3_K zCNLL(p9JOv2kk*S!i+FC*-f^dujgr48iwxy+~MPSdk|TOp~NUXO2dN>c?_=zWFl11 z6*MvdPM8yBxE)ScA~ANgUagM=M}kX4jEPM((1Gt_ZIm2 z!gCRK2RHRiJuVm*;J)DvqN=TGF?YfbM*7Q_qz-#fT5 zK}H3#1`-i51nvTmmx%9s{#V>j8dm{V0apQ60apQ60apQ60apQ60ateHDpZ*WY#xe4H$OaxT(j^A2;*TO8Xh{kU!+`It;z-Xon0v1H9*u`HnsI zM!u1+B^I;AtfVX{(Z}Z?pjWuB?yF|D8BGF8S@;CNGaj=M^!QN|HSgK?Y$M)?KR3?} zJQ(4p2W@J_rH z+zQU>vl=-C$U=PGzD~)DsYBlb^z4{zpzhEaAfpiX8PH1L}i$)kihg%{4RtH2w)a`r#{q z`lEKU^=$p7dQ(*<%IR|YPXgKsaGb!L<*9xe&JCb3f!9A~RPh8n1~*4HN1;>cPQV*5 zwMwm^jlgTpOh5;N=PxJA$r_@Dn8|1I)C4>u;qQQ10J0Bo3xin_^a05U%mJJ~z<>8o zHuw2m1zZJO1zZJO1zZJO1zZJO1zZLG?+QRm4sZSU+50S3#>xyLgV<~~8|?af+Mc0b zKKdQxyg#CRIrLPX_VhG1E%bmJ#0T+-Y+{%N&kZ+Af+Yd+*AkgTro&%(YMvTo%%LBj zZ{{0#-DCHS+_zQ)^w)V*9#u_OqmAzBus43npN77E@TNaOlp!Cx6?_G6M*K$HBZL*? z-aguvVPzPewKxIacJ!Fg88o-eEoKwHncvKN>^%nGc=UH^Oqy_Zf&DBz z2UiHp5s)*0T7`Wv`PId<_|OaCg?V9+6_bf{q^ghFkiUt{7AdkaM?#?I1_K%Ip*KN$975TMOhZ zU}k{Z1ZW^06Y$;Ur~)c!KT z>1`(=33%#Vl@Sta`oGyW)b;xKD~p$_ZR#EF9(-{L&Q40P9tmbHW5Q0t1qcZYWnGZ`k*?f z@S1AsnxRJEs6MJI2bF_7(L7P)`sF0j>-73*@HD_&0kf%M1m+C0_$>ZRJPR%UdhuTT z6??^&6UZCDoC>cWHzD}`Nlm~v6L%R-2Y|mF?#)%eRlrriRlrriRlrriRlrriRp8&L z0_b(n|6>=PUZ$6?_$!V(Y52EKx6>^&&YKB{nbAW-*Ni@vH&#c%QN3ETjT z)noM}Gs$3|U%(a!a{yb}RyGIA!6p#so0f~^q5x&VLj#ZfIkE(ws;3HbfEK2O!5($G zoKDGoCFClxO4RaddFZ|F5NSnPF^|~JxAXhvzQO()_x8)|vM~1!IRS68w^=n)E$oe< zQGieVcFK1DS^uoV`2~3sqMt>-o|okfb=?(NMb_1HHE8sbh$JG8fQBDE9{#&EZ_O{V ziwqiw%miK^<|Oz$xNpaeJ@)E&M!ey!yt=I(zOL)~x{fumW(@iB&(U*q8b#0yVxS(V z>l3);M}~a@o`7RM0N(@j zr|KEz@F8yy^M*s_kg3ILG2Bj|CYT$b2gla~^9f`lG!xAPZZ+Vm@EQLs%!-8X!U220 zULl|}2y4iuGTc%ihY$0Lb!wg3N8p7f2oeP7+kaF)s)R(XpjNO}tyNzT^9iYCs0V=O z#C$zpmsjP(JB1NygzBw(>sqFkS*n+k8%0k_UMvf123<;(Qplvh?E=0((%E$OKyV-^ zObjNDM~_Ees+TGW(NH(kMTyO7v-;G0YG$+94Bvyk^d)XHIub|OQ8tOdEl70&vjTj7 zrzeoP@V9&bWG5mYz}*7;JN?9S&*CcJD&Q*MD&Q*MD&Q*MD&Q*czqbMp*n?2RjD8UP zE^mFK=p{brP=S$?#Z)e+CMOjhe z_P;%E&zBP2L^pwKLTLZ-F_8&~ImQe#gRb8%nHsDH!wdrRggDxlH#Ut8a^0@!YkI9& zOB>#(!44by=nshJ#9m^JSz|B{_>=$1@writn#3eADg19}39$D^cHC8URc$mI4YcID z_^vP)u%GQ`;RCRhZw-C-;1STr^f8+V%m#k7zgq0ztE#H124x&{)E((kB9+EH`!E9i zK0FJ~>+>3V0r(PblpAG!FTaP^jvYF(0(-Gup|+t4Wd`Olxy&(j?EkR$9>7)>+q!ml ze{+EWGm03<+klcmf+R&zK?D;hNkL4AAOb3qQA7|#L_{zVlpvx+31T9uAUO-D1PLNY zk}$vSzT@e=t@`WMfA2Z_?0D|!^;VtZR@RzxzH_pw#u#r%U$!sXQ~W71X@BLXrPI=z zvNvTb+KP66x<4I}9g%I9w)=Aqfy}<-EAT$@bI?zauSm`v82}}1N&7?ghwRFeD^Gqd zc+I|M2METe2|uq zf;M!2)>+4lA9>)DqCjZZW_QT1filk7*vXUAvr31*y}aq`;q+O(pe zsbH0$kSpYx`lg=eRW2=;<`&>dc}y}9YP;HD&%q90NxCHT0N|8l=PWbbt~T@CvDYXsz;S>$#oxN_r(9nh#AyK{m-I#Hjr&U=AjK4vjr?=ytVT z<=6T3Z36V`i~J%_1|2y84pmuyYJ zUboj()D^{b@Pi(zhAO(?A2JUa_6+O^uGQCSGy*H_%Fq*luN>byvpM;87fUvN8`H+j zR5Qhe@V(0G@;YW{vJLs!_~$@3_$!4U0fIUOZrQ?(QdS41ESHtAiW?Rd~)!~;cmEl z)xK)?rTbFtwWo8Tj;|B)@5%c|$48-%_Adxl+ts$K z?;3Ul4SWN6_m>A{=u-t;wsZ|%1hzs4m3K9fHQnyRLXj)LB{x4ksIG##EDo~m@it>AmnvxFUtnQH1LbrbR!y9?-AKo>w41^S5!f9}y#N1q`b`+0 zYh)lY5E+OJL6n|zIIo-5O_|xqGOMI3X=WWd|Ej90 zp)aqEZDThJTC3LT3Uh_&p?m0O)w3$hg`y*9Bw#M(mOabP3YqMK{21>Wd-QH=@UecjhDWU;A{J}H3Br`xm>RBXSe(9vVq9spO-v*=6B}dO?p$%vXgPw zRY1Od0m*}_Ea)bnN3Vjb;Evj(cDG=h9;eaAFSSc;6)iAT%r?C(Wa5)$#}1%_faglr z!rF9giUu7<v%P0eJ+7)!$HWggKJz{cPqg>f+3ReLY>h15hv(h%4le*Yb+Q+B_#K}2^IiY0$EQz@ zAU=(i0yGJCO71;do;_}lqpz>LDzC@};JKzg_3RYrS}d>2>vQ}${>tRaq_624G!I|t zuR_RROC8wrS(=m38-7I~A=nwcDR*@bEycn|t_7OI9TP6U^=fbO8-t&1^GEPQn4{`KvF$OEAWbkxx-8x6|&lr}|Sp z{RZS2UY}f_OwyAiz2MoP^`QTd&p)4MIEwTC|NFly<135|LCGvgZ#vDmg){41r?1mw$$cR`=)I($joJHa^|c}!je9&g z@Ls-`KPdh2?F7tl-2b`DGABMNATyABxgxrV-lz77oBWp0vyMK1xr>Z9X1QPOuNJ?+ zW%@GByp6wr8IW!_bl+t2&lMcA$81mE(=!)yk7g!(TJVH`pTpcuR~tQqi_%4DKf#@X zbprC<$%x~%bBiu#%UN;)xP#}I9Mdo9m*DYs0%me9v}ERw@xnoiF;7MK7+@)&)#RbMSo+zv6TdcrK6C{`8K+Z?xlK(YrkXY zIs8DH56ELAmy!KIbywZd#Yf-VQGe9qGZ^3oxb5lo^q@T$a{0(6TqfvhyIOh?he@^o znSEsV4-wSVHFbRf{dMFwkR`z0hs*+e9_$1%J`?&H&^4f+;GW)4aJD}?>=Srx^c$S- z&-czaamPQ@+B`NJ54Y~z+*3S%Um}B&ym+xN|(|z%nVaI zsh!YU*j0c>Cf@)5yZ`2k&p$E{8Hfx-1|kEIfyh8)ATsbjj{&^P%VX2=jwCy?dEny>71uO9mWsB=hmRe*yV!=mB20uUoPQ$WR~e$NNL-km~RI zhYmaP_r8~m{nHt5U(3~U{nP$wH$epfdHLiN zHW%Po;Q8X`C%d4J@8f%#p5}q%f#iMjzIi%%n)tTR>DNZJQ6mKS74VYdi`Zm0S#ss1g%Uf!|sC~!$E40T(UbW?(BFR*oU0!&-KMrG1Xr1jsGUhyv*R->VLF9 zT6_uk@ySsnJAv#2_5(laA4N%jq28*ts!G0+r~80>0Q4Rkk`2in0_I)zL3g>k7`+|) zAm(8D14}2RlX+%d=sdtXz#W`CMmiDMo6z-uRs*d*_xmnsm$aIz=9tkh5TLQ39}=Af zdmG;CW9FF2?Q{Evf={K}5I+bR5%ftm7vLG#BH;Z!AQi7djyU`9kKV50f1h)#- zyY;TJuk7h_=SGe;9gQ~k+V9kNVehcYt#aJ8-x6Fe_(d>M&`>p0>=Wpduiz_qvi8w$ zb35ia(o@&jbruCeLD#`{u*an5ZM}e8f}aJwTrbx#?HK&%yQNQ%yKupzV6sdv(+AZ- zHQJ0e zjnG-o?HjJ>_`~b}z4_j}F8D-!qJH#0N=jr=|AT-mMtuEvJz7W}*&)_FHtPksXeqPuO;eoh5y*_=>zG%^K&;!679q&N_Q^24r7->eD3Q2`zo8RWQ z>aF@$_p9rp`)G6mulQFy{f+b#3;}kC{X#%?1<#p`2X6FuMtEF24^ssr1&`=Q^m?=2 zJR-PEz}+4{0a*!TRZI|&pGY1=3juuMIYGa$Ux5CC?msjyQ`D4@0|9r{1-##IdcFY9 z%xMC&D`-pj%#asJHYJE(k%7oSWFRsS8Hfx-1|kEIfyh8);9tc6clrWpf%L=dhuIJ8 z2lgTNkRuC?u5|qHbe!cEJS9L^%}m}ya`*9F({0WiMK(S&Ir9(s``rXL2*{dSCtmwK z**&4toxJz50{jBZs?7gn3g9ni&g1dPAG}@Pu4fC#CM5H}QPL=>p=;=81Uu9YNxqvM zW~^y`TF{L@sh`y2)p*4YVUC*N$7@&(5b3{ic9EdgkgrNuPxIx1j7E zn2E{0e^5ZT0DXw${E^|%Lx5-D5`T$*#k~^VBj#7;<<|uCLNNdHy0-}EA=s=pYj!d< zB~O6o%&r9OKL5UssbiKTOOku_y}EJII3eqSoI&#bTBI#fdI<36zn{LJe(Sys-IDkv zB*M{l&>eIhlgHfU@AB{HcXU73&vo*hq#@w}|FU~I@R-_E(g=SLXTYa+q5$8<%>ud= z`Fk|i&ked1x+d@r@EXq)u*>4P^cCnMi`d9ruj*lA|hzvvqA_I|u$UtNuG7uSv3`7S0BL>cM z=egX{pH4^o+xBhCjkZ>{R+d{i_vrjp=6s$% z&lgsOL+4#{)jVhgn2(O8N7G~3V_EhE=nHBJ=FxG*+d11g z+rqVQxB6Q>{b{f0SM;Uo(vXG6|Hfxe2m2R-hXi!6KcSz{FPoPQv*rit164+s(R@Gi zI2~_e{22cy_a`^s&JTHR3*AD;yi0C-XW!X>?ml<;z+d;T`(N}gp|`GIPQRSH%w1vr z7AXYhTXRWrNkXqZ`T=hJXcq95lU?ws`ZV0V={J1SylJW@)st)ewH~iMH(+w-DhlW$ zAn$&GU0_cLO1V;w`~rINnhSC#xf5PrAyr6?)nhez3}_E1E$Ad@lWCKA-aKy}(~s#A z0(=?h37C87T)0c$rRxf~-SfWZPx2?^)Gd~-d-ec5#G6q?F#nvWi^*SpsAN z;OW27+-SC`ZDG%{T)H9fgV5PW)*yQca`}g=;p%`t;L$g{pkL6Zo6`;10{k;M{@mH= zh@j74pdA==8%yjG`+|V)A)Msk?8%rgn680v14(Y#O?&tj>gE8n~WG6=EAn!AO zN5Y5YFZcfc=@)5e z*DTvC%bYbsz}&|SP3|7P|2Nf}VV>=5J6rC|WCMOF;9g6n9HDmo1!w_o7Id*)>=o%1 zDLVUR0(AEyMUPG9-grCSP7%;wM^C`Y?8+>8_RNH2!|ztR)e67DPnG_4W=L`a&oF10 z-_`G-e~uZ9qw9m_K|{_w^V%3aM(6mPFzb>3jz=M{fV=&D>ORF2tZ(XvnfgL=p&{@7 zxIgaEevek86<&tz$@T=@JG1{Q$twx_g+2l@4wwPa44@Myr=OeocC}rh5$`CdD(G+e zn^A6*JFbqaL?>Zaaj(DElks0cKpz6n5w8V#gJdxNBFLCb(7=;<_?CW4^SqeB%O&L! zGW#zObP@2Jj|#{kq;p`6fO|N738_leHRc*KN6*pKGu1O_BQCX-;*|lw2G7 z8ZWn(hb+aH^~;*B1hfP*{Y?M1dRyEg7pkZI(_u$Jt{@$MUrMgx62W4>*rUVGC*XC` z+pt_O*JL%0@}ojO1R0SHO+$0F09^&T1zyi|JKa`sRa|LRS`F5NHGLL)1niY~PkJUj z6EY3?tm0u=AwZAtjsUFypNXvkbQ$b0jtF?)(1x&wiTZ$l=5Mq3SdoFqKx7~?5E+OJ zLNng6A;rL(`KzopEH z3j{OOOhq5S61_w}q8zlR(02bf8@g`b_Aosd~CZ-ahYfYzRwn%VtH`=lrv<_G@PGc>)1_!#Iwz&C;hDB2d3(ZrlKh-AZwC;&u4M6nygysR{Cl4w5cYb$08#b=7zZk?SmFy!5+US z?3)higL-5#GN~+C3_s`}^igxvumnLfLdV1vf+7O;5$6c#8Q}iU>-gXA|IzOs{;I_P z6B&pMLaO@%=*gQW&68ivuZEs_X6^U=`~E3GTie#Q6L5=eq#NnC z)LV+#7fpUI)hlH3p#?|p&Ax(Jk}QBL%oV1BfcrnacnzgcZo%zw26 z+)wJ3rep6_jBg_g?gc= z0!|IO1@!-oOe1rXx=GQ)h&P|iLbL|V#rW#W3V3d7{aSyIfc*x0gii#0U0;Xhzq+d~ z?U1)Pd>Gv9$vT`Ms33rg`vv6Yy(DNQ;5{It5uHXISI1qXE>dU-*zur=AeVvc{;T{| z{!RO)MI%pdLv3AK;~T**fZl;F0rLCM-lMVKe;moy%5<|s1#$%@BEjpurfnPYAibWk1C6hFnI*H`z|+~B{E9J}>;edr3$qh%(M>e79~tm?575YeFK8p+ zw!AsnoS-i!XOHJb&LNriWCD_3$75F3mGx@1THR;wv&|$6f!={t>8cc+#5v|1vt2Mm zaHqagwi6?D&7@}XvHDoyUB^ej>`yPkU^CcUDOjWysc~+cV|Hgo9%IHBwDG5lXMh}p zrlzUEtB=2(8JDa_IvL0rU`A&4Mi)E}FfGg%{tLfE zfd7LWLb4zB33$BN1@JHY8OKX>h-s;IiaTwus*yI8=z9Gx}$ zfyeFRmYz3mt#tB{@wdb7u-yI0U`Gc}X4+&oIm}}C(aEiwDWH>&F8S6;>jZ7V4dw=e zCg3CUk)e~29mPO1(3}(uQiEh`@ryd$pYG|1@00dPm$_xGwy*7X*Ky`RRc`V02VSNw3%B31^jR_;x6<6ud97#|&{;>P5o8-sy$Di7di~!6ukhxf9BBL zdbhsc-|u^?-XYI!goG$VuWon68JJs|u{=6rSpHGB=< z(RFla;TPxyn!7(UEPDxf+12C$1^r?W_a&%St4JZY9` zmN{e&8FoZN1av^qFZqOjLRt&@`Qo;?WnaMOricK2$~M0(_!#IWz_;=zK?mQ#TV)lm zn|wYpC&{lUB^cs|_!Vk}k{ZDj?*zFN+wFE+UX@q$D$w=7-wU({JU(3qe74z3{Vc!> z(MUj^BbfjN1pGZYOK_Ti?nJyYiGYj-asWX5iVQ>sA_I|u$UtNuG7uSv3`7PZ1OG|} zy85nuquQt%x`vJ$ZY{~YGtM~j;L!Io<1$Y%oBo>onoJPjktXAfyDay0vhbLR=~N>> zj+^VRf|ms3w3F|DKsxZys*~TwTzr|kOw!ke$;8>t(JR0_`h)wy-7VmD|D1kKFBVJ} z(0%tn@<38vmk+mRwE52q$a&{ElGT4$uuiQD`TxwE%)HCeW$8}0)8QZIR$oYb1=p$T zRNbU*vd*kC-08`byGihxea(I)nCs>`JoMal=c#!ii;nlFr|zk_9dqv{^8mg0ZUH@Y z%$zNf7RhKc+K@q4A}NtD^Kvg|_UD#NcOoA57J~fQ{Mm`pTVKgn@|A66+e|mp8_WiC zx4v7SDeY7Lw3D9rAtWWRcd-gp`Kjg33U$e{Ya?5^$Yy;;1*0!~6>)JYYG=~L) zrB8y-FI^7&EbPpFRr!_rjLaFC*OS+iye6+<_N=LDs!s&m|L+vw zvEJx6hS}(_KOAO4?ypU4Q_EagND$}$IRD4_|3C9LGya*#Kx7~?5E+OJLqRmlob>+#f;TflkL_!>7C>ejPxUemZ7q* z?5nwIj@-MAZez%%!~cI=9am=vY9+Ojab}$9AZV(Zih6%<=n6c?pX2f8ldV@qmm$JV z<3In*P3a!E-QDiEJ8w3d#hGwJ=#3Zogz4-%2mLsC0dy0h zl|ZY255C387ANzjc~g4udZs;7Is!hI&H%g)EB#8(b8haNd%O#;35x6Dx{YaL?oaMd zcAMSOa97b>EU2MsgnogIW}|sl@M7l0%wy&;X|O+Ncwe~F(;t9FVYmQaL|s7@T_t!o z&|91@xZU6G+4<1VP{+CvvBt4Rn3qhA2ng#R*OAMG#u}$JgKYZ*Kf)k%7oSWFRsS8Hfx-1|kEIfyh8);ICs~nw#dBQ6||*R;u7U zvmW!(0<*wet}a((#NVL)jOUW)lJf<*O>Xma=IKm7(@*~N83w=mTt7GD#xon|xEx2m zJf8ZZf=+3tbc7vY$(AGky@IRY7T5(gC(TK3709TRzUW`{qXo>UkLX7vkzlsIPV)50 z8u(IR5|hx?cUf{-!hb)hPKGSH`o6yJm-I`165#Wui;$dob{KE_w>=pIQ~lI1_kO1T zjGRnP=E>yAI22=ptFD;L39rz^a%Z(;64F)0w?WBTTm4YeFEpIa~03Cs;z3@ z66Er^!p;D_JNkWc4A>#u>~40K_)8>tpmvxQ>-ajpfotG;`kwwH`%&11Feewbh3zCg zN#Bv&A+OLRo2Ao_e0u!jSNp5|F?Y2nD-kB$j8T*Q7kDY?tsS0 zxXifBSTok_642vVNf5H?<)ekGw0G3h~~bvZms!Vvi*5a$#J~V-6$^qVqu=92jE_NujO+B9}#d9RT0$<4-KPO}nvUlKnminb0pTi+{C}dsEbMr#BVLqSFug|W}k}b#{ zYm45Zng7`rpozJ`-5||`PxIHrp>ugffIonoL-a0q81TEGc_H(Xy-A$^|GM8p@lQtv zA_I|u$UtNuG7uSv3`7PZ1OIpi$lxdceV(0XFZLIEGVETHJoQCpks-&Ad52yzdH~2k z`${lAXME0Yf@#ULWR{s_nA_M8Fncj8lK)1I{!lyA))y4X7Ri=N%cabI%=zV1IrX*w z+UIh)+*9@`X$O4Q(mlYe_=J1HHP8(-83BdFuaCc)yZ%e+C7I#|sP~fhlDo~_oaRGU z9{1c0$%ce|L>`q#wbU&&GaLPT3;jZmXP=D1VuA{$g1JgiJ5xLJVe(-zNkC@+uYub$ zU!_fHL&xD-!To|m>X0I5j*J4b^XLFz=a8`(+g8Ag*jM#cUkD0I?mW+zJ2csbd3|1A zM)0M8{Qw>I*Gc{WnhN~t!v*B-UzKxJ&H%wXnRha;s8>R^0a=4izSx^I_Kib6el=Z9 zpDiG_0FD?)@n2kTt{3&eW>YXJ7_u3-p|ewHVwwb>MtNV}Mw9M6XEuw?COWmdF z`FbAx#VWl@Pgav9apGCE+wQg-)CNVj0y8<95IFr^|E~9|{feCro`3okhWTM(CZ~gv z8$b7ZeEakTlKVhsAo+ggvdZ-ATkgchzvvqA_I|u$UtP^ zKgU2(U(}N~zt`@y%rwl$GyDuc-^@46Rph^;r61r2`0MrcpF+nMrxUGPBGyQ_WN}vO-@2@-CO5Uxun&; zzG7zNe*cI7{rNmI&%7yEC}0+SL$J^-bTxfV|Au?R(YMHJB@eNx0DZz+>Mg~NggZZe zfZ~GtlKT?&05b%10M<+DCFBjF?Pn*_(zSH61o$0V3fRSv1IVnsP{4oNkZwpf*-heX zXlHl1UG7GGqil4Fu^Q3j>@(-GK>!a>y=!dvj-K_SxeeUP<=al)Lti{f{v*yNs zQ1Sq~tL|!}-Dt^wn4C^dn`fJ6Urk?4dkG5r!u}q8kN(7c;^+e8Ge8$0T@H8$*gM@J zpf9kMpoweZ&}Gmi_>ud_(T&KTyU<-2b{BLjtP>2eL+lc_#Idj0;dX@27}}Ii1ifsp zpmpK1xZm!#d>+|POcBt7P}Nj5^a_w8iC+Sp|E2m;jo#u-!My^!7wpZ@g^&r!4g-He z%>Mt+{oaXxDl!lmhzvvqA_I|u$UtNuG7uT~=QHsCo&ULIUt}&a-0_?0rkXn{{`ODp zr`TisTV z6zo>J)%Ai(wvru{j!G8`m|4+?&z2km_8DX!;E8Xpo9i`Zjp0^}U%kKTFI$3kVRmh; zTC06}pC(7)ApxE7Jl-y~OYw8qb>KTVCcqznmjcbj7&pdM5!|Y7Rn<*(vqrDckE%x% zcWe9&Jnr#m-MRInS6J?rhm3q~+;|%5 zyZY`(_DJ?Ndz;m%PML?_P;Z0}B|U$)xLe#~f)0Y^YPsS)V*m29{#pOxfAO>3Y{#wx zod!7sqt)oJ_u#oPOY@%Bwzb9aP}q_?@R)tfve$9iY2IhLBhfVU5Ry{7j)89)n-_Xz(SH;yad(5KU$Cpkf;CtzNDV=`k5}3aV3-B(`7noP& zRRwebz0fYSjt+WeMEVh*5ildNQ(!*Cgz$!W!_*KwCpbMhJ$XbuqPmzah7LORDBOdY zUD-#FwLm5ScV}iyiCa+BU3GV}x!JT7oR*xHG}4ViHs29-L|yJL58iri>Es_a7RXqx zd#E1a*1XoObz~lp5kSVlUy`}t>mp_m0Be(iN0#P-7b^)P+Qm4b$q_aN0g6*K|e4`jS5{7 z=n@_i?6SKoIR*Io*-pMU-qeeOPY>{XViCF)7@r1@R_uFyJk65t)^p?hdL zD%th0!$I?aj|E>zegU5q{3mD_(0OD8>@N7c>%ZV{|JxdWLS!H^5E+OJLAQjkwt+>rj+fvxeVTq*z`dLN zIBv)L>^{p}kJg(x55G5a;Ve7LDgm?ONHtQ?Gmmb8+xU)jM~asKPx^E>-K|k;6mvhh z`SjS615i*h@(v^il8I)bA+xQyX>RHYT8QU=9!TaT2lc_A@22yRxgCG|r|Q$tLI098 z2wbQy)Xd~)5XcI=TEJd`tbKI+4Fpf?r#1Iwe*T?;wQ8**f1jDZmZ}x}5v_ge;Bnuh z_sA9dUftjIcdbopX}KR_$p0gM0nfn{!E`@8JeRA@)#iN3T_k^DvYxC*s1XXiMJLxu zru!kTYFahT@A5lz3Fy$t{9_j1pf~7tzFo+#L)%ZjKmG;w9CHQC`PEf*QB5>Z>?g?E z`^XQK#_R3Rd$s{CxK2MJpr1Ba=M&;Mlehb zQ;+IL_4Ud13BHWZf@OA@eO17Fca^=$^7sW!L35rz&reZP!rV*_KzjlG4dgQ(5X|@U zeQVd+^%LBw?o?HL70({zHhr6>Yk|B%bN~m_gIGU;*93h4T?PXLUkY9qRP|LonFIVY z`jeXk+x_;Srx@$U`p?zpiuVIQ$hZF6;PL0Vb=TcB&xQR4nFKcp$_k1K;{5+#|NRrc zGcphvhzvvqA_I|u$UtNuG7uT~=P}SWZJYKMoFZ5%=pvwxk6G$-`?+loDhr;s z&s+50c&^VCa09334}baebb9)#d)0Bro}0`~$j`@@O}E=C=_~2C0`Bw7(0BkU=n8tG zfE+fw>4V*$(L^AIuj|*tOj|~kQQdSmeT(3*;0yDG`AASgfF6R}y`6%4%smF5 zJ$i=qYQ189XK%pIU8z^<7n2u576Gq~d;1w(-`3EWV{M^s+?2r8m7THC%uBxl@C;5~6)P3p={YL0pL^DxG z*U{t%Y**W5i!e;_+SpaGm*Vx1?ZAvaN{$N*_Ql! z9#8BAjx4`{>A)0S%AW-ISMW*n@qPR{wNBA*@veVY+$;HmZs1e*sjH!DXmSk32*_}# zB%mMT5&`e&nF9PB@%I1E``r~EDKZclhzvvqA_I|u$UtNuG7uT~>lo;oc1@oaln{)! z>4|C0A#CK`9hDqUw}9MxI6BC6W||M|V zZu2LzC$n`09}DW*y7nG*k0LLftTgWY-1gC4zpvhx>2RV<-y75g`T|YX+gIwVFh4WL z;YYZ`-eK{*qYYn{E=x-bwr96z>)CoCTaLT$96Kj?1xmS6q89HV%JA16efLwz{nPmIAr}Dyz!MYAYA}JsR!#X1zId z{o(z`*WV^-lg!A>$e=Me+ng;E`cC5|8Fjsv2_|`{D$K3vA_ynF3BsK}Yh~Ywu5cr zoA`-#V#v_Pi%<6hvojhBJP6O}=QOX0Ir;{DL-3W5$;iF^W&g5&NWgpcO7coVzTrE9 z9|h*M|N%kiB1ZNBQJfr>R^Mm#u-G9{n|8>8M;-8KT zL9cf3> zBhuRT=iW9n-ejSb5TF--PcSn(GfUQgTh&%EZ+A6a&7JN}cd@UhSt>aF@dd!H@pin>giNx9?VHFxs0RQlZMv#0Bw znVmd2{v5sXc=cEK72-~B;dkgA`cy$3Q^(-brn|nLsTaHeWCRwHp2714>>KDlU?y*` z+l!k2X}wK=eH&f=)ydUKDOE}>(Mx1IP(NhU|0G%U4U>kUOAu`VH|cd|otYru{{6K8 zjXL@9bj0)hWCmQExj4hz&n!708IaUB_04v@U0~!muv1Nib zo?HOlV|oD_xCXAH>KO9u+0W4LH`orgodoQGatr7Mm?!wee!@D)(joAwdQ}~C2OS#u zyUbnYkUkW25ao4weY?Ni-z~U8T@ktuc;Bk3s`4GLD!dMjGL14~B~Xn_Bg1Q=i{R1Z z(d1HfsX_}uS0b7PX8d)670HUAgZS2bD~^Z@%tSv?TotYT_v(AaXBe#l&-Vs*gJb4z z4`e@urhzQK)!EhA25EydkIUn(74Y6~QCmc*Fg?7tWK1x_(-+7N;e4)OrQ;^sBkhsmFaMK(e17IPa@)z_!-qXk57ci9=;fmuu!rqo&rQ!whq|GT%=d@& z!+NM0YUqEv++J?aNzX~I72xluLk;aT_wL^vQTw5wqwnY&+s5|s^zoFAJ~H3Y zg`etA_2<}gLO(it0rdT6nlnSb-BIa)Um)P-&i$8OyY5N%69m(5>9;gD?gRROE@p~}ilD2ZBahsHv(vNF%LGqK zD%)baIP|;axE!~^Zm@U)xZTtDMt&dt_H?$9=}t!hdG0wT$7~Uh_0QcHzx!-I+t<_e zB#r+njraRA$^RoW?<)b{Oa4E%YVN~F^b!4(f68;yM%T`bm|Oh0$+<}n0a^y`*SV5h zNm*0Ykh4z~0R0C01UxtN;q(sX%H+!M=h=mHO}ZxRLD-2L^T#~jGhcwd;!XXg?rD0O zl9`g38_W#`AODX6G8gvy{eFkqq3B(_USF?=3dpbfPn zN;(e7ZCqd%ShD<15#VcJ4>Q?M_UQ0Ws1vHLWb|Js$Oy>fo1i8rG8pJ+BrkBI-Dq36 zR_-bk7oW2|At)g*LrT|xE%;LW4)hU_&4*qA-N9P|@)AD!O9$UhztgV~6mdnQMWMRmXI8V-Ed7y_ z>?Au=%~Ye@DAz`{QN?|6`OdaJaGJiEo@LLn=pNn`;8i$F@Pqn6@x0fXwFWN$Ie{J1 zj%ig})xtHt3f{kMep|?8IOq>bljHBwta!p_1q2F8ynz4X>yN)<@&88#A_I|u$UtNu zG7uSv3`7PZ1CfD$2L_tjruKUQ^V4tsH~)-%#%{`P%Hq`~NA48?xoBv`nfI9Eit3`G z%HOKb6OfHoP!&|o1bDW`nz3ekvOPiHezCqdXus*qBM0zV$!sGRp1r^|$u&uFQ(UIx zvIg&ZmrR$;RKa*N-n@~#kyJC)%u9kk0(|WcngRUsuJ(`yRQ)}#MthW}ZBXP-I0tKdTcy?6O^K7ESd zG6CIzWD}0mBg2fyy!?uJ#f(YDBs}-A$=HM$_S2kCb4F)IXFf_kN?K=HXV&ZWnoKz| z?rsr~HF$33+{{UHGU(T@%v_mSXcii><1X|U20y|z`WlT7zoagycbc8%lH`(v*EZA- z_4MeK^=19t>TXp=m(lE9=uiAeuv{$T z+`gKEHF}LSM0~677m(xkj(^9`6424Wz6JgNW9l(gKmgy9&16FlBpUmks;64zS9!7! z@g6kO%|h-TU5}N0WxrZLcOm)CzL@kjO| z`+&m&_BC`XO1wav|Nk9+p~dGA8Hfx-1|kEIfyh8)ATkgchz$H68E9==+tbq1(&_?o z;fANf(@iHgot%(PNN=&X$c1=;<^Foe90p+q$-Hg@7Kp{3gF? zkTggdXBuai^~usF7l7|)c5SYkivpmmT-@sg&-iuvx{$e-JCi$e!kjRzbSpjE%r@`q z_jOTIR5k>~&F%VjUBDDD+-qi?-gZ|INT zkZedkFdvu|f)YuIWQkcKiTj<*05w1{yP`SZ?mN&7G|b&(1(Mm%e0`<9QkN2tEmt@x zoZ$N|FK8|ue+S$Fhc@6j^PD+FP+S)e9f4IcRWj@Z&K7(t=%71D@?hUEo4+Z20;Q5t ziOHA@I)TQfv01Cv>MsTLeSJ@sBHakw!O0!`Nx;1uF8}y<>>!wN$;u0R0(ZncrXQ1L zz{z@rS`qRUnS1}3|GA^%Z6_0vUC%zLokK|otUuHX%VO?H#L*j?=4gnbRKt%NS2A2W~1J6F^!lYYchdLUQ&l^(4G zU4P5`GHEBA=XRa{0ISB4YCF4L&#-w*(=g3LI);!m}D_B>yzOK5Bmg%1ndCN0K^@@|MAyM{11_V z$UtNuG7uSv3`7PZ1CfEqz`p?l-CQ?^wtr{3Gi5H^o$gN0%$}M3IQ=;7WqXDDCpTeq z((D2j`^EkyeUrY|+-oZOik@7xxo)n*FF;P+bD8Hdodkn&4a!BvJ+mRX?cC_;O{=ME zYBK)0r$48jQ|PYI4v>k5<{hp2hwej1H$AgHn(XERGUdrzt0UNF_JuqAEHz7A>#y~P z+#yHyTQA*9eW;k-{j|=FqN8kOh zf7sLKMkf6*JxpI}E)AJ`osv!o^EerXA4%um7PrN*gE%ueGx=Wdf#80@Gda)X@Fcx>4Rkk5}_gXc@m0zZ46o~N%CuqQzqF;b0GHEm5xuL4`b3^pJ6k36@3o&$TAjb@`^uI9ZW>ku!&TD3NK85+8VZnA*)jm*Vw-M0>J z1-E!+V|EnhnsW{P3hxNWJ*4xIEJt)6%-U!dI;lndOn;`w=kbVu%*j1| zk9XDu-F;u%*IpsmA$<~L`&acK)lQys5a$qZxQly{G6bU{0^&>Ns`}X9(z< zc+7b?@NK$4i~D8C%Ae3HMNL;A1mmGeZQ^ za!t$iZ1QZagM zI`YtVb03$JxnYMe)l4`5D z2cCVvpkz?8Mo=_UG;^6?Q?5<9hUW~=shO!MY>ds2m5>OSgPB?Ro{G9+&>4`|Usb>? zPX0dk_7C-kdZ-#I)B8yEiT(uZLb!FaGkHMt>&*J+`}6%UH_UbL9sEM+u;cdKQ}@(H zKyCp!0ikQbR+^_K*2)Kzztq{YP=Jpn%#tp%^UvZ-vyPGCQR9)6aa z<J`Q;Z^;A8DZUH@gYu7sD4diqATo2#F@3ng^{u1&i-WJ>-SY#L3ny#i}cCV}I zs$RZV@Tu%}yB&RfbP|wTK(7Kj7P=JJn=E#V9Xbf+`wnS`6fXd~gH>*od)>e8>9M3I zajO9R!QJj|w=dn7Hb2??6tb5k=Q~lHey+CtM{@8wO zna6&%Kif~-CvJlP4K=fPVN=*J7vkmSK6=ufbm*+f$9p;Ra^@+)lQ~c3EJ_w7c*yJc zI)0^HY0(fg(v3oH0J{1o)srf(&a2UdlZiJ?Pt%X6N7Tata`BiyJDQGWr1lD`}DrhwTBL$-a9<&qXcBykq1a70GWbWoz>(8a0@5D?pl4V zW?n?!-cWGdANM@ZKf3%nWIAN-N$yF=C}@;43fX>WS;5qtsX66x zm&@HCr$Nq%v~^zUfskE`Q~ITY;#9{!u`O%@LX z_y0L=jzjZ5LC{@C8TA<}dgcJf91C4#|YTGhbC# z)y%*z+7~Ul1-$-u`a8p2A790Kw?5p}`MLAme1}h?yI`~%?V9;!9vw$}-(J!H-|z*+ zTR}JCe!Jg3<(>-rg{Rb0iq9OMu`2|8-}!>Zf|~@(1mr1v;lGeHf&!BGmplA9b|GjK z`1$NsPSdB!yL+wv%zfr~p6nuO*cz5y&#TfuC=vrl-(zK0*^wP^Sin9Ym&@hYHT-(= z*OO(kWwQCwd@1{{tKHS^D*^ns6yPU7(}161qkv38UQ5gd_y_*dia$Cs5E+OJLV2V$acpk|Ec-ZknjJHen=AW%IGzAjU}s}9Y9|JcYS8oJV~CUrEaN5sZlDQ&*vXb zA5O`c!~4MO_O1F>(RWZt6;f9V$T>Ka97;x*5e6^+VRP7QSKAetfZX!Qq1$XWn~Ir= z$P+T}BIuBGNH*vV`X0eTwNRSq$EtJ8Ifl$b?)>j2?lqIwN>3KM3$G;Jr91V2?yE0J#9}FNoa$|D|73@tYz8k%7oS zWFRsS8Hfx-1|kEIfxiO-Bkf2@aoZHK(1%E09GY!rscCkaecV0nPS_I`KR!Kww=9H+dxUNalP&SIN>J;)nRLcC78}I=j_swOpQi z2Tyim-#F;8=ll6yBIv}uK2Mi1Wz5_9ZArQ>Eb00$>obxwl8Jg^=)jw0W*IWwzBXSQ zd;(|(9#xNqzPQiL=Y|=VxqgjcupMl<0beO7E1+KveLQ}9bnj&4->Pm^i?fTf^V~c) zTtM$1GatOslM7U6x9=X#I3N16&dx?Tc03`YuP2tF2|;b1Q3 zb6i$XQ9wWB3cn(FLwJtmeR)YteAX9LMMEaS$NpnKMNLt7D98$6=Ri-w%L4Kr@F4WI zz3m6t53)xE&C+HmpJDnA@Cfkpo)C~3NH!vWFSZDF2@VM8Zeae8-2i`wUsCZ$LE9d3u~oAyodRId|E%}&kM zbM@Q^H6moWqes8YUFOJNkGnp;0Xp%v>+Sjl^@40Fjwtln719bRv)>}O$dLh0wjuKz+606O zeBaGPO8hFKTRP9`T4Gz6n_M&~rjG|J2t zJRv~;K;IpYP1nJMWJ00@x)Zui7he8*Y%SMgARGg5>L8 zW3Dm02lOEhumfy$!Bc{B+&SX@uNh{3vIy`Cu)kqvQ^VD8U)nEiDFL4~^8Q|PuQ^`p zW9~6`k-sS1>I>Kcmgm50WzRK4z>bS71#$<_^@}aQ{+RxlN^IoGThd!nx-Sd4LN3SW z_!5H01au01BB0N3vjELX>;?S0{91}XBr*^ghzvvqA_I|u$UtNuG7uT~2QWaUIazz$ z)5-5+o@E}yQ@%nv{mP}~Qu5R)`AWWd+B`iXU32*2nHBNKqrK+7|C#Z$<}h;IoP6z5`$B#{_i6M5NkIGlPzPrk!c~s6MKT@8S=r1FDf}Wat~9JDyGfZs7R%2bn=eXLM$l*=5%2^^)j6 zT+bAct9OPu!;tUylVDzEUWT54DuNY)9Qn$h6Ua$ zUKQLao{7(LKFe7mcsAFwxvB{ISpjQ``aph7d9$d%B*kj4fkJ z3KpgdQ*!I`N=sd`)@`^K|p5neg$Ih`=3u?Jqu4Gy=ZExG# zGOkR>r)cBagxP+N-D8&sGA`qG3FvV|f5Q7uRsBLz#eL^Aoc_N1AbA( z9~l{l3`7PZ1CfEqKx7~?5E+OJ{LKvX@qPSa$wn_Po%YQV% zng6S}Dj|C<&i`@#kMsZE{8u{ufXF~(ATkgchzvvqA_I|u$UtNuGVuS)z*Xuh#XUBU z%i~`4uljv%pKG0MooysIlpYGbfMmJTu~###nZ72t#$6+AX~$hjRZ@Lrzp{9!>6jzu zkN*1EZnhgGC?^<`j!AoFduA^cJbd!ulc%Srr`&0q2*_~bj(@Ga*78-<6%8G2WZZH0 zT_)h(P1arwQ^On()X{bHezV`~P&*_!Zm+_#%^mg{eNFJA=@ z`A(2OlRw<`A59)juFYJV$(xfmXO3V)t_``K6imsPl5;q7II~GGCz+G*eDFT3%B;$) z6Ex3hp2PpInp0IA1EX`gX1ZoB$+;wFab|G_Ed+T1rwgk2Y94z7e-kk2u?#<>&^Q3Rvw=KEAf1GCI+8E=M~1_85K8GN1QvuwEQ@|PI9ClZE?({Xr>HD#{F;Vy2j8x|z;L;9mQ; z@VD?e;%aa;c$JtN&JD4DosEDW+ZMisf2qHWeAhde4(7Z)Z{dN59ejA^uku&=m#JJ?gjCJxW=xr zLb8y=jz8|?;pvC0_iE&0P|Oyy=sWZhy~I+!l*7wiGtJ&4;B8k$R*`LqqQn>ci^!W0 z_XmOt-beHiEo2MX#&6?SAn^DF{enLB^jFH2a-CQwj>sbtxrlU5PU(rc#5Mn#-!#@V z*2C}NYfpQNNpXCi@!zdTh#3)Z!@P zsd*at?m-J=G+_51JM;I6S#p+KPFy1J&zh#D`9c4n%kr{(pdP4^m4LgB&bG6KM+Elt z@i;^EPz?|Kd*+@&ZwI&c@CsOJms)rOR8dvb+e9bbNtd_fqd!Zolk2PMs*35D9;gPY z<>B&hUVL7>2+=rf9JUBr1e1vJ@$&Iw;jwTZQA^cQ6^J=RCY?za4hx5=f>Z$uSvZDh zpc*LL?Zf8*-hc&(O=?rLhjL6EQ|E}wR*}bro};U&Y6_kgl~g5# zT^0BZ)UY-Fr`vz{7`og4f24Oc_gtI;P64NYQ@|v7wRnfSB%S#mxfMGpE?qI+u0M(YyE!{p&ZqP=ZzQQN~$4&DG|ZQ1Bv8~67;c#kMA zzPKqK&Hsn0q3V2aKIl%IkDrfE38#d}3!w3>LH;{@?BG$~)AqDm%~taf`-tIj;E&fz zv=Z07>t1W}%ZC^Km)@5i>i5!K>B!>_9`W!kgy$Tm4`i*KAu#`k_ZzYc4%tH%w++}A zc!R&ePs`I1IRZ1h8Qw?YBT2|tBKEMiZh1Y_>z616z5FrP@##Lq&UCTE!_&LyP zC`Ih&`#E+cUjBE=dF8z9es&){jY(`0x$JLdwF%7f;dL;bO=r0C_+EXl8kt7skUFHQ z>*~>M{$MtkwINWu!&?wJgV@K|K{Qg0)bqp}>9zDRoL+Qk6u!q{^vt>J0>R$gA_}xQSE8Ag7r~q_(MT0ipqGz_Jr~ zT_z#i%>O@oH*tUF6mSYS1)Ks-0jGddz$xGqa0>h*D*!LE@AP*X`_9NyhqpiKp>f1w z;&%esc(~DT8MF+(AdZ{kW))k-kWs&r?TozRO0&}JIs2Ubj(x}A-v)2E2L$T85yaMT zYgDJL2v>y6FxvFbW3CXW+dtGFYGl%PBjBm`ihM{(`7Tlp_jy1-(P! zkU$?`FL6*D6bUjx_T_!~KDkf+LM&&?*(f{8Vs`!-aZO&6bqM(R{Y0E2N_r(deBB9g zLSSE?Wb}6XyJ^Fp`=9Vncpa~fH&hH2N&Tcg^6fvAAIgq?M}MRoDW{9+BDc&fQTyY2 zo)V|TI<}6Xwns)`4v|A(pFf$O%wOrP^qPn!0z2~XV_0sN+q>p2ZNB$5@FIlIAAS$# z*g1yBnItF4U6h5GiNNzgpP~?f%tQ1_P`jenf!@S1bIcr22O@t5{1X`s@Y%=R!zpvh z9MwlP?f`IGaZ;bupAzkZ_Q5~`{T2K!m*^#0g(@7c#;d`E3RHmFx+2k)b!8t@+8^ra za;zLVI)2R7m^B7F1N7_FS!@Y_?d{2Klm_E0?(?oqJUa4)*T}N!R7YOv2t`UFr z`oo?>oIw8xp$F8av48#eNB(c$JvXO-Q@|)`8PMSMm4X5!7nLvbQF6lelF-RLjijsThK=oidnGa2&ckS91q z3=x=-w-7Bv5+&+{9KhT?{Q!~e?r%G(>;8*AgW@s9XM{A3Bq z5>m_5@@-;RY*_5sgl7|S#&X7b%ia>V4qp%p`j1TqrPlfZt%`}}>r-mbUR zbTy6MLLDL*f!lrT_9IiFwP|ezumNm_onarTN8|?ahoWdgdKHum;Ndtf92cS|06+fc z^mDp(*g6~%9}>qbzB-Y^=7{$HcbQ!V83NdYkXG8=X1Bqve+S#a)+MkH@~iq)Sl&T8dz!V_z zs5}b2jS7@of&Uh;2h%}yP%ja~^>AIx6eGukv*rc+g1ZCw*LtgTKdn>1Dc}@v3OEIv z0!{&^fK%X~UIENt@8~3c`3*if41Jl6N z;59gA{depgi@oyscD{u_8y>HR?xC9!MNLuj8{PkJRa;d{0yEqUVTSO1;(>agG7wYs zRE;_8-QaF?+kL~_Fz^se$y0Ldwm0$`d6<_UCu$Lg&#`xnwT6j<4g$=R3#GahSBhUto*aB9h1?QI_6lF+Ic2~0oUFZ#I-u|qVmf0ex=UJ)bYh{&S=+FbH4 z`G@&oex9xqu%}Rf7oY^fCmg%`3y7t9sUDyPC}jE}gYmI`tP7b!rYJAUYuQ>Bb8vj0 zGeoPPRj`T}o;W-)Z#-{2tI2BM1^JeJ%fdSl_Z%D42Guxd96VN!)fxgBhwynwMO0>$ zsrui_8rp^yxAZHC1eUb>gR*VVHh^c~(qL&YDjXFqR*Tj1!SliO`1SZN;V*ZR6BD@>F8!s1>3)aWi$I*w_O*{%71%rvCL@nZ{ z@TYL#zcWcqQt3=O^He>hD}g%dC_Bok+Nx1r;g9-9U4%eZVg&-Z7n_Kq#AO2iZNPKl zA%R@SfKY_n1Nf(ZYji(=Q@|9_Q&=2eqH zXV5e4Oq-|^bvx6}bS6>}T?ou&_Y=77Zcp?k)|>U_Ms~Jip8@t5Al(L!uY& z#kY#BVu@TLCyU8A5f|t;R3T8~W6v92cJRT+T>XeRA~N!f{J1@CSI89-`}BthXq7^y zkW;*W<6!Jy46}Q9?Qa&FBQJmgvVa`Uhw}uHAm+>Ya;lgr#uJrfCAq*`Kpl$|UJX%0 zTp>ouQ4+fa@b;@1s~E!!e}ozGd3`=q z4wb?a9=rq4C)wfe@QaCJ$U^{s=}!A`YPogz>ZHz$w} ziPu?HmNnY{PhykUG&+r5K_Gtt{tskvsw42OxjqO#Dpz zweYoYyV|b05x2ryA@*6|rvTrJ$!fB~?-$P-Ki7V}Ut<@hwykY55b#V~KWG3TKfL`{vXzu_ZqWbcc@RjhH_%rbn1n#nT6Uci*&AFY}Vzy-(7JjIHwyE_JTcTC>SMp4o8Qge5s7~KzK@v?aE8o*;7jUA1R@y2*}^AprEt>1oJle^TS(zf}Wt;#M{JwCpsl|O3V_^5-+F9sgORfCtpsN z)A(H#Q^iye5905tcOxG^ypG_hhsP~Sd_&AP^Gy>1xBY|EAeBTX(VvE&hJ%U2@xyW4 z=f6RmAtH~zct*PVuNz+;EDuHzxI=*NUuWWR_&9u>Ko4Ux@tyikjU&Q%7#|yq4d6A2 zJ%p8drA8jW-e7OAEWRv`$1k7?sI&TPlrw-H0P-)}sQ-WxJ4ja5xoGn5AdgWi*!GPQ@|pC2k2p+V*8d87g`o!A%r|rVJ7%YQ2>7JYm|7eo|2cfkgm6Mw zjF_!vt3JdvqKD~Wm}OL{-naQoJ_CQamx!LMCrczy-^U5e(M$8v{3oKitWMMT6ml^! zmS`Dk87q{eP?Bt3Htz)jHE=RwqueMPcn!SeL@DC9f84JotI5|1-1y_pU_aZ>aE}j< zJ!A(U7cU#n#((yH_AZDEVjls|0OabmCvc;X)641MxqQLCVBKUl3C+fP&0+OaEYibYs>j!KBXKU6w@) zj#{}nfq6MR_!p2nK1>ZueD$v(m0zT_rxz#O1gMmq!VzVYN4c%Hx> z2r?r#2b+Ud&Ktw&BOg5P64NY zQ@|)dKZ_FD1NB!SIxA>3xzn-qA;RBC*f9$)%I}ZE%@9=l% zDqsVDm%t8m8_`CsPGtNc}V z@;mumVqId`mG2bm6f2OVK$2Z@7yZqz(G35jI4M$kDZK*(cJ+TEKmYOmct17Kml!9; zk$Yc5ahKg?YsK2=HUJp~{cV36XK_~9uk1e&PXxa1Hv-=udjiN2=;U?s;4zR*WE0o@ z>wXj2L~imo`R|MO#WX&RV@?mh1o#0=^QL*P#a@e5PNiSfkvC^ag|-fLl6MA?C#norHm@Fu12B@a8PPSJe+OZBB{Kx8x7 z=(;|gsYRqEu=Afa%o@UbAVDYSufwmyv+ArG6dx4dOWYzJg^!~7|LAaZh+Be*1akfk z>VtZYnxoDTh)@Ul$~Cka^c|@ zKaEXe*VT1}x#mEkBrD0%>2w<2ZpeCHtJiAerYnMM_973wr{u%$d%g$Xz4d%O&qX|8 zPuNG|BhkvXvZZzD|4;pon#|SzuKsuR|G)IxlKbJE0!{&^fK$LJ;1qBQI0c*nPJzFJ z0$Gz}O)}CO=>;MXv%FbeOvIu)@xJ8U{(^bIJjb46@S1BU+6iO;R3NW7_{YQV?L(rg z?i$tqNB9xmmGa)-BH)<^zx#f&A6@5Xk$7C(w%3#OB>wy;Kgx&8;c_yY%y5Uk)GoE7 z*eIIn-(cuLz|S6jgveCKO!hXr&2YoMi|t}B$QR@|B8QhFdd$^wwS*@CeC;tq|K9)J zH$;E0f8?8AH%Z+jx4qk5GCx_AA6U>U=+*FRPBNG5VaVc3!Hj0npbG^A9Jo++v8NC&JMdT^ClAQXW`Mch`-X^gr zx-sY?yO6WNX*t20;0=iliD9;1h!tYkzrel1L?RVsAO6gL<`qN*f#1b!JKJK8y^5`3 z*x^X3lj`Yay4kDu>Je&0pxs6B8#Unz)JAQ}xu7@JX0aXVf_;OApU^q#mhPsa2|wE~M)c@bIe>)(NkwtEw;2 zO?T5J2;3f&3Q7g=l31daDC7uY-{bS}^KggS5$)$=Hz9|~Va5+PZV}na6f=tgU{9Hs<H^of>A9~~l1e7s{yL0Re%pu@IfSm&P z{Ouzj`X0Oo$DTX(t>KM_{rK+)c>6CPPpCLC_7r zI-)gE!Y|=t7k{ptD<6x;Vzf8fYv?!hCwr5Vo2s}Sz2Ea?8Kkv`c4?%vw>+E$(R;$e`Fh?{>N+D)&Bq6w;}flP64NYQ@|s4O;%9bg8Sbp*2ecJiGZI|aREZ#mc->=h$$Bmb-Y)h;LCnT9O4m()w@EB%$m zoOiGtY+qt8G32SIVQJWQVwGKG+w!&?HS`60A*zeliFM+bcg$Ny1b*N@5|6}EzLaA} z0ke4A`d9U;(iME&Xhsh&zQJO!7)yLb)FZe3x5QiGccMPAU+$Ney~`eY1E|}tdDp!6 zh;RLG{U5y_y?gu~FE7fAro1VC$$N>q8Qr~`@}`6rAikzA;SooP+x#{;A@t=}yer-_ z@)?pCVHeAsZQxr8aa2Uz2T>KP#shoi2OnRpm4l!{77&lsE}A8 zF@2Cez|KJTpnGsByc9mKo>%YzM6DeQV`1-j@A%AMW-wJx)pb=}bzk47?SrKHO9DNm z9|+vxzhGamZ?ZR|8~bnhw;VqG*g1Kd_*#7(c?fI_HU{}seuX^|r zy+@BSqf82&LU&PJ6#Ob5s)vzJKpWkL5(d-gg=(RCA$%cxkr<|isYApk`V;*#(N%R- z9~01cKO}Kggf597*`xZ_Cr+`zyDc}@v3OEIv z0!{&^z~5YfbUYo$yg#O6Iu%RB+7Z~rFGsv+UNqRh$IQC7*V{vl_AGlg+IvPH0JZ6U zyWe8&`m%Ug^ke-f;XNyRjz7oyioRly93)o}JG>pn<}3k}YW>1~VgI_gF0y;sy>0$BKTRx6tXD#>g!HlW zv5EdfzjUm0tfpVnM+V;o|AIe9&WYyz*+q77*SqVbCnS9|@)~(RQ3hc$nM~dn_r)~I z9)zD_d0AfGAh3%M??23w3livO3?w=e*eAciZ*X`CRwF*+pYb|g9q(uVXCM8Ew0>GY zrAR4|CxDv(c>3Qbj(f+w)9f_sLHP(7SO#)L+{hM*MbYj7MF&u);vPNf4UV1m1!95N z%l0zl?_nYOl zry_0=z-zJb_&{OqPxd_}UU=IP$!w|>@ ze5fDlnP#TJYZm<{^rz5M!M;l)-iVj7r7ZF$u+wskm_@j~|G)X$kb6LA3lwTp7+*4cHorDnWjhliC@>xnON^orz{dd*U{6FSr-&*<&B$PH+b&83F3$ooc6g7(NUW zh`Gd`U{COvK%I`eeRu$1mY-E;)jd=XatQF$+4$Lbo-j{1L(kA931m8SrfL2zy-Obq z4~B0On8%|p@GY?dh6agiAthyBY<22 z?CHZN0k;Rp?AyY(@Tcr4du$$?9_9OyTw(^&{rXs1=g^Yzgc#c{ak!5;DuJrR5Q4LK1{%;uCZ(^zh~dG$M&(U z&Z~1|t<9$_b6)uKkN2}2ay@D#bioR$s z+McE-T|G=Q$!&6b#+)%52;8civ*+wuwN_o!7xi%>JJH&z?%oJK1CUn8x2XvW+b6 zr~hLAVzUu=oKm8csLHCc)poUgz#g#bwz}P_w`$x~<5nE?|B7%$2(S2|W~k|IyGMV& zPw$Jo=+B$;rh#Z6-uB-1uq$83uj8jCFFf4I?;!r*fAAe_2m6q~?LB7S@NS2vKD__X zFTgClvZx$+5sr`}Rt}&Jd7p|%fk}; z1btYaXeS-_`smBF;4S!2Hk2I^N9gK*kHC&VX<1srHxWNO{0WN^#cgr>L_g8k?Z6%W z0pdF%yUMOU4nGc2J9DCw>ZFjv*wJ)^RiZ)9CKYkQoG`o8E`_gqUA?ZZgjdK#V18IG zC>NxQr;9fu>O8IUbVcHdM0oR82rGm?tDn`RU{X*etP*}1d>Q+HyzsgzrAz7E!R}xzL8}t#s5xp15==AwjCsbSCeRx~yapX5S zoIL(sGq0KHY&u&BYXoY|6Y_+tLLjT|g1JD6X`K!B{lDa2@?y3aO{%BHfZqwDB)ww=9C z6g5Q+d;{ON?_11RQBxti4_@@Y$=~EDeu`Hh-WBhPkL|}6_tvQELlvsa;pGsSa8*nd zliTLDwFvmLq4tCyd=i_);{N>+f5hLkZ(4Zh!+#C+*kZnzuC|}!@C(4~6}=01>fwI7 zk!%#@4y^E2c-YfV%hN`4cX$QXkTv91zLlf)KO@gb-2Lb9bND>QWAF<|7E2a;>Ob{! zdO5wb#4I^W=Js-X6=VfDN6euK`-!Oj|K0oj|F`~!Um@njL&Z?>Gy9pnZQrJebZc9} zlrYtGb#1J%KbfD*Sjv%uM<43QVxpLc6VM60g}dUeI7F#{6T}3u#cr|rO@1?k58?OO zeU{3mvX2PdN3^%?EtSQrDe<0oPo$M;C2|PRw}3YSb`a1z!M;Q_Tg@gn$;~6;fqoEq z_h-}D^uBOkn2tam0OtDLiN>n2!d(Dn`+LK^(N4fQeNHb{i`6E*Nh2TNT6iriqKoLs zYO)#-9}wRfYz{X;PP;J_;vj2_#h&IcoaUOErEXFTs2pr$Fxi> zQ}F9oNjJ02>@e~as9|eZ=-)s#khytoy3A@ji395V2#gHHf_+CO2Ru%iU(*A`w24>NAeSf`8W;$8c$MJ+lig%pL>EDA1&$sH zex~hayVXgkm|JHR{m9sDd_7OxxS6*P=BjNyB{!QNo!`FZ}(JTzzY z8Qs>lCC7!C_M|x(?fqxu8Tn))r_3p11TqJ;&|(2!z}v}o@;Ck)-zK+7OQ7$89KzDJ zG$kzjZt?rAO7|RxDf16r3&{6_uftp6Tj6d3-hN|(F~P8KSP0+z1$u$TjeHmK5rm%} zZt8c0JHnxQsNS#kt6D)VygY)P#2euo;m<_tpmoqB-XwlJ@p$4uVi++aoDo(gaPOZ% zXVB$UdG(wAP4^^_zlYuiZW>zZmb!!Lpx`Ble@BKPvi@)%Fp$73A9whF*gq_C1(7p| z*VaTeQ9U5uH}9JfdW6P~K6(Y%<;N{RYu#F}HmeO@t2s?hgT0l{*k`Oaff^sLOVsr6 zCVXALt_#|N_OE;Y-B`CMpAtI-@LxpUpS%128@?gAhjI!y1)Ks-0jGddz$xGqa0)mD z{%#7O?na*cL^hFO9-Y)CwUvlEtPXqGz8vMVb>^MTdyv5V9{2U=6|Ar;>`>ySxoMCc{}FN9+%`FFPWuXfh2weS4jwf+ zviGo)-=4K+$ILN@FXz(*!3a6co91neZH>K_@LB>sZ-u|YM+RRz;vM2=@v|7i$M6+mg+RU^ z{Nr)QFqjYKBPdhh62HXT5d+0QF^_;hVg6YD*i>(7^c+^lR>#l_K>hzBf01`L-J=@4 zFjb%MSS(-*L_hm2ev89m(?RC z6WAfZ{yJ{u)9G}&J+Vn`QZEu|h;M>#g6ZM(@E!e*u4D*$ZB)<|bT*YuAzu$QKJGbA zsZ$EQg7jhfuqtsoxE;)k&x@xgzIpP^ll;UIVib`*$R6B_--{Oyi-#3eMb$Cv7}n4= zbXuahX>Kam3X$jJD!nT5`kNEZ36JO_lqNV;ze&7j-ZSW1paw_3sy3_5aCcIS@Cf8l z(kg+1ci#j%!NRNYePWWGWPfA7u{Cy$O=HrSnR=%Fh&W=7m`g+#+r`cx5>2AP{tEUY zDyd2eo&)F$AnyY8e=Y(&Cj1`Iufom0PvGWX{5zce8-KU|aNPqt1)Ks-0jGddz$xGq za0)mDoB~dP|4RkFwcpzPd_V6dx(VFyzd*q69Jl6o*c~=Y%!+FG60(H+mH)~&+s*bZ z0<+K3luZZ!y=``zozAE8^ftYv64)$f%cESns-mjMNlai9qPzd2_NYaFpsuNF;0XY) zw=H^$9!bE5J<5Hj`XBy(@OEouTm4V<|L6AesQ$lYZn^rOIsmTzclH1O<$v<-)13lN z0jGddz$xGqa0)mDoB~dPe^CXRh$aF#c+Yyzdblk|-rQ2QlpW@WIrjZup*;Ik1pMP* z42OO}Z{C~!_AoCX3W$6Je9&;`k3IHzcAlNerZQxvqc+9YV0MZ-Y4`$;QDf9&0vTHwu{3mbc|C{(o+fTOgMZzWaj#&E=tk@PyZw zDDD^cfAoIzj5IQ-NJ`z2ZsM3cCOZ=~3FHO-A^s58<#h>9gSxyf?<_i#V}E;5QkIm9 z_#zHJxjdBr2akeE#AGp9)aUhi3){lB7CBD*M>6vP#s;lejpY6{Ub7(HO!1rv)S~B!p;7^C& z9!}^o`|R7>G3DWpS%*h5=&QAXb7PkTLJ;W^r_FjG@M%hu6WHHNrKtTJric?a-XR5NTY%$Hp?gefM+`Ru^ z^v%-!*iHebfK$LJ;1qBQI0c*nPJw@N1#n-F8W?{1d)Z!wyg$@=sDG}T>jwAnnET&j z_gEKVgc)IwcZNK)Da2+1yU!!#NZFNl<*1LauYQ++_grzWxHnu37s#n^XdBwxRJXz#Kk@rz3D9K1EGY`^-L*$L5Lh-80br zcpjoWWz4r_ZCM9m3{hQF7qxlqsJ?H+8}S~thwab$Gwcs2rlOp@VzQV_PNeWscx^>n zQP?l+KP28wcsF5wlKDw&%*O8d_k7gO&w0;zr~T7@4ljq7PNWl`5d-7^S=X!UWo21e zFVQRV8~9cHDn6jRKKK>l)*kv`_aFU`$TxEM39KTj@G4Oj;3;;B z;fBAt*WByJ`Z0JM;5L1|TCY;*6dHH<)RHiV)nV0#a`W!ldltJC*ZFncTr?N(0Q`V| zz-Qapb^rk#?}>X+{SRM9>~|DpMWb7UH~1SI-gl^nml39uh)faA&ZQFz2pbDI9MEfM8LnlGBG+B9XupTg{A2F|Bdhffm;If3-Sl~ zgT#1Zyi8ao%6i1lf#2O6A_#+UrCv!+d!Ol>>ZUqm57`3*MKGAd`mn~m2^RXXzdx4p z2piZ2(JjeNwv(OYC;4C4Ul_9g-XazgHCTmSSy(ab+DdAf}x&|lb1U`CGGe;eDz7MsOUUOZ}e z)Q6GxANjj?AaF|n4+8iVjwde4ixRsF@BqZDA0BbPvR_##UWz{}o)z!O_vCq^AOXKV z+=tiq>U-UYh5kbSP{N^vi~dEweyo0MnZJxu1Z(;iVi#g}ygObi*@|2RC(7GI5wD1M zhMi%kz27GG^1VE>%q$1-K|CkR$zJELN4|<>SeYoFV4v6*kK9wVr@T5IyhnOK|C9y;8h-Ut? z)GVsnH>tDwtd58AaE6|tKPH~4r;(@LRdrQe39bZLR2IcT78X{8Rc@kN*ezU2ln=@W zSBZV`eeslG%J4N}JTXyEjCKn)=nYiuucY5xFO7`8%j&XfXWE(9?dx_d(StH6k?)7s zBJw9{samS1?MYpMLs5@nr`>7G@G`uTs3d+Pkgo`T3GAMr#$U)6(%+WhsfiN=G9P}F zKg##n`waUliWp!9m~jNPcr5N%Q2*n1Gnc^cu%uVggJ)!MQC#5lf7l+j@N2}4e|iFX zJKw)Q@f)N2(VPNK0jGddz$xGqa0)mDoC1GB1#a4#b`Rgfu?LXeq>udjFk|mxx|oOh zp+-i15nhB#0{i}DOp@7{Z3IFNo|sJHIS0i>$<_{8Ros@vHeY+8w~mdpm(zAJ3(t zuBhSrzT7U49uIp46=g*^L=2&{zB#nrkVU|I5RZYc!CrV_UYKK_p#^WjF(Zd(K_CK3 z?Td+x#7Y08f5K+j1!gC>RCcdQ-Hvp)YGnq`}F4*0SQlr#GA_?&df%^Qr@Vl_AE~^cJnp{|6 z+vqkL9)DbMH6ff3?eM>^-d6>50ZInwqOmjInphQI6>l6i4l5GV2=ozfw*arlwFLbB zo0_KN=J%dyY#ZB}tR};q#~FSm@+id5jSplCwx;aFjO1RGX#DIaTbqu`*DYXj0)r_ zjPyo&EBFe&L+lV4h^LfGIGT;7O^>WBKaqvN>)+-6{R!U`-H+rHa0)mDoB~b(r+`zy zDc}_NlPa*%uC#*)%tMi(encHnC5X1Vtwucv&wqIQBctyDd%#c=b|#A1Vo|-0U2Dv_ zk&li&cjWwGR~mH^cBH%W?i~L8yZEl??z%JU%&=p=kVs$&Y`UFpPn**QUyGWmgeVc! z{8U+%wqA-blco@KgDzgl7S$Oq{l- zEoT3(vDerJA`MT&o3UoB7O%yzn?Hp>y`IPuBj5bE7x#RkD3Oc!UVbm%j=ddQ9_?WRT5DNr$0_u2myv<^>NF`IrPNI`QZzC_yOI7%X+%ij!{%=G- zYgg8l%{H^mU_023Cg9ay*VeVW^e(-aFXrfnAY<=i^Ra2D8q(DNg2IhHa_+Hw{v>!3 z;P0{jfZG6kU{`(@F+dGaeQjThTaNjBesrsWp2`FJz`{TQx9}ek1$Y6TkAR>3HFZt3 z(yep`l|khr-q-KzZQ-^Mzw=DQGX!dNd>#*Zc$(-iM6hQ60hDb+X4;yt{V*kNwWG6X`&!Ua^LA;nK zCUE0EoA{Z)PBwDe_Yn7qhP)v^$PTiB1bhQB@k|_d2FN48d_0rQWYdbYQO4cp@^guN zy;{UBwu>Qy0Cxwte^*k;qux=k5^+P`kO##q~Pw1ZTw*R)@#B1Uem&GM^&wrP{OVp*AL?*F@ z$m!+uo|n(dBm4;eP<$w`2T2%?c{q{hd` z$Kk(sh-jvosa9dDutm@!XcKP}pBzjM77~xbM`2l27B2x+OV`qP4UN@f^`YQUfZKo{ z!XKy$FfYoC{4Vjk#MAN9@eE;xaG)BfireD$7G*iCva9SyvynOhnGL)U%h)m&&mTYQ zRPrOlJ_+su@{sQX=J@!1f5*S$DMd>00)e?c?n6!yrEO`OnOH)+%id)_@E zDO;IVW&wfM8o>Pj2lfNQ4L^D{=mQMb!!`O)C)f#=ljr0ch@XhQ1la)c#cVNqi)cu^ zL=+&<@A~Uq0ABy-Z9!lB_k;dI^o8`l?!zhI6mSYS1)Ks-0jGddz$xGqa0>i)DS(^n z$jguB-^f4DZ}OXcdY?{VQ`q0kZ{~UNyr?WIOYF;|-hyA6RyrDX!iWBMVyD^}-EYII z4tM(K6I>&P+u?QzTf!cShXS4exCe+6m^(KR4Mb9&l;34{8E)87N1+C8#agj;#ASQg zq6R}RU_OC4Ebgyy`(IL&6kFw1xsTW;wuwf>WpFc`?73kH;S$8z1ZG_w*ll4?K7S zu9mB#+yAwEE$>X=uHmY^YTPaSMQ3d+gdD3y+1z z)p6A{Xd0A^myDyv?o41OAcxAK_L{w>zO8TJq4z1}CSacbvVGaMB=!-Q!FLEdgg?fA zjE@V)g`I*3$h+)Re>u{ zd5hR0)`jj`mJ#s$$7=yShnl=5PetICgSx za*17vdRTb;x&-_k@)5|naCZU!UGHY@`#J@j0!{&^fK$LJ;1qBQI0c*n|0@Mvqq}qL zoi}2QBCmPe0yHsA%tE`+wj*kanqsruEIEB_W}6vmtA%QzLY=pYfG7WQwOmDe=4QTu z7dBdG1y z_VIm@8GyY8irnKj#Z7^`h-2cIxI|3!CVKA@*h|kSGfF%z{0flihaSi_xs6f;k4fyK z-y+VjbCHiCG7nInqK1S&0Q~E+5tWE}Y#w{pylYaZ6l#nfqfsZ%*0Xg5RY6VA6QVnf zj5?#<9qtYb2ZgD+&J*DF9-e*I)pdp6@mMyN!RzsD^S0ScJV#E9qs?g3k$2?iL2wFc z{3!e={9Jvmh7${d1p#&naAS~P<);n*acVnJMwiils6W)1;7l+~4O3@`C3=azLLj3L zxA)adH8YKkKVE&I9 z6Pa+>Q$BCbo8r2-POu5~7xRm`%CGV?GEH>vo|dQOsIh)gzo?k`H{b_|+wcr5Lv+`V z{J?kYJ5+JLW>L!_Lk_nC4~e;YE+xzL(745)#b!m`^YFxLZCXd!eOYZ*i~0#Y0pt;2 z_Z@Zd@BH^@cObb)E;8^8(T;y6FO%1pH>OSh4>_awEj1)<{B;InlT(0rf zco~St^0CC{&E<2W8}mFo5AQ(vg*OTG2jC@$y?5l>!fz+j=(&>wQjAEVGm!v8m2~+xd6XFTHny9h2fnrL(CA^sqd@% z>W0M2l=F8yJRWukIt07ON8lA=FHt%u9sC~t9&QLW1gqn#{h;;MM<{rHv_yKOS+o(D}VbSwRBhm=e_bqG-o5UnBqx2}fg}^^I5Xi7Z zKEp@iBY~ZO%sO*)LxDR5co}Xt+f7|wmwzL^5&dOkHMY?ZY0o` zXiK2K1+RiML<%Aa5hL8b|9{uJnESp?0jGddz$xGqa0)mDoB~b(r@;S-0@yLfY#RIX z$mfHP8gBfNr-r@tjcg-B&e{ULfcFu71bp_tBv6xrrK~{gsaLQSY=7b)fm;I1 za8X|!*T<>ypR1dyrV6!S9+SuXL16wqj16O#^d()86^y7olrxDr-W>0Nd?1$)*sn-J6yk+= zQ(^!c5bgXg6-&izKAWS@fcbJo%B+X>`D{K5pG4dU;AS8FlqKPk5dQmx!a`v|RZv|E zuZ8uAV!D`y58z`0ix&M%Ka)-qg{Sx~nqF0ccPz3x51c4mF)?w@L1d*E4%d`7M?E6hE8PcJ79 z6SK&dkn(BR3OEIv0!{&^fK$LJ;1qBQI0gO@6u>@wR+&|zrmjZWeehPpZZtCD7uW^1 z952T)qsAV4|E~Ub_5VM@JA``Wp<{fMYi;Owc{%Z)#tKYP5+HOP=+HA+X7Jh5FbS`~U-BjP0Z%lDkJldu1 z%DZx8`sL!eICi|TXN{fe&j?E&@DV`nI(h=wjfYRci~L27?+-tMio7DfLSPp`&;CKhC$UdrkNihIcIvSwfUiR~0sQdtvb+rU2=F1i&aX!vhuAep^b);3 zvX4v}OBx&E5Ak0ly2ZN1*2#4;B#=2jlIY@f@v@8TA|rua`m}ypf1EeY+b{Nux8z&0 zIsxyxnPR4B@3r^Z%C_>Dcg$NtU{_$VSS)4{WBFKe2As!n=boOY=i9}0@j3rI@|i<6 zUo+Fpj3RLV4sX0K^_Th#O~;Y7_c(YQyhhxQ-;ZYtvqgLK=Y#XXRdrRBBz`5TnyRKQ zf%*Km>RWY@zz#fa7e2HfMwx)23L}3(c=O$k-;Tc-sc`lLD;`2o%&&;Ol7W1>2NeSin?2l4NT!@=QT zky@m%qtHF<9v&e&6U&GX%m?Oc^|iVbTnZM2i^9F}z44y9r><-&n*n-&ZfF`tIRWK$ zc?}PLWI}wPKZvp@s;la%jcG%P0=FWMKkTr;HxPUM@J>JmVN2CgO$n!j^-Mi;L?6+H z8P-%Z6?51e25(7Z2fz~m_bBiq0fE;k?pJ87 z059L@bd!xaa7ps zz1CdoyT+JvUh}$K1^(F;fF6DwTgNW)i#!qG)BQdC=y6wFj;JT=$)sLV57~C`wnHy| z!``r~_$pqLKvvsgwwN^+%>_Kr;m;3$G&DZY$U{$G&X%)l+1l{?B6|;BYv1wj_#ifj zVdj84?mD85=*@eFzWMm`F?LLNN3fEuWbpHY*L!(ho+GObGlS3MXYzagJ#R!nzX0uj zV&bfK)~h0`$Z7=g`sKAJ;6Qh!M6`uaP)kG2;{vXD-ij5@H#*~9lZLR640x|7Y}}kThtZ>PdwZ% zAd?QgWoZH#f0#w!z8rTJJqX-QU^ao9fU3MIN47k?`=OzD&%8&D3=hNnKIGV6SJxHp z`rlG-Dck@IAkq?(qm!f1=i|4FIjie!idgB5)5- zmw-lNKy*M9di;k(L)}o{5AFwzbz}W|@Ox02doP&$nmL zGk8nCrQsFOz&5Zn@)7U=fUkdUo7*Bc0(U5diRb#czDYR@@EyQB13vy`Sy_e}!<%tG z0nI<|2k=@vRZkV(W4{n@_#1vvUX+0d#BJ}k2mL>8HIO}dSRdB-S;q*x7PwDAmY@6O zD&Q*MD&Q*MD&Q*MD&Q*MD&Q*MD)3LMzyh8@-%tntoVd%3z#vkJs_6mE*41lHqo`1L5?eJ!NzL`%~ z<7-V~o7lpC0GWPx96z!j!|c5THbK}MHW5w40-_8t-A)g0%k!GN26Kdnj7Z$~pRgyw zUhT=M@^=pWAnXM%0yNr$<}Y&}~e+pr`n$#5S5?>+eN;WoV*u|}`a zxNC=I0CR?kW}+!f91ac#m((SNY=)_NsxD8gP%9Mr=lntbpdf+py=?@%`q2N6iW?O- zCo(5;D|#zBEtnR(uijT#gRDVeRahk`2Ta`Vp)3YMs<1H3@VA+U|GJ@Z#T~H|Rt5kbS5h>UOG~!mU314BOlGHnYqu@fsjg z0ltxV55kxKclJ9QUiF0o52m&s+)QbznPPS{=KTHnlGFc-p^ z!6LIL^h(HRGupS=+bp$BZTFddrk<^5OQ}+-x9+VQo5rE1BDC=E%Ij*nno+^1pd^ur zm=&EBHN=8R+kJyn! z6;s6wWCIzp0N{g&pN;%K+&NUV6>TYEBpbnHk&$NVwBCa+1{Y;?&Of%yYf}zxQL&Ju_DU zR{>W6R{>W6R{>W6R{>Xne`N)>o9zbsO6cKn-;5o330{I<7uN+e_A|r`k={@5=kRiP z(}>Y*G{gNqdb)=M_SI!=S=&f75*vuS1hUkSC3uV&NEv)-M4IrH0G|5C`EkBW?vj_h zOI|b4Oq7%*CH`(kFQa#wfX@JC2G9m%x7qD>wwJd`Q)Uv23DmwCxJUfA25gG&J4}4AFPC?VJlD1@+4Uc&QGXK!;jv)3BtB4-NU3HhP z?9Wib-2*kAK+ZkpBvRBQcx+VLNtmrirgpAn>Pp=1ha@Dsz}(g_ojTl z!NfkjFPse=PzTgNJy2sl@mN3B*@A2VGzA~okHTz#y>_oXYz~v+pn-|ivAQm?R;^V( z5k-lbL;?cY1YZ)P^=SRO{oS52r_3xn%hn?163A9SHr@&Hf?Up)hc^&U%#%5H(+B?t-15(5bJ;y}&m2~VRY%j&EG4en>$aEI%R|49S;2n0KfK4sT;?P{$?^B$ z`G9Odyr#&P#H|YEMQh}m@E!!O%K$sT?jfK(*c@yQ7DN|B6RX4uyZTPHQ+U^cTZp-G zt_*m<7qW#6xBu|PfH!6~mW?GQ5)iQj?q%@0;{A@h0CyYkul$&FPs&xmRlrriRlrri zRlrriRlrr?Ur_<{QoUHOFvlLfSVo?aZ=>uz`0n)*y~I&|luJ)~1I0jrJhUBVhk=e7 zJsC9p*g+SyMeRnuk)zjx4t^mqMvYNtiMQBWVV?v&`y@VzBPUSOuYO)X4}JRg;(Jo| zrxJJM9l6ol=yenw!#jTbJ@m}jzan?=5B>+=EA|TH=iMhhi}@^Os2nQC5K#gecKG)l z@s4=EieCl(eV&{rANUXaGQ=D?N5U%*GYQ-rWTo7KoHnP;&+^lz{q0bn&_=eA!^LpX zoHq}>4QkjL_IJugY)MXq8wuR$$C)?-{XXs-5{iUkF;RpS3GepX+P2msFt>m%ADM^H zx%UtH2k%j?BJ}=4^bn1ki^K$O+0o}i1Av`7dhdKXpWa0qe(b0ZlLG=C<9~MiU4kw_ z30*=DC9rG15!?u7s+p=qv_*7wWOk$>;Suwr^P?ZDkJXZ3NpO)!sZx?szqKNJzc9bA zN6;fU5O*LBhIKhq4po`Jjem`xMvzD6(YT-g&U|NZ8;`!a8R2U`)C*h=E(h@4n?Q6? zUDR})1iqqz_!5jehB6$D3 zVQ-i=I(%FeD668DSIaBGN|3T33mebJbLjQc=rkI>gZI=ug~t7!y=Qxho}usJBDsj( zJ@X{yM#!T?PG&s0DS>`3iA`dw@G9Y5cpu(}*I{*ND?69H(Qot~VhWo=(}I+2uAZym z|G$s#dtQ11q6E8hXnd8d>yp^ujOm`CI6C7mXjrX`rxrwN|Xw{{jzvjyfefK zv4ULq(g|d%A0YA(RYg^?op1kNK5pKA?+4RbrKh&*Ssa#9e(?!-Ecfb{`VZ(Zj)G(4=3omuw%_hs{tk)N@%41X+TE>Y%z8+#@HyKZ4Whw5k?V3s&eA8lHd9z3V^+!}V~T z%p^1T{q*E2ctu?a_4XUhMtTOr!~Q>m&0q(aL1uwkpav4FgVjMUol7TDiB#pFa`1-u ziGY^?JO$Bn7bK9aP|y~%cg6!5qPOzYUupoKhRFM)0tUj1`R)cWYQ=TO&y z_crD=&;UFo@LqDB|9|&SH~08l1zZJO1zZJO1zZJO1zZJO1zZLGYXxwZjlLiK81&@A z3i~p68TOC3&Bh)cJ9F%!+q3qhpfAK)*;aNLUq&wW3Hc3k!!%>f7#ptWE4qx zQvTFDrEBk;p)Vjb{HOV8{-O7wcZeV2Tjf^y)O+f^wEOVwLtkE=Xsui8)>_JNH@~CR4&y#Xde3ep9)R|1$99^Sxr_2YypdV z0eAqS|Hm8v_Z($;S&lmZ%t$)h&X&`!G338LgUtxv8_=NOYlg95;Xb{)?QY|lcxI}d zYT?m{=Zl=kF{CTmL>#aO>>2_yoD@6-$82h_7%YmB-oK$}D4^5FT&o_h$9q#I*30go3m4BWlo zpO_)U5ia-dzkZ^)e|Hsd6>t@B6>t@B6>t@B6>t@B75KYWAeYS*_M>y`9J`%JL@ZW| z!<{vHDCFZo8;w0Y^xN==#~t+rc7aVLHWASNL(>o6zpunsqAhRBv)Zf{IqW5QN&W}> zBiv`BzegXxR;~^2vGF~+P@Vv?0Ef%rGLM(X!|ini0=M9ud1nq^LhRzv+y5qh6Suru zUTMFypEWjXY+bLehg>(@6znCS)yLPK;b%DX3HUh$yaFDr_5F$7L@zawPv(35E!4Tc z_tL%eBsEFZCY}-3h#&Qj8eccq4z>wZLRBUx6a21zSMcuplzganEIhT&@DH0YNo1&*^r};B{?9bRU27f{L0Df#gw%F%4l}*E3fgy4Tr2=M? zJH<}A1Sm}of{#TUiwox$5wdE-KT0q)83usosn8*bjQ7hZ4Hn`M+?01ZVE0?#iefxC6wGr<3^7OzFqk1jkD z%M|*@!JBZpnNELmz1gjIYs_YlOIU$etyZi2I=`-K>W2P*(4$x5)o7dDo8#u9j;RxR z@ZZok^g6T7C!xZjM4r03$!-`n}SxG<5v%13aNmgpU=yJ%$fA z^-X%$Owk{ik3#>5VRo3ks;(-0-4P-_0lftD`tT*JK_FuQ^9S7X=QH^XW(b%|lrSaC z61IdK5L>Y4{5j7cGe~$-B#}wvX1Ttz*WFiz*WFiz*WFiz*WFi z;2&K9?9*4-RrVm!hJf!M*IXY64g?8JLNnXW4sV>%!y|7UGl3SWg~Fcx5IYoRtbN74 zV%Td}VwKnsK7?zl?QL`0&`MY@W{Vl_0-)u8&wJ0qO+RkzE6R!zIqTTh$J6mN^wY=_ zfJXcwAqnjMFB5n9T~2m&8lD0bS;g=k05|#2eeYm9LVW;o=CMCt$JVixc4g>cxR$RC zHT`4w814&SZX}#1|9=1h&5~t z>ms^{r^J4~pFd?!*$ew3yk$RSPlcX#*pb8UE}2b6zjMkWj{$rA?+Gm1aX$bL0pt-b zBA@--1n&4t1SNt8(FalZ{39m-zW&GbF&$M=g?&CU_n@nX1^^k3$n3*?KQ#IDfA$7> zIl%t`+5&j^;obwjjceIjhCjm%0B!`5m?Wk%0pCEdj3{f$QtIC+18=-z1oZN|?e5Ua zAGr&S$TQ%LdZS9&QsG_yyY}7ieYRLH)`toBMcy*PfNpMK;#jF2NFZa})qt`a&G z+;xF>N3M?3J!lA)$z^h<-D%--0j)|Z0`~-~*sAa@rU7ff zN)ga#yi2@8xGaEw^v9ul@U8-`0IzV+u7{an1~~wa%p-G@ z*sXSlUUCog13lSJw&w|W13=&Z4uO8MCacMyGlv)2JU)-NB4)Cg>;k{Q&)IVpzdQnW z{MA@B7DGU%jr=#{>_J_F8+G6;$SxL(f0lb|X*jpgyS4Bc>q^@B{p7_BDf_ zAim!WK7-$tcV%r}o5y4ELJc-D$%8Lzr1OJQt#ahwhLl1|%IrtGk zla7oz%sf6}pM<{im=QqVk9k8OzmWf}_*Tp(@bi%Ww}mK3ydsb{P=puZ9}?(cPpA_L zI`%HaSHymzuqjMQe!J+hVy9Wh*M&0(_!6MEJWfFWfSJcxbJlbq2I_&j1pyy`Tfwbh zG5Ijy)<2iYW%8^1DoKze$fmRD#{~QZN>e%meCzNUAqQYoFe-ST$f~lcFvm}gSJ_Q= zgKU911bWq`wyFI~{iWbHaFl>&A!Zbq4~#Wq%_IFN%mf&u2kC8Qo7v1ZhdF&enjb?= z|J$0dZ`<)~JcFMh-Wz!A(B~uLZ~z;?`q)192s=V95ZZm_sb8R?DmZt|Oam^aKzEmDi(1m3%N4F?i0*bAECtYQ6$h6L_SkOznvfXf5? zSASf(C+8~QD&Q*MD&Q*MD&Q*MD&Q*ckFG#l)7G?O?bsv&y%PNEupe%vTB#{!in(cT zT4bXgvWM*Z1o~y%^><($LSHoW+33TOiPw|$Wcw%w5Pt{#@>aXm!Yi!}Z^J(!F3ZcZ zpXet>%h7VOH`&YXXD28BI{s;KS_~n+XWz3LwuVI?`jP#}W@TB~X1m#P!38|~;gz43 zr{!g3S$W1k?^Y6Jnje&WESr1#v+@9{?Q!o)7X8;1`&Ia`Be4|uM@-mEu+egWPKHAPKvkR1#)E|}L;;*}^7vkKo!UX$>-fIbD9m;3}g9FRBgHi3H? z%%z}d@dz3-gpiG9$Upi6!##Lc0apQ60apQ60apQ60apQ60at;4Yz43%&TI3AJ5cmh z$X#Eqm+PIu&Hy>>qwJ_K>wLf6Z;zYf=CZwPkrjvj2D^Inpzrbbcqh?G+~IdZZ@Wgk z5q~5eiNowLTTNikJ)5{7FUT*%7h=AgFAK#KifKi_$N#l_9roOqBcR_uW6l_4t<_*P z81(PSMRI{0x3;V;%S?HIxE;9UU-B_aK(5~u0y^-wxi{`G-`nr$vS5*&#-_0ki0{mIX0zTL{+;+NK7-~Ukx68*KZh0qdIV$| zV*d@j!FslyeM-Q84;g>2)GO63=oVx%+01kOT<5p>Z8=>|L+f9Z6=ir|jb@`+ZCl%Z zZaybP$}rPhH`jPCz+bYr?H&3Z!gB(dfLVAJevw^dUy3iq7ycLiU~jOOfM_5a$U%G% zr}zU>Rt&NO*+90-?y|V|fXClF|M-bgeG>x3JC@7Q;2FaiAt{!VVPP4YJX3e-8aKeC*+izFX`T@bud&_L9>2`*03`-$PGzpI9T-h!_H2lZiM*@@P?H6JJj3fvSNwukK({0n}I-D2qX zk^lBgJQLmh?*18ZMr+AX}`<2Bk<*vG`a_ii> zErA?`6VVgV(nKX)Nh9NKVlXk-WH(vl)WK`fBhZUu-;P-Udh9+#XVqCH)5*eJ_)qF5 zH9I;xnt{NLz+fT~5ohAeVPXJ*yMr;om>_#Jd$fn@p>{-fMDIoJMc!5KDrokR6^I*v zBj$+NuC^;*`}#bAn!U~6=FoPa=Fr}+A>jM4mcWi1{Vw`)54M)RNTq>U;O( zJ&D(DDxXRY6OTjBg%}wV-UZ~bc}PK!!(vtgok?jT8B4|r@j~Iu0C|_lCRkt=m}Ug- z9x%gN#+UKC>@NMpBb3_M@Bh&KyW9VN%}1hpBCZ0i0PaEG~-$L@DB9`LR6bpYzue<0yk~ycjP=5V-rs&3R+q zn5Q6C$yGA7pV~j{9rg~01ERjHFTW-x5zr89qV&Ie1bq46$M=Evfwz+AMO==#9D|ue zNl{XK$-m^kuwU4GKA$7U5Buu01ZEN4iQ>Ar9z`l~%uzb)&Y_>(hxS7|T~F6lR27wk zXlNQ5?AJ4?Oe!N~+T*SqbA-2v>IC{{%mcC#d-YzuNG(!@b>T2W@mKY$S{Gdx&7d-< zU(K(S&^XZS(R;#d#q>74-D~!Sd4acs+W}?-$y72mC^{%QE;25XEyxyhRb3VI0k{*u zjH0Hhsdf-c^-}$czY15=5fd>52xRxc`ww%DFNmSU90D_oRs{4O!`Lu}=NHkD(4!DD zgHZ%}X3PxmccH<+*N@;MIQHQ16#UeDYR=d*q_Xc}-)HYLWc}gZ0JDPMC=VjNOfPXm zkDu9#_u}ZO;Tr)>J@)9>)1yYI33yhHGvf?$|4z%(60a}388Is$`%0Sj)Z%~IKP}!5 zm^C2t4_=da9`A~G#Rj&4C6b9GZUfNQza!oexGibS8nf;MZdg#;GDL($*d>06zA_=l z4FaAUaxOk33J{qIXa$lI2?=Op@VKG7TTC7%>1Ax2k#Y9C_Q4P^U^cJ%v>`k#FolD8{SJ)L+$QH5>h~0cQZO*^o zePkc`jKIDXTJPV@?`9YuMvDDFCX>^|G?9SVL98aQtCn1nL*NDu-@jNd)@wvm zBlg7Xi76}#%WNW>7|aKA=-~qvu#fmh{3TsPz!RZ4Z%!`s9eF3+N#kzexIV7esdXx) zPO0IgSWnl}sZ=VpELaxAH}Op~+sxhz?gh|_qgO3ri`WLHff-4_+i-{8p?4F-2zdWh zCtgQiM{#q%B(fyZENB+IW8Mk((sfK7gFQRE_Ewk`rXm5)hPKhR(R!+$`ZoG)baiBP zq-;<&fEPecom0cl0owYwATF4wCaS~4S$ozlU<(*-JLc#)VP-%})l%WU0loHl0*@QM z{kY{H#0D|=J1!&O&wxG{UJZtR9Uykt9Tr&vSNT=`fLJP*$_~5(&(5+lysyyHLpOmr z(p)`P-?q1HJKm0`@zQuLh}NRDfM3Kyu~58buh~kXBY}(scqbyOvW;nDpy^*_R+*#x zD6h_{Gvq%Yy8!b9+;WuVWkYWT+z2eTi!J5>?+|z{Qb>Wh&tN%NV#aipU1hje$w@q5 z{|m(wyJPQ!o{6~ij}p*9VE12_C_&&kK^v2tNJQW+!u9?CxQ{^hfL#S#1zZJO1zZJO z1zZJO1zZLG$5f!GDQeJ%LVS)M272dn#OLaBHCxZt*!!2W<-(p0x6{ZiOe-~>_m4lr zopyWM-olFjJzHj(S!VJxg}HCo`99%KLLY*TqNDhXK;O2D@8Y+_EpdZ*BA>{i-cavD z;$Y0dn7XpAY$lqCKD-Y{?f|ml;Fk|i1mwWM*Zvm2#i1p~JOp!q5o!db)?HDFY$Cf; z?Nqgc+QF*ms_2>EOaLFhl0nG;_vgQ{-&lQJUvCaJ2QSr2l|U!ZqtqzXL-)|=JJF}F z)GPJV;Azm57#bNG85C8Tk;FLGuuE9P{mfU_y2$D@H+euF-OcH7q&0O zL;@cEzVQwG_u#9JthziVkAW6j(60hSVZX4CjP;drrR?f=^}C2JVjR(mwPF{|MU#oV z)S;z^RvdnQQ{_|%&peMvOl0x0c)k7JetIvxH=97eS5lUg_xL@&#cr{<{f3X*yYgMR z!`tC`zURLYZv^}Y&k)FUqt;n=Ct^ix=n0TaBn$h`1^xp6mUqiL8hbRhoL|m=E}zS@ z1nw7bBk+d5;XkvV8D<7$y|NxM0-;yOuKQ#5F{vbyh5aBr32;Zz+O#%f?O0pZlr_pK z3%@&L0igdk+UR&D9y!e|HJOMys*Zx^9iBr=)6!hgSM*!NMzv9W8vQg{E2tIV^@88t zmjpZsP_IF1ka`e22zo|)MlmNCOgR88qb;MC<1WX29{D^nDVP+LQDqeL^6({S9c>-G z6kG}ltHKJId-Djq?$Gh$=HRBfso=qon1Ht-=0URv`1+&Ahld~@$29`8Bk1~ZHvkO- z@(STe@QwY3w){)%QFfHl5~j11L^6}ioM-35ITJJ&(A~omaT9?#%ycnbpjXdNRP-u( zUx}~6{6*yUVZZ_32F#$~d3eEIu+RhGP5}RY$Q%m2DB=0Hg0JA;vTy0a;C%*ST?1ZEWC1`Y^ETxk!Ygw) zv647I;I`lvfvkZS#A_l#1O(~@EyRC*{bN5Q+yi$Na20SBa20SBa20SBa20SBa25Dh zQ~+LY$UH-yAF}Pn=rQ_Qa4lF(e5=3JH;9eIJTuR%H~fQv&_}PPsGm9mKq16@k0|SQZ=pEM(Z>`QU3RdzHOvG1X$=1qiP~ z?4c*{2^{kc=-P4rjmLkTIK$46>R|{aANCCUTJ(Oeh$^fKD@XqJifCjT*+=@3ZcAB# z*qOs~KO@h`ac_^F_y#e>PO&+34vjm343wFOTs>q7!Z)ys>Y|nh%fmZ<%m&aO=OJ%I z+{`1#KC{Ve-qY{t)IsXtN%Tn+-hR;i?}+S(TqQD*=fLCOaZpuP)jzAB)yc@o$d|#F zXi1FUlhO(jLj@OsrvEu9DrH6WtF=I?~ zq67i&LmF$C6ZQn9C2qCou{W3v<{KidPOIU4fb0O&Vj`Q!Fc(5LL=yrtp7sQ^0*(E~ z{wO(0F7Ot3xErY6boQ<=MO=B~c&*i7tX*Prp;dsygLF{6?!n{Jfx1sG%%oFoHc8|sXF5qK` zc@(?{G1Gu%;s)`Mz~9B|jqe>LFynE3|G(m+(LD)Q0apQ60apQ60apQ60apQ6fqz{E z;A0Pcdn%DiY_uEgV!F}ZL!kG>ZWmtdB~3|#9Wi|Qp#9FmvVMje>z|6Tv@ z`u~63$BcVIt^%$Ct^%$Ct^%$Ct^%$Ct^%$Ce}f9Zzwf*}PfGli@*2Cw@)7WGL$8kv zxXb!7DY}zuoI{?fAdJ~urAR7+)?h>MeC`8O6wfai$pLHum&s*weN8x80?;A@E28`*u(T|gI)%td$tKnuUkY%|!? z_vXDh?lj4^uLE=dC-@1Tfp~3Rn>ZDxzBXSQ z?B~z2vkdbqXibpQhu3)r+Y#Oyyf80JWn#POg{^A5s~MJ_tieTFT4SWu`zVTF_sb_$JyP4(*XPpKD^vRa20SBa20SB za20SBa20SBa20SB_`j+^YMa`kA2-~D+We-hDP6ALVfhK%Ps6M3a{@itJ#)`IAaMWv zA%PyLKC92*=~kY={qtc0chS{YHFk^mlvqr}%2-n6pO)Vc-M#K!9wMio)2|a#C#IAv zMNWO0nfrOIr`@o$PPRuPs#D#cyFj2N*4h4LoYdG#aH*LdnYMRFbQBuSZ1D? z!`B^p>^pQ%aGIayW7rs$OXL#$ynY^h{D;Y5vZ>e9+blNIcQ_aNy+L;lEjsk{UlaH< zc*_kJ!$k|;g5xHjv1lw7NrG-0GKox-GWDf5eths{D5MIhJkdPS@{#h99zlFvtv|r2DaE zzuj+J~I^BpI`xexEh*Vr}o0eSbs z%O4qn@B@VZM03`hA!7kq2I%3D#{fTyBjkmM8OwM2JDrYzpTSDCQhgJA6Ko`qk9b?( z*1xD<6nrkO%BvFhBIgL)psXVX5RHg31bhNfTg*K0eoR2%wglOSn5p1CAq-li|L=ae z3b+cm3b+cm3b+cm3b+cm3b+cm3jDvQ0Q%7CqPno$@%t#~0`h+F|`lKb5_ zK8e8odJh3F{Wip7@mOHDjI2QHgHN$jY`7dQtNGRZsl+G5x8AqjcsX9~^mcm4i^tc( zgC0E^vi;yu5C1pxfj23`9T@_Hyg^=CkyhY))%WUq8^i|jGf|xA!n^PW1a|Yd+uka+ zipT6R`$PO8ig-ml%tl7Y5wfIL(!(sFE>T0)2t5Lh%A*oD-{|WWm<6F<9{Rnxl#{rf zZD-i8qsPsrvZ)_~9|QE0*pp+vg1X1)I6cG+F=+15H$MrU1b2zydN?@;l+(!RJ5KD6 z?vLIe(C5RKA07bkql51p`~luo?w!50zIRHS(%vJ!BXBoAjZfnf?L?b~z`h^(fAHq3N@TDZ!u-M!d<0MJr6x7V zdasyY%*Xrjv3x9B5qpU$UKI}+0+>-jBLKe&yf^Wl{FHyn(Oj?R>-j}-5pPEUT}UU^ ziM?;%w}aVW2JZoQ7(my6~jEj*lmx!QW|j+T~`sSx-P80N=JIL{r{0oH@j^@k0Ik zKDLix7oD6Z59bd>SP=%#KjkU!Q~y)H0I|qhgOhD&9RZJDgZXYIw3HbfPw_qF_7y7-yFCP1AMRrQ=ybDrSq%&YF~6;bVl5axW9<%s=AsLofX{>YzR6MFlE4Ni@v-c z?aHT_Y2iNn5qreo(+^EM*IdK%AA556{$rmFZGU!REhXu}_pdO~)ATgeZFPH^z&^Z} z>?J?qAMpf4DN#z`_u&(W-aD(vN{)#W!(7Nq=8`$3PAR-c@aOnm_?n6YW(3e?JR?^6 zEB*a)zuZN9POKoxd*!`pa+<{L1GF9R9K_rKul-8`S`N&UFdOiNFOUa_UmZ*b120O{ zsw#nO$_x5}{=|L~&H=ic?xCIqzJv=1=rpw4EI??Zp&dYe+7*6^_VT^F1#7|3%YARY5AXID+r>5^f!ApdvD@r6cx=c3_<(&7 z=FQ>W;X4Ak2k5Ke?_bl@G~IMJJbe+eD-kDFt*K$PL7;#gFz! zJCkUq+i7W}$v~{pYczZu@EW2&N1fm^u#_+530cBW-`<&ZX1G7VYgm{U<^c;>Sy5I% z3xN#Cj5cF<7lB)fa<-g>uff(}Ymmiev1_#2F%k&Y+K|BMSKi$U{K>UpE4? zrPTy#caea;Az#QlM64I`ew43#C|y)@z^{zPxVth!_Khp5#@L}K3b2~ZxiUNOY72FT4_UXLw1be@j(Z% zfp6fLF+hia*P=M_gh-)N=)u9@;1{|--xl2#9T^!J$s5fZEl0p7U@Xz!^f#S!Cw(Kh z5!8*=jZTZ37WXvrG=f|HhtY>o)EnCNy<%^8XE9cc6&+*;iCYOg=DZ@Wz-!sd_Od;6 z5B(RBl|1s6=p`DSeduxF0l17WrW#K-{rlh5$c`) z0MglXwhpVq29Xy6d@WkqmUb*3%cm32@x#+m7-1HvMQT2Qti&iWn853a+>4sT90J}2 z_}_xN18|?At^%$Ct^%$Ct^%$Ct^%$Ct^%$C|D+1kwzci&{Bz#kwzsd{{D=MRY#A_Z+-Gl(=qZvwyH*0eQW>#ud70+r6B zBenZV^G3hX=k0lmUY}YmFyCPNebaEs+eqacV8}^E9|e!h%#X|LFjEDnu`Ji zW&!XVz}-9M9q`q|oi}b9_7M-wLj!*U>~jMX75wPvlU zPrOfHCmmnM*Ixu*1b5UOwJW+Sx*)P3a)szcG!L2w2crk0jdUXoeE{wTHb*u`k`trV zXtjrO8ZxL1p-y1FnQt112BIGUPY3M2;W+?}0%jOJSx<(W40t@gLqMa^kAQ9ie*So0 z{K5a=s4wOPxC_a~vxQc6=)Zp_UJ!?fjLSK*ld~e&^c2Ql_R=d^y z%6?_IqsL5Pjag&xPv{7sGngypiex+)pGkR=n6I=W()eloHeMU=PyQ#rC@)I*HR85l zh#Vp@KY`EW6#_m2)nv7BzC-5>9D4n`>@LGS12h1bW&Egr)R<@WV!gt=2>2S{#^DYz z%8WAO^f>)ey;OLw;=NExl~Tv`agCfzh zxl{h?{pyt>;Q5CeZ|Df1%|~wteLQyc<%qU^TR%^1o>=(*wTNvIn5H!$6Vo+d?j(SkG*Yw)}Pe=Ef{nG@cY9}IDGhU2cDa#rmN{6 zh-G$}9Zuk0ybm#vPvqF0qkqP8MHU|X-#;ZDnMaf&H_>1>41M`ABCF0CeviC5ufDBr zs~Kj7f%o5ZJDpthR?t<&=};SgNFUPJhtFg4s7t-e&e$`wJ^$Fk8v%Fu*Yq_FF9G=b zJ%~Jrj3%bUO^KTwnN9!oATm?UR7r@eLDpb=WPIdg+{w5;s*lR4bLw%yxBxSR6efj% z_hCi?ehPTb@VOg7D5eU~i8) zqc*q!xX3S3`d%LnpTtJ8kwh;K|HlmU&VZl8L^)9o;X`<9+uAl#jnsGKw}0Q>x0rFj zzYku5C)f#=L*x*c5hdgaIdTPY!+%@c4l^1s2k0O=2xJbvC*BjtWWd*976TuLFUg^@ zscCAyV1)caCiRkfFUc1GnSQ8cE}M(e2B+HfY(2xBM+}b%{VL#p@B#mTd(30yiQDG3 zK}KPI;&%e?;U=ny%5Un5%%R zfUAJ3fUAJ3fUAJ3fUCeix&rW0`;a{Qhnk^gf|@{1a`_c{-iErNK1aaIz6*g{XJr3j z*Ikm8WC)6bPks#oxBa;DK25+IFE4?7dGufC%a9?EkElkR;-~mJxlUg8E|a@{5$}Pb9HP z>`UT5eL22AeE!N28@-JlZuOA~f1M~toS-cEVyqY|VM>_$L=6IaZ}jkKOb@a99V9e(aCJxeDu$;_+ZRqzSXIodhe zEz&LW6VV`O5S&maR3wN5@c3^;^oaC`EKy6;d-^@?69tGNMA)xV-wS`kGz9$a&Z%?Z zU3)EEOYc+r)bwC_5KG)tH`S%+rD!+RP02t8?-KCAhxZ_I9O3<^j55phat*x#{O}sE z222x0M3K-Vu@!Gc&U_E(IwU2>okn}!o@ch1?MAcF>}7kyI|9r>;PcSHHVAzrckms& zuBmIzva<{xirsnl&~qU-g>s?1>)rL*%C@orQPeByrIabEu8CeRRf}90wabyC( z%K+K(YxP?Fi}}U0B9c>f0e0HBfyW#HUVXT0zEtsRiaq@Lc?uf6OzPOr{^H^5M^q_Y&R<%?L?ejkpQeWHuRO zFyh|}6IluP7huPqi83M5d+EJl{xE-nH^Dp0&vG0oz{lV`f!smp4Du1UXMjf_^a8kZ zfFA&IAp6_?7W#)b>W!LYCK>GZhnwLB9)Hj*;6?!7)9L&F$9`P8C+;fXD&Q*MD&Q*M zD&Q*MD&Q*ckFEf8^UXvvfnDwmbwm9T{1HGey-Y1rmx;V4ueq+SD`fwT(PQ+V>Q4m^ z`*+#9Yzu*1YDe<+Lk?a^ThgMJ!oF2$rE&9(?~C8hL3}_Q;Yav9IZxj9ZhNg|YgwN_ z{|~=EX!ZZo|3h!!`hVB|yZ-+l{qf=+ysLn#fUAJ3fUAJ3fUAJ3fUAJ3z~86>xp{70 z&#&jh%YBlaWZ?sVJUnQ`=c##Wr`{Q6)WK7}HSq}n&o*SZft_q8!@V|k{X_XsKALDF z+K9%sad;<=eJOnNuxH(3w^+diFDuK+CEgP6fIJ{~6REsZ-UV?X)Oq92f3?4o0%4*3 zgnhzV63Cf@hJ1iGzksn|WFvqH zdV;Q_>Zn9Ik#44%sbQ4=cT3$;XY?5jKZP~HnjpPRZ{ev2Z@fPVd@p#)!w(SJdSohK z-#vZZAApn*pnHxbyw;|{-`s3+jpfD8t_pE`+7Vg!+nr{m|n^B#Nwx)adr z=a#wU7y|iyL&Ok)tVPU|#t;iA|FEHL7-lhUHk(ZXmVm*hF+0o7O4(8tv#6fDXXrUm zoEH!E`@h-WY(HWmo5&`J3E~s)6YrY5CZW-|X>ZzR=9z)^A9pO6CjsOX6e4ce8==tGL>V!8&=)AqELSS6O8r{|a1Wj2~<#Neq!OuwPrzfp2kXJE@oOBJYcq-B z1m*<;`9R*-YfN3?c@J59CkT?`d&mPob^!bVkw<{rf>C@FpUft+x8>WimZ&9ecsIPJ zep7#gw;|LHpl5?N99sDXbc2o=0X*drdI`NHdiyVw#w( zYOBJ1esN++WJv@wgNo6L(Hts=Y8SK%;HMC4V{JRa=RTjy=CXZepGj;J+XN;-cyBPp zOfkuA@-P#io~>s)u}*YF(V6YGyX^orfW5EZ*Op#R6*$@Tw#hfg&37+eKh1zZJO1zZJO1zZJO1zZJO1^&AVz^}fg*V2m-F#;Ls z@O7(YYuRh+nrap_3%=3cXhF16t<+32licW%QDXZJgZ<`IF;x^Nu;<18J*7w~=J9!< zZyWBp;oa8BcCzqdhu3;@;yS<1k9tSFw_@IkX)oG~jYJ_?NaB0FOTf<$Glg!f8yiZX z=fut&y&L*D^pH)6Im7{RAk4MH4gU$EAS=kQ%Z8Uc?&*BCm|HYs%~)ohnNN{ZE-dFP#^_fA`7ae&1EVRlrriRlrri zRlrriRlrriRp9SdfzX>@=9AcQKDW;;dURyHW3P%GGWOEr&3FU9xEJh2xa&kOjGh&@ z`tZhw$KFc5k|+0)dr4(dxs<>?0s3{^1tb&6#Mk_5K8y`x4JeELq4&_69y>j@v|rkv z=1ub;Ph>DBb+%DJ+bSIlcATggVe5yxx+*=o=iNG|z&IbZJg_ItPFEqVX{WA9C% zcCOdA@9*%tZe*4+Wr|XU3Qa;tnGzWy37Hy<8AFs%M2X5&GL#UC6b*(*nQ1U9^B78@ z-1qhS4)1aN_S$Q`&%4%tz0Z2qde(05{k=bH?QC)1*L7Z3*IMU!9_Mj@Cqap*L?rRW z*#UD2cd1=!i{7HCOMep3OOJc@;dXeUv!|y%efP%MarQoQU!sMlPQR&bYNrDBn!CV8 zyV2$_In2@cXnc>m$IbO~ktW~Y{|M-1z-&bB+3DXu2%L-0#TC*O(#+0#ApJnPqN!;5 z#(m?HfL?#OTrQ`*_P@K|aZ%6$PWMe+d0XCI38;PF@AfBsC+po@G*3M3iu$6SyXDW! zXQn0C6Yq)d0i2)^`2Kdfac9mT{Fi;E>g=`^94Fmljx`K=LqGgWa1#v-KudmnC`Ts6| zm(Qu^)HR@+?xr~(;0?fK@TvGT(PFGrD;3`p*G1Pw7xV?aC$%TV`OY4>N0#+vJ!c?; zz`l52yvOdbGe8g1Bgsu%=~sH@77TSmamDe4dqO-R_5!{q9+VGCW>FLY)JagIUrAL` z^W;3qtix{r?-hE3JKPr3VZ76Vx_OMV@F9o5fPKU>d?o*83PV^hbn z9m_@!0{XZ22cPNB^hh;Q{VD&Hy;W~@i@rs#Q|na2RKrv!-AT6urNDBvTy4^u^f)n2 z?9=;@65mE21S6x7(W~-R$!r6MFW$Lx=fB7=^33GB&)?@a+s(GW>2D$zxz47udCk6N zkDKGBFW_FE9`MuRY4Id**dDg@sHc{Ja}4U*xl?Ap*AsMe-JlHU={nkuHoMF2Xo&xz z`Ow@P-yBOoeLwva)&l;yF7Vu^|3EEU%U(8@4QC5;-CTEf`B?&)a^y4DK8A zjhO?Of5=;cSL`dckL%-l*dDkRxG9-w&>!G_bHDj1{ZpEr0cF5X_9xrHcS!c%+_lro z@o7L$e$D}I)wgQieegBzulg&_g_r}t-kSc74Wb4Sbpw+#CTIL2f02B>9+8ho<}4ls z)G@Gkt`F$buwJZBwD&wrp#FmziWOpo*d=$#J${d;fByk^^pAFPQe@gjij$<4gl*)-%EN0Gy(Jpm=E~h z1M>^61I!3409a#sTx0;|O9T&q@c9}l5GoKV5GoKV5GoKV5GoKV5GwF@tH9mzZn+?} zAjO@0Gu2ED0Kb6ly1U*aHVNKwvyZ1w-9#}_3~&S7qu^)pbJA0CAI$rEdgO86Ur|&P z8{>Iyo~vLhU|au< z&Nv+;v>;Tc9C;HNucp{ zkGe-qkyDac&PVDaH8V9c#XJ7isJVhr95qXlO(v+ZnK!_+{!#X+N;PImv5 zd?nu=ERYLi6;(z3B!7}+R2enQ5A(e3=UoJEK#qYDxH&kbPN_HLn~C1#Gx3>t0Z?1= zPcHyIR(b*C1HlX6@AfGd9#5!1s6ePds6ePds6ePds6ePdr~oU#9_@?N7b)iP)l@ZA zX*B-h#!PeMs4+5 z{e$AcBrE+H{fz!Y{vnwQ__6v}JqzYX^P}7uxid0#rmmc-oEodfs-u9jfluTolK*5s zcNB0Q(F;7RAJ+8z@2om2YQM{Zd-c6K4}9W2mLE%M&~E~LbzjXLG4Ig3x~`7B^>(-2 z_42(u`|ckBZ~b$bT&Aw8>&lsOW^Oz;&S&zO7T~Bm>Nch~roYYlHY;a3XL?1vB7VcZ zk?7;u{|^PctLHs9HTAp?;GXz5^PAzmnKuRz=pXlwtAe#|t!rYNSk4dVC%80T8dG!M z6Ho)dTXOEOpYTs4835D(JPhvicP3c_ciX$|xOiMV*-o}ko2N|?aD%%cnH?~no;Ujo z!~*e~{mm{1)U|UiL63qT0OuWiywqP%|KC0C9`6R!C=>?+>;TKXIOh`7+CL0<|8PCX zOlPL)Y4Ct~!0_f_x}WYFi^hUJ4T;Vl`+DBb_Y?gDJpkDM(igv*>?R?D5PVJ9U$2s@ z1T|&W&2g7LwWs-W=2dqwFZV#4T~#z`g$7%%svTHE`>?f?~WN3RX|n1_gnD$51*f*0-*w- z0-*w-0-*w-0-*w-0-*x`ZWUmjTCI#)8SPT-QrD^L6g~Tg0QTtn#6H2koL>K(eP^Vo zE$~%sRV3;CY1xZW2Td<_?v~kWZ`2!gJK0WBi+@_27QX}D{GZWhbUu|Y=@;qKeo0&s zr}gQi?_a0a>FLq*=nwse?iO{6?pOC?TYL{Tv1QcF^5*2OKTnh=(Tx{P6;1u7f77c{ zt5PFCqo`3d6C4tUL|t81uL1n$@Mw6{MRifsY;*TMN6f)Cc#ODOUY*=8uh^ilimIdc>VF`d+U?O#hV8D+_OKYzJRkA>Mq{{Zw#6l!SE%l*`;w}p`pf_2i@^_)OZh>1kRG2JpIV}q=+WR~Fa_M0abpH^ z8)k!bew|2%z5D4fv^21;uFD{0-qOe_)ELe ziRa)~?kiUU{0XM`DZZ#In!I1fg1KeA4KU-Z_*VJ6M)onHVs*9j6n4~9ZX1MS3`;x3R`n6ZmmGsr1 zxoWO%g8v|Q!@L>i_dE#7$#U|DI3iw_FUyI5z2*1%dwr$4QoSC%9_`h8p;RcXvj86p z`%z{OGGFgc^{2W`-j?LM5A*~5Xh6NdL2$RaTUC~o0il$;xq6{i8c{hNVO zu9RzQ+gkSU)V=e@9j(8=6^sSc_w#ky;5N8ZfVc0|0Q7Zz;dJ<`qo%zepx&Q%^&a;O z)H%?5pc&x&;T8XiXC}g4K>t0?8n_FOOk}>d-&^`YGW(FX_1yb6(v9>fc`CU%U_F=% zN#BU|e!ageE{kfqnw|r;q_(6cMiV0q==FF4qE7dJmJPd}@du zqE~=t#j~QgFYX_-584bs4G3$*IRkwG>FdBc^X}mw;0&aqtLO%s!HHhrfIVRI`Fwu6 z*q&rEb{3t*ji5N-twzuS{P%oThG!Zo5GoKV5GoKV5GoKV5GoKV@b6xM8lr~inCh7L z@b8wp(zQyUY3__R2%h#d_pqAp10rBn$xR}`RkM9q~yl?aq+kqC&$Ts z(Y|QE+OP7a@}_2~S?U%2O5*QEPd@fd^yF)*nkv?e`u<13kMhUFKYoUsAfl~`ujQRQ?-iZ~Thm+9E#sDP z9+SshPG3$xZXdU8U0cWJ-_$qt^f9F00=@p}eJ~PN3uoO~S4NgeZZh6fZ>qbZyP^tU ze#ZQav-)hZ_aB@ZoI0sas)MP6sn_M}k~xp`3*hslN8biyDST)@w4?kepG{;FJM<1+ z8?cDf3sA?gQm&Nr0HAL`JylOpkI_!GgKFe{Mg7SPH3Kdd&D5CGnAGpl@6k{>6v-CX zN&5Yl2lVCp(*FbAWpJ*+ISR8O9|p{8IBiawFVbJ6=YXrsRpv?XIcV$}CmM)r{55bv z?0^Z0uFzK`8GNJEs6>a)oPe^TY~r^D3wbd{j*;zE zd&Qo9kys?w%C#~|MJcpt`i9gEsZZ6Xig|vWWoLOppU}*0qh}xY{j5}8l^0!GJGDdZ zkk6~<)l4}PiGjcVFa7@``jOE8hyFkG|NovJE#Xmz3WN%T3WN%T3WN%T3WN%T3WN&$ z%__j%WzVQ*#4qZ$l~nR8@s*%Xo*wRvRpUgL&zy96(hrxz6aPJWx;52J^_75L{dcH4 zRO3|R)LcDRV?~~!@ii_Q7c~XPQpZxoR54W-FlUfESnmCgsbeZF(qanWJ$0taRI}x5 zD8dWNKDv*t34T^TtCUV@`p5Ct%$-k1>8LLltOx7%QTqsTc7MCRUALF*kxH0b*3orz zFXYSD1-u#m)Bow2GxweTPG3@&)VtzcLGO3o^Klo zZ*L^vzJ4^=0_ay)%oekU&0+I0sAj9#t$<#Fi{)a;d^u(vj1VJ455R2tGxiJ=1X=bS z^Nxw)D1P6(pLh*^Vm>h&>;_!m53uLVIkN+l@}-h&JLbwWXD*k|<>^tt-9LQ-c^f}n zPM0hEie&Fz&)4(3m*9SyUISTxK6eN0LAV^gZCe2P=a+zAKW{LoZD9W2YA_A(v88?5 z&xTL_SToj8-@(Vqojkn^=^c2hxD~GWm2mw&R?u&snSOVvyA<;eskN9OCJ3A|Bp&)l z^-*0ITvQiTn^c?BfM`JUEI5>LD1(^~3o{mG(EI-t@E2$Rs>-VJCV!KE);;U!4?+LF zFQPA^{eZV2Ujk+?zOCL?tz~OT%}E~Q_Az&GwOS3u!JCS6rk!dht^saQU+6FNAwZo3 zy%CzartXkEWU2LN4!FC2#y#U+@Gm4j3V)hE&3>>fy)0eJ)G{^FHPQpXoOn)L$yTxk zU-Wr=7hLVH_HDs9@Dbq61M>)v0s07B0Q5oN{-5tn-fD#X|KIF`FFc%3flz@^flz@^ zflz@^flz@^f&an^&}06-=)P#NUaSksg7Ow|OVW$am-FRZz}!CS{+TH^3D9?)zW%)D z-z)dZ3aWx)kILKo?os!suj;F2MYE!t;KRQm+7Pi1`wZ|tfL{F6c2BeuEqkKva=WDe zz@vcu67Rix%ifYN!$dVvodXYu2NDfGwdVAh=Nw|79;oL5=FZ(DZ<24hw;b;Vc>hkn zcV^-7E}K3D*8_U<-7any^b4S$A@2oxgXi3H?i2q>k_$-l_?N&YyUAV)sLk&P$^+g3 zV5 zFTeHQBH6IAU+5Ml9`!|R5hV3ZvmISWx6AIb^8xc3>0`(H1L`bzvp&oY!?Vd}(Wg}2G*Ev}e+7CiOcIj> zb0V$>$Mi8>5gb$pRj*X9RI{jAWR+C|G6rPOry+YPdy2JK=~sGsME3Q4F~O*p%rZK= z&Tg;RE9f~{D^)915{ytI)B*63{7CZtzmaStmx*PffGi-H)xh^C=MQ|(ah9+`u8_TT zZ=_BBvoH6&r_ryJH4_n9-GW+6v z@oB(Zhe}|HU1E9vLf=6Ccf(vldLr0R9Uqqqy|9$Srx#ukkI>-)iMX!NaZv?FX{r9-L=8l(h0N&0I&;#@`xlBF) z*ef$Xz8s)WKfT=f_lAfeVm}xqN68+5UIhE~eq4HQ)XaBlE}Kiq*b26dYvZ_!uLXLVp5{96Zv1Zi zUi!WC5HrM#jmO420ei)!rm2|?n2XoYHpF#)Kl?`fM*OCG)8(;wY^KRH%(JJbd=YxtD%IJ)yXhrk_9BamMr6d0+*|CbP*b zktOJhS4b2R^faJWpcZoZ`uIMcJ__9deI4l~NUuoV+&}Ig_X|N2Kwm(lRZ53 z9fzVr5&ioP!qahCv@BXJSIY)bgNXAQdJ1rN&KUze`M4x6ZA)9uZm3IP4#X*V4DN6{ zTyBwD@K)t3z&}3_^zc1=KiAKF2JQymi|>=U6lWBiyW|0U?dgTU*M$B8@A`NBd*VH$ z2b32Z-NwXck&k1L9fXNa4%;v87e8a4vDcbw&ANCUk{?&Z#Y{1zK(sbb?rH_9baOT7;NcR7yKSwFjuoLoaUxEdhxRdeo{Uuv+L}7yc{ooR6pW+;11O!)g;Bo z!aZ({s7AC$1F=Uid+mF`47lZ>imsxEtKn*iTp}Ytz4c?_F~OYn-~I2N9{v4Af05hg z<`@F01(84Qjyvv#IqS$!8Hq*?i3P5mrC%X4P(qy5pYG%HOd4_qbJ zOf*Y&?et{03Jh|C9ABe$u3h3`$Bc$M-JLFFQ+Bi2Y_@|Wn-Jc4oJUYE(bzV|mb-^# zexb3(zAxXG`2qD1&m*&uKcj#uko5P|{htCkWDdAKjFCV4pM4!w2dewks-~0Q&uHR-4rg`Ud@G^k(#udP!B#6*N8hdg)&Jc=gbdn=U4~eJc({h*|rb~i`s-a@OAu|v;Ct^MV`|vaFj4Lfm%e7*yI4u7` za+?C5N6uSr0h8<`ORdQXFdp!I+Y@kx!n*_NC5D=zCXdVGsQuU)Z;ihPSDGu$gJ6!G zW1G2V?l1`bfB5hW6$ljw6$ljw6$ljw6$ljw6$lmhcdNiSJI*pot*h_qxvyRhrrN2N zx8?N6KaR|L=DyDctwbwPR+Uv3#099qp$CWm-;MG{>F`A#cg_fSQ%(K#Q{pM{j(#WE z=X1~B3AydBxK|wW*NP)Mtt65I*e9~*CNd! z+#_x$c-y>fs<~>|NcVHRyD#Jlx$b~>_|&2E=78CK>)bj=Z-AEpb@$BZ;|`nN{oH}y zEAAENK^Nb}R|nl}H%kwC>#VzEFWHC0Ln1?GB-)4<{fnL&c;4h&eDQhSj$4PWV3-@` z=xOiBQ_cKqBGmiqU0JiDHU0c~!_EY~Lr^=~VmtAU?;;nptFvU%A z)C2G~A>~t^^?qDEu9&w_Th^A;BTSRiWD&4MZ_#a4TU8b0jq*mE74Y_eGX~ysu$O1f zB=7Ri%kzoO;Yt6be^5QBsGpbk8mUIAfziN-{XgFWRdrQ;L>RoG z1O9WL*aubr48ge&bpwOdU`4$NU)wIOi@RVhn9Y8(r-uRSLC*%>NvwD4-OYd+j#jw! zV2v9iBVkRv1`2?6aY0ki^aspt=;S)NUjSd10f2J|{hb9D=oj@%(%Ug_@K4ZH zc9rb)ITv^gdchla@GbwAzXwoL&)xa~cfhT*D{XJr8_sR_INr=xQ`OWf;uTy7>=3-CpC{+x!v0ao zK9{@T7wwC70mzIqcx8HJn*Uq?ii5@J#pxsVh`kR?iYLW= zZC_i;m2$AcgDYUQq`xd|3tRftwFC5t``Uf&Mu}00uK_awncv6$e%l>80+W@}L_&6%6it0Ldo#X8RZxD+4Vt%rnY|DdD zW|Ub9c*}4l?l`EuU`8S5R;RYke)t3O`@iU3#O21Hju;_eF}H@ya^xbhbBJu>@QzbFRFrox7pk!H&TsMH^6-@Z119r`l7Cl z{`{}#ujncLlr9sMiFSkadcB^erYZW$%>*SyNl_mZi;6{$s7F*UFibh4F zU*s>6Hv{wo94H1N?ftB{Roi6WI0v8xpjK2XVorQt(N`?<%RC#c z4*+|$D&TiOe?RKei>M-s`u25z&+TRTvK%MIiE_T2=k5E)_G3#OeqNK;uyLag;IHXl z(>L3j?G@$<^J>(IQ|73r%+d&?a$J_;e08aq={Qc&BbJ=V*OI^Zv z@G|lOcw5dH0dLmntGL;1hJt^Py8>{(%pUkUWY%+Dzpbnv*Wp+RgP*2vA8`K8%f_Oo6QC(Dls6h0NdPn^V)`DGP z7p^t-h$3JKV8+9N=s6TL^Kh3!3XLC zMZG`0`KWVX-`-ZV74+nzm%s&g!JV?FY%y2N@#gmNcmE>-*=x96(;L}_|Lupz5GoKV5GoKV5GoKV z5GoKV5GoKV@ZVJd-pnVuYP~s5+yj2szw2sIwdhy^Bn&V9Yy#c64=dHvBzaiO8^ZuWE`G){K0=N^Wu7Z6e zX9&Daujy*K+@ORkA-m``gi_ZdMU7vr_Tbt8|gpzjr+#UL#83U{^>nfz!&iJ zZ0w*r=xfw9YCh-#=<&y!2Kq4W^gBH@{)5yYxJ1lR{CXgIAS$d1tIME^>>}wMxm9kJ z4Zx4?M>kna7AcvMeEiR;=Tuo)Hkkp`bM+kGbIdqw2yPHJB=Z{TE1omYnOp6x_6@wN z_`H^YYsIyKdv|6?+#~KuG#9MhMSIcGN07JvGXOmz^SOLbJ~VOT?RdM(>_VdBVZ$4W zU*linT@74E;dihSGQ_>$YqwZO7 z+#mP+GgI^w&HXw(-MEvloT{9v20BHZqC3@{$^M_(_m7a7POU*klo8QGeiEPuTuVS* zJNL`ER4$bb&{u$W<-8ZDtSYPGQSoRnNCWP`nK!sPS`Amf`VqYVuNGG)zJJ@?Hg_D} z1=P7$1r@iA9@e;GdGyo^!6LCA!&XjF-Cq#!bjPY^&SqZ^Spr9RuerbpSIBc*k%Z z;4Yne|Mg%LU_Z>)ki}*jpAL0l5 z161`JEPV<;wVzu08M4p5N?s**fu_Ex=lkR<@s*%HVIp9izjNOuJN$jfV*FHns+b#) zU1e9y`#U0!Ncsk30NxJJx1Trq)Q8YFqL?g(WXSEZlj?*kfkld1{?35@l>B$Romhe_ zzN6`*>AawE+&F&OzHG;U`;quSe?ZP3u9w$KW+9eDmI3n_d9#v7 z^)1*9=t;n=1i_AfNnOo9zy2dWJi?O*6$ljw6$ljw6$ljw6$ljw6$lmh zx2gdB%r~h`idyYA#2exd`G;Jf7AX4gdzi{m?|oHtRdl_+9&UYSbyGmE{(X9%KBvw> z)jut{r$3|4sN?#$rceJ4y+cpQn3B-~Gy-o$Z$(D{Z^TQB(&*?v63>9Odaa(SrmC0q z%bJ;i+$Y}#_RIZ}|DJk%BaGnB_ykN&O-?P!wkX>skRO~&olCu-U(l;kt5PpTFGaD6 zRRzFoy}JSXJZjvT+twUB?VfhSK*SX=+l4Bo=fHgeOw=R-kdkoCcF<=3-;^uLu4O6$xU*z{cPVy z_L2Pm{2AP_kMJXsOhLYhc>~bgHBaso%KP%3T6tpYw8{7gYW{pDev@m!d3ByWajaq`_M7p@whxL`Ccj}is6D}pr9u} zc9A{td*u6oIsncas1?ZqAAnZ2l`UmT8RjDLZlsxMX1dreb~@nvsJ^S8=t?U3ikOmg z_fr7pA)GhR6M@+Z%*CXS#$~`e1K$0I-v8g~BQZSKP=Qc^P=Qc^P=Qc^P=Qc^P=Wv0 z3Q%_qt2((+Y!ruZqt4!!yjt>?cupVxa<|0-*w-0-*w-0-*w-0-*w-0{^!wFxU>Z^#7v= z9&^-3xDk%pcF@B83m$X)ji!29>wpdrW!I=Bvr zZk@YY-l^Z=?r?AVH~p>RRx!uTaijdG(laj&!+J<~lGTo)FVd;Pd$N z_%HL9ISOoS<2TG3hTn%dj4J>$>Zvtv4;}*4^gr*P_ovh;^_X}}yy4&Qw}@Mykgt|_ z8ZyIx&wl~PZ}Zz<0DTZDyUIy^BOe1Fh zLcWlH)IFMb`Yjbp6YT;0EJ`9<@{~B0`2X=nrKl*H{8{Q9UX`y(?*CKBL0s$CdhY)J z0`ovi+tQZAT?d!;^b}}nnwlr=llEy40p3Zx2TJ);z7v=T=r^$mFdOj%pw1xd|Nn1) zYK89~DiA6VDiA6VDiA6VDiA6VDiA90e^P;2epYgG&A-d6^s26ElKpqdU-Hy#w~N|E zH-O=KxMp8pQ`J-rzyWzcjsY)%3ZjBw|H%HB{_=ChT#==-^xNv~B>%mzF02QFNJWbI zfU$^0Azeu4i}FRI^e9b#IPUs;>YhpO&l>~&oU8Oz`gV0YQU)5StL4=)(vfbg8Yh17 zr`2gp2kuC+2pZ~!nt5}zMQxGS<#m5${gp+p{`$7Qy&v$ty9i*vPjB~OV3*tFnDa)x zcrKAkP}6-Qpiew&K;OGt0dLybBTo{O;GlPx*a_&Zcc-{hTNvGe8e~_R@SjznkC9ANCJB z2k;((9t;EQ094>tOP_q^*fYD~UVE=?=o@<8)$jNF6EAyaK(f!JcR($0+#Pr9fm^v& z?g79V0sR^mAS-dcpPytDHuKH=JK$;av{?a|CCOO}XGY9hWPaf#cgZ~`o)heqI|JTg z@E#!Y5nLF*@SJIsmZjxjz*`i0J}wu_#b7;H-wfyj!P^Z!Z{93iwwEn4CFvWWK+2`u zhyFv~NAwZRRddx__Lh8aXZVaH+wyjKyQD_|XA1P8;EaX257WW*_Ik^i%{IFY?~F1? zj$COuf8l&u z?)fKzvVb@JN5m09k2CrQ6b38hN*Sf1)T!uHbQCZP-~!;Tp806>W}|QabNV@52{23U zHThcNX;1&ZZF-x&7BFw{I>4VnuQmG1{{+}?QX{|}F!#N?)o!&$tVwPb&bqU%XI9Uw z7t$}JnQQksU=AMtnayQ$pV&|AhXAqzf499G-E=>Djlaf^abq04^DDVZZna%)*4K&plIQE18u35K9%qlMxGIT9{TyV=9RT!}W2#>#)r z4v0>=lkOk&k7fhz>bd`aMZJ>j-G{27>NY^lJu~RoPjXNDtbf)o7K=sssC@JYVCEZr z{OBRTn}7Cc=fP|_Tjta`^;vaReW*XwKdGP8oza~Uz1=EC6(f29ey%=OcLQb)4E00( zQE^n90iXI$eF%jH7C`H`b^J{Fne;-l(3}J<;udi~)6Xo77skpc^G*Cs{3+N1&ZN(z?=*LsM*;l- z8-jA+26qEG)_r(&=DYkpzb_8xkg%f^agRH9_U+v7FB8keRFIZw z`G|M~6M(jYJATf3dh6bro_+a5KH>0H!B_BnJj@iNZ(em|Eb>mEv@Wf)RF)d4M`~s~ zEYJ%yvn2TYKdYbN^jAaOE^Zh7Kqg=oB)$K}gG%5T`HVcRPwO>+`~Om^lwx1cyNfP> zy*hOX+~r?mudy542KRz}!P1wX-?xo#<43#Ej+q8IWls6K{oQhwbgjHrQlmi4K7Aga zgYW-3v(7Msf%=g>fclYFKwH4ffUf|xBHaMJ7lZ%b|H-FL_&cEjp#q@-p#q@-p#q@- zp#q@-p#uMk3T$;-9ew?nL%-B5b<{AIR;3m1?|E}yCMpwk2B-8X&A#jz^-QvpXGQ?` z$D`F~b;uv`YwVh&-(s&!E%d}_V$=m>feCtoepo%6%YhD!M1+2{nmZ!+WB^VxEt=ix8K|I zAUil8pO5Kv-_!QA9ZUz)&^2_U?P$2*pRzaj8~mntQ+x`nv+Ha&Ae?a7!M=E3JUTr( z%^iOQQ^71tFH2`L+058@Y}^|xO)pK~9N!#Q25Zx6(@WwdaepKR{uuul_W@nOJ?|fXjam{~Q=A#tP>DeGZs2!2HKA^_O}-NW2)35wKls7d2f?M{|AVGBj~b z+#_HV?iKR6eC}EEtf}s+`=`KecscOBFu)CPyc0NLk66CvscqoBK_0-{ikWt%<()=R zThtJYde9ate-qx41gK zPSR7;+itKM3P|M%gHns=NL6fp6 z`*QqpoCR(IPk;gG0qIBMN8`LUuRWMPn7+~8XeXEnCI?{e&wRk@AOq9`?ByS|kJ=W1 zy)d=&yiuRoG}ZTK4U%8T<5QpeQJ03)%DO z^Xa~E-}v3Ece8#^|DOIS{t2(_%W)M`#ZUuqt-Cgv0hIJ56A!=%@JRd^1P{Rf=@TaW zeyBjGK&U{dK&U{dK&U{dK&U{dz~7|;^j>2xIY16bJlBuOV=}GM=&oC+@1pOb`&0L) z=48ytI2Ij?>H+G`>Ho*9zVqt5dJmifXXRPhQFT=84_}fm$&wi*Gx9`vqIW@$RFBlH z>Q;4ibak@V=WO96P*fMy>?=RfpXk>?pQuk%KowArg66Whqz>T;KySd>@b9tNc~|Vtg^4X=WPg@jHMnri(cqACKu{7lVWDVB*== z(R4I-0N(y{c2EsWH`C3Ycu#!JoHN|-(+{96=x(~3imsw-XWQ9MrjyAHs24wOj+^$j zy``r=z4Zsi17m5V`8xe|`eQ&Jz>h9}ba_G6f~>LNXYeY>oz9(J2=0vUjPC-~ksmO` z4zanx8F$7VvOU8siz#x7^&9;2opon@ zJz(Y|-#5GTF8!K%O??X#JO!u|;C=lxKh5)|gm(pvY$Hp*!8)RjctAcN=`oo@kt4j;G=Tr<&3l=tO5X9{gVI+1(e7x!+OO*C`ntR;9Va270gk0oJSaYM!2_FN0iBuIL=#-SQnit?C<--IX?2#%0CNk_qY3eCZCxI%Hk@YTJCOueLQdY>8U@@&a=gQ zG0&Yl{R&o#)#5S#nD6L1x~G6c*xd%ZA<_JggTj6@fK)!o`QyDm@A%84%cLj96Y;Bs zG3N{P^k;4#d&dE0fSH^%Ija@;4xn}Xt7%r#thJeIGb?6Q%&GyVfqS7RIAjhbxBuMp z^Ui?#><7SG;3AUbS_95Ln9s-?h!Y?ixL#f_spF^Cp7#sXK~NuXtGm_p6@5iPz&rx_ z2QagM-ul#SupeIKRwcLk{8_L2*Zov8)$mrJnQEqffLFr=aJ{%*@UEh&s4AF=FaZ=W z1y;bL*7dKg}Vbjmv*jQl3z$K#QAoSEQ%hEzvEJRThbR zr`2F^jl4#dj!H)z!E8NSPftxxb=TeX=YV@@-ggg64NL8ab|n7)M^i^r@9X#V3(*S^ zedhRmj)3XW^ynARBcn&glGKt^2XI^+SM&uuB9F)i)B|cG;4GkkC?N8y{HmlVDcFDV zZs0n3ourRIJ1`HhkLTWbv>9!70Ia~1`*3CgFynoSonqM^bI(h^`aN!sTLvb>$Blo7 z*?d#X6!T&HVf>5v#Zb>r{{YSp?lbq9&33b$3dYCd;|l2t>2>kC_y8DXMkShomdKAk zkUo%R&-hK|H<`IW`KSvJ#Vw##al^&rTT&XcA-VYZoV8UXgqFPaxk zUqCGZZw0dZ?4CCZ9eqd7KJ^st%ZnkKVWnH?*msT;BgLD5H~oA*Bg6Tl{{r-*keSeVtmTa)MvwuktRy`ATk;Td~(| z1-9Tep0fbz^Ev++8V!x;E6@S(CV?6TX5TfF&15UlN_-=~k-bzeRWd3WQTP8Npa!I` z?yG+Ti=)L+KiyB~OXW*lOD{e=pHILy{+q;)FsH~V=!5u%f5V>ynKDzJf&XJ|SzB_p zFw_pUoOy8O!F9`y%j#aYqSclGsUeOxu!=xF_Ty|ZTjT}w5ukp8 zvj)Bon2&JUp0>Oxp{C&qdxaeXYKoeIGl~+Tgy38z^!9(3Pq6SfLIpwvLIpwvLIpwv zLIpwvLIpwv{&y?D{XOry8v^FE9fqI()B0&mpMUN(8^{LolDY) zma?TRqKYWq2-F4h!9+b#Z&TY8@6-#c!f*}vL-8ho_uchWJw*=yYSl~WQhJ0OAr-!; z3-1pq1MYj*m^CI1O1siXdduT@PyaLS(s=_u5zq_pB>eHYBi;$|bG+0xn4Gcspnc1?FpkIWjGRTJ=*fPR3Pfco@X0DE!X5zwQKS_EbTu&3n= zppk2o=-}y3c)h>gUn{N^y#f1k_N(l@*}Hz}zI1JUThBc;vjet>E#gc6rLPiIiTL{6 z4XBr=cmD#hKrru)J?(O2FY?}k8v7T(7xD{v4p7H`A7EYcy1dE$eTiD4=+`)3%olBC zTbWzr77bhj*I9O!!}W08Np_N_)G5^mi?T%v0cT2s0e}Dd)b}Z7 zJeC5?dt^_(TrQVm0R8{V0cuKW>)LvQ+yIw~qmo*C`Zw}9Ft@V1@9qbRfyo?*egf1- zaK^;P@}2xH@jRI4=lLJR4}v~}m&7IU0GI)Ks2)jvDO1DNunkQ^ zQ^J-=>NC+#O!oQAm^coY8^C*uFbnwK{j>>xE>s{?AXFe!AXFe!AXFe!AXFe!;9pq* zYO*iNi|E8#$|kBw(rfcZyNzn2xKFJqYs&A`cW~nCrf}At>{IFUHdoKp`vCjE+fuis znB&$!H_-HXe-X4zwM`v}4n$vrJQ;a1VijX!yh70@eU6-yc)7KZEs`F8Hu44kr~dzU z^?T_5L;oN8|9|C&MEKdE0-*w-0-*w-0-*w-0-*w-0-*x`5f$JqKQ+>O#a{8V{5je8 z-mC6a^jrVM|C0Ee{V0EwvjFwnlfXrBQCt;W6)_JW2WSzsi1_Ens_y)|=dX4d7b%U5SzomDBbQs%>14`(&XY?OIT`kHjxthQN& zz=QFFF?9jF87OXx+i7N+$pRa}pY~5$$t4+t%(bUp{ceA^KQ4}o=iT$}3IBv2Ek@%S zqNJcl;2q#aaMGMK)Wy@AkiTvQn0G%8bWvT@4e|zA&X+^_K^^~$ea3$3K6M!Dm`=8n zZ6n(tVet;h`*r#$@D~49@vF$?a=}%79-@Qt*lDtA+p{dKCC1wfEiq6DF|*{nAwUXf$;7<~e~6TK7hu7g?t-rnMFJa`UujaG35XKM|>=XClM+TDiA6VDiA6VDiA6VDiA90A6WtV?PUX9WEa_6 z^-k`;^XNSKXOK_klh2B0MR`>|$p&OEN56pEPI#IJbnI{=k@}~=kr0a-NjE5li(cxP;!6WQ}@&gysBPR&xmKlWI*rt z(SEe&W1#-Mp>1ea`_;Y_*yJ|3-D-C-qo7_q1=zzWKp*$<$oi`c*iTdIf5Bd`x4GL~ zZCe`-_RTGQ|8uw;j(y!dpr`3+hGh-oxqsID^!#)dpbo!R+$+A-+-maJJhoBXC_ZIR z*Qjt^}?dC zpbug*&E&T=V z)AwoS2hit{uXA}_Uf-y0RK0a?ovAY6GT2Owm*eGSby?jd?h-w~db{3^cjMhH@)mis zxLMFAf`0w<)mtOhi2UF#b(gZj3i?63>|gfl>^hs<=l0iu31Wgk3okFai;lCSFV&YS zyUwojfjX*=x>{eY-;?k0C6bQ;-l=f5(9kt>%v0d=;N1hgB08JSW_`RqZV76dn&trD zJplbA=nt69XY&t&QQ!mcHP{7?g0p~`0GyqKOo0E$kIe9-LIpwvLIpwvLIpwvLIpwv zLIwV9D=R$RVrgBD~(PPEf zBnxkyUZ=;&agsOv>*P8pIkHRRjc2cZ6f^_)zex@P{Q-CvpBuTQWQ*-eUcoI|+l?3zmHuw#mIeKgDTFbig^=_-%YQA{}i9v~01F8YvU3FK> zqvg>SwM88Rc|q~0c(h0DQOtvQ0@PJ?RcTpTKBb@1?3Z~jQrH*v)D@&6*dx$1mAOARoBF?Qsav~ zKi{MD8l+zZ=Lqx!V68{E5svc}z8{${aM@jU-2ML;{}{Ic^me4*<4N$4eaKQX@-Zmr z3;H%-9QY7$_Ob^Y1LpuAdzbxa1=?`9@Y=*wyLd~98HesA4q>d z>aTfAz@01o+t}CAyX`)4pO_0ibDz19fc+9P+{yrI`Pt*`1Kb;L@|%1gz??to%m?@Z z{vG>{{RA)zt|_?SE;#O-dx>62mLPQp>;*fyPVQUttto5E+CCr$U=N)Sj4&h2yMVrZ z?EiPW-AJ=9;y457YPy=6EYfEjih z96-)psKwyDg%eJ&|7Go{HJ}cGd+t?!m8aIDh$xcy3QiSM zkq%i(P;WthK+Xv0xknAgKsiwI=jV}mBp=H;u+T5`)D19yfP45%pNZdD=$YY2A3tjD znGB%CQRcY^bqOYV}R2L*ptZB<)w-cwu@7mumORCC|l^HzYKg!JpbEHBF; zZir*%0cQyZ0ksX|#dyK@-Dovh(Q}eMk@-|UHDAxy&w-Qbq^bq@p5)KuUC0q!xiG_! z?>El7*7Ztns6ePds6ePd zs6ePds6eQ|e`Ez}$y#!)TC4i#KDsHO#-CY#d-NX7Tl4opQBcFzNOtva$+u)ym!-xnwRWlu*?0Q?tKWY!(CkKwnH06ZEvN45+iN>Z@YwTiEZE zJK-ANIq?K!j$5Y7bbG;Kzu5N&rEDqN-n57N{2H?v++pvq>&<$TvMI~lcJ`Sy0d)n- z?Q+Ykc07e7^PT}Y#^N<$~{kH=Cd1gB>1M+t;O-)l@MqftU_n%Q`)aS^e+yH8WujSYB zX~676-Xzci;cM}=s0f+@dR8#&G7tD2?C?80Ga(9qW}v6<>3JWsQmhn9z$2g*;NPeJ z!qtF}>;GZzOrUlw+kStZ=XF064GIksk}?!Z<|ZPfG9)T@Kdh6vG?)!h=J!>7u@gL|b zEG(dtP*xB8C!q9y$KUdoM|@I|fyh8)ATkgchzvvqA_I|u$iQEU0d(Udk`c*!0zS~{ zZ!jAS{(f%%%sZ8RWxv5~aLj;j>NoXxffJykF02b{k%i}mm?4rbce5dzt(9qI)(Nf> zG}q1bdxBD-lr*-bp`mZ+%L%p#&I#v8GvA4UTQpvQ@}|6@Q*Di3EBTWIKf9l0TCeUZ*-G|y0Xu-7>`xZ$02zPW z-RX4OY&ToH@$3D1Kimz^?z^v~ucRgNCGxEV^!dHuUU1yd(eU5mZgGXuLMeNL_O`v9 zlg>$*gUQUhRI>MKg<6>};WPhPrVXDMCI3RI<0?^sF)~$6f!4Y*t;r%b9 z3yD(TIL-Z?pUvYzBXTGl3gr3?Py@0I1M&uY`CcCH0s0Jn7G0E2`=|XK60sE30k{gokX1jSxKb2)yHq}k_DT2lVboy@y zj#fvDgXE!X_CHoS32YPZ_+!g=8ge}+uqm-_GB_wHK3rgT%fPO#7}wBrRmTo2dMwzNIdp6NO69QTfW z$JTfC9Y1@STju82IrfS4i7bo%()^|Q<>~VD8R-omL*S0|j+9$)8Oixav+$~WHQNDP zFY1E#1VjB$Po5z=jSXQ#=prboN~%R}QFi~wGcd#rab)bXW1uHsQGStZ8cO8Jlyd^I z@8BpO@{*2NER--M%x&s6MNi^PH`Adv@2mT2eD3@8eqCCXR^;H{nY%N$$Sle{_V^`g z3Qq7R`1+xK=0#_&N6UVRz9jSUU#2e0=6`lFypFtnWpo)m(NFXn-9}eYSJZpWUQ`}`2GJdj}tjO0Rn-BjycX;mMbO>}#IwzOu%j9BybEeh5 z$Xt|Z4KC0ZXtWL1TVGXhvOZapfpD%qH_MHrr{OX6Se8e?pS|PX@vTGaa7J=Qa&kC1 zkcYs0y;8u>?dUstv<2h=RxlOJO$9d=6rdI>a*}!=tB`e$wdYt1CfEqKx7~?5E+OJL7yCN4j-4lH=i7Pu-Ox{S_iZ2^ZM4w8CBJ22=dbnG`aZ!q=A3NaDo6^F zBC1H1t&aBmSM{r!7N&&`f;R=|<++)^t>2cP+&uGdlOeanFY(;5`8#w1(_j@e_0syeoZhbpKtSUZ1`vpyzL8x-#X?{$u)M+CV^-`{s0W zI>L^yO?(r-z%HEiT4d!gOzHfP@NC(|cWGy>JqYUysj+vE9fXWLnF z2zYFG2+-Rz$MV>@D_^CqQX||5N4EU=;rwuszsMi32kaO>#^2)v`Fry1j6){S+8 z1ua60fZt-H+L+Ch%&y$?>m+p&^yKVEUNx_p{<^<@%sgh$)bG)I^xE9o+R|ynlG9^-<|KqOEy2*`*UD*ay6# zUQr+T5B&4)`Rw(--`(%n>)@GS*Y&*s9_b3WP*7PwMnMSyyDHxA(F5?8|FsyOKx7~? z5E+OJLd4uJ?gk?pBhdLAKQ=ZR5#V7 zKK1MEdOJOxp7{v2q+8N1`7ZfZhg%(He&ueq@&Sk3OGFg_gRd z9;gPYFZ36>oG2#-tHJ8K?)PG2?QESxs=KO4D@UD7S zwGg~$UNrdPuMoU#-Zs2GHGB>KP5361F=fmSwL|UnJAK2@FzdGG20k@R4WHZ3Ek1~^ z{n!3P@ok{zVBS4G93SW&Am@R(eT&&*2Iv7YaX%!gfU`7yhG+G&nv6jD2k^)99>deX zt(}{Cx6myN^aK5i>P5BJ?RAIsVSSHu7LWzeBx#cHzQMzfE`fYN{QEQQOv`hAQ@yF~ z(0Aw^$&Q5HKlUaU3EnMuw*U51LO@RHg@4HYfRQMb& z6Flx77X`p*$KIx#Xd=*~JSkvD5$FED<*&o|q#^^6fyh8)ATkgchzvvqA_ISG2ENi? z>AA_=WUS=4!g>_e(ZCGZ?+_%t-~Nz>s}bPBPZ}Nq-=k z^hX6Zm>bML1VfXd2^wi~(CGf_pgZWrYOyr5HCO1$@Ah|l=6&v}w}x9Ytva6kQv`I% zUnO8ptLQ6c8vA*Ep68}N&<%8G(7zSXlg9^pjJc9EU(^@%C)g7*-~M8|*nXORnvRnk z{JZ>J{we#EB`1KHzpN|k_`YQFr7m?N1t;1QZ3h880>8Q6+|Bu$^Jk`Krre=BrX5o{ z2Q%TsczQ77@54VT$0(uI0 zpW?IFDd2mun_!Q_UW+b9v?1&l{`v8@{$&!MTx1|J5E+OJLCImE`8WN?C>M} zVt=s@h6h7a!72fH0e7l96}|TB>^h6i|5kgeU6WsvUwC-o;gxo!eM5Q(^8#}0*oEx( z`#sNtT)|GEQ)uB^_*Sl!;~q~>0R0I^3D}R|y?9r@E3J4}>qq<}{s;Smoh3L^@Q3@u zp`AF(pXIr=)1$}h$<4Z*ZkOfYach4* zZ%uDaXB?Svq`t53dxoB2onMz_4L%wk&HkOe5IdcDVP1I3J>}>{I7+}R{rB*Dfb)*3 zqq@ppjCI93!xTsRdIDR_9jdP7!=Bs8>+0piiz(u0~QL zA)64-K3#|CTt1h?L^3HFtHxRW1|7)Ol*R-mUwZzUDdgoZ@TCsdCxZq8(VJR;e4M&+lo$r~Xqw0qD9=DI% zqM>LQr^czSzN@s%ZT0xeYx^H0ee7!$^X1%81?%iqSg@#GqwWzI76^^t$i?8qKqlAUDhggW6OeNmRb z$4vU9dD5^S!50so7YN7?nCIp>vgP{vzMkHD_9p1ni|JzGwm(zfu5MS4ghv9e+X}bB zU2U(HXZW}!n{Sib~?Z4=h&;zJ=jn+ROCD0A;5=^FJPLT zW*_zs`(p)7)28X5Feva^vX?=pkKP@>Jb8!gG8%(!>vlaWRHqwK5cEQ;N4RZ~159^0@3)8|(&P~q!nf#ed5-|4{DkxNNI5{ls1f3Hy z5H8i1YCJ661yj{j*}BYBMRXBOrX@K6^dHdUhnAnL#6Q)a@~94pBW9Rvt-8pjqEXhL zh<}293m$t>0sVhu9MJ!V_XXhF0P!O-5E+OJLWbGO;sEIECpY$Lch@0(RK8Cv)=SnJr$mPZtsWHVMWe8T8O;@ zG!~h*!0++r>GO1jq=KZ|HAxQS4&;6k&|}v&X`3w8i**$NIf$eEXpfJcy#3k&{)xYy z+ywFzo)Pd*W_a`&YDriU$QNW6gI=4F!_DyQ|KoFM5E=ybALVs=wISewQb2fm}=U z5}yff6_8=U4&*EW|Baj|Ku>bCfSm!ezr;Ai+5f-l7hC+fk%7oSWFRsS8Hfx-1|kEI zfyluB%zzvx$%&^Yu50Kj$!539^wvJ0)hDmLo9?EW^U%=0t=?AC1$PU$#d0Tq%fIFM zbM(=4_HhgCAmA>1nm^5tx8rSh*WF!YFS0ia&{B_aV;ouPCxw&39Rf1%zqjApE8G>5 z)ZfVQ@AR&rXYb;>_?z5Kjv1JIHg*#q`;R?Y?#y7*&2%$LjmmP{=w&CXpE~2nX ze5=qZoFzb;PA)uL(S^XRo;?cL{mh5GbT7?wAQSFdeXZ_nI-7CHxP-g(Kf*r(kDr{x zEy$|9>y=#m!bri zr`8GROBkYtsOSCj8D~%UCwwab9gpPNFtRDh3UeS zEXL&m=IrbIb^c@bu_MzT9Rqs__6z6(;PXazqdV80Ysmw=+28EZ-}Ao0lkj5lVnVkB zTKyCB3A&YPrB=u$gZ@bSbwbL zQw-0iP$(4Ys5**lMcyyGUc>w_QLKFGR|}@Q>6!k-%f|w}Aj=3u+j5hD3=2FdXirWN zpi@9A!|gxL|Nrx^nfND>fyh8)ATkgchzvvqA_I|u$iRO+1N5_Zl`eR+)O5tFmYezY2$bA43Fuqz@A|uY)IEw!LA3Jh93(2;j!Z|UEp1C%JFT4_%pc4jogSTK>(iZAS^DG^y-@A%HiFFeK{BZ`TGzOt^Y zoA@T4xpb%AsksHu)AO?V|5SCVYM>ivbO%nr?Yy?Co#odL$PLKVPwFS{3t9-anQaD5 zzzhL%DRb+G;ls>_4qy2B$q2Yjus|(PZ|XPoT>||5c<#yXr^_DS1hfB3f~5lH;I_K0 zY$SSVav5tUwUZMIPAn*8N*Q)24-3vq&P&kN?-Ufu70Lw@vio_Jq)PIF;6_1f!F}dF z(<$kc{9*nu==+(^@iefjffqU#3VeZoEqyI5)4aACMGpeLyks$^OP zIwrZV_i#O&O>KI*I$a$KhXNXn!C`RbGmy7Xa<#eIlvQOFuMIl=mV(`Gw=^tHb@UFB zzdy_jGiwFc3v{9rIw9Dz;1}S}&PvWodI)NonwcQKt9U<}s3r={%67XQxk1(iafiA? zk%54xfxQtPgZXB@Vb5^6V3}GLJpljpzq;ZhhzvvqA_I|u$UtNuG7uSv3`7S0FB#z8 z+)S`JY!2M*>Gos(Ap?(j9u2^?0(#iV)+6tq85k{gI{}_(?$qVPua38zyt_6686QIv z-9*pzbEPfrbB}&rYU(VSc=GJ%4D^V<#!+1edNyc&U9;jYkt9z1xM=U z>*i;rvr;nnZc1-Tf3?5bwfVLAzP7I=o2`N1eYr|sAFdDd5R%pQNBT!fRsfj+R|?Po z^znVNTk|+S&ZFz+Hhs0b+M)ACA8^nebSw&Zocry5OaCEVgM8jH0a<_a4PK?LQrYvd zpW7*ZihtF;>b~+{c{CE-teI(t>Y@4@|BXjiKE+P4HABq+M|jM?7Mv@f69FB<1Gxus zwUS!NQo)si@630G?8BD?bn9&u-vGOW8~u%bkQ$^u3!eq{4X=h*1D^gb^_QYv7^Aan zJ(;U-)wgB_bNuS?L53dBtCeYG2J6APzkr`HIvJf*EvQ;B){Hgi0@$H^oP3-NHiHd& zh+zV>1xJ~q%;kbhl1oHMpGz7Et`X3!hhBoc3%U><4;c&F-FCOgF0zSF{PJ{p%Ik|R z1kb=wH`L*kKtF(2;KXoZKyN@k;4K1nL})*F{%A#bH4zp!bi? zKk(0w|I7a@%#pcN5^J=AU?= zxoP9?udC`RwC?D(>1t=zL8CrjfERp?UZb}Oh6~7TV^*qRYM2Yvh3dL+ohbcJ3Y-1r zEL$HB_?_lXLv}iMYINO?+DC1_v>)SBI#ke2aHXKX?Qbi&N^V2CA-%v|;8vz9)5Il? zyK+u&PBx_<90r|u|slw-HSod0(EcKVTkx%E;39H3Qy$GzkDS?mSSw?ASYG2E@^ z3c4lT5^n8u&3AU49U6+W_1Tg%uuk)w@%3}7Mh9?h?%G_vq+YUI!2G|#Y%s^_V>1pb ztIFB@Psak9d^{RC0s9v+=8o1!XTF73^edYF`PT%y^e(+x5L8eH1kA2z9=Lh;GyM#H z4R#Co9_HlckSHrJz!%6sp;3+5LQAIxt;gm)MW;ALX04ChiMCCqZ!m9)WKJ_X_0HZ!7wW zo;-yg+z-;oFxc%#cckPA(4j!KApU?gevPl5R8QvWxq4t27|QChdXIp;&kODaS5!d$ z09#JT_f`>&$-4I=}Qfyh8)ATkgchzvvqA_I|u z|6~Swo8IOoeN%RG-J-UrD+Tlblol`x6*7h7Dm>UQ2XQMUzn}azW`Aza%w=fCcc>j% zUm#v+^ye)F_@SAL$#6SQK&BwR0`BwAs%I76@#_RVd=Gy`dPUk*&_uw!9}jtbTi-Tz zjU7FCQ_?Bv6ZQ!^J{_O+18|>52T;e=aa--yEH|*CtLRFnrPEbzl_M99?mTk)cM8a# zN0&~&9%XkQ3s%`xwzKc-x&5vcpl8SX%{~NA!b$cdyFcBZ-tX`C^a?O{;{~Uy4$piq z-^;HOkd-jZ4Rd50^ih2j9s)f2_!Q_A*d`zcaFJdlll66aR+ts=pjXXR%`xB46O_-D z&kae2BxChh&5TVRBl!T&B+n$Ds!!D@Gs@s27!^hZb_2zAaebUQ&b*=D(BDaJ|3Bw{ zeDZmfSEuMxG7SMY=nu>X2HiZFgy;a!!A~lfRFEcVa@ZU;mk7wn@09D5t0R~$V2|^j zdC%}qycPHiE;JWrdmgm#w+i5a8#=q7$LwPkO~vP;jri1k>ekw|79P+);Qhc4@Js%e ze2=t8+RycKSNp58K8Na|x}^P`5ldjT1JXcovEcsM*PjE>6s z2j->oQnVE86Ue1t&xO|DIDec!-=1&LiB$8|Jo_SYARZIU5qu!nBB0ZfjtcrS$yGQa zV4)>%!KelJPyRg?zkOsNG7uSv3`7PZ1CfEqKx7~?@V{r^8~u&GLO`zBbUj_KR4Y|u z-B_dTrysq%DQ_kS__NF#AafD7S!UB_g3^L1$&~EAyh^XqU#YJYckxMXl4I^-XD~91 zlt#ElGBp(r%hhs)51fpEj=p221wT3*9fsTCwv0fe>-i$Ch&xa4fPEnA-}^HCGA$zb zLNG#bi@U|4v47vbZ@(3ka;4mT_CCvN#DRUg10LHhmreW)JN59uQU z_=Nv2^cR|aK^^H6U~b2Mexfmzv9KkL5=Uj=6JmZ4=}2ZNu2-A74R(jAu` zm+rIs>@K&Wh1ERlx_r_Q?R*i5Y9Phoi-P_K1lj%&zF}PpAK8*JkI}7$O zWJb~#c~HP!1TO~9G425V_rHtcXG8`f1CfEqKx7~?5E+OJL6I~)eD~`sS z`MjZSsOzixS;jl}f4bDjgL^1>DA}&J>&FEBl77hu!Gzp|+_!?k$>5}#sb)UapKAQj zrwSUI#+m<`xs{ysC&QDWrEaO|@jG50uhH;xBSz!>uzlEWcAH%f+ryG4Pi`Mwa^8B| z!nJVR+Uba+laG8qbOhXt#|pU5GH>DmUn}5tTvC;kseGd95ISUfZRWg9epBYzUuu_H zvgvCG_#WJW@g_734Fi64vhCSTOiibzhx3Q?+=7b=YU|qiMgcu`_zON3H1>_XmX8f? zgS*4u;mP@*qvlAvL1)E1yPu%D^dE3@#*>ehV2+(*e+WNh{e5WqndRG?_GYr4oXw{A z*wL+%$H#sEea1z}Mag!vJ$N#WStDF&1#d#2m6F3risDB&;7i4 z(mdgHB=a7f|4YeBNg?^@mg|;#C3z*eF?VBbkN}-MIe)JSzER&Oas#UAYT4sEtPg8C z1Ku)k$<|?(q0jJieY!r+oM*_-XZJ&Q0)2nW#S_8(Ut|`JEC6Qa>)rKkkpO)Kx(vJ+ zFT0l=cl+4_x)cVbgHq=5p1!B&Yw1b+zyEO&tK`GS4HuFkK{ zk8|T3yPYq?m+}?O<<*kcOSBs33efrw3WKtog4fmS>XYzEAb)}U#%tZR?t*YZSm{g7pHj{>iXA+8k}J6*NnlB^?E5 z!Yc|ECyPZro+d+cL$kYai-HyfrzEE&;N+AA2JV_(R#GLUO=Ax#4s`3pl{HB z`agXMT|(2X{*Hi|{So_!-Qu>mTcks7ps;J?glZaznjW-K(w^a4*L5jdq=XzN}x? zg$1<)PYQk(fCT{_{II=_S(I+im&232sR4vDsXQuu8OP4 zVX~K{Io?bclt@Y>_(&>li03PTrq{o2w6WWVWc9b3Nhx=Cr z_vm{x{gamq9v0vs;PLbRrjPPQ^&fakzonm2PpMb@E1ryjha``J3_>yq_*}lGr(lF1 z;qh!>-lzYvcBn1si+#gf!Aika!43hQfBYuV^Z)PpJ2XD)$UtNuG7uSv3`7PZ1CfEq zz+Z&{=A_sBYks5K=-LVfO2+!F{#Jjj0KGFgfOO`ODR)S4lK}nnYl4+}Wwr~zKfnw` z|NHUb_<(nMMSevd|92+={(k1|6Wxh!kD$42o@KrtvQ4a zFYF6@JoTgPXxm$mb2(Sb*0Q?=cm()6{Mq>SSEsAfynNhg@3dt3;X@}QZ@8enbQX}G zN2g(z&?TJh&(8AxZtyoqD_|c{AnfvU-CS4Bm-A%Ay&c|`39wnXOF(8peZk}UaZMh4 zDP2l;N;)O@=^s&#Wb-9^fz$M9`Yv~uOMU9QnyzNI+O3)i2KhmLliTEe_CNchq+<`S z0-XRnUh?R7N)NzE`XqgZIYZL)mz#0|zV=c5sAhLjBdL*0(NnTL%gSVBazgHeTzOqy zzi-|*>jil6{}ilO>s3cVQ`6LhBqT2gcII~GjumXs8}xwOfZPhR!qnAuHM^Q6$&#c_ zp*n?H7ql+el57zNfOr7J*Kl#TIF!+4bQb|VhTF_GgHE2;9zO!P0p|#=5F8e~tKOBw z$SpFxZ&0U&)54GbM{nih59$5;TCmhFm3P)_*)D+B^D+0B!!M8TV~7AvJv)&0f?EY- zKFnA16}|;J71`t9?Wb4bNA+XYQPEU2RcQQYq%&lTGB152|3?0Dce%JfR=LG$ah6%h z>pwz`kj>9+>PrE8C^Y^zh8wfY0rog_4D$Mr56I(u#yunMlg*Bvilfv~>U;q`5^L33 zHCxZtR|!@~=i(FrS{Zx_6$SkF!QSXN0UnP+0`dnE0q-aM-|<)ZeGngKWFRsS8Hfx- z1|kEIfyh8)ATsdxWq`SAm>(vJ{6BqV0eSuS;QI*hIMXB7Nia^2)3*uQ3F-^x3CNKz zYswlj=gFEY?Mr*|+Q#{DertYfo_X+kK`H6nJISBquX0yqLFh8-+vdKxA1J8cDo6{! zYS$)hlMb{3H_+h^UnV$4Kt~&SdyfdnU*mD|eP@Q5f%*Lp`-e>ZciNNElTy6q-1C`B zxzRKCzbUv~-=6vD$!f3X>-ie4hNHXgEOl0<3!sONynnL!$=~BP|CRrW=zM=^xHRy* zyM=Cfhs&(SY{ho8*7b$*>E z%Z@HZb|6dC5=BM=`S{lh7Mg_yJ;7aqL*|en?~YmcaRK=VWGNi52kg)8XW4peay+iN zf_4J_Y`Wl@a80P{s=9yj_LHCzxy$p<=LGcpu|w!7AOql#JLJgdhYxxI_&)31dP!~A z;Lrg)9v%-1)B;7uz;6P20(i~IZ20Gn=Rx(L8X{l^QA0p(;i-ZX1aw`nH;D89-}iTA zd}fh>$UtNuG7uSv3`7PZ1CfEhIs?sBbA?`;yZ;0J0e@?_HC*Ygbgv2C6jTTm!f*ju z=FC0h){&t`r}_XrKo1fOR0Guy{s(WIanA}q5)@7gr+mLZ?Vt8?f4P6sK53^5xZ4-x z3-WaO{ha=swik@E<81G=ciK^~Oo0BMuC z`>7Tt?$-r!`d)daE-b~oo-IgX7YpPplP3LpX((cuipvq7LWnQu7ErE54j(5 z<&ts<-G~o_2f{7>mh5M+44wVD% zF|WNoCU;Ek_T=`YSgu%ZqF}jRu0Ifb{!JI{2QcW-4?J!_+X`Y04d!6zY_fO{@>oW_y2JJaO`y01<}z^!k6&( z3C>gJW!Z&%A8zH>36=}ak>0)E1tmkt&`f#}Ht9{8+dDHiJB2c7nRJO=VsA=sN~hUr z_9}msuN&%y@91U}#R2^X4Ft^p^jH$WUpkZy?3U186cc>zK6m6&lIQom;B)i2shCuh zbi|jEO@d~+neHlJ4|1|O*^qb0gCtiHJ;_x9z8C(BQUY`Ucp9P(;IIB$F+TptKx7~? z5E+OJL98U9Q6rMq9SEx#@QLHa>jJYPKD(zSF?*eC4s>GSE)?r698 z$l@dTwrdMc$)A!psYxHpKbF5$P%d3Og z%MR16_lkYRmKC5U7?X}k>1!_@iU)4UWW8?`ln5olX9DiK_!B;~AKKdld{2B1WkcEU znia^tqig6IY6+O%@UEi)C@MMfXb2t+kA^GtmAXUHK^o}pPfjo=n10fMfG!*lIlBXL z5%JScF;lY4MDEI;xKA99iM~2G{N4ZVFLoC@G8Cq(=?c$!f79O_)CVQy{x$uKfR2S$ zs#SJZzQ|wX(Yr6zOLfs)(OjjZQu3sE(n#z=jvMzV!Hc4)XKsGmylracYUXYglqx7y zaI3l1ph<3iHx}GjkQ3}qb|+;8WH}&qK&yeT1MS2ZH74sFxWHfF z=^VuW|55T$GG2|BO~za`!^|+PRcm#h0KElTe!Bjgb@qTeAX}a<+!DVe^X20u!Cybr z5B2yecwPCgX=B(J@an%OVAldy9R%!)cDNmmOat~be9ejKL{&4?lxVgdJlIt8oy>K^|GpZBbQ{nxjG*!B1K{GAw|Rb(JC5E+OJL`0z(41I=H8qA&7R)A?QXl9=qGyaxXis@3-JDrGNa5$JyL&WJ~I#I9?UH> z%gnigcB-8!sY~iIs*LI_-;l4CR!e8*XXXb8z7x!~b8T7i_P-(6Znw*ocZog8o#g1^8-HZ{k&E*e=keP= zA^6GuWbxE%t8JA~CA=n}-<^4!dpxu8pX$%dlTGhD;sHDcPYIYO$u`7OfF69dnk^G; z>#R2r&p5hwW>fkOTL{LOF`2)9T*0^k=IGIabM?8Iw*U`5H+yc!51WV0cs*WM57k2* zU&mh(E(zoTZVsCRngjX(%j&Y4+&pG!?$qeb`7`_g`vuJF`_w*FOtKT76VSysJQ<$6 zq25rfbSu5ZY%$x^Hq}S)j&vyC({E%NnV*uMl3KZ1xkG{$rbRaYPc>7`u>$-7H<_Ev zkYtD?04&M8{BP^GHJT3e{!Lv|H!I8v%-!@RE>epWvoaZm+|KVY_Zal;eEy5-MO7}8 z%lZ=8Ymmjqu7wQ02EKtW2nC{kcp#i5c*DOT=?dk9{n!17Fd}^BK6CrRzHqWSS-tPy z_xK3-d3U-yWmDAB74n6|kx|jpK|x+(6V*gLAs8RVOR{8(aHGG`f1iGzvXI)F?oA(X z4> z%~&;7wbgAkI~d+8?2vdZ*jsE9{3M|3@{j<147(O~Wb7NjKR^DizdPddiVQ>sA_I|u z$UtNuG7uSv3`7S0S`09+aQ`RU`~lJH9~+JhrF$!T4TRwh;73qp} zewZJINUq#l0`v@I_pSHqJ+nO7^W|JQH$!sc& zwB&;XbOtc1;wdkti|JWvmO7*lY3AvR1oRv-Kaz`Zr@7OtP1YvE%rL`U9#1{Fc-*4N z^qU}f&%NjF5Im$F5|u)KabGl7-2Tz`-!HgBfWN=8fZTmD2GEuNVg4{Zlb#8Wx20~W zizmesH2L`Y$y_9hj_<+e{3!S$_eJjNz z{Xj1P9)ZIGxco?PvAS5H&*ypZJ@@3ca zfY%1C$zA>~|5N%?_CEP7{Vnb5`nuMkbr>xm*OB?3jK9wWWC(n(zL$+g1$DcivjFe@ z7vYOA)lc>4EO=kj2QbhKG}kBBC#MP;3D_Y3G9gYer)2tnEgw<;|JV8*7awh8ATkgc zhzvvqA_I|u$UtNuGVmV^;Dcr^LnHr%|H3a1%LBgW!D_Io>1+BTp-A}M{qE-Zd7gVH zGyW6$35~a$+bBJ4L)B0vvGd^!K`+!_2uLEd=yQ;`=9CF#7)g<9A8?-^f5@ATkgchzvvqA_I|u z$UtP^Uz-7Lu-}Al0-5)Cn(1Misb}gLf-2J4hiAHsr#%-4! z0R3}l+3CPLTJUQ6YL?M=ra#j&zuzi&(mk1J`YTH}UvXVr->hy{L&MNOZ$LFy&AnmY zux|;(Lhg(=ex{r07Wf6CK$t9#q>3jiu)l!)z-5A|VQP?AH<>Dnhu7WfjxM^1VWOx2 z=7%GKr2_sv^Q=o|+(Nt1UMDCJkV%i{;a36kJH7VI{mgdg&R2vLS=Ky#@95Om`n8_N z%v^rh9F`Wnr_B)of5*(o9lcJd6Sx=S?WYgn5C4bf&v;Da$n`Wm4Y~Hr!}tT3-^o>7{$= z-ln%{q#7xnApVc8f^Yq|ewkb5(Cd@8zz*Pi0sa7ULw@U%2k4b>IyicHHwSHpyKLOM=R;0h!y@H;o( z&bL1bZu7T!G#hsccn|CqaO+2Zz>Wp&2fBwY0(hw|phuAR0Iw-o5p)0)2(k^ z1gD47Lp@zj(^(I=6o2#4Q4D?d0G6 zvr`?N_`BjSKV5LOz1r3nbQDwnH8CfnIq|po0d*XyXU*-i>5`>y9BLmYkN>oLO@o) ztKrowXAV#O)8XkXQ=j`V_j_)`^dOQYf0{YX951+Bz-^u`_^vYh@>phv*`cj!s~!#y zXJ50^@ATvf*3oq`%|sjBMl%zR&?7WnetH1fnzm+_-lh8srU~e}j!5tHcV^iE^dgWMajE1_K4>4bwN$OF zU-7H(Rpvk7b-h!-{C%;%IO~6S-M((osqos6z0dozSLhYs5IqL@0%%!ob~ih`AlC?r z+M-rD<-Qi|5|px~vitwp{%p@ZpKeCp54^r~BajPtuf8|)yUbVfv&=(!A?gd*Ws!wh zLU5dby+dIEI{;q0IRF1U{WguyH8KzxhzvvqA_I|u$UtNuGVrg>0KVwA^jrEf^_jvm z-&JnBXvNW|a~nOupWvSspzFpz%{`jCb$wl5e;Pgwbj6XezRT~*dexe{=8|sL-L*^G zrF7lZ7gQB&75tyh|L58B;`|@y|2Y5uYyawqk1jG08Hfx-1|kEIfyh8)ATkgc_=_>X zjDC&2M&BRq&vMte+b&g0RZ(43zvbR?`vlx?*9p$>XJj7i>(%wDg07(HmTw^0_1sEd z_AmQW)u{>{e_O%WbZpAJ-$u|(fOeZM`+5Sh`O%$oH(u}7XB~fh%^thQ=3LG-^-X;> zL4Vsn>*`Bf;)bR})28{R`Bg_&9cgNt+D8Nzh6@9Ig!lzU3D8_m@l$;HP(I6QC(jOT zKbiI91kn9gIxU?p1EOK4la9;-z7~Hz-SQj#M&DR9R#ijQz#W&&dA#X(!bg}9=2(5K zo@geTvVv8DacZ2j_)S+U^a@Q!9QWVNdb6fGjtoI^6(kJEC|nfq z^Rs`U2k=?J1?B>SCSZeLv09vI%E>S|LD~Q(>&cnsADudy3%)OR|Cs``4!rd$=}Ma0 z^GO0Ye$qebxlQ9=Z?D>`Vy2iWEx21SNDtB?xesLU?Fc)<2tUHZ1Ag~k1ox!tGcQV&&zJLJIj0==7zZ`f*pQ` z@2-4Xj-PyJGBiQ^-_3M059kLp{%`W$>2IGQ z_$2)##j8$ETHDYzpo3Y~JZ+vn zk$)n8b9!@H)mF8`-S8}D5N!i9IB$vT_4OJ*I-Fc7;QPYKdb8d4mK6YGywhZtgYr8hC*(-e>G&stL|F=bQO{zONW6W;vIwTr0;6KU~0jl>P|v z33&{>X4?f12$l%g2@Mj^wLlgC-VnSpaDA45UBih2yaz`M*fp_-irWA9%QZ3(8Hfx- z1|kEIfyh8)ATkgc_*Y{9J%1Tf#^9T#50A_|K914H=+E8fj#>K(!9;;HvAb=8F=~wZ z#r$HJQ-2mPTW<23Jon;@-No)k!B^>5Dfd)nXY$*~2S8&$e%^`ZL_^2@Fmc%5>+W@< z>?liSAhY9-?nlQxnmc|M0W&4@Z9CU4(*R7)PtJd2KeBkl$(?&vP)&gEe}!71=!cu` zr_0p1)(;E=!#@PfgG>Apzt}Fe(*;x0scAJ^&CV8ZN3JcvUw>F1)?~$1HB}8ilbt|Q z-Be#HAfvBA(jYlEcW&+h!6LKB%n>kS(-+9Rxy^6$d>#D=*Q#r?d73Oavi>F{6B2IA zZ>hHwJ@RDz(W}Q^WW8Q5pD|uf5nN_2%l0B)>#sFlb7oCE8XX1P^WRi&Ds%%!nWGH8 z^Vx!B0(J^?_wm?oQa8!fdZt{rcW3zu>?ip531LE@uMsah^FLaF|8f5R)Bowo7-Ww@ zpWZ;}-=jBy*`1sFO25*R-_QM@`FyEhu3)R(YJYY=yYYT}*2TcR{_Jpe_VwsQ=;Xs& zKg-Q>bpMgukKf!Oee!EJLg@S?lpU5TeIHq@8~sn@6koDN5Fdwe+%G(B_=T|z)^1CIe64FBDb^+@(bNdY;UF$3UV z?YCTfJduIOKx7~?5E+OJL5W6J$myYVMriMpZvNFeuJl{?jC!Oy)3;f z?J6KUkIp@M_y+kwSx+FkZ)SGp_22F9wo0fHcGw;EWOuSVJv}|`bIFz`N1fTWhk#r)GWEz3pbwCr`J{9S&<%jT ze7E22$$$S`Fw&3orwGW%r`K< z4VmvXObxR(tj%UnW^nGnWFFjTZZtKL8p%t!mvSovBa#sbGvP+HQFSyO&AaN|EVutX z^PWjns#b+nng4*@0taC_2D#VMsYpk_nS!$fub5Y4YOiY02=KFu>0oczI+dZiw1Mw^fHM|y|ap*HDFdXO1pm`};7Z?D_yE=Jf?y(-I?x1`(m~O+G%%Mviy749@#GF zYx}h&vu~Q6X4|+n*{+D52fQDb`O7k{=>p)sf0Mn*o-VMdO@9^~>yOP|Z@e7j@8tx1 z9=d|d{pJ1x0a<+geSgo6h~9w~p+#Vi^Ky7Ou&d(zgP!6F!M0>u(n~PKOfl#$UNx^u z>)|x>o_Nk$mB5FMZtaMKGQ<5 zR4>h53xfRUKs17v)Jw9RxIg*;;;+!iKx7~?5E+OJL8OI1~;K`G*{gEOu7)^uxnrJ$0nWFL2rJ8trHvmY0Z3o``h>&LpW zj$3?F*VNS)j7~?V%#Pf|nX`Wqd?-LSO;`Om0W&QffFBE(_36tSU!nCY^@IW{a$lGU*XGc*;Kz?FPK{)}lY6smx z(EW<=}DPRfyYCJ{nh$v zjYr}$QN3@}8#S*Jd5vT?^fi4A`++S2_7!vx1Qpb~`d!UVq@$ogXb@JpRqi?aoSh{2 zL(t##cU^23OV7jS_VX-9|2_MjE#wM0avr(k_pyB}uOEI6GzIi0kpJ+2dqC0zs=KG` zQllcz#UcB$n7|^FUMf4$fQCg{1(h^Wh z9Y_u&M+6_556vNcNY6AgO+iwSuxBZelt|DH^wE7Z?<3w*?Q`vO^UOT+gWym7r)H;w zKLOo7x&YpzyjM2~@O})}!!=z9XiWMF+6gWaR1uUB#M?it#*fHAWFRsS8Hfx-1|kEI zfyh8);9r@6XTmdKvYIR^_8Zhu;i$~7&s~-7v_~Xk?~3$_w45vF%Gfe;?fu&BcDo%J zY&}&^MVC6cZ@mTFaGA%@bwA^tamUzWY#B-RL;L@c|HyY1oFic0KsFusQ+5aB#G!2; zs0ZpB!;N9D+v|P^KV(^i^bz7&$5&04os6fUo~!53iQ^YYUFx{;)6vJyqH$;(TKQJK zlz@)9I-yS3D~|DQp<6iOk7Ry+wC&8WXcoE(&?fLa9#@ZNI`aEychmQ2a^jdR0h;+& z^ecLeSz{(8lakMJpK-3v{hs`ukU57BqObJCF=KLLo@?fs`bX*`xnlRrz85=^MPX66)7)vae4qokPEg5I%JK__>Y@7Dv2B6p2;dZ!cs+yv! zk8A-t5^D+Y3tT23H(-z7|jEJk)X3cuVpXZsUpYl&hBL7Cu-*pTzazL*^aR^PhwwyrB9IH% z+x2#My&o0q60pNS6OIO9rJ%iOpXL0w)Gfua-(7zq_`-aV<;!yeZkRMoUKgArSgx1r z$JArl{hxV|OgVA^xk*@%+>uO7ZT-9U{E?JU6WsvM_a%xo~!{QI7vW;|7+^C zEN|~u^{W~!Xdar2TV;0Ov080)IaN;06)X?S!`A|I5$v(p51bdy3*;zNOe!WXtCv-q zq)jqP(8u&K>|(mOF76HghW}I?9P|dTYoVWFwO*|YLV;{H&d9nJ#)h%s3jsT-IRF29 z{jQA9HZl+yhzvvqA_I|u$UtNuGVoVtV6Y$TxzVBn=qu=|x~gsh<~V%vtLUGM?PN!-A{aRhe&}>;N?B#Z)oH{hr+Y52eFxv)}CTn2!#l1O5U&-f{1^>C%^X zrJ#88(YNTl;Mj1ixcNtf%Br%WN3MZtpz!Z=nuOto>#xnFL2Z4HoiWr58T(~^c$AAC5|1$ef~Z_O2A{gJY1e- z@^kCQ%a6{U`#d*s@(ugz{@JY^J-|-0)AUYyC*F87RZrFQ9+3aPHEaz}s3)?_!0h-d zhhRDZnS=N0y_(KAH2dq+I(2+lA3-y_T1pCnxdo9$-HYhVTV!QJ;9z<% zJzIbeV3&Yy2i|uJ1>{At>tL3DLBF8skR;C#Zv)wqbW-qn^cdg|;NLsz&Kms)xd-$F zz8l^R2h0J3cBMzIhcHq#w@>fWKMFo@AGjHQhF_wVDELDsfmecjh0dX~C>ibyTLkb) z?jSjV@$Uau|Lqqae`Fvs5E+OJLV6fv?1u&7HT2;BIwycDv?IDpGMx zmmeK`m%Gc|3ctetEI`|j?|;7FGg0Ui@%J@I--_U~O(7d1oBK=R?M2y!~7PgSRi1K@{j)}}L{hOVK1 z3%`X!{!pfgV85_S@6vSnks(Lk!EwoP3BLO;^_QCYzgf~OK@TucK;HoKJ9+--+%M7> ziJRa!{hj$Po7o$MM&WXOdDc%)ZU7wx^bN8|?)a=wdbv;v09>II2XRc@NMgie=r3H8f{cUV1bjxi687r7VMbuZpkh#f z6=0X`WxI>*q6CDmNQFP1?UuV`I|A|w(#doZj|<%c{QQb3YExXrkgM2@fLsUkQDA=p zEdaC&Z3!O{&=Js5v=qZ5!y}6c$a5G^Q!K0v~>ZssN zM^=1A0%m&X{*hOgl5mjF-}E<)2$*C0n!ctOE5^P z_(mM($9Zy_+z#Wz_yz)U2f!V2>q?8i0I#vVXfHk@Or$LVX4#frORs@wK$CAv+FX;O(6{#$eZ@M$U3Qn%=k<9H(}PkK(;Ms#B08d5nN|k=5bRu*6H3~W7JC+Ok8Xvc ztZ2Arz^(#c@NvZ9aj5iwG2HEur(fMxw`7Yq*o*u^*uXY~Sqac~U_bJ${#JJjx&=L> zJ)`i6K*xby%0{~}^wlpGiv{`_v4=n|0JIHwPVgk)bA>KNyoXcF6f;}T)>8=Y+4m?B zq7th98pKq96d+lu8Ny^7Q!v03Q95_N1-D>abhpmVtl1Gyykq z>_@JdYi1^!Ni3yjC&US{fbcW_nP2uUdpTqdd4XRb7yDwqk!=k15O@zxvXczo*O&EW zPs9_k!mhAi5UR;)a+nwv=KoEVQzdfy2Ft;+HK7G>!IR76@?HKeN3TOVkxuj`l;)-R zG&U{tc0jYgivaIHW|3KRCyb$dMC^m0#fK-qhOJ=_sY42x|HyoJs-NmbW|4u;9({S( z=UgI;Vxz*ILfpnv5Ps9Y={~kk_}|O$G8`Rw=yrq$1D=5o2oKl;hC4g763ARYcjEi{ zef=bO62$6Q4UPue!L}Rg7Is7;|6wwp%#lZkd;Af*KEf zchFPSRMkSa2>a*@o5E(Uol9!`q82^w$Qnq%5|CqDh5G+P_K+=QN}1QxV-PVBb5UQ^ z$nZ!00earI@GTsgaqJMTv1<(bii{#-n3;!pA9?Zcgu^Rvno!kNwP{&e2JZp1{}l-6 zFTniYmU8tPQ1{-4gif-PEZ`OJ`Vnf!)Q*|%P50n&|55xX(BrqC5G6qS|E2s=!cV_I zE|BoFV;9gywvo5QEm4@TQm&Mv#3=Ed_no&%Zj$H4d4X&@>@Lo;^I@Lh8nK2p4ktuy zLSC6yb|&m2z!QMJ!u&G7OwN;s&#ftSH6ptYd3npsGK2m=Wc#C+53~Fa1ZYH{!-qy5 z`FS(M43U@Tr8ESOBd_0Qe%Q^oU+foS_!y3Sgw}*8VYD4>2eZMfj4UHh@{|0qI4s~} zz}{(^o~C~zjR|rJu#dvO$F8C|0T~fb%oCH2rDK~3v+Zo#$Mgwv9g^Cl_ALT(9kCCp zuj}gtguB7r;JiAonwe(d_g!b#SsWY3w&X22JPAMPpF*F=1^*Bgt zP%NmSYiP`S@L2AK|-}0WK zr+CC4@t?#`0=a&*Of8d!kV>UeO9L%U=`FR{);io1aNY>?QV&i{oM}AIm$jPAo2uORamEcmvzO;>HdyI-c_e!gMp; z;FgX%dOFJUN2gyu*-s|)5_+o$hY9#OlLY?3_F8y1kA__?Ls??&kFMe z(20jT^-)4SLR;BZ;(4K$05|QaY$`h|&I)8NzQNvL>-ajpk+6y|fiP7}73eWUu3n6d zp`^XbVTS)Yv(BJ5?}ECZZW7v=c4nzss_L8iCYenZ_84GSgG@f$&5>`2P6*@>v=A)> z^73o28tjg`qtFGg)GoE>2*?IR2LieRvGehaXPU4k?3g$fX86JT0iNKeXPRm38P@PM zVRk<<3E&|~!jq5!;|Gr0y@+jYj3ivqS2TX+rv&H|u*(^tM`(PGekL3+ z2Mls5(Y-j>3^v$VAmb4`t8e%>{0sAiNn{h*61)VTLWmWyqPDGVp&7|+GSe2Ru*q(- z+q?wiSzt$oZo~70+k{7i=LBc~e1g*e{4@QQbg#uR;23ZWI0hU8jseGjW56-+&%ppP z*3R%VydwcO+^jOIY|q>Cnxdva4?S}9R+&}i3;l)es=6x7;GYDa1h}up2C+dC-9#hT zy)glEJ~Yy0S=q3!9(QWwwtd7u;>d}|JUm1VQRB^cN|bA53bKMMC(jw?!(p~Yp1>u2 zNgpTN3~mPadB~c_Jdc@updCnx`Z=~e0owkr`PUqMZzl+t@#CBL)H=5@^a7mKXEpBb z6?6stiTNbVvv15AGxYl5cAZD&k?4_2OhDfp=0)6>PY}=%kNF%sfC+@LgleoBLnho= zc~*AtI(Wq*#Ui-7Cl|@ZCblW;GC&7laa-K(WIGvl2k6p+-vF8bWd32kJj4%?Q(ysK zEmzA!-XZT5VNzsLCj0CeZviLLtx&mDyj-}2%v|q32zeS|9#9q z=2c`BiOxcNA9M}Sap3!#5_<3+e5qI};t(?M4AgXAlH+mKur;i%t!sy{A>mCP^YAz` zF7$XH*AZO{*s}~)gB50KXfiSp&X_Z%p01~p6G{@mH*^)?4ttNmq>q;!a5BqbyyV8?>@47(_J39z5Q;{xu> zG2j?*3^)cH1C9a5fMdWh;23ZW{G%{{UUS@5FR%-&mZ%l_+cEF-<$bxKuj;zGZed!O zkM+kofl8pb=K8h&+J{HHx9Y9V>+>2j4`v@^xis^0(z}`8#2iSS9j$dA-eIvzSZ3-laWj&xYAy zHVI`iKyMCBKz_o9;zQArwPZug5Q7_kab7&!FZ7nZQx^oq&aS zA^xTKQa~$ki~tS9a=BdI7xx8j^*Lou39SJBiM)ViY#G}~J&J`0=x5lVHYhv?^xc1K zJ~rRm@9h@7MYkv5&yU)p7Fu~cH_Xj=-=VkPt#|8EtQ4gz9AfAj#O)rMg*K**L8stU zJJmjAPstIIf$bpRCZCt^hJHhrAiQVZGu!kweZU?FI~p*1BTJyHEgRn3@z}_y{E-l9 zKd46l{GKo;On#f+!Xtv`i%!X0I+sps)6yrsvqk>`d>v5{71&u!WD^;*6WMuo{@6aY z&`eAx;Ps%h68k6YVle9$BIF}rf0UT;CIP*a5duE{Ztnj_`K{)jhhxAo;23ZWI0hU8 zjseGjW56-+uQ7lgvz>$zgr2M?8%;od-z)Zt%`@{%4OJtYKE@XUT@A3KEj0R0^3(6Ix^ zBC?1Ms)NF8h;9Mgf$tICrEI=u>Y0Mh8nYH=EM&-CBkU9VL|56BuHRK8=4N#EA$P44 z_0K^Up3bJTnC*Moo?&Mjvh}8jDFUe_3_ z8ZyZx$4q~d-{ewAQCHTLg1+VxhIm6f-0tB?XidQT@Rj|_;&~!hk?11#|43d!ln}^C zcw`=#^=v)EJdI3(QF4_0OnfGa$RZNi0`RXR+wie|tf9}J&ZdVqczE-XxrpbQivV6W ziA~}TyTcaoMI8DK{M@JNsrrO~nH;$aF9>OD8VfxJJQ^d_NY%t|;*ZzkbqCYIAP*1w zom=b{spX5XwyG^T0PZMcAmI7qHScHp*=hpv0c)vRYOz^tpzFu(=vxBjefR>9!_ZIn z3wJiq9#pf{>>9Hs)B*g=erCVuUqZhLo+n-l@&P;Aj&{9SZ!qJ3Wxg`VV?cKyc0uTZ z#104=jIji~KeO3v_KWyMc+!(uMOLwl(2S6e=i@8H3UR1mqGVCnO?(OY}WrH{dh@|JrXJ_wO77jseGjW56-s z7;p?Y1{?#9f&bSGz@H7Be_;ad#?aZPx9KfrLfpwGQ~%#iwNpI}o(B8;ef}stO79Q$ z2cPTDbz1^-__ypWi`)Ba`BhP}aW@VRQPDy2(l_{!&~IqEV2_hRVJkJ)1uo&n5)xIxDf(9Moa{GEgc`~gqK zlCf{?x0dAPVa`1K{m_-eoBa-ZhhYwdmLHk!xK(E)bY`8|O>@)u+SjtTk>C-RAna-&@B zt@h5#^Adjkg9K#DK_^g(FilRAxQm}5^p$;OHC`>$<-_+6f5c=0X6Z(RNqiEAw;i7i zLWGa-9CFEQ_m-i4o1pMvr+oK}@8I5>vF{|QM4Za$%1}rPjN(})m z!pFq(O>UEi+Is929usD$87c!|wO*~OtLkbPVT>7Lo(0c>h>nE+uBczsM=nD>Q_rB2 zpdeuao50|O|5SadpuOK^b{UF_wD2BWW|!G+0zO;VE#Q4YjsW~8R|%a>XOo(cMQ71V z2bThR>NwsT5OlwL%l>=o|d*Bi$X66?*1dak>0$>yhuhbqnA)56i*5G ze&_|@jd{YJuoVRCxatu~65vxn?jz=Zcmmw~|Nr_onfrN;0mp!2z%k$$a11yG90QI4 z$H2eEz)gEI%&0@w*-$n#oN1s1fF`?)En|`44}Uyz;PM1{0^Ip81Q&wxs=S&`xJ{XR z(8f>K(=~F@k;RW$a0{V1VJTb6rc?eM?(nhJ-qlk4Q$-rL^i@^gtC`(Fud zY#WRG!8Zu-5$q9rLft(w1wP}SaXbcQbeR+H78;7+jCtTp5GI7)gft}EF}wt}jlKF}ZNlB%RyDLhU>+Fg_t6*7*0#0CNnB^wS#&vOWm(x9;*D^3gAM}ZPoj4L`u#Zs zX!tR^XlBlJH$@SE!X~&YH7|1o#3n5>gQUzq|p?AMkJeHgbRN7;p?Y1{?#90mp!2z%k$$ za18t{89*-{{P>#)nBme>?>cU+=stgKUK@0$V_uu5=BboH%3y+?pqr^?Dy>edD-*hz zZU#PjWCUUsOl#5_@YLTz*Am2C>>;1*;U1$Vt{-B=);lw{t5qt zH>P|x^a7w`9&-yCx=rLE&+3YJzLMBYcByIo)?cM!z5mJ(LL0K&!RL# z>@+YZ)9QhvcCP_%rC&FPIDFioIfSPe;C9 zO<7Z-D-hcCZwX`A7>2#h8|DoI&%`$bF6WW{h<_G z?e`3N2H0ib^}t`z&-SzP&3uDy$1P@y!JY)!31z5XaVQ_knPnE)573EVAN7m*C7l0T z=~i^{zpv5px5eM$e_%eKWWZEmR{?l|2jO@2JKM!~ap)huN^{IU6|}sVpnYsoqp?v)nA# zinXE61X>OB5-cWww>kuPPmo8Dh5#Lk(*XP}e`~qNb__TM90QI4$ADwNG2j?*3^)e< zBMe|R>u$S;U1rEdLlz&h)uE?H?|UEJhmzkn=o{*W>O#Q(Mo#~BLLNe5li1+a4E;ZR z`N&|WT0R5KKeF8(@`wCO`=zaIY8$C#*ctH5f96LB$mPdhW$cCUXiZWyLofbJe=V%7w#iK2hfzd-r5n6>mRUy zeQH0onDe34$Bn)m`SQmQ`VnSQA|G}Ylc|62D!6MA}54-*4Hxeb zE{cPMva+n)F1Cxlwy%XhUU3!P=vUg6VOBl#=I}SDRAXguE=kz>1$8KVX z93ru|I7+|{BQ;OWyRxof9%3GrhiwoWL^hdCBGYg+;bZZ!fW8AW>K3s@z{5U{Fwst= zM8-cXG8eE5fPWoX`gq^)9?T2o1=#tdR;lR|uvX2t^J$XqVDWwUjC3_!!}))7baWK{ zfEmGz;5s!5AbY<#p|mY+r|D^WelR~MP2B>}T0r*z-vasop%Z}zVI%>1{Tu|$^=tK7 zU6}g!pzZJF_wu_1-GZj7Y3NBfrBCS;1nB*dBY~a9d^VporA|TkO7Pmy835f1vI3FA zkeASifcFLa5bz2O34R{_Y@(Pbl6%R$-UM)keGuL!?3&h4FCly*&~zX>unhse1ms9& zCZr@Fw=q5eyBF6B@E`fDL@B>Vyu5;XYF-N2C4L4GITY#N(fHdm=$-3fd)V@(e3W83^|N}dU+d=tWd9+XKMUb!QYfI)4VnJ;*?l(C&a}|;!^e)! zyFF|V+o5-8WC=ivFv(7$7Q-7hxk+x|`^KGm317lL@;>r#!+#-Oh&VD%n862KJ^BQ( z^T2(4tz0X8LNQS+ywT4RvqTb`#G+>oy8e-Jq)g+bp{sB_?{|VPe38w|=FKK7l}lxJ zuRApZrt@+Tw#jYOfLKV@qHe{3Y+&f;pUr3UlA@$YDN~X{AfDVyxXo^}hP)xaN*w@+ z3ESCrhUdGM0FA>Td&ok=-$t|%iYbO3yG$~Z%pfv|zFuFiC81cPSR@x=i`*iSNdV4@ z@FM&p`H}pMfY;UDYwx9qq=?|pTk@71&lh)c_z&RKN2VS2HpsL`cH?@xp3?nRSVpCb zi}WHr)65Jr`p^Rat-~q;^7N2Lh<_rd@Q{DVzfVZ1QYzg1q3a)QMu+|o_yp3ZGzvPA zBBF>W%nOsFej0~&AK!zVMd&`@Lpei;h=@Rc1p4*h<7gYS4VDtn6EHvz(02&8)GhT= zztqT|#N8dAy$|>Y9NmQ2YvJ>NE`#2@H{Z&(vb=9MS3xxIwE5T&=R0$0sAuaL*Ox?clrP81{9P{Ks37FJdOd! zfMdWh;23ZWI0hU8jseGjW8m+?KvYGkA$?6ar(s5h27HE@VW6MJ{F$HS4>bVDdYiB3 z>oTTH*s0b;HBmnj&@qP@zK`i+7Td+P7Xdp2=-tuRUP_jd`Ki19H~U-I0e~Jkcn7u+ z;6dL=J@tdhSC3sof9g|1XWKeLaRPDxpo@nW9J%V}&3QA%jv)g+=Sc~e$F{I7Y!DyB zk*V(+-yn+(TI@^qlKq^z44Rsz2D<+ZlyZn(0?ha?*bDXz|0c|QFU?Db8gR_5@PuCw z7sM)Wl{bU1UaS{y%eUn8=b9!!`n@l_tPhb+5uC}Xi^il30;4=chJu(t%6R_jy zO!!oMDvt0YyrpO<@Hs&?1@!nWbPN3%`z+-BtUYUyHHh9o?5L2j__g?2;PZlv|2yK2 zc;9>98%+3>{~BfkU>`DsfUN(b1UznPLQ(>}2X7FZ*8lJFE6n{+$ADwNG2j?*3^)cH z1C9a5fMej_$-n}=K$jpu=Z`t?0%4FDWY7_Z9DHQ0!z+UyiInWXK_J zAKib+Y%-hKWH#s@z^uH)F0mi74_RKD*FL6xx&!=wfBY0aCCuDICVgw(nv;zo?5#rwTp!*i%q^JCrib40>a053!FO=v6x<|i;+w*I zF?{;CGb8^F`2)zQgXcYkO<~b}kkX_yaS53Hzfs?)j|iLeCVk0V3U?vM+Zz##2mZ4`bu81p;_mB7F4gvo8HDZk@=oR#qQO`Yk3ej0mSQHMk z@8G@1`*vENrewzn`XzhGkSz!;LLt&EyeHnHRKkK{I3Lct>+WI3-=JVn&|P&`DS66p zuYnywMnW2%hU1^eNdMSTWY2ptG7`Ahy0 z0Xv8VW`P;SMuooo%l5K`XCJ#Iyzl6pD8Wl`c=tQ-4jen3-Ey}q7%3Quil}(tJ@An6 zP*fBZ8~6rFb4gbW56-s7;p?Y1{?#90mp!2;P1*nR-4sg z{>MEP`R!c@xa(sMtIcb3bl!}N7;339fMAw3IX4fil++q1IWdPP9HaX zbmQ%iJLCm^fsYU)1ak9#k@E3 z$BqS_fIeOyZztc$p-YFJV>V$d8_Rs|^TC86VhAZ1vWgn42779s+RP%e7{-V3>b80~ z3uDGU$xbrpDd25*EAm!ko43tFRwB9>(7l*ir>2C(K;wJMQH~<`7>cY2>hQ}$c)%Vo zYpn6DZ=r)grXRE$&~U(O(a-dw?LdBm&lvVj-C6fAgAciS*+q5%A3{Z4ky0cGl(UaH z8@mDcJZh?%qyVU)Vr{J5Wp|3^quA-qwIH%8P)-vKXk}U%=uD9R z4^0d51)=$9L};(u>u;$05Zagb2;I( z$%^57g*_LZe=S0B0y-Pf0RUY9_EFFUARiI?FYI~#>H%;*fWPanJ@>;M1C9a5fMdWh z;23ZWI0hU8e@X^0ry;}dlscux5DM$U`dRQSSZEj8UDR=o`TwGS(a#&r8$Cm~p>OD% zCa0O9XJ}-&=OU~jEF@rNLQmXPbyY#L4c-4+-di4KD0tDoGG7^CMdk(fbo_r?5%`SAk+GWPe1z2X|b#xaXSLyox_bKYn^I_#dujEMhUiGZy5Eqn`y zKLTBbDRoMHSKU>}Ilz2)LYxS71}FJRp4}2?j>IkldG^prAg3`#$7tvRJVIODRzvfC zh=BV%=Km++iC7j{7D*veg#SAQPr-j9^p?G;?S7&xPWV!M8G7z6^tVwBLG>G4GA4o2ladKd$3>c*ALA@gZBn{2kc*v|KEzx zn1Edr=JAn)CZY+wdwauK{+hjJJMxaaIdv*LC&Y?afxS^Duak#vh&ghOToG9jfmUIa zSS7##xIe%S&}L;UYe}d~fF1*%k9P>J1K>~j>(sqy$ADwNG2j?*3^)cH1C9a5z&|tt z6WD~XPcNU%XW{LJ2mLqmo58Ib-s~ZEh^-gY3(gVxs=f*xf6#M7zn|D94*lxOss9fh zZO8_^r|zlu2=Hci=iPZKFO}C*^c2v0k2B*;Dwc|&M-N$Y2?@{*T+|mewEg*bK5Dyv zpJRSqZC0BsHVdT!HX`-^65B$w5ZCQ>YN~&12N0kM|CWHx0o;WjiiZMPerW2^_4kUs zqO1J{2Jbt(@j?nYQj8QI5pZXZM;IYT$h0DD*gZeRPO%?|4+M4vNxh`rAUR0FFMg4L ztT)W;u_o4hL|8_^Oj(K($g^(f3qA07P8;n;`z!mEE#*sjeOX@)ClvFFd4*+RnVf*m zIe02?$9|LWrT$Vwe;&(YIeh%Z2|Mjh+l6%@cmGc;mVj(Ncp@-QL#r`d4ObiWM%{&X zAyvY0jy%9Q1b8X1fGEm~a@_sVKZn`5sccG0hnjMkx6GRynH+g69t&jF)iHHUR7dq! z>MM23Kjz00&Z%>1u~}?x+M5=4cWCI5m3T&;k(ih9-r%194&k=F9cl}3gU6l*?-g<& zlb9s*>8N0k9SEQN`{sSqO?T5*%oQ_&kKjY?P>Wm!=mE|VcFLU+?_W-tQ(~V1tv>P& z@Lb?K*-QO_ll5c`ok(02S8dT-G(05e^czUo6X=X=VOv=ERB-c$hNDzWshB_nBCE_Q z$BXfzKkv_RyT_j+*YUJGEqf6f6Xx={9G?y3N@nBPctufBK*NA+##j6mr8f)-eIwY3 z^di7h^4GgR_8I@@-QVQ_{6qiBb5G7O;23ZWI0hU8jseGjW56-+r)2;)Ph_?sZw@op zH~Je&`X8;2v*T`6;sCunE!FZKC8~Exq7b7XY$cy_Dl0&@L|wX^;A=X zslgY~FQUlozpO9oYm_aIzk?Y+TaYd2qx3hd|DInWq!DREP68eWy8Crv9XZouM0`R<0zCTZb$SgiL^WMa zUngKz#|%G%fUNp@tRAb*tMl9hcn-ST?zWsNr}hQ=g1u_5`c8kRoA4$a8H3nYAgk^R z!u`no$h-1g`G`GY;03qpHFAw?NPv!iD4{z69RoM$o}QL~*&KZiadlk1#cVOi3?vB! zFCj{ZLEa$m*T}DtJKh}+`x4yEp{Yj?1NH+a2;dyK2GA-%KMy?vZt&1XlqSH-0Dh6X z2R{Hb9?*;6c8)%U_ag5_HhY`Bq6BmTWUv|RAL)aTQ{BLOf}P1z z^VG~_GbtS+5u2mu=pANOu#?wuT}TL9RrR5$ADwNG2j?*3^)cH1OJc=V1~r3_R_wjt9)^~f={vV z-Xoj81#iJ|$N$m%80xh#gQ0INtx0R32f+6s;~gG=B0-VhAYrUO*6$qc94)SkYuvDF zh#KOaxo4o~*1q=h>bx}Bx6x@;+At3Q{d~y?zZ2@(x^@)-d4M@g4uhGhv2ART83>I& zZr#Y&hn7AaPZ!R{&|NpNO~ULz%v^~Hm`^{WtaxbrBQhc`5D2)Fnxe#krIWsn)60Ukzz5J2K)7@@`xk^e14!SLAKx@ zgm^ZdMaSb|dpOi?pl_iXA&`Lt=jaQpWGWf-N$%pi_!hgx{;q%5xd}ysq5-ra@LEh0 z(*!afzy-Yf=x0FI#A3dfclJ7a=lOY#%)ZvLHKkCdkO!&F5$`X4Mud6=;kkf@U{$ax zz>W!oW0uF~9*=>~2Rtpwd2+r?E(^0F&}aFKJ!9VykTX!901ZgE6QSGyXd2-Ak4L~B z1Y9`Z|3BofKKG;?1C9a5fMdWh;23ZWI0hU8e>w)5QqLde<|Fn9IrbNaUGKQnqh}5p zcIeM>3mr>HYLnU~x`}>97#a)>uBmHktKO>7=awVL5ga9S@w@oDU+;c>Mx9Z}waY;L z^vJG5Za{~iLx8Nc>4XxhgqlLgXflTR_Lza&m^NWf9CGkKRiCQedN(=8cj_nhiQUGx zQPTS|UWd?@wPjs-SB}RoYKoc&0a*e|3Gn_8Cp=+K*bV~bc--YNyJB~MIr|V}%gCx+how!AI>R(vZu z6QB`D&(rg{cCJ0l4zsedti;WEB>|fJ_5}FRaW}rIuj+ucMDIwM}g^ z^UVAV;hwxF8xclCMnrxf;NG5)C*-)9Lq~!A31;#Wgf^6?i1{D6hUfS>o=&Ed*lAp5 zm&50CkRPN5gw~-BzKv)TzFv4c@P+<7y!QE|j^9n*5%?))@EIIC6ZAS{r1XYg2-s6B zv&$^H1EH@!9dkP7ECF9T#17HXbTqT9fx8bI|DKVQb;0wZB#ultam?42a#-I7m9M2K@kW4m{y=tz8`vhn@u+#ZT z{v=a-sl91(nncIM7xD{v&%5WLr=S6$F>lQA{(MhBXC>ZK>;Q5RkR6B}0CWj%2k@u+ zb?RQQW56-s7;p?Y1{?#90mp!2;2)X+^s8N_J~Z66k>7^-89i{ghqmIacn{Vi>^MW8 z+&z6yZ&%yZ7&FE+Cg4sAKQ-?3S1I$atS+ky1_gs$(Ol6-!K2`uIcGYtPAr*Drt7FW zs;*zxU!)ePj5?!!96S!N130BmY25#zBS2o@b^^5Sj=jt&0<;eB z{!e0)7*!IOPSm4^oeOpr@T1 z*@wv}^ADes*0wdJD(tkl{qHAiU>g{;E(uM-u>TLc1L*gmhXE&FiLb(+kE{Ufz>qh& zh_HqL9|OD-4+!v+{6UBk0s?vk=pz~KL+~H}(EsOmPtGym7;p?Y1{?#90mp!2z%k$$ z_){^ElN#JH!~H;jCLUUQ==CvY*Alfvd>%i{JHt)9ge^fSeR=In0_IidlknhI0hU8jseGjW56-s7;p^yEg2Zc#xdl# z!~2a}IP&$OABV>oS?}-icR4!C?-6nmzO~=lt!yj%%zkF;in`Q1S1{~K!{ZF0t^myK zIs6>d7Z9J#@94}bv#LVC4ICPP6>5drXf_(${qOj9 z{Mpgj(T9W^!Hr<78Edu^<`8fwge-m*e-+_aa4c9tXd7)C9TAKO_7YAIpht+Rs6r>g2D`zoRcqCT zU_+2Xr_i&4SwUS^H}n@AF-HvU!^qov!C!FPyvx~gwhS-BtH>%6KNnv0i}oTZC{9{* z3P4N$u6~ys5jS);Lg}D%fE<2!%8^ZgTQoG~uL)TR=(xi^=9oUFix3tO(1lo*m*vRd zL#E&eZ-m!h^cT4GqXZG20V9oU@3r?D6L2rb^ON*dhES1JWSi_Jdz0Oyw8d!*9gPzS zZ_BqO9;55nH&=Gp#@4wUi|1E!8xyN=4I0hU8jseGjW56-s7;p?Y2L3Y)z}t++{Q`ulyefz0 z8+!XrekXr8A&!cpzSdvs20?>h5+QLkadd`1!;h!pDg5uJgq$X)!JPguco+;f!%a?| zQ$O{e`Uj#1qK5D!coIxA(`YlWkzC$ClH0$isjutn9|&)ow@oA6NS9P4RTW)@{%w8T znSlI2Ushj3L{;EuoSo1eJnTs+EHNdnaWK?DhBhJyZ`$!Jka2hOgDT z=3R3_pU~H-&mMY*bS9nYtNUvBHyVV@8~z~9-&_OaFkbO?Y?WD`QC-^q5e=%edux*F_P z@Vb#xfZYn-kB0a040#{|CqqO2%eXV=+|tRusY;Ys94WG-Pf;S0)8 zIIquZWb7k@51EhX;X{W6IuEdWy2tNvg!Ps3N_o)T!wb<`v=-CsGz&k(d2v46Ss=Ue z2SN=(IaAK$&^dH|n?KaAgn1EqsYV9Hbi!48HT1v03jrSi`X(w8-XuWhg53%BDh~lknhI0hU8jseGjW56-s z7;p?Y2L96wz!RQ=r{I{GZnN7AUT(~}?QA=XnYoxLX8I7Y4`@z6wtQFCl_jtVY&}s= z)Z{h8ZZ&k*LAQ@t{ki|#Z=@P2+|rQ|Sdeg*a4LE#in+UmYN0L$7lXtqu|gMLEy5e> z4TTPXKm}?j0lR^O1mq3E>)+eb2{d5tU`PqkVBZ4Ks5$5owpO`=%aloMaW0UbxpH zH()XW9g4{PNA>~yBGWK zTA(nqSK^gOVUUow6>UX7+s`8BVS<@p(B;=l^b&EsxZZ3#o0=0!+Csb#hc=>(ZDSkq zhWwd)Cb8SVXFEa&-)mi4*Dy5B0Ga>j`$OhG=6;v?|DXQVa0dZM@2ISnS&athB_P^4*mbg zdb>`bvD?3(E+}-{!8=eqC?5DxKbl-8*G~x03t*m~tLCae2fD3oYmxKE31tXV)l_m8 z^r2+_8w%eKuRtkPN(sUM0&e2p>TmTR!jI}lb-+L1qc;G%gGFYMnH$Uv#u1JXhEOwM zSyR?LQBPFQpl47{m(z#*Lq0qP8Q)dmcU+)j|6Op4>FQ^w_E=Dc_dK2F_@0((*7z+rO=>A_#R1?qwVBd06 z-_+Q3AX^W)hInm-33yxpdx@Mjr@cabe$WOWYcZaVr_pDSP$U$6WFNVYP$E(ya+Z*e z&_#3+AMy`*HC8R`e!%<6eZ#zA-m~x7fove7NW3urzc4Gz8c@b0G$y;n zZUHR?=6uZGc}yPj%DxJ-BhVL!enaer@Vc7nrW*U5zM`-AS^g|5+sgJ$^QPHlciFru zubN?I7-U+`lrtr*a~QfU`>;NtULQG(6>Y^(OM%S3x~8tdt_OOLh>h6mgaK>-OHZh1 zDu#K6;3o^u!YdL+uo2V(@zwu!_lLLO-@5y|+y8&@FD>_QjseGjW56-s7;p?Y1{?#9 z0ms09h=G(MrGWptoGd3Vi_4<1ZERzB41eEy-|H=VOK7_B=a`+~@rQnWE8ognu~saj z%qVf=Zb=9|(YhbC`?c3}BBlg@9DV}As_3d{QNO64HOLwyh$eugK3dJM=5Hm$2C-ou zAaeMV21$cG{vJPfG#jfKIt~emlP- zVSRLc6#I$d>_IO{5+M=Of;Zy!8zb$SH#Z~zC67$6L3XX8@aS!^6(nRFzd_=Ly&)VcyOnvV@+4 zpZHIFwOB3E5}KRlVSWJiAA1Q^comL)(o5Dux9!{ZioT+^+O75n z^@Bo3V<+mI$R%^hxoj?jE&!iZXcgcofF2_rkH?`SK}W*(`g^_4-{;rTwREhBHPB>K zvXv~Jb6(22+{5>TIuq<4;CX3AKo7u90`eTd`&|Mw9WM#53FrYpCIUV;z+b=qL;nYL zf5|c67;p?Y1{?#90mp!2z%k$$a18txF@W1DW}05C7b{69qzmb_cCD=?Ye{s!;U0>N zIo!|Jm^GmnU?x~r<|>N>Zd+h0u>MR*;39j)cp@*7YFK+9;$ z=y-p;A2%A8()QX$F>^Q64Rsa*X0URqoH`#pAAQSz%O66x8oe5YCVvazZU1e5huWc# zz1NXY$JPlu2++0Hh&SRTObK&e-`DX~d=;x>b!*c)?CUF_3Mf3rr{+_G{lUOsASnJOc?-0!jebsydlYCOH9l za_C!3EE0?7{5d~EzzzX>3*;5x9u3{Y4zt7HeVT9Q+dhQkgl?vrK|dm1^B6rw?^pX3 zas|-M*x&ZI2vPt?7sW-fF|skzJf?XJJoR(=Tt1SGWY~37VwKne0t6F2_c?U!y?8IW zo~Py~#Yq7Z!veWLmLxz=k9@)t=7fP3ewLo4;q6C{1ZM1}1awMXG#5=8o5s@94!Ge4 zIeGa_esX*aq;!IVG*SO-))m5`BE|73{XV?NB{bLod;pb!ORQHo1f?33D0xv;GV@ezgh6|ASTm z{(`Eusy$4YpeCph)C-CJi(a~yMuy<;_V;iP7FWiVnJ9Y^xdrfnY$jYI+$SJ^!FB)r z7yTk~591hc3^)cH1C9a5fMdWh;23ZW{LLA7$zHPRwtCoQjyVxp=o9P&dmtak(S)do zQtJB=fthxdT}4xOov`;F`E9t3UT4>7y6Vr)*fZfAI?)i+M3sZEAXpG;{12!D>H%S~ zzu2D_%nOc1k43K#Zu__WH}#v8!nRbW3DN}H)pqsJf9P)~3?QtFu8S7X1?WOvSVI?( zUZq#h{AYgrAbyaCI^W^jugofkxA6X|zryZfqCe69Ons)HA;;|BKj? zcT|U%}#FeQ}pW3*iyU{-%Y@bS;bbd=$&t6TiN60xG7`{*==Tg&`x1%1ITvn$jFz*jz+j}A5T*a39no%lg}(AG2c%q#UuA%md@VTD~`ku!*_`lWm+ zhaSDV?QWa1=3#cj4eAu|2o(v~TcG3qnR#a5)5k3PN92#l=P{qhw3TfoJO=G~d;YQc zn3&vP?$|pvo5&_6@`)U`ZOqv45Udm{#Vh`bV>j?Uz`kdgd!ai(4+3uCQ}`4Pt$qX1 zKzvKU-9DX77w#u+1-F7(W|l!$ze-uy5EL1b7&R z5VjDG5iSw1CqSP8UK4Kr$b!IgqLqZZ{r}B>d$}Lr7;p?Y1{?#90mp!2z%k$$a18w4 zFp!$1X6N)doshEbVhEX3CWRci&*kUxGr|(FL_p`ifo}-A=8*9Zoj5Yy_lmvLIM-hs z%mPP-FYwd%kcJ(T(}R_hl&S0$mnPEE5EM%dSS3I*g?ooK-K{I3HlKV z1OJJBUv}zZ`hSO&mUql!VNLlY}ewihY+*$P^++{F~wY488plv&7(eVZPoF z*$}A_QzNE{Y$6}<2h;*^jrTKu0X+A&`EA4mDL?D0heZpOKm-Qr|tFJf#J^^$fU@wF}L;hcSonAvPa7Ww`eOX_I=L}7JERW@v z3C%>a(Dy%I%ooTW#IEK!!7#&+G4URuHRUM4tI?PD4YU1r$z8Hhq)`N!0&z?n^V~kS z$o~s{0+h`^RZJDo8=yn6AfZ3+Pil+_9J>}=q zp$P$*fR#)oat6ejQv~dL;5mT@0D1uD0rFp_e&N6HJE#sSCWr|t`W5{< z!JVL~Y8vXYhnZn!Oms}NiE5&f1<8UEgx}0>=A=HU(KC0`-n97MOZt*NLiv4|lk2cL z?5TNb?&v%EcS0rdbR+vOx5;fX=nNWOe`pmx)1T?Ks;$aTfWDv&VJ4xZDQT*xDhm4u z-1DJLn69UXS$}xG_*pGYOM~t`Xv6Vypy9{e`Ifz9$=+|K+vyhhg^LK-Nx=7?R3%jn zO~X)&(8{z5bpe=#XNg%Nx6Cao6VemL@G+tPANhVsby7XSPO!xYsaUFTjz;DjUi)W+ z288uuy_nDDv+M-uIleXD8szb3B$TBrLwNibv&F2r*WAk*$r{No@(cJG9#F3!G9954 zsLreNU&XH?nM@`h^T(maANPOE^mw1=iFx$uz6&(~g+w8-lkeom*s-t=4?6?g-FNX_ z9GQc?O>fh|cChEod9y#*AN15c^#nG7ZKwW(JUkDFSD-GhOIw5A!;XT2qM&Hbn{)K{ z)ux<&@Q=L$c1=$S*UUAuQm@qT3GCzh_(ri&l<~@Vc~~Cyk@?8LXTMA@)0oZSS3&mx zbQ^g7F@$gUH>3b4$CXhAxrMX_3j6#<*bx?*31~CkWA8EK2||~E{K9!`9yth>Fkkz+ zooN?(7LYFhPsIWPUJLeM*t@t4fWPN&G550_1C9a5fMdWh;23ZWI0hU8j)8v<1Msoq zhP~J>wtJ{E4;gjH&l}7JvwFN9C9hTCm@(fcbTM5_1p;QB-v|%IL-Cq$ny`s&V!3QC zd)M4Gxa(s^?r1uO-FV1>+hjHw=+cpweJJrH#|``3GTBTvpP$bkqsFL3!J=ScbYT=ZfGY^dD%eOEr^o5OrmyL!I;z2T zu>G2S&5GC}_B?gTPbH+ZDQy?sMOQIZOlF-~xA)uo=mL}kQjl8)eCW*oGoK79`Eh!rjd3w;GBOkC4VVl}U zsRcViZ^9?~6TLQA8x%1`%t$p-6*L76bnVEZV^kP7Q_K{j2-^vHd0vjrJM1|E6@;$| z{JzEBV%Nkq5ue2;mwV^1XAqr%n9;BBD>PBp<+x2_PL0FkaQGwIm^PueJu}P9l6pzK zTZB9OPUzD|ZzDMLna^JH*L83$OyLHRUGcwz)0zBG}PjZ&I4jfq>l-GXCG- zZ*c6r@bCWG`5_*ML$*_tIPgn zf1nSjm9TkkC^u7+kZ?ArPwa#DX<9ipH zg$COGlscu(VR9H`1Z1|EL;ZhT8`o~3?f~S%!;e2gkI)YZ&j~-O9~HC@(A1+d@0Pkn z&3s$vKW{1A_cIaF2kFDCLgXSW4i*Prs4qfaz(e&=9U)XE9MXsMNp+G`2OSmmAK$QV zSOS~C9wnfgpoMNhiSoTPvzS`GZY4!VOLXUAD|9KhEC z%>eoW@qJs&7Sq{ww%CWkvyhkNW$(BB#!o5z%fMdWh;23ZWI0hU8jseGjW8j~I z0d&3p^gq~p&tR*oZQFN*|5{`a1SIE-fFN0rB$A^NB?yuwiGTWom2PKt$JVX(d}5j4`&~R8Ty>As@{9+t+B)Gj6Gw=@G*Rp z8D-#^*Mv7AceWaQr`RdZ@pBx0Xv^#}dtcpGo7g5c(N1)EZ@78eb=z?fYom0C@G(DZ4e>$Cx-1+m-D}6wTd++HIVTtfE-x0?Mk~oAXq9>xa)GbxPR62Lku^R$AF2Xb~U_?+iP`suQpA*LVg3a|Cz~ z;3u!hE09TW(O$F{*aen^C*ioQ-^=#02C{*KS6+A4ox0+FY>{0=6PWi%@t@Uc`%ClE zyoGH+X#%&MuU;;dOJT->dwlpZ;!dG5f#=UHa*L$|vL@j@2=7VEjc~Vt_a8?&0Px)3 zPQ()E(U;1lGC^#D*c3sE0RDVC?M@4Q3i23Fo6`oj9>@)RP8<{m1#%S^i^bvv@eTim zuP0i`RuUeD@I~BZciCxd8iUUz-qUzFUgC2Y%7=2?D@@T-bXt?vOef;mc%+#5gueX~ z>B?Y(%MZj%1D+4?f`AVpd=z~Sz<=YYmN7_LI{PFJTdm8!ZrA=vr8-O3#zkpADR7Dm1)6-GTI{fXBUxyrZM!*BF5rKQ} zclEn2gD$7ZY1*^)Y>(cfUsJECnqkdwL)->(^S>2$H@q7@i$05v)}!^~=;J8n10RJS zh2@5BEex81lCk4Jv-$a!1G*Kv5_Ju;8XPRb6b`@cwHl9&(l2fB7xJ3JgY z9Kl@RPs$xkLAifDZBKhs-_%`97qeUM)(eQ?YPkBENMI5e+>pb&9{GG#MOA^Ef^meR zpU3*KUaeLu%mfaE2SPj_W&_B(!ybM)@g~uW^;Eyo zK|UaI9FX@Yq>yilH^p|gon@vhJj_uZ5Y&2G%pKCov=X~@_yc@GOtzD4Ng^{*R1~EI zgG2%uhck&x1jX&C*?P8yF9EV8k*jxIUYGEX7$^tIu0-Y_b8ti+k^Knx5U#WI@OWFFv#rH|+% zw#uz?8iAQsv!GdExZ%hafOjBj^R|3jA~UhAY%5{G`qsDxIBm2wzi#4%q4yy zFc-N+JR*?&=X?JDq~D7Ez4!|F3it~63it~63it~63it~AXI9`5f8?~z&_5%Sy{4&Y zauY3B3)afCGRT&D$R4s$d=wvG29RRCw?U5x&$dH+!)dj#`sAz^4dQ%9~$__*Vpx(zkCT^g12NX**de%WF+7@huOz`GvBNvj;f;y^M?2) zzQGN`H})F~Ed%@zp&f?@B4!Wp9*jp!G!sn~R)u9FN{Lb;zKkzX7vvj4(~i9~cKxs0 z*KK{u4}^yxvg@;&tY#zMNN)VC_(evLwmv<1B4VEm|GZiRy!Go4@Y|~^>&lv}Cc~b6 zy;v`*6DeX+#K4bXAb}k>dR}ycQ5{Lu>JvuZ9@WOjcRFD;9O9DB1$Y6k9 zAN=#tmt)ofO$l-%kP�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 z z1!93f)*ig?xZR_(5B~dZwwpbvPip8VFsG*?B-V*F=11%^(%bYl6JZ_!-GX@DNA*!% z)D$(f2`>rvC|BXOx*g2_@B$#)ADM*6WWbK)4)rFW>!6k2%I_QQ8^)ZTPvuixKXm;N z@a11yG90QI4$ADwNG2j^Zvl)Q485(JL*)fx^rT+D51nA2# z^J}FQI@i(J2H!d6WZc2a^YT11;RE}?hKXSU^Wa&lobicjJrRaYG)z?%|Ok!fVI z+w2xTkJ|)jE?UV}a;lgr`p7;KnFFO|X}Ody<%8rP3Endha)xq-_C@TAnCH#&pcA>z z@AK34w8bt2`V+kW@nk%ST@t(p&>nQAZiq7k>|p8=@cf|3fGz@>6L>W6-vD|k5OyF5 z&>Qgoz@Po!t$RGjfMdWh;23ZWI0hU8jseGjW56-+|H?ppUZ2C~o{sw0`s@B09dyX4 z!{CGNc;xDhW}{hd!Uz39BcmR9Xz&Wa-wxe7bk85u2NfdhA;2%+j{q$_=BSB$B1e}! za^|5!$KOScAa1USMPh-u8~W`jVhTC5KNrsl$a{Z6C@PD}!qoNtm_24o2)Lia|Bo3v zlguP>OUDhkyeV(?@qK)-vz5aysGQIqQkjhKty$!t$ z;W02*qT3HQVrcD=oj;f`-Ap%=`D7kL#1L_09J!T%Ka1@6e!L&=MhLPF*lSk7R1JDJOMT1)ucALPdRoj$k#(ZVqpTt#geL| z!d)EN4EP41p}>tEyNFBbk~$kc8*bt^3GV;s06eS?E11$F{YW2qeVD7i)!*vPYO~r+ z&|w`;@2B_Um^jp!H{L+&KadS%x9x3PkQe0WW{*~6HgA6=$3P#$yAJ+6&k%hWRPn4j`b`4`LugC2JH+;O))LqKPG4xK|ssz`N{FhY+AW_)O~ z7qA5^FJTJ-+5+^tBbyHQ@zn%m{h{x@iEJX#%h#R&Eq6!WG0<#Z5|>1XfSWAt;qaxm zq#i(c>hJJ7ya{WkQd=Kf6d`3$lzu0l8fZx7y-V33El*90F3bPeKHe} z{r4dBAe2pJlUMi^evw^dNBL1ch5!%#c0xzf(ZK8QHUFB|@#=Wj3Fr^Nb3(yih=BV( z?$prPzfo^gbzNQOWH}l1_sGjbCjBYzlt(pup+sIHuZ3(O8}UYge;s>|m-?kfmmM5rBSxGO`S{ zC-jt;*d_KI0T~ZjO;&@~cgP$v=uJe9qZCqflAWaHnuB9#9$pY0MLddFKsXRO5UMJx zN@Opt@KywVh+?vse8pa|s{~{{c3>TX=TL*!AeI_&`19fKN4CIeaa!Q{Z|0l%4z`2g zIU{cox)9v)k%}fKo|8l;ZHz#Z(Y&07KpZRfpTw_i{Zrpr1 zUp``w7;^cbtItC~W?W-JXRosdy?ixMO(3Ihik)KN`Ci7C@eB5X-NkqDv@9(ZjfqWp*R}f7YBnAaNb;y8+S3D2T!;uR&mXD>>!Ipe4 z;UM9iey5T1hTgfG;-;8JzZ$U;EY{_o;#|5X|Kx2s_12N_G5LY?hnl zG{QB0?SJYxM#vFzmN&~w7)lsQ5SbwI+lX%??uPD$kjHRK+!A?0c|yokXiY$t12}`O ze>2V9?FiU4AomX)0LXtp-X!t?F?YjffILX-p3pM^&;AdDQmj;vvxq(lco)`*bs`JT z!jWe=fDK^qtt7IE>^8YgR`4o#`DK2Ieh7F9_St>5CE=tw8SG#Zv&3w&nQT5`pU`&V z6~pHt6#+Yv2?S(jz)OJL7IGYu6A}7FlVDT zFFj@2?8QQ;8|g;+fH`1V^VS@i{_F(g?ZYoHMvnHr9Dv6gxonk0C2^D;W$=@Kran{i3Gm^= z%a0i!djrgBqX?Mqp;@?Muh=bo3x6$MizqM3!}rBrpbY_cdt|u54_=S3NAJ;?3$L^5 zth%U94T7D6Ou#y_j?Cy~^ltOp{46`mcJiIPtSM`dhgg*`SIiaQ6`Apu2+$Zb4>b?L z3x86a6d&`CIrbT8Od9jbf90bS0a1e>~`0c+Q@)Uc47gswMb! zeO-@MqZKmr(H($Hd*s^vs(;nU1Uznzo0saPLZ9G7Gtnd_L;^Ze-!XR#y6SMl{#pDi za>|@?1>qDw#hcouq~a(O>@U!7hrGMt1l;@4%aF^<j~)kLp}s_B$%ghzc<#{!-Ptvk~u~|CqrM+S5#-!1D=ov`J6xJc+dLszC4vp zW$_-@)HU@vbx!@jf8cn|d&Hg~GZ4EDXbIYxc4m|wrSW-09^z}lId+calldfGhow%! zZwSb3{D^@44!SOz5s(XrT><`XGD3VpYyx%x$OFW4M{a=24)|C53F)4%W56-s7;p?Y z1{?#90mp!2;P1mgN|90&=7sqS`@+^RHOy?ncst(i*1PpEGt4~jANVKjNn6MiGKbV5 zg*gd#d~~1f61xOu-gpG`#C@(lrz!k1)k$~K$g@LUdMc4B$oHRZXWJ2Ggh^x5*nwtX zkTH+0b!7ZiU=`RVzKKJ#U7j$Ck0RB;a*nM0zN{~cvQZY9gvh9az8hiAthcm=n&&9?+Y&%kHuh z_ynGUrC>>H5*vrbVFhJD**DZTv`_An@5OsDnt)sP4Rga_&i_gOq_NvT-Xd<*ox+{M zr~T8^w%FG1s5@$C3F`1VypSv;B$-KOZWC}OC-yOk5uu*oDUCb8;kBiUBMnW-D%;5Km6EJ6EKLZU2=50JbWGA9K z0sDx9guDE1;1QV0rv~~BcsX#}e_>t({RL@FT60Zb(_8sg4m}5UOUV3(hGnbSYBCVQ zDy+KO?zWHWqYg(Oj=n(sm-zf)AA%VkyMjRILI3mj`6=LDiDSSq;23ZWI0hU8jseGj zW56-+@4x`O?$Ai%P7T5JGQur;%f{BRbyZb0=#SrQHk*e8c=w?Z$E_Ii?Q}6+gjtxy zrrh<)y0R`pz%_LP#spir&08N1i)=UlTfr4uQA-7QYo_%_IN+ z5CJ*<$PPq*J398Zm@VW=_|icCjX4w<`fJ1*k(#FtJouQ`x9M&A3+k7LKLDBelL+Vd zIZA>b$DtFrtS+k{XWqUKZs3@~E9eTkx~i_C3BM3)QFe_cn` zkxemE%sPLa-$iv%eM}$ISNGNF2wy~h5gp-2_&*Ww958pH|M0%JFHV>fMk=XJ5RkP9 zj|KK9@MLt*9W;FEiwTK%B3{CjFz8D}uKhWEPD59ZyLC_7)8bYQjXb>m=yo`zPN^!o zijHk!8}tcoU>kz_HFg{DE36i)#Z&f_-1Plf83N|>6=H?JZUTP)_1=1KrkpANAUx)e zIS$?55|F*{PQH^p2>3l{AmH_fF21#Dt#EV44h6iTzoCpMBPI~q5Z1Hx>3YbuEwe{=&!Lih)+1dPB7&EVWvgL zd?8+lHzUBeU4nA`R}w0E6+L7P7V(OB@5DP%m4KTuZm`h%A17SqmpMA(k`YeHQ*tK( z^M5P?X647~u`=`pU3UbJ;OKVC#cA`y8fc70-ba6x+aabOfuR^av(4iy04&8oh z^;+G=wz24{?##b(td5)p=n}9iX+^;Nja^1O0`d*MB`h!t zg6sfjJ>a$fn9!VZ8%7hrCp7Tr3cSEBu&jikW~h0?-*EItzzZ^AjTkE_rxI=v@P45;@Q{DVFRqHKo`lA_vG$B-`V!zVVT8B(twuKm-Yeup z;B$jrP;pzF+5ivOXdO*W6EifempEp5WCFY(q_8RMaPlrZHBZeTJIG?EQNz}-@J(zY zpu=wjAvH_Q@ZRG+tV778Gih*tmw^3C`48nkTv1ol3cVuev&3f*xfO+NVcMYdB!$I- zKu2=co~3QV?H~u^rF}_ifv6xO5MB#p1iHPzKg&-$_dFZ}jseGjW56-s7;p?Y1{?$b z-V7i+4mxk>sgV8f4TM{Zho0(JnHs}l3XybvqIn(!upPkuMs z%^vATdXktVkfHyU0FQMi(Me$DyG$794fNiKHv*dTd7QxJu?D;W-(WXTi+p|yjXt#O z$myFyz@7J7!b|otm_w04uvhQZm{~7T{yt{Qy<)F;PQW}5-~P|`XN%l^WCzYCpmV+o z;WYt0?$9RmGyM!S@X(AO^^SUFMOl&1Bs4eF4K27{E9~lV9IM~QHa?Gun33y)U39!=2d?KH?$S?AyvZ;g? z09geX5b?U9jey4gEBlqLp-VH`2C17=_c3-_71zlumgZU9oco5`!Q>$GwDnp-A7|b0KEX-n}jx@ z9cRV`Ui&?4PoUGlKcT^go}iQ|W$N?#yfXp)1Y5nW9(aN70C@-l!~k(u-j(oS#E*y{ zk&H0io9>Y;BLaJj_N+ZaujG9Kb}m^72?#MwOllN3Wa`*D0e_h1v&-!A7eZe`Mv+k< z!x23X@N~>G^9=M4ImzPyLXgk6$SewUD(C?~R>foeSQoR!>{K;X%_O`h{l`o5GT3Jg zRYTP}y-s&FolOFrK>r;6IgGx5j;f>T{h{}V?tXVazsYYj0ht%`2=IYyC1B5i&m8g+ zekY&{6OZlY{(tYEsqWP~1{?#90mp!2z%k$$a11yG{#hBotcqJL)zjJZI(^`$9?FMu z%>3DOHa$blP>S68xFt6yloq7}&p&3%Bl?KOT>hM}O07~W`O4t#{}ua+rqFS058uO& zct^Y)gyV#-<=65{_9g2^s_ob!w!n@c2g|{}uwU3DJV~&J_{jUn`<#G`_OKWBGRaIb zz8BvcECvg7{y`589RalG$gZ0qW(ef{6(K;6jad-4`8i^aDC!jr^5#x>Cp>&V1%*L!0%u>80aGU*?#sj^O?bI7~TQsBCumAM1U3n&k;HOU#Kq>It#%&zg`p8vC zLTE|YVRu+)C8iUquqx~p0pItiJ!*@XA_n;l=wrkj{v-R5VJ<&LSi{$F`0wx7JG7bj ziqam_Q&Ye&iyp|b{2%azFD`f&JUl=A3itZJgWs?> z!5j)LcC?8$2MG}>LS@xiHT2%Q^ezn@KzUxCW2VOqzZ37o;SIoSh@N)%=aJoBSQHjD zWDN<8!C*F+o!}=(P0)ZtpN}2^=nN{0$^t%u69g@^fbM$;0UZO_L3Hvud3avvk!z-# z>8S*~M$F0BWfUOb-i$eZr{1aYoPM>x+9sk2IS{G~x6AD^wv1sXfQ~xM=tZbw;E8^so2%w(tyyb6<)88vtOdi&pFwBP$SQzV zp_$*zPpXnC-2F?6k^=KOb~1QAy+{{OSJ&0Y2*=fNmENQ``9*$F&X%+2=fnGkTtW0K z)H1aUIu|e(x1$^Ycr~yefIc3%3h)?Uw@{hThPUAfS;D~okG%ipwt1j)pT-Gn8Z``l z&W2GoB)lJZ9pgjeLk%MuMj&tD2?6gpIu?GEKgvuj6KhQ!e+#??9{dmaBl1T)mX9T} z7m(|Z4E^LHxxmh7G36G(tAJm-%CABt!f%KhA`<~UgGpu5;Is6ezvsO~F9D6kO#(C_ zc&+e0AOkQ4bwA>LpTsBeDTLhwe6Hf?IQpzQtDqObX8^hn`d9>?`N!;WkR@4D)l_jz z9MhF>*}v>VCoo-4*U!{5Rn!zUV+qhmAU9wVVH4p5;W`1I4P*qoA-G(Cf8U>}?v*{Stj|n5%HFUT@YL=$oNsuR_2q4t)T$ z&!_cijl2NdRxjyG`Vo7?kO#k%EoIesHNKY+*NaO{c^N%CCcFk23AptZ6-5Oy|8MDA z8s7VL1kAK6_=;eDt1Ie?Epm&@BC-hd?L~@6amidV=p01u-!J?Zj$cRi;1zQv`1O@` zWstXzSsPk*=;d?E+%hX+mY5|v+s?K;0r&07yfW|a_4lwBxIsDm)ATf&@}_HO$MHCi z3GnjQX0=&Zhc*28-<$6#1>k_G$Sd+=1mqz!unjD<^xbqfy+v(N==^KX+jIEpcjz4& zT>{eyOYKq{cn@es$6f;(cxVM?`ZN7|)I9(_1w7>O2zVcm#Rsjz27iP9oN!THRNwRO zIc9g{GQgL9(ZA^LQ~T5*eMnbUmDL&oy!G8xcZEDUJm1~~WHrPvF-XxNOk5V1p>Loy zbu*%GVGwoM!54s;H8;;q|8Ee_C38u`SF=T4*>4vArTVT1z?wxJCr+ASQeJ}p18rcB4ia=gMG>O z_Iq2OfGkI71HK_(&w}002SOzRbOR#^@R?v2f*sN?`WIc#)HCRz#LlJ%>k(vA!efDc zNAxi^;*I!VJ(#v7b#+W0lUxv~d0|u7VE2@Y`T>z4kjv(>NByJzI6Y3ID`1#EEZ{wz zN~do7xBX#yn1(+Ap8@C&S`elZwh)k;06hYB0L}~W&-&BOJukc9qz^jSwXf|tQGLcL-U@Fu-q&+xBOdvAKS;mi(QF;JwO-RCGbE) z557{b)bMnd;-xrlxS#M(f*U$~@5u8zEl!Ku{5DTV$WFlh9^M0F=VOk>4IK0Ge>MN3 zFV4;XZvJ=k|G)RoD);Ig1C9a5fMdWh;23ZWI0hU8j)DIk0~h5*iCi|^ZcB+$q9Y-N zm%>BNdt1}i+@+3n!39T7dQ;w%=a4x_g`HFmB%Gscd)%v$!v_CzPtjB4AfP`Foq5o+ zWA6V_ekrdJj*6pV2j4+g;7)v#*hG&0!2& zlFd!P9QhkzvA5W}EG`TDz2pSw=y9)xryHyyI}ZQe%k(nkR5?}L6gTkVqYnXj`MAyZ z&^`1mbIZ)uvvpV1RprtgDd zfz|+?i(0ytPQ_A@YrlAq^FNVIq_)3LSSiZv15XR|0u7A@ZtR75Vg4%tnu(wIPo&E4 zA9V2H*RczV5>Wzu2=G&2XVcoYw)F@z*bD|;J+u(e{nPne;yvxjdj`6K6>J4NC(a3E zLnIYRNxcy%kc~Ik8yw^WBKr^Ch*Rd2fnEY0edPb`HoHw$!W{xK4v?>RhH#7>BbUcu zR+5+GsR-W?hT5TlFC~phL(P@UETP^5coOon{HPxcav;$Cc#^Q6fWM!~WHRtZ)FnVS zfZhT4UXYK7?1x@{FMl-wU6$wrM8Ck7{+Ir(=v&bv)CiSQr__~A<)8-u|4l%TF_W;3 zaGK!q0RMYGkKEsO3^)cH1C9a5fMdWh;23ZWI0pVY1}ce4;<@+S8z2YB>0)}&PlrDB z1LA=AKrLpt@gqC`C_Bn-iCZF?GTe~Se~^G|_D>1;>PomSuA}x&z=WUDrVMoU-FbI% z^OxsS#1wImAEe~9g!}{hz%cuxU+)|Hjjh3IFwDo8&5QHmyuD~I;u6lw^Ky(BLu&su z0y%c*hfB#*@<TSk@*Dp&f&|4?jM?kEQB(=3?F01 z*emy zlj&qivXZQ=ZmXdMFJKDbUVMDKR=oUWln?s=*#%AmtYJvc2rj;%6~b57o!R$HPrk zQw8nB8A584+B76!7Daa>I_mR^yy9d2F~>iP@nRhB6LuTWsfSD`=t+c51A7SQ`>`uP zeggCxe-P#pda|DEw!AHS5s;VA+-vT27M&>(A*1L+2=j2D$3IM6i{%K>B09(~#P`k2 zGP9|Kr~0YRz%%d{gsbMN`Br=@(4ByJI}uC7kQo84k&S>H26Rurw}2eNF1m|GH$)TN zL}NdKoW_^buZPzXCgAVRH}ehr40vyl!*`ya=a<-}Aah}knPZUAfUJW|JQH7I*94vx z>?)8afPF|$-BVK)p&DQZSY-Vz_m}&h6GA$qhx$YPcsibrZ{nNcy0~6umIYoH>~~!M z-(UAL$vv`Tz%k$$a11yG90QI4$ADwNG4R(gfL#2ughYfd_!mJ|+88;8T=TglZuLzF zZ{=J0iofE>VBg?v@OBbX5ik=LW`!AUuFnY<a@TM}KEY0~KM2qO;3$oqMmCvEenPJgCbk2xRt0=N+)I{^1=Zn=dIy`(K^cd#8n9$rV=G1yWqFJ_B_9zNs;=9D=l=GZ=_k7=vgs>|lGIm8Yz+`7LeAZtE{&0#l~ z4W_ECYA+Cwt=EFL;P9b$G#w4@<+y=keqK-5M?hx*yz$6IC};~(IzfZL*8xv{L)*|6 zW5pO==VU!u=OVzzUzgQo$h$|U-3@kwf!BBZUGUyxcLL7icyYXO5#u5n%7*fhcogh; zkjsZ13vT|4&AI|=N5YM2`4 zoqDHM`K$cR1auob@t^qf2y@gNQc`44HT)VrZvEJMEVK)Q-oj`48L1s==}amUH6nhm zN}7_SJUMIK}-w;wkK_mZ&8vPdHEb4dJeT z*RLI}9WJN}s^+@6j-_HL@IKXoW|C?27nSI?Wz=X3M|X6BhW zy5En;BXSyH0bjtc5HMf=Dt-;-{Km4eL{A*@m%-2)Q6cfQCs4cD#N50=yzLgs2>vL%D2ik$OK`3C+JJ?3F5%~LE zco+Va{7OzIz(X*GkKq|u28PGOo&foE$jQTv_c8&ubodMM5gwUG!CZ<=xdCQ?si-Qd z9;SzBLBPE^hK*t4>bSbBEgNL)?=gGKO#(9I3-W?I#6k>ta&-ytHDG4kN+?bJbLh6O zz$lU3m0`-9%oUSECQ`q&^ws1cEnY z`yVGX1K(@7CAC+Nl-!iF$>KX6^qR5Z8s?I3p%o`Zs-px8|b|9IWtX0n_t zp}*+Od-Ec)h(u0f39p2=Hezi=N7*rWADLwGEB+Nt|B<{NA&ZwYo6Y5=Rmx3Pw{Qwbugx`ZuRaI3}!&AfUR67L^#y$U@e??!>IZaMdFz5X@AU*|`G*nu%Dxi!=8p)t zN8|2`c?@3qeT2b$aPa@r^Yk2Z7jE0o?cXC0IkfYbc{}sY9R2gt)HIbuC(&C7@X7z7 z{!q9bPqvdSI^l4`$E;r7lqW@fBh#2S=I|Nd?vAebU3?ecuD5IC2+Sbh&o32AMJyhR z?`3-#^5|EH6{1q8QYb9K!QVqi95N5#OF*XKBDF|ihk*G%fk|Kn5nAe&|8v%xU?!NJ zs;8=8Dj4MLCni8|ujmW2AoAn2(WWP%foh;4O{8h1TB(YkLP2~9Ha&*Wc9aDEmRF%L+7!1g4_LL{W$RVx3}#BpE>T=CTzm+ z7ThItBj6_9j)0v&6V`+r3{Tl9ev0p6yGZF!i($v{E&Dd`M?jZ=ylr@(leHznEXlZ-i-fnjK7ttKzB! z{sJGfd3OTxEwTHFL%>c5zLGI!OyJ|cYwj9oAex)zCYesA?-3f92Bx#>torJ{8lT@D zv_(ND2H-sY|Mkxj_p6Qp$ADwNG2j?*3^)cH1C9a5z&|$wwL~p3o6wqo96sDMahu1? z2F*O~|D)MxR#jG&=lD53MNW|`ycHg_=MMqe~K(5|r<}>pL0lx2bYMsh&@|#3Dkxu3(^B1axDm{T4 zPFL#fl*+f0(gBMb%=RYCN;$4SgDVDPIP? ziT%8OUN6y0^a%9`jV3_T53j!xN?>l!Pk2OFOPvwOSxis()_!Y;5Q>RnfxcoIpT;MM z3F4l;XHSZg0=keLgfgrQJFCtr?3?fy@M1tq0v$pTUW89)(;0FZB3J}Nw%>leUw>)8 zv`GlqYvA*Ry%YW&zlL1GY$jWfl~~j->W>eP59ijoHMAM{JYm-XO~f1VM&u`;tM32- zzLBf!Dnrjj56W{y4#7SG_6?iNCNta)CwIwno0H{a2?)p*M8*Z+z8nLN0mp!2z%k$$ za11yG90QI4$H2b|0}I3gaYJzd zK+BJNd}f>3{=j}zhysLT1o*!3_lps}BpfFo z-yOO1$TWmceUV*cztUf6%!KHWui{tn@%`Z2e?S@h>1;ZSoWIBZW7r`4V}vH*CgC!w zjH*BwLV!Pg3SqE6*q=*)u6#@MmT2e#Qm7Q_Gy#u|+kSJ^Top70&22(D!ca9-z1FYE z^?p+?CBW~#i?GhFvtJOVuqh1LceMz}+=Bz)clJ9gW6K1Zb7<_b;~C9IbLjCO@CSUf z9c?k&CfCVzRstRu83nk}ucYS2+Ju$_WEEiM&M))JWdwLdpzDVwWCR<*q6u|n-JlZ^ zw|!(uK=X0e-nG#E7hy#h@(xM313#jbG7C9y=O%PVia5 zpGW5d@)L0XA7lsF$Lg`lX>;28roQ={aGU_`KfVeOwh@rm--?jbPwGb#B20vNLx48} zj}eoA{QuInw8h>8&+}LFD{Yk~o6ptfst5sl8ssAkrTo9Ba8&qf|7$-s0Yd&G`iP!r zCYor%XZEvT&jG&y_6XRoV8;Qi0(L2H3CPfd{(}B$@Lo6%z`x2*M)y1&1C9a5fMdWh z;23ZWI0hU8e?JCN$yCx3;M+$h8g8X?#aw}|zxJ}dOi#eQ9+~NwACV1*ZUE@!k@a?x zon%L;*Y7c*ZK!Riyeu#8^ZUFlp@nE6Qm_={IB&?%A+TL+7bo}$`rZ2++5O1u|3Uwt zp%*_xz@J6d9dZCM)Al$0gS%}an<%*X;@*$@{$w#(KzIIzyInh62XH?|j|uMjU$QTQ{J}c9jy~!i_2KnLo;~jM*bN~656^pq z8DX-qYz*%Qyc_LUyPzX)Hk-|oP;cNl0`vgzP;|DP=@r(uad;e#oWry{EuUm2(YB+q zX-0@+;{+Xi$PU2Y!B-CgX5MXlThOI|Ttw*Z!O=p!Fz{V;;2k)4hNc5^Zz_|D5*bUF zEIbQ`pJJ_D8|;aYuOG#u0)Gbh@6Y-(yskd14_j;(TYQ$#Lx>p}8H)IQXfcqVaKqd% z&(t%O-lRA42=I{LwR9jnry+6= zq2u4lb~4QKc+7!npla#2^mnSA>No#4KNJpylM+@F1`-yi1!|BUq`x#@{x2B-bM4$9 z4t1{?#90mp!2z%k$$a18v*G5~Ena{S=o#{9ibuM6_g zp&du|+hPLx?2!8guRU`7JBp6NH@@j_``i4~wT@dlZtY!U7ulEhCD(s?N_;=algVWA zA$v#{<-H8r`;ZJtbOAgiU=}~X4zLsUM3A?SY`Coic(u{>*NSjZAJmJ@VzY^DqF+hE zh7zFbKO&9@Xur`PfZ1}e8EhB@{w*NPr>1dzZaf1oR2cR5KN_@iG7I*1I*j3b6wK zH{0bB0^xE#`}_qa{IBz*uXdNUaS|Z!mIGotTbKOzh*z!A1pE! z;ju_5QU;!=5OpDurI=1patbYz!!pBcoVOQhl~hx z3L;MeoqyNFHIYZ=p@xYuK_5hBli9%UkDSCi>`vfQfENSL3tsy;CXT6MtJv%2x>=!C zC}b~IHC0VKqqoX-=XA&mb6tkNhu07^m%hW$PR=ypd2g5a`W6A z`zw5IkkRVMjTs%BGdUo_e!YV=nl|Vr+fxXIigxEGV zB{|j!`~!HrqXgs~;PpQvye7OOL=&I^a2bIAvOgx>6L$!N}iI539H3waZa9-@cDP;UHMcy)t1-gHT?3M>?WI< zrDo`f%SXUHd;oQ+W1c)pJ#TN3mXOyZNsQLvaFGsnzny7H!$spZXNpg~WO~4KVKK2{phCtUn_5y_ol_DxdWRw|YBi<;;u*Xe#7U2zn(&2)RyCHlC z-%Z*0S^ca&y!ZG%)l@Y#)l4<;Ei5n#%tFF?y*|*LH&sm)=Jr?qEB~lEswU_OdYnJb zzaG9Gj!zweg$T%@&%^RC^x7@fi}g$bG6Jycz|J5oW!_eY#4RYun zs0XSTp^{(8PoYz2>=_zT=KXv&pW*rMHoJo!zomRBhyEP-^o2!XQJ=7xZDu?9PQ(dt z+}tnl3;a5}&VJxO@D8j4wG%F8(0)`RHGgN(S$rfvqNK;ZGCTDTpi2Rt6=d3D#{ZH4 zEk1Jlumh??!2ST43)n3{YkxwV5G&0}Q<+s}$N;#@?y?9k!mCKwL)a;H3Oq+VSL6cZ zkU1p$0l4d9M#p{!b2L04Iam(XTDR5%%|P>xfX^p7Bk=rUcriS5Cwwcu72u)<0eK9i z2(@)>J<^Ocr}Qa}eFb%^rw0WWXdPDi38p9bUrx@M-$0LKv&Y2Ko6AOXF5v zz!tD02|FmCzPsrTYq)_veV`a9IuMewr0h2W?&r7_&*U?CO|Pc6QErsT2l$Eq6yy!` z5Iur>_V4`nz^710){!YAQbvrHqb2g^p@qk54)ZX_eRwrr&Cw%=$A)kHh5y3O%kq*F zz-RFN9F%9S+$;7QKh??nCDePP3RS29J}{q%?2* zH-1@NHt-H0>mEJ=Xz5Gy(i}R2MP`u!*YH<_c!R0I|<0nLsml}LL!sMphsXc0UGz}tU4tEj$rL_-&ZF!3vLgYt=34I92D@Z5O(H3g2xF9bC`GI(o;WHT^28dFuRG>+~XDE-! zV{qHY9twGf9$~7SDi08n6B>DqJmfp}BtT;Vtw|GVkAR*7-4f_>z>W*ug;iJ;mP(`& z-|_EwbyM9;)6+D%8&>!${9EdlS{q&)-W$C)x-0=-c~l} zG}4r{W$hBSgdwB-s<=uGfwcrQ+VE*VVvks9Q`%@>`?J+-bxxntm;s@^#+=CM3weJ1 zSU-mQen~=G)|NHn&3H@MQhs3nzy)z3&7{$baNN3_lD* zcaD9)GP^988*{N-tUNEz(W97(rDAK$8goHiP|&^OaW|{Yq|o?79rO?SolR$hOgiY- z^VmEVIReWGjcwy#{>S_B!n`o+`Fj2%`;p;&ZX?^sqP!?yO`eXE1pGTa1%dYnzJShj>H0 z{=7d&A0J*%H{DI6_py*EWTuH}fwlx40x7+e9&+}P>Guu)hSVq1gPi{`3p05A&k_#t zLqV?vbSn8oJ`v5MIkF{?F^Q}~?41yZc}AU4A;OICjPM7-Ff~lAqihW9Y2c43Yzy07 z1b9>655Z&KCLllJB>`L@`ybhvcuvmy|9|{Z#cgLul3h@u9<6I*cUdQ zj3>v6u|Y2XFXk8XoIo{i?2&zB;R(kL8uJ)tBIE^Nr+_>*`2I5yrVx-dk9$7uyBi4T za*w5BX$(;D2tWHj`-9XVRa%$U`|Lh@fw0wVHJG*V{i^Y5{64$SQioE9xW~O8?T;4O zfzS9e{!+XY$TC3I9X$VI_!$1ed*L+}jRkVykr9uKxg0!4FqdMFfte8Zcsw`Ukk7O8 z0Y^P-4~zNsuD+|Y5DpX8tM#gpZlr74nsz_i&jzRgs*GR8KSk(Icpd#Z+Ebp|LbyWk z=?fWt$g4;99C`+Ei^eRB8TG!nFB0;Ee6pQvr|2nqv)OELYd){eEA;ifRc{sg7qK6K z_5t^J_~GG8M;;&Y{tnuMbp38(;qiwDA31l>H4LHFy59)JcrlK-G`Gkt(1C|OzWgFT zP5O6)=9*gj+VKwrbR*!Nj@?Nc+a~aAoY7~3yaVV5kQ-5wFpGd3$*1Ber3Z8tBM9@& ze1rEC*#hu|lx1ZZIsl-fxIlnD;W1&AUZwHpN{A8yzlS|R57|Rzj)2eY4z?rcO+@}5vKG+C(1w7|BKigJn9x;BCu}9)F>&{QNN{)mzxaoh zdw9oyW56-s7;p?Y1{?#90mp!2;J?KHI@{|}`Wzp&?|-ZBWn&j3Us_-N0OOmrUrs|95W{}^Ujzv26+gW6Vds%SMSxWZEFjy z!fW+feMcxvSQK6qKBZ2n3_8O)gnR-{*RfaBtW}=yx!DcY% z`12CL@$ZD8dZu~@1r5aJS`!@xc# znMr1@5TL7{BB#hV;*I#3P|Oyy*ehV>$DJKripT{-ULR&}+}fX-r>4Dbuc5WT-UWMt zC8R%j!{6`*q5(MuW(#-h4}`rt*WjXjdckpA)bza@qg?tshP9FFOVt1C9a5 zfMdWh;23ZWI0hU8e=-BLWo?N&FMRvA_$>~9Jv{m~yc$9G-6U_4w~R02*aZ|K;I0ha zb7fUobpA>j_!Hz)ueUKW@nNDS!Sgf6MO@kO7EU96o;J zr{hkIJ2K|fhXmZD;V~a(h8f({51Yf(0{?>vtFW4_XVU~cRO60|8}>G~jXe|3LCTt;~?+-e1%+rU(VR4aP1n|EFa5wUOev*p-ZSs2-<=5a(&=q$Nd={Z;3=A0lmR- zdpyXYk2H~HtRAbA`N{md=B|lJh^OP}?P|M9O$eEgIjhfV`1x_qo}iJRA-aeuVxWt_9tM7WX!3CvM`k2?A?%9l3^&aPQGS$P zQB_oD{4@Sqv(}^_+*Y?$gpIHp*anu+CbVhEKaf>rRXM{s1HS}zEa*JMKH#!E1*8{}?~UzYt%D4204I!Ycy$44`qrX92qZAh3e|_dmb> z#Sw7??$F4B z>&!Z{uA*x&Lk{MHIp#6UN_z;%zQYW9n}B=(XrP;$<_2>RW><9BVRpvt)ez7FScdS3 z@PfbKiC7}mgg4=f#bPmqkcCi&m!S9PfE- zB#UIo^n(szC?6X5+AoDJg+|JevbL#hZV@okwiE4wn}1bSl{KQizvXN>8|#hr`pJGW zp_kChNSR;*|1gFM4- zqML}#WAm}pRKHHF6VMo77DxZzkLJg~%RbN!47>t(|F*O3wPy+@MnsJ`h^}gh%O7IyH4eB1@o` z?xnv`-zePM8}r6Ig-ju_C;E+Wg8)wib_IC<*ATELLHEQZ0_O4e1Y{zlv+06a9=Zth zB0{^7)6eO5Q{7Y}!bAeR0MGSvjn|JaXby(`hi?G;t4joEIGz%qd%@=)8WrpTuvftz z;6K0qum9t8f6y`D7;p?Y1{?#90mp!2z%k$$a18v33|MY?5dt#j^NPFzx#nm18ICy) zcX!OnwQX&CkRRla*<|Tygc5FH%r;l zK&SuKyfsq@@T=o{qAQ`EsYe&?wdM;#Y#m$YBVa#(T>Jzq0h>yIr(gwN!EraAXeOH8 zgd>C&x`oCrB^x0>%g>Zi=CZ!5p<6G`inASJhd9IzF=QzsPk$T%I)K6!VI@-^gOiIt@Thd)D*ErEVT7?33y$&y(8NX{SOb=gTNOskI&=nOgod@ zCJ*!)FWF0mOod@=7=s_a8)X0jyW}qUmhiLpvv-Q0BGt!Rj?cnN{*og%5TB>T1b7AT z*%?5nPZ-PwGw2$i{fCDC0e`^zioPO>MX_F{m$|4eD)1Jiq7-&PxXq_G>CJ6^n?rxH zR4$d+i+pdtx2p+r_#9q=RbbeCR3zjQxkOr-R>l^w#ZTrZLlKr*SYe}ew7z5Rm;nU% zC!p=$sdke3zm$3(ejgsJ2CJC_@Qq#rd=`V2Ql=DLzh?#-fQRa#IukwC3omI(nqs<`M!(wz0`AP?33#5!7l580c>(aquMjK5NIsHdj)u1YkB>PL z-geBQ@cAR7|5HM9%1b;>sKIKG^I;v!A#+IN0U#T0317nD1;?E@(neZj)~BPcz{0w) z#@!hDil(}$9;HU9EQBM3C1y!*&u+q+1oJSm4eydyV1ZtsbDP}ctWRd{tNRKW^M?t@ zBgDRAF#&u-zmA>F6?TQ;-o2S^W{>$}j?DeaqOzF6rm*6?I7fCL^bdIK?+9T+Ocs;f zBA~+$`yAvI;FgU{Md;%(|D*e%7OTYui^1YLWeJ|7-T-7mqAL)Z4P-ZDAwX}Bd-q1Z zkr$CgWEoLLz&p^MwWpT9c5H&3V9|YmP5^X7LNAX_Noe=+nShodwN9<8*=lwrTgkAS ziYa5t`m8>KM<9((qq7l`6Y!a6qMPVqrkFvFKlV2Dym}t=`{?6CPhxVGoME?sy$NG~S2u>*iN9C`kj`*Gh!_8Mj`c*Uy_ps#L)0Aze*s?i zWARuZFAq0!{5pCGkc-z{ch~TW4`D-s8~sS?>}yWA>EHAZs)Gu*XUwdamuC>5eZYR? z9Q7-nAi#@`oH^`8-m!NK`;cGsFByIXE)Ek4H4)!t74`4?GO-2P?fnz6to=3@7)K`x6NHR6doLkdsi$)(X7$oA@S<+k8!3 zQ{N%9F>MSUb1DH^4$S}1MU>;^_#J!4rZedbx*O5^htFQfhU{r}n#HoQ>~uX{V;8nc ztx_}e42^sQXcnNMK+hkz#rq6yp(k-Ye}B;rDEF|A0mp!2z%k$$a11yG90QI4$H1S) z0PfeA*^&PqU&I$}SR1<5wrB7+Unaa^Z&(FW!9Z8uoHb`zWmZ{LR27(Gaf`-GirYW# z%joo*Mi@@Othih*mw2q{V!D8j9-4m4#L(FzXMKyabZD6LNt_ENQ4kKMhHk~QL}O(#0*RprD+w? zbZZNd65J%E!64C%(?tYpP>CA+ARq~nLKo4vP|U_+Y8INg_ng!BcmIYW6c5iXVeZU* z?lAD4_xYHVt!Ar1UrrVt-fa5#@B!dSKNJpy>*l)oM}Y_Xv^{O-Yvwimzqy7yg3JE0 zA9bVdp?~OG6_2tTjM#sS3oVkxP z5VGtC6!hMa8%OWpGyBYQJm9` zfvf(iC$Asv1+zHM?{n=6{8l>~n?h5VcGGTmx;wq6sQ2~xF23lC{z`f!y}N#Qy;Ln# zmlX69(oH~bz@(dWoXw0X@EP0)H#9+DAuykpd@1*U@Y%`RYnEo=%z)f|zC&a)k}L4e zDXQ!puy+))5mwy-E=K!OZrxUC!c57>RR2f zVl`XM$l0gI0KWsBerN;8Q6!h3$u+r|Y$oIUhwO?O1^o{A0(d59I%eFAL*u`u;2z+; zm=&`xHP3KN!C4Ub2Y4o4DL4y@`TqaePf)y2WFRsS8Hfx-1|kEIfyh8)ATscg7{FUi z)*f%i{5&q>QfKN6b1gb*=IDd|VD1k;At&;k_E~e*Fb6aDcPQ!_>ZVOTn{OE6L z-qds}&e$`SZoxi9r*sNl{B~&|5icPz>k{czg@Pgg5WP9ClEdU4#hUVEzb{BD@KOa94!Oh1w87< z{4xKXf_*od0{r#6+%EUpzxIVt2wy360r zEWRW5NUpCKlQH3$PPmCY!@uN84qXL%^d8rf`#+v!Pc#`|A$yU&NLSp7Lw~{d<({J5 zxBGHhPWNZ~voQr4fH^nkepf7~%PDz;n`D#J+j=`J!*b4@a~J#tk8b}|dMd3|l(JIB zbzX*-p-~!z&x-~FtpR?7ZxpqP`{91TTS4|8`3!U%kR6G>;tvIx1uF`CF+30a08#t@ eN&HmCn~V%Z1|kEIfyh8)ATkgchz$Ji8Tc2l+Dyg( literal 0 HcmV?d00001 diff --git a/root_dev/recordings/audio_20-21-55_02-11-2020.wav b/root_dev/recordings/audio_20-21-55_02-11-2020.wav new file mode 100644 index 0000000000000000000000000000000000000000..3abba16f78840faf5c6dd4e8559195a9b7bed3cd GIT binary patch literal 5771308 zcmeF4cd(V!vh91$`K?Wq93l%4MveSwno^Tj z-mKoCTc6x%h)9s6;oJBh?nw$L4Yhlx&pX7wr?coRngmUPRfWjc{goG>R$Qk&GyVfN8JD#3ipbhF*;GO-PGnJL<|&IZC6_sI6kFm`YRWxH_(u$R%%ySJ)x3L*gg&2_+NB#0&HSbrc=NWBFLV zNH5Y$Ok3C1on_9@8S3SFxgY2UDj`eAE~1NQ#*~p|q;bYIBt|xr)0jJShq?q^f(%S$ zSy_H9z7{2IN!y!x6LkH?ed9V&Co1lWyW9GklGJB9csK5+V1Jweiv1}|y2cv_Y zs;Am2x5|6WY%yEpbUEF9x=*v@EcvW>R(x&0w%@t$TxDC?PB0V9U_01eVwN#^OdeB$ z8N_U59=HdtI#s8UVx(v(TgpT3ko!h`qp~uy>khq+GTgy^6~QV)q1rqZi<^Gwuv3;hPsV_i4$%j}^LxO|v@>l+m(iWK=j|T1$7N#{ z+r@T)Ti|xlF1p|@xCBa|m1-qd;u};FnM95eW5fgd!1kn`gvZ&-6k$#>9hhV$nK|eV zM*8M~PlHc`6Y7L|5IhJD%fk{qgOy^X zuw?0`yBX=Q$S$(8-E5bR(h=UjoRpJRm=)%jJ!bprz9>;OUe^k}LT9p>>~J&Oe6PRP zXBZT*YiTXbVxV_|OpvI}zq8+2JYHMXR%KyMh!dg*bJbmSWo#MS%k(lG8O^k1@Oayq z3*m(jzZTOmJ;6?}W0=u;v@S|T>3}(4p1052E~blF=9W3ZUnyNm{-ixfc{g?lR_7CV4@CtYZyaHYUuYgy;E8rFI3U~$n9R=3g^%gVc&+KP*tJ~`C zgm*&JgnR~ zZ3e#&^Y9UFghQ=~IsQeu$Q7w2%uUalv!*ZgjsCeF)uR+Lg$w;;2~76p=+_4$2Wdhmus1P=5|#QZOkgWi(qa z@5;NQbd>hH{cfpPD%Q9)Q5}cZk;El&2lN5`w0YX#dlr+$9y~Om3B1Wt16Z1y{j2;lu*D zKo+B7v`(xOf?X!5U26QYLrp&4&3FA6{CgJ$pOraoj+;%h33W3*51+ZuTt!>amXf99 zkM>8~)HQX>&2lr%O>^iQ9W_TyewW`hunp{2%xC5^Gb5Z4KF4&^-E>xy)y!c=xlt|` zGmWNEQB_nu6c5F#^eW*oQ!%Be6xEaUWLBHij&Wn$KD|$mwxgqe?rOW*+EknJFz6?} z<=%4W$J8>l%prTozU|(2Z!&)}+nL`OU-$nzKT!NHdj-4#UIDLwSHLUa74Qmp1-t@( zw+bwFiydl6c%t{py>hr6Zp$&hFz{5P4s+yakKJR>%CmA&uqb$-9;i2%2jYSFTz#&3 zGi60tfq8c+QA&KIK2pgT_{DoM@aR8MkJJb`LLQ(4G?MvQ{47Q=YZ=s*?WsMXCc~_D z9D{oBES;qr=7#xRd@s&1byZz8U(T2N)IK#cHZ%4X(>7=uz|($NUY2*6S!$L_&Ljj0 z!7jN=)@Lv?&qmp(o~S2QxmB*2Y$mISDgw`Cu9zz@Z#ULhMT#&>9~cY_*2=ZAEraKe zS{Hu~`wj!$K-ZnR(;;z4^i%!Rm-HpEJdy7kv*EH-mbx+6NkAQXKpYSqV;y4+f(B7- z4sZVrd&3qJ#YAaa+Kylzo5!Y`>*kU&=oeIz)#U78c5qMKQ|Jpk%k&gI1-$mq?Yug# z&@;jF!E;{EbWk05)1kFWB~!_JbdP$w-foN7BB05}U}G?ffscPp!kUDW!O0+#%p`va zehJ3Yc-}tfL{E#SMQ!E@bDM6{61T){V9-w~r^=}cvVzR3@~S;zk3i1|Jr6uDe4jV$ z8@2!ypv(;RMo`D&@$-p%0=|Lc?zpQ%b!eWO=YBQ6noVw#TW{8zs;;WLVy{HKnlW;W z%m^<9gMLAC<`X8n$!_W~@I~}tuIX#~*YMYHCbLqn)OAc9vyqwUX7Z=?S+{{U5c~+) zWp;_Vd^@HA0}q69D(Y{YGv~|~;TPdpGuD)FCEQNC)8>>pWea91gFekS^bO(99CnAJ zIX`?V@N%G6@`y=f;P3bI{=eHFZT^XQ1-t@Y0k42pz$@St@CtYZyaNA50nENn(n*4M z9lrTWx{|)mWU*N+>e>m+Z}c0%E52XumwSRe!3;S=W@FMav(;>_xM!)lRF`&}-R7J- z=Wd7_qOPm!R?#Z1`sxs`-;0zgrCKZ&i?o!Mupd2^flnH~Z{!WYd+?fmP3N|`?GO3~ zeTq&|5~h$TWR}npD(niox9M$mu&1M!nMGoe*g{+AOYvnicSg+(A44PCDDvNwqN!*dYaI(^DEEnd zksqLdDPVfI9&VG~q~ViS4E*iff-vws6k@&;---RSpDvgS=72q5vy1Ga4Yi?+40Zv~ zEBM-c&7FhCW&tzX&bFtS2MoOSyYw!NjDpaH_BZBtCap*-&Z@I&C=F%Ri_%-_E!EI9 zjP@5U+KcwGxomRUoHiM=CEOBbWwtSM?OY4LK6V?bGNbe;T|2BD4mN|$X1AH06l)xM zDY-;00nfk^yCm{mpdU2P&a>|_tz0YD+%~tr>R)wd>P*-zL62dbUB`}z)E2uZ@IjzA zfb4*-t}Acq4{-Qz$ILO)gBih0wv+8yeO6;{06QPpq1ewsfP#TroO4uy0k94&aTl&qJN z@k+Nc%A>%Z|0U*U2L69|0=)nK-~3SV|LPU+3U~#)0$u^HfLFjP;1%!+{9P(=#+)&6 z=7D~ol~p!hm@lla>+1n#fPohqS!l>!!+(SCyG~Fi=pwtw-^oG@Ij_<3H=4_2c;C zIDGI=Gt2dIorSUx{Pox;z|0$-`K%(VK>djRLQz-L!Jm+U=@a$|JKBymJ7uT5CU2BC zhx!!0?jdrBL@wJQIz(j{%!YrYAL(`Rxg*gc0&e-MLN^3>SW*g<(vP7~8aJ8DO1 zOd9i!d&jNOYxF2H%A{bh8$Vr7*PU%=o7rV{*XSCpwySMJ-B4dM*9>wR;8EXVx7h8> zFXk6B#ZKWZ{O@cw26>4Y82AaGCB7G46Mh|9W7h!Lc<^ALZbm=lj5s6Ehv`CH2($M0 z?fYEm&$ZXhb%WkS6Vt?8(N}Z@szB*XIsgRiaAKo_P^bL=3aT?DOICVQbskR%g~SnCH$ivrM1@g&Gs}Gj_+ZlfEO^5p-kv zF<+=J6!PtnNr;^G$jOH_;#BkH`oANIsIIXcT3YS>-&MM>EAtQC(J# zd;w#{SW!#XlKFys0d@_L`H##u?2e~!Dcl8nA?kztVgBHhx&sEf;5EW~AKgxnE9D$9 zN1Rrt6?z@Rf?>flHBBKOu}`c|ti5b6Z;RVv7=!%7>2A8q%Dd|y+7B)E-Ldyjf?4Pm zMtSns!%y$hyBem3spslBXoMXN0Xyrc{Zoh(;$!!5bRU838hqIy4WSPI+}hk_e9QdFcht};Sm)NcMxv2GZrn=doI0nj+w1K7zG~se$G-d^8btY-%A&G3YtPzZ z@nZ26j0ihM+ls)pbEUH7hQ&)lFJgxosJ$WOQvu8-&=aQ_Y-{fT;_ zPHWQgbUKy6djPKlJP&wpkh=#@0^ZYy^pN0RhmQfz3AYcIs3mFyji83Mp+#09ZZ^PA zf!RKG0P@gjs=9p+m6TD+U-W~%9G8m|>M3SJejivG+AIzgA2^0s``vzg2{ z_3+ui?Z8}=iz>^?vIVsuc;vB*kLQ712Hes6!hT_q>o+7E64qyiF~7!tjlW~w;Z1{d zrk!nPSDKY3zs+yYG0^K|{AB#8@TstRyn1{x^GV_-iPgetVP59AKF*sG4Rsci#h{<` zE`yxLVN8s{{zwDUz+hhh-iz+GyG8cJU-mD1i*6C_8q^AEMe~2;1j3h5T9?*+O<#lG z3(p0-|HywtW+wVpCmG}c;P1`@2Duj4FG1!2JQwy~!EuFu;2#nGse1*y0$u^HfLFjP z;1%!+cm=!y|0D`v_aB*gyUZ>FKmPOPc{4gbI=(bq8kS>Frz4LYJLJzW*ax2yP6>x_ zYCH1aGMmhtVAsps)Auy?&QVulX8SWUm*&!4aaZ(aPRrA>4BzF0pM0X57-hk&604%y zb?7aWGv&G! zYPCW?V4+>ei3K+;vIi@mENb*zCYKrNhB{>5VSgWWBfRSHr6XeyS%T<2%op>;O}a_P81x#R zm?x$Q=M^BgV7K0_TbWj7LO3DpqPyt&@%nM}T1ti`!w$NG-W%=>3)w;zHy5gkssb5- zUzx8AZWdxc9XXB2K1^zp^5y!<_I2~R!5#YjoPP(u25uI@qrRQC6KdQ*1fmNAk2`AA zN8*v#EqBWVks#0)fG2;0-C&E0;$k1|`X`3B7^L`kK9Mmokn;^#>sIKeUs68wC=$mGXWlzEqaSCVu~2N z56E@IW8oI$X0=(p$aEE51@;8EB1}88joB|0C0GG>s& zHtAeChitWNw2kVE`eHM)SM609Vi{uZCcK+4j2XfpfB!l0oTw}7%Gc?2Dl7}jX$%Wf~Qic6msR8i{{b3J?8rO_n3%@!%QJnNF51|@Fl>u z0do0~9f%osbyMApwPP)E-%&e%!94GtciZeXPS#s(kpU3MKz^&fjrR0Uij(5G*mJRh zLBU|7+$a~RMGCWF^bL@)hkCi7Eoh4{r~xn0CA!Oe&!DG}PNw6_2s30gRZaB>dIU3= zn2bq$?H0SmKD*Dtb8z0Cx4URpv}d7&66l#!aaE#zLq?G?+NnqpqzI15V{$BwrH{l% zq6K3a+yUI-b~xk#zG7don89P89(jR{Wn+n+!(zEu;{AHa;O@Z>^aG(^0S~|-bx4(A zW{cTkpc<$KhyhXkn?vT1>%=;Nz5hLCPvrl&Wp0^#I-f>Q2zhN-o;!eeGPV)aru2bt&KFSw)8<3m$zIb1t{{WA{R}5}Hydqzb z_r-m2L>*C=gUi8FOkSB+R!|jGJy}m8`w+D~-b1`k{i#2#V~)5ZZjD$Y=BasVL9ifz zcOsL^M}~h% zUIDLwSHLUa74Qmp1-t@Y0k6P6r~=6U+hupzrnj)Z5Co67}UJzJ-SR3-e@T@S&DUrjn^Ku`#ih46^U$F~c|y@0d6yDly2S zL(W=hSz0Ej1l69}6TH=*GIbctyWzn`jfi};J#vpk&5wLN)W7f(px(njqeiS4s~G!| zIm|SYjU;mKkWYYFI_~?SZ?R2mGs&YMWYQ%oU*`be};F0C)O+lt0Q3=|h4>Rb^Fv#jnU` z7!2RBn=v395aN!VV&Ji#DyH(E%qV_mkk6N1rk7XMRke~`76;uyhYUr0ALJh%VJ@f( zsuqLXyTM|x7^lXmYNDFJjJ~ujZJUM7!tdkX$1jDK!k-xI3LrlZxq+WDnPQn@bJbk6 zN9+;k(IA@3a{=??5 zc@jPev+ArGdja@Nd~LsuJR8^(Ib;r*HoA>&7q$zrV}O1My!hx5m7{Wm*T^;%f!+&t zL8>#S>2!1-621uB@7u{B+b<90A!PdFJ_U9;Opc%?j)3sasV)^#d9A*L#T)=!WRTGx*Aj? z%6v!7{*C!2`o7o`|HOV`ap&M;1~p++Kl6>lVyYNdwR0728)D~RrCn(|nNCqA;-}_Q zlh&rScrHIN3mMFnv%BoBI2EUoqNG4S05xG{#_-oBzCnOp`$1-q!QKQO8+Q=L>+u>p z5?9O>Gv1ANxM`1Cvmg~DJO|uW#Jn0k0o?V&+!?cV+@gbD9a*qWggG;t#TeEWQ_R2I4VhxmgZ*4!CoV!WF*%*31QYLBb1lpL!99h``m(MWuNgnhRMZtU_8{tpb;IZ4&qe=UpXw9t{XNIL#@PXQ z+^hO()H9f=XKK6;$cV%Z1mq2zWuRX#>P0=655xze72g{?PR9v(4*1-RWN=d%lUFKEvA?4%eDry$!&7T9mMa)t@qBRv&m|+Mz!89&LO}}0{G35OYo+7)1YU7 ze6>}~X0zF#7Eb1padp=!`Zer$?-Kt4Jnoqo?D50<-^?^Ks863|;G1t}+8OLNR5TS0 z>bx$li+hPd-XZz}&x&WG{e-u~TOuyw67@Ld{qJxV9`@oNhmXUBdZCW$c+NR|m)S4& ziyE$m!~FY-xFXUqX(=t0ab;XNTh0!pq0xQ->O;)>asO|y9n4i|3X5Cvc&+HQq-U@f zf&RftwNj0iqvbg|N7xaVXXjZyW5)@IMQMZ^5%o2C>)yIuyj{FrV!gzJ`k+Q`AiNpy zOjI_N4gSmn=2@nRX=0wS&)C`wbVrW|kA*#owQ{Y*Ui=2RL1K>qwKl#mkKd>FY3zHz zXAm;DJ2;iWp8r8{P{5ag$GGS&I`og=XMi^Wy5jxn$h2U}P#J<|eM}$Ih-t$)49Jr} zzp0z;7JUXw=o0!?{8qf3Zl}?sfIipV>^ho` z2D>7Cs1Lh6MpHY{PGGMDpAGm|DlxOfEYXoVQWlrRp}&F81NK%1(_k7dh6_GVsc^>v z`I2ukZ{s!~`wlwlj(Qn`-bFv#FN*bpPh~i>l)=rzQ_PPHau#q45LtlmCWMUl3H$^6 zAoNesE8rFI3U~#)0$u^HfLFjP@IOES+*ZfU^dsg-R4?KVJ#MkDva2jS(3qRzCcqpw z$6+pv*)ww2lvMH&JtEXQ$U#qTliRQPHazy!8>_}DwM;FKtK%x4%qKCkMlG04XVY`c z9D_Y-?4##qFFxkpyX|g^x$K+vO@OeQKY2F?ca(u9~ZqLCPRIWv69!nf*)urLD11jR{>)@4^3HR1_757`$%GnLne? zD2vP@v7?SV^QeuH5rBXHjBgd7_FP~V80lm*@5gI>+q`YCvw+gyyQl^yHHNf|VU*jj{ARQ#^E#Q4Z?_?P>(u_2D80^I(Z*U@WR2&uf zUioakD336o%jd?6@zJau{TJjlbdVindnUiiuR4m3Vlq=-)mM|{>>MLaC9gqiPFV#z}VCwTtyGE*!swe7+)3MXB zN&&-jRpiWLzK(kAJ^7w&8Z-?$sZOeBtY~ajFe@k|3h@TPqA35am@DQ!5uXTn)sxHQ z5;J$qz>|uk0v-Y62zV!BUUT2mC%Yq3EzV{2vAm##H zAk?++NO1Wd&AHLr*emvmnQ~^7>jzzKiCf|llZTl^lOoSOcFZw9Zp#@8XBp%x;7$UD z!q{Qo&)m27t>&+^BCUAOy%**Drx9sH>7aCg5QLY4mxASLxk4ra@(~`}$I)#A^hMz9 z$Lt*SJ#H6Z_Z@kPxQCF|rFFF!Ja^39u^eBX%F`qB$UNhoaqtAR7wyGPW`SCukmWyA z4OJT%ZB7I$ftZYK}6236ObMAXXrj zNoJC$>Cu;IC>ln25UBre#%{)DF)d|FIYZ14&&%f}b}3T1R1O)JuQQYFWP5_C>Z-ay z4Ei-Y8T7xdGPuw9f4c*Sy^w#v9~1s5dj-4#UIDLwSHLUa74Qmp1-t_P1PbJIIo(h( zG@4suMvFcDwPGz#lP8MpZo5k>(@NyeBfk#y6!PqmnU*9-5-gX?C9>}^4?Sv+TKLD2 z3)fIJROlbzt{Q6ODQ=2eM$0IPO=6ERi^XDr*=bkFxULR62dJNLTP_FF#Cg@GD^7 zzdPT7hex~(wTYg?Jod%+HoZ+oo6(MQ5?%?rF{_v| zri|(AIy=;Z$m7q=Y;{{5X29rMq@gr~opkIitYt=pqe9%R`_ues@-oBX!{YlB_a`C? zU_Arh#QE@i*wVJ-ZTBout{}Ylqt$4I{62UX`ZBmj_XC4{jqa|yd!6st;}%1CTi(K8 zK0!=%E;P>CCH|nBHZkyYF>%Mi!6F?pT^6|&$F}f-WT?+LgWKMwjORHVt&r$dbEe1i*G%A7=9Q&NqmxcBfJs9XWvG)i9TDi z>@15p{A#^gmkLX&F^7`?ziYSUeW<_$D51)}y||o_ldu+%2(7tQI<&+4mRy1?J%8Re6QlbgrGt z8}8+7eN*4SH@=n`AxB8mp`XZ4B<9N4`9~(&4zt5xCSE~Skf-Prjg@0%P4?tl{z7j7 z9(-g7qBfhMXXv)3ZFGOVs4I$Scdo|oxRjJK^73yG8w4`-kjpmM3^t26Pky`^A7#Q} zk9;13nzR&y%mDoVE9Mn*JAOM}PM6aeOa`uU&+%mUws{mj3SZDK=$&>aCjx#F&3Jz| zzZ>j#Lx(>T|4e*4{&xJS@ToASV;Xhs$NFOp&p)#N(33#!Af8`d%1hVmHH%CGJZ>M| zN0&CG4eIuurl&~}rU=I+j!Uc))(PL&@9XExb7p)vK77f(WYI6kWAj+ls!e6n$m5S4 z{TIcH0{sZkjzRs|!}j3m^c{=rIq3JJ_)+v$y%lyQrivUa+eZgMcg z^>Cfqq&COH<6&)A+ockz#1sZKEba>+3o)rp8ts1I{o1ehYusb}Mt`F(mh7s>s>D7-Ay+8cn?Qc#U2~T^ z5;M&jW>n&+#H@@6ML0*#(MWT6fnK1Rwq|q(5;{H~J|9+M(&#k$9s7<&e*#)zhb3lW zQHJ6jxDUy4`2E8rFI z3U~#)0$u^HfLGw3NCD)uRpOg`HJSBly@DTn01e>n`0<39JnGL=;*^*j%np)pKKjI9 zVlafW^)c7SZua+_{Xg5yc3;>pEN0O7KJa>Dr(nO_FS(o(Eo=*m476{}x8|wgI6qvDYpbdmweauR4$Qu$n-^o-m1wR31#Ea!( z`8j<~yO1e8QUxM=d}ZIUV5>aV5ACq+oDU4|^0(=m|Rva?|VX z^=R*Wo84xIxFMXJup#oIZxkCv2AM%3XTOf9Bj)iA1o|?_3Y<>U3A^gpouACyVlWra zA#w=h+#%-x&l@}P$U;D_BYHdVLcGs3bxj@o1jr67Kn3UlgA7FM=9h3K9DD`PWTKns z{^qsE^FkKFTsb$|38}4WD`<<|5o9gk^VQ0>vdBQdUPPyOr+6J*N8>I5K69JZX0?sB z5xggO-#40#rb@g@{C48)#BK3yapWpg;G2$9T z`~(J{gGSVdcDvnfF5g|m=MX-X$MUhPs;a6#-?S$G1X;d23ok=E>$;0k&lxOy*{nM6}WurTMErXW9 zDRqjw1P#?Hxk^rUlN~bc;mt;E`@8x*sT$~t z8T-hpL%ok&`Q!=76V}Dn#U=-ngBQdLQLWyJTG22DS%V+C52NRVTkfb2k>>_KIqJAo zw2J;U-#Don7QHH5I5^q+Ld;N zTp=4Un`tvW5|2bNrWrM(OYV|ez>HxY+K09hgIfc8-CkE$*VXgl^Wtmt8jUQ!V+^tY z|JHYDLQM#{bQ^*V!CiG%{VaYK=jC~cyL#~3WA`5U^5|ROCPRPfPw=24XTO1Jpzt`I zL?;2waa#a+jIYsaQ9lR0m2>u-{n7kraP09b`<2C>dv=*!UZP8c+C7a+!%6xh9d`SX zS@08sTtDpd;}&0Xm)xNbP=dkhzGN@i!FsUXWHuROEq0<#giHnWAnr0_)mXJt?vz=X z;WV5k*aCB>3#$M&blB!QjSTa-CdfOU#y7 zmU;N(;giam;j05%7~G5~XUZAmA>cWne^6i47kIAd$zVSNUY6hJH@f1kxQ%wBZR8rc z-^K5oevn;klAB~&l~y5h0QV(u+X9&dZ}VLV^sLak!k!0m1*b9i{*@VMl#9v4;IoF$ zQW7S{_!|KK0Y9Alx9|#h1-t@Y0k42pz$@St@CtYZ{zDZ&?b2Gbj_%=EWz`4r1DT4+ z$Y8d+)9f_Jc87oeJNhoVr;gb+cJJ%idiE*(lzx@TALb8{*SE=TvZ#TtiEH8rQ-Vqm zZt%@=v)p34*#5?Ru0B^Yhhm5}#riH>Q6U|o)JQ2Ma^hJueA`Z6(ktfm5_On~u7T1qC zZ_nFZOlqB4*EY4yG&{{6)kpQ=_+fTKd>U_%*dXz2{A?V33FPRPR;3kQ*ByOFL(_Bd zbMXvMGCWC^m@KjNlh#je#c#!b)IVyx&&VWvXdW8mSYWRoH9ou&_}rndQd`s(Bbf!X zfY3|8&4doFLv#lc9uM4j{E4$Aao-Ppm8R5`TDey49R@v`g05inTHu+e!JxOYhJjw^ z8GNq%{{MgIk0t-jyaHYUuYgy;E8rFI3U~#)0$zdt1O?i-Htx2)ZBb*xtB+f6$niTZ zPKyn8gUzG!=t&HG+NdR`yXjG0J~H8v(|nD~S6758XqDI`vZqJp^R%EffnyOQxA?=I-&W z0Ne*ePvRMRhOp$)GorL1j?L1)R^|ZsO7KXm~a8YT|E9 zS_YYkclBKjk3XMDbSKOS)7SNNXY3h^Is7XOK5si|C*>FUMIZxNjOj@|3B9CK%q%fW z;LZU&9`G}u_mrM#OpOV-iSUl>usbYv2Cg#5#OT3PWu9a5Fz}4vJ;7rpWib24%|z_Z z0JdyI{3ra?_21Gf;1%!+cm=!yUIDLwSHLUa74QoDKPiCx{RRx`N8FjqKpD6iOrRxV ziTK8TW9RGn8Z+HR%sskC*mr-Lo+i}jqs?g3lEIw4o~dV0m*SrN3^&8U!(M{HKf?nL z?>_3~%}jM!om~bWNaO@;W&RX@iiK*S>LeNVkC$XnuVS{29R%E=$L{r~^eG`%Flj7l zY-O-A*c;m$dyy$2OUU2p_h`o*btj%X?gM;ApV3;k)?t5OFb(G4@jGF!zoBd>F>gox ziu;95I=PE>5q#l}f$#m1eZ-spd+b$n)s)tyqaMg~JKeT2tqgn#8{J0tz5G7Pi?1fC z@wNNSoMg~nY+?{r2#*AQ4fAQt+)r{M2o~CF`Svk zAkQB=3q67!!ANGMTB%-RkoAw(b&UCfzKHH9d?UY+%NWePGcw6Va)J64+5VXAV)?Lq_$;$Ruh96tclhQ4_8-s(!0rb= zBT^Z=*kDUNKw~e%sUU9EDd>*jupMq(nS}DBF9t>^+ z6jp_!&uLv*R~`@tI5i=MfENZDv}0;8&olWL{M|^)z^8(K0RAqaAK>=^{-1s<`QPjn z@CtYZyaHYUuYgy;E8rFI3j8N10Pi^!5E zY@^z!3?hTTojJ_<;mvN#bTA!E2A9FTU|+D97o+|}X5V}_-@#LlnhSL}>idWCA-nyL zNYt{wGRP75SbeN8j~(O&In=Ay?RATuLqE|^e9xeU>dU~Fa9ABy$i!kb4T0}J7@=CN4}A0B;fx?hCoZzQq5#go1%V0?VDHSRnLj%qS_Jt z0L*o9i(tFk?l7ZAHXwEi;A_AxL`7H8!B5ar^;CUjUpZck=T}x#Ok~n9Ib;rr9DxtT zhXVTtZ!m}G5MRANMmxj~@fzPa{DppDcf@TPWk*@muHC2`ZDP&NF}fE(a?i{1hnL&qu%{Q7;U522}pJrVdB@VwyDzzxNUqN2b&A3Y!Rvyj_}&p&nr z1~TY}Rh3oc3&9IP8RmpM!7hS8zA9dgye*4qG4*B|GPqrdo)2~j(7!+qA$Br+9>9OX z4=w*Ky#ihVuYgy;E8rFI3U~#)0$zdtF9ooxk6Y@4#31pad{I^q6~q;$i|V3K(_+W} z6rG}$uBF2seQuRop{B=+>PghexPyL|>0mopYpg+CkJ;%H_rxJ< z@C-9Tj*!3=+sO3a@AgM~@yM%tS-q?}%g%CvTA+rC zp`sd9BRnp82DoJi4?KMIH|a~%ec9$Vxy|7C;P?`~M8mI-nKNE1b{nu$j*Nobyn~*f@>6-oaNUjPkjvyU z72*}*M;Un06Lq3SA7qM|V*1;=1ufm{3o<~YN)eSx|b{{N#4 zd<8I-hc0y3Pe5;>fotH9512#cPy>U30cO^y<M)T@Z_LM#CPCNMH;bC~szQ-2&@(}D9x$=b@UtY zH{uP#2H}DDf%rr{QKOfDtcCN5=M&#%rZBUg%zlClM&uY^Z{eIdXL3-EDB}^e_%Ja{ zjCbRs=MSIB06V~9?vB1xDW<)>$!*rOEiDZ$70gq9U!Mqm%mHQZwt5r?jq;CeZ#=xj_f}e z-%r>R(VjPIKjf!v&>M6*lg^A{ve|6*zP_)q69C^iYA5*1->`4+bhx$sS^uo(G03fZ zH~wx^pTd(rk>L?_ls$0E-EzpqOU^V^O;s<^OT1;@vPaEPPJl0GxWtU|;Lwx6^T*>x zy#uZX@woRG+~UK|18Q09td|re1w0U#!#A-_>>YE*AQJ&uhIm}eo4d!m$4BW=QH~z& z3mntOH1;2g*dlf=@9(1?MJ;IBLe&R`UGRh)A9lVY2_swF?h3CTN zoXr>7kS{3wX}@#dapGS?my>cvd*#R_#B;z*8T|(I7BI($cYiN~n}Tg+TRC6M7wgq} z^|km~lx8r0Mn3`j_^AIo>W+G6xRX;F^M{iXCnertkiB=8`Ph7H_St=$?l6NZ{!_NL ztL=`P+|B7=E9eRux=y93(cQ;Y;i|AT!!IE`r_X6*C$44C zgF!!KCUY;m7w+JE24oISWv-cPM#pvh)$rA@FLN*PUgCrJgZK*OaCkW6*aU;jh4D-# z2KfVHn0L*)=6HBKM0VhGGu_;xTbv|NgffbZyixG8fPV0TeC57!c>UQZ8zH9=^?C}I z!re4C4SXWA^=wWtyr4fZpP1IncFsD)9m`}4`c3dlAom};DFvw@;d8s*uIEI9$rkSq zbjQt0@8)+iRZrD# zGZ~qm;y=X~>&3c?s3PFU$G!O>G=yE}t?4cGRy6mYBql|>=J1|lSG*|mw0qiZrLDAr z!M;1P`Ed7c81t9?%f?*HjS{28>-0LIwngoBTAr4rL@Du``z^{sTYL!3ppL4ejxfWR>*BhA-vC+rYxP=AGi<0^ge}6S;!nkMhq*)I-Fx^5 zF5Amd9)2CF!&@B_2|oIPZlFV^9kTP0d$-IkvzcXPiQRo<0l-UtNF0iGGX}A@BcI7< zkmpxJ*U%W8BQtWd*=+DS(Q{d?S8KcvSIiZxA4E3=KQtdkxrs?^61ym5^rC34k9>rr zE~#4^t_^p^cg2yxh(5*?JH;MlDl&--eh>T{9hqDzmwJg=Lu=U0@q~`LqtPBoGto@s zWeUkcG9~Zimtt^#u(fL)Wf$T#wr5@uuL$h=C*_=qyYjAlLA}7+9X-`xrjcwUvF|^R zd5b}Rp$t=ifmZ^5hmd`M-htou_di&@0$u^HfLFjP;1%!+cm=!yUV*=xA6Wt;wIuS_LKUidvYt%IV7DA~HGX}WTjrYCW_F+%XpoPO9s~BT zQRCs3pk^jBg@eMuUA`?Z`A|FRX=M3-&9~&sxpFS2%qhDv7sW+^U4qmuwW}xUiM^cp zkA3vH44xZq0xYl#Y;-qIzASMk4t4Bs&hAIex|PA6!#&Q@M}|FS>bMdAKs*re6JXC9 z`w_@S7{H*0glT?QFf90sc_N?4JPaNK^KZG67yTQDP-5j?A&Rk(-vDpNI9HHLll zrDAEc4-bFEWBpjq=6iuZo1e|La9fBz%Mn9q$}|_vxkJ!fY?Iq0_BJxx%og_sQUC7^_l7^le~e>KAG7*D8Qd&HuLw8x za7!>NbKD(w2lYV>e+O<4EDRTh$nQrzjrVd4jiKp!x-P>YgQ1qJCBLO_qZ^3m1$1S8 zwm)0+IPhoSfq*XryZ_kD&{kV`SVHDI@twe(iQ=Mo)XPA2!(_hUm!CmhKa1HSwuqf_ zr(8v=sEVqhB!6vG8ZNzg<#iRypk7{Gf`i$Na&`yN>s)c@!$`1=3v^{1SFUS0vO zfLFjP;1%!+cm=!yUIDKF6gcb-JKRaf&AF=#=Fo33*sI45Hgf8*Q@_M4F`FEtHYsGq zBU=wU1E`a8GsDerbDqvq3)w7hu2H&y(JFqxv5{{VROut}K;}ywD9zLj&(Q zcK1!(Kf08uH4# za-Cb}u+u(XkJksogJD5a&}?JI*fAFS4!C8QTjrK8(u)L7Lupsq;l3bp=HZneYsMOU zzt4F`AO3UPKR})W^6Ad3K*33$Iw=o5NBlguWws6TrF4U#d*Gz&`-dVeoNfqsrYqKovIV& z;F!hV4ey4?Ys_denp5#p@o@}17RWSwU?14S=5Undfcp)|b_{I5&W;Z)GV$Tcm=!y zUIDLwSHLUa74Qmp1^yltfQKJ`YwW|9bS2#YGr*uG+#GHW6XS_-WYZzz4mDnX-Cq}W zh25|ASBw34>b9HdW{~BF-Fxhr&r6(_*f4AuqGp4)euNki z6-i1c(S-B%5F9s-#!*+%RqVBU?Th9`lTN48$ILNPUX&N;8#HFR$!>hzE{UudR197g zFAI3%SDV$Q3WGWkSp>-N|H6J@QHXtRJ~wmh9E<$`_{sa(e)etiwn1hf>esKC31WhP zcf2Omq|RaI5U&F@GQ9F9^+|o#-i>Yw0KJG8#0vs@{;!GG#7R0C?T^1CUJ~ddY&Y8tdM~&Ki2Qxz9lpYp6Xl|N ziEq2Nqg+8~hh7A7^d>OqIUv6=m&_&62WU%eslV&b36AX?b`tm!fkVw*Dl8SAj-QUN z*Xwl?&isEX{#JZ+;^@Tt%&qWNxX13X3(Z3A0342b7}yCxzF=ir*&;^)*^IZ$Ewfs# zmi<+KwM}dj$X~<`2l@ec9?0(NqPysE;kXc)g~)k8U5)#YE%{zRF;mP87sJH~cfuhQ z5BCv~8v*}3-kUzUkAA?QAF#wOv4dz3AxC1Oo9M73u~;ou)8sVX;x8nz*MK{ZxUtZJ zTF@nTDf&IRMQ*X!Ep~ZrUi++jHp=?L-UQyCdJOtRa~Skj;6*7ZOUlBcuqej7%r_;P z2h9V#t_d`O&;yvRrmH<-54%~aMEfiqr~`L=KI4>xI)4BE@9~G3e@ffnms>va8a2j9= zfm!u5H_g3E@6w+PZu!BRfeghP;)a;2rmD80t-y0Ze*|6t+^mDA0=a{=ZSCmJ0d5d3 z4VQ*(<87nd{g{o}IK}CE^}Rx!j~e-$JLd+=!4ka@^jFr%HPP#B&AE$Ts4vt?2008{ zOQ`;1g_jZPyA>Uw-BY<3iX0lo2F*)zfyXVF80(~d+ zU$_mV;8W<%q!cM5@4|FBT_O+S9G#2i@0;c3=zD!AJ``gZ)b20S%Y=NtzDy-mNxdRp zk??6C|DiFH-DP+9oD~s8L|s)^wU(_VYIl6b@ma&?7TUIV?OicdOyM!oF*C(Xf%^f? zf@VP}RZ5+ZC*-zcX- zIc~e$F4t1D6j@vrhnf!a?u~MztR7SkQ19U}ehPjHhH=LJ6gfqr4^ou5PS=Se^=YD* zC@wP-_PTmOv0E1 z+#C2s{i0qKuZlK7n*ci_xYq~o#C>z$+-A1eEm6IX+`h4PtgU1!8DvVppYZ~{K|Ty;H6&Nb)tB@oRd?0hN8%#^KR``UQy?P{JqWz^6f%W`zU$3;Q`i=^sMF!=N1vw* zvqG&(cvXkf}u$S?scvH+&Gu0e1hn)vY#WlJX-2&)AJ)%57{9VA!OxzkopA35| zJ`3=_=?9vBSg(Lrz$@^-*n96_sme9&`w46H-k^X40m+h)Bp?VVNdzPZK_rVHL6Ia` zqJjbf5=D_Hppp>;0f|bM41$8>q)1M?d#xwD_qFCs)%@|z%v<%<%zN}a`&V^52<+W` zb=y^Ux-O@HQ@|fd2iO6VFw-_?iGkr`jozHZ`-5% zD8C>si0ksY?B;dzFbl_>_Fz6ZnptD^{UUpj6%|FrJa3-YjdJaf50GqC)P*aCJwk(Q^WN%3U__vXIjj%siNv?|Tib`&%r>)^&C4{ERt9xvOUgvR95{_lV^Q}m5lh4jK7->HysPPI za3>D0e>_LbzBk!T7W3vAdWP<7I@9F+izq7*zVpy}AzR2$Pp%|zk6w}ZL;ayJWa;h`rv4EX_)am)Wd>&@<@Nhug{{ev+^hteE)B1+O zEkQn_xo)me*Fwu<`WU$#ysvRDe^cBPzw_Vu6>&wtw*WJ4?0MiOB%90@?fWBl0Q(R7 z3FI%L*Mpq^{M|CTjP60SQmqtn9MhOI=4S%4e`ExpA5cIQP?*>a%eyvFCvd4n5>)}nRPuR;DI-be=xW)KBg$7?$yTxn zb^={N?6TEZwW#-nor61+*SLP;1qBQI0c*nP64NYQ@|Z%oXh3&`sMYC$m$iLy=@UOkEz5cQOvFtLtET9YM-m14kb{uLo)Rd@Ov1^VD zyJDu8!M#9HQ`EF4kT-}N0qg_dUL12`?AKQ%4zL5!KKURvh@tMpJ$DIPBJz@ZOTVS_ z+PoGuGU~jXHm8L*9%?((ir5?Y#C~FNFOW;-iZbFB@`b#M?LyUTXtDEv+kVWf@f;V3 z1)`8CWU8nt>O*2Z0UgKcu^PSys6E%&bv}5g9YLhy;hd82- z=yT>=^mn?bE($m7czoG-HjcahHwf%0z%Owq-8JMRzk(O+3w8t>!9E~b?3Y^^`)5jT#wVi#N;-b5tEw@P2?N z!WOf|j3Dq>cZeOL4spyJGnoD3wxSqiEmkJbD|w5kBC14>;R?IL{uF--?33h_IptI0 zDe)?S97}i^w&txlG9r(gwo1xV)sLw0!{&^fK$LJ z;1qBQI0c*nP64OD|Ahj`?Sp3<>Y2PeZ*)_?S#4GYc!8+4$9_F(?eYY2>6gppawr>0 zQ}dFvDZZZ}^F2LJ&*5K(e~-I*+-##>>n^)XcnYBAt;6cD7x{}Ex$W?$!+!QGF-wdm zDznNA{&>A@Zwo(v?C5Jxd;4PhVi~*)UMXIR=V5tR6W)Zb^PlHy#2Rsr-D8-4&oZ-2 ze3?Sf4dG+o)HF57JV1W{kE^n+Y}e|wQN4^?4D1JB7anyyX4>_2eRAG!qB9WLY&MJe z@+oynp$`FXyc_%m?=HHF6qdsF^1VDJW3nsJNAwZcbw`#X_5yH2@R)rp%67oN-$eP1 z%lUHtkdVIgQ9Dm3;Ddl20BBy3Rb*Ygu3lTZCuqzXM?MIf#b%M)%kAOLU@3u{1N0&4 z^12-TiT1X=MaBW{G)B^G13Uw<`+rN_QXlb;cpU) zh933~^4t8hO>x`eapWOyzY_#@K=7J$6dlEDltcMAQNyp{FCvRcq zQ_$lr0z3Za<#{4?+>b^wqM;C2B1FFu6aA8`se1)Ks-0jGddz$xGqa0)mD z{#O*Zq%Y}7!K47*{qWweKuioLhM0L{MqABRv*mO-UC#22welx$akT{G9rEqlv`DpWO1O-g^8VDNX)Ly%Tl)QIRW zz()Z8|4HHuJHv3xJxxxNW5{zr_`;v!P4Rk&9s*v0nD4%b-?3liud<8Z#h>O)^H5j969D-E_`;6( zT*?M)PT-$g*p?`J059@HGts<2xpEhY?!;}Ph*!khDz=IurU*^fvzlRgnC@&lNBIJm z)FpMmEFSmn@O4~bmsmWG$Hn6Uo_Xl$473C7WHyS@A1*JFX zO?%y5!>bXsZyw4^JjqY;Z`3!i@K?|lUJuY<9-qgDlSg9YBk3i3xaZGoGe>@gjlIU+ z&+=ypuY(~3c200-06&PQ#nVyUkD4BL3Qc)a-deVn%ZLTu0~8asXcTUiK;x8F@yI`vL4bz{e1OAMe*4dyisdoPrL*#5!Ic@^+P>X z-B!0}_!*vH35I;TbK;ypJ^H|Z;2+^fA|LzmygbiMUaQ#x0)9Bir?8I`Xr-tM6*u z5d5fr)SuhWE#}U5!@J>Tv)SPHwiEE8M}9r(dFoXWRSyK3_x}Rz!F>e3ZQX@xJl3ufJqpGQ5w_HwZ)^ zuwQ>ppVN43cr5T(gm)iy3!Y+6MRxXK=h=BSQjCmz9dV0+z5sdwsP8L?3c^Su;U5YA zL)@Ieuc0yV3;Tr}8$V@l5zr6b|L9FQ@Bjbi!^Zu#Q@|*%Kx2C`l8t1$i0k^g{>l7gju4n@W48b~bm${AXU$oE+duNg z!_UDk!PD|-`7QA!fq8eTSgIKAynFFp9Q9@w-9^t(GZc0kkh|A{_=tVP@Lb?=i2Cs+ zzsZZU;tV_P@R-AXcx6#pU_LyQm_iH?1H=$HM8eM>yXVNdLtTk10C@4kBfq6?so`}G zJ!()MAa()Ze+TaY)Yho6QPV;v>^UH_J~L6v*0ShNWKmfZ?g}yyxbeRwZVAk;aT^d5 zF>##uk^LBX?IDkF0-wM!n}+XTC)G)PW z!7fLUSdrK`K92vaf7W=d;U7@b*0hi4M>H}by7I34CE~Pq+M6wA3p^+EO>mciY{5_Y zr%|3FeD^R@pU390W5j;BU*e_$clyW?L|BA5o&~j=OjE9aT|cw z6q$wCYgl1c(6jiA90Sjr=siO{peNW94E=}YW_grXSyUI*0db0*Vhv40gPs4vvarPM z3GNc`Tp{*)xn9Dr0=pXcUin#mhC2nk@1Et)a`*s@=i~YJ?0f3?Y-D{1WKQ5N0k6k@ z^#60a|Nl=v&fE`o3OEIv0!{&^fK$LJ;1qBQI0gO-1@`DY`ex#0qL?bCmJn%)+63w* zKlH;Mst4Bh73R&a+t)38+K~VEj(SI-_I}DfWw(p%kzX5f?$JXirAujKqwf>@1ZK$C zEkL~r&-7BZlzomrN88`?IA*`tvu|Zv*|}n_pwoSc+wHsJt{5#x%PamBAANxTtp3M- zx2ykM{qO4k|KdMz_ghW@r+`zyDc}@v3OEIv0!{&^fK%Wf3Y0Zv&8xwyK@bMvQX-Ga zqt+6b+2^60_?D`rN~Kfj8D@sTEE!qy*snevo(_c(27B^NM3ZR$T^mi;{Wnc60<-wy zvbbz%TSl|u9;S!s&-yd$u%975B>lNZv{i^=dd}@&MhFLbe-jH|Sg224F zkSruyh!!F%&&ubpIc&O}Zfmhxth?!MkaKrUUyE`Nu@?b9yZWlWYM>iv+`zYGZ5i(E zr?cto7(d2$upJB@^4M9&t$$jR*6a>;2k6aAvXdfj1^DCP#(tyONa`g_Gv16Nck!lo z(>udH9=}HX>i_C@;2rn^y+9+^et}(JkzH7Yz1@{4Hcwe*nr0Ih!`;G+odg)w4` zSi{z^6>^27m;ecnz$`M0M798K0N_iBeU`8F*Lo}4%9v$#7vIH^X*r8LD)HxW8}TlG zmo8UIM6VNeLtZD`?Z5jdbqY8IoB~b(r+`zyDc}@v3OEJ+Dhj}xtwYcuSgls8h6Hx2 z-yu-*jt$3#v(zkANmtUS>8{$V_AG%6_x<7iFpJ4z;1vgNGx zGx*HCA>WW6i;u+%`~^Oj&1LXA$VBwgy)-fn@y~5`o5k;Cx7lrtum(!}5PS5?>@r(R z)Dr0kPJ=0R5Q3ehd+O^PS&Wi;mv@IfUEMVT<9(I zaC=ZeR*=Y6gooW~wwh7~nlbFz!*`*guBcN~ikfDonQeR=-_Vqh_v1V9y<|C+;QS#{h3c-21~*09qoG0rv!`$-7b> z0kR3t$#W9-_NirR*}?BXuKhLq^0D%<%id-0P5x$-0f3x`tNbdjEGx^?luw8o1H4Aa zkbs`}y{@b)!(D|kD(W|tpge|r1hoTV>j(BGB1kj;(CM~5&2Z2r%;vHPZNNuY zJ{S4<&$6>DzE3CJNuw4;ZrpmlKDu{@&t6uMHOg9ppMDFkg*S&-6uo@Y%0{tT$qi;AKG z-=m-?D7vw3bRD0cH4qKNTjYNin$TeP;S_;A1I*?%afM&u)&1&zu~@O#8SjjT{=fx! zK_VM47iBT7_11dn{q%lmSz5N{tvPN$PO6iti|Jx8f5-R1V>>{g*8^{WO?(r7Tf8mc zH`q?MqiOxu`Y17&4<KeC3c!zgO*5xAkq^l|a3E zgn&nVTh&%wqU=C;y;T#{qWpAt)Fa;>KJJ(gr=}eF^g6wMF?=!XNxY}tQ^=k>7#<9Z z5VPa6^?~^ynunu4L^j|kHj2SNZv+AFzBFDMZxVr;6Z`-0ghT!yX6SWP z9d#+Z6k@QBee6oS5=Vald*8^%gMa@?eNy8V06BBmmrw1d_Tejl9dTsXp{`GDQkx(6 z50O_M>Ua3=53mEGJ%8i~b|+@D+3b`#W#EN~J_tPSq>!Q>(T?!A$Lq8D?3g(g`5j`O zzMidT=nY_oej+##WC^o`cs#XjZ9AXOr=R!(hhJYQQ_8@Duxwa1M2`fSjM&d;Zkk86 zekk_jGeDBNrGH>m*M*G2=&ZpDX$8qWw z9puP8Ku-t0ig=yTBSBxMv*;||=5O;Ia)-P}AbS#CfSm~BCV0N*AD72vnxr&IFN>E2 zc1S+5A4NHbSIt$kj;)LG`Oq^$jznIOSF9nhyMmur+tfDC=x4MFQ~>Xb$$GLzjvsnS zU2GR}ZR}x@VR4;64&qP(y90PVvG0PN2<*h%CeZsq{si8OiZK7c($`=0Gr~P?r+`zy zDc}@v3OEIv0!{&^fK%Y_p}-k)#{6i1vUa9w)eFi(`sHO0QdbOl2NtG+j_h}b@iCiKv^QJXzRW2+Sq8EVN zcx1`#40ncur@7kGarrHp02oKl;b{&yQq!RD}$m(VFl0=edL|_Jt+P%N*FZ+6ZquLXX z4<3cz%kSkSeu-x=8EE@{J30P0HrRitNmSq!_)+38JIpHbioB(0DJBxd2-N!ph;_tu zc^&Zuaws3lp%L_(O-v!+oA8WyMqoF7N-!nZM~u_s^!xUG`?>g>lIAK1Ls zU>n#9rh<8a@*I)thr5032RyV7t)&AE_z&PU#qIz+2yRgB{TtpJUQt<8-t+Ex4P*le zF9YlZAbSsgevX(!TLDEyAzp}IU>6vk$Eet-*i?V2-)uqZ6x>xLb4)a3L>Xj42iN7+$!#auDS1UQg5kf;;X2~H$VBr5C5dZ*cGQ2XQi zz`O2E0^W1D4M-(Z$s8hws6rX{)5J7#lB+EYg%`G??7+R@-tf2Jw*d9^W5j#>J^mPb zj1>_@1n%YGKi9-Iv8a8AQchocuf3Pu&+eZUXGLGumjyiF7uiLYU1!%7Yy}JN0PHZ7 zP$d*{>M{GqpF=L7FZ^iN0dr=|)sY4G41b1WUY^s->0J_+qPz1}rj^M{q$dvAgBJb+ zxW&iqesxt{;f4UW62FLFL~7z2{td?+1nwoU`;LFVmapZriOmG=`cHYMJk+enuS4Gf zeuG?aafjdG*vGFeYs)Nt7Qdm_&`aV;djLwgf%e_T*4F-3BHw zWe92o=xVGQ8)-+9LqK1uy3<&SVc-LZ>O>X4ioaEEm2dI4X#1cQZ)h7@c=>ta-+)&m zJQ-0V&yus`FfmMQBan}Hlzag*%gpkeI49r*QA(5&kH|-88=#@Yp1=`#B)ToQz%Ouk z5a4m*PGT?H%gWhuwuNb7uyXrAoklv=Z-3a7dd`Ijf(BFx6Dd^4vJ%AL#^#J~=pNQ^pI|ZBq zP64NYQ@|8mfl6Ky+js z*+#KZV1|tOH0q}_{0uq3mF2(b-}JNUS(TZ%tS{^BY&*kE!F6?AJsv(D&eF5=^Y(d* zTI;v)xA5cm$MHIeI*Db(if~1UdV7+YM3?HLC~a`FscNfQ%z{%I+kQ1{^m z;096O)HhVh1|tY$52UuKBme!~dbj?Be-hpHqkk~fPPOydeAYwuh;9im3&wprYPdGM z4ZkgJN4xI@WkETYSZbF>H~hGDN1cy(?;tja&Em77ef{&|yqIFA*i{7l=Q?|xy?q4g z%3JJK)boHpKW4^hd0Gzt_!ImDU#6GoFVq)mtyyc}Czv8rB=!d|-%hs47CsDn^{Aq^`+Im27PUpAd;LfBBT>KNIrbbm7@TG3L%b{Bl{dvrfp;wWC)i_v z7WoM5YYeeN>`uLtoB-PD`|7?*r_<@hX0gepv+3*M_3(N1yc%Q%nS<;g!{aUQm-pc> zP>a{%xVJzJjCvRT_yD~c)Vpa}T6Rz#l<-`HHbZGg9^MH(WzT=}BlOyO*nwzH93gOT zlCTN8iKxTsuv7L_r1z`*)#!eIv>9!lwolvkqPcnU&)_&Vjy4`%AQ!;fY`Iu2LK(^`#4K-?w~>HWDJ+Fj z9G+mkOfR!oFQ$u@OB#0wi^L)U%^wku2*nhuWGm6d$7TB!f#;9@7knMu%>VEE+322` zQ@|?&u~w2hYKCv)pWko+=a#b|P%}svw7u7|zlz84eZw~MSydW#cFf;vFeXM$# zo(9=*sGD07DLO^hFg46#wOGv|P>-H9XH7PnjW*UBL^svAt4BRs$*bhS(;fHP$hO0d z!78yzAP;T}?YL*O8SPzumlq`l6W^F`407YT61ZQ7$KJEzS#jPw?|mXak%Prxfx1&# zY2g(J|9$w^jr2x(?-B6gpF?}z@I0taylLJvxE&ua#tYPte~3RsO<7Z}5G%wH|A;>$ zHY0Y#JL1ik^Cfl#j@#oF{&bo`1uwJ9R3)#Vgu4^$h(4mXtL>_&DN2+1wgw&oxG#T} zJCR@2q=X1h6>BcmsPU4*_gvIbMz*GKWlYVve3ePJ(lFZX!m!soqqdhM$JbRdaP-pV#>3{ltBg|J-fizLF_lea+X&nw^zwRn zca!cW4e$ndj}sXPc<@h>lO%ishm#KjdLT8(yP>D(8Qp)NcTtU3JKYae?+p8q4|NV$~g#=G$a#N+I72EEY3*)4a=#$ID@gWMo9 z`dcda{{{w@J2kvPEm5g zjL0(qUJvL=;eDQ+$Veb3F%<#-1&<)B1nR5_#{a?J?K8wZAE$s*z$xGqa0)mDoB~b( zr+`!7ub}|u`0&TeK_HJ0`{Bd%F#Uvi!i*(8A)4x@h|ANsjW56paNL`}Kw!7OkSHWx z_Fncb5b*B*)Bb6{W#6(HVuq+j+3xU=gBKm<=cviCKY+}6)Yr)6!@W0r0^!lN#;&oL zF~357MrTJdH3a^&ZR$ATMt_yF9~_o7)jYVtqX zpDe9N8}%cwOFmkTmhhTGO*_ON;&+mr1Q=`IB z;X!lI>|uKtJQJ??SN!71#gm))&HTM$FS+*T5=-n7n}>Gm_sYGpuBa<8Loel(@qp?VEi1~3!hT_YvA5W(o?JcooPW;0<=ygROvZ4BvD#bhAvXZ^H2O%m z)z~7oh&_A{??+jG_`R9_On;0w#!DYdA1h11zX4tdcppU2Z2mLvGjA)~8hQKG6g36> z`Jw5@1Uv+f>*E^V7k!&md{vbFhn&bYYz?bwsv3AP4kF;afc=w7lz}i!PLt?4rKgO7 z$H~KBhu9%5k*7jk0=pLQ1?WLEAke!hM7a9@uko4Z9;H*jDc}@v3OEIv0!{&^fK%XK zRRPS6F>kM-YeX4;^>jUr%(PGSr#fSpFbL1ZwcPd@jcx!}t1ox^zgb)0uQ;xE*e>?{LzdwD7aX9Xxgr>Jf+4 zVU(s6zFn{!-%}{W<-d zz8GE%@iRw0i1#CW0kI#koG2+uMt+L$ zV8mX3ev{wiA#m5>6E(@h5dDD*<^sI}=}bnQQSS(Mgy{+7UA%AJH+@B4(S@i(AXgFZ zvs%PQ{3HG-v5Kvt3xT1m1yPy6UIg}La7%;#E|5);MEHc8{r{_evbyK(6mSYS1)Ks- z0jGddz$xGq_~%ogEpN+no7@Kb-;D@(^=BgLnz|;B&ZA!qU!^pO87p}h?qdYZx8cf+)E>`t~9ZWSf|!0 zPkZ`Ga3z?mCaZ_$p?Q(N$l-%NhJg3~CSop|OOx668Sb?)gTG6ZA@cEjyu0mgG55Yk zthehej;6=?<_?`zN_tOQ%s6^gFru| zFYg;=?d444qDd+a?*2H4A`9=pfFf3TQWEbpN3J*IEnEm5DgWDE(E1+M6+=LQD9s>O^WKQ5UP9`w>$L&9K0`wyz{(7Gf?h!i$ zoB~b(r+`zyDc}@v3OEIv0)H0;u%nIp{%ypo#0JXzgWud*yVfGZu7PTx#)sp>OTndJ zaAI)e4Y$MYuvt_V)ii7xrd4Ux9pVtNGuRo-Ow3I540;CV!}B3>=8&B>gutFP?$tGY z6|#ja?z?{?w()IzKiki+OO8Cefo7nAwz#WbEmn(_v6Zn~L|wlwrMS0?eA`fieZjxr zsYI%%u&QFK*z_ztJ4TG=qxpy8LxGxXE@czmk$2>D0$F(2DMw!b``vp0-MN2gKeQQm zhNynU?tFKzyY~VyUXGWC{6l_EqN1osu5>-cA@7hk1yFV!{Qi~_XS_4s=Gf-gn@Mjb zosFH14Ne-IgrA4n{ZaL(x)xpw=a@NWs+y{jO|rSAZmC7#qVS+Ts4s_?!->JfpeS+7 z95c}67xN1#Fp&QD7n5X@Ec^#H5%37a%>%Lzu)mI(ICOw_9c~Y<5*2Mli|6^R{nqv| zeav-x-DWTu3|`w!YLohu*c5CEmaFCJGvZHTP&gC=Xi6xa(+1rSW$2-8?2@Q7$BUJn-i)M!>T&olR%gh&2M4e#jui z4FGyV=%XA^2Ne2U{Zv1N{6Y9nVCR26pU!eJAc2w%cq}v9!>$L zfK$LJ;1qBQI0c*nPJw?d1(5yLA?y%-qCQbmi1B8;f&V+a{)Vcd>RjSnq9##3UOs*( zfLtmc^IF@#k{~xdUJMYJ0Ff$Q9-a z*Cy5`&cx5eONFJvf~ugxEj%*kbMl=0c}g8bmLKlaQCoH=o-$7vc&H=q9zKHb7r;FD z5b=lo!~Vd2h`iU}t5?hvqlt6{li%jI@Yp{?aLa89PvLE4TZ#G}^I&ASPgE0CVOE%J zCLY>{*3j1&HYU0?!0h)|?^my+U(%PJ^h(4^#0L3;{7fQ~xI#?zrh1M1M*d~*viD)q zhe@v!cx;1XgJU(4Y9uX)Er`t{I(i*F_!pwah7SO|4=S39CW+Xu_N(pT_V6wC7P~-s zibcXAboGBTY-8G(M+wxRnEAuAZ#iMLCHKFdb#vR?cH*6QQ`jt+V@NUH18#Q?c*@2w$9*^<| zkO{GjFXP)NXYn?_&FA^^{Is#OF|zneelO|0q?z7K?^U7z`877+4R}A%Peh&yelZ{3 zf*;rqqP)f?lriaB-#)>g;EU`ci#?5p{2@ms-zYwcuaGO`S?{bjSPrI5klGUc1M~!* z=g)JzHzpGJ|EuL{Io2ENl_RjjfL#%IM0B#9Y;9JXQA~rb!mDsR{+IoieZ2366N>nV zeZ-3KVv$GX2XxJXJjnkz`^Vk?e>eO8*ZNd(&(`4kMz@Jx|7xZhr9MtD z*s&kt4e@gNIepaF@H*U}H|U9GqWOS;U*m_wP(GB`_v(8U{0csH=JA-2&4_xs58)+w zNu6SyVnI@nbdLDW`;NZr5U&yC4D{puIQ;bw%7Ze=Px2EoA-}X=MzBBk`y3r?3Dk5M@f1_DlQg<$Bp%G#BM$If*_>Nm)`-tfIh9!fke& zEh738*eQYEB6 z9qJIC|Ja2_9@^Kz*TJF0p~NuacFOIP#Uf%WtI`Bl6sUK80wKH)v#q1M9O8S`D#VtokQ z8hppTW2oV$`_uhJa*^EbZTCJWkTE}m4PnT>yP~eB6q{nF5OD&2g|jHjZKYf(mxv`I zpP$dqAIl#rMsw)bVy{uPUm(_0G!<6~Q~4>*>g7>lhquGSUi&$D zPQsf2JLH%t|7w4=XU$ntk2tALs{8uBMz5oJ&^*XNU?;zXE}`Ei8WCNITBer4J_Kg% z_%*T!Fe{&D=ULqSAL55N=F)9LWHjy^bS#?$& zO-BO_(QkN)KSi(L{3yo|eUCSZ`|LjZg6K`a=duEUeUco+zt{fQTS4uQ`+w*E|F8Sm z>Ylk%z$xGqa0)mDoB~b(r+`!7pG|??YPWhNd?jp46e4~hM#e|R@1)#GNgGcaheh5a zDUYN~B%Y2x9iK|PpkL6K(PL-4epo*|9vlyjg~!6G1dsFhz6bjr^nKX(;l%jF_`t-# z#Q0!*Fe*MOe*WS4huPxU;%mdTA@dLwjd)sfaH`!D> z)i%*hG_vDxTaKT<&@43Vh|~78EhdY}KBAA<@9p<0#VW-x>(4?QkOyQgmWyrR8+Znp zLBiYa6fr0^D0Y^n{y)o~Wo|FG2cLndbRW>dZxI>4-IMp^4RM2})Tu;I)|25jKd;Ga z_7J1&DEmHnAR=F}Z_qdRlW43P>$xDD8pR1a`=n>CAv3wUB9m1A<&n>jt2G(n%E}xWA-tFPsBxaQN3#$;XRi@s#2A5j`-ia)V@HVHNxPHI#m>b>dLzAY zVqBE<2j9JS_&a*ECW8P!ld3l~D^(AF{Vv?O?F{7`=Yw;uA5$|Bq!6e*sT$Y!~-C?}M>>j>hdo5%OxlwEsYYFUs3?%mOJ-i%om>rHXE3ij`+W}-?{cwDIe;lF=}-{E~| z?|dqo%HSn{I&Yeq7J0p)pK#e+Ht?sbMY-<9WpRm}?wypod_@c*NHcYnM7~Dw_hk$DE5u~ zMjjG`J!G+)4}U=14Pf_z6Yv2@YtkC*L*RMMA>hk^`~U8giBQNCq78}l<^}tL?VviS z9h6spPMyPPIyw0*SMcFO4`jF*Zcy|7YJN2>bxXaKZH?y8Uz#rsb}LSWr@}5lm*5z2 zD{(7<*SvMmIvA-(YV3a0ATpYaW{Fy&s_LqGy;`r}UC@^(LBK-*y9AHwM|G>PRd`Sx zRPZA}*5fV$^?w$=FCXlDHlCHtE}>RK#{-Hu1oF;9*Ap2mgZ)v;!@6 z8Ib)5fB(w1vV{-j*Zgb#kUeAv`9Y3d{PL_k+sHR^=!<<2X#bGFYuBFWC;O3ez+U+n zF^IUyZn7181>Zy-20Q(o{wv9^Bx6s2d)%8SCra!_^wd3d$*^SDG3Xf7G&Rivxj;Uf z^lTD599|@T=fBeyz*FQx(1iD5z1RZcWdb|@MF_X^|F8Sm>7Kb$z$xGqa0)mDoB~b( zr+`!7ucp9r_Bor~WH;Z3--llYUk0eDVZplNEM_CCJ;*!OA@!^x8uVT z!xOj>*howzPkZc=R}HEL@K0Z47MWB!m0q4$p2!#G3sK*qPf(JTWNX!0WfCTVI)9_u zsE{+bSMSx0ZDZR;wNdSKJDT(l&`+o*luD>XPohA)K>Ty!eByi}ZJ0JJsY~jM_M)9> zW*W?fmzt%fpe<-I+eUs~8{5VzuJ}139f7+5e04UR&33(AH&e~%CvQ~na4%=dnXzmv zgQxv|xnJ(~cl#B+ie9%^wtQDO%(BqP+H+hADIL2z=zhDId6~~WLht+cUT|R zsOyzgwm2)!aIcQsz1P|6QAWW&u}{Fm@FVe&n9t_3%sexP*WoU;OJP3V%rrA^5%qB8ngfIiSCJH;tOI|xGO|IW~<(+ahFh^$Z2w# zrD~}{kL5skAcWV$4+QS;vD1#+y_kuaL*b#YzOJv~GYGH$iNq;>iZ=L{@ORm}47(K* zC`+)X>?xn{pYS&kkH#L2apH)7#77R_d^_K^Wo_Bx=5d4l4EXWGR}b$A^h%JkIGs=D zD+%loY_J<_Zc0APCbEgG!~}1Ghk8COQJr{SzAqONm5Jlxxaehj*=y_?dt5v&aJMlx zX>Jl8$60=s$61_V7o%;^Hdv5YK*<(^6GQb-jeCFGe_-!p839j8yl(3Ve7`@4pNR{^ zpTr#kK9bZPvmrriCG^fT_TRt$YM%%0@j3;Z0!{&^fK$LJ;1qBQI0c*ne_sW#i(b~0 zHTiTty*gYSsz3$(g|RS)%AtNr{FImz z%n3TgJH%55se_NhkE43@>+oxwUxx(}1rjxa8bQ%S(FA%7czozN+>GChXc@5zyCc0(pfE2;9;C`!4=0F-xpqD;Vzi zn|aN=)dYG8$d1Qs9OY- zQ6{k_z9!y0(L6CFoD!lBFjvi0MG4#Dqt_mpMk393?WAF>* z5@L7bV0bXxqxPt{iJNMon#e^QAX11A$h*IwDQMuWhh2flUTQu*262youS7uLb#i@x zzwc+JduC1nr+`zyDc}@v3OEIv0#1RysseR*9ddYE%D1pB?7F@l?W11_34KLx3%7;v zfXB^wD*`HWe}~?o&r?=>HCxRh!+x{9AGa1IRv$d zeTjXEyehA%LST0r_w%0+V+iycS`kzARQ)V5K~0E$Jy}oIg$O*i943cBPhhYaY;M_G z79N9DDChl8^QVdCy7bRltQLF1K4J0r(bquj2@gDE17bIz7*R8+W>R@sUc!qIcksCV zZZ4b4Tl^NK5_I7cy@_6SKf6C$%oZI8+=s(E?y9^ht9n&E+%=$fgvZ<*Hix}O;Ipz>H&6Dy;*@>tws*_87LGdB~kYk1p@5J`x zzu%YjWlx$X&C^7+uv)l3*iRGhwzTcuF~B}Vm7q%W+T9Fp20s(m!fWB{!Rx`Ca86jB zz~6;V=#$Jcv&wx!QzyqE`=v$1XjKG7jgRv{}ifl^YHLK6-M}CIz1?)^kW6_8v;JKL>TE0)vdw9m3+1bTy6n_B5iS?x?eo$9r0pRvpv_qm24j)vGFNB5MM71m6YU1vSZ2 zzL{>O=LPeEibPVF6b8g{y zIC9U>Dc}@v3OEIv0!{&^fK$LJ;1u{DRA82x73KaRgC6(a9ZUxU&pqr{k0d7Z$^3zR zV2cyD$zEsHku%!{^PB!H+6VZ7Zo_+oJwkZv?=(BjYvF5=e?Yo0U5MTNH`SY}lr3eM zW*Yw=9_#S=$L;m!L`U9{BeNcR-?!~;i@pGE+efGoDo>Cn_(FZ54u^+BWCnhsKhZA{ zS;?mmx9RY>8%-28h0Sm3H&u$rq%-LXL{^*CuF|XYa|Cwt&l0$E$gA^e>~iDQ8_x-| z>+jk3Y>iwa>+yOxPmk{0;nUZbeD9EtfK0wm%qIqW67Yvx>@D^N68B^GV~@y3`cJ-9Xkb>1J{@Jd?Ck;elqZq5hd?6G!4xdK8B|eX`+k(e2+9X zjs1>T$Jg=CiJf|<#;hNH{yl9^`w@ZreE9#rre0Ie@#lDd(O=;Eze~V}Zwwp5mXmkj zqw-Pt3V(&e*KP%Ynf{buN)S^qRUxbp;x#WpwAbzRuf(6~&&Y>ydN`e~`wxXngQdX+ zy+OZ7geEk1^c`K_)Q|2C2CKme_X}-U8`gri;2l^8_9B0gr)6m)zeRX8^iVz2S$o#z z=DA7bfqcDOA9?ey=j(Y};%oi2o@S<*^ejEY?m}%|JM!8)!B24XpEeP1^SAjKKpJD_ zKZ#9ZpA*eZb2HQqweWZB&b#yCUU3h-s-yfUIsUESX;>Nte*wJ4@Ftk)&GZ%}ElL_4 z8y(vrcgVs7G|OdkMf>`AuY6;^F~`_3<_llo^*cedHmyw-o`sKNJ)hU-b-$or@O{enDX9Jbi2o7CzB#=2k=b{S z_{sicZ6_NuAY9%K4m}CpXshdQ`6KOu}3U+6*8C%26y4e z&cp8cX1+P9U6DWEnLxf9cJ&t!6W9cX+XU<FyW`mgy{@+&!t=o{-B8!m5S`xX0&;bveV zdFH`SAGLNNUWgAT@UutT(RQR68P)#->;OAbjZ~RUX46G=QEhk|K12+mjriJ8?F)ZA zWX>&8i_|8&i8eLfjrs*+%~-<}i|T&#Vc?zchJGW;L_qJRhOJ>M5NFw0h8%&ldTo>o zvB_*QarrlP6H$TG6JrmktA8)($)y?8HP zNE8xV_!i!jxMS{6+G7QS9uG1JKeiv+Dy&MB?RSY^;1l;?>1EG~|MIEda7VlT+yH#$L+hf~fPZJl#MX`#n z;@DxyrE_U$hTD^)_NYxK(@ESL{LX%lZV`&HVhmn>znR|*?g@Gm%ZQ!C2?BnU*NMA? z^8x&y`Obd%Y1&Sy3xb&=WNL`i7ZdCYdNo z%&;>oyyu&SO~W;6jbesTvfoowH7|_v?J>iJNBg(zTUM9YZ};2zW_~nNN3E7hq!N8> zA1k=vXY3g}ijU%5ye=N@*6(}w>EeEJlu1vcUkOip+~&{Hv-B>r%cRk1Gi5whSvn9f9vzSy@)@;5+yrGsskCmDxA;8@ro$T0Bh^ z`w;P={!ruBL-|lj7pTGGI%S0(|-lv%*m?10ELnL_QIC zfrniQ^at>|JTwo@YQ0)R=XcG!2DuQ}3wR(NM0p0|p{;&`~&1r0{7(H`}3#RQw+0TWb=&; z$I|xq^suY#YU`t!}G^tRZ`bKf|*VExnfBda<4=<^lrV`0%Pjuiz#1 zl0uChWeTv?tOt?L=Ckn6L;a3k%SyJA;b)-FGhU5XM~RlUrEQ^G=*R417W)(Xh%f9H z7X2H{=pV9&41I(~1TqD?vaSq2ADN2iDO_b&8D{HC#ZpQ#R5O^N_p|*X zZ^Dnw$5g?Nj&}W#DTkRib{i_{igbbSrEYCo+mb{*R*(H?f3#2XCpl*Rt^L;iv7}>3 z*<#sZCFw$agV-Rl%j`0>NG)2LmL|qx4EqSUsXr_Zi{)~;oa#^Y&xv!Q0)gHAi~onc zw~n^DT-W}e`pyL+A!Q%}(%_~flm-Doq(!>B8Sv#+;LqOyUgHUkV>Qy(7VGI;M3Tr zu}VbgpmdOfSgaPSv&0v{7g2^FZV7%8KSllRv*KCtm_4SH!LDqPS!BxF@^&{d-A#8D zWkp%k6?M?s!*2oFePs2KR3kBOm^Vyjl9@lf^dFjsrX6p`f3?5bw!AGO^`g6hjcg

    J)8N>X!0b)Ry`G@>L^!nW+Ad~M1VYk|?Fq@a6RQZSc zVR%FC=lAmms(}jk`haj#+!W9TOl4D9JTIPij-TU0*bs)BJaXx_+O0MjPsTqXG++%F z^cKhzT*w!4^yi_k;HWyPaGzdJz;o_r`&sN^&=XLcfQ|*+@7ocO(STgNs-mhWC(FqW zwu9YecA2j!tG+z}e-HZ{MZj#kAXpIQBg{6lO&J36|2hU8gAXbH4|xcy)oPV1$VHo* zLt!S~Y5%m}L3L2b68Mv_N~{vd^+OgP-UlrS*UUA8F2N$Ah`7S8un+hLyoqcg^LzQd zQ}UFoCaQ^MUNi5KxFi~Q4ZQV)3@ig1B}NJ4L?BP$7(W*BfxJZQ0`O1tACxs^4RjIk zn;^TO2O$Yz65)(J6ZTK!<#{>Y)6ICZ(0hVR%g+dSk0ILu`V`~{z~_SZDsudK6V9kJ zs+Or`imT%4W^gkYPAIC2>KrTwL*_po!yE#3IEM((VPFsSkno)Fn&3MB{%bz=+yiwC zI0hU8jseGjW56-s7;p^yD;XHe#(d=opIm9?2oQ<%u2WQ zZ4Dhaa_id3c5;*0B%qJJLCDQ=v$+Ih(m`uKj{rYGc9Y#CwMp$^bJ!q{4gLYlahM-> z@m>5O0Xc$wWFLw7EDZrW26P2R2zgi@)>rnG$hn)&r}M{z8lr|+z!!wQ@`*)aQI7B@ z|C1jgAp0LW|Bvm*VYWSHWcUIwLtbrnnn1OAZPhgon#%!U{| zrtxyTJQi~-rlc$>7x6`*z5&m*HDPjOawJ(yvY5$ovYaF42y`O;A^(td3E4z8fh<69 zg+qaCXIX7ly6R`3_KCk}g3m=wgmo=6 z_;c-Ci~K$8O3>ke=iQVy<&(wa@cVtvK4(cqQh_}H-q*;TK&AzDCh(Hrdti6-fY4QS zRV7RbgSEfE++%5xN|}f8|H1d(w^p$ADwNG2j?* z3^)cH1CD`zJOg{#UbcvUoWEM4mcV?4xgQ>E%)%Ggg>c@2=6L`cz;4-FwhQaRe&Rpz zD}=uZ@VuiFE)`3~W)cqb!~7S*?*zOKFA#qGxzzL5-}bk^h+jlXmXaYe0O9H%5#YK0l7QI@e*L%v+{lqBh@S(W z`Fu7%{8{KVoJ2@ZfHwg<3OrBD#kh&jHFK#+;Hd!@&15r~mXOEGxepHD0La)vBQ6ld3|tXaO6Y&Ax|gM$t&I!uP^V*@fa|( zUJ+MBKABJ6CEx~*+{7k?32XubZ^+BXbHMD6854bg(3Gz;>&zeakFc`=^DuJh8=8jZ zC;`3!bQz*Y09g)gOdAvGH>eX4y$(O=pL9xTCmZ836 z1RKGo@F`pnF!#g9f0zL6NiqW7Bb9Y!a--bWi_{|J8PBxjEjjf3^$2)1|M~jIe-O9_=ooMeI0hU8jseGjW56-s7;p@{^$cK+g}%J4 zYO9dj<`d8fP=|m_x#?!Q>884=1SWy`nt-_udh*h&bf}AlHb1V4OV`q_s=ldjHW7X# zd_}-rwzX=l?gV!NXw1|QN9=B)Q@8QiyK4Dsu)`UHY)cN+I`Ox5A9FH*7 zObs;;7x;xxV~(G-h=4uGPn4^GxqiRcFTR)G%kHAPfR{X$fQ-Hkd;=dycq|@^9dd^( zE6R#n{1zX~2Gf=KJnPIm)8#)YKg-Ut<#xHPXex%YZvj)l;4Y3G05Sz{Q6yWSEVK2KlJ=#)ELz$XcT19nRJ1mK=7V=PeBg=@4!WMQ8gvs z|L=sDASUQR$fB~SebIftkaP|=)s-mhO;cNeE|2$!u zoo3O)h+94M`PluSo3R?N#+S;a@;YTKp5bTsY%yD)GZ4=e*^ixcr!dzK`-*ewoch*& zYp3$5ys>VqW?M6f)>CTw~T4_%-le#4czO;ikH&iV?1uD`qAES&Nqm z(4=7Bf%g==3P%Z72zLmN2*|F0mc;D=-ujPD_XHgSjseGjW56-s7;p?Y1{?$bbqwH6 zIYm#=T~rr^+wNroGW(GO(1Z8j=~y~eL>CGD|G2ATX6wazg){0od(Q4Ldkp;I(+Jni zb%R`hYlObGZ#eI*QESv)|E~Wd0p99TtP~qYnf!F)f$j<9i59CbpU&=c$gi#$H;HaeTm=5zhIUSU?4CaQ_T9etvnsJ}7anCiBA zc=v{veuNsKz$x_q$xJeXT)Z>EnV>JBrEaO$sokG75t4~y0*`%~m?oeh8AsSg=p}lI4c-PXp-dZMxXFYwRn^BTLKVQN^YeQ2y2t4RcOJU~B! z`#-cI=vY9`!g1=V97JeAfL(=tNSXSWiQ#*mLtb^vyqNWIi^q)|T6<*A-Iw>}BtD66qHKWh-mRV~ z%ysAy>>+xHF?0 zjXb>Er`c%+E&Zni?~f07vaCBlBwhrF+~(5z@Lu1I`r+W6YE4z z-jjb#KxP3l+~656Ovp;!2hB7Kc)+1Ohi1PtFU_a0Dda#%8G69`@IG7;(h=&5`r>{5 zK1X)~d=1D^C`UO5FC#C*9>iPnmb}SshI4#D(&d+={(-CFs=&W5A#9Wz zK>LsGK;#9a6=?;s_MizkM}RH^o&$LBmk_W&fF}Yu3#<8R4&B9Bd)DIbK@$NlzE40# zK|YaB1SSae3z++N@Eu{+!dkwTV_$;2$Fi&}tIcbN{(kV#)AXe6N&|yFf=lL-f!_i% zbA(4o^>88N6S)kh_$gkG(1CSe@F^_z7JIMxYkouCke3LBMPZumJBW|GkG#E+y^&|~ znSANJ^!mr?AE$^{#M?xeLV(WyJ@cMHwjOT%nOSB=5sl&oyFqGl9R)W=0+=S-Dg!6$xYliER2`)vpToRLpNbi=V@J^{6;13VDURzxZGL z4?6z&#!v)&9k`-;3GpX^QcGKdTUK78EWF^4bZOSvX=C%}WBU1S%- z2)Mr&kwxTjaa_DF-+oB8aMBnrlx`S9C?AzB4ED&Z8`i0c)T46&_m!(|5QKKTg(=N?mpxi;@%Fg!ALfe zS{qI=Xe5wnfH@U@{^TqTs%~|uXvmW<(+{&SIKxSWCLR=A7>|uKt^b6=< zM9%><9^ikE-lL(Tz|T!jK>pz~{Y=j@^9&wq7D57+fPF^5jsUuZ9;%1JdjZ}A7)867y}lOcR#UCtXoi~-*`P<@3njFY6A2CxbLG= z;5-327Vw^++Y$GFX#4x>z8ZfH9R}4*HM7s|vpXqE63-L*4|GQ$OA^@<&insg_i^VQ zuw%e6;23ZWI0hU8jseGjW8h!S06h7HsP|0WnzMp?5z7xpXM;}35T~|X} zFjx=PJJb$^ocqG2aF|grLXXf{SysAamkn?A=->Om5~yns`te$<7DJ!lQFb)UgG*sk zSY#L`W{DZR;qW0~#>3BnzX1AwWDYzG9tOEpZdKdVHr;i1nu4EETESgi)l@YVZAIH$ zHxK<2acmqr*-SRjy6X8OZ_0PgeJykWK+JP#`fc#gT`Tr9Ln75Ht zhn)}d^fBkd?+z~p=4reicKSR0^}+g}v1+VJ5o%FqA~N@G1~&ujb?y@Icd@_dse5Yd zB%1n7ePk4XpYe9QZAX~uPxU{b{DnBeUc1*;B%o619};p?H(>$4fWKXBr^LUXRf(WPa9`b5NOe!%G2j?*3^)cH1C9a5fMdWh@RwzvfohX|yN zO>5ze#=W)}E5@o5t_9bE)Bb56pVP{=vd9O32OGKgdkKb_|33et^WM$>W5fIbH~+i& z|1bMP!#yy^fMdWh;23ZWI0hU8jseGjW8iPezzh9CcO!HTItNX36aA9Eke&n zpaNA=m(=qKpAq($J?181iCiL^@n$@laF88j$XCZryD#g@2JiuV4O_#0BxFz-6vEJl znxUbG9GdbWgh_UiUBZ?yblGL0+&g&SXY!dmz8BwXE}KjEvQM#7~~fZB*Kr%Dgf!!^*H`rkO$h-*i2l68xI$7!zZlO+fZu zW}Z3Z0=pUL-{%t65ujhcWA2!|JTJ8kd>&>gl$NFC3j(?c(37`OZ`8;igfAZ+f`+o8 zL~h}q>`&H|kccPZ&}%f7jpZ?MOuUw_B{CI}U-(A9(dXIu&@X{}1>E-=@`j<`AgjnK z+RC=Fd!&2hxOd$9Mt&oQ^WnU|>2J;xkoA{={QY~)UelLQ*;cm5C7hvVsC9(31U%Q} zYPlM2hMQaZmVTffDBlq1J#kbWRnaEed_u^?GtoP>8Ap!7BDqMyS8TpBUH<>y@@JrX z(2fDefMdWh;23ZWI0hU8j)DIw3?NH=y@orLdy zy;v`h8`nfOk#D>=UQWV?kq;vsy^h{9`Aou_e~2AonJ5pSSEN_uwRkP|v;7RcbC`{h zF^CR6w>%>hsL`pZ%PxR$Ke$~KKy7qnkL2HEM{VSZhNmi z{@B~WcCej%C*Nkb*+RS!?`S*Pq&z7{_5!*L;GbA!RvGY*Ir#(r0pCa1$To)Bhy)^m zKo%c*7wZt<-^YFdv*uvKkU`21OX7O~fbXO3i!4D<$i zL&Ok)ehBm!ej~mS_?)DK+>zXoTs#*gEnef$#)IRP1Y`!HbKxWY5w9dFiQa@ca*q5a z@=fGzLKUxyha3X*1Ylmrj6R$VXW;lLxggNLfSih*Y9}=no>ylHF*-&cARx#8nR#X! z>&6M`zQ|2zFWQIM5ZF7QyKxa^ zT;P4aMQu?l?Mhoi*U;!UfCm8G73i5Hq(${M2;M(=p%}a11yG90QI4 z$ADwNG4S_fpn-0HQ?kCJ?kLPO{dhm#jdf%2*<+4_w;R3di}hk%oiN+ZCRci1i+uX8 z3CQb}v=y2<5P#A?>DsI|dyl`zbBdgzAS=j_)z_N0 z=Ey9_$Mc1c1O0_d#1erS9T@`1-iJm2dH{GMo)e%6z^wQc|B8P~sAj8K+}&rJ*#?<& z@ScxkBN_7iS`zT}p+~4n_>F)&ICdk*JizB82Lbwo_PRYy_ffifP(5g^TB}F;k;dKw z-ursG9!LFhY8h-eB%Wb|Z5Bd)wZ2DO<|!60ifvC3DH4-cS!ce|TNv zQ+6Y=8ZjSZzcQDwoGlOcInXogk$YrouXU*Rcp{z%Xg1LMh?yFDpIroK6&{+0q(Hc9 z8tF#5lj@|Tmio9lu8>b~oPgIBZ(=;ga;BWwp?7HH1A-UiK0q_^F#)@P`|LjJWqa9~ zY-YHRKz|`}2wD)3{jgrGSFt))W3QBoa3VMnKxa@%RZ=(f4gInC*gPj7PXIcQ9|_p& zoFqUua-V>`4t6?k2Td7;p?Y1{?#90mp!2z%k$$_&YPO zL2XbigOF-PKVU%(cyU33?{L@iOff?YvXzpDQ_cpbDSY|tBYF+ysS z+MtsTIdsJdYt34NymWZ{HDWWpm49^Qe+`f=DLh#YqO|CMYddmtak&j|^6 zLP`cK%wq{PsjCmOHM|4RgeSAfEIt?cgS}KQ)zmaKrFCg)wr{AR+a9S#Dm-3f^x-k# zu8$cU`S?|B)leUR{lPE-?(n#c*C8OcFjmDX%;(77gT^3^y8Q5Xe`mil%yC&rL67@9 z?)2y&z>IgApCl9UQB!@UG%Wn|c4MoeSUnDqqA znOzCc|93DQ%vJ()<+ljPKRjp8S#-=_G#3r_6VSBd^@<U3~Acwird`ULER9;%0Gjag&Rwb#ftvd~;C~- zMW}A8Q!~S0QVA@wI|=Aq#4ZN>{6FV^?3XbA|KsED{PV&+cE^BYz%k$$a11yG90QI4 z$ADwt@5=z@=ud)Af}{itHan>c{c8d;`kxVSlg6xyS-)mbGgzb+sjI=&AfZWUM(7c` zxG8Sn<;Q)05&_+G=;oVe=h^LgyKY6uX>x{H>ig`zFo(UoDIeypV=lvucn+Jxp#487 zP6~XDMFi;ZmlAL{$BlIe0s8vVrnJFaJW)^7@7wn+9vkxb2ik$w)1KZ#_)LAKYTBB1 z2AdJ)3_{-xy+1k$pby8L8#w{!HH0q!z4q{v!!uuq6`~ZvV+?w7-0hJ|pPbqOf91b& zWEWzFEF=rb`FuV%@p4+lWZ!IfAg z7HeYZSNlu`LN1#t^u^a;H5lV8^r(aPbRwOAJ|8-K%+%NsKqnAuW38|J(DVM2`N^EH zC+tyuR3oS18~u$&&iFWU09p$;P*OBZG+;Ptq}@9-L;hA1ElNaO+_ z%K-V0SH)E^l8@w=?eV>#$yg*7i8K5RuP^G0ANUWU-b8W57qi6-SqxnX@NPi+zuK<0 zc%NY=$L)Uy;emdjs}Z2J$Z2z0y#A{Rg$TIAV}CGP&(`oZtmG@H&G0TIAY=~v1-|3| zf>nGKJ%TeF|8f`cMSPB!BdYSMysRiIQW5Z4KnH>TMEpL!KK%Zl5ulYgO1MlwhQbp9 z_B_}V;k|`>znl60zCRP)BX@*d+>h1-$!_`;jWLitHhJh)TQ?pDkvK4RV9rLU_ub^5cY)gcuuR zcZeOL9HBg+8}G&+vWG0GOe(+RUxssLWmDO_WG@*y3hNL)k{`*l;;g{)Kvo{+w4cOJ z;bVmEI~Acfv@!nlD~`J1$G5x3CqMXdeoyu57|TF-VZ%MZ?Csko-mb=Tqc+3 ze7ndm@|j|$KvyB|_Z#>Ij(a$=0&o)^%f?dsU}3h4@8Y-v?`3;gN5Ti<15sQSm(jFI zNaQ8*&WUrP4>ajoiCO;!&8JP)e4P%hY4Wbe!O zMO316EbR}cAgmk6CqCj-AZ za{jKX>k6~rF>}n|{y9}l74OP-%rn|oE^vpva~!cMhcKP$`1Fza9E*LiJOTjurhdJT934m~|~5S#cW4z7M6AnO3R^w5G| zHCN5A_Seu0jvWN@`*5Ge<3x7+R5LZqFFeE#(KY-Bj*NjOya`9{9Cj!0F<_qWOnn4- zSRVFFKMQ*Vkb7{AfP4Q$0`dWn`{xIKu+pqFX;d2Zz5bpO9vbMGW@f0Fypk(uuB_&ya_1=fMEo`4%ac0nJpj~HfoWKP060L=mJ z?$C8${!gNksKSIr)T02s1NKqS=+Dt}^ciy|%$dOR`C5Oi;aR|b3VR%S$dtA)lI^v7 zE%r0WXk5S+u)4f1N2dW^Gwgt{?|Gl_lz`rXa=aWzR^V6mD|!c%qOC}SF!v9=6aR1b z|JU}lyZ`_FeZ-b$q$g?kvN5Nf zB-ApsLVZ3w{mpbUJ(hazkgo@iG&JP!P2(>8r}&c+-75*?^~2kZY<|r9m24$a&{v}r zy+>g_I<(m62E_aY@BJ7%#%5#LLJj#mF;8&%z)s;)LLQrk)cx<<7OVx!N5D*-j1co?$FpDbYWdsFVoAwr+$sR`{*6SE&^SJxYLhfqZsCH^y49) zu$%2>a}$sQhu*p!gjH&lLI&MjGuKR^OnS`65dymIzO-Lj%<9nA<1r=Y$-|rh%+vGj ze2bYFJ%z}c|IB=5Qm_;ZixGUSN`!R;%(@Q<@X6Qn>-i4}`_w*lGwx}v>3Z_Endq8&Jd^6u53okKG%#lf$l7Kn8yXvmy6YzIS5}*TFqL=8FaV_KW z1bKqPgnp`@T4&dVxqaw6gfD+4Au9p;1I*p%JixDevYu=<0o{_H5^zIL%o2yMB{T+^ zOeTY!Ok=`*bDuTFn7Nr-;ry? z8iD&aX8o;vD}P8pE;@A4!wBdYK=yhk0%rbfJR6609A1BDw)cv?0{-xLHlAHbz#aj! z;jir1FdHB9Fj=zM33I|AZysH8&}-v{oW`aJ@AR0D%iHo6ng(dLk?V&Wdr@69%xyys zKDzO6k8jCa@@;Gz8(;_6R)l}-36KX+nSfoxWAc&X?_fsHLivBlLcrtyM1CR@dI`Nl z@{sho&ySnq24#p55fRY(V|Ij}f1a5~8;Oo)xEih!+r)N^8Dr3~u$Fr4U#gc1xrWd) z0N9ma|FMRxVaP><79TS|vK1y$pWzY03_U}G8_d?&EhHzrAgrW}e`MkWayz=p+5opq@@IK-deO4xZ%T(j~>JPgt>e! z@9K5++R1jZV5DFqkU^Nsuz)Y%@K)fy53dOH6wn*smOqJ4qC|(;9R3h|?@R1b=y@0^ zM@r~ZGEm!Nl!y`)c}0$$(>k^;?1aF35BY%TXM~2rBOpHlxexd=z=!iDH;Ew`Az?(u?Of) z8T;@n%-8evWILHQ3GpoQ>5(CijJ`Aa3?;a~(zyS&=k3EJICRY8#ttn*UY3`^zkohN z=)>XN-z|2FlD4FUHv;!ykA3U zr~l4=XOj@15nra4Y25tLmvEZ^%|EpBM+ig3Pyr7_G+_z>{d)K>9%lvu^y|1m!$$!9 z1n$-7G{CL?tU9YY68Yr36!|uLJDw9G^Ao~80mv>s94mm;=!a)Ld9@hyN zWTC-_7NiQHq$;V<>j)0;ywJsm_d&a$U65X<*H6q7Gu#fh&<-H?5#5EjvqKLt%}%rE zSw!a_yc6TZIDz*`Ho_u81yMm{m)T`y0{Z{pBf7kS&1s`6K>_ z5*<$Ss2`W}*WY1xgt>U|?33jBf0+N%=rnHrck{oS|Nra$XmZcoG2j?*3^)cH z1C9a5fMdWh;28Kn%s?$wOSKK!203&Ny^jE$_BnY@wj>Rd9H%)~Qs>;vHI$Gi^>{6ue}cTe7vi>T)f-D;TokyVesi_AS}*x_}@O&+=U z@bYJn86>;{@UtUdV6|Eu=DeNIC&H{d=+n~?ikhOPE~^`6;z5UwTs!=?3a=9S39_^7 z?5@76p}|LHJ2dw2x-YRyEVAmL6@Vt7t!-=3r;OBrpADNER z2+`Du09`%23h-g%usQ59v&^6m0{#KyPHc^Ajf|0F{7S&w2hB5d+iiFozL!wn ztM5IK52O+*^mJpkyJc<}_`RVohoAd4zs)gQql;~wSSJ>Fi##;5kGJE)+`WRjAf?PN z*XXXhVQ<)T>>RsCIBU+DTB4T7LO|vkbopBe=(KCk+Oy^a%++|z$b_p+D5XnjJZ@+i zz9h7|q?Wp>tr}+I!^hB$ zfc!h;1HhAynG$(@$eBYwA^6W|GunIRo{6=w79DuV{i{N_A9p`4zn|alOIR1I3w-6P z%zkDcxsDh{5BdlFVnMN>F5yE0vI3^)DH<7v@b2S{bif|4iwJm5=!NX8I;*mNSziPq z*sM0I)q1t|3CQEC8&@}OyT9FE5-bTy6LzUxY8s)mDQ%9c;|kdUeF@OYpR%XOT~WY( zPC(zm5CZl%+XxXG2|N4XtFJ}CjtBV@_$a^&gjs}*f<^(pFFXs#AcXH9zJM~ajNBX9 z8^JE2PNYuch&Uqpus$q~$MLTT_`r-09^oH>|KfWBasrWY_yzld;kCLzSS?lylFV^r=)Yi52I5RGMuT{2{X#?PP0O5<|{>L%k7;p?Y1{?#90mp!2z%k$$ z_}egmtbEKl@W`X@cguEAcag?Q**;PxwLnAm;EnJc_W{Y&Huhmkk|j_-M=9a?FCC@=tkokzFM7 zl6f6vN1220Hh-JLSH6qT+P1a>C@UVbAZEFv=BT;AE--vvDFSA0%-YMuGVzc)_~!HZ zJf%$;`s~x&^!6L`jj6Be>(O?!#Vn5bAAW|Vgg(3vYzG|q^LU=fC!8Xth}C>GPtKB) zJHL47yT{$TuqhmN*7-n=)* zy&wJa$g_XPzGH8z+X{1hUc&jf^KqH{On!I5%3x*iyZT+_@^ks<%tQVlb_90`@bwR+ zJOXqQBr=H%vIOuLq02}o(h21EFX2l#G8XZAKQfO@aRNTj6PS?jEg@x)G8jdGW(1jv z&}=|!fx9~PLq8Em8)P?w=KLp-?^Z`zhQzYI~ z*d;)}@iPIre&~$6ATP+Nk*SeJ@fyV|>y`CtM%9e^P5vhD@p~Lul+d0eBOnLhE&diq zPUTEOPM(uvH-ue;<(3o(llfh7SLF6`d&~K9j>o>3FXr(GbE#tiT8ne~oQ7^AtxZb` zgdE|&hgEhJy^HqQ^91NGkoSNc20Sz9yu|$<8JWnq{Kv=N=7)lNppF5@fMdWh;23ZW zI0hU8jseHOKP3a`O^3cco{1OE$;g6B$P%)oJSmU1(RPd8qA_zrV-MXuW+}`(oB3u^ z2h`&4Q|mf(-stGVeSQj`!oQW@h8b_j0l-Z46M;_Trio}GMzhiMRqC?Qd^Cq%eh?qT zanHy6)lc@5X$XaRVU9e0%xlGXF+P!iS+XhtbNpxgGinlCNgIgk`~iDFQ*sfOS!R|L zOUPnmjC{dfF!%v#6VR)N7p{(|Ba-kW9GQi^MQ?%oFtiHL@FQyvj|KY!+>k#Ybf7#z zd_8FIhp-`RuANJldIIerumgck9y$T+4NjR;=3Viw04K=LFC+?y=j=IqYMz=O^^ba% zKg<76f2d!m7iuHnDj~j!Z(0-3bvVn;vNd^4jxIyomQR|K2Kn;XvtUP&jL?wKg_HvM zc)sxQwqb2pGeSjM(N@xx^weN#ke2Y&f9fO4;Thpza4QPT%Fe9d2nx%^8q37NMIA#!PMF?mXGCE*cAq?JoZPp?IXu9tIcYo2p_Ny!fplZUC^y? z)}FQaFLL(ry(>^={~hXfj8kz6&llbYJhn&jkzD1i@`^?kjhYm1QoKFh9&dKk?5Hd9 ziYzC}iB7VUd_~AcSTEKK>@r&L7Ce*4BsLM=BOsgdinv0}11&{CSx|oLeeB`)peb1) zR)k&vX=V7FQkWE`IiajAYs(Sf4cSb9F5`;p|NE!>x#*shW56-s7;p?Y1{?#90mp!2 z;GdC!fovdye;fDo)poT-KN@b%tq7Rsp~*%sJ2LZe*DfZC3Hbl}i~a&LJUa5=@kVYs z{tHe0dbwVfB;Xc{`Tae@Y%|+*;+;a@HoOA8O>dK!fO!iu^=`RaBAb05;ex$jujy+V zzIf!cW2XLH{4TyC{6M{O$Yy`dUXvr>98He*SqWZ(FOUo5aLS&)DzD0nJR|Q+h#_F^ zL_Ygbaa5p(zPIYF;M2zMXQLj%6gGuLA0V^_m+fT>zddGcd~IacSEgKibkKiHfM$F% z+Z@j2$h${h9)2Hv^Uxi@;;;qH&HJYpzDvrnadb zehb*urn&PY)48vvR8WmuW;{yvY*V?}fkV(f`tYL=R2x|u#^j)gu6d=2aq z&@%w9J@N_g*g1&<&~=DiRU_7jofGH82Dw4P?_W5oaMWhGS>B7>i_DUa{0aegSbK6VPFgd;r|WH?d7@pV?>P>-ZX3ddLKbFXD?# zlnCU^;mSHq6DvQc3Vv87W#v9y;Z=R~*Sz<9;%#cgi z&-SzEvcrvjnO$bDnQP_?{sk{(OWEte^#EFOc+l~I`5$v_9#Z!&W6Kyc2JaIl64uBy z5}Ng&>`!*RS#OXjh#9dE0eXVZ2+%%!WR+SqbP zez`!N#0CQ1uQ&J&j{d<^GL@VlCWvqOx1?lwi(@Z=&qZdyG6MEWC1eSS_c1aVkOzQ& z3xoM!{))W{eGNTX&yaiMR^l8@ge(=jSwS5SKc+uEQB{e7y+Arf&KxWapcC~4h(Mr{P4)5rDC>5|r@RX2G=hGVqxN+m=kG;os0`d!R=ifj;mLaqVxkc_U z=K#6&@T%i3y+`lS%hhs~OefO;p(O!+j%+%cMh*aU_Ki(r^GEPU5UXORj3r}}&18CaEHn$)0tRo$O9FiR-|BBQ_9B>#GuRBI zdMIj}nP#RbVIHB6?xT_US5wp!3;DvZ2eP)PE#L{*uD6G|hiBLs_B8>X{AT23_}YGL zv4=tCB)kvsTp&~7usLktIeTWFTM%fNTi21NhJU>E^z-W56-s7;p?Y1{?#90mp!2z%lS| z8GwHIDrEp--cL)NaY+f#Wn->I_E~4$In3b4?KOc(V6qTqP|qAR^tg{gH=mBD*}F8VNTFgI@!PvUeDH}#QhcF4&l5$uc7hB?f~Bl^J^E= z#Vk|H)JD6}VlLehYzdIP2jF>UA*5I7$zdL+@Z7djryDx%ZnN90geV~}7ehyYJq3CK zkR1Tccn-pLww-O&TXjc5a*^Gows7F`r{lWeqJpprf<)Ctyxexz;0>atg zY;d0NLch>IlD;4Q`bM^q9c4zD>*Nu*r|)U(U66B#ym@pZqOTwa%fawpR!vi@u8nqgl3&-!PL?^BZU^5Ip8*3o*a+Nz4`qM-``uNyK5u9Hq81pzt(%<`A? zC5^oTdFar$c|2OOn3rt{++N1O;#t-*Jli6hUf&C!N z@jt{5@e~Bi>h(o^f%|xS-CoyXwZiOuWdGHtUcT?xcWj&;XIGdN26+d#&10U{gsEmK zsSfHGE$-g(>n~dbUpCjgo;oflXlsqL1i^2joTWIKSknVf0 z*eharEU5@u@dpIVm6dsAjyr5wLI(nL;>c4+MqCL3?%x@B29CSCM}TG@{q5-ATftX^ z`t5qG9{YxW!!hfkyB_m<7uJPgj>OHs66NEauqVRV4Sj+?+8;x2`8eux8>|QGPt~WY zg02vH(u>>Tq1NFzJI>H$fcyev*dg~FH{QCUE;%3i3*-yp1KIiTPkbUi5y&J2cjzF5 zFJYh>s3!Z9{gH%wgtBpE zs80YMis@`RLv8}*;S2hLuAnNY5A+B6vbwCw5#YQ3L;azunyO~6+N-t`7Td-4iF%^y z67X?{fK2~wdRwTA!2S9p0rP(=>b%Dd9^U&hge26Nx0PD&y0h*K9tAwUrE;mnPGOpv zW{`8}8P7lmg7-ubQ^eG@b;H*H8hqsWZ6(YWv&B>b=6&odaI?qfpx^KuKgW?n0Zqbw zy`S0-9_TEzdzfOU*jMIN*pskGFADcW(2w9gzdo`)l29g;*e`rVfKcO>xFw2sMZ61y z2z@9|dAVdR`C7adO}(bxL-|lnBfKCK_6mFXWIhRP1iT*5DO4tm;3Ie@nMwBLeK~Xw z`6$=&jeet%0fDRq^d%tsAHA0@`~UCqQ_ek3$ADwNG2j?*3^)cH1C9a5fMWm*Y_VJH zJLVm;&2F<(%oI~vm)0{0$S{Lv{&V&@gXS99_RxmUqV9Bxi`NBMfv`{gANTo+x}wI{ zy2`JHx$5#@AM6hn{_P5)f_R6}Q}&d%`E8DlH+bBU zhhIatS+&&H`K@KX9AaCfZV`A@2Vp*~qZhu9NPh7pMhcZvGK{M0Zx575)r=A6|>0 zMQgE{ zFv(7`$ZyO;KyO0_0z47m8#{slgg?ALJnUZ36$$?cx(2`-@(3d)VovB2^bGE69`+8z zm>6?{onS>o5iwm(mw3CJh`bz8U zAp)Mi%K>yhOC1A_0mp!2z%k$$a11yG90QJlzXJmk>;wz#JMPl($){GSRY6@)cQ@S) zI_{CTc8Oi0cK9Dz1yjKU4eq#y*dg{zJQMI_uVSkh`qXj}s^}^@i_Kz3=n=ZC zDQoiDycSw@>=T=t z=jQNYk2PZrj=fv-7QKUjEW88ufNerRj(!8e3qnUiHB~Lt#>3~1dw)$+(;yFTy~ znv4cF?p6eJ2ma1}XI*VqTiH}L*m+Dh(+zy<@Ix$T%h?nDg#V%cpwC>d;U`B{0KDz+ zQe-t*O+{5v;f9Zl0A%^$*Qsr4ix(d^<7ehs_}HefDQqcU%5RFB)JT6tK-WIjjs2S#0&O<;kkf+_zjS^P=YcP!^}O_l&v_{$A93QCq#O z-Yh`lC=1FQksOf*UIQ;p{50_|#k&;mqIc0N6ICW^iZ{i3 zCZEYy;*}T!M2(4BE|<%OqM_&@J4omj&_{sWM7%D@2|%V_W-qgcy-r@9m$p1_^Kb39 zVb|kLd()!t5giekspk(mjmreZ6zfiT`*@$U;4Sz7LS~jZywf9-0zC-R#5A!`E|eL( z3?6(4UyHB99=|fY44)t;gr1YpVzf9Y56XRnydtkahXnpVa{k|E?}vGm$S6SfLq?rZ zpR_0KS?XU*WD}86Wu8U$Kk^mu*e;n%lx`4E1IBp+56EW(WK0=dmxSh$ADwNG2j?*3^)cH1C9a5z`rm64SdOm2G8<@FF~;&1mKb!}K1Qt*!qd*HC!h-c%4+4sni zuOsWoZ`d~s&js^hF=XV8ZztQyYwQ}65gBPNnhU%`J{6w| z%(9q^p>TcT?R|+o=x#Gj?%SoW0a9^=m?TR-Pg65IF_dsSF{Yt6+^? zV+-@b95X&%e`GG)BGh0t*nY8JBqod`oRBBvR6;M_iyxvcio4!jFD*|S<|tzSfv=C9 z(Ghh-E!9hPCIUPQ_&S5cAOY_SbSvk z8ECFh2Oqrn@M0rZuZFB4-{J3Y=>DsjYLrk{(ZsS?*4nfVZ>1f1M~?Y&F<;D=vZZV) zpUQja9{K=bU$8Gg9v@~a`0{ZdF3n4a`GU1s?XVl5tSxIXN1`-6nng3*d(%eJMiLS* z`yY`=mwN_A05t-Ys?z+3!yv#T>~%t7k=xYbpWkH zw2ii9Sy_fVdPBls!Z0?BVV*@cT`~gv4Y(5{dk>EpzIt>FB7+b*f##;UL6^ZczKw4b z8wGY8$Opi!82tk8+IKCw;+pYh)Q}kAJ^`~UGWp;wNADf75OCi|K0SKr`+9vnbj{Bt z+$G#0?3H`vOZJk1GvxIRC;Ub@W6y;92lNBtx#06kijrcLTqR>fjHpFe5Vauc2f|J7 zriY$_I)w4wcn_ZV`|Li$?xeb?E~0rfKWR>yhvK1_$R~z3`*y4y>ur16?+D0Gc+4Mj zc;yj%>Lt4C z?iyK;)p#|Io`LrW*Z8$CUm%ywWsxI+UCw+ypJT6tK7`NMXAC`zn7^TMSj|?mr{Za- z5yAXEL(Y&l#0_ze-DB?(x(I^p5_TvcXYyzEGyB4RVYBM2Va5V>SQ~;30W$xfi$D(L zOg@uT1!XvPN=;Z3hAhhz)Ro{m{r+k{#oXg@3^)cH1C9a5fMdWh;23ZWI0pVb4D>KP zOh!MWKatQ#HBx5?=!yG@kXPr`1%rY?W}R8TN5K3J-T(XcecMPk(lLIF|2%jeR3+fv zjcz&Y4UVy6)bbXe)#9}{^xMeh$6X(qbw-75*cZI8FYIjsdi2njj=2_d<`TU`4+5t5iBW+(w#ee~4-W`DEm&3e<<_O(yVQ-j{Z zKCDmJ1+bQ_4Kx1mJ)%sMSx9~Lu{PG0Hl+=A08LF((@M9}2h0Iel9dcQ?vnDP)R2%d z>^?|oQ(E*J;+~HAdo&x(w9q0W;gomE`<#Cs-kZ1c?YuwXSMjT8BAdwlY(H&UV%ZMD zHUhpEbm-_ggk}P>GBOqmi9%u_p`xrPFGpRDibpu;9rOl>0hD$>QSA5jd(i!(&mQ}S z+M>3=t_2wm$nl3Z0{M1p`C1Om!zRKU!gw)W%=hMd$k>CXA31^8M?l|!%*gG8$pp;I z$Lz7tgMmJVci1~@x8ALxCHa(p%I^|($z2jV8~8mQum|imWj_ujAQu8TfBVcnGnatZ z`62a3B8$+Y4u}W=j~)90bTFzbJuh8 z+|1YW!~Q$WF__=Z>+>3YZ19@ne!h*m;##m4;Vt*LKCV|04h9E<`h+%w`nJABZ`%kv z!nWqE`4{X9)|>a{$e)L1I;~9`>hXV3zbJU)GgAIMyaLdu<9jx@&8b12ppQ~2z(5^s zq78KS@YzGRJ(%#F_)h#Lf1^hC!xG(Vj|p$g8%iatVBYXIe3#v2(OZ9AU)SwTdxJef zNmWu6G6c$ff2PlHdx$DBkb(a<-P3CaZT5bCS?>NMd7CC%fWkFSM(JF1XViFIQA z4WYGdZ5y#htgUHlup5|9_)veSV+ip4Lo z3<-Vt*gYY)AD$9uANJTib`xO-0saJZ1)>W8pF4()3AF)utRL}@h>e%Lq1Vt`DwdK$ z;Hl{5b@TAOhMVCAnHG4Q*nOnq={R%(hY2Jzk>3#-QpN#%3CNGYdlY#P_#S%+=Lpcs zU=Z*c-3qlrP1n=)F?Ecbd{5-Vg1fV&$6_zy0y3+#RKzCj-0G&{|9WnCE)EWDRPM~=a8rCu5C zRceSD0-f^6I)om+rEDqld-*-=Q!qbbo`kO)b1$+I>ht=12Ajd6M3lHkKu#d$;dZ8- zDMEn1{t~~$k&X9|KO}{GSH2*!Ao3*vvws`jh9@V$k1&>vCH4P(mQW-Vu`*V66I;M_UYL{AM^qmvuL|fTbA|GLh93pY=#yo!19Hni{8*_jk z;Lr+S9|8{HpND3@im4LrbPn=^92$IR2fz<<4zUM94gv1?6A5@9qHhnG6X>6S?gD;$ zbn`tl56uKZW&(T($YlJ)eqt+$N+KK2#ybmV6KPX0r~{Y z@5nC1>ywp$`+sxUTvjF|^OAXA5|YRy64`@C*b#Da^dm<^JN6-=5CQ#@&j0_v`U&Iy z%rW2?a11yG90QI4$ADwNG2j^Zt1y7s3V!>fCMivLbqqS&tFdaVoGwQjfh)S5YNwtA zPl8f@DZgM`!MNmalD~PRI_?3{~E$p18}^=b_-KJLr8f?PpaLL1#il7ay^U(4 zUJ^diAL#|bf}o4v#a~XH0|f}x2{+A6lV9f#^%1w#ZMB1NO<&U(E}=z$j~=@N^aIO_)7vbDkDGS4NViCR!f|n2^x!@CL3WT`6W7FQzM7x5r|lFzg*T85WWWRdhxmi0`*VV9 z8Y~k5w{U1G;ERA30pAz?giDc2k^B5UUnABC?0BGQz#Sj&>*`*0FP6vhs-mj+gZ&Y9 zK%A9lC0@Hf#h+o8V;|W^7WayKd-$HPXCb@HE{lue0vi8w>>L}#M}?0KJBEZ_Lhmg? zVOdz_j^vKuj(?S3YlyB8^NV zp|2Q3*iGF7$OtTK3x^yZpxy#xOw90RczXyfqgqBC@(y`(BXc9Q3D}8z#y{iN*>!4a zm_mw{FR9_6A*CIZVtEMQ$7%onDnHTO<8TZ(1{?#90mp!2z%k$$a11yG{$~tKWE0t4 zdzVz?Gi`Ok1U`Yo!<^hEw-iBd;KOf5D6LAXIzgSFq2CZO`2M%*Th+nu;GYf72IW!>t<~eYkxiN3gr< zt}t7lAYi``pKyqf#-_2HfZf2=xT|pw)B}ZG13dlcgM&`sUHz_xPGYv2tGB4}Kk9C(O);ZUTE3i;nef6sWv`&Irb zi;AM+A|Vk^#J?o0lq=;FF-6=lcMLokf(w339+TI+Yu=xP$x)M|BJ}Y+VId*Pi}J9S zK<4E%HZAObz`hB3g@Ob;Z{%YpBOuQK9RS$dcm$FagrF$P5dX7(hwk?s1C9a5fMdWh z;23ZWI0hU8jseHOe>4LV*aU|AF=qXpgtEMBcw;#VUi36caC%|(M{)v&$^<1rn)53YmD_O?QI~`Bi)s$2}SIGQ8qX`O{GM4le-m0^qAhuO4#wG1JfG zb9qU^+vaV9jDdxEp&n<)QA)shi(I^0<`yOMl{PO4$Z(%zCYb`ZfW6`0@Sg?Gf@OqJ zdX&bLhJ3@Kgh_gmzOJq-`1{dkhd#tI1mx183jp)*j9^Ca5g{Al3ZaQ^qF)eVOpL+Y z51mA7LRZyQ9U{OxkkjU*?_40%ooA+e#G0n2DX+`xnye;6cfe_JTELsIgn+I@WGP}# zve+y(Em=!S`7ax4>yd+q+xgA$ItO(BAHmn*M&L*^z>myFQSWR?1&KT|C9HV_nPonJQf!s z7b3`ez}!Akj+EHPOy-k0W?&4w;1jy}SK^hx{XCbEyEZ$VEQZ!o!aoHh9L-;oeboRNI5?!9stbf0?i#Zb95+e=_~Q zh5oVNSdhWb;HM>&4oU~e?T1DHdHg@?pY;>_#3GX)^K3;?Q9#e$gwR2E(5X}^YONor z66%DyKC91Yq_peRdezVLGwF4DjSM;5YLUB-96of>pXR4IeAk>l;M=ZEKz2LkbmCgB-*63DH4xFoAGR zol_l52Q%Cbx5)PQ2(78t@CX6l6WND12*?wJPGM{?Hpoo?FW(aOQNQ6xHB#Xg51&H~ z0_Ojos%O|caFsd%_n18fUmF^T>1;ZK?m-)Epu_JhI*UPaki?9RT}6A_-hM@hHL<3J zZlUp7AuA9wKRogW^+ElXdP}YLSNj{|HpXE;1Mfygo6)u+V5UZwz&5)r%%>}$3+Va; zcWFo?=pNzT_k%KI+~_eAV;?bJ%ooUY#NWqGCY#Qt(eaRzX1)Gtqvt-(0X4 zY+}MLzAMa66IR#;rhyrt1}NOY;Rooi`|HmM=mj`Nz^xu$clh>;^Wr?r@2CED++uOF z#a;Ok0rMX6@}bGcjXl50uf8Kd1Au(_C>v$bHwZm`2Ax4;ZiVi)@dfBRoD&i4)#Lg0S5|Gyp%{T7q$g{&P;V3^!ZSJ>uw1^fp37hR^ zQoZL4JMUBI6uJ-r+WOD!=k}htN6C1?;AXtr>^AVbU*T86UO?P|7gCQswC>~Cc!tjT zXZBgRtH^KjQ%hc6YA?th=Eqmy6?g`dA@teTv^B##dSnF5r%ZxDgq%7jHPG+Y=cu>s zEa99vXTJYe%+xdW7PG~SBcL+?*>2cv8} z(D37Voh58FTMatw)9G~jWA!mz{(CCi?EC3{`mi}{;7ORP=Z5`**pI+RkLUc*d+6<# z`@_34a{i9eE(QAbSOT>3(7Z!yzR7Gd32Xw3{Qhg|ni>!c2oe&aDXVaEusOgD9leh5 z-EShGI{+F9yqTY?=ixpFxq(dyaR7A;;A_M0G0KbzGY`Lm8gcf3+m?zfSwc-6A?-jgv-nH*q zbV|Zwa-Oi6Z|0f3%-$BUg<2t63S==P&GJ?2LQbk z&;!5=0k{vxfMdWh;23ZWI0hU8jseGjW56-+pTWRW`;;czE|%i@d2%ngmnM=XlFQ5G zA-5eJX~^(H7GGBCIfLeVupMmiXTRECDfRuLt;{Niy?WF5G>&|Ds)XEpN;3=sT1EI7nY0 zlrp9M`^<;gaytQD0p#ZmHiOAcUzfH5=S+XrpPeLhGu;d{@;>1z0oed}&fyHt=CUnn zi&{%aqtk?W26xmQ1-&^k6ff(`8l8FY#INCN_+&PjEg@9n)k1#-bPglL2!UA|-=l-q z!OJePi*W>G$w8lw*%rD9XwI?2sAj5}csibLMZg>kO@6VUSP(xhe%#tOYu}9YNBYQ6 zgfAVBu{x{HHt|jTuDNTb*eQ0K-ljJa;L%v8)`gh_(7)sB-Vg2vL(C9Tck~If2dK&+ z%!PQNUQiQ4XEi1m6TtgWN7NC>jX=&JUh~X4vmQXe&S0@#tdWg?9T0j3kTHM`!8iO3 zhi~ALxFpc!0H6OYd&|zzb2PFTM#)h!zsN5}v(XGY1MmlpK3*T}64HzG0>8JAa{AY^ z_3RV#iOFa4*=y#S8E?ni8iewqyjV{7itx;P=4})kMP8X#7T^VV3&KTqk;TXud5bVt z%oRVfAL-q4SX{~15Q-1l@0I0hU8jseGjW56-s7;p?Y2L8Pa^tb(~X)lMJ&*$^Ga;{wB zE%D%eMuyyD{+LH(MCSGKdJz#30|`A?4>p_+=g8IXLimP&4)!5@2yaZl@1gTO2~R?f z{MQ__QDIZqU@lHYK*t_3@zIy}H38jrckCTIPtVivW5W+V$PTjDJ76w@#~gFre`D`0 zfUP>SZqZNHMuG%)2^!o9?jaB~xI=*85F{i7g1dy^?(PtR1Pku&?iSqbto6y8V|Deb zSNGkzx9?w_>f8N)XH<35^pU;C-khpA=Mc=9n1hj{--v*@v79MqN)p!UwHjIg+*WaC zzoM^b-1Tw0|K0paBVa^&$#+1nqLz-H_+rg#K(+`{Q(~9Idx9` zqJPnks2d;ydE8r?mZrY0udAtQ>T=ZOs6u`r|FL?k3Iqj$qyAAJ{&?&gIu%crBilfZfb#d)n3@fX_*0l1VO-i?lo~M=t_&Cg^-jZ`0d`x}gsDE&Kw%Wp7#d z`mxi9VPjZiN8~cO!o5*r)7Ye=T)?KHsnA^WYu+^v{e!sK=U_P)-k*UDEV2#z5~>mU zus-3vANTszcD3zCz)q&K=q#EMvdio;Yb0xAv^U!OAU{a-2wvq^sUfozzeSyva|rnN zfW88k1Ne{r#&MtL7;p?Y1{?#90mp!2z%k$$a18vb7(mB-YQg|MfTREHRpeFV4FRI% z%i^*~B~!@*-U08qd@k3Cbz(7F%!=`199nB+^xtN;>2DUZnPMijwEZDk6Oj8qg-;>X z`6X&}tIv_=kKBMnl)-mVT~z6V^g$dQC!B+C+uL>u0ebk<)XRtd!8{_5i0j4mO3IRQ z7hw}2KLI^}c?r zNUPIQvcWiNB-pQS1UG`{Cc1%Epc#1v@V#+AUtks(^!!0@fULx4`kBUk`j)w6rm!h2 zflXky>a7|#@>nL8`Obc4qeK)bCn^eP*!L2k5kE>uE7MBsJMcMk)m*hL*cM<$$8Eg@ z0rzS2_q7l$1O{m6){&=&xpgQX8s^w#*V*-R^<1sgD|K7b)}W8ERaC2}-0yS0?@5U1 z$MjFD(<-G&X$tCs8uR;6bJWmyuezCT=92mwehz*Pu#=e=%nOnclB?vZso&IppR2?!x%pFPT=QC!dy8w z?2$x|z#IOCS|et2bSt1Y06VKaY!5>RVn^PQe=EP0BMIM%Zz&bLJ4%tq%n$wdKt7P~X1m!8^14HxpIW3A zclaHyt+r3iQ}dJk$zCNKGsny}wJp3U!$TfBh#larUYW4TZn9Yk1NA_C&>pm@L@JR^ zrjzr%`5yELxx8FnC)r7k;-fHz)3l$KXJuL0L;KL;mOfj}R=e~rJ&2IpCbybCb_6>D z`1~=;cO`TPIs};rGu2GhPxsUC4Rq06H16Lk)k^he@Mkd0ALj2NpbIdmNovq}hdCcT zh6f4NbT$36`Po1_k9q%3^`}B6|J-11P)F5KNrEInGLw;Ik?#XwH-J-B8ESHL<^rzh-tIR5g^WhwNlkU7bpCBfPGF}-E zd#glVA}=Wcngi?tE|3NR`ziQe&|mN)p$?%q0soG$zk+84J_YCh|6l#qasQuVz%k$$ za11yG90QI4$ADwNG4QWo05gk6cuZL5t@9Q|7DdhyeBp~rglqDe?BI3qZtxo%*?$=+ zYY(#;wCZQ=S;)LCvgGpH{1*N7e-fJ5CKk7T+<%+f=Jq%9n<+*3K!Bb*jY^|1^CFKA zIePF-W8Tiqb93~>$MNELe-OGxx<)J&-VGPS#YujWca>e`HUhfp9}}9grVQG0^agl@ zwzjQJZjze>DnY3AM>im5#Wt#qYD7q)lW5$vaqk^&hMU@y&DWPuHYgk9Qn^%#phVD_ zfDS?AB7SYZw(|(cCB%%4Jw{v|SLZZ2!`T%xHueuE2>pZpL3LFfbSPx*Md#7^HGNGF zFatuLdODlV?&Lc;wCm7ZK=(i2pYNj&p_l1ph7it)a{~H+R$eO)Jq&l)o$v;pi?RXG zU61>HLYRm0rC)_!ZhMO2F@=m79Mpq(ho$};#W5CVXobH!XSomeMU ziB}45;NPk5)JlJ)zdl$WbWvRtUSs@SKAX?>AiyK=m~c0^8x%1`LQe#|7Vtq}H!x96 z4ErSum;wejf9x3wsX}UZusdLisZ+tJ;J&)A;7|Elf2{`vg92ndV29uqNpbu#5O_0X`T?F_?w;`S%Jp6dy+$6*zY+xH$ zOc7Izup{hz%D;r}BqiascrD<2sY%$+_OqV}=%Xx8$V)&z2KFo1MZ_k=AmHB!{%yJZ zzkkJVHup0f1C9a5fMdWh;23ZWI0hU8j)DJ?0nGpKv16vm9?2f*;&t)5$!-$f{grm5 zg+BV0xFznfd*M8@!E7+N!JndDd1TxDN!UQZJs9`hd19W($MexebvQ3WNJfBO9NmKW zoL}{?p|2dBgO~MXorPx!bL61|$S$&rUb2@g?UknH^{XCkxVXh))?ZJMp7hcY;>-Bq zJO=H-Tszl7TmH(vvJ0qBKBkQs=DEXn4vhlx^5HShYxCOr1b78L5+4a<7v|UbHRkX! z!I&VM%BETqzM)J&%(CE+pF$d&#-b+yx%aryKiALo4+QKcwg=lufsiD)L_jv)Gy9A#_=|0n zj?%xXU#V%~rb3=!Wn0-IivXE{(DhTSp?{B1MwLpBthLvGA z%}oPs0W=iFd2v2Z&XYs!P)horNt=>%Hnxtfkvp(lFV}c~*0QxM_5{%Qjh*^di0J zM!SbGgpa+Cy@!M=@`^5Y!^fB8#3PUyqB3}rZizuuqe#c>w!c<-9x`K?@VHwn9}koFP{L9 zKW_cMvERa6K4i`zv;K*FLdx_g+n6Y%!$FHySSFX8;ZE7(QO`{Due_mHKC9tC9LWz-pU29-gLCro0KSPGjWoUIcFiGz29 z9)v1>6@OwdG1x~~Wmj3;#Ba;n@+x5ho4{reD%y&68{5Y66QF^|eh68Lukd)o`v+w6!CR5hWHjA%ciq@FwuN=!(91A6>Tf`v;}|o>Ea%HPG8eko zE*6;y=slN77l;^_;>i7;2xu6z%k$$a11yG90QI4 z$ADwNG4P+s0J83KvYe!ZF3aji>PK+H#SAxqfLrbp@kAVx$0TMxXrqz$kFLEh*_Z57 z`zblu$J@Px-UQ6Y@KwKIZ`d?DEz|>`%daH?b8j}AE!3YwGY=g$X6;x!7VpV=vh8-e zEhEZ^?y|dFPFO@(>@D^>%8umLE-bT%ETSwSri>{Ii9$5RR}<)j-)VLlWU(#POLbP0 zm74D#8tA<-Z^N&Ek7Bx*PGXbT8mtCOAySALge&$+INM{+N8a6WeO%WeL`=kBSAl&2 za@=r_$4$C5YaR9=;_i>RvmI;4(u%aA94{BM6V};v7Ozzf0&*T!@D=rn9mE(yH$q_oc0>4i@K<2Zf$oNRYF?Q6fc`<`7pBo^sKubSK0qCj&?R&x ztRiez+toZhPY*N0Odg(xqbm^m0QfoP>-l;Jp|-7U@tQ3OmIS5!(th8lzEK@@M_rOS zA)w7bhTv^;+n{su3?Zh9seaTy>gJ|7B@|9E*i{{3huA(%Q2SH|>ZnB4!d1$wXr`O# zCDejg&(;fd2klI|uvap(&1^dp;H!XU1)2tYK6EhX(tJZe_9XfuVFq#Y|9|H1P4}!E z1C9a5fMdWh;23ZWI0hU8|Beix?+u;p+X=|+-(t7ex9lzJ#d~pNxZ#$H+xKhzTH`)k znb1f#(v?&tmC8@$CsYYliXcUB$-m@#ffvkDvy>ndBfQt|G5%=WZjrgaQ}5J!f<3_l z!teTbjVwTT>$8!EzbGLli^<@T-$B5vi7fYuvZCxueQof=S0G?EZ9!;DfERrmwZ9=- zE}c%Nkv9k(_c?t|Bd1^_8_D2P$fa}X*fzGsjGkB|7E=lE^}_?Oh`Q|XIH{7*U@nL6 z8@K9ZY#CjtuTsm~Ee3BmdfqTo?=U+I_82<|*hAdrx9RHNiLYU67_t)3llZy(TtY{F z&0I6<378FWM;|N3id;MwpG80iz(C48gl7WtHTD(tWqoLC?Y1xi4yq?!wK+J6gGtovIHs-(3kgta{IA2s!6~c-9z*c zg>7NG*X%_-q{%`+Mj&2~`{KTM!k#enR6th(O-4;tGt8gFz5*Eoqt$5Dm~g}1uz3F8 z%kO1uLMzsa;rpR)FuhK%amz<1M0G+9QA2cQo#`2DVDKK`hW`iugKr{0?||3fH$p;| zkWI3a>=MFO0^T?G2u}&f7kE!_^Zvi%Z$I~#9RrR5$ADwNG2j?*3^)cH1OL4kK$bmn z>Y#nb{e3ZC%nOQw;!E#K5B_t^N6Yv!KF7|n^VNJci0~czF7(t#sVIf{d$C%qaAUql zeR3D|Mg2;>QWpr{m~TuKLS0suJuy!V=F|(ph2Sj#yMV1~t4d@OS?K9;8%CcS=KTNf z{Qsr=(#`*F{&(~Lf3IIl?%6s990QI4$ADwNG2j?*3^)cH1AhSn@SzV31_sDJUoBV5 zKe3+}de@MjR>%|z`{&QA^Qx3CrH`xQ3R!#bbE7W+`sr1C6<FE9uP?GsQSQj-&q#H*R`Bj$)HC<{vH(I3f2@-6is^dx*^zp=AxelYP&^dqdW1$}pc!a#+uRlz_fzdui@nfoeOoWE3#{RW|0(_y(Fu6%9*75`z1QAD z_9N9CvSaF)f{&q_?PhZl@b&kooAEkfybVz6xkbkP`vVzz6<;BkK~+7uf*FV0gx#@dt#P>}IG5!Tt+g5@a$UD-rn) z=tXqBe}BO*DEBQL1C9a5fMdWh;23ZWI0hU8j)8v~1IUj%<{$IXZGVs-&?gUV zH1g{5v3$(q9*6#UuimRKtIKK>8^yNiZDD`gr{+_$KrK++bT{3Cuv9Ho=z>Sq8gBf3 zZC`tg9b@os``XtV)kd{T@6tC3m{+sg?6!$%Vu};cn}*x}9zt9~UXfQ|C(%$e3_bhj z_&JU|fr7js$44vCN}y-$fqh_$>Y^Hbgnf7)zDBRnscb4+ja3V?_Ms(*hyMb*z{<<= zasmOJZtul=(Vy^%_ldVrZj^TffwJDAyGQpPX2;S5^w}Yk9=i20c8tw$@|(4Gtwn!) zbJ<+xAoL+jh)jsw^lo}}WF0w}59Y`;L=PYG4-OKJh$A8~Pt4m92H8P2x5;hL2Y}f% z9*@UqmEzsw_xJ_xg4aYgAw_*V3D3bN;uBF+7M0N3BQGEGIx_Os5y}yesfaFs5d?TC zuyc8)pK0toju0>x<8h;l5gL2!agFw2jDZe&K>qCVs^*A06qcuCa_~kk0Qg>FXVk~`2|s7F9Q$Pd8@yQIx-4OVkRp`jMfBth^kA%LMrE zkxiGDdijvCKT3^Kr_3n>pZ@?gKw)M?reI0}y5itPNXODqQh(#H*R8UsEHGQ2CVWqT zHUQ5B*?G9nBV!;wp&H?hd1Eje7iNXoC_BpHd#|A`!(C#RXeOIUI>C#Xa;7XEDISR% zEp9aYH?j-hr6@yPcesh?5qZMTSPBqU%yg{L074iQa6lk`z3QYlj1tM0v) zujN^OmZOj11>q0&2Ww0Cng7h^63}ml-2rmykTZx~OicoE65x5yM?H)Q2+&yI@nXh@ zjsZ9KPK2hsDc{1jupNXLB8F(d8}O6zr0ni>_l6NV5+1UL3}5p*0Xq+9B|ayhTVcAM zuJOP3h&>{$Oe=?qq2Yc5ck{RMt?Vp1Q;R_oF@>`B(DT@XfLsYJbf~|u%(7CVlz2v1 z8(ACqLHr=_obbJSnO>%?ZEKISF%bx!Cos9&&0D)tKUw$(;gz=eUM+| z7kE98hp<2{kjQe(%ky$%3FaWgCnOUR@6veVDJ28HY~!2kZemLcmPFTr4NmK|_Jt zHhK*g@C6*RA+-I-8EnKFv7g1yqP1)-p?4oI$IFV5ijn7pK7=S4B{3JnAAos1BVm)= zB)1U)5eVc8V%LFL7dP?&d;s4Z*&LZ9CW!~~fo$is^LEKy@*=;;AIrz`ws+gZJ^E|H zFg}dWB&;O-!hT`DnqMh}VVfC6SV({do?CA5{BGG>7QPJpJ@oIGtFiY$=i_ufoty?zA)vxFIa>!<_ZB%v&!605|aW|jBr-a>s9U~nh;5(5_BinpkqOw!Ab)33fBnGoxro= zGXMYSzn0uLbPPBK90QI4$ADwNG2j?*3^)e<0tP0TNu~|~H*NHl!C&1=_tLn9Leq@w ze#~*u{iBmDd5}CfY!BPDdM&l8CDqW2lf_%NCyWWk&_zFHuu`p5=c3LO;6KtRa|wS@FsW@98!l=1zkbo>xQzS3|Z}YSRRI3Z(f;KqH_+w1c0or)v5>P}z=;6nlm|y4DO9)@sFYIMPHlB^2W9L|T zTi#yh*E#Or+s$@^EcX=zbj(BZ4No_`>gaWcFFuxtCGPY49QR^q&XI?|Kr9gB32O-b zz5d>q$e0Kg8F6J?nM33d$dj)p>WN?ZuRNuf(#tF}%dVoUz|FdeZDNs8aFH;QkK_j; z2O__UUqv)8n%9}IPOg)AY#w`!U*m0MTZwx;at7dgK!+hR0&ru0MNaq+gm1;SVIRQ= zIYMq^8(DUdT_95cJS`^VBA^oikNG=7uSl=R5^ssOAhIBmkWj)a;T4J$ik$FHco7+q zKZ+kkNdo#Fk;kx+faf8YV9-WjuY$bB&2qCWP56S4+$JZb!5X_ttP=3cZ|0lByZa0N zf+OSq3cJD#0UCV8Rj38nFZav*(eg*bt$weE#@((3Zrv@oilKIxn#c!CngQC)Wk=7yM#!-_kMQ7;p?Y z1{?#90mp!2z%k$$_@^^aOV`q|37J)9g*m>pX>CrZ6Do~KW5yD?5RloH-lR7T2rYw_ z!E5RQ93PAimPRd&%BgeeEJ2pwd-c7F7DNk@`bm9w1#*7K`QZ`aW$-dsOIV>+r~&=} zzX1XF|8Lc|Y8&Bla5<=>>V#T?IzgQPn(sckk48rTX8RaC2FGpxiF!iK@$=M#U_#JN zx6|m8``CVLztP{&Bgm;w`KSDZLBimKKB2$xzwn_?7)Lk~90@x59sT!&nyMxxOw`E0%;vLjMbmXzOn-+LDcU(2s$Fh6=biK7 z6Ou)eMK*hzy?5drwfS`tpAn$hhgQEE@5XUc@60>%-307N9`naMolGZRikIRQU|yLG zc7q)#1`23HaDRul9(fKs3Fsw^BGeUiMH-nV)M1Ph@LIWj4na!Xz+f-9t1zT952UD5_Yj&><~Z1lh`CSok%B&dPP0l|KAe|hyntck_}`7 ziCqSGnnu75tCp!{uus4~V7i*FCK8}E=s`$fQ-nVg&joXSTAr4F%f6-biEiWsD9v&b z(h{5(;Gh00$$dk|fMdWh;23ZWI0hU8jseGjW8g1hpt7#4(bacJU($2!+)y)**>X8y zFW<`-u|*6T=%s8a{cR#ng!_DkpU0?0DKU*_u>P&1lS88x3IJ7tdg3f20iik zT=?h{iA3T{>MMi~9`kh*!gMiRTp=J^akw|!TP0V?o8qRp&+fAi_Jf6Qy)PkwNFY*0 zOBL;iJR)&_haP^Y94dR*9yS-x#cLCiv*clpAifrJG`{u|0&){$^VmF}$S10@s_cfi zA&{#$(M&XW&d6K*U_O{z1mxUr7MrQLz!SM5xguq}GTwE-*C!+;#FDY(MZyHaSORt$cszH-U6F#P;LQlL&1^HC zjc08|TQQc64f7SQimM{Im)tu~_(FUk%6a8HMF9N+^8KJO z!Q7vUfUN)hYCk1cE>-YIoFicO1iuAl|J`gitHo<^)QGq;S#&_|IR~u*LR9sP^>CA{k%v&SsF;>~n3 zjeP*}=J)&ieP{{l5b$#`yTkhrT|XW#=Icx>6NAsbtM00k5O7-7;EUuU zy1vJjTgBFJW<@tZ1p;Q)t=?7-x^ye7fSw-SbvjU$aC zn0-guk@k1?JL_$Ghna}jM_eV~u|Us%jR3zoat5l&Y7+b*UjSMS>?-CFkl*-NJyr#E zK`pJc=*L5zK?*O02hDyhua=jJFhx$0i@n8Otw^oNY&kpZU3??ni1`HQ6K)fr;m6!x zmym=IN5+xo2y+QX#ZiH5Km6wIoMD3lO+h)zkErk zZ|a*IJO@wWCGqgHkf~6Ju*>eUPuLR%AH`MzGA7`ez-=FT0OT~H+YtVc0;~Xo{@@Ej zR*_XeUr~q^V#t83W9x*uiO~K-Kj5_g|2O;wbC1C>;23ZWI0hU8jseGjW56-s82CpS zD5XlNj|dA1KM^pC?Y6ruw9fGM!_SSbzr*UVnoH>9ck)x}l)59KXV5d~rn;%(LGfUj zTBfoFS%Z20JpZTQr(mPM(H{|v2pZ@H8eMJheZRBs!rL(P*Zpn(ux}o_gyCkm`Gk7% z`ssf9rFm%{+K2YIKCY3?-kbO4@Lt2GfLR;8ar+7I`@gsE={vr&$h=P+BqsHL!r(Xk zn@*;ZDR}ow*b?@keu(jt(hAmUcPoQOh7vdZBjl!&=j5*n~9+ zJ@m-;ugL8NQojuE`#0E)aHhoV z9s?z2(mK2jN9O-RK_FdvBiqR0c_h=xbRW~loY7}Aa{b`d{+iIycC^sGU!%-+=>3uX zhFKOl@QdwYyUwgLzVgWgj75gCEY2$nt&_-Ss6pT>NMnHB!~ zr~E1JEBaEB-?!8%@Ib&TkFG-8z@c&X311Q_*-92aGY*Tx7VE{j3a`SW6Yv~AWuLMP zCWFbsvaoD6TbNgXJUz_e9}&>=5M`oFA8OS@u6+qsg2DR%p9A#q@X+J+gpMEn_D;ML zhh`pppj!~{#UJ<&;o}%A1`A{!91%yvReqJ@J+PF39D|AklknhI0hU8jseGjW56-s7;p^yR~R@KoC`|ok~*IH8O!W6PSdq}2b}%x1IMGyP2Gq`reaW{<%QdOzFGkW-k$){n4;J%GqzIlYCBB_AK9{%`(UO}&y>?NU_ht?b#0O;l`nu-RV{(1!L zTfQO`H^mKd>T}s#Vb0y3=1+sHhgJmm-m#}a#$A+(Qv2ix z|5!0rl#}I9D=B{@v=MDYBA$rDSO1Iv-F+cZNK7T1WoOxY{+=h6iDe(&hsPK31u_=l z<3H=2^=^yXqND66ClY>PzmW6b0Ye_aHn}bAB0zS-Kmzm@$Zn8AipPYuyezH+oq+zp=>Y!EejmBdb__TM90QI4$ADwNG2j?*3^)eeDJD6?7T)zV1bE>GQEohP>cLc@!NvqN-sij_T*N1(A@I&+>#3Dd1Kh_`X|3nz92kRgFAN*E9tKiIsGanxK z5B!RRAyGr3GWnVO0)z!>fx-a!z&tQh2!ReXeC#E73BHHzVLf;cKG9CJhxK8-kg!Yb zQpi0xZjKx5Uf{Kd=X{VDB%Tq_JJ*gn_vRAb@Hc$C82`6id+G$tp>yaMCI)S5W|<{+ ziLGoZ8+0cQR0CBOKa1a!us3RN)KUMapDIWdto7IW*Q2gSp_38)iuhRJukbsl4%BAQ zSw(b2H#7~y+yHb9H0RBEBi4xhO4w?*T0CCpPcqzai^egBbfNuqz2Y8?0{aA@t z;^-g1W9%q8iYEl@H0DxnVMYS-1NYcH7M>S)U$*gWe7rZ_izcJV(u7H3lK74P#!C_| zv&+r{@YnrHa^Kl8;23ZWI0hU8jseGjW56-s82F1AcosYh7ErbwX7vOnfk77?yyE-$ zem+@D7RYMH4YjN78qV28R1x)5Kh+!926mR8<>+O@T^>GaWZI(>9ogydly@QEM!Jr$ zhVUc*k#Ay~SZ~prrrSXRw`%0ueN6a>eZ&Ts0S5PXXbCrMW@3(1=i$m1W2Y7-ENn83r@V3{%BcvBTAHg^sv8><&Xu9QqPU`KA2gQN^Qr z5Pm0Y@HhA$f)4@m{E!QPy-8fcCcQ~xu7p3LGGR3VnFhY~EwcQfZ-Cz%c?HeA=H89S zjR^j`CZRC_KKGWQrI=0lgZ&ZC!K3&nj$DCRdX{c!T85bmJJ=3}d_D9b&NXvQfuKMz zQjJs_gN*^Q3BfUT9N0IY?;uct8bZh$EH{ zn8k;gVFvf@oF*rw2fj0DSQ_?1ybxRD7P`_WmcR19A$$)|uK>CZ=kmE6y?8hIO2RgH(+nDfB-)|at-bikpG|C%kBLjeh}GZcG-@%WE>6W%-m}!oiEHd>mMG!IC|uvMaNAXGb!}{m`Aq}4)TK>vuOEf<)iKLc7?P5TlrQ_ z;1hUWkyrdoSjX4#3?c(5*`K6wgg)O>_$!! z@H)n_vFu*6*WA*#baVo=0O&M;1_8Q#=rZ2%ca*$Wl?MdO?5haKy(?$Sk@8}jO>I(} z<%ASAg-uPU$Sd;7gh%WVLyliF)677}f1H30KWGM^t4|}+h>-;N0G7+;ppblq@B~eZGt=BUcmfoJ$gRQI>xSokABOWLBBg1U4b`j$ogHjQ%dR3nd7qw;2f$ z774or`cuC|Pt((2_pyqQz$UP@S#5?4OY8>D@H6~-LJQeKrX#?Ifu08B{Nc4KElP`9 z@|MJN>M44LIfE1V#BlF)gdL&n(HL@bv?Ap}1(uHhzYH`JPW%5~{#E3@&@tc`a11yG z90QI4$ADwNG2j^Ziy0WC2kDu1rbXU6^8Jv_j&3&itKSmP2Y{O@^w|Y$0h?84)$qo{ zs}10DF_$At{U^dEyUFI~`FUc(R<@N5BB1XN^KDsCHvHa``Q-3MyV|a{wM;F8E{U05E%h)p3jDXn~ z8U);sSL&7F&fv5LE`a9fa74Y-Af*YunoX zM!;;^z%($aS?bVp4!uJ`R*=o-^Lfrl&Iks4uQt%p_ z4o(MsRbN$FmkwuK{Mguj@uI#?aV zRdE&eDA<4CwL^E_EdqQC@N2+_u|zFVZ}c0TGDsO@(wTHx@=Y)T_}M`iVMdsQ1msA3 z!@r?cy>nr2U}MwR{9*sFobk{nkLRD8=MHcB*r{NTa513{BTEt z{D+gl$>0eg3jv*!$aDBj{iYDOfY(nMMQV*1?YQm^`;Cf!;nn?56nse@+IQhxEA>qc>njXJ!~(+4gx#{ z@El;zg`A4FgbxICJ}3gZ|A4=L{Kfx_-M4oPI0hU8jseGjW56-s7;p?Y1{?$bTLw1j zjT-rH$mm0_-$&vjf$sTDVv~TT8(RKjgf^@Vskoyv%zrs-4!eXcVPgsCYMWtagxzgF zupbz1z35oSoc@lzV=MRyN^k4Kq4{nuo69@mjz}$2%j%-Kz--*bbO~p7c;ZLs5!B#* zK|?q2+&m98`OWB-jC=M;d(tiyOT`vK7Xm(#$z&4VaCqb~$A$d_>>)!2A)XU@{NM+# zL3nLn+Z}ud&r85ej~u$5yeCKI8*~K7yMu2W`GUAF{K@TCaf z>+kgm|AgO6H`7rBbSP9YRl-ie>byF~O&@bCI_bV9K*NsQzg+~({g@lk{RfXkDT2p6 z-as@Eu_Cb|@TWry4}U!L6L{QAFp);4k!K09MQni{#6INp$Gkk4fSDF~3Ybr!ufYD~ z7yXOALWs-aGVD}tv)imc0e%T&E5P^vh`p$jHkCDbO%7cPbP?e3p1o(`Rl&anXbli%NG}a-HvWeH?LRp83625BfMdWh;23ZW zI0hU8jseGjW8h!J0J86Kqr|-ai~Yrx;br(I1o-n05TJ$bML@oJIs*LjO>I+)KKNp` zn1#PThK*srBU~pySN|FREbNPiKOBAWxWCUOU@pd<0sj5P1Ze*g*+lkp^SS9qcY62_ zDiAucPAsWSYI~dBp*BB>Nn)cDs-5V|NL8L>__XiMx7Hz!tRw3D7_+ z(u*{58&cYowiBt<@f=(0*4iiFJ{_O%h(DsV{X`u5jgRa{7Ps*DI=(J#N*nYb9Oj29 z!GSUyL|Oswe_R6k2jIEDYlE!CJA^rEj>7%Crl}d~G?1BqS$LscNK8Ms8F@y&My`<~ zyb<0b@kn6*gV`FIjmrc)7CeU9yf(*k{)7M@2Qmhsy-3Yd^X+20C_<=9zZWGKWEu>>*!ju3FWzh>_j_k z4_j!h>*;zLI&EmP;h%<<8@c?Lzj2Q~Vvd-S1Z3~+wR>$Qo{1+A3B+E$mnPN2e6?6D zkST!Me-565pJXT5cs`!LF>lOc0<`uyDNi5S^Q{QKh+hP>4A?_JTaWLB>^=0%VJESU z0IxnW3iH@J_9c7ChVr2tb35+M$mkb@*ZMU%6K3mbel;In1L(uyVSt_inuCI(pqN5H zR$)0peO8~;{RQb_Up1T&vr%W?&x8-`1B0$Xa><_(M#)j~O5{o;i_9Xs@~(Uyn@1Pt zxJ(n^d8i_)h~zT4yuj zA)rG*7X$VL=r>5C(x|lrWb`+-jl+EeekQ!|1qnCV%`oHcm42mLm=<9kqEJFbGtmsZ z1n}4+BXJG^uQ7H&)7f-}OuZ(ei9mhB zK9kR6BfyKYSS%LMOW;0_*B4oe)pd0Z&&4!7EzFCUuBYqz1Y{r}D-!wy>{9Ul{EF~c zJy!RF`@vGeJT*_PAY?EZOn=>9*EMwwvH-BVg7yNwfwu(ge<*^2lqe%K_6X=jM8_nu z8}J$;?;;BUvp;kc;Og&s0FQZ25AYBD)^VTY7;p?Y1{?#90mp!2z%k$$a18t_7(mw_ zdi55vg$(miCX*@5-a}U2@A`MWfcos}>bjwK8h-iII<-zu_|AN1t^`+t^ZLAo;Thg< z%!0_5$4rG;alV?b&=Xk3l%aIDbq4p*+vc{(Y%_;hf!H5B)DLw@_&706%wn_1P0*d8OA-C{xD`YDkK8#to*try zzp&=ZKQ3ad-U$nzxTfP0uh8cc~8Ytk;F^lp$o98tSVm+PVf_a838_Zc=XHj z@*LR(m{Xyl?`n04p~pu@05ToQh%#b50oe{Qc#Kdhl9H$7=;gb_ zFY)dKXec0(hkqXWdGsRUHAaRW{06wYUs9J8dKj?7KraNIFLofv>c`h-uo-MT0x}Qp z+xvDjAI|?-RIukTfeE1dpR4Ao1LlCKWGh+pE}$y` z{Nb_Tc|!++%tP!ZVi2a=>ES*EzK>V@6)9uNaP(n}C*VDVT|j;Uvj36&=d%C*6~DpU z&vXnp1{?#90mp!2z%k$$a11yG{!s=n$7B9q%oeldYPtH&{ARA}>w1gXVvu!*`TrCB ziAG*s6YAQ79squC%$D%If5tvz$nL|f9Q|-Hbxe&;KllWuscC8tb>Fozt&B(LX?upb zb?C-JP9SsvnETV|bQ-fK{PVcOu3#%dfAs-&Ak52$mp;0TF5`;0)HYZt>~2pl(o;L! z58@m<$BGf4(H=s;>^ap;HOP8PY!ina1bD1yraQzAvB&&zc$0^(JR&0DjQw0Z53>$S zh!UaheFGpf*pVzJZ~Xv1fM>Fq!W;Z%yV+I{6~ubEUP3329mxQ~ zadw=o|gnbge2I%}lh934OX~_%FoHys-xfCx& z>VbA)W&$(_`v@f|pZ_-k_5jg&bV^j{$uQ=@CV?}KN2pP zO9p*^=p`&dc*EY1^JR4C2S6Sqd@<0jBqO-&|9|wij{7{vfMdWh;23ZWI0hU8jseGj zW8h!GKqu45Kz|KQb6HhZA&+l`UZJO%X=b9Hs3)iiDv?g4p}$5(8gka56~`U)t$wTF zgT|eHEnCZw(RNTBRPb_R-XE+6E6k9%i9=J3xo(HqLCt;d4fN%bfP3%%Z2pHHJVj~n(e0(JrA zbU8hNFu)8j$OnKg9{&1-JRye{9=BWM%avxO**SeqFO z!xIr^5&{;4{%~{+b|b{+@%b1t#=O(-G;ZS9BOvP!nS{u0%Pn#X=osLMN4|bdQBzFi zQ#pDMoARc7E}P4cd58=G-0zX)m&InW$UngMLw+1Su;UmO3=5zs$Dg60KTEhzn8K%U z-hQ5%tJeI(YxqfigqblyXftrf8u@OofqdtZ2}DC zpL?Hsy9l@VEq;`MPI`1IuCwcGOcT>oVO1D<4?hs#;m3{qg?J$b@j?8)xG&xlpcjCK zT@ldffILQI2L494NI?D_G#JQQ$R@H0_y}+lhvpxdes~_xGQdND?8COCr`J~7@~k{t zM?eq5L;KL8?*Lhis|e7^BQp@MF|zaE34z|Dma3(&JCa5kyyo~jl0O9KA{an`|6s5j zEaACdPk?S>v0kkIAfRIa`hsKPnD~}}EC~1?Cd!F&lsC#NFUpHed=p0wAUqlHj%-z1 z!@GYE-9z^#oFQQE)K0h4n+foFG$3HFg&RM#{2gou3vWvq0yGxUcr*^Z0dfl~5%9jp z`w6^2_YW|Tn(v?&t)mFFFF;ondF~}IeSMY?8S!dSmR6F(Byf#U7QjPf)TKx;`0((OE zntx3V^d)$4SzJQ)nWF+Ov)=n1|#NK zX!C2B8U|YShN_`LP9F3d@X$9WAU6Qsj3T;-o?&Jf%-Fm1E{$%z(ROsWYk@vK5p@i} zUyt1h@&E+^JrU5=&nCRoFLhd*Hta{h&Lp4BXFCU-g95rh=tn>g1N;N0#3|8=wPFwK zgYZ3v%sylY4CBN2Io&X)oOak&2 z&Db@Bs%OFM8^g`{&RkFxM$)Ra11yG90QI4$ADwNG2j?* z4E(z>(8+ePJxmWXLW~fYeW1(7JO~f{R=rhY4n#*EMW~s@b}=>oHMN~}XZ^GJ+3ZvM z6lULYtQ=cT$ZRs3TtTkj9-*qPs;80ve~y`B2J69E5;hSqqgDy31gq346;H?02?;x? zPabpWPQ6oOMuyiKz4ypuYscELilU-uO~CE?ApxCoVFteZTn-}i;5{hyZv=-n0Jrbd zHnmM|k{irqJy}n7gH|NbgeUFm) zm+4pb6*0RpoFB1&XrLM>Wb-2f4_$V*yj$MX$kfQ1=xd^%lBZ;I(OjT=zJM$skBB2; zAREXQ5s=}BOn%Jkm+fVX{S0~)PMK5Yt$M4L*d>&Xci+xobJ!X}R*_Ytq0E51JTL!P zd@Kg@!5q2zn8$0{nl$OI2=yFYco)8$0IkDSbJbK;RTZ8Kb}Pv0gTG@CbwZZpCHa26 zpDyc_i=)qAZ0*#meppZmcCqJ4r621m|mR^4Ehl0 z0`ML~pG0r!d3+i?4QAWf_L9D&v9B2~$ICwn)A@7`-N{b!?L!NIT!y)PE-x$!3up>1 zm<#5Ty<~sqzw_p@xkMHrG!ozdy^`pW=&U*`g%HQYF;DeVo!jQN=wrx3 zz)quqZD8T+NB6;0Jyn+_;Jx|MybRy}nETO1fqfS=9O$`tNq9$yA|U6%&HVpvzXjdn zbqqKL90QI4$ADwNG2j?*4E*+bkvvsrg%&_&UD6WA2#BtTOvfd?#Y_*u0LYBfuj*CYp%`ItlC}%G$Da zJ^>m2+;G!N^->)PL(CA3c*=Ih}pXt>EWDjD##Elj`aqw!l=B+t8;bRe?`-Z>&Q~9ZcE}*n5 zEpzgmVMpCPevcOtg{XzTiI~M_@gLcbY(Jr%uBYP?FyCXpfF1(q)zL+VTmU?G@u4`BoLzsGuRCFllV!% zlK`LiD!z)^{)X}nqJu!60=)9*wQI_nhP?%t!_gZEuQ_I3XfKeNfX>8hI-A~Yb{p&) z;u1FK4SFDX^&9KP;T{9Mc13m3P;-IT6dro`6_8bbfFIzPXW=85%qEkv;S9Yh+Znp~ zMny(NvUpj%>5=J?kGzk()H1cq$MbPy=OYtf0-wMyv&$@+h$c1@t`Sn$6t=VJY$n=? z78-l_G{*2T99|6cD(3WZdfjDrc}AQOcn{>a`7LI7Ja*_1;Gahh0`w&-%}TSA@8r;Z z>=*k*ORuH3m2gpBl*nZ0#5$4sAU%Vp0q;}vCt^>7y~;U$j^8Dq8={_9&$~|je?`0^ zUJKDez&`>#{{O??c>qgQZrl0~YxM>ss(@q=Bumawf|5jnNX|*J{!utv>0v;m^%feC< z&@W6R{>W6R{>W6R{>W6R{>Xnze@#>1K&gSQ1|tH zeJ!{az#wjdnLtVQo#`rju(_-+>-WriCXG&`-&Sv{dPJvKr&xZXOi(6(ejhzM?xXkV zefnweGyX+3VBfJT~EkR$_mwjeGv&Yym1}*n|HDA4D-ZDR`9~H9xZkbzQM!`VR!oyo& zlo=K3+Tp{8y)!%k(MzUN>D0PlT>u}0mZl}S1%COzeGJhvVmFP~kNrMo7Pxh95;O^) z-+6Uj4Gsne_&o@`-!yNAnRU2ZfKGmX|~$LK~vCscn!|KbOsA=sSn9q3no0qH+IFz!WeSiMG0}9zxtDu(!q?!Wc6qoRdI5 zk9+jT`Y}yk(rRer(f@9yj74PfVIF}Ub`@Dg&g1j=m)@6NYGRk%CG*AQi@V@m@G21< z{0{zm-h190K8Hg`aFcZPx8-e_$IIh2^c(uMyjosqzqF5AimF6@$|Nkz3bTr$BBk~9 z6hFzIBs}?&N0LXzd*i(ql&WZmjeH{yL?G7l^&B@ExIw@iqCC-xZuZA{ID8AehBb!SVHuWJ!A#CulSWfK4KHUiGP#GLwqN{ zlM}=Q(VTdffM%nJC=z-_B100|3g{Vdqtci6Ttz*WFiz*WFiz*WFiz*WFiz*XSy zS^?~2`>MW5(^t!&WgwJLRdrQz{jU^e{KX1;Py~HN5DfGfyVwRXs)F-NKv~9G0tbXjh`1j(M5v!uB zqUU1gVu^#qLBnXnXvz4J@ylN=e^pMEQ@8_wXM1zg+~gqcs=EriZ)6Hi(vvi_3&~V6 z^@sVxbRjwtU#qXxieN=}Pd;DI*T)HXzQOCQoo#1V1}lRe1hfnli8MqKl|XiD&;K!hqYNd|pWBQi5rB0jEW|Equ z(3d|X(64v0o$Nt#&_GAti$MM%YJ&TT=lZ$MOkmakpTHKZ1zReX3iOxNY&DB|tyODP zGts*L&Z>Wf`DJa zF?mc{Zuv>?q*tAQc7nzOaoBr5ln>=$|F9oN;2t1}Od_F47~&7{vkWMkHtq0eqhtduJyd>X#@zxT^{WxU;DH#zv7q<4Rlz`wsQ@5_WCO#`SC7Rg27t@B6>t@B6>t@B6>t@B6+i{xg@%ki=VvS(*h94vji`;@+$``-4C(+6*~EP8ZWf z9io^mW}#Wf{ya@AO>9;$E7(HZC(`M3x>u}MtZcMw^ho@X_*^QNx=J+CjdXsKpOWqp z8uZ!d6xL{h?Nqp>GnK$(3BiPFTf z=(1=$Q9LLfoF$}^>RRkt?0j%ONJn5s&`EVtHREf>L!6!~nk)JNQ7$MKbdGh7B?=M+ z*v&5p76kB%+Y#Fl`#^o5a9c234Oi&V;iLBp`TghD`NKMv)}?isXqjkp;s@ePa3+|k zXKMKOVGi(ufaYNUf!CYZCbsEydP=YBr&p?#>JTv?7!bhMzID(#D5*-SOTnceK`cQm zuga^2P;SEjJHVD?C0RSsjuHTGi;Zj}!@e9@250$Mj-DJEjZ89=Tp$*NzKJ*GO}U3C zMJ(crcv_K`)C+?|W|>)z@J4vh|Ksn&526c!T{`aKu^(?qISoG(_&&%p$iOpj_~668 z5g7mj!4ZdE^IyJVW^ZL8pOy zKiu?Ve-BT{S#p*v;g|4#@qY0JMg~UmdHK8r#5_4qA`9^={uM``KZz(sKzmYx$U&qh z-XM@s=<@&E&s0|dR{>W6R{>W6R{>W6R{>W6SAoBC1;(@S47v0vc}jkPyyL1;Ivq02 zy7I2Py=*Uc+MRZ(S!&<`aGSF2*AVN8lBT5Tqx)#w-FIf48SdAwo9nctZ*Fi4fSJNc zev)q^%6sKKJQjAu$cBHapKA0_8Ffaw9B38ZtmBq{yWXy6#Ad|aCRP&g7L1sPK}K8^ z0(k-Gk-sPI>3f>S5bBYBq{|bx&20l+HvIGt+rt)lZRme7gRsO>zLewF@P0e24{Kz} z!MC80E~Lw=^6E5!EP}8nq848k1zSt}_9``tW=b(8<4+*_FbP63*2X&J8f`D!U`UdQg;m3#m7&rD& z5f$*shbP@sJCz*$o>}+~;(Ot?Vu&4LF$+Ns-FN0YGe4LgjI<-|Fg}dj{fcnhz(14E zWC5>$_Z|O^HsbwxegYnNnMG#tlED7E9D%+ZJ9&H!CJKszVvSrQi+Dx6%0xTAoj;pc zNZ_VmJ^_FJg?u63P9#;(LJwu=oBLqZQd%pUUbe0;rKZ_#7pwgEf)#$IDDzsN7f z5HI)(j@}*ldw2O=p3BeWU-B+_)BI_EB~eLG%_!iVsg1iTO6^9UWrF#@xLEqn{l#EFmL-_d7QMFM^Z=dVi-0_&fiUbI;9Hz*WFi zz*WFiz*WFiz*WFiz*PVh7(+ns5AE^_y+WTLkZ%XSbo5BYZE=g+c=XKqR6YfbeqxoF zF3tC;Iz&%miC&_s1=WJ&D!GFGe+_{wz_a?S?qPZuc+oZE&G^^$YghUhG~hN?*9U$BjXM-CvI|BS@`Z+h8_^` zYKofj(ehE`8xB%~)RfqiSQS%+obo<1jQEzKN`PSg3;3a#>u2LSow9;?nbJgtoSAxEIgPv-2Tr2-{5LusLiBmV#lXQo@$7 zbBUd7CxhM}nG48S+`)FRQFfHYX9lw&++M6@Ygrv$hfgGMGmp&1Fe8yJ@OO%x0(bh* z0_2r>!@a*CQ^<^zWmudS=cPqyk&AKyF+cfH{wOgws_0epZrYm`vx*}Gv=vQl)6jbl zJ`k07CEkH`V5|5lo|Z`HC-na!c8DF~Fa8%j(zwtg5;K+71m*`n68Jn1HA4;V6w;Y= z1~a0DydlTU0{jay`I-Ft;(n-Ez`O$95%3uNkbTJ767LbX0l*yvcK>e@uK#yGOI-zA z1zZJO1zZJO1zZJO1zZJO1^$1iKyTaIb|jErm(S!g-O1}7`*Y;gKVpyAUZNRg1Y*w* zKfKh$(coy%h;H(cbvKkK#0oKF#ceTL%sG8dqlZmqli7i0AZ_Ju8{8IP54*$e2z~3; z#@5De1UG_S#4%#2UaBztH4+_R=sXt5B1!+ZElOaJb?T0(QGuk zZm);4fjm49pT%a;rGIDkv;EoT;<@;z@>4lb3=|0n+_z&-nt<3~HkfHdFWbu^lYOR~ zDZB749Qx@=W|G030le^`89*igv<6cs3$KA_AU-4JQdS>w->@6jOtY#4?iA=0-(nYz z+x!(oI|ADN-o$-&KitpaUL1b$*;#fv-0}HeFFY_Q}`5KgMc0%nTG55I{rR^_ZRwtOgs~> zEozGo_y_zW@sVgkS$u=}V7^!Gl|5Ncc76+W*1b zH+B_p6>t@B6>t@B6>t@B6>t@B6>t^!_X?nwfyWzqHRP%^TNCv>&B)N&<%8pc8kJS z{~mExomC@(5y9rz=Fm59uAZw85^iXuC+NtIe6Z8ZfGcj|4JQj9FcSdu@=ZxR+a>vUzfQ(QH^rM_79e!}m>Jv>x5O28CG?nt zPXY7+m=i(UFq_S0$UgYd{%E03z#R!Z1o8f_B?<+Fg3)@k#w=o?TBzQ!?~sCjci4CD zv-?7C!Qa?#Y@^v|;3xQ+_nHSC!d|;K%u>MoX1qER3{CyAXl1|rm!tcDU_etZwO>8!c*W9fjIJ`AG59kt^%$Ct^%$Ct^%$Ct^%$Ct^$9j3ZR!MB}$3ZJT*T@EMyDW0RlR3?6PMP z*uB2b-e&^|>=~H&&P>z0$FyYd1>0*&n5Nt$K6l zY`}NzyS5YS#Gaa`23l_1E}$=-tS6JgzMMWmeu$sT&nbz1yR1#1$6RSw+Kc95sOg`^ zr*Z6n7w`ofUjG->MfH|`OCzuFn!QHdd}kZ5fJJ$fUuKsXW(njRs0)|^<^X})3iSIv zQB%|uO$hkruM(?-FMU}zu5KK>_Huc-ybiL1+~Mu;lKIK}g^`63`01hNhF2f_=U*4E zi;9tok;Hyt{}1mE?`>irA4sl;o5I;aL0M2<5|_kyZ@jmjujfCoAJ|YiRPHBIdMQ2J zCt#Of(N+w5*g<>{ze?1z^(^iNn)BwohF8NYE6Y;)-)C}**g{T$1u5xow|Gb#A*ja!;Z2xJ=8^~a0j>zlm9omL5_cMyGoe=>qzCCr zwvvUXAeAii{fCDDwEusIKSUi_N2VZA zC2&uI_w6#_djG%EPc`>kTm@VOTm@VOTm@VOTm@VOTm@VO{>uu`oq8A1Mc{sUxmZr! zQd0p>HF)F0+YR#pc+Q_BGV+Ync~#1wC;p+g-~zoslcij!Gk_j|EcC;E8+-72rk)9B z2d0C0VxQRYV!VL&-X^=rVi%2DZTPlhHx55LXa-@ff&`Kwl3ZKHO9wH!v@O8YfT* z)RbUK(1bN%*tbIm0ROua>;xMjMu@()uSI>(n~cL-){0ZBmQZoQ^<70yGGt^eF8a&mM&~RlrriRlrri zRlrriRlrriRlrr?Z&m^9T3fP~Y>XXai^*aVH_+%ge>1-s^kT@-OHcf&epP$TUW1;_ zBaj7nfI!cej3?u`>#xOXh5a3NsL+5TV;y~bT>?8&WUyhkzKT5ghnwLB8Gi7y|0DKC zY%GC1frs{C=qr!DYnGTLu;<6^erA)|VE4boEHRB)WA+Yzhoe6)W6Ri+>?DJJeLLmC z;kF%GZ|D_fDuV78t`pc_M_7bm-+q%2L?2?0-lL&g_|^Vu3+uw<>R(Tz&;3>Z8hRaG zQ`gi2yTGR5X?SYhpyq#@VB(?MZV*x+9Mmc3=6Ygipy9eY!~sjkMZ z#@4I#p^l*!>&1@oV;r{?m^)y$vPbPvD}$B6WBpi{4oU}4VozeI({N&h9-%QiL7$F& zI`aRJnFme(bMahU;+Hr)^`WbW4}Wfx+w2YY2DsD5_c_bXGTgf3wtj#fpy5Ywn3%vP z@K1>O#65G*;QhrM0Q+oY6_!)!S7HXC;U!`X0#{qq9?{Ty!Naa+FA?hHN860^kYxH)c+ z5rCU-?9B^_LIQd5A4fipwDsHiKg*xxTH>0xMk;hqG@}eaWYQtW9gP$Et4#!YD(J}3 zKjATOqdtSEd6s}L-P^<=c8J{&H$)rRM#4w$ZQ?X#&3(!~4YS^H z!+_V2*h}m!mWw6&%;iK;R+P=x^EGo`CP&6Z6FECswc(3>kS8XCMmlg8Y;{Ww(m0T9A!m zqkxA5bQbVggpXkjR)Zm*54R)mB)G^ga(uqBuq+IIfbk+;z;6*Z7f&g3;vRwCzl$SdR(mW5?rkyq69>UwWc)}Y~rBhwEv27E8{=P?}% zwfp!0z{?L>5cm^5VNb$*#55v}7)(I_fDbDE19KYqAx@Q3 z?+Sr_8d`kpYljfFS^d;yZ4xA;kWS7v+k5T zyiUVxax=kRPMn?a^MJlR^=Ru*0a*x#bp#!hxE zUmN=C!;_$o>Z4}bnRY3G{(3Tjeg0*lhOVJ61{Z0gzA|X7S}WX)pC#Ti@0rB}9{-Fz zV{Z`ftAi#!BX#-kf5#l+ggIe8*PrXoM7)VNxbKG6pt)==e-*z9JSXg|p^X@?#;X~@ zjNo1Mu1X)I4@6AFaKk@2ell9xcs$QEI*m?b5}8p1Zr?GtK<+(!?{E_Vzx?{Fe)wzL zCsfcC^aXZ-RpnLrcD9|pFW#psicaK`Ut3_GU!7Oy@Vjfo8*$_)jI<-kUErF9-~Bmz z&Th~fH2V1cV!znK_OOfgqD5VFoqQGcU{wgV_iC{h{q>N?>0){n{FO ziZl95c;hifkI|`3YTCN5H(%MWEOH|MaeI+N&Q)A{;!;0;+Zs2DtmJ%|PL z1#dyjUf?|eFUbl7^a88&DvjF(+*u%>p`B`{nv>6E3*LfHvXg9o)89NGaI5eov4(&b zBD5vA`@r1_<`*sl;9vXaseARV0akHkLMqo;-n0pnDOx<-cKWgs(F#OB;F@ zVh5dqh}ejYnyA^ycCr9QKOP=2L4guv^AlVxd?l#u9i;-0w#Tsb%=Q zpee5(tsfm0KP(=;0NA4!HATbO13diqvb~Jc*L2E3_>e#!pP6N*3xq=qnSm(@3=g^y z*r}ftXT^^M?kB9YawUPiKED44_JdH*Fp`aAy?C#1mVteFGLcMtDZi90c}xBy`;nne zRZUfMSRdB6%&kxtj~zc*6NK{-0kLUiTd{g$}eL~+x%n`Z~@X3Euzp0_Ehh_sF0?=YWlYrU8FQmsG zOyIL~SKU>=5UBeb?2XVV$itP6B=lr2X$a(FRju~}>> zUW$(tBgI4lo`PSjx1T-GmRd%&1SQWe^u9zzZ@8bXh`Ihh#fR`mc<9J>zL<@nt z0QdrIqpU;tEkMJ9y93;J!2bdF6!2WY4B}k^bx1{EE&**o0>Wtn{?0%3+;ejka20SB za20SBa20SBa20SB_}8oeJlvpl#-4brKh_^b;PxKA`|$CD$2oG)j+tZRrgqj~M|z1} zV%2Oli+R8)c8Z}#e^0z8p30|kzBk{CC$bPvh!lPbKb4ot8z={o+j}l~kKYS>&3D8* zVlUszKNX*fzsz4|5#~N{W&KUV6|B z;0^#9cj&XB^PU&X3%-hd6~p~Hddd96@5Dv|c>(B)(L*lrmUs>P2L4PjQ>>HgVy@byK`fzvv;I?8bf!hjrFCwP^_v#6W=|mR-{sCVR z=#lXnXPH?BT6^^T@VJL&;~k=x>?QNt{1&eRHx&g4d@t>FsK8CpoH2X{CQn}mP?akyf`3|vz-u+Jn zvKKG|!A-$@F<;>B+AYq zc079E4SWM{C0j}8)z^u2VSe1#l>GNQf!#Xx_Q)ZMkns(H@tS+nJ@7Kz-!rN$|b4M?{$L_H&31kc4 zJz6PN3VhDH@~%9S$rSoKo>%8p8{I}9GzZOG$`DA;(z8akk*&(AvYX|r zXg6BSZ|2&$7M^{W%QQF5&FjQAwM`|_N%TVkngKjl+%RD7g1Z6eQ1E!r{6An1*gQ&y zgjXW`7f0LCcDvbb=mf(yAQlstN1P_`eE%dc55i|RN(6)^4DpYzzx&St_xxN1Tm@VO zTm@VOTm@VOTm@VOTm}B;SD+v3$By!&92)Nv;)D=V$n|V}xYzV4j~=;m7xhKm%rrCb zX2(1L`gH6)C)$a2H4zn2F^kXQnPeu}+3W0mN8FG%mI2U7`Ii z#*6VU2xJXHj}8AfXsD4xh+X=Aq7?0r;q&kMf7k!J{{Mge&m#8$xTaW$r+r-RZX0S{x3%%ev=}tPSNgC$H zMNGsLv&HNnF-Vjl;1%D9HDcI-A|noZ=#_jW$Gtml{qx$qHjmDurIHG|{nX^0k6rCc z^^)B5#w+Z6ao3JKJfd6`*e zIuq~>gkL_i02OQn`!V~N(WoWNEGWba@muH4Z>4zwr zz8B>P-X|IpxSgmk>I--pqE_&ui}T{V69mQdiBeuE?}2zA@cSir2|m$GG`Oq4ULO8@ zpW09DLcLJq2BfuYEqCx89CIG{Iwj1ll;5C_@z~>S3qUx+VYf0G$yZLT@SzHdi9LBTp^zKz< z*w^FF`mjC>nF_nvZuSnP2v#QG@ra#%7tuwGW8=d2q_J#Fuf8=o27Dp65OsJR{uTR* z6_rKh0m@xiz!&g+#5^`HoJ%1uqc(v%mYf7`8=y78=OQ72y9$p$_JANr0ul1x`~PJ3 z=&k~;09Wptpx-+AjopH)I2BrOZ0`soi8ZSv^rtq~IwyvierD)hv-nB(4(B!FMI# zQJ0*k!mIGIqHL(8$M+j!#+a(Ms%^nqFyz!fW{=rjewU*MYsee&?RL9GE+6~|Qj64L z0D+zi-gNjq^knZ7htwf8ThG>6OcsM49Q|1f+rnlcKLN}j;6vC@Hk5dszeRqF;I2#a=OJ!tvZN3xH-E z8Um6= zrO+tSD1v(o)bxS>z%MOJOVo0J93aPuapE`moBYW8$V1MMY83opooYZV3?&?RaTXlB{Ub!#rORC@V`gIjflhJuJBfP^>{rF-^OnU`17M4 z=gc`%lhtIHH{2k`!0)dm_3iJ-cO>#1;Z1-!&kX`|rY&ZR zsYN^_O0iN*amA0zqg(n?y;jsh9u5_!}YT(_5{5^bc=ntBRCgeC+S1cl+?|zfN z$)V}KNWfM^56>xpLgu(tJ~^U&=))ju@i3LweS`ZKM)iBiGEkF ztCvcqlIMw+{3S=9yPB`&2T7NX{q*!E!LnEKooA8NjD+58o4dCbsfg zd1K{RiCcq;rlQ%*HnZ2{YqAt^+CS~XHxF9&MgAhcpX?`-dC9ytiPz=pGP{@E8$jIV zw>dKSFcawPclHlO4n_8R`@K)%K8Y(7DHK6|VZKPdNITI^?34Rs2~)xhPy-a|1#kVD zvZkCHnHzyGUmMv*!uKAt6?g$+mkpl<+-pE9AC*zrU33?t*d2lIo$eFJ7W>$Y{Xl;BEPK z`1_;zXg-Xq9>m2s{ z-`nr)9d?J(AJVenVmQ5m?xGoM#g(y+6m?qq_>Y3b+cm z3b+cm3b+cm3b+cm3jE(IfE_A4@ZravEs`ygPv(rhPNai^m)x#$xQMy=rlU4UNLL1iS`1d7V7`#uUnT+rqcdpE6$C z*0xIs+`Xf3A7{oH>~%*H)p>RPI)Q$>r|2nA59GrmW8kHJsgYlJR-IMdf^I=4)5#Q9 z#Z?(w#ttChmw?_9{V(nmlG$YTj6S20&o|XfH4S17VrvL|U*sR6-^D!v@(1b?m~VVV z;En)y<(M(x1_L?*Jl2N<<|gOGc~QnMWuBw8do zOV84qgUtbE9X|Kz9ZSxCVZVgg0=Sd!s=6xZD=O-WdQ31TIIGWUJSTYQ%UDlWN8lpc@ zj+diP;!KX``6YqpglvZ~dW=r5(yP2g9ipjjsxha6KSU$ZNW4d0l_^XLgZK3=Bg9=% zOcs+BDbsL|*dvg`2){vSOIop3EG17F=0~hjs}wv2p+&%*3!Zx#0z3T!@_@_{mm@AB zA_6xGc)n?f|J>s{zyJUH&l&eOTm@VOTm@VOTm@VOTm@VOTm@VO{`nP1MtSiKc!RL7 zT_TsroqQ)B%7(HoybCX4i`a}rN7YfaFfGg|JIbPuU#^$ymBGqjFHw*{?tL{?O`*5@ zLI0pn+LJck#D|)JoHl2u`A5F{lwe9QJ2pFZo2X<+aZ%*T0^eXxl+9+d@0xeX<^N5Z1Yg$U;DV#d9K_z;joG%K`Z3|BQ3bz*WFiz*WFiz*WFi zz*WFiz*WFi;NL2chqC;z!zD>Nhfe%0{uW=#ma=3rnM9uq4gV3M8i5@-^534ZXKbJu z80G=Mb59#>u;0a=8GCp50Kg*v`DhjB9(=ReOo@7X&2@EMy-lFc%3v~>rnV_1z3;Hd z9)SPbR6EtSCT0@wsk=-R5`{!BVkiNR0(khrvoE1YC_4T-@5*=O5phJELZv$TNl> zfY46A#$V&<2<&sw4`L6Fo@=BT8QxdJ2N1XK-3e&lGZXMvho>C+{bF7*@1b}oy2)-5 zJtq7JauV2`XA~L9xh=W)NPZ+gB%q7W=jHR-%l6^S0=M0jL?wZn@cO(y$1DMT*$?~& zj=Xwk)uCg5?mzdBM2R1@p^FofSwk8XrZ7` zuv{%yYt33yfEVECwb4JP;;F)U!yW&QpI7FU-xDJ#uf8>JP0shbIlSrmioSH=zDN8; zU>9FFQaCczo9adAE3KE-OUM(3xB8gjVE%v^$}aNUhkyMO^+dr-|2nbWt`Bb<&gpYu z4#NVqK*4{%wP-C$v(hwGsT=AsuClA_Ie#9$#^>U>s2HgjdBc0dTQAlNcrk2X8`yke zv)ybD@`HT7nQwN9T_P!Qf}LP%`C3YgoW-I4hxZ_SA@Lc5KLXy{QUpGG@X3VM&)qu@(`x%5bDqFX9y{r!dZ|7@{1N;SFvHAtB9qM&-lf;#wK#In#)`3G7#l`Ob-fto z3G?hcJIBm12h;&oPuJ6zgUbQ-@Q3sveIvLLXr#56rk!;cQx0q`KW#4eH2U4}V; z(CA+z`V!apH4ZI3eB`jR{(!(d0A2=F$g>{#c)#=C`6jlBy(V50xEFwz0D82NL}$@i zY$lreP5u0l{E>3RU}B@c(cdfgO7yyz9Y8N|jlgY05wD2%R6G?uc~6dvI`|M`J^+6K zc>FID%fv>$k>4lKuQm`31j+BIOMcE@5LILqS(m`=0s8GqM9joOU;R8LkC_vj6C15Y zD`?@-L*gEPnO>$be1Pshlb^}2C29%e0pbn-H~ZLk!`BcV3GkzXZ(o>aAaBb4ynmQ= zfLR25^%D{s)CL7lzFEPnU_fj@>^t+Fd0)S;N1M@R7cpLs*KgUk?0&Uh!55&P>ZkJA zd^Q`)#<0UbWDbR%2;bT7Ed27&=hq~#Bk#_;bKJkr(Q|ZR0y>dRdXvU21$6c2>^TeX zNPK>9-+)_sc=Ev$@@M_CE^3R0f4e5WCH8gBujg zTE64o@s(^PTVNO1llr9okVs?_8E84aGGCc3dW-(rd~G%bn}VDArf#WPs*FL#puK9Z z&ID(IOawG1c&^AeM9v^?`YZFw9Nr2Ahz6#CX{;NEnv#8HpTP|RycUr8i0lXGU9J-M z2;>^PATTdOjv+Jvp$LNh^B-UCr;e+DtAMM3tAMM3tAMM3tAMM3tAMM(KcfPfd1hXL zRS5Isp}`+y2AQ!0^!{hm8C5JO7F1T1RU_R<|Ec~|-DBNjYl*S(W8*K!F2_o!5^59i z1+m;LH&^r(jhlXCwC&gXbz+m)G*AuHqu8U^d&EpNQ|*uLkEV>Jj4cnA2Xly)gougQ zJR+q^sge;1bOJ32Xugs8h90({EojjzqSrzeeNWaCmVIosU2SoLfP3-t`n=vlAo~x! z9C}0C8Njm*ngsZ}?P9xFAKr(j^U`?>i3G%M;wDi>mI-_GZu9e+yrvAX+%C6?yhI-Qd-Ti5k;|^LYv}ng+kl3C zmYo&q2p;eUp{L>`J1Lx7Ok@)od<@Y4!y6Gf3h4jw-l3oWOn;_lnwgYTc-WwK$Lrpq zcZ8aF^zrZ;K<*1-Mr1Keo9Z{fLmt`ZYxgR?;X^bkK_OF!t_0@L#lc3C(x$Yt&1}<3x6<$1_w94@+`tDPS^;>^;Z8iB$Md=b z?gFw<_8_$2fAT*$eA?m72fYEZ-CnR4tc&O(CiBUmMjw9e8~6t9Nl)(ZclZN{1Caxf zE&dk2YNTqUpjXh#A#+IF@DJbvcs`MjQV}N#?6R?c$GidajWuiyn?QVMJ~T`1(on18om+Vh>P~3-JmzOU{(!{XU^bu4k)ycEuCmB893#g_ zXdwP^hw(Z&Jr-d_80rhHJu(1sHxD0(jcg+;$P04Z9AGAdTX)=893#FUA3b;&Li2%s z79cF0MZj7{DqZ-g8nH;4@a_XXJNLqmd0hEBW_pJ8WM+#?{z54nBNesory754P- zXsEC2>v!3^;bS&pjaXKmmA`G?HV^azjf}{eqNXTHAeRqb2FUuW=2i2S`b+(rL`UMR zch*BD;Sg_#mzbC(XN6jgR+O*U&F|*lVz<~%u~R@(08c^q9rQE(%)9(u4qe3(y+lKY zf#)%ld<`0kh63J+fAPO~5|KneuW*~)CP$3pq*mw}-aQm!#aMO%UX-|d!Q2414H3d4 zaJzz84Q5opeYpy_3b+cm3b+cm3b+cm3b+cm3b+dVGb?}_{h#blwh(#D!A~CYMB)yUwgL@X&`(9qyvxdk^n3_^082BqCN2y;<*Y?~L6lcI96Z z@OkgU`Y>bxTna7)@S)pjciI!`gt`;l35u8^=38PDf&TOx^Ns8OUH|X;|9|EW2=~2R z1zZJO1zZJO1zZJO1zZJO1zZLG$5a5jU+Dc0^TQmz>(lr&j@WYp={J+6+hOPgj}`2<$_#PrV>6h`oF-J?KyqnHXB-e=%eAySKrpR zgY+N`KLPlt!waAWk;!B-Jy?%W8;{I9cnD(ekGq17rXyVg%r+TW#xSQ2d)Qe7Jl&8H zACVEc&Rgff7w%j8EhQC>vhXc{t{XdM?4RM!5C1&u;juG^$NX?PTplJ?`YZjniOU4; z*;929ZIeB$}`$EIZH6agTsogbVBf`-Mnr(wY*sgw1R+n~06j#N%q1 zSBN}=HDV2=(>D@Ng$KK>mZYqFdy3-iK!x}9#jm@Wo-bkr0ce7ogtxrhAxuygLr zI)@qeYy35Su1K!Pm)@7&BsobIAdf(J-F5T2c^!Gj@ZKWM##v|q;6H#H`L%2)$mGCBFF<;D~bI0suqMc|f=}Nk+EgR-AAX}gUft@*OpUft+ zeF=C7;;tVz1JmVniQW1?ZvAWOni_c!xLv^AMKjin-hq^C6aoJ|_)4VL>2)1b$Fyhd z*+4x|f51LqxFu-E+OfPmFUKqh`iqnNBz@xA@=pld7QmYk-VoU5LsQYw>lk|UwG-_` z8ls_WC@T=fMR8Ij92a<>jb}XE?|&{n7q7@$0XGJ?52;E6~W6R{>W6R{>W6R{>W6SAl=23S_Za zEN+<5Pr+vmeGa_xkn@J#8(wG7Wy9MIdS~REm!~W=c)E8WkfDw{Xv_kJ@F9FC8%mDr zR~Yo+ui4jZQkImhCval`ZS`Wdn6yIbUyB@d4!yNj-cCekvW`=j;&2@8qn1C)K zv(6m)#{H@P47C!-%-d;p8hn4~|C?ZcsOPL%*T(oBZY~W!a}7bWF$k#`lds z790!etNIFA3FTNhhFkfrs;e49)M0f<#qc7$zlXlz7xRlLM!Xe+f0UUv8(4;F(3Za3hUhyK5*X=*AGZ|k@9CzRI+AA*;}Px>dFgg9YNm0-1h?0wVvSZ@svOXh&z*WFiz*WFiz*WFiz*WFi;BQxfZDyN+pZ^tm#eSu~(s_s@1ZDuw z^>f;uZ_ZHWdYB%p2CG~|h9E<*fH-Q7l8ap)lisGczY^HJLmvIeISMebU$Sh3g|qD9amfahPliVu7GR<@NbXUdtmY%YTi z0r~aA&2WQ1@2mUjd_<3+M<9$a*mdV5=GwX8_l8cPo9?FZJsaAF7C!yhfg>yMC_l=F ziD3e>0{G*>ldrreFUrYs68`zndv~>6!yY^}PtBq4#ykTx!o9?1v)Lq63CaCniE2*t z(!DhH#PAu6H}R&9tz#dU2j&O;gNA3}2m=0t__HEGk)WQcr+z1@6Tbz&1!;-9ukOA& z5IYddqw*-s6Qq&my1uTf1XY4ksuZ~bo>yonQ=8Q0DKSY+Qm7T4KXMdMf4qStZ1dz3u!^`14WDnV6{+Qnv_eD~fRL&N&1wJph85k`` z%c8od{#pI3P@jwXqK1DUo_j%4(BReq9*poHg#Q69htD4N$j}*J-;KWmzqsMV1NMMA)I97AKg09e{FDs0H{3aAG#SIk z#*X!+d1=rm!Y^+w0gt~Q?T_}6d1QR%vot1+L1rKB!3WBL(t6grBk#yX#6#j|@w3Rp zGx0%UPq1ONIwHjn+9ea$A=3E_+bp8wY<3lUxk=!=nefW3S=kxpPAkKPtu zhj_0#%g*uwzra_s)eN5d@YcJ>?y;((s?Y>(AE3=xNW5X+us;*1{{nA;m!3#QbRt&r zmHb;l@Nan^(MPnAZDazGK)`2l3o$`Xkc;>tK0!&5gb->Q*)pom(wRygBYW|z^0%5HmxxK3a;@Pu$T z0PaVttAMM3tAMM3tAMM3tAMM3tAMM(-?0J>c|-oW{yf|jPf=6UBt1zZZx6QsMQjm! zf%u4j#F5XAyXY5`42OI293qFnO+Wf}NhbH$gGw$rJnxH|q6W9+xH)f3AiI6Cm@LZh zGJF@&#qZ+Zq>Os#_0tmX@%K0~)&3;9Q;vKw0$F*u<6g>_a{OD|P{)Zl(V95Qj*P8)MNA3j z0aLxH-gdcNCiRkf*!`aq=LEd`=b3qCAREY9@D`z$A$0%f%}cRTY@Jvqa2Njzkws(? zjS1|Faet0}6~7*8hlaaw^ticMZnnW}Fh8lER1TsUanW2fbM;)kP%TuCf=5A-_#*Mx z^F#NJo)Y?d=-+W`fqBPt@=gp)VD_@T>?CO;uxE$oz-T_2BXbX${JCbX!R(=_Y$`F& z*h@So-XLoGwf#TEp91*+8CV8Z#Z)oSKlB#8MP`{f^zQ$LeG_I4)U-9}kxN);7K(Yr zyz4|3KMTewKKgacZtn4Wyrd{8&JqXtL5{qG@A>z9yVx$^+pwBwW}A^CL7atO1iTpV zc|a}%Zs>6;-tXs#7hF+21)!RepAs@q$Pf2Ke9{SCGVs>DU*0fy!CuN|BL+< zYV$E`kiPT-5s3YKf9Mf#pWo-Vyj!9F|7YSeK_?WlvDeu9#Q(%^C)yGQe~}yUIupnmJF%SD`?A!5rkt>haa*8M- ziin^2&-_F7Vd!&!o)NPG+}c9}Ux>hShhBe=+Cy#yN$I-2tSY5TX?Pw$^N=r=FZSKb z?_R2?iuP0e=sKX7>P66bLr^JNDLONl89;CFq5e>}AaArs3)*ZL3HTlOs*>N0pa-cfWE zC0Gfz)~>au*=d%O=j6k^;T~oLC+vw(Zvj2RFX9(+BHSr3*E%c?i>+*HsO`X2 z_Fl{*CpsNlAFK}+MHfXos*b8t&?(qPoFpa?n_`<{w}M;28GS~dR;Setq7`}E;T8b9 z=}W{qy^fUk-Slp=o1FPR33CGB|Bha9JyB286Y#b_CXR)+q(mDZ||Wy!Wv)hp*oRJwd}C?uNdhF`uZxYOtofDL-fr+TnaS$1WDL2k83YGYG9V z`pM+PO@5PSA?CCBY?_!R_RIaU5HA$o58z%Nw+4&MqOeEBY$O-U#o$xF)o!(`%qr7| zz}-Cd{KaH3*<3Uim)T|Z6@eRtgd(9RMd0>5#$v2Ik(Ki7+u3&Zxq416|LxVTU{^4o z{O=AE7or!URf&o(E51DV>fozv(QMJ2v7E8h#N_DY=#|)&7(52xPmkM-(?lxbp?ate z1&0FE_ZPy;G0n1 zls6j*^tyQLO+=GO(=dws`;kX5lt6|9bOi8bfc708lF<6+=D9g~W@JMyF-y!a0vQpP z%%#YW@J0Kg#rviY0WUvzF`PH&&3%1euXF37eflfz6}mt<=Bn5#78(m^{&9X>1xR#Y=JY>h*bjzD;b4Gzk@W1%6tb7JJwp_Accw;6?%OjpGC~9V^5N z@eA>g7!V8y;DK<_UbOfhDdrpSA~?tnvVnG>{Zap@8<|GtCHs=yN91z3Tzdl94R}8v zCcGcOzvai9e^9;xz5>1iz5>1iz5>1iz5>1iz5@TB3ZO?rZ#mIUv_GmJ)lRq54K+if z{vCOHS%{njcD7lGb!wg3LSU~8jle3kN}&f!MW6@E&a?B@wzcg=z#9&GblmqR5~YY; z#8@#_?B#p;*Wzn&Q{I%%@Mkzlx#b7q1F?$eO=Oi>CHCsr+oFHN&qg*|OqQ|CjsAVYd%00PYC7imn3w?$~Wt7u5ys*`Y(YAT9__Us`BUFQ^yH zlCxy8AX%gfm>5h9;8O=rLFm`9UtemLns+HP4*wmu-?(wFmQXF>aBw(SPC!5Zj(8{f znfTA=2;8VcLykGdX?a@SX15u#4WNzaZ~B|d}_nzRPm0ca<1?~WY720?=WIe^H>!~Hru1tzkI(QX~ReR7_h<9VGW77`hG zM*bS*^<^iJ|Im?u*FbmPonsDynav?~h$SWPg*ga(6vq*v4Q&ZsLgRPO7xM*n@5n}g zZyxUF;h7IzK6>`w2;BZpB<`}ip0G0*If^7-g5}F6i1H5)w zf-J#mzM5BxRf@HcE#yowQ{XYLx9cr*|AUBK#A)IRaf`tF4zCT~k(0OCGi$AOH>O1K9 zq5Fo89{KJ`SQ7S~{7!xud`Zr1Z31|@UnlAZ^#geHO(SpzfY}86_>lW{#a^+5c~Wy>1_kkAi4=aJ|49F@S%eaA6^A5 zc}tF)cHG*}ConIVs;BA>M5Ga*xk+o*n%xjL#6Gr=#vZV~Z_nBE{)|q$a z==)Ju?9JQqwtS+PC>jyCogYnL9?+Bb;Mn?OH|+W^cEQiv1+o)Y*&+$mtT z)7rI;{0NbcP{Y-5&@>=7@D2V3$6X0-{hN^|0K5uE5SZC4lndoKevT(0qB)YdDbUO3 zCdw1#WI0(os2$+_g&Tsl#G7kQ!fxS<>O}=j`f+pIw72ao zvf<#bkNq$DJM7P~EB~B*&hXFJ_daru9Q6A=Tn~p`Z8idXR`lEx`NT+%jr_fN1hfF? z*GmPZf^wpqm`v2;_4qsP9S1Kz+fjGBL(Ncc>NhpC`JcJZ=%PY6Jl51KHG>C0VO>}^4V#9zB`9DE*sJbpq;E&&!58cc z_8cLdbeO}macvwlBs=v^4bK2*6QDgPOiXvv-4s1VuO*TbxZA+pMP*ajz~caS0>};M zZF}3cL<*C_{74`>5Hpm+{BU%afcuL3{61B28ShJ+7w4ln1N<5D69sueju{1X0qJ>q zy7GUUxrFx5}Sl33wtdx4DnvYY^05BBav-@xfNzh&&%f}@({8mWJ@?F z&qbL6$eqY<@<;vuZt^eixBvh1&lUeSdn8F7dx7nTcgv%Q+=#dQ)1@;04GXS&6^#j_KW!^t6X7T|ve&j8#=VD^FB#5H1#_>2EVO8m~` zZqS3{E&#h}`1t)sz^@PQ`7h87es|a1!IKYjnQEq*8LdXEoo1(L z=o-501bi2}vaSr82ki1|hBd>uimSWkuF2psMEiejv`J&r*yY4obJjrHfS-@|(7VJ+ zzLFgH>hqi;r?AYjGz15s|{B zaPV%JPTT*5Y$5AJjOL?xNdmbG@Kubtm>X_}n@MaETgVr3?DXLu(U3Q!i-s!vPxoh( zyD-{~c6G?nAFp!?n?Syj3p+-Cd7si>wenAKm-JG4FUfz{yv`y{*n3$_zL(6_zL(6 z_zL(6_zL(6_zL_JD*!z+JmHbo27kB?yaUhVGP%!*y=*V*Lwri0x8AO{tBwSE!<}lU zf_{9ao~fI*OO{*Zu9zY#Gf zm=i#|4-Ni2;uGQpq9^Og_7f?H*X`>T9&pH;n`kDQpNOmk?(z@XgZ2;ihlA!F{_I=W z7ACpm<>-E(Y*036No*kC-FJyyV)NWQmx27}&|`KZno-UGwCI>U;Bh9kNi72Jm$)Ua zlkF7E2{3a&4kEnjkVS|4g`6^{gf{?g9dH+(Nn{eWSS^;3*hs+lE-%l^w~DQz8n4FV z1o}nX5v(LuuoWx?Pr<9%YWAQysM4GCW-9?t1LW=DcYH6t7boNic_wxyHieiQ%nj~} zyJ9_G&wn8%x{1;21rG*z_T%m!KK`f^ZrrmHi}_;y3HyXKBo?>@G!5wP;AvP&loFHq zWIjL+knMSUe#hORDuUZ2P2vDrg@{J0T#-@b2g(=bMkk^A^Q-ijDTezj zY!uYivZ;2eg-6}5{8viBd(3Ofnz8`#9(#{fB0l0D@lj%w$S3oW+uCV4g8cb@OZY9J zSW$MdL z_!W$@qikhY*+CQV88JmoQ45K5E}g@i;zjl%yY8+#+&z57zvA#AL|))#wwZ0UTP<$v zYl@lz{&&bJM2|Sb&LAbgb&FmSHS0^cg2)Gi&pi6?ilU-uLEyFmUWrvjRk0=5609dS z#Wux~6I+9=!AJr)gkmFQ?YT6h3rhJzhFvIpTwc$G*cQi-v_*Z^6M?-JVx z+}a~^5WRmfSIo^P7K_E=dH1|S7UO*aS$gnoXlYy8x~wkCX0usn5I$lbMfrr#k3d&4 zo50Km*@;zcRg2f@DSOKLxIQ$YDeo}1y2`Fb*?^cK!5`reKNQUmklBd-AM+>pCPIgT zISFza;XUzKK9-m_RSl|AiopFSH=wC(8ol>Q%hIqnAm_@1|Ag9n_x}_4FG0GUIXwC_<;0J!B@anz*oRmz*oRmz*oRmz*pcOQ~`MN z!`H5?DQhwj@M2$PmKpTW2Z)-)ZepQcsI#l=Di2YPD5wi+c&p83v)L2zgf`UQ3+$qy z`G?LL`t><{4!O47k9OY2_%V+D2zhDu*?m@y_VNdbALI|RL{K8Ak)%eFRSBySrU%o5 zbHrJBR%VW6j%5lm1?bDp5XhRFKtL0Zy>1`ghyU(=k9tw;eY=TnqAUTgcg!!)e+}k? z`HEmgFpPL09#Hbz9|Br#dwan@Laoj5e>@ZD=}n@4&ANj%P z`&o@4R)i};JWu%HRkD?AJJZfIR*h9d-B5Q^-Bc-EN~2evt!Ar%dZ2~|z5oG_`_j6! zPOg%x?+N_fV!D`aLzD_jh45Nzp<1Zx`nuk0_L_YJ@)uCgDSQft&q5BCgB>RXeL;IL zf{lpu1l4(U{)hR)Y*L#PvKgVxz|Wa)<{M-=E+e4lhbAAH2Fr1+0yz3eX2l&GMaYv!7bZllBP1T_9%$S))`|IjdC&yLssF=gSM zW9K662lNDaWnPJyL~jDxglTq~#SKRiA|+4BF)J9(hx7Gvy@bC0oIMxaDa>Q@qSp`J ze7GBdMkv^2|NefOklq8EAfCmV94h~CShOE zSL`D&D}Xkl6#;L=HwfGSKzCA96cu-fVRD$vLmVX9iFV>NKh5(I_ytC{qkBB1zy(DhE ze`UY2Zsfj>ejRu4tN5x&n~pLUa)ly)`xS15Lw}B54m$j6#9PDyu^`H%AMS>`?+NVv zcN2X?AL<5Y3-r2=?PH5Rb^ss1r?ROmsYz;}oySf;HIdS$v@KW*hW>h+-A3JJH+#ig zF;xiMt~XMRR6$$N!t1_?ZDMPhnr4_9rtsBPx7C;z;MV?o^Sv3ShiPaZ%DHl+rpWI; zA-*zSnJL6>y;~n9Xr>9B%g4ur<*Q0lfA{%h3`y{5RMQ_8oz{ z0L&+AmdG@OcfbHMz)aK=broC1!sj0uetX4U(Vy}j_6Pf;qj}tbV7`N_ zgS@0)z-zXQEn`RJQTbFn706{AUQ1y~;3`=ttl-1U?nJgWbWW z;!{zVfFA?yP~Zp9k3hCzX#%;2SqRLK;8&5HK(-}*uJ8Zb~za4A?7TNOJP91Lz!w)^YB>ybxW1yO<01`7y0o;*AcFD8r0 z6Tyj~F)@m`Lfj>g@7_Ul5Zn3oC@*fa+$<}L%Ho~io#0FHrRdFiN1l8;*be%q-V9!U z@D4!MJ9;+UyyH&cP4TAa@A{K_-ysK$Ky_Q)zDUf`b2RqX@GpSxKqVr#$!+fGdm1@~ zWqDZ+AAov<I-smb7?`ONoo@VpIq0<$p21M13^+bj*5kQszBo9;kH})`j(Qz1%%}&*F~Yg1Zpi z*1s-Z7kI6Ialg<7#C7V-H__kf)*}qCM4eAZ*aU1 z3Q-p0z+hky6ESk)t0ul=Uq*K&`}uy3KZ92ReEF7&rQ&P%wM%A`+4tOg4!(PMu6T{m zZ=)vr>^=+6Ld=G?x~&dAf1L=-6>#4&PK*-`WCMwONO(&$;0-wP9p56a27LcC;-a`H z?#uh~E25+*DJscI5?Yp71nm6aFM&E>u7mH(M`R;#3xd}KcL2Wk{|9|g`lsS6;49!O z;49!O;49!O;49!O@DHef)mCG7Jcfu7O?VUj)IPP)aDTBmPSGE8z)Ik(iidViL>*+Q!<(ehGdF?umOMN01|U%AZCa1INX2fm?s{(zRqQ zc{Dg0^d_nhwF%tC?I+6b$vIjoaAL~A*kJ+R4s7yMO&SJAzXuYAEuT1RHyYyXk zSG{ZAHOL@<#vMKg*cEpcodsqp?OA)4(xf!?R6W&Ich&F|L>>Wj>DbZ#K>X-_bVKYA z3$Hxvso}FY{28-`a0&9|Bs5 zHN;=`FT295Fe}wcg}ejkFs`|4E(6cNv9rc4M0eZWPSewLU;j(7%+vOTkSD<~$GC!$=bm#7hD?2^zOpyhgasSnL+NM4m|Ru!h``;p2Py zJ&jui+*Dxi4}XCz1iTXl*+I55v6L^R3zRw0&A=v3P@QJ-nS8pKE*i_m67#B4>=c8~ z1+*ZTE1|#NOW^K5Su9yBcaS?s5DB7)EF$4Q2(LtBNo*kSKF53IP2ykuKW-4v|NGtl zKj6dBKLuX_UjbhMUjbhMUjbhMUjbi%e^>>eXNUh9G~$9lk2Kj%w($MO?LYS2*dO22 zH+3~tO*M@-jgL(nn<$CHPY*xMpO`Yf@s^yl_-iyQQ{cCEcc+*9||v*uY7 z(=q+C{n_>;a0^c>VE#S(o_#03ljVYP!GMGT3Fx=#1a*QL2{RJP$#U`}KNy9&Gl&mnRMcnmBOiz3f@WDt(C<7^Y%L}SL# zoPhS=qP=MI>b$zOZ5?I$!N2c>J3;F8n=TD;lpp0E6Yx-Ipc`oP^6Tt6i`_H)01|bg zKCBL_N#P`%$A@F}SbajBP|yMtCE%wwO-)lf!=2$1^Tfc{Z-?6v`S{;;cinv=kIiEr znuq3&zN5>kvTBW4W76C77CY@UJPoJQdV`!t+_oRJM=i1zFNh1GDR0XEAbzHlK+I22 z!w(32AO0?0OYHy4m@?*uzM&^m#$k8Uoe~hYm>7?7=rXWJ&n0q2^CHypPyMGx#shw5 zZ`<46R<~7AQ`DSNr__V+L3rcoji>Vx=OvB`M}<{X71c?1(zss%&}X2&)7^CUoBhom z)CcuL`!LcTzy}cb9@~gfd=$rhNCVp-@z)Y*2tS6yG7)fBR zv5G*ZCGr%?5P1mPETI4Q+W&vphopZxz5>1iz5>1iz5>1iz5>1iz5@S{3JftrOkM(a z{EPG=y@s#hxHUh*j<9p?oNH&>S!C8h7yraQu|Mh`^-MKWeHi~R{*>4k?h9Ayl^VSw zZranjw62HkVRsV!Tt9b4ol(UDJgN(t{1R|IktQM=q z6?sL%>mAv6@B=_EwlUZkK$D$F^ppLfJUM9Oalem#b0VJ@-4&b`r=wf);-WaI1dd0& z_h>O%6p0myl}sp^usZ4Lq>B<3C2WyfWGP;XW4D`+KsFsR-o}VA0$y*(ru&io$lwci z)EqTwbz1$Y`cx&STm4KblWL_~X>Pbd|Brq(x6N%oBjP4*u>Zx~LnuOloAsnTDMzjV z^!FRhM$?!X;|F)kF{g% z+;DFAm;Ot`OaD5%&Q`nCuDxon3WNp1DTz}OcgJ_fcM!iM{*st4%olbb@~ix6Ongkd zao9L4WlEW=>Z*d@0bZ}b26hX9-*-qIQlp4J!au?b`a(3*f$!gZHlGdFgEjINUvsZH z%yDiJsd%a=JMkvF8F>?ocjFzh03>~-B(SqTADj>HTBF}buHqiOM=!BUNP%$N&fqin z2C+dv$B$c$;;cA(jz7mSBZ5c7P9isfy8+AyTDq35maS#sKY1iP66H{0cmEUnDe~cm z&mc4b!|m`Wivc(JxLNtb{$UrJ#paYdMaqm?4s#cH2w*n#lln;=)kih%HzpBd+!zP{ z$m~J(pb?Q=Bp1j5e83;j|2o!0H!OHhLN5YMM0o-^0NDwj1Mm;|VDwMJSHM@mSHM@m zSHM@mSHM@mSKuF50qmgB$6{YP&&)G#i?_uDHzD$6ho%`GaqGo;0be-mMREWAjs8Y2 z373RZh_0%u!hRKbZqN_FzwT}Gw%Mt7>hFnXiDwA-$yR z4W1<)$w%_CxGW4a3|fPdtR#bGez{$4ued92zu9k)4+yZgKV%M>g+yAOmX{;e1?z%j z#9#a`4&S;uybeD{zWAKJko|{UIkffgpF{unz&tRa4mErg&Je5hYP~hw8fMTLG~rAT{r5yV@}Xbn9Ab*-!Kn=}meA4aPYFJA1r_$#gPZ%9gU2IUrN7ur5qV1I09Q z{Lt@qcAee(#ArJ@%H?~-z2chMrWTJOiAiFh(NE!0xb@)nCD0iTYEFXF-DJxd=ub%xYDdNU2GRS zObiqCWqrAYZvAn~508Vt2)q~m^@aDQ|MC^^74Q}C74Q}C74Q}C74Q}C74Q}KJ5=Ch z_p&=~j+;exkv&F4`&#lqKfn$|_uS}HEw`k+AI#ShbKP9mfIvTWSzp%h_(v~R!B(*S zO@F$4e-~%lrW}!-sG)065?(2dOu9|vFgV-{H@Ihq=UPQq(KV4x#L^3n&3#v%_OY{`*7s(BZBbp6~T+J^MsI(bLQ{ti{b~qLeG;aEp!|E&ShW z*cujl)qQFosRO#I$!4bz0GU(HH+-_ z_QXgzQm$sJqr2@_?W?w{=^D*1K2jek_#P&A$=wBe!PaKA86IP20vQ3tOfhp(pVXJl zWiv<*(#SBx&ixpHTm9)~y17owv@>l7)`9gU;2Hm;_)*m2wRm^YU8LYCIJDw5ObrA7 zIt)snrN<3HI-Ab+)BPw}p{jmB;Bi4O@lE`j_<`_1Skjer-B>qv!k!?PzV0?VaYCFB zlY&XX9m=VnN7{|KdallBGSVf+8iUsgdV6Rrn%QRdE#jm(X*7K`bxj>~@4Z;BD8ml- z9>@};7y^O)Is6{x*f|!r`MBGE%pS9CVw*q~0B$Ydn|FepU;%wKl}%+yqG!-Ez^=a! z@go5bhTn+aiOoqiC)pu)$RTcsOU9B#If5xf3V~dS337t`gn&k)m+U2x>F^VQ*Y+j% zl7oNbO@5P)W8)ZZ?{SxcTa@HBx!tC>=?Qj%#jVFwA`MZ6SD{Ogi5&h7%ZWj5kV8!p zSOV+mdb->qw?IAxJQd*E2(86Z0yC`H#3k}j{J?$?WjEdxcSR%FD9SfHEDnn{yiJtB zfNVo#3$`RG5`~DD33w>Np8?+gNeSfs1%&u7qTm3=|J^?l{NwW#@D=bC@D=bC@D=bC z@D=bC@D=!nRscP_p)cg8;m#X#0QdpIPaXXla^&H`UXT@JY;MR)PK)c>(ZP$R%^h z&B5jX8TA+SMcp=R8kkn#8iG1v`u_?ekqW(V&& zVTFY+{z-9C;6C9u;;cTa{~*>8+sroeHhY_u&?PkPD@yay(H;CLc}i{~z7SuCXXG>T zWdd0ZzY#r&!m_X|C(4OR36&Dk$TSjJ2H8pHf6|?d?moU{-!gbGbQN6%asytKugWsK z49B1Mv;FKsBArX;hEm2P<}JuPz?|fYzM@|x>Zm$uompq5@~OPEC@ntapYqwnX0cgd zR)7q_g>IpH$-HFt+x-@I8kh&*dE=iO*+!9OWv-cPb`i*Mq^L%hk+^AYnv5c&_>dSN z2S~hkFaxPdH0F&t?o!|ZIDqgTfd9}BNB^{Z1$+g31$+g31$+g31$+g31^!_bXy_U` z__&>6XBa%!suG{tPs!=;i49rEI@k_&3>y=9vY|IDE6R$=L_gk-cW@mX{N2m*^89)6 zyco~N^K0xHOE1$)^v>}6hld+H?6H$Z-w%&Gc+cbh`>MHW4)6m!y+|+6Q({k!+kNy| z@XE`~GxKBOm_XJVZVuo-fQ=wgadPmdIY`5F(dc9u5!#%UfYznDDsx#3q-Y>qF zsI6=3MP`v{#+ots@ZTfQ^CHi$lBr~>#jC}CCHf}zO~k!C?&7x+Jxx#3OgGbs@x=HC z;RoU1_~7`hC%2xo3R{KGs%KSi-CHkE3sfW1$b3h%AaK`yU0>JmxWlddBm2m{;9hXp z>m!rCFe}V5xlAslO=)MDS&@(4U^bX8+Ox2kW~LdS2k86+`~%VZBR>#74}Jq3cn6+L zBoj~g6TXLX0jClBf_*{nSnnA6X7sW(bxnQ8+%Y&%S4NqXDy6zW9)9l<$n^VKf33Tz zZfY%C%cj|BlUYq3gM~~X^S*sQ(uiO; zk6FfUzME$yI?K*7Kk*_#HV&~H@`l7sM-G`oPDz-OfLQ=;`!SorY@=dOF=!wfh`OvU zYb)A{9>nz6^w>A@8~HDP1l;dKv+ymE+NQQ&yRY2>qOECb8WVVZ;8##c6cT$0_(;4* zz;|&U-^ZV@Cv3i(@A?wBXE{vZ&$klD`GfA_OZ%mL*}QBpe}ShTv@SVWPS%)MDwjq& z2Fy1;AdtV1kw9+6zcLOgu}bu+7XE+t|L`$@e9-~a!^K0N)?@fGkD z@D=bC@D=bC@D=bC@D=!*RRB49(5!c)r1r1uS9ZBsZm|D^PdYs8ptZinukoS;G|xsF zS(kWMyeocSKd?LQj>E1Mdr|D=;YW{t>>j(vq?NWhs~+jevGYa`d4y=h8ZrFLEG~&UOVO*(9$kB$qTG4t5zgAPwwY_@a0k&Q-X{LMeqLuH;Bx@o0J7{q*PmUZ9gcDDKC&7#2Me&Y&M;5RJEM@@EBw&t#n+E*7zC>o0 znL$^Pi{)b9@$YyMqPc7yy)UYZ>H>X#4Ov5$3`z$5d4IkrSQNxWOu#E2`*_TSpogd^ zDhj+m;0=iSoRjC|X!3bPj$THa(N-`OqCCZ``YK&soFw;%O_3HM&;e`@btBbCL7R|P zq!qXLEk4{0kFo)tvCr5Vt_D>yeWV>&ZCBfO*gKSz_*OK>szAAnl?mtxFpt@1_8H@h zTf&ymg+({km-pqviC^Wfa#d_qtQ_SRe!xHAV~NFVFiTlL8AG{xQ6Wv4xmVtfGzvtf& z$K)}Yo~P%~Dd1MUtLy5ZU$|s1k&<25wPvmPKz*R#5C0*~5aW{<&K zU^B5PaZ}>k;oISa#0iOtzIN$ddYBnz9=pdb1JA%`xEYb>dudbJERQdbBmc0iYO5X* zt%+Vlaa~-8DpXx{SB;t=e;#}5v2LvUfT&`snCb+41y1QxI$4-3{OsvxPd^Pm4XfE| zHaq3U&C;_pz6ZJs+$TU^j(!!nb(jHYuK7*^nuu%Sn%KxU@@K`fqP=V{ajO8`I_4I~ z-SOz&!3ZPJ>#rp~C(z%*!|@Kg!;o!&WiLv$8-KE{3&duTB$4XEAer}+9zwD zv`uWA*eGliZi{b=&kSdV=i}$&$VlkKIJ0yVNeVA>0sdB5Ijh(Jl1= zH9(~$ejo;$!DbHm#rHH;$A+o3-#MLBq#h#!fM&Btbvnxvrn{#pI3aI?QUTpd=| z)irJtj=G}`*?OnhX@;MJSqJp~j}jjxeyBgxxm9j8lYlSZmx*5{E)SQ7cZi;a0` zqs=NJl}km+fo5)q9b$J7xP3Sio(Z8N_~hv)PYcHj$1CUx8hvYmPSD?}?-cYGIam%> zi-7muBBBhy2dv^(wci~It)itr>r-`dw!m6;b=6g(URW=Ds2-}tR>V#URm(i6& zO}$JlQ>6&_1oYy)IC3Ofk{=&#`;lpZo}6qH+)}%gUcnp|8H>09SV5qN2M_E6a%vc6 zkx2>f#{{0h@q92u>L>fjZVBBI>L#h1q-LyU>@A`(a~P9Hbt@91|lW&!AV;N#cF z^fAv9hxK87-`#i6NH^!rqn$dm(p_8^*Gu%GZg!iPNMw#>j^z<~!~u7}!TawQqEf6< z?6SBV^|x>GH+deJM@|o>2e>cTOhETOij88}&7yaOS3k7x*W9(p<1Lv6hjn#beN)|39ZUzaIourmcWB&iyW0*v^XK__4juoC#2_=slnP6Q zy(v!sy?P(jM>UT(kLOR!pZH4nO86f6`OgYxg}4oXKOg$kX#{laubI~j<_A~EKmV`z zU-2+8Ox*i;@8dl2Jn>ulR&+~{L?_YN;@RSj!^Re^E!&5u^AhN-KCF@?n72CFTwl2zX?^M5H59{+9;8 z=K%bNe31I5=_}wX;49!O;49!O;49!O;4APqsK9JD+o30W-ac5 z4fBEtW`ebvk*+ z^ho?j96EaF4{$&5YW&rB`Y?UC+w6|K5@(nhrk!m^4s~DJWGgMq^IiB|cp`oxo{WI@ViZw?_|Sf6C$I^ux~wjdX}3058+1qnWk>l{@Kpd^ z19tY%?Z04NFvE$Y#C}3)Mc4m<#(TAiZld9Ph&}rzzKP>rWT)P#+n6>6c>-&QJT?zi z>NH(mT!>~_n8n~{>{h##Al@OK5b$?+&%Nj1BRQMRX7GvlQhX_}_uneFM)`)j#4eGN zfc6A4k1vS+L<6EUk(1iz5>1iz5>1iz5>1i z{{a<1#yvdGUuUngEqaU2X>yv6+(*={zwgcy`11m~fPRqpATfu|q4DSFC9&W9mH)~w zunX)j{uf7PToRkaZgpE7`gQ2Ap^sk}Ul`A?@~h!?I9+Bxj6Cje5073PHvzwhU&J6e zNVW~ylG49Q@QipyV1`i2lrn{EA=`vE;g~DHZ!fFOYT@PHg>_-@{)Z<#{Qod3=q|cP z{VDwCejrA&k?d3Vsk^CfQmWtONL!9ue%#VSZ;$*!_#R+}P+!y+$d!X{0eb(`BDI*z zCr5dBxB-AS!ejMVZH{k_Ptj9!XCjl$WcP%7!qxHB@llkKxZP|w->7d?K~vC-a3iAK z_AK)FZ{b?Fopz_?hMOv`O4Oe&2p5FSo;G{BGjV5PbyZ!hB%mdzn^-q-3DGC)6E-4m zyY}(+@!nzY@K^P#%4KpH^tPB=EFcg38n%XorU85Yoo=VYUHwYEQkPTZ)b9B1ICL6$ zD0dNe5AY#CuUbSFk%f6-o|?cN1v38%$wD%d$Ryy8_?i4nqF;p`{=UAiTbh=U{@{21 zJ5L*=4JrYe&5*snOdvLjjbcNvA=o4Kh}J>t=(TGv+6(N)aqADCf6S7Kv*HZ%Ba^dRWjF+MFZRDG|5W8oMU)gh2iTzCRwu!=x&y`a1q~yn0wY#J$Tw z0(ptF?sxEx_>uicNdVi~8{!QyFkxWA{3P>}j7vH$X_{D?*nLU_Kvn^?3MB}<|M5J# z5;X}tSL7nV_W~Lh?+5rF@FD7-qOX9jfUkhBfUkhBfUkhBfUm&cqyq4jA4nkEuc>Kj zx)Rut!wda0{u#%<9ld;a-CY-V#a&<7SGFbcioBw{EH9z|UP~m11aa1#b<^#1yUXoz z6YK<=pb}K7FjXjt%DS>9OFEN46jp^5wD<7V&(HJop<<{QB8SLJ;*!8_xtJ=Zdc=Fg zzaU2I(Yk)TK6T!k<1dFVhYQt0Rn=5Aht=VzZ#$?D>f`pfMP>kI6R#4;eM8nj4g&rK zxLL1hYmz(R`}UwYXpnJOlz@jDas%qi`tqnfYO%9T8KexV#Hz$H1(|{c1hnOc+##3I zWHc33MFl;7Gt9=!Pr1O)=TPG1LK2R&mw zV<(7!zV3_rk>`J3(N}y&U`7D#0B+∨vx|;nUr82OR=@BDd*n8W{}mSXe={lr1GP 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�T-tqO%x4m?$SoXz;-`G!@wi*?6`v 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

    xXQ2c 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

    -fz`yq!$p4wIfUkhBfUkhBfUkhBfUkhBfUm&c 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 literal 0 HcmV?d00001 diff --git a/root_dev/recordings/baseband_20-21-19_02-11-2020.wav b/root_dev/recordings/baseband_20-21-19_02-11-2020.wav new file mode 100644 index 0000000000000000000000000000000000000000..89730c67bf157de5c598bd69d9745ba426b92c75 GIT binary patch literal 4505644 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Μ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

      U0> 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 sDV=0!-_4Ug6;3OA( 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 #mIPr%Q|?6SG;12Ij0BIet8@Z+zhq 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 z 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%0A?WZEhD&}ikax1S2#xlv>dR#*PX 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

      j~L)^=>zg#((; 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�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

      Lzcnc_|{VOgB!NT7Y(!C=+>?^kw(XFeOSbt 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

      ynY7k*%g=JPJXL!%b{`Bm;V%fgCEA5}pw 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

      vb8T1l92P6CnG>ykafR^2w>pFP5CNR_#=e*4?Zz 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�(k-+ne@V^dAW*#V9prnM324%kjm8GXom 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

      DY|ef2&69?4&t!_$&n%#m%hC?V;7% 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

      wv^RmAlffVcbS^#4xiCx2L0**emPoA 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≪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 z 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Ⓢ(>aAA_=`Q`Czv=E|qkSUsbR?&}aXj@c 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 I@T>9v0Fki3RsaA1 literal 0 HcmV?d00001 From 5d320fdd53bbfba6755f7f1a316471e59c047089 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Tue, 3 Nov 2020 19:22:53 +0100 Subject: [PATCH 088/127] Fixes --- core/src/dsp/block.h | 2 +- core/src/dsp/resampling.h | 31 +++++++++++++++---------------- soapy/src/main.cpp | 3 +-- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index 318da8a1..090f1aee 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -69,7 +69,7 @@ namespace dsp { } virtual void doStart() { - workerThread = std::thread(&generic_block::workerLoop, this); + workerThread = std::thread(&generic_block::workerLoop, this); } virtual void doStop() { diff --git a/core/src/dsp/resampling.h b/core/src/dsp/resampling.h index 02da3c26..2c88504c 100644 --- a/core/src/dsp/resampling.h +++ b/core/src/dsp/resampling.h @@ -92,6 +92,7 @@ namespace dsp { taps[tapCount - i - 1] = taps[i] * (float)_interp; taps[i] = tap * (float)_interp; } + bufStart = &buffer[tapCount]; generic_block>::tempStart(); } @@ -99,7 +100,7 @@ namespace dsp { return (in * _interp) / _decim; } - int run() { + virtual int run() override { count = _in->read(); if (count < 0) { return -1; @@ -107,7 +108,7 @@ namespace dsp { int outCount = calcOutSize(count); - memcpy(bufStart, _in->data, count * sizeof(T)); + memcpy(&buffer[tapCount], _in->data, count * sizeof(T)); _in->flush(); // Write to output @@ -115,21 +116,19 @@ namespace dsp { return -1; } int outIndex = 0; - // if constexpr (std::is_same_v) { - // // for (int i = 0; outIndex < outCount; i += _decim) { - // // out.data[outIndex] = 0; - // // for (int j = i % _interp; j < tapCount; j += _interp) { - // // out.data[outIndex] += buffer[((i - j) / _interp) + tapCount] * taps[j]; - // // } - // // outIndex++; - // // } - // for (int i = 0; i < outCount; i++) { - // out.data[i] = 1.0f; - // } - // } + if constexpr (std::is_same_v) { + for (int i = 0; i < count; i++) { + buffer[tapCount + i] = 1.0f; + } + for (int i = 0; outIndex < outCount; i += _decim) { + out.data[outIndex] = 0; + for (int j = i % _interp; j < tapCount; j += _interp) { + out.data[outIndex] += buffer[((i - j) / _interp) + tapCount] * taps[j]; + } + outIndex++; + } + } if constexpr (std::is_same_v) { - static_assert(std::is_same_v); - spdlog::warn("{0}", outCount); for (int i = 0; outIndex < outCount; i += _decim) { out.data[outIndex].i = 0; out.data[outIndex].q = 0; diff --git a/soapy/src/main.cpp b/soapy/src/main.cpp index 81ded3b5..027f7df8 100644 --- a/soapy/src/main.cpp +++ b/soapy/src/main.cpp @@ -287,7 +287,6 @@ private: } static void _worker(SoapyModule* _this) { - spdlog::info("SOAPY: WORKER STARTED {0}", _this->sampleRate); int blockSize = _this->sampleRate / 200.0f; int flags = 0; long long timeMs = 0; @@ -297,7 +296,7 @@ private: int res = _this->dev->readStream(_this->devStream, (void**)&_this->stream.data, blockSize, flags, timeMs); if (res < 1) { continue; - } + } _this->stream.write(res); } } From 31562367456b96a6a027543fc0dcb306c7a179fc Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Wed, 4 Nov 2020 00:42:39 +0100 Subject: [PATCH 089/127] Fixed DSP --- core/src/dsp/demodulator.h | 11 ++++++----- core/src/dsp/filter.h | 3 ++- core/src/dsp/resampling.h | 18 +++--------------- core/src/dsp/window.h | 7 ++++--- recorder/src/main.cpp | 6 +++--- root_dev/config.json | 4 ++-- root_dev/module_list.json | 8 ++++---- .../recordings/audio_22-55-07_03-11-2020.wav | Bin 0 -> 6156332 bytes .../recordings/audio_23-11-22_03-11-2020.wav | Bin 0 -> 1929644 bytes root_dev/soapy_source_config.json | 2 +- 10 files changed, 25 insertions(+), 34 deletions(-) create mode 100644 root_dev/recordings/audio_22-55-07_03-11-2020.wav create mode 100644 root_dev/recordings/audio_23-11-22_03-11-2020.wav diff --git a/core/src/dsp/demodulator.h b/core/src/dsp/demodulator.h index c2914a95..b08cd820 100644 --- a/core/src/dsp/demodulator.h +++ b/core/src/dsp/demodulator.h @@ -37,7 +37,7 @@ namespace dsp { _in = in; _sampleRate = sampleRate; _deviation = deviation; - phasorSpeed = (_sampleRate / _deviation) / (2 * FL_M_PI); + phasorSpeed = (2 * FL_M_PI) / (_sampleRate / _deviation); generic_block::registerInput(_in); generic_block::registerOutput(&out); } @@ -55,7 +55,7 @@ namespace dsp { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); _sampleRate = sampleRate; - phasorSpeed = (_sampleRate / _deviation) / (2 * FL_M_PI); + phasorSpeed = (2 * FL_M_PI) / (_sampleRate / _deviation); generic_block::tempStart(); } @@ -67,7 +67,7 @@ namespace dsp { std::lock_guard lck(generic_block::ctrlMtx); generic_block::tempStop(); _deviation = deviation; - phasorSpeed = (_sampleRate / _deviation) / (2 * FL_M_PI); + phasorSpeed = (2 * FL_M_PI) / (_sampleRate / _deviation); generic_block::tempStart(); } @@ -87,8 +87,9 @@ namespace dsp { for (int i = 0; i < count; i++) { currentPhase = fast_arctan2(_in->data[i].i, _in->data[i].q); diff = currentPhase - phase; - if (diff > FL_M_PI) { out.data[i] = (diff - 2 * FL_M_PI) * phasorSpeed; } - else if (diff <= -FL_M_PI) { out.data[i] = (diff + 2 * FL_M_PI) * phasorSpeed; } + if (diff > 3.1415926535f) { diff -= 2 * 3.1415926535f; } + else if (diff <= -3.1415926535f) { diff += 2 * 3.1415926535f; } + out.data[i] = diff / phasorSpeed; phase = currentPhase; } diff --git a/core/src/dsp/filter.h b/core/src/dsp/filter.h index e530b295..e59c34a9 100644 --- a/core/src/dsp/filter.h +++ b/core/src/dsp/filter.h @@ -135,11 +135,12 @@ namespace dsp { count = _in->read(); if (count < 0) { return -1; } - if (bypass || true) { + if (bypass) { if (out.aquire() < 0) { return -1; } memcpy(out.data, _in->data, count * sizeof(float)); _in->flush(); out.write(count); + return count; } if (isnan(lastOut)) { diff --git a/core/src/dsp/resampling.h b/core/src/dsp/resampling.h index 2c88504c..0abbf6fa 100644 --- a/core/src/dsp/resampling.h +++ b/core/src/dsp/resampling.h @@ -29,14 +29,10 @@ namespace dsp { tapCount = _window->getTapCount(); taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); - _window->createTaps(taps, tapCount); - for (int i = 0; i < tapCount / 2; i++) { - float tap = taps[tapCount - i - 1]; - taps[tapCount - i - 1] = taps[i] * (float)_interp; - taps[i] = tap * (float)_interp; - } + _window->createTaps(taps, tapCount, _interp); buffer = (T*)volk_malloc(STREAM_BUFFER_SIZE * sizeof(T) * 2, volk_get_alignment()); + memset(buffer, 0, STREAM_BUFFER_SIZE * sizeof(T) * 2); bufStart = &buffer[tapCount]; generic_block>::registerInput(_in); generic_block>::registerOutput(&out); @@ -86,12 +82,7 @@ namespace dsp { volk_free(taps); tapCount = window->getTapCount(); taps = (float*)volk_malloc(tapCount * sizeof(float), volk_get_alignment()); - window->createTaps(taps, tapCount); - for (int i = 0; i < tapCount / 2; i++) { - float tap = taps[tapCount - i - 1]; - taps[tapCount - i - 1] = taps[i] * (float)_interp; - taps[i] = tap * (float)_interp; - } + window->createTaps(taps, tapCount, _interp); bufStart = &buffer[tapCount]; generic_block>::tempStart(); } @@ -117,9 +108,6 @@ namespace dsp { } int outIndex = 0; if constexpr (std::is_same_v) { - for (int i = 0; i < count; i++) { - buffer[tapCount + i] = 1.0f; - } for (int i = 0; outIndex < outCount; i += _decim) { out.data[outIndex] = 0; for (int j = i % _interp; j < tapCount; j += _interp) { diff --git a/core/src/dsp/window.h b/core/src/dsp/window.h index b71070e7..aca55df3 100644 --- a/core/src/dsp/window.h +++ b/core/src/dsp/window.h @@ -6,7 +6,7 @@ namespace dsp { class generic_window { public: virtual int getTapCount() { return -1; } - virtual void createTaps(float* taps, int tapCount) {} + virtual void createTaps(float* taps, int tapCount, float factor = 1.0f) {} }; class BlackmanWindow : public filter_window::generic_window { @@ -48,7 +48,7 @@ namespace dsp { return _M; } - void createTaps(float* taps, int tapCount) { + void createTaps(float* taps, int tapCount, float factor = 1.0f) { float fc = _cutoff / _sampleRate; if (fc > 1.0f) { fc = 1.0f; @@ -59,10 +59,11 @@ namespace dsp { for (int i = 0; i < tapCount; i++) { val = (sin(2.0f * FL_M_PI * fc * ((float)i - (tc / 2))) / ((float)i - (tc / 2))) * (0.42f - (0.5f * cos(2.0f * FL_M_PI / tc)) + (0.8f * cos(4.0f * FL_M_PI / tc))); - taps[tapCount - i - 1] = val; // tapCount - i - 1 + taps[i] = val; // tapCount - i - 1 sum += val; } for (int i = 0; i < tapCount; i++) { + taps[i] *= factor; taps[i] /= sum; } } diff --git a/recorder/src/main.cpp b/recorder/src/main.cpp index 5936db55..76675b5f 100644 --- a/recorder/src/main.cpp +++ b/recorder/src/main.cpp @@ -179,13 +179,13 @@ private: while (true) { int count = _this->audioStream->read(); if (count < 0) { break; } - for (int i = 0; i < 1024; i++) { + for (int i = 0; i < 240; i++) { sampleBuf[(i * 2) + 0] = _this->audioStream->data[i].l * 0x7FFF; sampleBuf[(i * 2) + 1] = _this->audioStream->data[i].r * 0x7FFF; } _this->audioStream->flush(); - _this->samplesWritten += 1024; - _this->writer->writeSamples(sampleBuf, 2048 * sizeof(int16_t)); + _this->samplesWritten += 240; + _this->writer->writeSamples(sampleBuf, 480 * sizeof(int16_t)); } delete[] sampleBuf; } diff --git a/root_dev/config.json b/root_dev/config.json index 8f687bdc..09598df2 100644 --- a/root_dev/config.json +++ b/root_dev/config.json @@ -1,9 +1,9 @@ { "audio": { "Radio": { - "device": "default", + "device": "Speakers (Realtek High Definiti", "sampleRate": 48000.0, - "volume": 1.0 + "volume": 0.51953125 }, "Radio 1": { "device": "Speakers (Realtek High Definition Audio)", diff --git a/root_dev/module_list.json b/root_dev/module_list.json index 3c037b78..b93a9b45 100644 --- a/root_dev/module_list.json +++ b/root_dev/module_list.json @@ -1,6 +1,6 @@ { - "Radio": "./radio/RelWithDebInfo/radio.dll", - "Recorder": "./recorder/RelWithDebInfo/recorder.dll", - "Soapy": "./soapy/RelWithDebInfo/soapy.dll", - "RTLTCPSource": "./rtl_tcp_source/RelWithDebInfo/rtl_tcp_source.dll" + "Radio": "./radio/Release/radio.dll", + "Recorder": "./recorder/Release/recorder.dll", + "Soapy": "./soapy/Release/soapy.dll", + "RTLTCPSource": "./rtl_tcp_source/Release/rtl_tcp_source.dll" } diff --git a/root_dev/recordings/audio_22-55-07_03-11-2020.wav b/root_dev/recordings/audio_22-55-07_03-11-2020.wav new file mode 100644 index 0000000000000000000000000000000000000000..c7de3d78c30e1300fa86e0e35785b9c7fac9fa63 GIT binary patch literal 6156332 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

      m67$^!R3MN{5Exifu1b4Nw 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


      o^70?kkLmqtzbfmM^$t6Soj2__spaiX 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

      %*Ywo@LJ>r}tPJod;K}D;D(W#hu~~xS3_mvYsQ% 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

      *gMI4?9nwNJ80?fL#E(?$J?KoPg|s+X;nO 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

      7I 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

      5QC&aQiOOWJQFrb8>RaMvIWC(Sbk3oQ-`S& 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

      |o?zq#*S)R2S7r>AyoD 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

      r?BsV0l%j*(zcZJ*)a+i*m zj>F4P%~UflCSFXygWkb*u<-EzB7PC|yn5aNeL#Omz`Tpzx;DCvZs0fY2dP2o8~KgI zo&tM}KFL1G)``}MqxPsxI!WgX_66JJ@AA8Q-Mu_Pp5T>?S2Et0@5>^QA`x)0SS?n{ zD3gzX8TdLSGxp?c=iTh5 z`YCw!PsUHiuSBjyVk)Mjk!FEiVBe5$$Q#ic(UxvY7rBiz&ZjbYCWl_(9s+hI+X%0x zUQcb58zuOJw;wqSZIf-2yMkRoaq1w%&IkJnMIVovM-4I$FWQUtiTD$7^kTppfSkiD zH_PqhbaK!YF;z`f6A8$bcqsl*9RB|4c6!=3aWQoHnmNCJW@7aw| z%d6#`@=y6E`APmp1x`P8u{*K@DX5^%~YAH z8R0eant?9hEI*sRH6yDZcVy_VU+1s$KiD7a2LgQT@W3BthuLWYdf=-D!Rc+Jfo(KlU5&`=et3^Z!+Lm0|XVcj0~l zJm@V%3xWOt1_X7=9Z~#Yg^>~A@{H-0k?GAwBeh-rEV!k zfpo8{*VRpP(;!zNugPoHs7&&?kUQ{w;(-W{`pA z0l5a12+#pRecZ-QI3*nm^6I99#}0lMG#v4Ji+BzWpCypKx3p7c=Ax ziTOR-W?S6%F)KsYfbaV)VY;5KJKN3{ngP7WczvBsXR|;r&@Y*n41O-;Beb@yNp-;N zK*B6SZ_!&cA>=1OXMzm=bA+?@ti|sHIwM-^)*5$z=vJUVC`rJ6qL=QaA0@y?0gm7+ zK?Xnv)4^c3g5M3iSMX#&qwpsInu5dTut7$|Kjt6vFJY>kYX2Z$C-a5=LSu)6ObmEq z!oOf410e$;10e$;10e$;10e$;10e$;19!^6rx~ASeB*rMbWe6q!pr}PeZ@YJ`9$W2 z!G}Q&uZD-t^X0+v;Ai(|w`;s>e2hEBg+KqPGG>gm*W(R$pz7F&VN5xSwDmp3( zy*+jn+S4BH?CBf;v&P(XZ@TD2Kqvc3cct4)^-^_n>gFJy?%T+>ky-96x0EiG_Io2Q zzDLj_K*wF~Aa~GCv=iu*$K;B>gc7QRn(Rz=&l(as?vk-BYeo0Lka5~76Y zAM_8<%dm~|_9zlUP81WxyUBNxCHxY8x1d{q42Vno5+9<5s5i}<>1<2v0Jg@r#*xto zeM@;+UP7O7LY|O#u4||oYA9iezr>#=r^);E{W>n<0?$FApipqqp0v-PSir7!V3(zptF!iE+ z(N2g=h@A7!`FHwz9)4cPK*&JIK*&JIK*&JIK*&JIK*&JIKuKPbBZn+*?Ciq+YA|N$d$jXZ&Nc`L5+Jd=4E*Mk&TYNHQer@ zDR|w!ZqaWZ-v9sqx&Py)4h=gz<K-_o91P98Py7_OLzd33I}XB;2L%(pLz* zRd02b08jsi=0gL$J@gCcsry!atB{xQ0(*hYv@>mQ-CJW1(N48fH_Q$5s(qEN+x_h* zGs--uAJovQqvx+5;g-E+p(DZb0o}!UexCOdz0x_6@GZc1kKF+J2$1QB{S!V9yN{3b zNBV+y!CUMv_H!u$%ay+WL-&FEcx_gjohM|4fnFrf)(En16D_$PcY8_b}|A0mc` zvxJdsBtw=3bSUtXl(A*(WHZ?yBNF`p_+CE|9wBs9T~!O)!lF+Dc@N+odjZ_{yYj9a zng;xP^kP8cvO#aqUz#uJH)o}}ZExEci?LP&@P++M3)8}U$G&6e>ThWEoZ_-Hmov=3SXbgQEdD$tz}8%GIA1u>+&A%?_{hk6 z!+*nXkZ6!tk+mX=;^CaH3CNU#7kqPUbL_Y|ZU*bY`UUZVfQMYW+Qlq|9JDTe7r&X; z%!7BoV|K@Ebk1SMLazJ1$iB$Sl*2xc&*Sik54MBtP3NYAEWGVvD4T=&l>ay9e4+R#k=A`Z|($6@F(GS z=XdAr;Ozief-h#gm@!37QFNkCBF}zaWL{*BJI5`qi|g`Ed1q~MZ4x(H3z!c|ND7 z-_zHD4$i8xs%W%mw60&*hhF{4?JKv1C%k29ncBs7adax6N0F-YQrPKGq(XeYnQxGH z-!s`WSuas90loUw_|-VF`qBLd4Z_CM#uT#uD%;AI(+74z8~hDEJowonTbz^UWK*Z9 zb1HQzbyZvy(D*;ao?;ydPo|zsRW_APS*NVCoq&wMLjM-}w@OeYz?^;3J?SnZv^K5H z6?H}ZA^s2(^+b)_{SEF0_u=TnQS2eoz7Fa!m_Wcz3mFAtQ)5$`-OX+!6-ilb^>gw$ zDLv_tje(8uN2E0anD_7V@AGf!oBA>S82^;|AM)hRle@mCF9zy?TF}Su!S6wBUYmFJ zJNwX~pbueUFfo8;W06{v)*8%=%#1t|Jd(cupVTMytejan-6Gv0%c*1V8}<$B8gwN! zNbaC3`ToC%d=bI31RX*P-hv}1bC0*jdz-(_kD8+f&jJ4T>+*H^6y;qaci?&TylNb2 z9BC9Z3hwmxJp8s?00%dZL~{ zb~@(qvaD>n`~5BbmY&2X(UjAIKQEpa)A@A%1fdS~sWlW0)4u~h&Jj0%0vk3FWe1SbsIaV&s zQ76;Me9S&(xY;8k@T@+o-!bpdzwKnOk2pe@YNnEV;I=9biT0EI5_sSo@Q{PvmcGcotTOI|%*JwC=6<0PZWDDuzt273eiH$31$bGNyR3^>fhYxEku z&Rgfr6?4Uf#D&CwU_kHz{{WxH>qP2A(CJ>E*XLbzSB+T-S@qZXnc8bEcT{l)YhQ34eA>K!r8cYo^f6npdcrAmLK^4D>KY>r+ zTcTT{Iev~mQBIVVVwGa=tM}ElmWnCOz!k`yu(GE9bf zCg+(PXeI9D_wvQ=Vz-v8CEpC*43IU~A=M$Zn1I`GQCU=;i=B(Dm22fO_n13BGC%Tx z^MTVS*(mv|^Q-fMdO?5Hufc1ibrz@8DRnG)EV(egF#by9l}H|)NB=`8l2asSFW<{+>Y6&+&-T}d zH3AuS9eGE7%f01d?@&w>6C)EN6WAr8YY@AbJk-zEKh;0wagYB;{71a&zUzLbKhr(3 zdt}2e|FQYlU>^eA$H-u0u!s5;>$-K_U(K)P7(15Ux4a}?64(KuyAWTe6LnNhrY=Q_ zJ&Y!ji6k-}dU!p&%0cDepg1UsdPTis_L$8TOJ1Tri4kIi$nEF$FY=50HSaa=LU17%Z^zre)L-fm@rb~@|GoRY3*Sp?)mlA4 z7#oZY2780O3GM_Jy9?|au)D(h{ty3$5&=@_oWvK*3#PH#*d1X<*h*d{4;_N&S12V* z$z5ibnMC;Bes2#E+Um9%dx>-EoVw#*^zaiy20{ix20{ix20{ix20{ix20{k@>lxT4 zwuu#lw!AHGK)LC&%q+8puSws}C$fpmXp_E;LJ#0u-(tRoR(reIp3WdgMnFs3(k^5R z+1=u9Ql!5ovUxVg&Gc3As({}bH*$2XBk%58^R2;5dXdmrG!`8R-^y<#Zpg^r$85ER ztzjGaMw+%KaAXSXusbYt;azQ4TUl4uFB8^LM|%g>fn|v-QJ8?6J@WpL?}lE&opz^1 z2LL(<`shBoimhT-6Ofgc&L_~r5$&gulMmnd!{TA_CV!LT$lj9Bnzc^n7qm1jO+VdF z4_Cv}UGYb$Bfh9DYH^QWE7l75&+D4H<{kZxhCX`>-@=EnVQi9^B;bR9mmK->tAo`6 z`r2BVRtDV&O?VSNox0+B5|AIC9b^a4&u7^zdz0Vf@Ka#M!z|y2fcyS${5Ou76f<}w zQAs?*pGj*T@K5YYpeum>VL#u`>zn!}Ai%f(qzXr_np`x_Dh+ z1~=B&J!+4tXX=@RPEc|{KE26oqUMCX<^%hI?Zf+|H5~)_K>j540wUk>vbju3f&SFc z@QL|N{ieXrX!3mE)?JNNW8bUqRSN<>pohop9G_p@7PmLp4c4519aJ^}I|gVnkUM~$ z#Z%PB@Dh88q4S`DZD6r8z#aiNe&icqKX9M9&mi*vw}0qaF6m1eT?P{fQ5&_;rIaL8 z;Z^vDgbvi12;D+SQ_?`sa*w&ke6PPxzi(fgugy-jlPw~^cYxP9Q_s|$R40Y3%bEl{ zhu{Oh6F=G?ZBN#dp(7JI2Iyy?TY(k_UIg@JjA3Kaf1~iMV1MuxfoL}9DuA}-zy1$c zNI=Ly$Uw+I$Uw+I$Uw+I$Uw+I$iN*lFfukWhD@{aro2J_+eCk&UnX8A4lR2x zB(lr~yMtZq2A&d6rG4~g{4+kupp7oElC(o{xWOJ~hbe zM+N|T*v=)-C6DT(y1rZA#qG3Uq+q0us3XvIcUfIlFH;x5Ey7Z@RAF|0#k^u}ByObd z|6|!$hPyes_%?f+z0>?OUl&^!!>rZI>E--pelzgf`_h-V(IRtRdCJ3m_#ywH|KtAu zsC-m@9{W6YJ~$uzK=@jJtzWP&*q5R&MMvw=x@oj&bYE)U|8f6c&(<^a+M^?&vaFo; z{eNISFlSO{Qu~wplX$)81GqPKZ|t^vn=at*x_-ou9F<4qhu(+YFR@=@#Z)o%E_;{Z z4vt+!9zrEqN#bX?p>8P5hfljtyCri<<{)bivviAGEpqLr4!{Gc1F2srV;{Q#cTiUH_|tPj7aQL?#;P3=MX={p&gmvPw>AKU#5EuF#BJXS0#GvW}De2S29-; zbMka|x{EylW?kkp{{p|jp+VU0Zg-hx>8=5EAK?485p4vrC!wjpoITr}?LxES5gv#< z5JA5Hya(8?+=|?aj8S7$AyG(VL^2}9Q^ivU1BJ_abld9l$w+p%m?%3-g57df5<h<_Ou^ifS!Qx|SsxbY{{K&8ubLYkW&wik5NYYEZ^c{jt$M3YnxuKaK46>5rgAd@ zdxMR3qise&etbozqJ!^;9EEzSo;u~9@{z5u-mFi1-|@8ytHQKZxS=Mn3G5B=hJf|} zS$@br*su1hZmb)tC@Ko%Dx9%r>^kc0t8S{Bzw}=k`|D@8fjc^M1=ua&#=cMOQ?+z0y~S)vYe0~3fX_po0sQ^x8#+Bpvk4#Z zkJ3K*o8qQGXWmPM@5T25U60_Xm@P&Q{4N$+iK3<`ZM0^YzPhi@HrWPyuCAu5$s{0` zU?(|PZpNgJy&$+W>vt#fU)C=kb&r^4O%T&wMdFQ+XKm2m) zK*#L=kN1z)Mz)c?R4?_7{zeydi@L}dEJAqHK59?0lk9@Jps=IpBm2nCwzJ(OcgZPc zib>E1a@H_A{pkGY_OJ^!8;jTeoh+Yq_`xWx}}1~?n!2DzPWXRGCEIYy7s zHT|0YuLShpopw*VZiPJC@-Z3NkHf4hIXyS?3B{$&0n zH2BXYo=X&C#n==+h4*#)y5M)T8m-2eapup|pQ)|Mtx4ROUn8VqsaUB{OFUm@3StK2FFXARCGTSnr3b-!xjHSw0FmZp%I&mt^>9RcqD z-EVil4Nt;9v43Jq;!EPt$ivePul#GN*HSxTJ7V1<-6NOyC62s+7C9|)uupl|JZyF* zcP635@R&!Nhj-anXRHGc`*bti#FO#l61Id*bEo}(-v1k=8l{Q_#e&YJv%xJNJ$ZYA zJpuL}j_bG+?L@nuuq3i1f*!rs&FiK<<@Gm;Hj4hC|InDlpS920tNvAgs+cM|1)T!i z{P8T`_HKKp?P>dtdPiY)$6jM!urF9dIsUulZn;z}6~p7h<5!$34m>Uc!~mgED)o?k z$gWDQN>vOh221o3od^=aVdt=eUDmJhU*nB-D_gmbPr?4rkJTK2*Bw%Jj z769(f#R%9X!0W$~tz_pY3m+Nm@0s_^MFMi)(JP3~d%O<#{o$X-4ZAQe%%Mq`M!;+a zy>})j*i8G2{zW5$Z7o}y&LhCrcBCUI#*Lw8{$T>N`1rY@JwUF(aeLf0&<)7VuwTy$ z<^}LcG&9W%Zocr)V~$itnX0;~o*m2%ph%jQb^=rMESj=hO(V$k?+VO!Xj)FY2t_#n2>oqi@^hMJ+unzD$HF#X6&0l)qX0%l)i9pDxYEd(?Wxc?v5$J6)! z4Q9jtzW=|i-`2mVUsOF^Pp>ws4fOL5nTOI{4#-pNOn8)l42XLPRC&l>As|N)etl#q z;5lh!TUmJQ@!Z~L@3T*`CmC-2&~20?93&L91?>ao0kc}K)^FLjEHe1=%lvX70oj6` z3Gm>LB#h7_H1Z0-%_g-;;kiUtMPXT3;`xEMp{;7GS_Q3Wt5q*prB~^4wj8|!{nPpj zbZgXRwTY1%Y5)HtlP!%REVenR+}famya_BPvZ_J{ZX z@Nam?K*&JIK*&JIK*&JIK*&JIK*+!yGq54p5VW?fZCO!PKzBb`O;#723(jycT%`Pz z-`s2NC2YdplsDymcfb3XcuZhELkA#k;4hjNO>Udp4s(aO$Xffxeq%p!K5}*us>mwx zbMJEx*=@a2y;3LrlRiS~`m(<4UGc7%Pucbl5!%Jt#c)sV?f3R?i`#-E2HvLVrsxX3 zf@5Co!n^RdQg5XOx&z&+s;c@||Es@qzH<(U1EM$Y&CwkflQFqJwLcX%ar1)ng7caA z%wTRSqzmcVLG7R|Ys-+KHdG81=ud|j8=Ze-1&>2tjea%g`^P)u9n8hZ@cWi>3CD`D zLQ+pWGU}0SnAgqgVs?F1zAB4Ei$w9W+_twZ^6tvZ^72CDLL{Kvy|M0C7utoq$-GH$ z)i%*Kk)P#fGx!Ytn){jy|HD{4R^wj%ck1udFUen$H{=Zo9m0*+jaVJRGx8a^E4C{} zKb~mmxAeC~w?%jJ-Q1;*AJ`A9f(zBes3Ej3+F*T>!C?*H5U-!q=s9qbO^$#~Oy z(*s96oF2|mLR`mn#YDvfG7)Q-8fI8>SQ2}Xnye<11mxReSMr7V!i-6dNkW%D(jDo} zQ}YyNu;lFnInP?`kd%Er4_FprvrTZA5{n+Sj^ss9isYZtR|9AYCF8suhfslca zfslcafslcafslcafsg_Cs3);W>6^SsXWfm?&uN^e_lL<@s5|Yl9hR50CtQ;@LFN@2fGT}Y`UOMw1xdYe4HSr_=k)IZ)#V7m|{;qkK zuGXv5nRy*_2Ms^`d^Vph%e~UC0osXOdsSMO)(hAIR$tbabY2$~Sw-ei z=3Z{?D-1CG5ZK-*i_0KlUFxP!H7T z=|i3Zy7rJ$cvIih@N)DpJq$b(d(0lQL+w!iA>5_!(q{QNS$}7~Gw7A%hMPbKlt$1_4x=6cBiu&YVw-AIRUyC^gR?*1ywfn zAa2&1HTG0^5AZt!eM&3Via}q}nSlKiZvD`@K$~)#fM)}Gha38a#%>DFM>Si`&e3!9 z3^T(dbyA0a!9oT?20{ix20{ix20{ix20{ix20{kzl!0k>nyu(ovA z*jvaJ@|1VVo2VwLQeG+Val#NbgcXzpmE1}$X0777xPBt?1SP&d5W%f~pV%kRKTthYJ%#ytpd2XM zv-a$yd(z#kHmiI=z5x02n+doLpCjC_@7K_Vf1LSoCiDf!@k9UMF?mda4|D`#mY+dL zrjjXi4q{f7u5^3qo*K9L4@b^=$Vil8rPyM=nBU{xEVw2oBmC|!d_u`%_UPMQ_~~UBZs}i z9&Xdf5~!1?lNhRoD)bcem;L3YtW8;8CB8~vSAkpd5O0V#SI^bRT|{pJdLXN2SIx#A zf=76yaIA0)9s^go>by8F#(Cqs?Q(m%qwu72GJXFqn<$&O#4e@h?LEmo$?l@NfFGfe zX=L!Z@Y^E~@wen}$x^nI9qo>Gkv)hUzgB)LUkWKMxEEY-1#bg(0+qZIO}1Q=5%$z*NT+ya7L{ zpVVPO7uJO>3>F6H|3hvfGA*Q*`XB-S9iE+ggL{KYkxG&G1VO#0O1q`q8NrMIUI8!V zrLLN*20nm(LBF6Z^(l0a9VGqWo`)9l}l%VmFw~MkUuuH=0#!NqrO=IXf zz${Ce&PMuS$#cDAi7(gn8#{%d?(5rZex)mCF4ZQ>G02`~uhWGzF z{X-XiUdTYmK*&JIK*&JIK*&JIK*&JI0PAP^nIfzRLvI>p$l}7r=eE0j01b!@saCY}=Z)=Da$u4g?2+ zKDv)CWDBKz%(X>rnqmtGj=j%@xGKYKggj*n;KSvTH|Lzj=N{x|p=yn$#So+X@> zXC*WN)t%}NtqLT3=je<_e*m)LmYHSdQ}!t-51wX^5s-%uFL*lwwBHB$!E_hFJK`O& zkkHC$<>bg5iLAdJVh1r+Tbz_9Y5VYu{0{-IZ-?Dsk(+Ra0L{cc0&d;t2LOlXsR!`7 zxGv!9?{2yi8($jiEPj!{Nca$bWxuis)c3bdZzK2q*BUz)WF3HSzMIqX?LppQ7#vhzg)h!0jCQcgVeOp<9sK|F|y5 z3bK?*8TjI%u`g*$+WYza99;o;evswhYhN!lOHD7rhx$X^l>mPMvH+1|fINu2Ja78_ z%ggdoNncy1N{7t|f0(p{i&0GV$KlClg7HmgAFW*%H_A=NB;JN*b zea5hJ`Q83*u_r>mVjseIJ)SlbH`6<_BD#o1UOzM)WB3@}f&hI4@(mpA=$paKpth-P zhLDD46#*WGBLsLyit?g-00DUrNdhzyGxQAIiGYp;Xce%l8coxTkj6< z|KZ>8kb#hakb#hakb#hakb#hakb#haJ7!=u>G+E}MV$xrgBl&==tA%95=dLWz+2$m z@^AUjbDtGw#edxYxRdlGjl6&O1fbi-Y*$m))Gx>vWNA@aKra9v{3QbX0iN&q@2YoI zN3Ww-pMb1AWV1o5T{>1ewux`zE21l+jdUZ8yXH=Jr`s~oG67#cat8AU`GY>9kEoxl zpUmszb#VK=N@x~omcIX2ajH1QWHH&n?cnA~FQ?xMUX;S+e&dDN+>E9#y8P9IqU z@Fk#Y9d}^(`RDSvyjE7NEX>7~2#Wd#k<*S20NiPhh$Cr#!tT`W6y{oF7QExU;~;B) zkQ^kBMUF+Dn+#GCd_n=g?s0gXceUVuZ>-_dro zn1wO7d(Po>e^ST;g2f zck#PO@C5JRb?~tNLH9vV)6>9fUNpOC_INp74vY+p6wuNd_hz-x~_$20PbeA0Q+ zxlA~rPN))z5^4YcLbK2`O*T#9zr~ymZ^`)B_*fNPMRUnzK9x_!Y|LKCypoAd#OwSz z$D-g6p<}dTw2$hevTe47zGQD|Z|X1h7sGA{I}|)aHJzHySFx{R(2>-md_6znN1zu$ zrXHTVCGHaUY4x;v!@OaT+YfC&b|b^}aJ__j2cYwa2k`)1f8amv$Ne38hrX9EMvYM) z#XgEPVNF=4NT@d}1gTb zK5w4~@5C8#Mq~w9LEmKGp1#AI}+v+KGN}Uc)2gN9#e}P?Kai^UwrehQ*r@>fJfmh(jVmr-Fvvc~K#;gau zJ-X*^5nj=+=z6xEJzx%`z2V3|n=B?%%ll1{Pv#>R|6GZg=%77FO>HeLatV>IkDKYk z1neu2jlagOvG9b$m%olsg!%(tqTE8wb_xt93Y6kqkIM%VH zS?Tmm8D9rF19Z^iR*e6>o&b;jaekZ!GLVPGVS&4FV*)(oEA>iE(f4MlU212W*=7*| z-2iV8ma3%+UG(TPc!%(Wcp}}k*hBV^xVs~d9&_(PwvZuT0P}w@!jptQ&7bM}d>)>M zHzpvD0Q&@R1P?j9?8^vmQfP8%HcAy`4oxRS`&476re)ESYWB(cZj6EBi z4UjztpZ`sEli_P$qyEPJyg&cN{$k7Wvix3oFKt5x$Tx)`#b+V?XySM-F)i2hv(#D^RaL=%-3fFU=wC#>B3Tu96VXKAxyG(yDgoLAbU@;tb$A_O@JEgu zi^mCgA6)IyHGOwllYspF+#+{cKQKm&5yBD9FX9)WxZ+(2cs8n-Dh5C6;Hg-1cVHP41^4X41^4X41^4X z41^4X4BRmTEA$FoJF|A?UT3dUHBvRQl``;tivAQu*IbuWm((HukpG~1Q0?$`c$m?f z>1G$*Gf*6iIQMGWRYMwr6h7#Ef>sz2P=h zO;taqpK})>Uo>BIm>eeWW%sg(iI~f&%PHJ^p-T9)4Y@=!au(%ev7CGh}^QOe7#F2%tJh40hy| zg`X)?Wm0N?bG6=E?{$$~VZ_7@+6VD&bAB8WWcB*y?ngGW*WtEa4GmC@k!!>y|8E6mz)QJ2Lj|wPT^DdXhL_{T^6IBzM`V2cv3zo@vMH}ec(YO zvftnD!;66(4Q6<%GKl}EepIU>t0GgPQ=*scWjmUUX3yGZEq)e=^?Q0fJ!m-EQ$`~4 z6iP)(MSc^%iErcI#^G@|!jJGGxr*fK?05DjMCRhO1oEO_&(bg6FMdg1(&&?DC0dE`iSY?M=c`hyQtK%L5qp_C{zVTz zF=QZQAY>q9AY>q9AY>q9AY>q9;J==M)9SSPfx6@{JDwmQ_x^ABH#zb*$!FQKEXU?p z%;pmb@PivFbBC9^4y(iF@HxDgQ_N{Do72T}vFuAg2LSx=n6X=#Rt9?S&w|f_`v^~| zrxd#94)6mUb95)tR(Er|xjUVm4sz|0`Hp)mW_y{35o99YeqzkKQ)uBQOtE1=x~qP^ny<#_F&bV0>=B?TK!!bT$H*3JrkW|t<&}6P-je`*{WX4#_mlnP zL2*!Qup2Dyz$u$b=ldhS;1j|nbIBmn4mb8Fi&Bc-ELMycn z=Dqa(0@(!M9hnmM5^(3A$R;wp_sAq@Mu6XczL{^(4FC-Xx(;ziFCYt~-}}9Guf51F zvJHF#xiOyO(AL9GaKql9OZ|BZZO7MyQG67~^HZ5urWVEB92$-b`hxzFa6}zZ&^??a zY&YA}_kZ*YK$~z%o|4Ff$VEUd#eM8P_PTyu*H*Pv7u`kQL&%|b8TuIL4?O9~uf$j4 z4Z?JHy4zSZ7VpdVr9;5sA3BP$d@S!sK;Hy%5i#>)Z`0mw?>^={=DaRnmk+xSySZep zv^Ky{QNbtX6KWnDknU-S>6q?E_^zQ5M2HMmosj-8H`iIj=- z&)q+F=Zwx7xZ}qP2Af<%y*Dy9nb<$dgb><@?yh!wZR?L+QE?lpByopMjP z*JIaX!=2&Ied0bb-Wl&4v&ZZW|AzmC`hr~P1ynQ@O)b)k^xuTy)E8efS~FTZQaiHO z-Ro9%Dmy#*PJTQ%9^iFg=H29N@-R!kpL##F-QDg&Lyr8smm)7k&e$`y5pTqQCd`h{ zj=yMMw3z<_Mo@vOoKrdHlD%X%ijAU5v`X|3{s+IDc{#Ijkk@pjbSeWufxXZ#^_8t)AmX9Nnl<_zCCgR zk(+pd^5fAX_nZ06OpHy8!7G65dCb&Py{R6w4G&OHJ?`?*(RWRBOGmwuIG9M z+yd??>TJYJT{ho8U+OP)Kp)T|5COCwZ~JfixYd6Zd=;SY z;7asL6!~`0j(|(}^AE@aazS!IvK)0RuC;4zkz|qNFfmN@WIY+O2+{9=Jj0AwMyv*9 zKn_X`N=;Ie)L+!ki08D4*TjQXU}7*aSjLty%-PVj)RlE5d>^%VE&hsnMWGwAdC)vS z#31hZlf)!}Y>B;QuNjg#By)CZcIsF8t6Z6}GUJN6qL5*5)H~|+BMeRsPX3YjBLU6A zZf|!wkAJWnEV27I>>hUSvUk~MhFY%#IxZ_{+ z@DoD@LIy$xLIy$xLIy$xLIy$xLI(cp891(vE6j$tUk~9!(mLs9<+GGr?@HXoap!Mg zTaXj{8EQ0NWYafdy1~M~4BbEGEPO2GOZiMOQ~b&PWSHgQPe(TVF1;(=fnG2u7`#HL zY$_Y%`Q4N^<-3u0BR!%$qK2>{vLf=M{83JJCOc!<*z^rsGRgXwJ_b7YU2GTom;cK@ zVjrdT1+U51D7k;HY)$Cl^l)%@U&U6XbLJYFh6ed^)AY3TT^3sDJ$w&GPaw1khY5Sc z9&s1HD}7%_rax}T)me46Q}5Kcv3F%%(^>53X=_hdL_n7QXgONqo_m6wpr7;)aL0u%Vv)1R$(Gp?voZYcxR--x+_1-(F=mZgqs9|f1*>QxOa*mR9ff=J zKrv9De{doJzW=69QwLgc+}hC-0PRJ6Ti+I>-28Wdn=|L_`Y2sQ+tQWrrk!gMyBA#Wf14S3g)i~l2GGT|}xm_q+Umda8YCc}&% z>>wm<(%#MPW}g#~5!i`!V!sit5}@5c*JGy6)YH^7^-%CoT5s^2dQRO4ZUocKbOWtJ zRa@1TGv&-ayU$h;Rm57hHa(-~BVRl^AQrR53>gK`CX}|N?QXSO4KjmFoctrF&1nOj z0m&>;@jwkLmY<_kyy1S^u8ko?yMd-XEn# zDP%+-?_dBMz%mHXAt0k5m(69*uruToIl_9{o}?VPY`H-KHoZn0bR zAk-(kWK1IG0@(`4XDCY;tOsj6b1Mn>xx$Z-fslcafslcafslcafslcafslca zfjeQ~_2BiOR-{(s5&4MhNq}x28TRlSSbH#E_8o$esj>RzCN-(0?qX=!7stRse4m-32O=Pyu+8hBx_05mW82uR&Q=Gr8nn@m#2$%#>3r$n z#_C192=1eg2agAH2=}Oa)SkqiL@8d1Hx*6A8h?$yAag-x9k-4UmXzG79m%7A6-aKj0s5XbVQhM#hlIS0bxK7Bt&ADo4TFfPMpfJ?v57WvC!3hzs(9 z+@v-ss=Sx${B{02@*TO}UGG+ODms|??k60KAB@+QwI#CfXJyRFfZzQI`GkBg`d$0R#fF3~R0&Ozq@ue*(DV{&=9ye>`` z=b@a3a^B_dayo%qWZW+jiv)b@@WIb?W;#pE5|iy@JJ?Mi3$m?hs}?5~Cw^8xtCzi( zy^?N8w`Qzn?0)Bd=MV9RKvtw1b)(b7G_fnWD~YVS2mA;8k={senw@4dy-Y8UlgFt_ z-iZ#;4pGeV=)UXfbae`uLh1bgvK>|?Rwgp3Q?j?H|RDVkiMQ3!9zI&S&B? zQ7&FCj!p(>DKHDqBTonV{n~hKJly?91|tLPCc4V55_*3;-|#^^LVbRN)F6f3$qs*q zUp=TEU^xIS!vg9)#NK0S=G4qOsXD2l&QNDfd`*14S#K({%4}a^U!sB6z=Mx}PxhW{ zJQq{-RE_-zp8suXo2nSC7)3rH_5#pgY|q}FebKq-;CIOn{9q^_%CYxA$HqdrP{I>& zpSmyIRX}xt4)!qUb(rnWcIT;i>T&V7Kn@1<6uAB8^Yi)Wq_~oECFf3l$HUJF83-8& z83-8&83-8&83-8&83-8&82|%^f;9Yn;$k8=`xgJ^o}I`{*-u1oR{ZGr9LpdPr>J%wx=!fEIlZN2C%;G;|xfPdiULQNl7p2|{IAS>jgwHvvBv`UFQ1u%m!C z;vfD`IuF0M>@AmwB?38nFY%XnN9rGZoq+E8GvmePG z$gjj*9$67{)Eu=WSQ2zJ9St-t&_KW{xW(SH@7W=Q1#AIB zPi7Os95E+-^M@wjIq{sp{|`ACb$MNm9E7&EEvX<%r?U!>`#6wLi;z#}3;qA;cRl<+ zAp;=;Ap;=;Ap;=;Ap;=;Ap;=;cfvpquZOpT?O=sdg;VGzC)u^a?H_Y)f8Ad{;XL8I zq25pf?Lhmj{#GwdE=@MpjrFbIR)Ea>GK6dXH9sa|G%Z~g%Y)^?26uytjC-b;ZbsPw zA7y`(-OcOfc_}Z|m-S_{+*xkaM(wG{sYnr7M2>JrxGr;9wV+zsBd{oYQTDIuS5;5f z)9{OXF)vmySupv#`dyu;Jhw%uMX6EIQPI+(wAezxY_^qcWiwJUQZ4)z{+H@Y)#-Mp z+ZVly-g$9e6wfZ6-7wNHvWT!L*c3oNfULgWy0?aZ05{f_UP}*oZ;$$q`cV-T3)Mn3 z*csv1{pa=bx>wLEIGZ|~vfT2P1o+&~5$<;G zcGmr0?7at+RaKiUy29T3R24xG6ayepau7)Zl0igN1VIInAW0+&f*?pnK!TtkIZBcs zL9!&tIf#IgQIe=2P*vybz1Ldro4eoNKW6#Sj^ zchV>^N=$X9x=#~srQAw6LsicIlXc^UZZc^Z`>ymPbB)r`o^kI zX8#}VA8xsf`nIih(6*K_Z1gf3}h%^zlGnA zr{&Y~H}^LenUc%ovdHH$)*I_(a56Y835WS%j%-N$F8mPw5I*Za>lcg_jEzqppDySF zo&jh&N>T>KRdH1uWCx?Y+=Kj%+t0BKSOzQumI2FvWxz6E8L$jk1}p<$0D9%EdaK5~ zw~hec_EmjVqo@6I^SOZ^U?`Nsyh)f5pci%o_$YkbQxJ5kw+9KV7B~~{mL#-A3Gk)hG0X0 zUb;4feZjtnQKO0Rea8 z8~g@OCj8ERXMdVM4W0vh=v@f-x0Prm#K#bkV)V-eQBq zAOSxBx&)T<`{DktRyutUx z>xZ9-y#urqTjUm5$SLF$q`o{OjeLp#j{~w2;0M5S!Q&fdhDBb98_8mhhzf*sC*27MzZ3Gg`P{+O=eUouE0NLA z$#gQ+2=K3553h%RvOn1$)Va`HHkYNn(q3jav%8%z+nepZ;J)B$sUxida{3=;53^x< z7&T)|)*V;}hAcm57@!e>rhkc8B7QVKngYB4N7exLUKyxYBGPDxH-sjnIR6CbIC{#S z655L=UFsSOzQumI2Fv zWxz6E8F)|zkUcj-j*xfK?xdmDynI+b>`%G+=mY2*_6Hk~8#8^i3e&eG;3* z=1>pXx3OXd;RaNPpnVWm-XeO)Jdt*linV} zj9^B9Srysx$bmyPe;(>^pOTo8*r+$^sfnqH4c-Q?Gj*#+9&7J+?{oe+hxdK0yOxpx zs=5d)ERZOWfCr#xSTvk=Z`wU%!EIC9R6dbUeCB`VXLGZ;_t-r)UX52b*bP$nf60(> zfZY4(gls$;Pl>0*ze;?Sxawc^&)q+Fzknzpa97S9<_@8cz${4iizM8|XC-DOa7)K- z2A+f(tOi4d{0_c@5Alciv#7%lzKe>cqIsP#ATb~jvXE_~-1`bag)pHqr} z9=spa4+?sRVcsw=zsYY-=o1<}gddBKDY@{RcsljzR6K8FL6+5JHQo~=)Cl#wcwS(K z(Z}uMwh!6|pM;-;$b*gA}9lVbgiiN^ZFa>@G?x);Ofi@zm%qpMrp7Uz4T5K2J z#fPb3s-xf0f5W_C4kQjFwx@4TFPfofhE$m<^ThJRiexI1sh}t*puzaX`^AITWd@(Y z*P68k|1R_w`r`@6`^P;#yOZ5HUFsSO&IIe*H4GEYdZfHmA+o1k7JC8I$NK zgAW}uK0aCzaD#t@kel!t0XJ@V+K02@4Bh9LL2>6CE{DtG;y5Mey(C(imL?O=#J8Dk zW;7ek&WrORi6`+wvXI2b8nH&SB;b||o%02CK|M#PMtGhujZfpLCY2iRH=BGcAM0s) znxFa4e72Y^-Xa{O+_m1ax7@%sunL4h1l(qE^M|j!q$;V95&skaiQ^T=bHU@eMtbfE zd;+Be7UX~GKWXZvxmUfWva{?AH&^u5H(^cKDgyNS$kU%Lri+@qCcj9Y`H^O1G;cNz z8V3~X<{u0W220cug^UE~0@e|-6EHJhC!n()xAywFzD7<$OvMyQ-NTiXlD{IcB2g?X z7D7vKgs>yr5zf}Lb!*<5f5tvzL-Y`R)|{nO|1To%I5hou-0%xDHjPR7{+>Bb_?j@5 zuuJVy>-Bn#OuUA=p~hp#p>yab3An3c{vD^sX=wQ2VVGy;MH%|I?~f-SYXN@$0;~Yr zL4c2-hv{KHA#@x+41gmekpR?>${l*I${hBL9DX>a|19 z0Cqw-cn%It0&*6fHP4!_*jMazLM>CvTp}zC7lz*x;K{F{YN&hWo*78~4D5>b%Dr-i zm?7Xxz|B3zW4tP>8tEQ}o8i%|{bBL2z;2?3Q^RRbAUQyknb1PEkeJt@;eXM*7(Is- zYK6KJ+zH-e@3CIISEMn>=4JD4Ik%jpgobWI7a4-cH$*QVasc3kD5uNmxQeUy&HLs6 zJHRH2iDCeunQSIM5+4cZOYqo``BPw=r~ zY@`twzy`2FqL9E&138G`8^1>hp5X8={Kg5?KVd&C1C{~HfMvikU>UFsSOzQumI2Ga zgEFutSQFe%zMYKTb5cSo6Gd)W?O5#?bk*OB?*&z}rzD(&gKV~$!OS3Crpp8V0slSmo;V&m9;>dZtNJPR zQ{df44jR1g@K}H7f9OvQrUsYPB{g1;*C)+M(=9`{4CAP)9rw zFg$Li*OIR#!=F$ytQmFaVJ5B>uN6-Ulfqx!U)^%)<(3QhO08Kyc|I@;0;h&Uehr9yxBHr?E`NvX^r8X1I#GqhMP+3)0 z$gaoD`DoJ7q&B9FDUn_x9Xa!J^<0g7IB4F#H{WBDH^^6nR|A~^9fA(Q6g5SS@yGb+ z{TsrE@Z>N#+(LPYrNh!;E&^u!5@{vU!0%V#SK$qF!|ay3<;Y-U@QeOMW0!!Oxz+A! zx2CEY?Fp8erDm)@)<@oBX;oT1P5?(`co_~aMQ_vFY*AYj_6z6}{8oRfYo*pog|`Bn zj7%SyJ~?@E@*IDTzt}7``}jUyPLvb*)AOfqOl(ZdhC)do(KaT@JaV4-JccC z3V)D4NaX1E@%nhk@W*?kMoNtocqni?cbLOAB{n7I#OK7PP;NiIeuvm02J(TtkM5(( zCY4Pxj&Z(JU#h{e!Lj$$dkS6zJddlv)u5~CYLFB0d)n`5$Rl{&dEL24_%`FW8Apnd zVx?Ru+r`?&T8FK}zt~^VuNAxqcrQQb{Xb`rGgv3qiPxOh9Apx{}?M+2dQRLxy_#U>0ocZ4~hMYP0&M}Ksm(^ug(Un@u_lud%OlJz=2w|tY({1QA^oF=YTzoxr(C8Fs zEE-4s_JIgQPB&-N8Ccpa9p%Bj>AdM6C+-9Df$2^_rk@}{i-1hG$HZfl6n{os$wS)S!IUVt{5-Iuj}g?zWH~=I|4ZaiYtz6edOH3 z*S?C-iuwwdo8=~#&ZQTzMN$49_5twVml0*eadw=+OVE$dg?Hf#%|e5DtveywWrX#^ zqw1*of;#SJs+kJ?@7PHk(uZ^Bnc>WEL9igW?%)|F6)*WtKVBfJ0e@beJ)20!Q@^lZvgL>@l$0LuyR z=_6MWyNaKvGjgaNN@roowq!1bayx(r|Tih_i zrt+!O?C>x@rjKcOKhkx&M(0I8){pHmdknJs@ZN^L;xWP`!Z3h(HJcLfxf9hy1>emC zHG#G&TU4@6*63>3Wp+h62_|us2SQlOGVEqc8`zBdiEk1V784We?p$XGqDAf=spktUv4F^l-MD?dAjT18;;& zpn0%$QtKq>tt+KhN?*p8@zdh8K(3u9JW=1N?;z{Gh1`D{{ zPZ97r*Zgb#x6ZfDAU=psG!sphFiW_BZ{VF{onz3n_l)<9!zVw@Ofy5o5CI?gHnB~h zdk=knc&%ExEnVanA}bNyg_u!s|DLXY`fht@g%BmX1+YxXrm4xf(ecxp;&%HnWwc+1=}%2VD^ew1%X-;(Yp`~?0tdKu1! zXG8en8^s&NSNW^_FZdVyM&d@|2j>R|`-YrOPG_^b+07be4eL@L;u+FaAa7w8Auo08 zAy)#~lgMYp&xL*fd#3qvzRc=ob$3zM1@;xy{p$YN#MuON`^d9E=ERKHj2OHoE6fU0 zB)Ld3G76AMS)P~Y4HFF$&^f?|(cW+G?+^9|z5U+)h+ss3?8GD95wDHg#znrxU)22v zFGlM`>%=|xo?G9q@8hxHy?I~VSMSJouj81-ONmkXq<(u)a0&CtkijeGc7 z!VW5?)fTRG|?fbYDQ?iF z9t5}gx#8T9PRCKMK4xop|3{fo<`@18FG|4OoT?cWy5AR>MW!e#%Kjky<8}<41m@L- ztRcgl8aHI*^W(Ke2HzIfxMmRB9Z4q-t89zS+J*ny!V z0?xB!o$vCCt(r>c>~B7JRP16+j?z1=(%^R z-Rg1gaSs~)y6JV(^XvS293RJvilPEta=ZC%o?qox@Yer8D5*qX`|iW)VU>|*c`aAuZ?o9XH#JdUP5aM~kkN-cr|D#u7 zvYMi|B0V?P3JBQ1cOE0Og-P!5#y*?cy|o#G-l67wp&_mPA2ElT6DK51NJ@5+ouz3@({B1V{mInLh_AiPZZq^AoC(eZC&QEBhwMXkG;uV6 zjC^z=9Fa$4EIF23MwihO+zBq`>Kb8<5LylR^)Ijsk$>ePTUl<}u`&S0)^xp7+HB%%RZ4e?^(>xbH*z z4n1`e0bb^*;nWbGa~x9V^Z6XJ33}D8^Xru2XCiMswA|eY#|XH?;tq|hw#5YKv(K?} ztcs{Yj{JATTtY^fQ9jF`<+$7SR6W&@a7b8)uF)ISMuo07WZ&b}f|njT`lh@osiW6N zeue+p{U7(~tpsG|N1lFunJ;7uSs4QI3oxVAVRa}uzA7Vmx=tY+PzMw|@8~snUB6DP zg-f(=d{W&{Gw3XUP8)aHwR)|F@4Nxw1^t4aq$a8Dg!B45DJq6)XcRE(_ob}D%LM2U z@Yvzs4s@Ugo5AK4>QBUNI}0I39d_7j3_~tI0sDx*33&c^412@9p;R)u1Ec={`h)B0 zy21?`*?heognNZ?4W)?ypBT&zY{u}&g4KRgnPmnYKHoRFhY;eWldT0 zgnB|%A)vGH4?-rEiFGoaOdi7T`ge`Ie`NFTBtXB>nzd%g!V3xW2$9}F^!}&2KJ^=( zH|MEc?+r>9ykUy#;u>21Kh2+Ji{7FIeXQkcIrJS*5#Vpf>rk5TI)9y`M-uy|oBF0c z6dnqpeSkgzxe4ek9LYv9>{@V}&%^StoqDH+c76ci8TJfA#$g3sfukQHSte6@e_Lt| z*ei1q3R16MewIJVB7mj^-?z9b9=*??U-6mGy2`E+ITG1<_NdzcuOW63xZy)r@f6`L z{g!@Ly{pif0lf(JA$aeAvxf;iR1XF13$hvG1l;ax=~~g_gnp%ts3SHIekI^%L2rOP z)fhg8qiX@36O##e&d^+7{{r0#em}n^JVUU5!7Kxo0n318z%pPNunbrRECZGS%fN#& zfH}BmQqiQ1Y$K(jZ(;)}H~n?*bq`%@nRR9@9qAm_hxMZb=#QbfZxL@1M=u&~_wcMw z3MK{6moJJfiajTvqeTC&<+JXy?h?5~hJ*$|gJ8Y4-a|(oZnW8xvnS6AW(BV&zn+X8 zKqXm8qNiJ@tP&e@5Bq`Ak03 z)@|#K;-h%&^xEm@AsER=@)Dwi=wterFT@v7CjOwUP2*`4fS z_QgE8J=h*}*WLACHCSP1fxNe4!La~+YnaWpv+b;sQ_1P)_H#>8n;o*>l~CfUzN(vr z&BE3}>i`}13)lkoqxez0z+PY%sTU7A@0oh0-s$XgkS&NzLioJLv+)tX=nWXC2CC8F z=&+G)q;Xfit!}HFVb0K#p2Qvj`h-ovrT{u}^x#c&C%R9>o`?-h8<>Xsbas(l%uJt| ze%HP03N51j13C-)>3$l0@hwyfg&hE9^b%o-@Sr}Zi>DS(#cTZKZeoaiKg?x2RLVJ-$2 zgL~{AgSG`Z3GKXg9<%`PuhUFsSOzQumI2FvWxz7>ep}v_+~>dW?+A|*9%GL&m(Wx-Rk&#$VMkb2ku~ySUo+PX{Ljrr^XQ)6 zKs1Q@0y4|YQ7%6;;>c`=7ad*axUr5FqXqN^=r{Y0fV(Nhj&6=Bk12 z9e3Mqyclk(S6vFfO|JQ=;$+i)w~+rjn}bt40-_UQ+{MW zvb_XOAIK;`KL6HmYdBBMQ-cV|J?LV(n9X{#o<)G~;Y$KE1K{Or0yso>K?znO%BRQc zfsBI#1avZ>kFYkc&G(2s(fuDk6CapgmlNQ-c!j@0lk(TRBr8b)iAuan7^z2+V_~2! zM|hdN%%By(?gTtOq#jbxE6|EWZPi=#^X7R2{;G@W;sgExza%b^OaCKro}G^}_VKm& z|3f#AZU($>7l}pURrxBV?2VJ~1AwF2M z*ek_LalB`X5YDQz3OuxBZQ1jL`{ur>Pk<)_-UxIbz%zs1Lv%E@AdCn{geTYuhW!n` z#~Xwux`{@X0=h8ZO{pnr(xYi5uxG;WAVo`X>{U+bQ_(J|0c*hUp3K6suyn#3{0;sC z`B>030R2itvi(1n0n318z%pPNunbrRECZGS%YbFz0T_6QGW{_}AxjN9dFZW`tK4(^ z9Eaw=pi|K4;C674y@vbsD9WU}lXfQ!Ie6RU_9#<59>jw`^dB1j>9~xO>%XL&&ZqOw z<>&Gd=Mm@Y@ar%S<-=z(nMfV|y~&i6DQRuEHmvAX^l)FDBqzywPCX~258U~y$E(MC ztKO=LtRmt4ZsD|WridwGsk_vjXXcr!)N7w6)8uw%yYq~B#=Ih5p@zXM@?hG*H0TMS z0iakt^EcsuJRrCDTm1X6`>`5HHIi^=haUmG^;an8AAJVMn-if3cdDK0w!W?3rM|l+ zqKVia?hi4iVW)xn`M-AmhY#X@a6iZ#W)5!#Hv^@WhVS8~xoHZCLIV4g1$u#A?W}e- zs0|9Y=kL^a3K#ShdWAk0KNknb*k{0J|C9O2;12&7A+O16Fq`(}efivAZg4SnG4{58 zTlbZHWfFaSk@`jI1${xM^K@Pzy+V3NucP<6dOhm&>*jQGz|+e~FDHGizE;qzL$7`{ zyc(`yYuJaWAErv`?1MG{GbT9vM1KKt_xeLQWRrtQu((?~T^$OFL4 z4junwIay*?w9DP)!rOtp!6a{zhuM2vI4(qf0bctta*V7K)(LAR)k>N#=8KxDrmCG% zJ0;2sNS%_3zC?5;40Z>*@a?19@QL7wfa(eo=}x-i(+4v4v$Cx0int;wyOmw!@{je# zdav=p0!?JK$IEZ>3pamI{7?Qwycbl`#xhO7* zTZE(RD0_>)#nD%>OfS@aW{1`6b@pMZKaPUJvA5KESWI z{S?c9Wxz6E8L$jk1}p=X0n318z%mdq08cx7+0ZpR1oYWUAt}lKQGt#*Wc-~VTw<4^ zo99t;)KpXz74-4Q-pAb?Jpj;K|H1#@T|^hU^q-450A3ZZipvCK%R_gKE_8IDO8Q$xs)h3$-)9kD6lKrj zhML`EH#u2Owv>Qu^y&n7si8+7BnF8(P8|n51RoLl6MhrFMR(*Lya%6UW>MG4q+?b8g(MTt36N7let7Lk&ow#vH<>Oe>2SV@cCoDe@s87zcJrLdk$pP zk0QXA{tkbKzrP$#tNenmgsd}nL4*)U?&@Fe8os4eJJIs#A z#}EC%V9F&NrADd#1Z49=OVELU*&kS{ma5%mx2Z;`NO+$B9|&{{&>V~>AX}jdufivY z2?F^JXW7|E({Y2k4V$ng4DXf8q+nk=yrf+ zVH=^fZmkc8hePBNq^eYPR-e_-LZCYUug5clU1FDbg8&`8rjJw9QHTtI0R(s)Fqhxt zH~A^*mZ&G|$>oG%1l-y4P-XxgA9NE>5?Y2WLu5&wVP_b2Fwlq~ConGo_xdl@mr)1b zm*z`ThyYy(G6%pR_9oCSK-&V}1ojG(^<=#v+z=wq5Pbs3qCj2(_BWhyhTkn@Y(zUE z%4opv2Yd_o`S{&{mSr+!BBCz>J055@?h}xWuw85ycwYE@wSUGe1C{~HfMvikU>UFs zSOzQumI2GagEH_x-v2Y2jOL(w&_zGncC+2|k$vP|XRlK}EFZ$R4o|&FGymfLe^Q^+ zd1HBFn2&D|28w|K_t5H2b?4*o;}Dtv%uOE>K1li?$qAkCZqnVP3_Jse&%LkH*U74~ zsu*<;)JoJ!U^aucytUujpHF=RMF@ACJI+SFkzCO+{(^Wx^*Y;|AzVcOf-knzpDg}7H z%lUHth5kaX5G%w8(r=gLWjT5c?ua|$Ip;a&qt*UT_)34JYlpR?+rJYy z!EU`ICTLG2j0c|0@pf_}A=fRwPj*f!Q;r zVyY}b7-62|Ptt~C5l6^g?O5#?^6i#}OT*djY#09jin^j6AO;8&!Y@r)nlxQaSIA75 z;7o}02GwHKVq4S}h1V53iXGvO5c`@pT70&dZ9pz^1uzr8Lp}EWL_aai9p?UKels)l42_%odyEji7h*mJH?7^)?(gC6 zAw8|wQE^n{Re4q2l)5R%ykC~OEcFrfh$>7dL>c|-^?Hq;lR3y7WJqNASMUGml0fgl zx8AoN@*k?J>gsF%Yae-lH3|Qb@BiN>zD@Yjm*^tEz6pVu$W&aym++qn$XWc??*G`S z6_f>KB~eL~_DXxm8pKZJL4VKf=UE0U1C{~HfMvikU>UFsSOzQumI2(=aSO+tJi!u_ zjMtIDfR4;NWWC|u4h;Z00Q#H$Fkf5qF3m z;%f+vMPm`&RM}4qyMr}^JR*;PUm7!YTLSLK1!Mu)m^Y>=vlhRj?`UM~Va9w-zowye z{)xUGed)b-h|HwKJkk^l_{1IY=K;9ZU z*p?CMiF(43j-1FR@}UIGVz|@RX0;hQ>!-4*Y@iuv(8Z2i0(>7l7xWrHZx5d~b``jP zZ_=Cer|MG$4|yBaM&XW*tbF`j`0mjku!(QtxJ$ppU*hP5NB;q`>u~ozZB84^;2CrV zJ%x~)a7vw0$nh^i_{@Ap3W4^f058C=va4*U8ETMQP)e85&k(RvNrZ_IbN3RnB=Ye? z{{XG}O?H#vwLsoHauIMRUuYH@WYRsQpVG)0oS-LY==Y&LKxRL76!_kF?!(P+YFns6 zTZx~{F#>uF&~=adH?r`N4}iNj9uGVhMMM!XnNN;7Bk)=yw*Z-b&B^bg$#qry?) zazDPMa88JI1d`@Q*#XT|Gxd&sN23pMC}FW)tfi6W zbN#tq5v~aDvbzl065RfW5b*jU&!Rjp&yk;j-yLKYAS(j?{G-dPkb3S0Uuec$uF zkIl#CL;0b^Yz|E`^31;ozX^6^zOUpL3sck&TA?KfKh{(yOI+6UjH%ea3K;e%^WBvGc#3|Ly$$pnnnU=UE0U1C{~HfMvikU>UFsSOzQu|5+KRKppAG zvkzIw;05@Yeaz73UP_dT{QtO@BjX=;(N3%rCB-#hL)4Jy#*N&voqQ+X&2}?*#NkU{ zN5I$CC*&kN${*!>&0YgUFsSOzQumVpOl;6d;IZr}!`d1>B<^ttWmS3Slb!b*e&BrIJg1)f7x({*;l&Ug zciR%%61_|>)7$CoWbiZiZ?ZR8nWQrR>is`Wr|C!Kqm+!EUv5g z`|wM2ig$|NF?UR5ud;{UJZLuHxj=T^3c_J^SXFhax|`G{g^q)9gdJ*!dPY7Y(R+6; zJQwzGdN|1Z!@g*v+$fuc&BB(kma%fI92*!8{15H_Zxl2N8k@%EMEZ&JSJkVEq$_?# zo{@jzeBz)Z;RpT$hi+wn9-z@BiJpM&PIqUd7%4gi9RuV@W@ee$`Na7IJRNv{V3+pa z=KmLt7mk<6P$EO$uy0sKl!XyN+Q#-vrFKe`8|El=KnwFA3FPamI2FvWxz6E8L$jk1}p=X z0m}fX|MxNE?xUaV4)u=1r|ff|KPjFR=p?&AKwdg#XJop!B%r^oo9Sk9@Em+0p*rCg z^NYd%#$41x^bqjKV=hG|8#3_GIoFeb>^tCxHG1pt^Sbh`{5$p?>%cqk-wAW{91ZV1vh1NXfXBNX0seDz!Q=bq zCLlZhFTy42J?z4}@b?Il&17m8oM$St$_&|Z@U+8=j=p>Nv`_QX(a%`PSMs8S&1`d& zF@V|c9rh0Uf>6ekF*OO8`H^J+-^4Hc7fK3{(GCIp!W*BHfIhogtQLD*Kd#|ZKyN`- zomI~yPRVNcBmU~yf{lnC5B3!BLLhGex{KS?Z+O<6HA^YqA6@j|20nf~-c@WBP44BQ`LnHQYw$R8 zv0M!K1n74tM!+nbOnA~f8TrvSu}uuSoeP9&)SZAlemu64tR&lIcA4+>_j)B;$&j0$ zNn{dr2|utO*myZ!t`@5WvhDvP`2V|xUBd(FfZAzxMjZ&4$xrALlp?TEKWm;fPphZZ zOXj7hU*Jdmqee#o`UW1+kLZ|*8FU5gBAn8vbOBSqEYgeg)^KYGT@5lBkVS#lq@8JJ z(BS~y9wtB+gKUkFgkSluye$FwjNk?DLHy42*1fe$7;Q#Jy$khty(j|%`HA+!GGH07 z3|Iy%1C{~HfMvikU>UFsJSYRu?mvkC|KIcezens5A2}a6IaCf+jaTEC8!HhSx(!`) z+`W-_BatkVQGKoD>~Y z2US&8mB@apL1^qX_RwpH?s|9_7U%_furt`Xs4gl=ALs!5KXv~{9%DwCQ8qG-4DQF7 zRc3|WzScqO;A8QzSnIBJaa+FTTyxMF_>uW2nsMRr=uI7cpM{@==zrL0Q zu|sGrTg%OSGylZ<#DnevJq!=}du~6^GGH073|Iy%1C{~HfMvikU>UFsEMZI7EBqB| z!0R4m%Qs`q7;gAEL=MrEH|5s|xX~lS{&n{He|P_fw;wnE{~PyzcnJ#ff_w+t!Cn+E zis1xg2COA$LNQj16z@gZM+9WnBQyRv0`&Xk2zLlq#1#Pz0rU?Ka{s@}?@~+K5=#89 z!ZDXULr{df=C1jL{lcyho+ThN0ln^Ngx3fesN=ANC?PJgi;?#L+4Za0Y6h(XItQ=| zz%F5yo~2KklcuaL3tNRQO`u49g&hYn`@iO2^95poKqve-K8_=65qS!j=b??rBC-gN z(4X~Z=lS_4gMSzsMpyk+Y`Ix(QdufnWEL4@$}iDNBHckV-i+fW4Nb%bwt>Awfc64i z4d^6<2jM*edLi&wp?kpR)H1aUv?I_)Addk$k-Drddt1CM&~;Fnm1eumZnH&i(fIk3 z%%p$5|Ks`oTkik3!$UK%m+$3=*&n>75KJfh? zpZ|^iMq@_;?FM#2(Q8V5j?d}m^w)$>%qJ!*0eKrmOp)lZpuYhh@Bq9^_(}XECJ`bX z3%y40!C*Il_YdAL^$GUFGGH073|Iy%1C{~HfMvikU>UFsJSYS3?!P8qlSlXweqNnd z1F7?FtUK17EGGYV`TzF*-^eK^$_e!EVNQEUJ*43ON8j9)@JiT7Hj>C3oTw-2B3==1 zg;*i}cK&uSC+E;Pv~Yw|SJ&0Q@!$9;F-jaZhs|+*oWB#k6T(vu@A-(thy;uQ^Zoh$ z!SG5RhP}pt z@IYAHE$*HOP6T85Se}c3yoC%-24`3}EQH3Qa8NinEl!Jz&P8XXztSJ#4sp@{@B#sz ziT0|!`bd5xzYD$#kP~o791_S%s3~j8s-~*h8}9vQ|3CWlmdRzZN?0Wv5*rdb7#s}# zQhzCAL0r<8^qtt9Sktg+IMJQxLWA&3_)G}BM?Rj9w@Gc2`ht2vl_C^!3OVcbdW{~x z%t7WLLn1>08Va92h?dBU@Nc>QA9fBqZ3#Kt94>Y+&@Z6R5S@gW{hNeMLg`B%{)~Q3 zzvwX(=7ss+;ol)%v;S59KXm=AR4X+yJ~E!g%i=vAJRZO&aGTv`_*vM&jNl`9Mx9Y# zkym6uAJFu}!vZe>{1WK9oSrm22|k=di9?Am^_Ti#`LINez&HYS4DfT<56ggMz%pPN zunbrRECZGS%YbFTGVq`b3}?gHKt7O9A&g_=qS^K^Kg_cbaJPjY8JYg@JL9H~TWbkb zLbWoj3})8ZgvtbXq0#q;8+mupU8M0eMAiNO`v2h@e~o}F0C=J=6UGvd-M5@C=l9q> zhM5rE^0?RHMvmtO|37Z|=#sA|>WN{5$IavBI|Az|DLWU&S%krSKH~F#*1C@OH!;F^AY8no2LS zb$Xq~js02utlqEot4unRu1xqxr~N!OkG;*`=AW6*%uRNaOUS8n>e=D!FuTca;F~z859(5;lz|sv zH{Z>{SufEmy8q+9A+O+ncK^rT<`=>cIYfRhz8A~*GExQP2rFI*+VG`XU${!F`aCZ&15#2QZ4qd z)B1GOSMiVg|3owKU)=xU2YHbD{}FLSOe0X$C4( zl1@nnd4b5(8*B!f(f(*3xpKYyIb}}S z)^F>lhN&U61lhyvA@l^u@yGW=uRz?7`^c$((|^++tHR=bQLJguG(aBS4zWWZLobL0_Wp10{}1{n z$$p+?z%pPNunbrRECZGS%YbFTGVt%j0CL2>=il?4gk@|Q8%Q|E&+#V-@Poq}4?j2Z z-;sq6|8+@KQnfa%qyD@9@%|6*_5aHKAK3ym{+s-Nc=P{}|Bvpye`KMjn{;zVpV3ta znN4Q1QWNN&K7>$7R1z-}aIb|=Jw`ZgjvLJ63kdLwHxiA+Eq;s7BA^5CRsJfusEcuA z=|lGoPy0o4(O|~^giwN);OJh%oqi2p!&?xFilX8qJIRnSFo2Mgu%6JKP==MEtM)`z ziU2LQW}0E{p2Oy_&bo7S?}fJ?zW)J)3+4i~0LH1UpaUh&?=+oQCx)zibO=n)6ZCO) zT#eV`qx}C5*az$l0`lJRcs7|$Q8qtv4bbVAARxQ1q$o+veh-Ov_&bru0D5y|5?2Gk zj5H%DVgDt%UFsSO)%UGVmYy{y)GS z;Kp@aZ%=GbOchhb)8W(ME&_T5(N7Q0dN!7gz2&{-^%MQX@$}>Ab!Alb#8RQIdX31F+9&-2#py$rOGDO{L_tZVrO>`3tO+&L(FV(oi;=M`0E#Yi@iO3564cTsoT^=p8_%oZkb!= zT6it|)A`fc9BvM`uq~{$ZmprkM^3GX6K1&e|+&YAzR{{LlWnQ6cq@E7%q8aasQt$a_uC-L7}`Yrv&qH)ymxW-xI zAn%}dqITk1a4mRFK1VGRRpnB5se788rtMUL|C)ca?6bBESOzQumI2FvWxz6E8L$jk z2L4S9z(0@sHoW%mLt_rTC@u=z-jSD&`8FgV0}fe%=m)5(s;bVWvw4a?#b**45;m9( z2DxW-cpYkrJ4LGV85}+DbNC#N?sLqR$l@<!qId!sIUbQGXN5uNhW2=FmHE*=-~)uXqd8v)*dZ`e1~D6o~G=K#F| z=nlYp0r>{c@@F|7EA$TzcQ~{F@bTXjcLlT}&>kQs0vd}7qJqGTihomB3MJit%og*- z{AcsC>BW2T;e_kzy4p_ooG{1?GIa=V5uVad=}F##a(Bj3oIi{`XJno6w}IRx@1kb!{rT0ue+ z-9($vgm3CM^*A%m9M*?5X7rtUCsZc7gehV2s=TVUscq0HxKHoXL)lPLHgsVh>yLF4 z(Aj{!ucr}F10vUqH|3_v8{1C|f|A%e_nE@>c$b!J{P6bmT%4fjO z>B774FU6Mv*%}!MH3@lHUWQ%{_)qYA@NfF1w_ju#unbrRECZGS%YbFTGGH074E&d5 z;JiMsFE|$*XuUD(7IBNXffG2G&yo4JRcxikv``fBi}+7CPdHytuRT?$r{;0ENtTE7bMydWa1Ayo9!1TkohjYO(}bfwN-6(I6NFePw`XmQ}7FA;bCvn#Bbv7a(B7&;`8F@ z?ZbWpuR&wkSR(WO1@{HFooc84)PL%VZbcV!?@F;!+%z{$)v#)a8$Nso`JMdE0B?Xd zSPfRtV~kVdR8EmoAOLbnuq42Hs-j=fhjyWn)5w_|Ob*_2-*fSpo=$x_^=~MFuNkLLjOc&EH%aUFs zSOzQumI2FvWxz6E8Thv`@H~5-HQ`NoE5ax?D$2<(FUw10tK&Y49RISStblJEetF!M zaa%>c`z3aXP3O~jT>|c<`B*+ym9UktnQx9f={4ge$OIlq*c&^YD6w-w>yzvbP$Yh_Ur|EfWp2FQ18GX=Z z!^@5j0z1i1@@M6<5}kJVZ_rdMA)t#8zJ*DA5`W*kAKk8zqkt}gX1p1f zOtKTG+sMjiuh{^(~!uD}Ay*@t!l-HA5{5R+Wum!dvIWa`g1^Gyyy1KmI;t7O$%_trzq z5JM6e{fv3WG}F!WZ~}BB*iWDv6Fm;OST0tJ*P^7w34F0xY*KZq{(^lG8?$8p=-Ht>-^OHh$lMDzl8nakhTbfLhxT8Wd zzrb1GZ1OgF^Vxh>&(t$98I$|OKJldgq>mdtwD$Sa^QZ48ANzOmJK3Djm-S`GgX2LB zUV|e)@IJrKA9o&iZiTnPVootUFsSOzQumI2FvW#B(6 z1JIQ}M8M4$KI#PFP4T8!z!&g5gl`E_NP(O4Bm5EmCZV>jt#LbrcX=USNQwRB_ziQz zbY`8|Jpy#p=zParA9?`XY)|P^db}BL{Ll~Kn{-Z|lS6k8jdl@Ugf7u1`7krgr0aBzeEWR_JOA7H z-_HO4S^t9B=VckN3|Iy%1C{~HfMvikU>UFsJSYQ38o9&lFwl#y2v!8hs82~sN%D

      TR{uaLQEz=8xP$+bnG4dj((k>PJm4O?oM~- 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 literal 0 HcmV?d00001 diff --git a/root_dev/recordings/audio_23-11-22_03-11-2020.wav b/root_dev/recordings/audio_23-11-22_03-11-2020.wav new file mode 100644 index 0000000000000000000000000000000000000000..e73b7874723e89d69a7a0017b2e383bdc947ff50 GIT binary patch literal 1929644 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%0DsKWf`t=vDzlfga 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 z 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û#)QJEmywws+sx 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 <1X(mkI$fuv`}#O89kK# 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�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

      x?i<=O`;4^Bcro~X%om~v4L*wt<@om-ext0i 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

      $s6_RixoH^Xv@Me2db$xZE#$D>;erNVSB20u{ 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 z⁣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

      mCefL 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

      6^XwjZMGNxAN75LV6TTau*rI8A6lg=|*} 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�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 z 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%0D%JSymlUX2$0b* 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

  • (bM=GY>T*5e*%^#0!Qa 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 z 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Ξ<1As#yqL;%ONR~?64-&BrQ7?BP8_@lOum^)$o-V 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 z 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≶c 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 z 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

    (bM=GY>T*5e*%^#0!Qa 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 z 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Ξ<1As#yqL;%ONR~?64-&BrQ7?BP8_@lOum^)$o-V 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 z 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≶c z{8&sb-NjmZ=IB21ql}K0Y3XUB`^XQsjpW5sHeG%^&h{U%U5WhQQbB$cMCHfU@mDWD zl=DBL{OG);zx)UfDnF!t@&n#L1;5(0S$*T+AhP3F#@{PD9z)sj{H}zuqioMVAUj46 zlpWSVWJh*LowO{W+<5(0KZ)GX_Wyv~=*mbSH$n;I#@pW~H(n;Wv2s*Dxgh|jHcjXw z4d6g>%}gdY3ZrtP`!LB3_e6Fjiye-W8=EspZrG3Oa^v&E=BV7b3i)9#x51gW_VhmTWBN>z7gJ~I@?#R)pE&bMpZsv&boKJXb>>Hu zADgp(B>A!Lz##JD^^yOO{J7(jgz_VE_fIZA4pt_V9~GrPiTwEAJwG5n-WmDh$d6eg z2FQ=!-yA1DX6MDrkNN{7Kc@fU2joZP7?K}`W4io!`G7fLe0k7 zRIiuhE{7ZtZ9UIC$yQDkqznv@j~!;5-_^iUdv%v%`ptQT+BjvAADd3h6ojkIX!&+Bk2PFms6DPSCW5g z6-}o^lPW}3$_etGK6Er;+>;$XchMUfP8oACM7S{6HYV6J24w?uywSbDMJp%O4ZnsL zqX>o&mz#jEt1^F;OdUppdpeUlJN0)WWyVR1K;YiNKj$!OD9GQ(r zWFX5$6!m*#y8#~1|NY2Q^8)tUI9%{SZ--wO0B$k~w$5i3;TxK#{2y;u10O|^<$E#- z>5#fJ$@-rmwceb=S{RR~H3c zPjvS@1%50`KuG}Q^JI|~m-UN|IWWM91QurBd)4!i&J000;YX)?x~r>Rz5lCMud1uw z8zSp*}K|K=)@E7@W--5IIz4{6Ne*F z9GKkzC@u&GFV%Xl;hc%%Mbffzgo=$Lt*JeAU+j}5lk1ZY&4!?|pyUeZjCx5E*-umCZwXB|+qh4oPht5c#I31(72+c7{l2cszCic+B0C6px$t zMDWOG5kP9&;lWHm7$EZX#Y1G>R4bcD_e_GwuR0{{*VBqfwiS_SQ_qdax$&64;D=)I z)vlyi>=KVkdBu>jf-R`6__p?a+(0DyM`U`%6e}m|oJpA8r$f>komQqZr-kW4F|shW~313&Zcb zAsNFv(>H&(5dFU+x&Gg7KB{p0_3VBFGbB_!em(7e^e|%ILwf=|a&3)V6Hv+;V*Wch zsiV+ArJ*?$_lio?MKoVLg_JkR%73kU5~!pONvC(WLgnvnfoj{tb1J0H@Ot|K@EZSN zQoKff7?0PS0a3g@$RWI#6|mTNF#;HiA%=a(R~HYmnh91Mo^&LEEYKn8T@EW`Qymt_ zoD-5m)`>n_^h2>)u`MZ9zcL@`l@t<7tmZU6CqcVdEKeJ6<>T?(BrM-Q&YH9-*UIvD zaxE->Wn2=L|5*IKc5708U$!+7ze5+5-%nIonRsb3e&5+4sd1^5-+M2$@OyaGIr#02 z>~wUM@?HVn8sJs3h~HIK_t)T%0GFU&_3~X94(>8k0VzJ+XG2%fKBaUE3vcxEExw}N z)nByO1AHsvy?wj|7btrulr96r0!1IsA39pUzI(#?E1bMy_U!>)F8g?QgEz@i^D5ec z^3Gz1FRvMxeTLc3`s}9??hEwtiY#BKF$diT0e>MSvY78c2KNczV)BoS;guNn4kwtJ zun0F4(J~g9o5%RKm}b`zWYZ;;=-+U8@hBtn1UqqicWAg1$Edo9{xq$N$F^{C@c2VA`a4p#obl{{lDDmD| z8B#cX4ZCL;-9SxhfQM5 zX{;C>y#wv$o6td`7sSfzRMZqD$EK*GRVBvvS8KlI#;K%k;QUgLKR;MTj z41VWzvd}^&T;HkAwc{E@+8+=)qt44#)b#b37ZlM_LmofLHz`OX3vE|e(NU&U9A)|q zw#es#VN4%AkTq@~?@mQqnNr?leEtWS=H+nLCkt&D$U+AXGL4;V$qhSh`G+ihfV)Iw zjM};eQu_5W8~FzyZ*%?L$H~RJaKAlBl@kRwA30MTdT}vx8Rnm2CdTRYd8qVG|g(Pa7mIjqmNPX zo@|B&;*DmFlG5|a%6NL7S{b9~&6P2Fmajy5x-E>-^YUBgq{rTlo_9ATrYE6)8J<#b z7&pTlW7-`uM()$@z?j59v0Sj*$aSL&JyK{4^(J0w=uf5`G|E^NenW<1Ri=-HXS1Df zxZr@1Q8`?f1Kj2CyW9n5H=NxJ(!k+jB27Nr10u@{;aq5}o+wHBBpD~n14G3mbv|zU z>)iWChxktgCxGeNP^^b`uZ(*+?^UrzM(IFY6<8tbH^>yQb3Tv*U9~pf-I$J!`;0yL zQjB+TfuNu(m5E{b7@N|CpL9eo4rNv$JExFxJ&Gj?ucy>HZLr`iT=2!F$jH6rk|s~y&h<}goonWC9>)A z10l$tk)Xf9{m7z+2dF;gU$6NV>*_dpOqO`|!;2WyVC1G7GjU(HcQpo(DFdAJv|2}o zRI1Ix7$vtco;qL(?vX7~WhqrE(;rM}EXhrg>~P1KE_H!-bDKbsxV$`79g+4v}6RTvBL^K_7kOE0}K&JH9NOi$Qr@!Fmkd?j zEpg7$N<47x4(CyD&V_R+oYh&GCB5Lf+`R4v*NoCRzKe1k{ zf1tc$fqAU@h#IYzw_!*V{xvisW5(}fNm1>kJk7TN1P63UR5r8+Rr>C$(p0C=fyM>x;T58X*7@=srqYMLPRKr_B;3LG=xxE&6V z?YnB2_PW@A@Or)ZZ7@HeU5N^75N~W%8cJkbrqP$Iwrycm+{?my8Roqz8DHQx0I{dk zxkJb;?Z${j0plMpeH8cQH8I^wAI0ZS#URLyuc2))8){!}*8VCVpCMz(1LI2W&G@BQ zN;kN(C@U1Ea_P=^Sp-6ziS2?mYTmRd?AUoc@%QgI{p1pUdiAuo(dU(BD=P^5wFS^! z9fK3buT|6(A8!Nx%cf=K^lJ;FFqPI{2L>!8Eri2^`%WRH8_qsVS{Tq4s6NwvDXSk* zs(Bft17)(H#;>hGUc-ra{ZIpKf0%v}w*~v4Q-Y4r@8jFyG!c$zaNO$E%I`MrMmM?N zhru<-;8|eS;HKILgG=jw4rA45CQ4_S6ksNoQ6`I342|1ZVdhh8d@T!EnHh;iYpSNO zqv}{<{;QM7DRh3pVPJew7h*hmw+l7MI6B!6N_s$ghE%GTrJ#IAEI?2FAmfb^l+W3P zOn+2t8=38)_*3O>MXdy$kA((3M~#r@slQsA4ozh?i1%y|?^Qy)S5d^@-QOXvQT1Tc z_fudixR?mXG&pVrZsS9jad<`4>Mg`5-YzrT)l`#mJxxi&t2>;~i$a&;g>k4C^1K7O zTyNni(+|jpj6W%gM-Sj5o(A?&a2|peg(Ib2ube(MsL@;WBMVf1eJv37BR9U^Ccecv6kiebLY? z1tSYgKp+1A?>h013;(#ijj8>~J}W>2PG66^U?7W9?P@TlArrqgM}|W+>^~6(o|i1i z9dHj??i?2!5ex6=m8P}OSV5}ONPR^%LsSQcqrp&>lOdI%5bBPRc96&VdoU(|weUXEmf~)aH8U~ar5GZp3pMjqkC8)+RZol4i{kXEIK73A z1edNBj&fJg?ueR~qsEIn8Y;U|HA7_!e>-~GDs(War5j66h~m#stZlzOUp0RAahxW0awl5QNd*DsT2l{AF{R4;mTJ=h-?svv8556!)g(|OP z`lLgKy-gH(07FtU?dC^VBuo!BPTEh>nnf$79`UZHL1f*QV7`}cZdDq*q|UEk{N_jK z(}_K-iU*=M>54Cb&_j2Ely6ap@{gnpLc0E*bPPU)Wc4tfFD4YyK~R9IWk%nrROGS% zsCC&_^r2GsC%AL*7AyyNMnLzf#x3-< zJ@9TzD$@e*g09PF`jf;aAF*jtKWf;+AWb^9?AXG+J_#0+-IpGA9L0@i2LB!4To(=w z796aI^wH#8s9S5P(l9^E8#+sUWyIkSjvE34af#o^*JN@vgssxYZz}Zhc^)5M#L(A} z>Ggn&%=bYwjO(6>s)=*je`nMIKsMrodG=2*%KB%}2sv%P2QNe*^mKG00QNfZ_83JaFvsgOAts|R(2%qZ z0C@V0kO}QxHyrsiQRa1;_88on8)r5Ht>dFzWM*ewq*Gd{tM&M-rtojhk**I-!(UXUfMVF}c^#07^NrQ6tyW(^-B zuSI`I)H0g?3sQz1+0B+FcY)>KoVfgVBISFcgPD3`h9dA#$SMC1SwkiWZmB4m#jfa`0AWGO-Z*IiKl|My%p ze_wq55&n&HA`eYD&FD-{FGJqFgjqJ0h>1~CP&eBJyP%lQzQSTWLYHc!4%--?>c&yj zwG<1Lx?#RKemo^ca&Tu}R_JW}I8ID?p}9$#^?YqkBJ|{cAfXi|p~BwWoGwM$(TK0& z_<@y28+R?nt!-WpZ$>nOOFC+>63sp$|G-)(bQzfSXvl(GDTPgi>f^Ji#!Ar)N3RO z3n|EdoRihJVqWW>mTC494zN}iK@*&C{@vN-n8QMmgBt70idZbFa@eu+kM|rqj>SrGGZdPhP^WV;3*~zOso9SXz0KXnny7|Lc^*OJUr-`07^>izUuP~OD+dP;XljQx zn2Qx)=y*HMjfh1UJjc%)Y8OJunPkADMbH4ZyVfp%dtSIF*VbSS7~ks0|2zGBpARgE zBDuOde%IF|TxsTzeBbA_lv~>uMwf;0l@xo>bqUlmMRiIH03z^DkCfd)Eu4N4+3=cCSc4 zPu=d|ZKe*`&-nQKXjj*%4!9b1!1ce5=>TDkMl=9+bxz6X{p(mSH|Icy0kNNNL=rAx z=%v1?qltmW$dcu7muL(v#7_+SsSQ%xm|%eEqn*ZYH2ka-Ovfl~8tT_E&dqko2*qx% zrQ7pv$42m2?DlezS~h~uND_uspGzrzVP;|shl|i6EcAZyEj2#~;25iCP*X z9*@)z==BxtRF<^B6SMiwqz}a6LzIu7gl6o|+sGoZ$F7Raps`5&&`lJn{WbJ}S@eKH z{&sx)68fCE*Eq8RoBTYRpEvsRL|iqb_p9jSRrUG+zn0~lW!is|KV-kQjsoWR_;e>N zC((x#pKB!)#z3X8bzHoUQze-c=VGt%IF#bkraR+4tj(lG-#(mU-`2x&d*6$HBYSXK zyKs(}O<$m8=a{;xs~Oa>Ww|U_$5(vgGojD=**Eg0 z(7}EUZE1NMZ5(-5%J*TYxql~1gEa9xl|-i?T*`OgTC*8mGL}p8b}IeQ5vc6t+sb)r z{b)V6-pe=m!VP;4dihp+qj!&?rFa3vqV044QU;g}pg{lnI2*ZN&x&*cbQki`uCHg| z64M$({O%VWz)hQC^EpxaPi(ZAR=x30;+{4-sw&CubO)X!;k_V{*1SzA(;A`FCp7qDuUtK+jlR-L@Jb2_ zH|fRv3m;z3q6jm167D9TDOSQnc=%$c+8!C7!X&lC==U_E-`W1;e)mJ4ME_fEq`%~l zL4xZIORYb}8QHugwqr#$E8M9JYzqx+-CI&;Y3Ii&`&YtvbZc?rk6tsAb_gautTtm< zGq?0RtOL_Oz8K|mQg7wl8&{}__;#pK;xp80ZHt=PtrN#$-AeMm((b&Z>qZaEyayHP zU_D5{U%eVRsQr7`P|inF+*(69zngTv>#2?PhT7P+`TJ1Ni3T=pjw$F7-MpzZI#{g+ z4b0t~I#_RhB$&Q0dYp#1T=gYrQSW};uNI|+Ulo!`G~i1`FEbInIQ;N<;1d$ZuS7kV zK=N7|b#4?vkX*Hx1;4Vg_1{K(8Y^QyjVk$m6#xOig7%r_J z7{hZ%2tyq)Jgk)xh8A+svV?Gd&c`!~U1q-YXrGIwRDM^+3xINA)IIDyh6LX8JeOk_ z1O3HU4816p7KDmzW^Ajl5vvaBUq*MNJdZ;ZeKR*7=9Mb!^MV9 z?3BbufoL8Aq5Q%nQOel|TI(ey-VuOlUv0f4&TJ4LJ%9-ZftD!Y;3aWRP`t~$awYO4 z$RjI;G5^S8$adioY)^~{T31+@<%pI>ej1YnR%EI!#W9Gu%hw1C7R24ZnIkX?1Ov*m z`U6F6QT(NncI?|e9Yb4p7+&YI$sHC>Z` zM*H`sw%@;n^mEUtWJtwvx-SotoJKxUrF4YKbXg)*II%Sn%c4f=qK$D&?hUl(uava9 z)4KkCaeOP6yn-pIeqnT1vtMr~nTR{dE-&9YNEc^(Yb%WE;&#LAyxEJExRW0WrbPc0 z8b36(5bz63y(-qNBdux4`22!%#(iaOUOuGlBSr=xM1Anau`ER_har}}C-ajrEUtgj zuASR}Yxn2Hh0AWO-j0@~h|hb}pHR=4@L}9|qob)k;+j?>DgF}D?ut>-M!LC5mZ33G zv(rT8m?q(y7_DgDq0DpPTbU}6kxAOh)M0osueOo7>Vm9_vRX*GD<*hsWK&CrJrn~T z)kv}&hTxhQ9-w_}vcc>XlgC5dK2^@8k^@PW#)z4k!%J|dh0ZabAUjNeoO&WW1{-AROrsBguZ(dYm_&cDICNw+b;>D( zM^Gr0q9W{=89U~r;3~L+1Bj_MarZP^J+nFMAGOt9H3KP8cOpE7f8yl`vn zIvaHGl2|u`#LEokxFXi=rEXM8wX1C=&(E8jSfo-SNk}zwF9I|555Ue8ICD7#YJDc* z#{fS{cGwUO#<6XR&T(*`)18JXA)HNj@DJ%&$e;hQIf`YjywqnL}fuys^FgXVb@EdCNf z9!I@_kJ~sL*irlFrkrEBAl7{fTW0uyNReBTFgiysP-P?|WRBpIMG#@2o62pFI0XiY zxo+0 zidG7AWQ_=F!&gSr$MSSZ`#4rMi_%2>Q9(Ncsqaf%d5W#wo%^3N)&O!PQPg%teVB}* zBMJ^o@moj0w!rrMXxtAso_zIU3oZm=IbDyNAn(EW^LQ%5?QKA-H_3XC6$D{-VR;8- zac4kw9Q2%)$Cc(c#@XWyr;E6_gLYWra+&|m5eoWW2TKjg zrtagu#_P|Ly(HuspUZ{NnJ@#(fx^;Xx;TvcB5foKCCp$KzYR&wX?o7sChiJ|21N|| zl=FIn;Y1-toG6MnURM0~zS}Oq5~8T9BrH3R%C2p|r`-YtN07T7L@CHuDpAfa8c406 zV2%Yxv~fJoPI;3O^M>*~1XF$2f>5b#;+;(0!tJRAA80)rxDy#S?fw#wTv2E^km1?T zP;s|V4>E^ZF3{Jl;f5H$DX_`Os)_mNPh=6qQ>GF@M!f@16Q>EDOa*?xZlQqG(TJJM zA$c+spDB_C`BLONj-M5jR~q8=m7kB7NQjS~N5!UO_V`6~d8eJurt|J*!9I(2|IH>E zetZ{JQA@czk7i#L?W?k*xjKhd@idSQ1hkS+Zuo0MXuBJOC?)&Hpdf()MT&*v&(EMR z;b4AiH)?Se{4X6}$IhhmoXh(nB7=hG48_nR`ZMtOW%2Qw7C(R>IArl*n-&>EQ}nwZ ze;-NDd4g_~RRUH1l7Hor5XST$RW>Hbd+mm!#m{2hAN=(D2iX0;tmc%>Raoq}anh2$ zk6KS{zY5wH@P_QTjy@fSJPNMs`rxJx1n$?32DlV>OCs0#M0xLNy;ZFCTOi%V@PIKpo{9@gflf~gag2T=90vQG;5mq$`q zq~e>Atz`uPG54U@bih=1S=@-e&)z;s-0(JU)IV8g?q(qJ&5A$sMds*Pg&~n&B z-hd=ZRtdg`iL-)YwzC6&q61@Ih$nOz`5E-njKAoMl)d6INAT(0C_v=998IFP4eu2- zIr9SE9;>(kWm4JQN(nHHXyQBwxLk|2_%vKOlSl(esuIS}yR*XtM0us`q#dtLRcAnRNy*tl^hI-=5_%_d*?4Q7`kJF?&vu9)fnNB?)ehN%tp>-R`0j z_0VmcCRDmhB2EMff>9A4Id^}e1^rMi7xXu zSh6FjBqmmzOe)!fCAFlIm{@T(sU(hONmqO^OsV(==R>TU43ywB#gn8RF=)4){zpD2))Dy{NMyn4J?ks>Xt0B_SXm%!KyUap-es6rfMEN7* z^3!73irEI)ig`5fuN|^m;Qv7!xhRi_b<2%8amLTdeq&BHrDBSkc>*+VgO%ptqttnb zUtbfJ*4eS8HDNxcZ;i}HQ-psGYeP0g<|CdbaX#MqYutQTHsL%RzAa zFRqq_ioaZdWzkrTobThs$jFk}9a)@I&1Fy|uA8y-iAJH)KXOQ=KQk@1PNiLPirK|{ zp)v+)mXc=0RMv|W98Gnl37Be1Dw;_}tqDb~W&mQT@)z5wbuFpNNUCx+sR|YCiZ3^s z%6-GU=U|ra$IXCyuP(s_{LqTYvODO^yFlyW{G_;ymLd=W_l+d0`{>UZ^`KzA!(H zPiLIHWo~X+!AY083=kXLScZjeqe492sh)G@ovmFn)>JJxRlW0DeoRxNWiO1XuT$Vt zU16hSQ!M$uh2&I{t9`v7nl=v7TSjHJp-F49qr5uIhw?(rUD&$Cih@$?&l%^ zU*n~Rqn9{*8umH0a&%thNJphj+`VF~SXF6*ss}{*N}axL6sRMf5zIfmhWS-`Enz*> z3;&5)n+cz&u8cAe*t|f9%m{QdJikCEcx{(aEL+mQ}GoE z%l?1sUL*LXOWM=1B6aXt<~Sv88A4A~bGiYNKnu!prgG}58Oih*Q91UDTlQSj^@Jis zw)nP*sIB!8mHMi$ajwf%kn0rn@$rSmGIj`fg*oTWo%2}d=Sx!r(*F5J=$C(9U;176 z=i=u7SN>^pM~8j*<1zjT#FD$+2LJqbEbS|I9RF;OrMI}R%RlqnQU3X@`yb;Ur#s3& zHg_WbRJi-)p91#{^G_4!pFk@AShTctgY!>QgnumB@#kXvvvhuRfZmuN~C9uV<}co0FGa^>p=jmv;5A}zJ7B?;r~Uj&}AtL1hv`;p^fcGYPR>uaHi?V^}n)-7g_Y!RcdUzJ>FTk=7%jh#)E_v6cNoLReOtq$^LeT+=7!PGk zKTy04Hc}4XVd`8P)WcvWcrJtW6#qRfvg5Df#`U;mZoEJJKk?aJ-($bW>+)K`D)Mmt122lN0Q|nGY$3)U*(>fYTc}<5Be^wiSWn?c z_G&q+1XG;7(U9?AIu_d^wAQXT_OBXC@1k8JnlGXUx`2i+uS9~s&(w*rMcH11d)F~X zxA^=;Ou~KffXEz&SB)XJ?+`yjVh(N9aA2l8uu(@d6H9uSzuc_QU1rYZ6N$@14cH(R znS4;Y$xQ?-ZhR4G*1!D6viIu_**Cc-oP%_og+zX8J|3lXg)L;ZA4h0eQRuV zwgLz{o2-*e)Rlim)3E;$^PooGe?p^g3%2SjQ24uMOU6%&dtA$o+dkTV-^P2@<}*fo z5ZfcCfseU)S^e9`ZbI(>>eC`<(pzx&L{z zN1ee|T{qS@{vMNh7RCvLu1^&83p_!@%j8*WqzsISrMX*ly{tgTaHj9!4(swg+rxa% z0$t`apGR}5bLMH6<^kJ%D%Kt6OJMaVr#fRckb>oiwtXkcYdsiRIBZpX&jw_5N}=}D z4rIA0g^;kTcD3E)8Ot3ggSo8eA*p(p;=7-Doq`a)3FA9yhY$4W&f4c5H&x$6)u+CU z)o0jc{}dZl_?eiCagnN8$@W{;A!b)d@Uu(IE`fEaA|D$omemim-!3q;6I1L{YU1L&t`P%4#=sr1`yCy7M`WGwFi2@ z{ua_p$UqU^)A5)WAO4>5&R@Yvv-ZoOtI( zjJJ!@<^X(u9Sy!H(<#n4$Z(w43=jq4D63Z={}}tK1K4+QC}ZELPKY<&djhG~QScp( zUi&JMvF|U)KI!{Dh(8oP6p5k86Yu;fEi5+D%EQGHHcRqV6bUJTmZ$kU|Hn0gb)p+(J7heS~c1&eOH^&y_X|GA=>@_L&npANL zIQi^W%3+S2;~0l?=@(A1bhCGI*pe55!-9X`eAEUhixeKSLgZZW#^+G;iS3(05IJH$ zq2LD5-o<)kX(IqWK*7KCNV{K;fW185_LxDlI;F#GKn-bYo!Ks&&dzX zIUV#^C`?Enxd0!D^+AZqyQ|U=X;h^a$`uz-I|xEX)>fUy>?qUWna;xnHaN54sKqC7RKV4o=spQ%!9Et68iTo-&%nZA zzp}3^aQ`Odt7Fz`&H)8;;-nG-oPpw)KAbas50my@-zK$ov;O&}X;LQ;)VQ8RRcc+%ISL-&Nw(k^I%78*)|rSK{eC&PTd*z@ zc~oa1?c%!6V8wh#MxM9OR}z=i&1!sAfl(qg%k{(H8oKa-^1Hk}Q6NG_u2SJ^*Fg|c z@SYDk&QX%aoBFE8@Fa=vNMiUU!&afdvVNA;L0?@BeNp$62h7y7Sf@^`EK~GfRUuAM zP{K{T?p@l0j#-(wN6hk`c=9d$TL*~@4oipFMgJ}!1sn&d=?Ac^9}I#YwzC3m?ewAt z1iSSC-X5PJKKPkj$sgKNz>!(c;I;|B?Mnldf2w#LmMQ0F=`@sb$Sy`UKwbRXc_uiQ zyo*%OMObyLxKXDOTLqmaLn;OS*nR%XUL4E`-B2}r(ydhqbdBU5Zf*pN%AIJ&1*38$ zIy34omy8{+p^LnV)9=^PAL;s;T0Q><#a%M-_xITEQ{eYv$Ao%|<57`bSLB$mgk5Jn z@f#;yH|J5seLd#*gRPap?LtF8k&VVe6 zS6^0-HGg?+G0FR}6yz0!lt-=R1S*qX)33;y*3a9VezNG0YT`++BJLd&Cv6TCr^ri; zQQj<+w==XnkhQ2cH|lrQp|Jl(Ve95+TWwe%njM19|8|0IhN983%Ew2jY z^}G~bUQ*QZGEiPkkUV|8IZe$!Z@!P>V<)BQAq*++eC9jM0SwU|NTTw~lnx=!5WT#b zAbGUCBOgX9Oq<1B=O94_=cL(v!4{gk1C zzVHCJ&TiyBQ(IuZ`9B$qksR7F-C%6$cee1RF006s8QDCUmd1_krTrSuX}duYLVC+M z&eUPOl7}6?_BgnNeauhRxsBi&$LyEO;i5!{IoRXyOGmK*%t3n^Rt+u0Y%gA#W)L^; z@-7?>i^Gb*vKoyAMXNG$L!`Y0)_3>S-M)#(GVcO854laIMC;9hsmFQ~N6K{K&D~&> zCeo#aeF^5l*t7B9OANeyF@8a)`K5OmK?{P(dKtvvPE&hPz!>te0)0IvFv5DZ|9+@A-2B^#*V1)PGe{i+ z#gy>kEY4&$SjXW=;qj}g({743`*rBEct5-OM{pC5>}C!&QsT{q<09snSzsmcrT|zk zR`SfI%6VozdFvOai*@iL*o!|?t;5^Lpj#AkV;)q_hfqp$w@Ai4&wGb4+BcA$@E4Sp z5Z~-gMqpXvKVkZu9h8((IFB0ru8DBW{?PgnoW@&@AB!E(KRWS5hL-+hjsBSlXax_Q zNBy^AHC}_~9IFw=4l>N&7vpz%Xvx zszWWGE`I+azWYLYo!DjezPkoqn>@wf%{eIUEoGK4E*RFdLOQlaqxU^qZe7%KXGfGe7al{6v>H+1%Jp=0+j~bXs{x z$2ENu56gu40=Yg8qT`&l32RU1XOsx0(~!m22DQI5@IO<36}77GGr+n0*h-FEiJe5} zVff>60nh#V(Q1GN-L`w!W*7lV<&)d7!k2rSx>IY|r<*ONzgvG{p(_w_3|2+U*p2j; zi*QppXU}z0(f4GO^Q48hXF;51K8&sk98mIF#ivi2<-8w1{jvmdOmbPSc*2|ea2_3JqVp(}_mxN6vz)EP;KnW6>G<&^n1}O$Ju8bb=)6QJEFw@L zX#!-R%w$#eIdFS811 zj_oB99KXF{donJ5C_^W-b5e)7cG7KBUOstDCpgB9dsnB)&%%_Q5;OT%L7h~SN6ZGg zxHDQRJ9u*3qHV?ca6KL==d?Qm&JP=7hWW7P#Vp#Q<45|r$`ckx{7A8zUSc~Hr*#)O z;(y1(K8zl*zK8i<)1kX7@MxX7)79y)2T2jl$)|c{0te>Y>$3HLD}7a}rfL+KYS6Y( z@tkQ6)}=~h+=A2N<`@F*3(60#%!5PmPi@kL#nadm5>Laxc>ZydE)1Suyd52$uN;bq z=ZZtYc+NW%GoCqzE(xAy!lgEhsdJZ}b2Xh$Ak9tU7;W#O=D9pMlGW+*+!Zif)%&+G ziUXz!9A!r_+Vz%BLl#go;U`<02hX#!U;#98rtWmj?J`>4SE9WnK75d(b=Ex=&>BtJ zsKpcrmW5tn`+J=B-)2%AvYj01%jy)%?$T&{N8;6;t-eC2Y*(N=EGAJY?hJEn4Wd%L24!kH5osv&d6IMKmrS-!_Y3YO7 zx>YG$iwx2~0DD5E& zm{_j5v#Nffc=cJd9ndd*-Rgd6SNf$->6bC$C*9tDDWXm7lbXb%P|7Umtt_LIb@mMSMNt9V!6up45=NUtSKqU#04JcoDR}X*1npYga|p?;P7+plmB( z{VkBmX+ArP8d$s|1)XP2KV1bzE!tO|u7ragDbo0O?sebzI4hs`cs}g-DDH|hK5poe z`@upAgWC!Fr@22>Hw@9Epx+Ri~%wzfB)oC$gs zSj<9}lV5aVE=5{kNMGrP^r;RHxRKrC0qXyPjaL+-7wIJG#k-&4JxSaL0bvSwzV;ke zN)bpqdjoPnTr*xi)3pF_wfJ!D5!cb%+~dr(t0}Id>4-7QOdN2&_5zC$bk!6@XC3;= zM_hAfX*3b|cFn7?&c|Q3N8;PQcHevq<5~RE9bso)NBbZNWhQy>zPA1p2lu1CsMEFR z4nLJN(0rHi3e0z&=;pg`+ak?(ZEfE7hI0k`yzLRcnmN$q^IY3tCm+_|@zCE@Gb8r* zO)tmV-~Vcj)Zd3%ef=E|{r%4wVf*`))RF-$yCG!S8*bgBp&sTT*D3BB`SD(%HJO%Eo)c^6Lq z>R@5{JbaUn&p$`S=fjPW_`IW0wLYPEuy%=w&ah_I^2STH9+CYEhc<`zFC;X^>R)(# zb2$G(+s5eD!;bwC*TW0<2d{_A_Q$*)9=rci`WMDM8Q#C}$-Y?q3&+-l^DkI8M2F|C z`y%4`%YDIkChm(F&tsoo567yjYwb~g=9&!N0I^J$#*;yb)v7jp?ynwibnC5 z`XLWiw&`<^6miv@j&-;z;q2`V?IlB#eetQ(n2`=j-?F5UN6bAcJUaXJKm$J0p-C+Zay59Q;Om`x zmB-WTd+~Z7@aO&!iUF?I8dQ>^koUkm_K#ZL5S6^*V0n2n%hW`g0Yo}MyhJLez;)zj zlqk<)APV+Uuq1(0fMrfs0FomOls#8*4&$&|okm3>*cs9p$LaSuCFcU?k$8=!Nlf8P zBb)XA(eRaO$(aFpcGK=)o>he4*=4)^cvd0j63^J=A+Dl3(p1nRiOVeaH%?g~rC2rA)xv+=W*juC13=*@8A4P}R7axVh zY;=88m~Hy#KgKK+UgdT*UQRXt_6FnCo6{9AlHkDf4XbpTfGKQnNPfI4IwZ-ikVqci z9Tk$6U4vp@Xgqc6W5&~OCILM2S0bK6E*YMcA4Z3#>BEqCuKhSFJTLAXB%aaea|JA6 zK{KRBF@3%l&N=s=fBCFV3u$ukSE-bGxcJAqDD?UH5c=HPc?-IsJzjl2BszWG^+9y{ z{EZKSVnEr6sYs7WR7>U%yC{{&L#V$x{B+UHHSSnc!G+auv|?{=SkF2|Ku zOblzGXKf#pFHLVq9+)79w*}cp;r2f~q2Q6VPzQT9=mnZ1qUd;kR^6tb7{3H4=V9w<`GAR%5$M z*63t5IgH#Iu%}?K)27RB5#U=mEFO5@BLx9k|Nf-{lJ8LTGYyBP|FB#o|#PbM;O$|7LFP@`BhFM5Qj>k^FImW=wFJrnvFaG1V5wCX`PuF@VjEl7)5OYmJnC#aMZTO-mkUp@z!@hl{o3o~dZy)g zlrKk?$xmb1#63{QFB3xz;`VIs!Oy6T`6egrIPTh{r`KbA4xi|S(+n2`#cpP@q*Wcq-cDG*k;xBu*zEiTZ$Mu~Dc6MIh8M(91>pS1Qd{fqU5SQf+OkQM2wUa1+ z4G&70519psCVXFX%mAX#Ku|+>s8lYu#euydDO(C>@EFR6KqN%+XzLLWF9Xj&)cS}< zyz9Q@DB|;mh|fZxks{)hc;m{Bb|P*_BjT1FhKMCKkdGpDbiICbSbJ>;1@C+i`H)nR zYtQeXZo;ZwN*RX;K`u#UFpn>pTc41x*p+O|lD|RK{qf2`y-z~L0%6DmPQodr3 z@|9}4lJA(>|FeA6DPBwfkMp!MptgE%dO+`X3X@V_fYxEAdaMX!IA0ED za!*nBOWlVPA4r;XT=v#P#aN^Fo_Fb9+yo*VygJ zSjmfP85_3KIgt6C{MG*3d+)E7J6#DC>M#T~H(`*H{ujm9aZ$ZeKBKGgj|TA9zq_IL z!6EZ%2Y;8=5*qjpP&df!QzxP0Luk@Y3&?o$WCGztF*kGo_Y_`D^agg9dYH~s9l?%~ z)XDkLGg+k@L_JzLfdzY*7m>q*e*6Rynr6JfZH(j|(f8rb9dk2`iK9L>h-2b|avT#E z2`F$t6dHEYpDKLiB|3jH61(z8yxNeaFCTv?K6mn+q&|{gnlc{l!|||$j)(iOzJixf zKGR88&F`g?1!7%<&FC=u(xiQ}4Us|Yz;GzYcjJbq*wyklGUjzO2%C|;ZzGu9TmOy-ru{$8I;FVl35aQ1`|y3!*hR_thuOWF ze>k_L$L~M4B$z86&&P}f}0elTh$UI5Tz150TMl7h^@Uc zYA4Z7mvT`_QHjQU;c-K7Dgk856QTOd=Xnt8;*oucDp9V-!1z1}r8=Rpt)>sbUw0of z5WaxrZfui%QHH3_z}?9%kTZ_mjWsv)RD0 zPqy>b87x90y$O^s->NdnRp0*D9Y6NY3=s2(hL6k@;fD72lKX_8Mr8|9I72wzrPk9V zW`S@9pd*EI29t%_UYDDO9}@Z&?j>wU2x+UlEx<{r~VZg*8J{X6us9dYSp9KLMOxYu~?So>3t!G zQHa(0_rA~rMxhL?`Odx;;N_~q&FiH5<=cC!5-R(B55*&6tZsu~3-+EM3 z;7@2J%W!KqA(px;GY5?>RL)ubOc&N?)F#^Mo6^GG+%-oG5Bk%y0~mTUlHdp~ae-hp zmYlk_lPiC7LpKVzNqsk0rlFNyhO7FlTal8vBJvKT_L6*b(nG^L&r*@^42qE<@nREKqjdA_!2+WG-n56tusY|#d%xjZyNSsci06mW` zEPpJtTx5cG(X`oEAK^OFZLV3ANx_Y~=aEFg8@m&4a*34dKz7d7Z3B&)X2VU(@TM{` z9F#?+WFa@WKR0-qRVi}BKdznA#ey2mc2K z5Pqv1bfM`9x~PzTk&kp7xu1*Xv!eMkV%4}*tA;n3r?X=2Ss5L^PqjC4ScclVZBC>D z6<6=CG?>P4=f14|ZDtDF-s*3x_(fP_sO-9~8yog7R3s=d7`OijKdGf>@M)YiRw!!ZuHatuDOg@em zK!;}=y%mIlq~fPvAk=zak*OE72W39A2ZDMQ1tKf|WaZUQTmLfzhJxWa|0iS;q{GJ_ zBr`Y2Py~JXUyrhkCwn!|ZQRf2?$;yld}AUzKcxj9iqW=-p_3*!NKm^+phK2EOGOWF zpEzHi)=`s@6CCA(#{0xjT-L)RuXFo#;nu+bFdydkQmzo2_2(?3{XSW$fA^*O(^8)= zfKty6#TlSav0uE}c|XH!K=I))K=KJai^cI|HK#K7%}I6VI`Zcw*nb}U?$0||(E z9itV{Y~gocXhIUC4rxaMgr_J8&>dv>93$zh|1pl&IR6jLS57!~%0MsVosb%f2s;#+ zlMmZ|@)*gD$5#)>3H{6+s5)jP$U<-FiQ;Do26S~9biuX^SsAff;}O-v#RTJsK{;J7 zhG#nPNwFDyd{P!ZDF9E(I}zKc+g_i>rrB?r2*of02V0c+&GH0miI^9`UQS`+@*R3IehX`_#GrU1UQ? z1EtBt{Kx;mlD!6H=*cb=3FlvEe=(0dw6ecFV_N9)fW`gyB5_WA=@iYd5Q4=p&P-TMhy!>y4GP{XeA22hNoi?}&$!Qx21(L9v(EJHCP%Kyn|4+fWbM#ybG_06S$Nv}h z*J!sxgH=KpZo41efo4u=;Z?yNYU{^MuZP!Dgm*<%r~^?pYG=3Tx?lZT4p$V%^Ro%> zq6YNh1mtab2jSIxs;~!DAK9u108k zu1IRLAGCGY->Mz|EgA;6rUt>92hKsW!E*%{JMq7J4$LQ%*L!qmn40^6l%&K9^Z~{QyUx&8n zwQCq=u5r;WJ4a0P{cy1bZFEoeYa~2Vd*hmg!P+`ua?QbV9_nmLurpulzP4jvXS8|O zEC%@N2>79b-K0@t;Tbi(Y19i?jh!^AJfQ^MMH_~rK#$BIdE<#dL<({`=iWSsLU!C z)wwRQV6MBoKnw?J5Ck8KFfwsCPIW1T;4uX1V5ljDPVE61_4!n!@ov%H5HZ6+k!wCW z9YPHW7^XS2uOG(=ya1crn}1K3rB7S>eAO268JV zX0ZA#n3w?`=yk+Icwj3$EngF#LQn>{L|3%-rYm&xZ^BnB3^o*6SW5hrRDROKTE%a` zQ$32mHVsa};Mm?`@MV0)-B-HC;DhNgXiHPu(%IS!5^g`?io}{-WEyE^ME#Kfy_<4jR%pInGR(bwJG+P>}iDs{@!-gCMT0ePsY);h%$a zi*w+tb_T|G=)vjmQxASFhHtOHI{-{yKZKYWROf<_sNt#wi57G5{-0jAFlqQ|-73#w za;8Y|wy!>@I2v=#luWE)Ha>7Fa?EdaKJn0)@c{ukh7Xmx5!QhhJ+67sdK3D z%LfqJNv#Qvz?c+*Z(znLpcKAYMSCj?`3go+N`(v5cP;#N%i+7+gm!*fJ^;2-R#t8RWhyI=SAz1b zCK(^zb7KA)y_ogoSGa?Z$psY-t||xf`>4SU!kSB56^A2S)wvN^j{`|L-GbVnwut6H zwJ*03*}mOmqF%Qhnm}VW%)f$q0DnIWzs+sD=fHWwKo?kJRtHL*u)FKze5pHfR z@wwDMHKrqgXZX~JQQ;J*5VysmnVpT7xIHV1yt?fkIM3~Q*g1did7UBcD!uba>A)7< z#$pN3JW!RO7P+xjUoNsdks9$%-S)l5C`}JP@sJ{JFy0%I_s7`yG2SK6#bCI5j|Ti%b|KfKf=o6pOh#k4T`HOA5_E18>QWwBMAoF#@D2g`JeN@Mh7PP8ot z*Fy(E=%j7?mm9jb+8uL++RT_b?lZAD23Ak2g7ac-3<|(i2x?4t^Rsvo7rf&i$vJS+ zwBB1iR@9@h&w6|nQVicGQS>je`Zr0LV~x*M`*3+LY#9Y-3@vL(>6kte6}jtC8cmP z3`0qoT3gC3K2E044`9Ydr`NB}*(*gg2d^HJqA@o5-#O8%Iiaf=!5oO{-DuGEiJp%n zt|*G3os8eDH^+vF#Mj4So_!TyLb6T#TW&sgpHDro=0tE1A3AxF4;|>|11L?vNpT0x zL~bA{1%3Eg)x)^R+C)I+tNxj@44X0=*;*IUoYf!Xp&8uf+?<@KPQ%Ygr1vJ#cbN~D zB_^k9@i|nUYXu@tOfrg}nVXBjC5JGQ3_4#@)Xg-Lj#SH&~<;$PCFJ0eA5_u1bz!WaZCJ7Kxjy z3NX_MvN=htcEPOcKJM-FRbX*{)DN*#GG11pdWFubi)zUj5lW)Fo_9%Yz!3Wg8N;ir zyxJ5xXi|bT-1`Uh=o8I|FmRF%PhuGW8AOCW&x98U&cMD1BX~U`g|1o!^?<|`?n~v5 z#?$b^BjEf;qWKUe`^n)xVAW=yCt7jqjf0h!S1ujM>ro$oNsq*ibiO}0EPjp;dv!ej zTkZpSpx%1fXFi}#x8w7PK_r@4Xu^dz9s);mvrk#sh#|@m0w30=_z(H2gDu?M{$0i> zn4H~Cj|h7}K6?=T0;2y6%LDv*f`5o56#sS};Xh3E?~0=zkl%plClv6_v7wkRh=M;_ zkww7&Cjfs`Jud+Gvy$K!-hvpS1{|<2ptqng{uX%pDL}**hzPjW=&KI2ib_z2^A>2D z|2FN9_ao*5<3*MBS)6a)KcW|2c8PZ1S)4YZK!HLNaoF7Qg9V2RB6S|dYE9bcE5<{x z@*|xq-(&K*};Q#qJ{%g9ye@(COzY{PHDBxfS zv;h1Y0Sqk&257_=0R3}tc@Mz96*D!%IbFMRToV1(zN3F!jH2J3f`02of_^QD{%6|$ zKJ@?OewOJeKgOf>|7Gu6z@w_J{bw=>GeF=>cxbFBqmCsIl+cI`4z&|9NzNfNBnmJ_`q&{!UhI(MC8_L4eRl%-G-xh@$_*KPy9Ih{$6LL^rZ9K@!m^FTYQ3RP z61)jv94JIyLI^AKj_dSRH}+f86f4%!j@gZg@$4S^LO5cQNkMOVl~-TDm4R zs@loCOmqXle0YdU8N}IEZ4dPp=d}I1IqKIqfdw7swu!xx=hG!)VZNfJ%_#-D$pm_a zuXaj$*q3f4UBBV4hZ&tw;s2^;#8`<+&Ggp*aaQ5>;iM5?=q~arS6Lg<+(+R3%%)_yD=PyN$wSUluXC%R<- zYGC$Iho*@v6Wuf{U)n8_GRq2`n-KO*u*Ot5>S>ADwf9>H3sZhqg`upfILbw0yke4oK(1^4Zk z&)u&~+Ui5R=8~ZVGrI#bU+b4E*CO7$=q0cR9?SqHyAH8i1dn*(@%5;>AxOgAB4I2@ zp~BeQ>P5nh+e`-{e4!jYwcfm*l#bO@H_NTXvaQ$awpJEc$ET4E_}0o|3(E2?!KrVa zfo<2)eVSodCw)q|gF9H{gJ?d=E7pHx7i|lwgp|Re62$pL?jAx)juU5Ik&sg0!jcjw z$-t6wDDetuP)|w@j9Wn&>P0RT*^DYfDbj~QTUhfXDT12R>VKeS?uxadQc$AKI7H@V zN9G=?i8{k_inWgTct_HN6q{%(aG0h1)6fA{SPToScnolsUn0u0p)tEEolumy2MeS5 zuw|QFLWF_=#L>~UIO|VBi!*5gYH?aWwo@9VC-xhl`1^h=dS2J!=$z!YkvJ_*h&1MS zIKfyyxYInPcR@!BgQetVew@ox@|xa@$4Kse%xa0v$H~6PPXD}mnaff!h_dXrKR~Rs zAWap_R{7zQEgM0_-TRE@cH)2C4YJ9W;m21!{pY0QMklEXOxE#BL6QOIbQJk@lo~}|qG|NUonRQ7j6}Onh zN&8R{oDBU(iNqHE{jp^Zc}B9@YCiIJxXktZL%6H7I~vVquNeosN<_*$qwy|swP~Of zmXY^j*w+tvpT9Q-54+k7JPg@;Qh3Wv4Rde7(IjEAs}2b;R^a}y88-!*#s(>4&Ta|u^NRTa!Xo=LmIJ(>`PtGRmWWm^Q+_qCF=7Za>)Q*Eq02HUY<7 zMQcO@-{#47lseoWBKtpGES*{|1FKe&q0duYV*THeMCP}qeI__3Qto{rE&Q1-u9(3sx&JK6Rbv$)rqFt)r2fGx^p4rF(7 z6^JeEe!1iTq24c7wE^-~;r;Io^Nsmvw6dr#zxO|f`|G=WKb_H_(@7v{<%=gh4{r0J?fxB_ z1Im!Q?gVr%&5i0)13->OGHi1{Gh^D)X!Mlk!3~Ju#QooK9;9I{uc9mgwHR|C4*Ese z^C@3^r`v>mT>KQuO-(+0yP@m%%Fy-YK5d?(=+3g#m&YJJcERnNWwdRp>XoROW*OBh z7FvYWcv>a6qQp`;7!AJaL#Y6onIZrWdA0!(x5c0I@VIdg^b6o!Ejb zv1WfoDeMi>G+&w-Sv}L7_qo}q(KZ{y_u^132J|il^e)btyg0Q21pDXDgR#-_qc)Rl zbV^tnhgHASX6OE-l6->+sM-tpTtF5$pV(i=xh4+c?W2xpQ?PUJ(xh19Xe}x>l(Wv8 z6mQTVD=GQZCZ$c)t)!-b^ite-C`qqO`X&SEv2-$S)P6BgGj99{-slq?j;uMuB zr}b?$w1v6hu=ln+d@m_RQbwskqw)CWqHNu>dgel%G0n+NuI0oR$#3zdD?Z@4RUmz zRyfJ;TAfxAI!@x0GqwLAMBX!#gxz zZ~;;u!t2r*%MDk|crVN~bh}`=Cpmre2V+x+{|b;Y~xRd1}2`4s*nu&nc4y{W_dCG64@5cbaYKjGP{k;2)%{gwGC zty-d07f#(0oWf~`0jCe&KFFf7pBc+p#px1j#c5X}uG(HphrZ^wFS{7;=M};9gmtY7 z5&MjWSUo|16}pU;M|Z)h&33Ui5NB?xf@`(tt7sG#N1-N>oEh`73_KV2i{~>>2G6rn zb2E=ZtKtUa_dKVy(?8A$L?5TA+2Cge=>bXg$IUUqiY5d#={U1cp%hL5+Hd8wPgWAo zl>dO_m-9!Vp1R1#8ld;lnWztKRc{*t%dXJt#;nwASToslml%8vhes+6Yr`Yljt5}c zkJAw3iJS(WzG>j*H28M?x12)%0eT)S!d9!==sfxEM^3%_*UxChhF!!$H$ z>%DNI^?p2ZgC>xI2&PhFzBcjmwTW-Hn9zk4zxzi$Cq%FHRrm0NAV)k;o*l6b~&LB}vKnZ9Ntf91#z=gP3O*LOF#8;Wn>!G-i4#xV*w!`!!w+gw~ zLCulNU}-K-MI)A6-l;hsJ{LCXKLnR`bZjsf&Qe#l;@4DU={GGBZcJ+SP$15iFK}42 z18wrl+@OLEY9NVZSw6!9gra)yVw6Js?ke@zXhY~NhMk?-IEo9s6bb-e!&3(!Q64%U z%eCrQQzRjC2ipAj0Z0^fU|7j3!_$GWqXvlb&_GQH*$Q&;h@%g>9e9oFZx3i_zVhNMo?sA_vbT{gx4n&V|F6Mul5ho)2DvH--kg22>2B2vaT5qEzD) zY3A$dkhfvsQXZf+OJZ|f5?hicv5yus^tm6Ishz3indFn!=NP>SabG2j?(wH|^i{eh z73KuA<|b$6el5sg7e$)F{NqqvmfsVqoJi*oX(avbG{2Jgf(z?O4^g?_)~IehfD5Y+ zkM#qQB2GWo`$zauwK=Iic2x8LW^YLqwM|iWG=*O9;n_%bV`{!KSW%5!wwNrW&10wyx&-Mq{n}M4BRp|lNv}kQMvj!9?F^46u6@{l^qEEGo zHjq;HibBpdDfllKhh4YsLzU4~dDJ>Q+JKcx(FU>p07#P&mpHghtpAtG@A+W)qf+T1 zXu_{o`jw056j1gS+Igpc8eq-vz^^ayE3=}7%80eG`rCwna`{*A{aPtn-@6I$dB3M+ zc^kF>zM3tM8elXc7*6cb3Nd)lTKOA{PO+nA#|r58Y)5d)otDZ0_OH4kfZ$_wL&UgNX@8BxQRgpeUM1(;Xkk)c>~$$-;Z(k> z#VYa>f8jf-k^ju$oXe#yhBtzpi9&8i%~5!-Mco4h)ytu>${%az5oh8Iz&71y*1l1H zs^UXh$%rv+#xAOhck<1oSKCuHt3NZ}tElI0#KY)si+Uk`eq}11?x-T=8}4Zji~#Cu z*0FqNINxOjmS4i>{7KOF$sIlEYoFJXzE6jYHXR7{pzn?5z3rhm`d)9|*$^W7elf8x z`mUL((|2&F2Yqi2^-JGOvvz-|U-}N-(UZRKZ#CW<5#scHZY!s6%htZ=TRpsg`uf>> zSIm|aj6#g2Ws&@qlICBko0eS|6i(kg!T>0^<1EcCMYe=sczd@r?)ZQRvUZui|-uj~jD8 zrlUX2e)+1-##|LgP5#9Jb=9jl826xxhs|D&zC&r~E!5$ge05nRZ2psODa4qfN%ve9 zjYfvT?~7;9@2xYV(a!|uf~w#v*oFjLu(Kq=7xF8)2WT*bEBE^_abA*zSpphFwe#*i_6{e=X`z{7qe0Mb_O!=$O8g+x@YaN&6rjyPIg zv-u92)vnh(CrT((0y&k^ruGPhx)8?Zy3pA!L-jq<9c}-djJDKo^|!B>O{m!_!7ged9>NkQuD4bW3pQEh#EH?7_YZPd zSZJD@c;Pgbcp>(6ouBb9qS%Esz^tH%0P-WX{0|B*Kn!I)xl`oU3Mn<~_~kBPY|S%T zr&bO@U6gV~2`ZzCoX|rIH$hrWELDenfCs@i?fi_>GQ0-gwrUegeL9_=d8zqsx5IW zbewtT>Mg`Ve>1)>7V7(%&O)0u_h6wDw&*PMyhUqc_~&PvP5tkde)(r}Lr?zsp!wcg zn>qiyc{AsqcjLFWmQ&Z_Sm@7&nk;k;+9$$mkfJe+^z~Dr_wj8#>3#p4p7j2z&S>TZ zn|sjvW%FLj<~Vw9Ht!s(BYOWNy)Syd<10WNz&WUx4O8p6}Vnk`5=q>F{+GNYW1>(u<{0%af?Gimg+wW zO9JdY3Pkmf$MBKCYFB488qQg0)fA~(2*JO)NdRgG&Yh%FybTkH~R4z6&a2B=4UZDO+{siHibF6BGd20>7g`=fjK`jgxTQy5d z&N-HFu*%w7Da^f6`S@w-;K?____@a!>R@5@LufTxSwb+*!htNzQcJt}Ko*K>F&&E@ zeF~|@)g zqd56qIg2bC)8FHk4VUWOV~^9oXu3$KV&_Fh6;*03rrzNP>s)GTa#a7}RR@oz8o%1l zYxJt0?vAaI#vA5l(lWEUEc70SXD6Xc=qa4P_rV*DIiyj7zdVx6a6ExO99hjI?Fc?= zR%hd4g0@}^>;MbZ7*t{ew|nO{==h`gwYPGv$gS7IV8`H<^QFfv1K`FQfZT)b3_!(=H;^|O4JKfPY6?;H?7A*&8ubk_>b6v3J8MBVh; z=mJS+X){F6rxnAa+r(hKS1jEoc|te8+b(m^T7{bTXaEaE_31B>4jAAJe_5l^D49Dr ziidp`jT#!ptGpLK2ux`Hn63+})ED_hn)(!6Y_2A0 zu~psiGNO8hW=245&56ti_h>fAd+^O3BOJDo=&_bh5l1H zmfF^VojEG3zJ)@a+)W*rKyAI7I&dCcPp?vsK1Ua6>Or{JTudEkX}<(*P$Pdez@g_; z>SO#87Z0+KzOCQ!do_0aXy^cKZ*L^PklQapJSuAf`RrYY-ny?4e+W`M>JFEPU6gPB8R$+&y(Kaj@vfW8EmC zL@OpS*zg={3!?Yn!1UFmSB===f`VYOyZCFsV8S7igt1;cd_VG&(;XUr{mPEbxHwV! z&7A6$$76l8MRu7(RFbYg4MXkh5ry1s=2{gKuQods9Xc$?zYvO5s5!+T_sMT}!`E|(xRLp~bs)jM#np(G`p7IPBX8|DWY$aG&U zY~sJv$;q@L?R=ZBNX6>BX1k>ye^TRo3OmmB)gKxSLV={+-6*e^rzu6|)8hzJ zZwv@qFMw5r4&{g0n?~&7_=I^2+Aq1hJKAr4b_xcgpS3uH;?LdYz_T?4%9Nk>;gL|_ zz^FRxG#adBu|^LR_Hf{MbfpFDxjXHaQ}Mq&uKVA1_UV6nj^TfMkoFY?RqDzo4WZ~| zxMYjDKj{r-@gq-iM^$yES$6M}7)?p@)tzdV--=b_jLJ@L^t>hnUdxO^TcpmKXyr1h zbr^rriS{43G}^}sMx_^w@D!v9n--rV1PW5&#T|mw73k!q+8FQ9 zdwgS0hhBA~oy_089D1FGL+^++ygi+?%h`zsk01leP?u|%Pr{>VCJM=o$Pt8ZH8#RaC zVc*K3_Xot+XtR;?o-pw>)GW?@Lc`bR8;r7vPsHHs?`HWKPkbZ3p4(vH>(GX8i?4e( z82BpN5Rb3_*w7PSwHr>1uSSlqJ{`vAhrbzLji$qRX4u5nj>ip>4A@}e>m{@J(Bm4u z9x}`JKW^enF^ji9-Z#GPHXr%p648xwFntToreB3ut8+oyfAd1Y1tErzz;xDM9RYrLjKQyUW} zW>ld+<3I;_{1=I(jiPOrwtlk)QMo)CJRk_05*@WX0U77&dX5P0x(y-+zQc;HB|DFI_PkOwKbxT$Zd-BBaL<7qF^hNyT!ulyFUw%z)R zK^CK!CL~%NQ!%WAYX(We87O`zLQ=)ArX^CdKI>1rLYFwG$^!91#X?gJ{}|IUDV#K zN13=uP5V!rXB`-a6GI1iI+lW%ye!oLO~bF*M1b(3Jb6laWGL<}F%(6!YI}~9%c-zB zH{WdYv%yq%1+V)JwMwh|_5ZN&V;~eaRqJetmb_(tgL>DKmNv}}ll~}9f>AWSqKuHXt%&tsn#1uMtHhgtD z2#4FX54thOBh(Ywgdf94*;}GAzCk^cTtHViFw~CcP(=!M&u(<@L+GA-gCkO{=3Eqw ze$#xH3FAl9xxdBwI%xy2sL@Ma+3$#o=u-dIg$FHRs4d$(YxlA%-Kd@t^}#mqhG!Bu9rig|)4_|^h# zGMo(kJmj6*7ybU&i5!1Abg$6c2j%+rX9iLY%M~^?QIu|&beB8S8d?i;9OyJe2YK=w z5-W04-*$$j61dMGiZDEk;-OhlL88YOmSiV(A7g2;Y>HZpVVjyn=H(%bKNIC?y z>6bCu0sEKe*~#stT!pX9p(HF>c#bFiFw#qzu}kzE$AcToR5}ko%+GQTAP(=PQy$Yh zFbsw=qXTNH7zR%{^rvj z(=$F}07@xH)heDZV4t7;&5xscTuSd0DYg^KcA!H`eP^P$Sv#IDh@Nf2>bKA?tB6*V z6^e1h^~YEfamwBB)GbK?)*cz`SH@cdp7ww+wH-~YO{6_~TVk)PJ03#}cc5B^oYjK= z?4bOIer1YXQVN~ehB9tC4&x#FLI+HwzpSwEbe}{jyG75w%3pA!GwaUHJgUi8 zK*jTfP1agF_5u&T`D#I)yU77W1VYwR?P-xVk$uQV%<~~oUBOg8!_}W}CO+qkeB8c; zhLl|Ij*6aUUgrQ_XP#MS*r+oL>+I$+4Lscyrvn3kI!{+4by#O3ZRfp_k5OEtUh^og zFgTL3(n(WZYyV#SmJQpVqqRTNFE7#B-@qR=+Fumc{*`rl`vdF^^lU1oe6FvncifBA zPjrhmpSvU`ql6v-U#+|_8to4+{6ra#Fwsq}q@6ly1_FnY(#gZGile5!57c}@sPR%< zuM&=$`o2)3>ZnlxH7cS;HBoclBe;a^GEwtM2hy+%P%}VBO}T-Z%#Z}615w%zzw9JF zr-|t5g~h#bv;beskl1k=?UO)IhA{$JaU<~ci~0!Y1KnPyA;~MTBPR&WuXN?PyC*da@xF0ABC~g3g-yMgh zL^r|7=XT(=4VT_K|7@p>ALNKD-=%rt>p4x{MM2+o7*}UrL@$$Lp~Pl8(9Ie!H=A(8 zdDnNsocw}5S|-+F_~Cbe+k_W-zzuVea;y~s)Rw!y2dp(e-zU~u)jfCNSlM-`J=_y& z+r~ztCtlzBW>)3>GpoPFFstHIVpeS?v-;#=gIP7jFsqVSW>waMS&0mJRnj*wsI*gH zQ2i}&^Zpvkps;c6A$_Sk1qRjMYWMYXy;i%X{#H92r|-7j-Sb>O>)r3}Ji&TbGe+Z6 z|9|4=(TBb*eg^!&_!;%=4~m~xp80p;r|_A6@H4CS1o+84{|A(p{_%atOQjE-y1XQ8 zLI@?+ezUMt5+f|F{Z1=a>r=g?rOolu(%SE|e%<)gzeQYfJk^i5B;0WVajE;j`nv&RQY_N5bM9zsuPn8~r4SI+y z4{0Iksc}|Hm`BcS)#;E&bRZh|(|5p4q(L{*U<%Nn8)(pt=e4lIdJ>_DeIyaO^Y>c( z2~jB?BL+V@Aj&zNku#$shkQ)RPc4s7>F>!clYB6dvVPl_*}|q=OLnc@j}1jlM6*H0 zGc+@H#TPifG8WyKVU{k(x!yH$UB2wp&j_&GAf zi<|+^=fDs@_iF|niGyy>?~oyqA}vEy68DQ*m_$h#)d(|LbFD{)h*pXmCkBTXoCAau zo8X-86jBPHB+pE7HUREtz`rcPnTJu>T<}x|JOyQW7zZPZp2~BvJg=PNWqCe1$4B-j zJe1^Tt)z?;{GNYRoCzFTb&uBc8-686^rPn}ZWP{7lc9Vq=`Oh%xK-U(O_K-RQ|Rcr zlGubg#kfiI=-K)>o{D?}o3FqL<(pP?iNU!fYs|F2^~sO(3RWAd-_z}fd4+!bTnqFr z^2UbW;&7-q9A*0cs~8pY%5>uCw92?}MXDv0qy(%#O!=4mv?^8fSe0gK63*9stw>hC zoPAQ_&Ck~N+Dm0g?2EouA+636%QWqe#mO{iaL`wu6@_U>xYswN4szD>%RAj8I%l$!jbYbVl!-z3- zGcMMW6;!y3*qi)`AFn|h@5gxb%3Twxw1+`puttXZY8Sd)!Ome7i2z17kK`}c;31;y zOSTKE2f;;MF}3n#${DKu>0Y~qhuRWWKZ?oVybde^~k{%&{H9M{t7+Weo75+h; z`DuRnYFH=pMeOtoD9U`kG z3wH?hIS!1#aHbxq7)q8T2fMA61GSPO2OY#<4{k)ql{{v*aLSH?=Aqe0c}8=MeB%F+ zYa|XDWoeoFiyrw@m%CH-Y$KRus7tKNcAT@?In`lBD-MWf!HaRgqai-Oa3?EQ@N|I1 zXfuVi&hKfe6hyfkuSFS1X^)(nyE;?>U7Sd_9hIj+c_c-WZ*o$B=&VeH7n~#yvJa}O zQY}KwW7uSzCCUtkpNS4&OTZQeVjJiTp~NI-^{w#aYVMpXIzlrhl!G-o?ECc|CqI~F^s_>TlboUN#9luWCa7EggU@jSS;WbW|om zqaumCnS(_6GCXfb9RwjFVA&ic7y=yl5jjRni|||B1{BtbyzCT)8mIqa!x29 z7rX>Jfb3_i>W?U=M7aGq;%-(X&(9^L$c4g8_fMkeM=M`X_xS5%apPNE)(jPp$l0R4 zd5l-H7$5btRptP-@u0SgvO{R~oZnwPxP#*LFs+{R(1%NF#!`Cy*6Tz)9a4t+))6$% zfs|ZNAGm@)F%848WJs8lifY5*>ixY6CwxvlSNqUrRI*V|R6#3xjBj(X_3D=sspcDE zzP+vtZx7{%vnD(6*!FB{XDfeps>pIq&;Z_L^`WEm!N_DkYsCiKt^FPw`;H4XgOs*- zCTdk%)W`9N19V*;im4PBY5bliZ8gR0jLo+3`pMy?^HlJ1t%es>$4i!pmzE4Z&VTM_ zoLf!2oTpXuN5V^IJYMe5>Y00DyzJM;Y)%Yb@-uY2EZ4{EFCB4sIX~l+@p7~Fp$@_e z4c7v#=zSe8g)X&u0&hCnJB>{z%jfP?XOUmhTu1dXU?b;>o*ZZ8DD8=c$S1&#)`Iv> zJSGYCjz>_Hi?=1u*?_X(HtO9q6Lgg2pAcmT9Q7p=Wd!r}Cxf!{P7Y-lPfEv@*ywH2 z0!mQ?t^hl%^P(=e=PR9* zchnaCgoLmvH(=F@y`YzCPyD!xrLg0l83l3>Ruq zCH`!-!G-$!zQ%;k;NOd6X{a8k{Z5N{1>G+-bYvlU{$V>Qbny6Wuv(h>D2|g*JWjfD zNr?KpAM@jbNIu`;ebGw#5t=C;k$r~oF^1{4O6m`d#-m$F zB0DpZ2oud2*$UD-O(86wC9zxpMMmW%i2R3pFqIYr5r_X9YT{ue0&KpM-PvKE+hLX1 zc1r(Ky#i>t`VTa_=R2uty;Zx?iSSu{R_+rvH5#=)+R?lA$VIrzr}vPLESbl(b|U(` zZ07m!TGb(|FzoXv{uT`XcE2*uUBn|%Eiocd(OCis0)fCoUPhFP3=@S+HmLPvi6#m|_@CU|UYii9AS2PCsly}P?aQ=SPGyWcC zFXSikcQ0F!-vj=-RQ}$PD9t8o*;|1OaGX{cAlMq6NdBhwGUTk++l{M-*^l#yt3OLs zrOH&Q^VF%NIy0row^SYf#3HfeApW!u^&EOJsD8uDkImP06Zhwi=_<{D4dwP(&C@|fDrlXZy} zHV2rMaWi^hQ?jn87%HY@T@;|IT*=sVYl@6r{TGn7Rq%yy0I9Qfb`!yN|~7S#f=%aX)}3^P;wz1 zg}%l!c^yTUh#k;g`}MKx{*9>cm5;D5p3zqL8T{gv1@DD79L7#A$2TpxY?Po|UoJYu zAcOHZ{YYAZzV5+siOTM{8v=}qQDUxBW9M9WcOF|tQ$P`G!W zWQhv3i)dkV02qQH43Q_zsHW>6t!W>ZrNbo*>mWPG`$HKNz|n0v`D9;}8}hbxLE+Nv z>NRAR!lfslitEHR9J(%+eQpPmNM+Qhr{avF*v0pUu6oB!XA*m)!TU*vgIew@ZL$s% zC2Y$OW4q{TJ5zM#F6gb*RRJX>fozOUkA_B zLHP!y{Cb-#hKqwPeHgy%z%M(bkk|~ps#>JRp8+mPGPzEDy#whm;wOa%Z4H|+dcmPz zQ}_%r4fD6fA&(MZDm&T$^mOVrmo+99H;l4?68_=sSQ7z?!E4AM9Q`Mq0_`Rb#kq zERs|&h2QSLLOcjJewFNM_dC!zpd6a$K&RWusC82YB0^K5(v-DpAnG{OVL-70QEAQ! z&A}+7nqf2wJ_wY@zFw5mwdtf7TG-$U&1n`xbIg+EjCZOikIPr1uv|VO|J6!FetQ+l zu$j4HlQW+;e5;MDReIUDxe8iQ%#6bARwWyUE3}Y7qXm-XtoJc!RP1@9&nux{_Is&O zQfziLYUGWMQXB0Qn~c28+hnIH=q!<)eS^-ilI0(Q{{o&}s!pi|V-=@V_QC@=n^kk2 z9k>eO@uOc>vJ7mYRS~XiDRU_*9*4{~>QuY%hsw}~Y1!K#tljcfe81b@$1|#oJX|J-3&h5S zczE7Hx6`XiMR~pn(*vjk6)sEAY}sD`#6^Eehc5# zxT@p!IC3RCS!R~x8SqA%Zx$`*z4sTM(d1hY>W!j2%47{tYeN0FlL6;RQFeBU!BL&a z-2A{;C3huj^(m$emh)9jSfx;33iH9;$r^oV)G^$261o)kjxLdcW#+^VqE!@LpI46LV-P;V_c&tCWthQO5H(x?UN}K32x*xUYJsp3fkR zMOE=8&_x&*7L`Q%z}l7$VWFdi4QCf()fOm` z$akE@tznqwFm{}EsitO@7QuIxKv(sb_wxaqnP55MFnxz%2m7;jNeI}F9Y7KiN5K|>eW z(SoExI}u5e2jM&pRck+mwMvTd4OLx2xNPDim>ijJBm^A9 zjU?=Xd%NU=4tcAshGhu8wG_dY>AlnF{{kDXWdT10_-NrlkYy%Y^*JL3%Q_7xm*j0z zgbCpen~;@8kp$vJdLh`Llql;uMB(Nztd{4E?+`qOJO7G#thRMMVykX5Kw%ro^;Kc9 zW~-_2pf8M(0|fhSd{&>L`V6dFs0R?v2n!Q=2k;Rrq@5q!S6TiP&#piw=aM#ebP@V0 z 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